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)
This commit is contained in:
Max
2021-02-15 19:50:19 +01:00
parent 1918ec1132
commit 0ec068cc1e
2 changed files with 5 additions and 11 deletions

View File

@@ -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);
}
}

View File

@@ -6,7 +6,7 @@
"client": [
],
"mixins": [
"MixinFallingBlock",
"BlockLandingInvoker",
"MixinLightningBolt"
],
"injectors": {