From 466f12e6e20ec12c8e84acbd9174e6387ac3fdf3 Mon Sep 17 00:00:00 2001 From: abel1502 Date: Sun, 22 Jun 2025 01:37:13 +0300 Subject: [PATCH 01/10] Fix pathfinding on spotlights --- src/main/java/com/hbm/blocks/machine/Spotlight.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/blocks/machine/Spotlight.java b/src/main/java/com/hbm/blocks/machine/Spotlight.java index 8c1c57663..07a9bc9c3 100644 --- a/src/main/java/com/hbm/blocks/machine/Spotlight.java +++ b/src/main/java/com/hbm/blocks/machine/Spotlight.java @@ -44,7 +44,7 @@ public class Spotlight extends Block implements ISpotlight, INBTTransformable { this.type = type; this.isOn = isOn; - this.setHardness(1F); + this.setHardness(0.5F); if(isOn) setLightLevel(1.0F); } @@ -81,6 +81,11 @@ public class Spotlight extends Block implements ISpotlight, INBTTransformable { return false; } + @Override + public boolean getBlocksMovement(IBlockAccess world, int x, int y, int z) { + return false; + } + @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) { return null; From dec8c9c43ab32b856cc6f0b99856a28025118337 Mon Sep 17 00:00:00 2001 From: abel1502 Date: Fri, 27 Jun 2025 18:07:58 +0300 Subject: [PATCH 02/10] Wow mojang is stupid Or at least the mapping author is. How could I not get that `getBlocksMovement` should return if the block DOESN'T block movement, that's so obvious, why would I ever think otherwise --- src/main/java/com/hbm/blocks/machine/Spotlight.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/blocks/machine/Spotlight.java b/src/main/java/com/hbm/blocks/machine/Spotlight.java index 07a9bc9c3..3df9a0c52 100644 --- a/src/main/java/com/hbm/blocks/machine/Spotlight.java +++ b/src/main/java/com/hbm/blocks/machine/Spotlight.java @@ -82,8 +82,9 @@ public class Spotlight extends Block implements ISpotlight, INBTTransformable { } @Override + // Ah yes, I love methods named the literal opposite of what they do public boolean getBlocksMovement(IBlockAccess world, int x, int y, int z) { - return false; + return true; } @Override From 0b5731266e908f2ad2483622a42f3f040c9c73b6 Mon Sep 17 00:00:00 2001 From: abel1502 Date: Sun, 22 Jun 2025 19:53:21 +0300 Subject: [PATCH 03/10] Hide spotlights on maps --- src/main/java/com/hbm/blocks/machine/Spotlight.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/hbm/blocks/machine/Spotlight.java b/src/main/java/com/hbm/blocks/machine/Spotlight.java index 3df9a0c52..4868d3dd0 100644 --- a/src/main/java/com/hbm/blocks/machine/Spotlight.java +++ b/src/main/java/com/hbm/blocks/machine/Spotlight.java @@ -14,6 +14,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockSlab; +import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; @@ -87,6 +88,11 @@ public class Spotlight extends Block implements ISpotlight, INBTTransformable { return true; } + @Override + public MapColor getMapColor(int meta) { + return MapColor.airColor; + } + @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) { return null; From a40d0b35136c5b01e96577db70f5dfdf18390ddf Mon Sep 17 00:00:00 2001 From: abel1502 Date: Sat, 28 Jun 2025 04:01:00 +0300 Subject: [PATCH 04/10] Make doors click-through when open Currently clicking on anything beyond an open door just makes it close, despite there being no indications for that and the colliders clearly already not being there. --- .../hbm/blocks/generic/BlockDoorGeneric.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java index 0e496af45..365187ff4 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java @@ -17,6 +17,8 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -116,6 +118,22 @@ public class BlockDoorGeneric extends BlockDummyable implements IBomb { return aabb; } + // Enables clicking through the open door + @Override + public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 startVec, Vec3 endVec) { + AxisAlignedBB box = getBoundingBox(world, x, y ,z); + box = AxisAlignedBB.getBoundingBox( + Math.min(box.minX, box.maxX), Math.min(box.minY, box.maxY), Math.min(box.minZ, box.maxZ), + Math.max(box.minX, box.maxX), Math.max(box.minY, box.maxY), Math.max(box.minZ, box.maxZ) + ); + + MovingObjectPosition intercept = box.calculateIntercept(startVec, endVec); + if(intercept != null) { + return new MovingObjectPosition(x, y, z, intercept.sideHit, intercept.hitVec); + } + return null; + } + @Override //should fix AI pathfinding public boolean getBlocksMovement(IBlockAccess world, int x, int y, int z) { //btw the method name is the exact opposite of that it's doing, check net.minecraft.pathfinding.PathNavigate#512 return hasExtra(world.getBlockMetadata(x, y, z)); //if it's open From f820ae32e247ceb4e835b0e171cafe820c1aeacb Mon Sep 17 00:00:00 2001 From: abel1502 Date: Thu, 26 Jun 2025 19:23:38 +0300 Subject: [PATCH 05/10] Fix crate locked slot --- .../com/hbm/inventory/container/ContainerCrateBase.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrateBase.java b/src/main/java/com/hbm/inventory/container/ContainerCrateBase.java index 05b818a10..aaf4ca8a3 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCrateBase.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCrateBase.java @@ -25,8 +25,10 @@ public class ContainerCrateBase extends ContainerBase { for(int i = 0; i < 9; i++) { this.addSlotToContainer( - invPlayer.currentItem == i ? new SlotPlayerCrateLocked(invPlayer, i, playerInvX + i * 18, playerHotbarY) : - new SlotNonRetarded(invPlayer, i, playerInvX + i * 18, playerHotbarY)); + (invPlayer.currentItem == i && this.tile instanceof ItemBlockStorageCrate.InventoryCrate) ? + new SlotPlayerCrateLocked(invPlayer, i, playerInvX + i * 18, playerHotbarY) : + new SlotNonRetarded(invPlayer, i, playerInvX + i * 18, playerHotbarY) + ); } } From b400b887014e3def548dc83076cd7b45a5b69e59 Mon Sep 17 00:00:00 2001 From: abel1502 Date: Thu, 26 Jun 2025 21:09:34 +0300 Subject: [PATCH 06/10] Add flat AoE ability --- .../hbm/handler/ability/IToolAreaAbility.java | 105 +++++++++++++++++- .../inventory/gui/GUIScreenToolAbility.java | 3 +- src/main/java/com/hbm/items/ModItems.java | 29 ++++- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + src/main/resources/assets/hbm/lang/it_IT.lang | 1 + src/main/resources/assets/hbm/lang/pl_PL.lang | 1 + src/main/resources/assets/hbm/lang/ru_RU.lang | 1 + src/main/resources/assets/hbm/lang/uk_UA.lang | 1 + src/main/resources/assets/hbm/lang/zh_CN.lang | 1 + .../textures/gui/tool/gui_tool_ability.png | Bin 4455 -> 4552 bytes 11 files changed, 140 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/handler/ability/IToolAreaAbility.java b/src/main/java/com/hbm/handler/ability/IToolAreaAbility.java index 1d0bcf02b..ca28bca9c 100644 --- a/src/main/java/com/hbm/handler/ability/IToolAreaAbility.java +++ b/src/main/java/com/hbm/handler/ability/IToolAreaAbility.java @@ -14,7 +14,10 @@ import com.hbm.items.tool.ItemToolAbility; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -219,6 +222,104 @@ public interface IToolAreaAbility extends IBaseAbility { } }; + public static final IToolAreaAbility HAMMER_FLAT = new IToolAreaAbility() { + @Override + public String getName() { + return "tool.ability.hammer_flat"; + } + + @Override + public boolean isAllowed() { + return ToolConfig.abilityHammer; + } + + public final int[] rangeAtLevel = { 1, 2, 3, 4 }; + + @Override + public int levels() { + return rangeAtLevel.length; + } + + @Override + public String getExtension(int level) { + return " (" + rangeAtLevel[level] + ")"; + } + + @Override + public int sortOrder() { + return SORT_ORDER_BASE + 3; + } + + @Override + public boolean onDig(int level, World world, int x, int y, int z, EntityPlayer player, ItemToolAbility tool) { + int range = rangeAtLevel[level]; + + MovingObjectPosition hit = raytraceFromEntity(world, player, false, 4.5d); + if(hit == null) return true; + int sideHit = hit.sideHit; + + // we successfully destroyed a block. time to do AOE! + int xRange = range; + int yRange = range; + int zRange = 0; + switch (sideHit) { + case 0: + case 1: + yRange = 0; + zRange = range; + break; + case 2: + case 3: + xRange = range; + zRange = 0; + break; + case 4: + case 5: + xRange = 0; + zRange = range; + break; + } + + for(int a = x - xRange; a <= x + xRange; a++) { + for(int b = y - yRange; b <= y + yRange; b++) { + for(int c = z - zRange; c <= z + zRange; c++) { + if(a == x && b == y && c == z) + continue; + + tool.breakExtraBlock(world, a, b, c, player, x, y, z); + } + } + } + + return false; + } + + // Taken from TConstruct, licensed under CC0 (public domain) + // https://github.com/SlimeKnights/TinkersConstruct/blob/9ea7a0e60fe180aff591701b12c89da21da99289/src/main/java/tconstruct/library/tools/AbilityHelper.java#L707-L731 + private MovingObjectPosition raytraceFromEntity(World world, EntityPlayer player, boolean par3, double range) { + float f = 1.0F; + float f1 = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * f; + float f2 = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * f; + double d0 = player.prevPosX + (player.posX - player.prevPosX) * (double) f; + double d1 = player.prevPosY + (player.posY - player.prevPosY) * (double) f + 1.62D; + double d2 = player.prevPosZ + (player.posZ - player.prevPosZ) * (double) f; + Vec3 vec3 = Vec3.createVectorHelper(d0, d1, d2); + float f3 = MathHelper.cos(-f2 * 0.017453292F - (float) Math.PI); + float f4 = MathHelper.sin(-f2 * 0.017453292F - (float) Math.PI); + float f5 = -MathHelper.cos(-f1 * 0.017453292F); + float f6 = MathHelper.sin(-f1 * 0.017453292F); + float f7 = f4 * f5; + float f8 = f3 * f5; + double d3 = range; + if (player instanceof EntityPlayerMP) + { + d3 = ((EntityPlayerMP) player).theItemInWorldManager.getBlockReachDistance(); + } + Vec3 vec31 = vec3.addVector((double) f7 * d3, (double) f6 * d3, (double) f8 * d3); + return world.func_147447_a(vec3, vec31, par3, !par3, par3); + } + }; + public static final IToolAreaAbility EXPLOSION = new IToolAreaAbility() { @Override public String getName() { @@ -249,7 +350,7 @@ public interface IToolAreaAbility extends IBaseAbility { @Override public int sortOrder() { - return SORT_ORDER_BASE + 3; + return SORT_ORDER_BASE + 4; } @Override @@ -270,7 +371,7 @@ public interface IToolAreaAbility extends IBaseAbility { }; // endregion handlers - static final IToolAreaAbility[] abilities = { NONE, RECURSION, HAMMER, EXPLOSION }; + static final IToolAreaAbility[] abilities = { NONE, RECURSION, HAMMER, HAMMER_FLAT, EXPLOSION }; static IToolAreaAbility getByName(String name) { for(IToolAreaAbility ability : abilities) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenToolAbility.java b/src/main/java/com/hbm/inventory/gui/GUIScreenToolAbility.java index 18db58099..9b31e5675 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenToolAbility.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenToolAbility.java @@ -52,7 +52,8 @@ public class GUIScreenToolAbility extends GuiScreen { abilitiesArea.add(new AbilityInfo(IToolAreaAbility.NONE, 0, 91)); abilitiesArea.add(new AbilityInfo(IToolAreaAbility.RECURSION, 32, 91)); abilitiesArea.add(new AbilityInfo(IToolAreaAbility.HAMMER, 64, 91)); - abilitiesArea.add(new AbilityInfo(IToolAreaAbility.EXPLOSION, 96, 91)); + abilitiesArea.add(new AbilityInfo(IToolAreaAbility.HAMMER_FLAT, 96, 91)); + abilitiesArea.add(new AbilityInfo(IToolAreaAbility.EXPLOSION, 128, 91)); abilitiesHarvest.add(new AbilityInfo(IToolHarvestAbility.NONE, 0, 107)); abilitiesHarvest.add(new AbilityInfo(IToolHarvestAbility.SILK, 32, 107)); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index b27e20e3e..d7b7fb410 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4466,6 +4466,7 @@ public class ModItems { schrabidium_pickaxe = new ItemToolAbility(20, 0, MainRegistry.tMatSchrab, EnumToolType.PICKAXE) .addAbility(IWeaponAbility.RADIATION, 0) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolAreaAbility.RECURSION, 6) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 4) @@ -4476,6 +4477,7 @@ public class ModItems { schrabidium_axe = new ItemToolAbility(25, 0, MainRegistry.tMatSchrab, EnumToolType.AXE) .addAbility(IWeaponAbility.RADIATION, 0) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolAreaAbility.RECURSION, 6) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 4) @@ -4487,6 +4489,7 @@ public class ModItems { schrabidium_shovel = new ItemToolAbility(15, 0, MainRegistry.tMatSchrab, EnumToolType.SHOVEL) .addAbility(IWeaponAbility.RADIATION, 0) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolAreaAbility.RECURSION, 6) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 4) @@ -4554,12 +4557,14 @@ public class ModItems { elec_pickaxe = new ItemToolAbilityPower(6F, 0, MainRegistry.tMatElec, EnumToolType.PICKAXE, 500000, 1000, 100) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolAreaAbility.RECURSION, 2) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 1).setUnlocalizedName("elec_pickaxe").setTextureName(RefStrings.MODID + ":elec_drill_anim"); elec_axe = new ItemToolAbilityPower(10F, 0, MainRegistry.tMatElec, EnumToolType.AXE, 500000, 1000, 100) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolAreaAbility.RECURSION, 2) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 1) @@ -4568,6 +4573,7 @@ public class ModItems { elec_shovel = new ItemToolAbilityPower(5F, 0, MainRegistry.tMatElec, EnumToolType.SHOVEL, 500000, 1000, 100) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolAreaAbility.RECURSION, 2) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 1).setUnlocalizedName("elec_shovel").setTextureName(RefStrings.MODID + ":elec_shovel_anim"); @@ -4577,12 +4583,14 @@ public class ModItems { desh_pickaxe = new ItemToolAbility(5F, -0.05, MainRegistry.tMatDesh, EnumToolType.PICKAXE) .addAbility(IToolAreaAbility.HAMMER, 0) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 0) .addAbility(IToolAreaAbility.RECURSION, 0) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 1).setUnlocalizedName("desh_pickaxe").setTextureName(RefStrings.MODID + ":desh_pickaxe"); desh_axe = new ItemToolAbility(7.5F, -0.05, MainRegistry.tMatDesh, EnumToolType.AXE) .addAbility(IToolAreaAbility.HAMMER, 0) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 0) .addAbility(IToolAreaAbility.RECURSION, 0) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 1) @@ -4590,6 +4598,7 @@ public class ModItems { desh_shovel = new ItemToolAbility(4F, -0.05, MainRegistry.tMatDesh, EnumToolType.SHOVEL) .addAbility(IToolAreaAbility.HAMMER, 0) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 0) .addAbility(IToolAreaAbility.RECURSION, 0) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 1).setUnlocalizedName("desh_shovel").setTextureName(RefStrings.MODID + ":desh_shovel"); @@ -4618,17 +4627,20 @@ public class ModItems { cobalt_decorated_pickaxe = new ItemToolAbility(6F, 0, matDecCobalt, EnumToolType.PICKAXE) .addAbility(IToolAreaAbility.RECURSION, 1) .addAbility(IToolAreaAbility.HAMMER, 0) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 0) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 2).setUnlocalizedName("cobalt_decorated_pickaxe").setTextureName(RefStrings.MODID + ":cobalt_decorated_pickaxe"); cobalt_decorated_axe = new ItemToolAbility(8F, 0, matDecCobalt, EnumToolType.AXE) .addAbility(IToolAreaAbility.RECURSION, 1) .addAbility(IToolAreaAbility.HAMMER, 0) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 0) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 2) .addAbility(IWeaponAbility.BEHEADER, 0).setUnlocalizedName("cobalt_decorated_axe").setTextureName(RefStrings.MODID + ":cobalt_decorated_axe"); cobalt_decorated_shovel = new ItemToolAbility(5F, 0, matDecCobalt, EnumToolType.SHOVEL) .addAbility(IToolAreaAbility.RECURSION, 1) .addAbility(IToolAreaAbility.HAMMER, 0) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 0) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 2).setUnlocalizedName("cobalt_decorated_shovel").setTextureName(RefStrings.MODID + ":cobalt_decorated_shovel"); cobalt_decorated_hoe = new ModHoe(matDecCobalt).setUnlocalizedName("cobalt_decorated_hoe").setTextureName(RefStrings.MODID + ":cobalt_decorated_hoe"); @@ -4641,12 +4653,14 @@ public class ModItems { starmetal_pickaxe = new ItemToolAbility(8F, 0, matStarmetal, EnumToolType.PICKAXE) .addAbility(IToolAreaAbility.RECURSION, 3) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 4) .addAbility(IWeaponAbility.STUN, 1).setUnlocalizedName("starmetal_pickaxe").setTextureName(RefStrings.MODID + ":starmetal_pickaxe"); starmetal_axe = new ItemToolAbility(12F, 0, matStarmetal, EnumToolType.AXE) .addAbility(IToolAreaAbility.RECURSION, 3) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 4) .addAbility(IWeaponAbility.BEHEADER, 0) @@ -4654,6 +4668,7 @@ public class ModItems { starmetal_shovel = new ItemToolAbility(7F, 0, matStarmetal, EnumToolType.SHOVEL) .addAbility(IToolAreaAbility.RECURSION, 3) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 4) .addAbility(IWeaponAbility.STUN, 1).setUnlocalizedName("starmetal_shovel").setTextureName(RefStrings.MODID + ":starmetal_shovel"); @@ -4668,6 +4683,7 @@ public class ModItems { .addAbility(IToolHarvestAbility.SHREDDER, 0) .addAbility(IToolHarvestAbility.LUCK, 1) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolAreaAbility.RECURSION, 2).setUnlocalizedName("drax").setTextureName(RefStrings.MODID + ":drax"); drax_mk2 = new ItemToolAbilityPower(15F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 1000000000, 250000, 7500) .addAbility(IToolHarvestAbility.SMELTER, 0) @@ -4675,6 +4691,7 @@ public class ModItems { .addAbility(IToolHarvestAbility.CENTRIFUGE, 0) .addAbility(IToolHarvestAbility.LUCK, 2) .addAbility(IToolAreaAbility.HAMMER, 2) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 2) .addAbility(IToolAreaAbility.RECURSION, 4).setUnlocalizedName("drax_mk2").setTextureName(RefStrings.MODID + ":drax_mk2"); drax_mk3 = new ItemToolAbilityPower(20F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 2500000000L, 500000, 10000) .addAbility(IToolHarvestAbility.SMELTER, 0) @@ -4684,11 +4701,13 @@ public class ModItems { .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 3) .addAbility(IToolAreaAbility.HAMMER, 3) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 3) .addAbility(IToolAreaAbility.RECURSION, 5).setUnlocalizedName("drax_mk3").setTextureName(RefStrings.MODID + ":drax_mk3"); ToolMaterial matBismuth = EnumHelper.addToolMaterial("HBM_BISMUTH", 4, 0, 50F, 0.0F, 200).setRepairItem(new ItemStack(ModItems.ingot_bismuth)); bismuth_pickaxe = new ItemToolAbility(15F, 0, matBismuth, EnumToolType.MINER) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolAreaAbility.RECURSION, 1) .addAbility(IToolHarvestAbility.SHREDDER, 0) .addAbility(IToolHarvestAbility.LUCK, 1) @@ -4699,6 +4718,7 @@ public class ModItems { .setDepthRockBreaker().setUnlocalizedName("bismuth_pickaxe").setTextureName(RefStrings.MODID + ":bismuth_pickaxe"); bismuth_axe = new ItemToolAbility(25F, 0, matBismuth, EnumToolType.AXE) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolAreaAbility.RECURSION, 1) .addAbility(IToolHarvestAbility.SHREDDER, 0) .addAbility(IToolHarvestAbility.LUCK, 1) @@ -4711,6 +4731,7 @@ public class ModItems { ToolMaterial matVolcano = EnumHelper.addToolMaterial("HBM_VOLCANIC", 4, 0, 50F, 0.0F, 200).setRepairItem(new ItemStack(ModItems.ingot_bismuth)); volcanic_pickaxe = new ItemToolAbility(15F, 0, matVolcano, EnumToolType.MINER) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolAreaAbility.RECURSION, 1) .addAbility(IToolHarvestAbility.SMELTER, 0) .addAbility(IToolHarvestAbility.LUCK, 2) @@ -4721,6 +4742,7 @@ public class ModItems { .setDepthRockBreaker().setUnlocalizedName("volcanic_pickaxe").setTextureName(RefStrings.MODID + ":volcanic_pickaxe"); volcanic_axe = new ItemToolAbility(25F, 0, matVolcano, EnumToolType.AXE) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolAreaAbility.RECURSION, 1) .addAbility(IToolHarvestAbility.SMELTER, 0) .addAbility(IToolHarvestAbility.LUCK, 2) @@ -4732,6 +4754,7 @@ public class ModItems { ToolMaterial matChlorophyte = EnumHelper.addToolMaterial("HBM_CHLOROPHYTE", 4, 0, 75F, 0.0F, 200).setRepairItem(new ItemStack(ModItems.powder_chlorophyte)); chlorophyte_pickaxe = new ItemToolAbility(20F, 0, matChlorophyte, EnumToolType.MINER) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolAreaAbility.RECURSION, 1) .addAbility(IToolHarvestAbility.LUCK, 3) .addAbility(IToolHarvestAbility.CENTRIFUGE, 0) @@ -4742,6 +4765,7 @@ public class ModItems { .setDepthRockBreaker().setUnlocalizedName("chlorophyte_pickaxe").setTextureName(RefStrings.MODID + ":chlorophyte_pickaxe"); chlorophyte_axe = new ItemToolAbility(50F, 0, matChlorophyte, EnumToolType.AXE) .addAbility(IToolAreaAbility.HAMMER, 1) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 1) .addAbility(IToolAreaAbility.RECURSION, 1) .addAbility(IToolHarvestAbility.LUCK, 3) .addAbility(IWeaponAbility.STUN, 4) @@ -4751,6 +4775,7 @@ public class ModItems { ToolMaterial matMese = EnumHelper.addToolMaterial("HBM_MESE", 4, 0, 100F, 0.0F, 200).setRepairItem(new ItemStack(ModItems.plate_paa)); mese_pickaxe = new ItemToolAbility(35F, 0, matMese, EnumToolType.MINER) .addAbility(IToolAreaAbility.HAMMER, 2) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 2) .addAbility(IToolAreaAbility.RECURSION, 2) .addAbility(IToolHarvestAbility.CRYSTALLIZER, 0) .addAbility(IToolHarvestAbility.SILK, 0) @@ -4762,6 +4787,7 @@ public class ModItems { .setDepthRockBreaker().setUnlocalizedName("mese_pickaxe").setTextureName(RefStrings.MODID + ":mese_pickaxe"); mese_axe = new ItemToolAbility(75F, 0, matMese, EnumToolType.AXE) .addAbility(IToolAreaAbility.HAMMER, 2) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 2) .addAbility(IToolAreaAbility.RECURSION, 2) .addAbility(IToolHarvestAbility.SILK, 0) .addAbility(IToolHarvestAbility.LUCK, 5) @@ -4774,7 +4800,8 @@ public class ModItems { ToolMaterial matDwarf = EnumHelper.addToolMaterial("HBM_DWARVEN", 2, 0, 4F, 0.0F, 10).setRepairItem(new ItemStack(ModItems.ingot_copper)); dwarven_pickaxe = new ItemToolAbility(5F, -0.1, matDwarf, EnumToolType.MINER) - .addAbility(IToolAreaAbility.HAMMER, 0).setUnlocalizedName("dwarven_pickaxe").setMaxDamage(250).setTextureName(RefStrings.MODID + ":dwarven_pickaxe"); + .addAbility(IToolAreaAbility.HAMMER, 0) + .addAbility(IToolAreaAbility.HAMMER_FLAT, 0).setUnlocalizedName("dwarven_pickaxe").setMaxDamage(250).setTextureName(RefStrings.MODID + ":dwarven_pickaxe"); ToolMaterial matMeteorite = EnumHelper.addToolMaterial("HBM_METEORITE", 4, 0, 50F, 0.0F, 200).setRepairItem(new ItemStack(ModItems.plate_paa)); meteorite_sword = new ItemSwordMeteorite(9F, 0, matMeteorite).setUnlocalizedName("meteorite_sword").setTextureName(RefStrings.MODID + ":meteorite_sword"); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 7b00fdbe6..22073b8b1 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -4980,6 +4980,7 @@ tool.ability.cnetrifuge=Auto-Zentrifuge tool.ability.crystallizer=Auto-Kristallisierer tool.ability.explosion=Explosion tool.ability.hammer=AoE +tool.ability.hammer_flat=Flacher AoE tool.ability.luck=Glück tool.ability.mercury=Quecksilber-Berührung tool.ability.midas=Midas' Hand diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 8e915f009..efcf68904 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -6146,6 +6146,7 @@ tool.ability.centrifuge=Auto-Centrifuge tool.ability.crystallizer=Auto-Crystallizer tool.ability.explosion=Explosion tool.ability.hammer=AoE +tool.ability.hammer_flat=Flat AoE tool.ability.luck=Fortune tool.ability.mercury=Mercury Touch tool.ability.midas=Midas Touch diff --git a/src/main/resources/assets/hbm/lang/it_IT.lang b/src/main/resources/assets/hbm/lang/it_IT.lang index 691badc0e..d5fc68517 100644 --- a/src/main/resources/assets/hbm/lang/it_IT.lang +++ b/src/main/resources/assets/hbm/lang/it_IT.lang @@ -6164,6 +6164,7 @@ tool.ability.centrifuge=Auto-Centrifuge tool.ability.crystallizer=Auto-Crystallizer tool.ability.explosion=Explosion tool.ability.hammer=AoE +tool.ability.hammer_flat=AoE piatta tool.ability.luck=Fortune tool.ability.mercury=Mercury Touch tool.ability.midas=Midas Touch diff --git a/src/main/resources/assets/hbm/lang/pl_PL.lang b/src/main/resources/assets/hbm/lang/pl_PL.lang index f33a8a715..fcf4a3402 100644 --- a/src/main/resources/assets/hbm/lang/pl_PL.lang +++ b/src/main/resources/assets/hbm/lang/pl_PL.lang @@ -5399,6 +5399,7 @@ tool.ability.centrifuge=Auto-Centrifuge tool.ability.crystallizer=Auto-Crystallizer tool.ability.explosion=Explosion tool.ability.hammer=AoE +tool.ability.hammer_flat=Flat AoE tool.ability.luck=Fortune tool.ability.mercury=Mercury Touch tool.ability.midas=Midas Touch diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 5c3efa442..20955e04f 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -6377,6 +6377,7 @@ tool.ability.centrifuge=Авто-центрифуга tool.ability.crystallizer=Авто-кристаллизатор tool.ability.explosion=Взрыв tool.ability.hammer=Зона действия +tool.ability.hammer_flat=Плоская зона действия tool.ability.luck=Удача tool.ability.mercury=Ртутное касание tool.ability.midas=Прикосновение Мидаса diff --git a/src/main/resources/assets/hbm/lang/uk_UA.lang b/src/main/resources/assets/hbm/lang/uk_UA.lang index 28776824b..c539f5aa6 100644 --- a/src/main/resources/assets/hbm/lang/uk_UA.lang +++ b/src/main/resources/assets/hbm/lang/uk_UA.lang @@ -6125,6 +6125,7 @@ tool.ability.centrifuge=Автоцентрифуга tool.ability.crystallizer=Автокристалізатор tool.ability.explosion=Вибух tool.ability.hammer=Зона дії +tool.ability.hammer_flat=Плоска зона дії tool.ability.luck=Вдача tool.ability.mercury=Ртутний дотик tool.ability.midas=Дотик Мідаса diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index 41847c119..0e56b0ba9 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -5814,6 +5814,7 @@ tool.ability.centrifuge=自动离心 tool.ability.crystallizer=自动结晶 tool.ability.explosion=爆破 tool.ability.hammer=范围挖掘 +tool.ability.flat_hammer=平坦區域採礦 tool.ability.luck=时运 tool.ability.mercury=水银提取 tool.ability.midas=点石成金 diff --git a/src/main/resources/assets/hbm/textures/gui/tool/gui_tool_ability.png b/src/main/resources/assets/hbm/textures/gui/tool/gui_tool_ability.png index 6b1a5c68b8894c7926c73afd222f60f424a217b9..077dbd45c5bdb46596646da1524faf7724b0a57c 100644 GIT binary patch literal 4552 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 From 71c1eaf430cbfcd02423b865460df0db38201915 Mon Sep 17 00:00:00 2001 From: abel1502 Date: Thu, 26 Jun 2025 22:39:10 +0300 Subject: [PATCH 07/10] Change flat AoE icon --- .../textures/gui/tool/gui_tool_ability.png | Bin 4552 -> 4552 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/hbm/textures/gui/tool/gui_tool_ability.png b/src/main/resources/assets/hbm/textures/gui/tool/gui_tool_ability.png index 077dbd45c5bdb46596646da1524faf7724b0a57c..fc0a54e7f336512f8e6457d430a75e33e67d89a4 100644 GIT binary patch delta 3708 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 IbC2kM0gloH;s5{u From 5a0dabc5a95017c5d55a6bb40271d327e2e74fa9 Mon Sep 17 00:00:00 2001 From: abel1502 Date: Thu, 26 Jun 2025 22:28:03 +0300 Subject: [PATCH 08/10] Bunch all mined blocks in one spot Solves the problem of veinmined stuff being stuck in enclosed pockets, even with a magnet active --- .../handler/ability/IToolHarvestAbility.java | 10 +++--- .../com/hbm/items/tool/ItemToolAbility.java | 32 +++++++++++++++++-- src/main/resources/META-INF/HBM_at.cfg | 6 +++- 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/hbm/handler/ability/IToolHarvestAbility.java b/src/main/java/com/hbm/handler/ability/IToolHarvestAbility.java index 9f002bfbd..ee3027340 100644 --- a/src/main/java/com/hbm/handler/ability/IToolHarvestAbility.java +++ b/src/main/java/com/hbm/handler/ability/IToolHarvestAbility.java @@ -175,7 +175,7 @@ public interface IToolHarvestAbility extends IBaseAbility { if(doesSmelt) { for(ItemStack stack : drops) { - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, stack.copy())); + world.spawnEntityInWorld(new EntityItem(world, ItemToolAbility.dropX + 0.5, ItemToolAbility.dropY + 0.5, ItemToolAbility.dropZ + 0.5, stack.copy())); } } } @@ -211,7 +211,7 @@ public interface IToolHarvestAbility extends IBaseAbility { harvestBlock(doesShred, world, x, y, z, player); if(doesShred) { - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, result.copy())); + world.spawnEntityInWorld(new EntityItem(world, ItemToolAbility.dropX + 0.5, ItemToolAbility.dropY + 0.5, ItemToolAbility.dropZ + 0.5, result.copy())); } } }; @@ -248,7 +248,7 @@ public interface IToolHarvestAbility extends IBaseAbility { if(doesCentrifuge) { for(ItemStack st : result) { if(st != null) { - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, st.copy())); + world.spawnEntityInWorld(new EntityItem(world, ItemToolAbility.dropX + 0.5, ItemToolAbility.dropY + 0.5, ItemToolAbility.dropZ + 0.5, st.copy())); } } } @@ -285,7 +285,7 @@ public interface IToolHarvestAbility extends IBaseAbility { harvestBlock(doesCrystallize, world, x, y, z, player); if(doesCrystallize) { - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, result.output.copy())); + world.spawnEntityInWorld(new EntityItem(world, ItemToolAbility.dropX + 0.5, ItemToolAbility.dropY + 0.5, ItemToolAbility.dropZ + 0.5, result.output.copy())); } } }; @@ -324,7 +324,7 @@ public interface IToolHarvestAbility extends IBaseAbility { harvestBlock(doesConvert, world, x, y, z, player); if(doesConvert) { - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.ingot_mercury, mercury))); + world.spawnEntityInWorld(new EntityItem(world, ItemToolAbility.dropX + 0.5, ItemToolAbility.dropY + 0.5, ItemToolAbility.dropZ + 0.5, new ItemStack(ModItems.ingot_mercury, mercury))); } } }; diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index e91283917..022c9274c 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -1,5 +1,7 @@ package com.hbm.items.tool; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Comparator; import java.util.HashSet; @@ -27,6 +29,8 @@ import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.tileentity.IGUIProvider; import api.hbm.item.IDepthRockTool; +import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.relauncher.ReflectionHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -151,6 +155,10 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro return true; } + // Should be safe, considering the AoE ability does a similar trick already. + // If not, wrap this in a ThreadLocal or something... + public static int dropX, dropY, dropZ; + @Override public boolean onBlockStartBreak(ItemStack stack, int x, int y, int z, EntityPlayer player) { @@ -173,6 +181,10 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro Configuration config = getConfiguration(stack); ToolPreset preset = config.getActivePreset(); + dropX = x; + dropY = y; + dropZ = z; + preset.harvestAbility.preHarvestAll(preset.harvestAbilityLevel, world, player); boolean skipRef = preset.areaAbility.onDig(preset.areaAbilityLevel, world, x, y, z, player, this); @@ -316,7 +328,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro double d = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D; double d1 = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D; double d2 = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D; - EntityItem entityitem = new EntityItem(player.worldObj, (double) x + d, (double) y + d1, (double) z + d2, stack); + EntityItem entityitem = new EntityItem(player.worldObj, (double) dropX + d, (double) dropY + d1, (double) dropZ + d2, stack); entityitem.delayBeforeCanPickup = 10; player.worldObj.spawnEntityInWorld(entityitem); } @@ -326,6 +338,9 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro } } + // Since it's added by forge, access transformers don't affect it (even wildcards), so we do it the old-fashioned way + private static Method blockCaptureDrops = ReflectionHelper.findMethod(Block.class, null, new String[] { "captureDrops" }, new Class[] { boolean.class }); + public static void standardDigPost(World world, int x, int y, int z, EntityPlayerMP player) { Block block = world.getBlock(x, y, z); @@ -351,7 +366,20 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro } if(removedByPlayer && canHarvest) { - block.harvestBlock(world, player, x, y, z, l); + try { + blockCaptureDrops.invoke(block, true); + block.harvestBlock(world, player, x, y, z, l); + List drops = (List)blockCaptureDrops.invoke(block, false); + for (ItemStack stack : drops) { + block.dropBlockAsItem(world, dropX, dropY, dropZ, stack); + } + } catch (IllegalAccessException e) { + // Shouldn't be possible with ReflectionHelper + MainRegistry.logger.error("Failed to capture drops for block " + block, e); + } catch (InvocationTargetException e) { + // Might be possible? Not in practice, though + MainRegistry.logger.error("Failed to capture drops for block " + block, e); + } } } diff --git a/src/main/resources/META-INF/HBM_at.cfg b/src/main/resources/META-INF/HBM_at.cfg index 28454115f..81514dff3 100644 --- a/src/main/resources/META-INF/HBM_at.cfg +++ b/src/main/resources/META-INF/HBM_at.cfg @@ -50,4 +50,8 @@ public net.minecraft.client.resources.AbstractResourcePack field_110597_b # re public net.minecraft.inventory.Container * # fucking everything i hate this class # GuiIngame -public net.minecraft.client.gui.GuiIngame field_92016_l # highlightingItemStack \ No newline at end of file +public net.minecraft.client.gui.GuiIngame field_92016_l # highlightingItemStack + +# Block +public net.minecraft.block.Block func_149642_a(Lnet/minecraft/world/World;IIILnet/minecraft/item/ItemStack;)V # dropBlockAsItem + From 6946a70f18feb98b8297b3a68cd0c031c5dac284 Mon Sep 17 00:00:00 2001 From: abel1502 Date: Thu, 26 Jun 2025 23:11:24 +0300 Subject: [PATCH 09/10] Make exhaustion only apply once --- src/main/java/com/hbm/items/tool/ItemToolAbility.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index 022c9274c..b8b25b14b 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -195,6 +195,8 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro preset.harvestAbility.postHarvestAll(preset.harvestAbilityLevel, world, player); + player.addExhaustion(0.025F); + return true; } @@ -379,7 +381,9 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro } catch (InvocationTargetException e) { // Might be possible? Not in practice, though MainRegistry.logger.error("Failed to capture drops for block " + block, e); - } + } + + player.addExhaustion(-0.025F); } } From a3578e67a0c1f9f18dbe3e74d0ada68f34512ddb Mon Sep 17 00:00:00 2001 From: abel1502 Date: Sat, 28 Jun 2025 22:41:11 +0300 Subject: [PATCH 10/10] Revert "Make exhaustion only apply once" This reverts commit 6946a70f18feb98b8297b3a68cd0c031c5dac284. --- src/main/java/com/hbm/items/tool/ItemToolAbility.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index b8b25b14b..022c9274c 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -195,8 +195,6 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro preset.harvestAbility.postHarvestAll(preset.harvestAbilityLevel, world, player); - player.addExhaustion(0.025F); - return true; } @@ -381,9 +379,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro } catch (InvocationTargetException e) { // Might be possible? Not in practice, though MainRegistry.logger.error("Failed to capture drops for block " + block, e); - } - - player.addExhaustion(-0.025F); + } } }