فهرست منبع

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)

Max 4 سال پیش
والد
کامیت
0ec068cc1e

+ 4 - 10
common/src/main/java/me/shedaniel/architectury/mixin/MixinFallingBlock.java → 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);
     }
-    
 }

+ 1 - 1
common/src/main/resources/architectury-common.mixins.json

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