diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/bop/BoPBiomeManagerMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/bop/BOPBiomeManagerMixin.java similarity index 95% rename from src/main/java/com/falsepattern/endlessids/mixin/mixins/common/bop/BoPBiomeManagerMixin.java rename to src/main/java/com/falsepattern/endlessids/mixin/mixins/common/bop/BOPBiomeManagerMixin.java index ad2e251..3e22e43 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/bop/BoPBiomeManagerMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/bop/BOPBiomeManagerMixin.java @@ -9,7 +9,7 @@ import org.spongepowered.asm.mixin.injection.ModifyConstant; @Mixin(value = BOPBiomeManager.class, remap = false) -public abstract class BoPBiomeManagerMixin { +public abstract class BOPBiomeManagerMixin { @ModifyConstant(method = "getNextFreeBiomeId", constant = @Constant(intValue = VanillaConstants.biomeIDCount), require = 1) diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/bop/ChunkProviderBOPEndMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/bop/ChunkProviderBOPEndMixin.java new file mode 100644 index 0000000..aee27ee --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/bop/ChunkProviderBOPEndMixin.java @@ -0,0 +1,27 @@ +package com.falsepattern.endlessids.mixin.mixins.common.bop; + +import biomesoplenty.common.world.ChunkProviderBOPEnd; +import com.falsepattern.endlessids.mixin.helpers.BiomePatchHelper; +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.Redirect; + +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.Chunk; + +@Mixin(value = ChunkProviderBOPEnd.class, + remap = false) +public abstract class ChunkProviderBOPEndMixin { + @Shadow private BiomeGenBase[] biomesForGeneration; + + @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) { + return BiomePatchHelper.getBiomeArrayTweaked(chunk, biomesForGeneration); + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/bop/ChunkProviderBOPHellMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/bop/ChunkProviderBOPHellMixin.java new file mode 100644 index 0000000..802078f --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/bop/ChunkProviderBOPHellMixin.java @@ -0,0 +1,48 @@ +package com.falsepattern.endlessids.mixin.mixins.common.bop; + +import biomesoplenty.common.world.ChunkProviderBOPHell; +import com.falsepattern.endlessids.mixin.helpers.BiomePatchHelper; +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 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 = ChunkProviderBOPHell.class, + remap = false) +public abstract class ChunkProviderBOPHellMixin { + 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, + remap = true, + 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), + 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 8fcc6a6..801e61b 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java @@ -81,7 +81,9 @@ public enum Mixin implements IMixin { ATGWorldGenRocksMixin(Side.COMMON, require(TargetedMod.ATG), "atg.ATGWorldGenRocksMixin"), //endregion ATG->common //region BoP->common - BoPBiomeManagerMixin(Side.COMMON, require(TargetedMod.BOP), "bop.BoPBiomeManagerMixin"), + BOPBiomeManagerMixin(Side.COMMON, require(TargetedMod.BOP), "bop.BOPBiomeManagerMixin"), + ChunkProviderBOPEndMixin(Side.COMMON, require(TargetedMod.BOP), "bop.ChunkProviderBOPEndMixin"), + ChunkProviderBOPHellMixin(Side.COMMON, require(TargetedMod.BOP), "bop.ChunkProviderBOPHellMixin"), //endregion BoP->common //region CoFHLib->common CoFHLibCofhBlockHelperMixin(Side.COMMON, require(TargetedMod.COFHLIB), "cofhlib.BlockHelperMixin"),