diff --git a/sources/src/main/java/io/akarin/server/mixin/core/MixinBlockMinecartDetector.java b/sources/src/main/java/io/akarin/server/mixin/core/MixinBlockMinecartDetector.java new file mode 100644 index 000000000..cf3f51481 --- /dev/null +++ b/sources/src/main/java/io/akarin/server/mixin/core/MixinBlockMinecartDetector.java @@ -0,0 +1,19 @@ +package io.akarin.server.mixin.core; + +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.callback.CallbackInfo; + +import net.minecraft.server.BlockMinecartDetector; +import net.minecraft.server.BlockPosition; +import net.minecraft.server.IBlockData; +import net.minecraft.server.World; + +@Mixin(value = BlockMinecartDetector.class, remap = false) +public abstract class MixinBlockMinecartDetector { + @Inject(at = @At("HEAD"), method = "e", cancellable = true) + private void e(World world, BlockPosition blockposition, IBlockData iblockdata, CallbackInfo ci) { + if (iblockdata.getBlock() != (Object)this) ci.cancel(); + } +} diff --git a/sources/src/main/resources/mixins.akarin.core.json b/sources/src/main/resources/mixins.akarin.core.json index ca88fafc7..94122d23a 100644 --- a/sources/src/main/resources/mixins.akarin.core.json +++ b/sources/src/main/resources/mixins.akarin.core.json @@ -32,6 +32,7 @@ "core.MixinWorldBorder", "core.MixinEntityLiving", "core.MixinTileEntityLootable", + "core.MixinBlockMinecartDetector", "nsc.OptimisticNetworkManager", "nsc.NonblockingServerConnection",