another extension for the mixin
This commit is contained in:
parent
18d4032f6c
commit
abcf173057
@ -3,6 +3,7 @@ package de.jottyfan.minecraft.quickiefabric.event;
|
|||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
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.CallbackInfoReturnable;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||||
|
|
||||||
@ -20,9 +21,9 @@ import net.minecraft.world.World;
|
|||||||
*/
|
*/
|
||||||
@Mixin(Block.class)
|
@Mixin(Block.class)
|
||||||
public class BlockBreakMixin {
|
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)
|
@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 CallbackInfoReturnable<Boolean> info) {
|
private void interactOnBreak(final World world, final BlockPos blockPos, final BlockState blockState, final PlayerEntity player, final CallbackInfo info) {
|
||||||
ActionResult result = BreakBlockCallback.EVENT.invoker().interact(world, blockPos, blockState, player);
|
ActionResult result = BreakBlockCallback.EVENT.invoker().injectBlockBreakCallback(world, blockPos, blockState, player);
|
||||||
if (result == ActionResult.FAIL) {
|
if (result == ActionResult.FAIL) {
|
||||||
info.cancel();
|
info.cancel();
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ public interface BreakBlockCallback {
|
|||||||
Event<BreakBlockCallback> EVENT = EventFactory.createArrayBacked(BreakBlockCallback.class,
|
Event<BreakBlockCallback> EVENT = EventFactory.createArrayBacked(BreakBlockCallback.class,
|
||||||
(listeners) -> (world, blockPos, blockState, player) -> {
|
(listeners) -> (world, blockPos, blockState, player) -> {
|
||||||
for (BreakBlockCallback listener : listeners) {
|
for (BreakBlockCallback listener : listeners) {
|
||||||
ActionResult result = listener.interact(world, blockPos, blockState, player);
|
ActionResult result = listener.injectBlockBreakCallback(world, blockPos, blockState, player);
|
||||||
if (result != ActionResult.PASS) {
|
if (result != ActionResult.PASS) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -25,5 +25,5 @@ public interface BreakBlockCallback {
|
|||||||
return ActionResult.PASS;
|
return ActionResult.PASS;
|
||||||
});
|
});
|
||||||
|
|
||||||
ActionResult interact(World world, BlockPos blockPos, BlockState blockState, PlayerEntity player);
|
ActionResult injectBlockBreakCallback(World world, BlockPos blockPos, BlockState blockState, PlayerEntity player);
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,9 @@
|
|||||||
"de.jottyfan.minecraft.quickiefabric.QuickieFabric"
|
"de.jottyfan.minecraft.quickiefabric.QuickieFabric"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"mixins": [
|
||||||
|
"quickiefabric.mixins.json"
|
||||||
|
],
|
||||||
"depends": {
|
"depends": {
|
||||||
"fabricloader": ">=0.7.4",
|
"fabricloader": ">=0.7.4",
|
||||||
"fabric": "*",
|
"fabric": "*",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user