diff --git a/src/main/java/com/ishland/vmp/mixins/chunk/ticking/MixinServerWorld.java b/src/main/java/com/ishland/vmp/mixins/chunk/ticking/MixinServerWorld.java new file mode 100644 index 0000000..a37088e --- /dev/null +++ b/src/main/java/com/ishland/vmp/mixins/chunk/ticking/MixinServerWorld.java @@ -0,0 +1,19 @@ +package com.ishland.vmp.mixins.chunk.ticking; + +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.Heightmap; +import net.minecraft.world.chunk.WorldChunk; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(ServerWorld.class) +public class MixinServerWorld { + + @Redirect(method = "tickChunk", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/world/ServerWorld;getTopPosition(Lnet/minecraft/world/Heightmap$Type;Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/util/math/BlockPos;")) + private BlockPos redirectGetTopPosition(ServerWorld instance, Heightmap.Type type, BlockPos blockPos, WorldChunk chunk, int randomTickSpeed) { + return blockPos.withY(chunk.sampleHeightmap(type, blockPos.getX(), blockPos.getZ()) + 1); + } + +} diff --git a/src/main/resources/vmp.mixins.json b/src/main/resources/vmp.mixins.json index 14a6f45..8ad4e85 100644 --- a/src/main/resources/vmp.mixins.json +++ b/src/main/resources/vmp.mixins.json @@ -33,6 +33,7 @@ "chunk.loading.portals.MixinEntity", "chunk.sending.MixinThreadedAnvilChunkStorage", "chunk.sending.c2me_notickvd_compat.MixinNoTickChunkSendingInterceptor", + "chunk.ticking.MixinServerWorld", "entity.move_zero_velocity.MixinEntity", "entitytracker.MixinEntityTrackerEntry", "entitytracker.MixinThreadedAnvilChunkStorage",