From 05410cd423e71c7becfdce25c0370aeeedea9635 Mon Sep 17 00:00:00 2001 From: FalsePattern <30945458+FalsePattern@users.noreply.github.com> Date: Tue, 27 Dec 2022 16:16:56 +0100 Subject: [PATCH] Enderlicious compat (#48) --- dependencies.gradle | 4 ++ .../enderlicious/BiomeConfigurationMixin.java | 18 +++++++ .../enderlicious/EndChunkProviderMixin.java | 53 +++++++++++++++++++ .../endlessids/mixin/plugin/Mixin.java | 4 ++ .../endlessids/mixin/plugin/TargetedMod.java | 1 + 5 files changed, 80 insertions(+) create mode 100644 src/main/java/com/falsepattern/endlessids/mixin/mixins/common/enderlicious/BiomeConfigurationMixin.java create mode 100644 src/main/java/com/falsepattern/endlessids/mixin/mixins/common/enderlicious/EndChunkProviderMixin.java diff --git a/dependencies.gradle b/dependencies.gradle index 6c9d206..3817c75 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,3 +1,4 @@ +//file:noinspection DependencyNotationArgument static def curse(curseDep) { return "curse.maven:" + curseDep } @@ -69,6 +70,9 @@ dependencies { //Dynamic Surroundings 1.0.6.4 compile(deobfCurse("dynamicsurrounding-238891:2642381")) + //Enderlicious 1.1.2 + compile(deobfCurse("enderlicious-508777:3504111")) + //Enhanced Biomes 2.5 compile(deobf("https://mvn.falsepattern.com/releases/mirror/mirror/enhancedbiomes-2.5.jar")) diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/enderlicious/BiomeConfigurationMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/enderlicious/BiomeConfigurationMixin.java new file mode 100644 index 0000000..2fe94d0 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/enderlicious/BiomeConfigurationMixin.java @@ -0,0 +1,18 @@ +package com.falsepattern.endlessids.mixin.mixins.common.enderlicious; + +import DelirusCrux.Enderlicious.Common.Utility.Configuration.BiomeConfiguration; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; + +@Mixin(value = BiomeConfiguration.class, + remap = false) +public abstract class BiomeConfigurationMixin { + @ModifyConstant(method = "init", + constant = {@Constant(intValue = 200), + @Constant(intValue = 210)}, + require = 2) + private static int shiftBiomeIDsUp(int id) { + return id + 3000; + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/enderlicious/EndChunkProviderMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/enderlicious/EndChunkProviderMixin.java new file mode 100644 index 0000000..1dc0f94 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/enderlicious/EndChunkProviderMixin.java @@ -0,0 +1,53 @@ +package com.falsepattern.endlessids.mixin.mixins.common.enderlicious; + +import DelirusCrux.Enderlicious.Dimension.EndChunkProvider; +import com.falsepattern.endlessids.mixin.helpers.BiomePatchHelper; +import com.falsepattern.endlessids.mixin.helpers.IChunkMixin; +import lombok.val; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.Chunk; + +import static com.falsepattern.endlessids.EndlessIDs.ZERO_LENGTH_BIOME_ARRAY_PLACEHOLDER; + +@Mixin(value = EndChunkProvider.class, + remap = false) +public abstract class EndChunkProviderMixin { + @Shadow + private BiomeGenBase[] biomesForGeneration; + + private int xx; + private int zz; + + @Inject(method = "provideChunk", + at = @At("HEAD"), + require = 1) + private void grabXZ(int X, int Y, CallbackInfoReturnable cir) { + xx = X * 16; + zz = Y * 16; + } + + @Redirect(method = "provideChunk", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B", + remap = true), + remap = true, + require = 1) + private byte[] setBiomesTweaked(Chunk chunk) { + val chunkBiomes = ((IChunkMixin) chunk).getBiomeShortArray(); + for(int k = 0; k < chunkBiomes.length; ++k) { + if (Math.abs(xx) < 160 && Math.abs(zz) < 160) { + chunkBiomes[k] = 9; + } else { + chunkBiomes[k] = (short)this.biomesForGeneration[k].biomeID; + } + } + return ZERO_LENGTH_BIOME_ARRAY_PLACEHOLDER; + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java index 4bc976f..20c9789 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java @@ -116,6 +116,10 @@ public enum Mixin implements IMixin { ReikaChunkHelperMixin(Side.COMMON, require(TargetedMod.DRAGONAPI), "dragonapi.ReikaChunkHelperMixin"), ReikaWorldHelperMixin(Side.COMMON, require(TargetedMod.DRAGONAPI), "dragonapi.ReikaWorldHelperMixin"), //endregion DragonAPI->common + //region Enderlicious->common + EnderliciousBiomeConfigurationMixin(Side.COMMON, require(TargetedMod.ENDERLICIOUS), "enderlicious.BiomeConfigurationMixin"), + EnderliciousEndChunkProviderMixin(Side.COMMON, require(TargetedMod.ENDERLICIOUS), "enderlicious.EndChunkProviderMixin"), + //endregion Enderlicious->common //region EnhancedBiomes EBBiomeIDsMixin(Side.COMMON, require(TargetedMod.EB), "eb.BiomeIDsMixin"), EBGenLayerArchipelagoEdgeMixin(Side.COMMON, require(TargetedMod.EB), "eb.GenLayerArchipelagoEdgeMixin"), diff --git a/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java b/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java index 80f9e64..ed70419 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java @@ -24,6 +24,7 @@ public enum TargetedMod implements ITargetedMod { DARKWORLD("Dark World", true, startsWith("darkworld-")), DRAGONAPI("DragonAPI", false, startsWith("dragonapi")), EB("Enhanced Biomes", true, startsWith("Enhanced Biomes").or(startsWith("enhancedbiomes"))), + ENDERLICIOUS("Enderlicious", true, startsWith("enderlicious-")), EREBUS("The Erebus", true, startsWith("theerebus")), EXTRAPLANETS("Extra Planets", false, startsWith("extraplanets-")), EXTRAUTILITIES("Extra Utilities", true, startsWith("extrautilities-")),