From 0ec068cc1eadaa3c6fc98680d0596808bd97e0d5 Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 15 Feb 2021 19:50:19 +0100 Subject: [PATCH] Fix falling block land event to handle all (vanilla) blocks correctly (Modded blocks need to have super.onLand(...) and then they'll be fine too) --- ...nFallingBlock.java => BlockLandingInvoker.java} | 14 ++++---------- .../main/resources/architectury-common.mixins.json | 2 +- 2 files changed, 5 insertions(+), 11 deletions(-) rename common/src/main/java/me/shedaniel/architectury/mixin/{MixinFallingBlock.java => BlockLandingInvoker.java} (77%) diff --git a/common/src/main/java/me/shedaniel/architectury/mixin/MixinFallingBlock.java b/common/src/main/java/me/shedaniel/architectury/mixin/BlockLandingInvoker.java similarity index 77% rename from common/src/main/java/me/shedaniel/architectury/mixin/MixinFallingBlock.java rename to common/src/main/java/me/shedaniel/architectury/mixin/BlockLandingInvoker.java index db2f3cb4..aead19c7 100644 --- a/common/src/main/java/me/shedaniel/architectury/mixin/MixinFallingBlock.java +++ b/common/src/main/java/me/shedaniel/architectury/mixin/BlockLandingInvoker.java @@ -4,7 +4,8 @@ import me.shedaniel.architectury.event.events.BlockEvent; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.item.FallingBlockEntity; import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.AnvilBlock; +import net.minecraft.world.level.block.ConcretePowderBlock; import net.minecraft.world.level.block.FallingBlock; import net.minecraft.world.level.block.state.BlockState; import org.spongepowered.asm.mixin.Mixin; @@ -13,17 +14,10 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; -@Mixin(FallingBlock.class) -public abstract class MixinFallingBlock extends Block { - - public MixinFallingBlock(Properties properties) { - super(properties); - throw new IllegalStateException(); - } - +@Mixin({FallingBlock.class, AnvilBlock.class, ConcretePowderBlock.class}) +public abstract class BlockLandingInvoker { @Inject(method = "onLand", at = @At("RETURN"), locals = LocalCapture.CAPTURE_FAILHARD) public void handleLand(Level level, BlockPos pos, BlockState fallState, BlockState landOn, FallingBlockEntity entity, CallbackInfo ci) { BlockEvent.FALLING_LAND.invoker().onLand(level, pos, fallState, landOn, entity); } - } diff --git a/common/src/main/resources/architectury-common.mixins.json b/common/src/main/resources/architectury-common.mixins.json index eeee889c..f7f31de0 100644 --- a/common/src/main/resources/architectury-common.mixins.json +++ b/common/src/main/resources/architectury-common.mixins.json @@ -6,7 +6,7 @@ "client": [ ], "mixins": [ - "MixinFallingBlock", + "BlockLandingInvoker", "MixinLightningBolt" ], "injectors": {