From 9d334e76308609c575e8ca7b511cdf168c2f70bb Mon Sep 17 00:00:00 2001 From: Acuadragon100 <30689683+Acuadragon100@users.noreply.github.com> Date: Sat, 4 Oct 2025 17:57:19 +0200 Subject: [PATCH] Add original parameter to ForgeHooks::onBlockBreakEvent. --- .../java/net/minecraftforge/common/ForgeHooks.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraftforge/common/ForgeHooks.java b/src/main/java/net/minecraftforge/common/ForgeHooks.java index 37c5bf0e584..a6f9e781079 100644 --- a/src/main/java/net/minecraftforge/common/ForgeHooks.java +++ b/src/main/java/net/minecraftforge/common/ForgeHooks.java @@ -145,6 +145,7 @@ import java.net.URISyntaxException; import java.util.*; import java.util.concurrent.CompletableFuture; +import java.util.function.BooleanSupplier; import java.util.function.Function; import java.util.function.Supplier; import java.util.regex.Matcher; @@ -457,12 +458,21 @@ public static void dropXpForBlock(BlockState state, ServerLevel level, BlockPos state.getBlock().popExperience(level, pos, exp); } - public static int onBlockBreakEvent(Level level, GameType gameType, ServerPlayer entityPlayer, BlockPos pos) + public static int onBlockBreakEvent(Level level, GameType gameType, ServerPlayer entityPlayer, BlockPos pos) + { + return kilt$onBlockBreakEvent( + level, gameType, entityPlayer, pos, + () -> entityPlayer.getMainHandItem().getItem().canAttackBlock(level.getBlockState(pos), level, pos, entityPlayer) + ); + } + + // Kilt: Call original for better mod compatibility + public static int kilt$onBlockBreakEvent(Level level, GameType gameType, ServerPlayer entityPlayer, BlockPos pos, BooleanSupplier original) { // Logic from tryHarvestBlock for pre-canceling the event boolean preCancelEvent = false; ItemStack itemstack = entityPlayer.getMainHandItem(); - if (!itemstack.isEmpty() && !itemstack.getItem().canAttackBlock(level.getBlockState(pos), level, pos, entityPlayer)) + if (!itemstack.isEmpty() && !original.getAsBoolean()) { preCancelEvent = true; }