diff --git a/dependencies.gradle b/dependencies.gradle index 250abe5..a966b8a 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -78,6 +78,9 @@ dependencies { //Nature's Compass 1.3.1 compile(deobfCurse("naturescompass-252848:2451823")) + //Netherlicious 3.2.3 + compile(deobfCurse("netherlicious-385860:3858031")) + //Realistic Terrain Generation 1.1.1.7 compile(deobfCurse("rtg-237989:2521557")) diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/netherlicious/BiomeConfigurationMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/netherlicious/BiomeConfigurationMixin.java new file mode 100644 index 0000000..327b3e3 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/netherlicious/BiomeConfigurationMixin.java @@ -0,0 +1,18 @@ +package com.falsepattern.endlessids.mixin.mixins.common.netherlicious; + +import DelirusCrux.Netherlicious.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 = 170), + @Constant(intValue = 175)}, + require = 2) + private static int shiftBiomeIDsUp(int id) { + return id + 12000; + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/netherlicious/NetherChunkProviderMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/netherlicious/NetherChunkProviderMixin.java new file mode 100644 index 0000000..57823f8 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/netherlicious/NetherChunkProviderMixin.java @@ -0,0 +1,45 @@ +package com.falsepattern.endlessids.mixin.mixins.common.netherlicious; + +import DelirusCrux.Netherlicious.Dimension.NetherChunkProvider; +import com.falsepattern.endlessids.mixin.helpers.BiomePatchHelper; +import org.spongepowered.asm.mixin.Mixin; +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 org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +import net.minecraft.block.Block; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.Chunk; + +@Mixin(value = NetherChunkProvider.class, + remap = false) +public abstract class NetherChunkProviderMixin { + private BiomeGenBase[] bgb; + + @Inject(method = "provideChunk", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B", + shift = At.Shift.BEFORE, + remap = true), + locals = LocalCapture.CAPTURE_FAILHARD, + require = 1) + private void setBiomesTweaked1(int par1, int par2, CallbackInfoReturnable cir, byte[] abyte, Block[] blocks, Chunk chunk, BiomeGenBase[] abiomegenbase) { + bgb = abiomegenbase; + + } + + @Redirect(method = "provideChunk", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B", + remap = true), + require = 1) + private byte[] setBiomesTweaked2(Chunk chunk) { + try { + return BiomePatchHelper.getBiomeArrayTweaked(chunk, bgb); + } finally { + bgb = null; + } + } +} 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 5a5fedf..636ee83 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java @@ -156,6 +156,12 @@ public enum Mixin implements IMixin { //region NaturesCompass->common NaturesCompassBiomeUtilsMixin(Side.COMMON, require(TargetedMod.NATURESCOMPASS), "naturescompass.BiomeUtilsMixin"), //endregion NaturesCompass->common + //region Netherlicious->common + NetherliciousBiomeConfigurationMixin(Side.COMMON, require(TargetedMod.NETHERLICIOUS), + "netherlicious.BiomeConfigurationMixin"), + NetherliciousNetherChunkProviderMixin(Side.COMMON, require(TargetedMod.NETHERLICIOUS), + "netherlicious.NetherChunkProviderMixin"), + //endregion Netherlicious->common //region RTG->common RTGChunkProviderRTGMixin(Side.COMMON, require(TargetedMod.RTG), "rtg.ChunkProviderRTGMixin"), RTGLandscapeGeneratorMixin(Side.COMMON, require(TargetedMod.RTG), "rtg.LandscapeGeneratorMixin"), 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 786bb13..7f33037 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java @@ -28,6 +28,7 @@ public enum TargetedMod implements ITargetedMod { ICG("Immersive Cavegen", true, startsWith("immersivecavegen")), MFQM("More Fun Quicksand Mod", false, startsWith("morefunquicksandmod-")), NATURESCOMPASS("Nature's Compass", true, startsWith("naturescompass")), + NETHERLICIOUS("Netherlicious", true, startsWith("netherlicious-")), RTG("Realistic Terrain Generation", true, startsWith("rtg-")), THAUMCRAFT("Thaumcraft", true, startsWith("thaumcraft")), TROPICRAFT("Tropicraft", true, startsWith("tropicraft-")),