diff --git a/src/main/java/org/dimdev/jeid/mixin/core/MixinChunkProviderServer.java b/src/main/java/org/dimdev/jeid/mixin/core/MixinChunkProviderServer.java index 5d92e6f..fcbad9c 100644 --- a/src/main/java/org/dimdev/jeid/mixin/core/MixinChunkProviderServer.java +++ b/src/main/java/org/dimdev/jeid/mixin/core/MixinChunkProviderServer.java @@ -4,13 +4,14 @@ import net.minecraft.world.biome.Biome; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.gen.ChunkProviderServer; -import net.minecraft.world.gen.IChunkGenerator; import org.dimdev.jeid.INewChunk; import org.spongepowered.asm.mixin.Final; 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 org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; @Mixin(ChunkProviderServer.class) public class MixinChunkProviderServer { @@ -18,9 +19,8 @@ public class MixinChunkProviderServer { private Biome[] reusableBiomeList = new Biome[256]; /** @reason Return an empty biome byte array if the chunk is using an int biome array. **/ - @Redirect(method = "provideChunk", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/gen/IChunkGenerator;generateChunk(II)Lnet/minecraft/world/chunk/Chunk;")) - private Chunk generateChunk(IChunkGenerator generator, int x, int z) { - Chunk chunk = generator.generateChunk(x, z); + @Inject(method = "provideChunk", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/world/gen/IChunkGenerator;generateChunk(II)Lnet/minecraft/world/chunk/Chunk;"), locals = LocalCapture.CAPTURE_FAILHARD) + private void initializeBiomeArray(int x, int z, CallbackInfoReturnable cir, Chunk chunk) { Biome[] biomes = world.getBiomeProvider().getBiomes(reusableBiomeList, x * 16, z * 16, 16, 16); INewChunk newChunk = (INewChunk) chunk; @@ -28,6 +28,5 @@ private Chunk generateChunk(IChunkGenerator generator, int x, int z) { for (int i = 0; i < intBiomeArray.length; ++i) { intBiomeArray[i] = Biome.getIdForBiome(biomes[i]); } - return chunk; } }