From 49830020138562e63be71f52439d3236366addf7 Mon Sep 17 00:00:00 2001 From: abel1502 Date: Thu, 3 Jul 2025 12:21:04 +0300 Subject: [PATCH 1/2] Fix ItemToolAbility bedrock breaking --- .../java/com/hbm/items/tool/ItemToolAbility.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index c731da461..e055c2b6b 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -292,14 +292,23 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro Block block = world.getBlock(x, y, z); int meta = world.getBlockMetadata(x, y, z); - if(!(canHarvestBlock(block, stack) || canShearBlock(block, stack, world, x, y, z)) || block == Blocks.bedrock || block == ModBlocks.stone_keyhole) + if(!( + canHarvestBlock(block, stack) || + canShearBlock(block, stack, world, x, y, z)) || + block.getPlayerRelativeBlockHardness(player, world, x, y, z) < 0 || + block == ModBlocks.stone_keyhole + ) return; Block refBlock = world.getBlock(refX, refY, refZ); float refStrength = ForgeHooks.blockStrength(refBlock, player, world, refX, refY, refZ); float strength = ForgeHooks.blockStrength(block, player, world, x, y, z); - if(!ForgeHooks.canHarvestBlock(block, player, meta) || refStrength / strength > 10f || refBlock.getPlayerRelativeBlockHardness(player, world, refX, refY, refZ) < 0) + if( + !ForgeHooks.canHarvestBlock(block, player, meta) || + refStrength / strength > 10f || + refBlock.getPlayerRelativeBlockHardness(player, world, refX, refY, refZ) < 0 + ) return; BlockEvent.BreakEvent event = ForgeHooks.onBlockBreakEvent(world, player.theItemInWorldManager.getGameType(), player, x, y, z); From ac45637bf6f12ca99b143cbdddeb67af67089200 Mon Sep 17 00:00:00 2001 From: abel1502 Date: Thu, 3 Jul 2025 12:26:46 +0300 Subject: [PATCH 2/2] Just a bit more null checks --- .../java/com/hbm/handler/ability/IToolHarvestAbility.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/handler/ability/IToolHarvestAbility.java b/src/main/java/com/hbm/handler/ability/IToolHarvestAbility.java index d76c30e33..7fe16423e 100644 --- a/src/main/java/com/hbm/handler/ability/IToolHarvestAbility.java +++ b/src/main/java/com/hbm/handler/ability/IToolHarvestAbility.java @@ -37,7 +37,8 @@ public interface IToolHarvestAbility extends IBaseAbility { if(skipDefaultDrops) { // Emulate the block breaking without drops world.setBlockToAir(x, y, z); - player.getHeldItem().damageItem(1, player); + ItemStack stack = player.getHeldItem(); + if(stack != null) stack.damageItem(1, player); } else if(player instanceof EntityPlayerMP) { // Break the block conventionally ItemToolAbility.standardDigPost(world, x, y, z, (EntityPlayerMP) player); @@ -78,7 +79,7 @@ public interface IToolHarvestAbility extends IBaseAbility { @Override public void preHarvestAll(int level, World world, EntityPlayer player) { ItemStack stack = player.getHeldItem(); - EnchantmentUtil.addEnchantment(stack, Enchantment.silkTouch, 1); + if(stack != null) EnchantmentUtil.addEnchantment(stack, Enchantment.silkTouch, 1); } @Override @@ -123,7 +124,7 @@ public interface IToolHarvestAbility extends IBaseAbility { @Override public void preHarvestAll(int level, World world, EntityPlayer player) { ItemStack stack = player.getHeldItem(); - EnchantmentUtil.addEnchantment(stack, Enchantment.fortune, powerAtLevel[level]); + if(stack != null) EnchantmentUtil.addEnchantment(stack, Enchantment.fortune, powerAtLevel[level]); } @Override