From abcf173057fc435569689aa1e3f26478d810311c Mon Sep 17 00:00:00 2001 From: jottyfan Date: Tue, 28 Jul 2020 08:41:48 +0200 Subject: [PATCH] another extension for the mixin --- .../minecraft/quickiefabric/event/BlockBreakMixin.java | 7 ++++--- .../minecraft/quickiefabric/event/BreakBlockCallback.java | 4 ++-- src/main/resources/fabric.mod.json | 3 +++ 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/event/BlockBreakMixin.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/event/BlockBreakMixin.java index 5f54809..3b271ab 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/event/BlockBreakMixin.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/event/BlockBreakMixin.java @@ -3,6 +3,7 @@ package de.jottyfan.minecraft.quickiefabric.event; 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 org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; @@ -20,9 +21,9 @@ import net.minecraft.world.World; */ @Mixin(Block.class) public class BlockBreakMixin { - @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/block/Block;onBreak(Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;Lnet/minecraft/entity/player/PlayerEntity;)V"), method = "interactOnBreak", cancellable = true) - private void interactOnBreak(final World world, final BlockPos blockPos, final BlockState blockState, final PlayerEntity player, final CallbackInfoReturnable info) { - ActionResult result = BreakBlockCallback.EVENT.invoker().interact(world, blockPos, blockState, player); + @Inject(method = "injectBlockBreakCallback", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/Block;onBreak(Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;Lnet/minecraft/entity/player/PlayerEntity;)V"), cancellable = true) + private void interactOnBreak(final World world, final BlockPos blockPos, final BlockState blockState, final PlayerEntity player, final CallbackInfo info) { + ActionResult result = BreakBlockCallback.EVENT.invoker().injectBlockBreakCallback(world, blockPos, blockState, player); if (result == ActionResult.FAIL) { info.cancel(); } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/event/BreakBlockCallback.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/event/BreakBlockCallback.java index 325a0fb..e7c82a3 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/event/BreakBlockCallback.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/event/BreakBlockCallback.java @@ -17,7 +17,7 @@ public interface BreakBlockCallback { Event EVENT = EventFactory.createArrayBacked(BreakBlockCallback.class, (listeners) -> (world, blockPos, blockState, player) -> { for (BreakBlockCallback listener : listeners) { - ActionResult result = listener.interact(world, blockPos, blockState, player); + ActionResult result = listener.injectBlockBreakCallback(world, blockPos, blockState, player); if (result != ActionResult.PASS) { return result; } @@ -25,5 +25,5 @@ public interface BreakBlockCallback { return ActionResult.PASS; }); - ActionResult interact(World world, BlockPos blockPos, BlockState blockState, PlayerEntity player); + ActionResult injectBlockBreakCallback(World world, BlockPos blockPos, BlockState blockState, PlayerEntity player); } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 877803d..b399f11 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -22,6 +22,9 @@ "de.jottyfan.minecraft.quickiefabric.QuickieFabric" ] }, + "mixins": [ + "quickiefabric.mixins.json" + ], "depends": { "fabricloader": ">=0.7.4", "fabric": "*",