From b400b887014e3def548dc83076cd7b45a5b69e59 Mon Sep 17 00:00:00 2001 From: abel1502 Date: Thu, 26 Jun 2025 21:09:34 +0300 Subject: [PATCH] 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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