diff --git a/src/main/java/gregtech/api/GregTechAPI.java b/src/main/java/gregtech/api/GregTechAPI.java index 654640c56cd..09a64812f21 100644 --- a/src/main/java/gregtech/api/GregTechAPI.java +++ b/src/main/java/gregtech/api/GregTechAPI.java @@ -26,7 +26,7 @@ public class GregTechAPI { public static final BaseCreativeTab TAB_GREGTECH_MATERIALS = new BaseCreativeTab(GTValues.MODID + ".materials", () -> OreDictUnifier.get(OrePrefix.ingot, Materials.Aluminium), true); public static final BaseCreativeTab TAB_GREGTECH_ORES = - new BaseCreativeTab(GTValues.MODID + ".ores", () -> MetaItems.JACKHAMMER.getStackForm(), true); + new BaseCreativeTab(GTValues.MODID + ".ores", () -> MetaItems.DRILL_MV.getStackForm(), true); public static final GTControlledRegistry META_TILE_ENTITY_REGISTRY = new GTControlledRegistry<>(Short.MAX_VALUE); @@ -35,4 +35,4 @@ public static T registerMetaTileEntity(int id, T samp return sampleMetaTileEntity; } -} \ No newline at end of file +} diff --git a/src/main/java/gregtech/api/unification/material/Materials.java b/src/main/java/gregtech/api/unification/material/Materials.java index fc3128f0eed..de97923db4d 100644 --- a/src/main/java/gregtech/api/unification/material/Materials.java +++ b/src/main/java/gregtech/api/unification/material/Materials.java @@ -573,7 +573,7 @@ public static void register() { public static IngotMaterial VanadiumSteel = new IngotMaterial(348, "vanadium_steel", 0xc0c0c0, METALLIC, 3, of(new MaterialStack(Vanadium, 1), new MaterialStack(Chrome, 1), new MaterialStack(Steel, 7)), EXT2_METAL, null, 7.0F, 3.0f, 1920, 1453); public static IngotMaterial HSSG = new IngotMaterial(349, "hssg", 0x999900, METALLIC, 3, of(new MaterialStack(TungstenSteel, 5), new MaterialStack(Chrome, 1), new MaterialStack(Molybdenum, 2), new MaterialStack(Vanadium, 1)), EXT2_METAL | GENERATE_RING | GENERATE_ROTOR | GENERATE_SMALL_GEAR | GENERATE_LONG_ROD | GENERATE_FRAME | GENERATE_SPRING, null, 10.0F, 5.5f, 4000, 4200); public static IngotMaterial HSSE = new IngotMaterial(350, "hsse", 0x336600, METALLIC, 4, of(new MaterialStack(HSSG, 6), new MaterialStack(Cobalt, 1), new MaterialStack(Manganese, 1), new MaterialStack(Silicon, 1)), EXT2_METAL | GENERATE_RING | GENERATE_ROTOR | GENERATE_SMALL_GEAR | GENERATE_LONG_ROD | GENERATE_FRAME, null, 10.0F, 8.0f, 5120, 5000); - public static IngotMaterial HSSS = new IngotMaterial(351, "hsss", 0x660033, METALLIC, 4, of(new MaterialStack(HSSG, 6), new MaterialStack(Iridium, 2), new MaterialStack(Osmium, 1)), EXT2_METAL | GENERATE_GEAR, null, 15.0F, 7.0f, 3000, 5000); + public static IngotMaterial HSSS = new IngotMaterial(351, "hsss", 0x660033, METALLIC, 4, of(new MaterialStack(HSSG, 6), new MaterialStack(Iridium, 2), new MaterialStack(Osmium, 1)), EXT2_METAL | GENERATE_GEAR | GENERATE_SMALL_GEAR, null, 15.0F, 7.0f, 3000, 5000); public static IngotMaterial DiamericiumTitanium = new IngotMaterial(352, "diamericium_titanium", 0x755280, METALLIC, 4, of(new MaterialStack(Americium, 2), new MaterialStack(Titanium, 1)), EXT2_METAL, null, 6.0F, 6.0F, 2200, 10400); /* diff --git a/src/main/java/gregtech/common/ConfigHolder.java b/src/main/java/gregtech/common/ConfigHolder.java index 58e04120252..6f7b59313f6 100644 --- a/src/main/java/gregtech/common/ConfigHolder.java +++ b/src/main/java/gregtech/common/ConfigHolder.java @@ -183,6 +183,14 @@ public static class UnofficialOptions { @Config.RequiresMcRestart public boolean registerCrates = true; + @Config.Comment("Should recipes for EV and IV Drills be enabled, which may cause large amounts of lag when used on some low-end devices? Default: true") + @Config.RequiresMcRestart + public boolean registerRecipesForHighTierDrills = true; + + @Config.Comment("Should recipes for Mining Hammers be enabled? Default: true") + @Config.RequiresMcRestart + public boolean registerRecipesForMiningHammers = true; + public static class GT5U { @Config.Comment("Enable an extra ZPM and UV Battery (this also makes the Ultimate Battery harder to make). Default: false") diff --git a/src/main/java/gregtech/common/items/MetaItem2.java b/src/main/java/gregtech/common/items/MetaItem2.java index 62e418b798a..d2b588ed6f5 100644 --- a/src/main/java/gregtech/common/items/MetaItem2.java +++ b/src/main/java/gregtech/common/items/MetaItem2.java @@ -96,11 +96,13 @@ public void registerSubItems() { POWER_UNIT_LV = addItem(573, "power_unit.lv").addComponents(ElectricStats.createElectricItem(100000L, GTValues.LV)).setMaxStackSize(8); POWER_UNIT_MV = addItem(574, "power_unit.mv").addComponents(ElectricStats.createElectricItem(400000L, GTValues.MV)).setMaxStackSize(8); POWER_UNIT_HV = addItem(575, "power_unit.hv") .addComponents(ElectricStats.createElectricItem(1600000L, GTValues.HV)).setMaxStackSize(8); - JACKHAMMER_BASE = addItem(576, "jackhammer_base").addComponents(ElectricStats.createElectricItem(1600000L, GTValues.HV)).setMaxStackSize(4); + POWER_UNIT_EV = addItem(576, "power_unit.ev") .addComponents(ElectricStats.createElectricItem(6400000L, GTValues.EV)).setMaxStackSize(8); + POWER_UNIT_IV = addItem(577, "power_unit.iv") .addComponents(ElectricStats.createElectricItem(25600000L, GTValues.IV)).setMaxStackSize(8); - NANO_SABER = addItem(577, "nano_saber").addComponents(ElectricStats.createElectricItem(4000000L, GTValues.HV)).addComponents(new NanoSaberBehavior()).setMaxStackSize(1); - ENERGY_FIELD_PROJECTOR = addItem(578, "energy_field_projector").addComponents(ElectricStats.createElectricItem(16000000L, GTValues.EV)).setMaxStackSize(1); - SCANNER = addItem(579, "scanner").addComponents(ElectricStats.createElectricItem(200_000L, GTValues.LV), new ScannerBehavior(50)); + + NANO_SABER = addItem(578, "nano_saber").addComponents(ElectricStats.createElectricItem(4000000L, GTValues.HV)).addComponents(new NanoSaberBehavior()).setMaxStackSize(1); + ENERGY_FIELD_PROJECTOR = addItem(579, "energy_field_projector").addComponents(ElectricStats.createElectricItem(16000000L, GTValues.EV)).setMaxStackSize(1); + SCANNER = addItem(580, "scanner").addComponents(ElectricStats.createElectricItem(200_000L, GTValues.LV), new ScannerBehavior(50)); INGOT_MIXED_METAL = addItem(432, "ingot.mixed_metal"); diff --git a/src/main/java/gregtech/common/items/MetaItems.java b/src/main/java/gregtech/common/items/MetaItems.java index cc28502256b..e65b53d8a66 100644 --- a/src/main/java/gregtech/common/items/MetaItems.java +++ b/src/main/java/gregtech/common/items/MetaItems.java @@ -411,7 +411,8 @@ private MetaItems() { public static MetaItem.MetaValueItem POWER_UNIT_LV; public static MetaItem.MetaValueItem POWER_UNIT_MV; public static MetaItem.MetaValueItem POWER_UNIT_HV; - public static MetaItem.MetaValueItem JACKHAMMER_BASE; + public static MetaItem.MetaValueItem POWER_UNIT_EV; + public static MetaItem.MetaValueItem POWER_UNIT_IV; public static MetaItem.MetaValueItem NANO_SABER; public static MetaItem.MetaValueItem ENERGY_FIELD_PROJECTOR; @@ -446,13 +447,15 @@ private MetaItems() { public static ToolMetaItem.MetaToolValueItem DRILL_LV; public static ToolMetaItem.MetaToolValueItem DRILL_MV; public static ToolMetaItem.MetaToolValueItem DRILL_HV; + public static ToolMetaItem.MetaToolValueItem DRILL_EV; + public static ToolMetaItem.MetaToolValueItem DRILL_IV; + public static ToolMetaItem.MetaToolValueItem MINING_HAMMER; public static ToolMetaItem.MetaToolValueItem CHAINSAW_LV; public static ToolMetaItem.MetaToolValueItem CHAINSAW_MV; public static ToolMetaItem.MetaToolValueItem CHAINSAW_HV; public static ToolMetaItem.MetaToolValueItem WRENCH_LV; public static ToolMetaItem.MetaToolValueItem WRENCH_MV; public static ToolMetaItem.MetaToolValueItem WRENCH_HV; - public static ToolMetaItem.MetaToolValueItem JACKHAMMER; public static ToolMetaItem.MetaToolValueItem BUZZSAW; public static ToolMetaItem.MetaToolValueItem SCREWDRIVER_LV; diff --git a/src/main/java/gregtech/common/items/MetaTool.java b/src/main/java/gregtech/common/items/MetaTool.java index f942635d7c4..89b709dd891 100644 --- a/src/main/java/gregtech/common/items/MetaTool.java +++ b/src/main/java/gregtech/common/items/MetaTool.java @@ -1,6 +1,5 @@ package gregtech.common.items; -import gregtech.api.GTValues; import gregtech.api.items.ToolDictNames; import gregtech.api.items.metaitem.ElectricStats; import gregtech.api.items.toolitem.*; @@ -11,6 +10,7 @@ import gregtech.api.unification.ore.OrePrefix; import gregtech.api.unification.stack.UnificationEntry; import gregtech.common.tools.*; +import gregtech.common.tools.largedrills.ToolDrills; import net.minecraft.init.Enchantments; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -110,21 +110,34 @@ public void registerSubItems() { .setFullRepairCost(3) .addOreDict(ToolDictNames.craftingToolBlade); - DRILL_LV = addItem(23, "tool.drill.lv").setToolStats(new ToolDrillLV()) + DRILL_LV = addItem(23, "tool.drill.lv").setToolStats(new ToolDrills.ToolDrillLV()) .setFullRepairCost(4) .addOreDict(ToolDictNames.craftingToolMiningDrill) .addComponents(ElectricStats.createElectricItem(100000L, 1L)); - DRILL_MV = addItem(24, "tool.drill.mv").setToolStats(new ToolDrillMV()) + DRILL_MV = addItem(24, "tool.drill.mv").setToolStats(new ToolDrills.ToolDrillMV()) .setFullRepairCost(4) .addOreDict(ToolDictNames.craftingToolMiningDrill) .addComponents(ElectricStats.createElectricItem(400000L, 2L)); - DRILL_HV = addItem(25, "tool.drill.hv").setToolStats(new ToolDrillHV()) + DRILL_HV = addItem(25, "tool.drill.hv").setToolStats(new ToolDrills.ToolDrillHV()) .setFullRepairCost(4) .addOreDict(ToolDictNames.craftingToolMiningDrill) .addComponents(ElectricStats.createElectricItem(1600000L, 3L)); + DRILL_EV = addItem(38, "tool.drill.ev").setToolStats(new ToolDrills.ToolDrillEV()) + .setFullRepairCost(4) + .addOreDict(ToolDictNames.craftingToolMiningDrill) + .addComponents(ElectricStats.createElectricItem(6400000L, 4L)); + + DRILL_IV = addItem(39, "tool.drill.iv").setToolStats(new ToolDrills.ToolDrillIV()) + .setFullRepairCost(4) + .addOreDict(ToolDictNames.craftingToolMiningDrill) + .addComponents(ElectricStats.createElectricItem(25600000L, 5L)); + + MINING_HAMMER = addItem(35, "tool.mining_hammer").setToolStats(new ToolMiningHammer()) + .setFullRepairCost(14); + CHAINSAW_LV = addItem(26, "tool.chainsaw.lv").setToolStats(new ToolChainsawLV()) .setFullRepairCost(4) .addOreDict(ToolDictNames.craftingToolSaw) @@ -164,11 +177,6 @@ public void registerSubItems() { .addComponents(new ScrewdriverItemStat()) .addComponents(ElectricStats.createElectricItem(100000L, 1L)); - JACKHAMMER = addItem(32, "tool.jackhammer").setToolStats(new ToolJackHammer()) - .setFullRepairCost(5) - .addOreDict(ToolDictNames.craftingToolJackHammer) - .addComponents(ElectricStats.createElectricItem(1600000L, GTValues.HV)); - BUZZSAW = addItem(33, "tool.buzzsaw").setToolStats(new ToolBuzzSaw()) .setFullRepairCost(4) .addOreDict(ToolDictNames.craftingToolSaw) @@ -204,7 +212,7 @@ public void registerRecipes() { 'S', new UnificationEntry(OrePrefix.stick, Materials.Wood)); } - // for future use: in-game durabilty is 3 per use, maxDurability shown in game is multiplied by 8 + // for future use: in-game durability is 3 per use, maxDurability shown in game is multiplied by 8 Function woodenToolDataApplier = item -> item.setToolData(item.getStackForm(), Materials.Wood, 48, 1, 4.0f, 1.0f); diff --git a/src/main/java/gregtech/common/tools/ToolDrillHV.java b/src/main/java/gregtech/common/tools/ToolDrillHV.java deleted file mode 100644 index 98d9518434f..00000000000 --- a/src/main/java/gregtech/common/tools/ToolDrillHV.java +++ /dev/null @@ -1,53 +0,0 @@ -package gregtech.common.tools; - -import gregtech.api.capability.GregtechCapabilities; -import gregtech.api.capability.IElectricItem; -import gregtech.common.items.MetaItems; -import net.minecraft.item.ItemStack; - -public class ToolDrillHV extends ToolDrillLV { - - @Override - public int getToolDamagePerBlockBreak(ItemStack stack) { - return 8; - } - - @Override - public int getToolDamagePerDropConversion(ItemStack stack) { - return 16; - } - - @Override - public int getToolDamagePerContainerCraft(ItemStack stack) { - return 128; - } - - @Override - public int getToolDamagePerEntityAttack(ItemStack stack) { - return 32; - } - - @Override - public int getBaseQuality(ItemStack stack) { - return 1; - } - - @Override - public float getBaseDamage(ItemStack stack) { - return 5.0F; - } - - @Override - public float getDigSpeedMultiplier(ItemStack stack) { - return 9.0F; - } - - @Override - public float getMaxDurabilityMultiplier(ItemStack stack) { return 4.0F; } - - @Override - public ItemStack getBrokenStack(ItemStack stack) { - IElectricItem electricItem = stack.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null); - return MetaItems.POWER_UNIT_HV.getChargedStackWithOverride(electricItem); - } -} diff --git a/src/main/java/gregtech/common/tools/ToolDrillLV.java b/src/main/java/gregtech/common/tools/ToolDrillLV.java deleted file mode 100644 index 68467f01991..00000000000 --- a/src/main/java/gregtech/common/tools/ToolDrillLV.java +++ /dev/null @@ -1,65 +0,0 @@ -package gregtech.common.tools; - -import gregtech.api.capability.GregtechCapabilities; -import gregtech.api.capability.IElectricItem; -import gregtech.common.items.MetaItems; -import net.minecraft.block.material.Material; -import net.minecraft.block.state.IBlockState; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; - -public class ToolDrillLV extends ToolBase { - - @Override - public boolean canApplyEnchantment(ItemStack stack, Enchantment enchantment) { - return enchantment.type.canEnchantItem(Items.IRON_PICKAXE) || - enchantment.type.canEnchantItem(Items.IRON_SHOVEL); - } - - @Override - public int getToolDamagePerBlockBreak(ItemStack stack) { - return 1; - } - - @Override - public int getToolDamagePerContainerCraft(ItemStack stack) { - return 1; - } - - @Override - public float getBaseDamage(ItemStack stack) { - return 3.0F; - } - - @Override - public float getDigSpeedMultiplier(ItemStack stack) { - return 3.0F; - } - - @Override - public float getMaxDurabilityMultiplier(ItemStack stack) { - return 1.0f; - } - - @Override - public boolean canMineBlock(IBlockState block, ItemStack stack) { - String tool = block.getBlock().getHarvestTool(block); - return (tool != null && (tool.equals("pickaxe") || tool.equals("shovel"))) || - block.getMaterial() == Material.ROCK || - block.getMaterial() == Material.IRON || - block.getMaterial() == Material.ANVIL || - block.getMaterial() == Material.SAND || - block.getMaterial() == Material.GRASS || - block.getMaterial() == Material.GROUND || - block.getMaterial() == Material.SNOW || - block.getMaterial() == Material.CLAY || - block.getMaterial() == Material.GLASS; - } - - @Override - public ItemStack getBrokenStack(ItemStack stack) { - IElectricItem electricItem = stack.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null); - return MetaItems.POWER_UNIT_LV.getChargedStackWithOverride(electricItem); - } -} diff --git a/src/main/java/gregtech/common/tools/ToolDrillMV.java b/src/main/java/gregtech/common/tools/ToolDrillMV.java deleted file mode 100644 index bc1d72f5f80..00000000000 --- a/src/main/java/gregtech/common/tools/ToolDrillMV.java +++ /dev/null @@ -1,55 +0,0 @@ -package gregtech.common.tools; - -import gregtech.api.capability.GregtechCapabilities; -import gregtech.api.capability.IElectricItem; -import gregtech.common.items.MetaItems; -import net.minecraft.item.ItemStack; - -public class ToolDrillMV extends ToolDrillLV { - - @Override - public int getToolDamagePerBlockBreak(ItemStack stack) { - return 2; - } - - @Override - public int getToolDamagePerDropConversion(ItemStack stack) { - return 4; - } - - @Override - public int getToolDamagePerContainerCraft(ItemStack stack) { - return 32; - } - - @Override - public int getToolDamagePerEntityAttack(ItemStack stack) { - return 8; - } - - @Override - public int getBaseQuality(ItemStack stack) { - return 1; - } - - @Override - public float getBaseDamage(ItemStack stack) { - return 4.0F; - } - - @Override - public float getDigSpeedMultiplier(ItemStack stack) { - return 6.0F; - } - - @Override - public float getMaxDurabilityMultiplier(ItemStack stack) { - return 2.0F; - } - - @Override - public ItemStack getBrokenStack(ItemStack stack) { - IElectricItem electricItem = stack.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null); - return MetaItems.POWER_UNIT_MV.getChargedStackWithOverride(electricItem); - } -} diff --git a/src/main/java/gregtech/common/tools/ToolJackHammer.java b/src/main/java/gregtech/common/tools/ToolMiningHammer.java similarity index 63% rename from src/main/java/gregtech/common/tools/ToolJackHammer.java rename to src/main/java/gregtech/common/tools/ToolMiningHammer.java index beb3cc1496f..8bcb72a12a7 100644 --- a/src/main/java/gregtech/common/tools/ToolJackHammer.java +++ b/src/main/java/gregtech/common/tools/ToolMiningHammer.java @@ -1,13 +1,8 @@ package gregtech.common.tools; -import gregtech.api.capability.GregtechCapabilities; -import gregtech.api.capability.IElectricItem; -import gregtech.api.items.metaitem.MetaItem.MetaValueItem; import gregtech.api.items.toolitem.ToolMetaItem; import gregtech.api.util.GTUtility; -import gregtech.common.items.MetaItems; import gregtech.common.items.behaviors.ModeSwitchBehavior; -import gregtech.common.items.behaviors.ModeSwitchBehavior.ILocalizationKey; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.enchantment.Enchantment; @@ -25,22 +20,18 @@ import java.util.Collections; import java.util.List; -public class ToolJackHammer extends ToolDrillLV { +public class ToolMiningHammer extends ToolBase { - private static final ModeSwitchBehavior MODE_SWITCH_BEHAVIOR = new ModeSwitchBehavior<>(JackHammerMode.class); - - public enum JackHammerMode implements ILocalizationKey { - THREE_BY_THREE("metaitem.jack_hammer.mode.three_by_three", 3, 3, 1.2f), - VERTICAL_LINE("metaitem.jack_hammer.mode.vertical_line", 3, 1, 2.5f), - HORIZONTAL_LINE("metaitem.jack_hammer.mode.horizontal_line", 1, 3, 2.5f), - SINGLE_BLOCK("metaitem.jack_hammer.mode.single_block", 1, 1, 3.0f); + public enum MiningHammerMode implements ModeSwitchBehavior.ILocalizationKey { + THREE_BY_THREE("metaitem.drill.mode.three_by_three", 3, 3, 0.75f), + SINGLE_BLOCK("metaitem.drill.mode.single_block", 1, 1, 3.0f); private final String localizationKey; private final int verticalSize; private final int horizontalSize; private final float digSpeedMultiplier; - JackHammerMode(String localizationKey, int verticalSize, int horizontalSize, float digSpeedMultiplier) { + MiningHammerMode(String localizationKey, int verticalSize, int horizontalSize, float digSpeedMultiplier) { this.localizationKey = localizationKey; this.verticalSize = verticalSize; this.horizontalSize = horizontalSize; @@ -65,33 +56,20 @@ public String getUnlocalizedName() { } } + @Override public boolean canApplyEnchantment(ItemStack stack, Enchantment enchantment) { - return enchantment.type.canEnchantItem(Items.IRON_PICKAXE); + return enchantment.type.canEnchantItem(Items.IRON_PICKAXE) || + enchantment.type.canEnchantItem(Items.IRON_SHOVEL); } @Override public int getToolDamagePerBlockBreak(ItemStack stack) { - return 4; - } - - @Override - public int getToolDamagePerDropConversion(ItemStack stack) { - return 4; + return 1; } @Override public int getToolDamagePerContainerCraft(ItemStack stack) { - return 32; - } - - @Override - public int getToolDamagePerEntityAttack(ItemStack stack) { - return 8; - } - - @Override - public int getBaseQuality(ItemStack stack) { return 1; } @@ -100,30 +78,19 @@ public float getBaseDamage(ItemStack stack) { return 3.0F; } - @Override - public float getDigSpeedMultiplier(ItemStack stack) { - JackHammerMode jackHammerMode = MODE_SWITCH_BEHAVIOR.getModeFromItemStack(stack); - return jackHammerMode.getDigSpeedMultiplier(); - } - @Override public float getMaxDurabilityMultiplier(ItemStack stack) { - return 29.0F; + return 2.5f; } @Override public boolean canMineBlock(IBlockState block, ItemStack stack) { String tool = block.getBlock().getHarvestTool(block); return (tool != null && (tool.equals("hammer") || tool.equals("pickaxe"))) || - block.getMaterial() == Material.ROCK || - block.getMaterial() == Material.GLASS || - block.getMaterial() == Material.ICE || - block.getMaterial() == Material.PACKED_ICE; - } - - @Override - public void onStatsAddedToTool(MetaValueItem metaValueItem) { - metaValueItem.addComponents(MODE_SWITCH_BEHAVIOR); + block.getMaterial() == Material.ROCK || + block.getMaterial() == Material.GLASS || + block.getMaterial() == Material.ICE || + block.getMaterial() == Material.PACKED_ICE; } @Override @@ -133,10 +100,15 @@ public List getAOEBlocks(ItemStack itemStack, EntityPlayer player, Ray } ArrayList result = new ArrayList<>(); BlockPos pos = rayTraceResult.getBlockPos(); - JackHammerMode jackHammerMode = MODE_SWITCH_BEHAVIOR.getModeFromItemStack(itemStack); + MiningHammerMode miningHammerMode; + if(player.isSneaking()) { + miningHammerMode = MiningHammerMode.SINGLE_BLOCK; + } else { + miningHammerMode = MiningHammerMode.THREE_BY_THREE; + } EnumFacing horizontalFacing = player.getHorizontalFacing(); - int xSizeExtend = (jackHammerMode.getHorizontalSize() - 1) / 2; - int ySizeExtend = (jackHammerMode.getVerticalSize() - 1) / 2; + int xSizeExtend = (miningHammerMode.getHorizontalSize() - 1) / 2; + int ySizeExtend = (miningHammerMode.getVerticalSize() - 1) / 2; for (int x = -xSizeExtend; x <= xSizeExtend; x++) { for (int y = -ySizeExtend; y <= ySizeExtend; y++) { //do not check center block - it's handled now @@ -153,24 +125,29 @@ public List getAOEBlocks(ItemStack itemStack, EntityPlayer player, Ray @Override public void onBlockDestroyed(ItemStack stack, World world, IBlockState state, BlockPos pos, EntityLivingBase entity) { - if(entity instanceof EntityPlayer && !(entity instanceof FakePlayer)) { + if (entity instanceof EntityPlayer && !(entity instanceof FakePlayer)) { EntityPlayer entityPlayer = (EntityPlayer) entity; EnumFacing sideHit = ToolUtility.getSideHit(world, pos, entityPlayer); int damagePerBlockBreak = getToolDamagePerBlockBreak(stack); - JackHammerMode jackHammerMode = MODE_SWITCH_BEHAVIOR.getModeFromItemStack(stack); + MiningHammerMode miningHammerMode; + if(entityPlayer.isSneaking()) { + miningHammerMode = MiningHammerMode.SINGLE_BLOCK; + } else { + miningHammerMode = MiningHammerMode.THREE_BY_THREE; + } EnumFacing horizontalFacing = entity.getHorizontalFacing(); - int xSizeExtend = (jackHammerMode.getHorizontalSize() - 1) / 2; - int ySizeExtend = (jackHammerMode.getVerticalSize() - 1) / 2; + int xSizeExtend = (miningHammerMode.getHorizontalSize() - 1) / 2; + int ySizeExtend = (miningHammerMode.getVerticalSize() - 1) / 2; for (int x = -xSizeExtend; x <= xSizeExtend; x++) { for (int y = -ySizeExtend; y <= ySizeExtend; y++) { //do not check center block - it's handled now if (x == 0 && y == 0) continue; BlockPos offsetPos = rotate(pos, x, y, sideHit, horizontalFacing); IBlockState blockState = world.getBlockState(offsetPos); - if(world.isBlockModifiable(entityPlayer, offsetPos) && - blockState.getBlock().canHarvestBlock(world, offsetPos, entityPlayer) && - blockState.getPlayerRelativeBlockHardness(entityPlayer, world, offsetPos) > 0.0f && - stack.canHarvestBlock(blockState)) { + if (world.isBlockModifiable(entityPlayer, offsetPos) && + blockState.getBlock().canHarvestBlock(world, offsetPos, entityPlayer) && + blockState.getPlayerRelativeBlockHardness(entityPlayer, world, offsetPos) > 0.0f && + stack.canHarvestBlock(blockState)) { GTUtility.harvestBlock(world, offsetPos, entityPlayer); ((ToolMetaItem) stack.getItem()).damageItem(stack, damagePerBlockBreak, false); } @@ -179,12 +156,6 @@ public void onBlockDestroyed(ItemStack stack, World world, IBlockState state, Bl } } - @Override - public ItemStack getBrokenStack(ItemStack stack) { - IElectricItem electricItem = stack.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null); - return MetaItems.JACKHAMMER_BASE.getChargedStackWithOverride(electricItem); - } - private static BlockPos rotate(BlockPos origin, int x, int y, EnumFacing sideHit, EnumFacing horizontalFacing) { switch (sideHit.getAxis()) { case X: return origin.add(0, y, x); diff --git a/src/main/java/gregtech/common/tools/largedrills/DrillModes.java b/src/main/java/gregtech/common/tools/largedrills/DrillModes.java new file mode 100644 index 00000000000..d071dc30186 --- /dev/null +++ b/src/main/java/gregtech/common/tools/largedrills/DrillModes.java @@ -0,0 +1,148 @@ +package gregtech.common.tools.largedrills; + +public class DrillModes { + public enum DrillMode implements IDrillMode { + SINGLE_BLOCK("metaitem.drill.mode.single_block", 1, 2.0f); + + private final String localizationKey; + private final int cubeSize; + private final float digSpeedMultiplier; + + DrillMode(String localizationKey, int cubeSize, float digSpeedMultiplier) { + this.localizationKey = localizationKey; + this.cubeSize = cubeSize; + this.digSpeedMultiplier = digSpeedMultiplier; + } + + public int getCubeSize() { + return cubeSize; + } + + public float getDigSpeedMultiplier() { + return digSpeedMultiplier; + } + + public String getUnlocalizedName() { + return localizationKey; + } + + public static DrillMode getSingleBlock() { + return SINGLE_BLOCK; + } + } + + public enum DrillMVMode implements IDrillMode { + SINGLE_BLOCK("metaitem.drill.mode.single_block", 1, 4.0f), + THREE_CUBE("metaitem.drill.mode.three_cube", 3, 1.0f); + + private final String localizationKey; + private final int cubeSize; + private final float digSpeedMultiplier; + + DrillMVMode(String localizationKey, int cubeSize, float digSpeedMultiplier) { + this.localizationKey = localizationKey; + this.cubeSize = cubeSize; + this.digSpeedMultiplier = digSpeedMultiplier; + } + + public int getCubeSize() { + return cubeSize; + } + + public float getDigSpeedMultiplier() { + return digSpeedMultiplier; + } + + public String getUnlocalizedName() { + return localizationKey; + } + } + + public enum DrillHVMode implements IDrillMode { + SINGLE_BLOCK("metaitem.drill.mode.single_block", 1, 8.0f), + THREE_CUBE("metaitem.drill.mode.three_cube", 3, 2.0f), + FIVE_CUBE("metaitem.drill.mode.five_cube", 5, 1.0f); + + private final String localizationKey; + private final int cubeSize; + private final float digSpeedMultiplier; + + DrillHVMode(String localizationKey, int cubeSize, float digSpeedMultiplier) { + this.localizationKey = localizationKey; + this.cubeSize = cubeSize; + this.digSpeedMultiplier = digSpeedMultiplier; + } + + public int getCubeSize() { + return cubeSize; + } + + public float getDigSpeedMultiplier() { + return digSpeedMultiplier; + } + + public String getUnlocalizedName() { + return localizationKey; + } + } + + public enum DrillEVMode implements IDrillMode { + SINGLE_BLOCK("metaitem.drill.mode.single_block", 1, 16.0f), + THREE_CUBE("metaitem.drill.mode.three_cube", 3, 4.0f), + FIVE_CUBE("metaitem.drill.mode.five_cube", 5, 2.0f), + SEVEN_CUBE("metaitem.drill.mode.seven_cube", 7, 1.0f); + + private final String localizationKey; + private final int cubeSize; + private final float digSpeedMultiplier; + + DrillEVMode(String localizationKey, int cubeSize, float digSpeedMultiplier) { + this.localizationKey = localizationKey; + this.cubeSize = cubeSize; + this.digSpeedMultiplier = digSpeedMultiplier; + } + + public int getCubeSize() { + return cubeSize; + } + + public float getDigSpeedMultiplier() { + return digSpeedMultiplier; + } + + public String getUnlocalizedName() { + return localizationKey; + } + } + + public enum DrillIVMode implements IDrillMode { + SINGLE_BLOCK("metaitem.drill.mode.single_block", 1, 32.0f), + THREE_CUBE("metaitem.drill.mode.three_cube", 3, 8.0f), + FIVE_CUBE("metaitem.drill.mode.five_cube", 5, 4.0f), + SEVEN_CUBE("metaitem.drill.mode.seven_cube", 7, 2.0f), + NINE_CUBE("metaitem.drill.mode.nine_cube", 9, 1.0f); + + private final String localizationKey; + private final int cubeSize; + private final float digSpeedMultiplier; + + DrillIVMode(String localizationKey, int cubeSize, float digSpeedMultiplier) { + this.localizationKey = localizationKey; + this.cubeSize = cubeSize; + this.digSpeedMultiplier = digSpeedMultiplier; + } + + public int getCubeSize() { + return cubeSize; + } + + public float getDigSpeedMultiplier() { + return digSpeedMultiplier; + } + + public String getUnlocalizedName() { + return localizationKey; + } + } + +} diff --git a/src/main/java/gregtech/common/tools/largedrills/IDrillMode.java b/src/main/java/gregtech/common/tools/largedrills/IDrillMode.java new file mode 100644 index 00000000000..5e31f147950 --- /dev/null +++ b/src/main/java/gregtech/common/tools/largedrills/IDrillMode.java @@ -0,0 +1,16 @@ +package gregtech.common.tools.largedrills; + +import gregtech.common.items.behaviors.ModeSwitchBehavior; + +public interface IDrillMode extends ModeSwitchBehavior.ILocalizationKey { + int getCubeSize(); + + float getDigSpeedMultiplier(); + + @Override + String getUnlocalizedName(); + + static IDrillMode getSingleBlock() { + return DrillModes.DrillMode.SINGLE_BLOCK; + } +} diff --git a/src/main/java/gregtech/common/tools/largedrills/ToolDrillLarge.java b/src/main/java/gregtech/common/tools/largedrills/ToolDrillLarge.java new file mode 100644 index 00000000000..8c42e6ec6eb --- /dev/null +++ b/src/main/java/gregtech/common/tools/largedrills/ToolDrillLarge.java @@ -0,0 +1,177 @@ +package gregtech.common.tools.largedrills; + +import gregtech.api.capability.GregtechCapabilities; +import gregtech.api.capability.IElectricItem; +import gregtech.api.items.metaitem.MetaItem; +import gregtech.api.items.toolitem.ToolMetaItem; +import gregtech.api.util.GTUtility; +import gregtech.common.items.MetaItems; +import gregtech.common.items.behaviors.ModeSwitchBehavior; +import gregtech.common.tools.ToolBase; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.RayTraceResult; +import net.minecraft.world.World; +import net.minecraftforge.common.util.FakePlayer; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public abstract class ToolDrillLarge & IDrillMode> extends ToolBase { + + abstract ModeSwitchBehavior getModeSwitchBehavior(); + + abstract int getTier(); + + abstract MetaItem.MetaValueItem getPowerUnit(); + + @Override + public int getToolDamagePerBlockBreak(ItemStack stack) { + return getTier(); + } + + @Override + public int getToolDamagePerDropConversion(ItemStack stack) { + return getTier() * 2; + } + + @Override + public int getToolDamagePerContainerCraft(ItemStack stack) { + return (int) Math.pow(2, getTier() * 2 - 1); + } + + @Override + public int getToolDamagePerEntityAttack(ItemStack stack) { + return getTier() + 2; + } + + @Override + public int getBaseQuality(ItemStack stack) { + return 1; + } + + @Override + public float getBaseDamage(ItemStack stack) { + return getTier(); + } + + @Override + public boolean canApplyEnchantment(ItemStack stack, Enchantment enchantment) { + return enchantment.type.canEnchantItem(Items.IRON_PICKAXE); + } + + @Override + public float getDigSpeedMultiplier(ItemStack stack) { + E drillMode = this.getModeSwitchBehavior().getModeFromItemStack(stack); + return drillMode.getDigSpeedMultiplier(); + } + + @Override + public float getMaxDurabilityMultiplier(ItemStack stack) { + return 29.0F; + } + + @Override + public boolean canMineBlock(IBlockState block, ItemStack stack) { + String tool = block.getBlock().getHarvestTool(block); + return (tool != null && (tool.equals("pickaxe") || tool.equals("shovel"))) || + block.getMaterial() == Material.ROCK || + block.getMaterial() == Material.IRON || + block.getMaterial() == Material.ANVIL || + block.getMaterial() == Material.SAND || + block.getMaterial() == Material.GRASS || + block.getMaterial() == Material.GROUND || + block.getMaterial() == Material.SNOW || + block.getMaterial() == Material.CLAY || + block.getMaterial() == Material.GLASS; + } + + public boolean canAOEMineBlock(IBlockState block, ItemStack stack) { + String tool = block.getBlock().getHarvestTool(block); + return (tool != null && (tool.equals("hammer") || tool.equals("pickaxe"))) || + block.getMaterial() == Material.ROCK || + block.getMaterial() == Material.GLASS || + block.getMaterial() == Material.ICE || + block.getMaterial() == Material.PACKED_ICE; + } + + @Override + public void onStatsAddedToTool(MetaItem.MetaValueItem metaValueItem) { + metaValueItem.addComponents(this.getModeSwitchBehavior()); + } + + @Override + public List getAOEBlocks(ItemStack itemStack, EntityPlayer player, RayTraceResult rayTraceResult) { + if (player.isCreative()) { + return Collections.emptyList(); + } + ArrayList result = new ArrayList<>(); + BlockPos pos = rayTraceResult.getBlockPos(); + IDrillMode drillMode; + if (player.isSneaking() || !canAOEMineBlock(player.world.getBlockState(pos), itemStack)) { + drillMode = IDrillMode.getSingleBlock(); + } else { + drillMode = this.getModeSwitchBehavior().getModeFromItemStack(itemStack); + } + int sizeExtension = (drillMode.getCubeSize() - 1) / 2; + for (int x = -sizeExtension; x <= sizeExtension; x++) { + for (int y = -sizeExtension; y <= sizeExtension; y++) { + for (int z = -sizeExtension; z <= sizeExtension; z++) { + if (x == 0 && y == 0 && z == 0) continue; //that's handled separately + BlockPos offsetPos = pos.add(x, y, z); + IBlockState blockState = player.world.getBlockState(offsetPos); + if (itemStack.canHarvestBlock(blockState)) { + result.add(offsetPos); + } + } + } + } + return result; + } + + @Override + public void onBlockDestroyed(ItemStack stack, World world, IBlockState state, BlockPos pos, EntityLivingBase entity) { + if (entity instanceof EntityPlayer && !(entity instanceof FakePlayer)) { + EntityPlayer entityPlayer = (EntityPlayer) entity; + int damagePerBlockBreak = getToolDamagePerBlockBreak(stack); + IDrillMode drillMode; + if (entityPlayer.isSneaking() || !canAOEMineBlock(entityPlayer.world.getBlockState(pos), stack)) { + drillMode = IDrillMode.getSingleBlock(); + } else { + drillMode = this.getModeSwitchBehavior().getModeFromItemStack(stack); + } + int sizeExtension = (drillMode.getCubeSize() - 1) / 2; + for (int x = -sizeExtension; x <= sizeExtension; x++) { + for (int y = -sizeExtension; y <= sizeExtension; y++) { + for (int z = -sizeExtension; z <= sizeExtension; z++) { + if (x == 0 && y == 0 && z == 0) continue; //that's handled separately + BlockPos offsetPos = pos.add(x, y, z); + IBlockState blockState = world.getBlockState(offsetPos); + if (world.isBlockModifiable(entityPlayer, offsetPos) && + blockState.getBlock().canHarvestBlock(world, offsetPos, entityPlayer) && + blockState.getPlayerRelativeBlockHardness(entityPlayer, world, offsetPos) > 0.0f && + stack.canHarvestBlock(blockState)) { + GTUtility.harvestBlock(world, offsetPos, entityPlayer); + ((ToolMetaItem) stack.getItem()).damageItem(stack, damagePerBlockBreak, false); + } + } + } + } + } + } + + @Override + public ItemStack getBrokenStack(ItemStack stack) { + IElectricItem electricItem = stack.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null); + return getPowerUnit().getChargedStackWithOverride(electricItem); + } + +} diff --git a/src/main/java/gregtech/common/tools/largedrills/ToolDrills.java b/src/main/java/gregtech/common/tools/largedrills/ToolDrills.java new file mode 100644 index 00000000000..9b413ee99ba --- /dev/null +++ b/src/main/java/gregtech/common/tools/largedrills/ToolDrills.java @@ -0,0 +1,105 @@ +package gregtech.common.tools.largedrills; + +import gregtech.api.items.metaitem.MetaItem.MetaValueItem; +import gregtech.common.items.MetaItems; +import gregtech.common.items.behaviors.ModeSwitchBehavior; +import static gregtech.common.tools.largedrills.DrillModes.*; + + +//If you want to add more electric drills to GT, modify this class, and add a DrillMode in DrillModes. +public class ToolDrills { + public static class ToolDrillLV extends ToolDrillLarge { + public final ModeSwitchBehavior MODE_SWITCH_BEHAVIOR = new ModeSwitchBehavior<>(DrillMode.class); + + @Override + ModeSwitchBehavior getModeSwitchBehavior() { + return MODE_SWITCH_BEHAVIOR; + } + + @Override + int getTier() { + return 1; + } + + @Override + MetaValueItem getPowerUnit() { + return MetaItems.POWER_UNIT_LV; + } + } + + public static class ToolDrillMV extends ToolDrillLarge { + public final ModeSwitchBehavior MODE_SWITCH_BEHAVIOR = new ModeSwitchBehavior<>(DrillMVMode.class); + + @Override + ModeSwitchBehavior getModeSwitchBehavior() { + return MODE_SWITCH_BEHAVIOR; + } + + @Override + int getTier() { + return 2; + } + + @Override + MetaValueItem getPowerUnit() { + return MetaItems.POWER_UNIT_MV; + } + } + + public static class ToolDrillHV extends ToolDrillLarge { + public final ModeSwitchBehavior MODE_SWITCH_BEHAVIOR = new ModeSwitchBehavior<>(DrillHVMode.class); + + @Override + ModeSwitchBehavior getModeSwitchBehavior() { + return MODE_SWITCH_BEHAVIOR; + } + + @Override + int getTier() { + return 3; + } + + @Override + MetaValueItem getPowerUnit() { + return MetaItems.POWER_UNIT_HV; + } + } + + public static class ToolDrillEV extends ToolDrillLarge { + public final ModeSwitchBehavior MODE_SWITCH_BEHAVIOR = new ModeSwitchBehavior<>(DrillEVMode.class); + + @Override + ModeSwitchBehavior getModeSwitchBehavior() { + return MODE_SWITCH_BEHAVIOR; + } + + @Override + int getTier() { + return 4; + } + + @Override + MetaValueItem getPowerUnit() { + return MetaItems.POWER_UNIT_EV; + } + } + + public static class ToolDrillIV extends ToolDrillLarge { + public final ModeSwitchBehavior MODE_SWITCH_BEHAVIOR = new ModeSwitchBehavior<>(DrillIVMode.class); + + @Override + ModeSwitchBehavior getModeSwitchBehavior() { + return MODE_SWITCH_BEHAVIOR; + } + + @Override + int getTier() { + return 5; + } + + @Override + MetaValueItem getPowerUnit() { + return MetaItems.POWER_UNIT_IV; + } + } +} diff --git a/src/main/java/gregtech/loaders/oreprocessing/ToolRecipeHandler.java b/src/main/java/gregtech/loaders/oreprocessing/ToolRecipeHandler.java index eba8f219879..08b50872355 100644 --- a/src/main/java/gregtech/loaders/oreprocessing/ToolRecipeHandler.java +++ b/src/main/java/gregtech/loaders/oreprocessing/ToolRecipeHandler.java @@ -12,6 +12,7 @@ import gregtech.api.unification.material.type.*; import gregtech.api.unification.ore.OrePrefix; import gregtech.api.unification.stack.UnificationEntry; +import gregtech.common.ConfigHolder; import gregtech.common.items.MetaItems; import net.minecraft.init.Blocks; import net.minecraft.item.EnumDyeColor; @@ -29,8 +30,8 @@ public class ToolRecipeHandler { public static void register() { + OrePrefix.plate.addProcessingHandler(SolidMaterial.class, ToolRecipeHandler::processPlate); OrePrefix.stick.addProcessingHandler(SolidMaterial.class, ToolRecipeHandler::processStick); - OrePrefix.stickLong.addProcessingHandler(IngotMaterial.class, ToolRecipeHandler::processLongStick); OrePrefix.toolHeadShovel.addProcessingHandler(SolidMaterial.class, ToolRecipeHandler::processShovelHead); OrePrefix.toolHeadAxe.addProcessingHandler(SolidMaterial.class, ToolRecipeHandler::processAxeHead); @@ -50,84 +51,71 @@ public static void register() { OrePrefix.toolHeadHammer.addProcessingHandler(SolidMaterial.class, ToolRecipeHandler::processHammerHead); } + public static MetaValueItem[] motorItems; public static SolidMaterial[] baseMaterials; public static MetaValueItem[][] batteryItems; public static MetaValueItem[] powerUnitItems; public static void initializeMetaItems() { - motorItems = new MetaValueItem[]{MetaItems.ELECTRIC_MOTOR_LV, MetaItems.ELECTRIC_MOTOR_MV, MetaItems.ELECTRIC_MOTOR_HV}; - baseMaterials = new SolidMaterial[]{Materials.StainlessSteel, Materials.Titanium, Materials.TungstenSteel}; - powerUnitItems = new MetaValueItem[] {MetaItems.POWER_UNIT_LV, MetaItems.POWER_UNIT_MV, MetaItems.POWER_UNIT_HV}; + motorItems = new MetaValueItem[]{MetaItems.ELECTRIC_MOTOR_LV, MetaItems.ELECTRIC_MOTOR_MV, MetaItems.ELECTRIC_MOTOR_HV, MetaItems.ELECTRIC_MOTOR_EV, MetaItems.ELECTRIC_MOTOR_IV}; + baseMaterials = new SolidMaterial[]{Materials.Aluminium, Materials.StainlessSteel, Materials.Titanium, Materials.TungstenSteel, Materials.HSSS}; + powerUnitItems = new MetaValueItem[]{MetaItems.POWER_UNIT_LV, MetaItems.POWER_UNIT_MV, MetaItems.POWER_UNIT_HV, MetaItems.POWER_UNIT_EV, MetaItems.POWER_UNIT_IV}; batteryItems = new MetaValueItem[][]{ - {MetaItems.BATTERY_RE_LV_LITHIUM, MetaItems.BATTERY_RE_LV_CADMIUM, MetaItems.BATTERY_RE_LV_SODIUM}, - {MetaItems.BATTERY_RE_MV_LITHIUM, MetaItems.BATTERY_RE_MV_CADMIUM, MetaItems.BATTERY_RE_MV_SODIUM}, - {MetaItems.BATTERY_RE_HV_LITHIUM, MetaItems.BATTERY_RE_HV_CADMIUM, MetaItems.BATTERY_RE_HV_SODIUM}}; + {MetaItems.BATTERY_RE_LV_LITHIUM, MetaItems.BATTERY_RE_LV_CADMIUM, MetaItems.BATTERY_RE_LV_SODIUM}, + {MetaItems.BATTERY_RE_MV_LITHIUM, MetaItems.BATTERY_RE_MV_CADMIUM, MetaItems.BATTERY_RE_MV_SODIUM}, + {MetaItems.BATTERY_RE_HV_LITHIUM, MetaItems.BATTERY_RE_HV_CADMIUM, MetaItems.BATTERY_RE_HV_SODIUM}, + {MetaItems.LAPOTRON_CRYSTAL}, + {MetaItems.ENERGY_LAPOTRONIC_ORB}}; } public static void registerPowerUnitRecipes() { - for(int i = 0; i < powerUnitItems.length; i++) { - for(MetaValueItem batteryItem : batteryItems[i]) { + for (int i = 0; i < 5; i++) { + for (MetaValueItem batteryItem : batteryItems[i]) { ItemStack batteryStack = batteryItem.getStackForm(); long maxCharge = batteryStack.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null).getMaxCharge(); ItemStack powerUnitStack = powerUnitItems[i].getMaxChargeOverrideStack(maxCharge); String recipeName = String.format("%s_%s", powerUnitItems[i].unlocalizedName, batteryItem.unlocalizedName); ModHandler.addShapedEnergyTransferRecipe(recipeName, powerUnitStack, - Ingredient.fromStacks(batteryStack), false, - "S ", "GMG", "PBP", - 'M', motorItems[i].getStackForm(), - 'S', new UnificationEntry(OrePrefix.screw, baseMaterials[i]), - 'P', new UnificationEntry(OrePrefix.plate, baseMaterials[i]), - 'G', new UnificationEntry(OrePrefix.gearSmall, baseMaterials[i]), - 'B', batteryStack); + Ingredient.fromStacks(batteryStack), false, + "S ", "GMG", "PBP", + 'M', motorItems[i].getStackForm(), + 'S', new UnificationEntry(OrePrefix.screw, baseMaterials[i]), + 'P', new UnificationEntry(OrePrefix.plate, baseMaterials[i]), + 'G', new UnificationEntry(OrePrefix.gearSmall, baseMaterials[i]), + 'B', batteryStack); } } - - for(MetaValueItem batteryItem : batteryItems[2]) { - ItemStack batteryStack = batteryItem.getStackForm(); - long maxCharge = batteryStack.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null).getMaxCharge(); - ItemStack hammerBaseStack = MetaItems.JACKHAMMER_BASE.getMaxChargeOverrideStack(maxCharge); - String recipeName = String.format("jackhammer_base_%s", batteryItem.unlocalizedName); - - ModHandler.addShapedEnergyTransferRecipe(recipeName, hammerBaseStack, - Ingredient.fromStacks(batteryStack), false, - "S ", "PRP", "MPB", - 'M', MetaItems.ELECTRIC_PISTON_HV.getStackForm(), - 'S', new UnificationEntry(OrePrefix.screw, Materials.Titanium), - 'P', new UnificationEntry(OrePrefix.plateDense, Materials.Titanium), - 'R', new UnificationEntry(OrePrefix.spring, Materials.Titanium), - 'B', batteryStack); - } } public static void processSimpleElectricToolHead(OrePrefix toolPrefix, SolidMaterial solidMaterial, MetaToolValueItem[] toolItems) { for (int i = 0; i < toolItems.length; i++) { - for(MetaValueItem batteryItem : batteryItems[i]) { + for (MetaValueItem batteryItem : batteryItems[i]) { ItemStack batteryStack = batteryItem.getStackForm(); long maxCharge = batteryStack.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null).getMaxCharge(); ItemStack chargedDrillStack = toolItems[i].getMaxChargeOverrideStack(solidMaterial, maxCharge); String recipeNameFirst = String.format("%s_%s_%s_full", toolItems[i].unlocalizedName, solidMaterial, batteryItem.unlocalizedName); ModHandler.addShapedEnergyTransferRecipe(recipeNameFirst, chargedDrillStack, - Ingredient.fromStacks(batteryStack), false, - "SXd", "GMG", "PBP", - 'X', new UnificationEntry(toolPrefix, solidMaterial), - 'M', motorItems[i].getStackForm(), - 'S', new UnificationEntry(OrePrefix.screw, baseMaterials[i]), - 'P', new UnificationEntry(OrePrefix.plate, baseMaterials[i]), - 'G', new UnificationEntry(OrePrefix.gearSmall, baseMaterials[i]), - 'B', batteryStack); + Ingredient.fromStacks(batteryStack), false, + "SXd", "GMG", "PBP", + 'X', new UnificationEntry(toolPrefix, solidMaterial), + 'M', motorItems[i].getStackForm(), + 'S', new UnificationEntry(OrePrefix.screw, baseMaterials[i]), + 'P', new UnificationEntry(OrePrefix.plate, baseMaterials[i]), + 'G', new UnificationEntry(OrePrefix.gearSmall, baseMaterials[i]), + 'B', batteryStack); } ItemStack drillStack = toolItems[i].getStackForm(solidMaterial); ItemStack powerUnitStack = powerUnitItems[i].getStackForm(); String recipeNameSecond = String.format("%s_%s_unit", toolItems[i].unlocalizedName, solidMaterial); ModHandler.addShapedEnergyTransferRecipe(recipeNameSecond, drillStack, - Ingredient.fromStacks(powerUnitStack), true, - "wHd", " U ", - 'H', new UnificationEntry(toolPrefix, solidMaterial), - 'U', powerUnitStack); + Ingredient.fromStacks(powerUnitStack), true, + "wHd", " U ", + 'H', new UnificationEntry(toolPrefix, solidMaterial), + 'U', powerUnitStack); } } @@ -135,19 +123,19 @@ public static void processSimpleToolHead(OrePrefix toolPrefix, SolidMaterial sol Material handleMaterial = Materials.Wood; ModHandler.addShapelessRecipe(String.format("%s_%s_%s", toolPrefix.name(), solidMaterial, handleMaterial), - toolItem.getStackForm(solidMaterial), - new UnificationEntry(toolPrefix, solidMaterial), - new UnificationEntry(OrePrefix.stick, handleMaterial)); + toolItem.getStackForm(solidMaterial), + new UnificationEntry(toolPrefix, solidMaterial), + new UnificationEntry(OrePrefix.stick, handleMaterial)); if (solidMaterial instanceof IngotMaterial && solidMaterial.hasFlag(GENERATE_PLATE)) { addSimpleToolRecipe(toolPrefix, solidMaterial, toolItem, - new UnificationEntry(OrePrefix.plate, solidMaterial), - new UnificationEntry(OrePrefix.ingot, solidMaterial), recipe); + new UnificationEntry(OrePrefix.plate, solidMaterial), + new UnificationEntry(OrePrefix.ingot, solidMaterial), recipe); } if (solidMaterial instanceof GemMaterial) { addSimpleToolRecipe(toolPrefix, solidMaterial, toolItem, - new UnificationEntry(OrePrefix.gem, solidMaterial), - new UnificationEntry(OrePrefix.gem, solidMaterial), recipe); + new UnificationEntry(OrePrefix.gem, solidMaterial), + new UnificationEntry(OrePrefix.gem, solidMaterial), recipe); } } @@ -158,132 +146,118 @@ public static void processStick(OrePrefix stickPrefix, SolidMaterial material) { if (material instanceof IngotMaterial && material.toolDurability > 0) { ModHandler.addShapedRecipe(String.format("plunger_%s", material), - MetaItems.PLUNGER.getStackForm(material), - "xRR", " SR", "S f", - 'S', new UnificationEntry(OrePrefix.stick, material), - 'R', new UnificationEntry(OrePrefix.plate, Materials.Rubber)); + MetaItems.PLUNGER.getStackForm(material), + "xRR", " SR", "S f", + 'S', new UnificationEntry(OrePrefix.stick, material), + 'R', new UnificationEntry(OrePrefix.plate, Materials.Rubber)); } SolidMaterial handleMaterial = Materials.Wood; if (material.hasFlag(GENERATE_ROD) && material.toolDurability > 0) { ModHandler.addShapedRecipe(String.format("screwdriver_%s_%s", material.toString(), handleMaterial.toString()), - MetaItems.SCREWDRIVER.getStackForm(material), - " fS", " Sh", "W ", - 'S', new UnificationEntry(OrePrefix.stick, material), - 'W', new UnificationEntry(OrePrefix.stick, handleMaterial)); + MetaItems.SCREWDRIVER.getStackForm(material), + " fS", " Sh", "W ", + 'S', new UnificationEntry(OrePrefix.stick, material), + 'W', new UnificationEntry(OrePrefix.stick, handleMaterial)); ModHandler.addShapedRecipe(String.format("crowbar_%s", material), - MetaItems.CROWBAR.getStackForm(material), - "hDS", "DSD", "SDf", - 'S', new UnificationEntry(OrePrefix.stick, material), - 'D', new UnificationEntry(OrePrefix.dye, MarkerMaterials.Color.COLORS.get(EnumDyeColor.BLUE))); + MetaItems.CROWBAR.getStackForm(material), + "hDS", "DSD", "SDf", + 'S', new UnificationEntry(OrePrefix.stick, material), + 'D', new UnificationEntry(OrePrefix.dye, MarkerMaterials.Color.COLORS.get(EnumDyeColor.BLUE))); ModHandler.addShapedRecipe(String.format("scoop_%s", material.toString()), - MetaItems.SCOOP.getStackForm(material), - "SWS", "SSS", "xSh", - 'S', new UnificationEntry(OrePrefix.stick, material), - 'W', new ItemStack(Blocks.WOOL, 1, GTValues.W)); + MetaItems.SCOOP.getStackForm(material), + "SWS", "SSS", "xSh", + 'S', new UnificationEntry(OrePrefix.stick, material), + 'W', new ItemStack(Blocks.WOOL, 1, GTValues.W)); } if (material.hasFlag(GENERATE_PLATE) && material.toolDurability > 0) { ModHandler.addShapedRecipe(String.format("knife_%s", material.toString()), - MetaItems.KNIFE.getStackForm(material), - "fPh", " S ", - 'S', new UnificationEntry(stickPrefix, material), - 'P', new UnificationEntry(OrePrefix.plate, material)); + MetaItems.KNIFE.getStackForm(material), + "fPh", " S ", + 'S', new UnificationEntry(stickPrefix, material), + 'P', new UnificationEntry(OrePrefix.plate, material)); } if (material.hasFlag(GENERATE_PLATE | GENERATE_ROD) && material.toolDurability > 0) { ModHandler.addShapedRecipe(String.format("butchery_knife_%s", material.toString()), - MetaItems.BUTCHERY_KNIFE.getStackForm(material), - "PPf", "PP ", "Sh ", - 'S', new UnificationEntry(OrePrefix.stick, material), - 'P', new UnificationEntry(OrePrefix.plate, material)); + MetaItems.BUTCHERY_KNIFE.getStackForm(material), + "PPf", "PP ", "Sh ", + 'S', new UnificationEntry(OrePrefix.stick, material), + 'P', new UnificationEntry(OrePrefix.plate, material)); } if (material.hasFlag(GENERATE_PLATE | GENERATE_ROD | GENERATE_BOLT_SCREW) && material.toolDurability > 0) { ModHandler.addShapedRecipe(String.format("wire_cutter_%s", material.toString()), - MetaItems.WIRE_CUTTER.getStackForm(material), - "PfP", "hPd", "STS", - 'S', new UnificationEntry(stickPrefix, material), - 'P', new UnificationEntry(OrePrefix.plate, material), - 'T', new UnificationEntry(OrePrefix.screw, material)); + MetaItems.WIRE_CUTTER.getStackForm(material), + "PfP", "hPd", "STS", + 'S', new UnificationEntry(stickPrefix, material), + 'P', new UnificationEntry(OrePrefix.plate, material), + 'T', new UnificationEntry(OrePrefix.screw, material)); ModHandler.addShapedRecipe(String.format("branch_cutter_%s", material.toString()), - MetaItems.BRANCH_CUTTER.getStackForm(material), - "PfP", "PdP", "STS", - 'S', new UnificationEntry(stickPrefix, material), - 'P', new UnificationEntry(OrePrefix.plate, material), - 'T', new UnificationEntry(OrePrefix.screw, material)); + MetaItems.BRANCH_CUTTER.getStackForm(material), + "PfP", "PdP", "STS", + 'S', new UnificationEntry(stickPrefix, material), + 'P', new UnificationEntry(OrePrefix.plate, material), + 'T', new UnificationEntry(OrePrefix.screw, material)); } } - public static void processLongStick(OrePrefix orePrefix, IngotMaterial material) { - if (material.toolDurability <= 0) return; - processSimpleElectricToolHead(orePrefix, material, new MetaToolValueItem[]{MetaItems.SCREWDRIVER_LV}); - - for (MetaValueItem batteryItem : batteryItems[2]) { - ItemStack batteryStack = batteryItem.getStackForm(); - long maxCharge = batteryStack.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null).getMaxCharge(); - ItemStack chargedHammerStack = MetaItems.JACKHAMMER.getMaxChargeOverrideStack(material, maxCharge); - String recipeNameFirst = String.format("jack_hammer_%s_%s_full", batteryItem.unlocalizedName, material.toString()); - - ModHandler.addShapedEnergyTransferRecipe(recipeNameFirst, chargedHammerStack, - Ingredient.fromStacks(batteryStack), false, - "SXd", "PRP", "MPB", - 'X', new UnificationEntry(OrePrefix.stickLong, material), - 'M', MetaItems.ELECTRIC_PISTON_HV.getStackForm(), - 'S', new UnificationEntry(OrePrefix.screw, Materials.Titanium), - 'P', new UnificationEntry(OrePrefix.plateDense, Materials.Titanium), - 'R', new UnificationEntry(OrePrefix.spring, Materials.Titanium), - 'B', batteryStack); + public static void processPlate(OrePrefix platePrefix, SolidMaterial material) { + if (material.toolDurability > 0 && ConfigHolder.U.registerRecipesForMiningHammers) { + ModHandler.addShapedRecipe(String.format("mining_hammer_%s", material.toString()), + MetaItems.MINING_HAMMER.getStackForm(material), + "PIP", "IBI", "fRh", + 'I', new UnificationEntry(OrePrefix.ingot, material), + 'B', new UnificationEntry(OrePrefix.block, material), + 'P', new UnificationEntry(OrePrefix.plate, material), + 'R', new UnificationEntry(OrePrefix.stick, Materials.Iron)); } - - ItemStack drillStack = MetaItems.JACKHAMMER.getStackForm(material); - ItemStack powerUnitStack = MetaItems.JACKHAMMER_BASE.getStackForm(); - String recipeNameSecond = String.format("jack_hammer_%s_unit", material); - ModHandler.addShapedEnergyTransferRecipe(recipeNameSecond, drillStack, - Ingredient.fromStacks(powerUnitStack), true, - "wHd", " U ", - 'H', new UnificationEntry(orePrefix, material), - 'U', powerUnitStack); } + public static void processDrillHead(OrePrefix drillHead, SolidMaterial solidMaterial) { - processSimpleElectricToolHead(drillHead, solidMaterial, new MetaToolValueItem[]{MetaItems.DRILL_LV, MetaItems.DRILL_MV, MetaItems.DRILL_HV}); + if (ConfigHolder.U.registerRecipesForHighTierDrills) { + processSimpleElectricToolHead(drillHead, solidMaterial, new MetaToolValueItem[]{MetaItems.DRILL_LV, MetaItems.DRILL_MV, MetaItems.DRILL_HV, MetaItems.DRILL_EV, MetaItems.DRILL_IV}); + } else { + processSimpleElectricToolHead(drillHead, solidMaterial, new MetaToolValueItem[]{MetaItems.DRILL_LV, MetaItems.DRILL_MV, MetaItems.DRILL_HV}); + } ModHandler.addShapedRecipe(String.format("drill_head_%s", solidMaterial.toString()), - OreDictUnifier.get(OrePrefix.toolHeadDrill, solidMaterial), - "XSX", "XSX", "ShS", - 'X', new UnificationEntry(OrePrefix.plate, solidMaterial), - 'S', new UnificationEntry(OrePrefix.plate, Materials.Steel)); + OreDictUnifier.get(OrePrefix.toolHeadDrill, solidMaterial), + "XSX", "XSX", "ShS", + 'X', new UnificationEntry(OrePrefix.plate, solidMaterial), + 'S', new UnificationEntry(OrePrefix.plate, Materials.Steel)); } public static void processChainSawHead(OrePrefix toolPrefix, SolidMaterial solidMaterial) { processSimpleElectricToolHead(toolPrefix, solidMaterial, new MetaToolValueItem[]{MetaItems.CHAINSAW_LV, MetaItems.CHAINSAW_MV, MetaItems.CHAINSAW_HV}); ModHandler.addShapedRecipe(String.format("chainsaw_head_%s", solidMaterial.toString()), - OreDictUnifier.get(toolPrefix, solidMaterial), - "SRS", "XhX", "SRS", - 'X', new UnificationEntry(OrePrefix.plate, solidMaterial), - 'S', new UnificationEntry(OrePrefix.plate, Materials.Steel), - 'R', new UnificationEntry(OrePrefix.ring, Materials.Steel)); + OreDictUnifier.get(toolPrefix, solidMaterial), + "SRS", "XhX", "SRS", + 'X', new UnificationEntry(OrePrefix.plate, solidMaterial), + 'S', new UnificationEntry(OrePrefix.plate, Materials.Steel), + 'R', new UnificationEntry(OrePrefix.ring, Materials.Steel)); } public static void processWrenchHead(OrePrefix toolPrefix, SolidMaterial solidMaterial) { processSimpleElectricToolHead(toolPrefix, solidMaterial, new MetaToolValueItem[]{MetaItems.WRENCH_LV, MetaItems.WRENCH_MV, MetaItems.WRENCH_HV}); ModHandler.addShapedRecipe(String.format("wrench_head_%s", solidMaterial.toString()), - OreDictUnifier.get(OrePrefix.toolHeadWrench, solidMaterial), - "hXW", "XRX", "WXd", - 'X', new UnificationEntry(OrePrefix.plate, solidMaterial), - 'R', new UnificationEntry(OrePrefix.ring, Materials.Steel), - 'W', new UnificationEntry(OrePrefix.screw, Materials.Steel)); + OreDictUnifier.get(OrePrefix.toolHeadWrench, solidMaterial), + "hXW", "XRX", "WXd", + 'X', new UnificationEntry(OrePrefix.plate, solidMaterial), + 'R', new UnificationEntry(OrePrefix.ring, Materials.Steel), + 'W', new UnificationEntry(OrePrefix.screw, Materials.Steel)); } public static void processBuzzSawHead(OrePrefix toolPrefix, SolidMaterial solidMaterial) { processSimpleElectricToolHead(toolPrefix, solidMaterial, new MetaToolValueItem[]{MetaItems.BUZZSAW}); ModHandler.addShapedRecipe(String.format("buzzsaw_head_%s", solidMaterial.toString()), - OreDictUnifier.get(OrePrefix.toolHeadBuzzSaw, solidMaterial), - "wXh", "X X", "fXx", - 'X', new UnificationEntry(OrePrefix.plate, solidMaterial)); + OreDictUnifier.get(OrePrefix.toolHeadBuzzSaw, solidMaterial), + "wXh", "X X", "fXx", + 'X', new UnificationEntry(OrePrefix.plate, solidMaterial)); } public static void processScrewdriverHead(OrePrefix toolPrefix, Material material) { @@ -291,9 +265,9 @@ public static void processScrewdriverHead(OrePrefix toolPrefix, Material materia SolidMaterial solidMaterial = (SolidMaterial) material; processSimpleElectricToolHead(toolPrefix, solidMaterial, new MetaToolValueItem[]{MetaItems.SCREWDRIVER_LV}); ModHandler.addShapedRecipe(String.format("screwdriver_head_%s", solidMaterial.toString()), - OreDictUnifier.get(OrePrefix.toolHeadScrewdriver, solidMaterial), - "fX", "Xh", - 'X', new UnificationEntry(OrePrefix.stick, solidMaterial)); + OreDictUnifier.get(OrePrefix.toolHeadScrewdriver, solidMaterial), + "fX", "Xh", + 'X', new UnificationEntry(OrePrefix.stick, solidMaterial)); } public static void addSimpleToolRecipe(OrePrefix toolPrefix, SolidMaterial solidMaterial, MetaToolValueItem toolItem, UnificationEntry plate, UnificationEntry ingot, Object[] recipe) { @@ -314,8 +288,8 @@ public static void addSimpleToolRecipe(OrePrefix toolPrefix, SolidMaterial solid } ModHandler.addShapedRecipe( - String.format("head_%s_%s", toolPrefix.name(), solidMaterial.toString()), - OreDictUnifier.get(toolPrefix, solidMaterial), recipe); + String.format("head_%s_%s", toolPrefix.name(), solidMaterial.toString()), + OreDictUnifier.get(toolPrefix, solidMaterial), recipe); } public static void processAxeHead(OrePrefix toolPrefix, SolidMaterial solidMaterial) { @@ -324,12 +298,12 @@ public static void processAxeHead(OrePrefix toolPrefix, SolidMaterial solidMater int voltageMultiplier = getVoltageMultiplier(solidMaterial); RecipeMaps.EXTRUDER_RECIPES.recipeBuilder() - .input(OrePrefix.ingot, solidMaterial, 3) - .notConsumable(MetaItems.SHAPE_EXTRUDER_AXE) - .outputs(OreDictUnifier.get(toolPrefix, solidMaterial)) - .duration((int) solidMaterial.getAverageMass() * 3) - .EUt(8 * voltageMultiplier) - .buildAndRegister(); + .input(OrePrefix.ingot, solidMaterial, 3) + .notConsumable(MetaItems.SHAPE_EXTRUDER_AXE) + .outputs(OreDictUnifier.get(toolPrefix, solidMaterial)) + .duration((int) solidMaterial.getAverageMass() * 3) + .EUt(8 * voltageMultiplier) + .buildAndRegister(); } @@ -339,12 +313,12 @@ public static void processHoeHead(OrePrefix toolPrefix, SolidMaterial solidMater int voltageMultiplier = getVoltageMultiplier(solidMaterial); RecipeMaps.EXTRUDER_RECIPES.recipeBuilder() - .input(OrePrefix.ingot, solidMaterial, 3) - .notConsumable(MetaItems.SHAPE_EXTRUDER_HOE) - .outputs(OreDictUnifier.get(toolPrefix, solidMaterial)) - .duration((int) solidMaterial.getAverageMass() * 3) - .EUt(8 * voltageMultiplier) - .buildAndRegister(); + .input(OrePrefix.ingot, solidMaterial, 3) + .notConsumable(MetaItems.SHAPE_EXTRUDER_HOE) + .outputs(OreDictUnifier.get(toolPrefix, solidMaterial)) + .duration((int) solidMaterial.getAverageMass() * 3) + .EUt(8 * voltageMultiplier) + .buildAndRegister(); } public static void processPickaxeHead(OrePrefix toolPrefix, SolidMaterial solidMaterial) { @@ -353,12 +327,12 @@ public static void processPickaxeHead(OrePrefix toolPrefix, SolidMaterial solidM int voltageMultiplier = getVoltageMultiplier(solidMaterial); RecipeMaps.EXTRUDER_RECIPES.recipeBuilder() - .input(OrePrefix.ingot, solidMaterial, 3) - .notConsumable(MetaItems.SHAPE_EXTRUDER_PICKAXE) - .outputs(OreDictUnifier.get(toolPrefix, solidMaterial)) - .duration((int) solidMaterial.getAverageMass() * 3) - .EUt(8 * voltageMultiplier) - .buildAndRegister(); + .input(OrePrefix.ingot, solidMaterial, 3) + .notConsumable(MetaItems.SHAPE_EXTRUDER_PICKAXE) + .outputs(OreDictUnifier.get(toolPrefix, solidMaterial)) + .duration((int) solidMaterial.getAverageMass() * 3) + .EUt(8 * voltageMultiplier) + .buildAndRegister(); } @@ -368,12 +342,12 @@ public static void processSawHead(OrePrefix toolPrefix, SolidMaterial solidMater int voltageMultiplier = getVoltageMultiplier(solidMaterial); RecipeMaps.EXTRUDER_RECIPES.recipeBuilder() - .input(OrePrefix.ingot, solidMaterial, 2) - .notConsumable(MetaItems.SHAPE_EXTRUDER_SAW) - .outputs(OreDictUnifier.get(OrePrefix.toolHeadSaw, solidMaterial)) - .duration((int) solidMaterial.getAverageMass() * 2) - .EUt(8 * voltageMultiplier) - .buildAndRegister(); + .input(OrePrefix.ingot, solidMaterial, 2) + .notConsumable(MetaItems.SHAPE_EXTRUDER_SAW) + .outputs(OreDictUnifier.get(OrePrefix.toolHeadSaw, solidMaterial)) + .duration((int) solidMaterial.getAverageMass() * 2) + .EUt(8 * voltageMultiplier) + .buildAndRegister(); } public static void processSenseHead(OrePrefix toolPrefix, SolidMaterial solidMaterial) { @@ -386,12 +360,12 @@ public static void processShovelHead(OrePrefix toolPrefix, SolidMaterial solidMa int voltageMultiplier = getVoltageMultiplier(solidMaterial); RecipeMaps.EXTRUDER_RECIPES.recipeBuilder() - .input(OrePrefix.ingot, solidMaterial) - .notConsumable(MetaItems.SHAPE_EXTRUDER_SHOVEL) - .outputs(OreDictUnifier.get(toolPrefix, solidMaterial)) - .duration((int) solidMaterial.getAverageMass()) - .EUt(8 * voltageMultiplier) - .buildAndRegister(); + .input(OrePrefix.ingot, solidMaterial) + .notConsumable(MetaItems.SHAPE_EXTRUDER_SHOVEL) + .outputs(OreDictUnifier.get(toolPrefix, solidMaterial)) + .duration((int) solidMaterial.getAverageMass()) + .EUt(8 * voltageMultiplier) + .buildAndRegister(); } public static void processSwordHead(OrePrefix toolPrefix, SolidMaterial solidMaterial) { @@ -400,12 +374,12 @@ public static void processSwordHead(OrePrefix toolPrefix, SolidMaterial solidMat int voltageMultiplier = getVoltageMultiplier(solidMaterial); RecipeMaps.EXTRUDER_RECIPES.recipeBuilder() - .input(OrePrefix.ingot, solidMaterial, 2) - .notConsumable(MetaItems.SHAPE_EXTRUDER_SWORD) - .outputs(OreDictUnifier.get(toolPrefix, solidMaterial)) - .duration((int) solidMaterial.getAverageMass() * 2) - .EUt(8 * voltageMultiplier) - .buildAndRegister(); + .input(OrePrefix.ingot, solidMaterial, 2) + .notConsumable(MetaItems.SHAPE_EXTRUDER_SWORD) + .outputs(OreDictUnifier.get(toolPrefix, solidMaterial)) + .duration((int) solidMaterial.getAverageMass() * 2) + .EUt(8 * voltageMultiplier) + .buildAndRegister(); } public static void processSpadeHead(OrePrefix toolPrefix, SolidMaterial solidMaterial) { @@ -419,22 +393,22 @@ public static void processHammerHead(OrePrefix toolPrefix, SolidMaterial solidMa SolidMaterial handleMaterial = Materials.Wood; if (!solidMaterial.hasFlag(NO_WORKING)) { ModHandler.addShapedRecipe(String.format("hammer_%s", solidMaterial.toString()), - MetaItems.HARD_HAMMER.getStackForm(solidMaterial), - "XX ", "XXS", "XX ", - 'X', new UnificationEntry(OrePrefix.ingot, solidMaterial), - 'S', new UnificationEntry(OrePrefix.stick, handleMaterial)); + MetaItems.HARD_HAMMER.getStackForm(solidMaterial), + "XX ", "XXS", "XX ", + 'X', new UnificationEntry(OrePrefix.ingot, solidMaterial), + 'S', new UnificationEntry(OrePrefix.stick, handleMaterial)); } if (!solidMaterial.hasFlag(DustMaterial.MatFlags.NO_SMASHING)) { int voltageMultiplier = getVoltageMultiplier(solidMaterial); RecipeMaps.EXTRUDER_RECIPES.recipeBuilder() - .input(OrePrefix.ingot, solidMaterial, 6) - .notConsumable(MetaItems.SHAPE_EXTRUDER_HAMMER) - .outputs(OreDictUnifier.get(toolPrefix, solidMaterial)) - .duration((int) solidMaterial.getAverageMass() * 6) - .EUt(8 * voltageMultiplier) - .buildAndRegister(); + .input(OrePrefix.ingot, solidMaterial, 6) + .notConsumable(MetaItems.SHAPE_EXTRUDER_HAMMER) + .outputs(OreDictUnifier.get(toolPrefix, solidMaterial)) + .duration((int) solidMaterial.getAverageMass() * 6) + .EUt(8 * voltageMultiplier) + .buildAndRegister(); } } @@ -443,27 +417,27 @@ public static void processFileHead(OrePrefix toolPrefix, SolidMaterial solidMate if (solidMaterial instanceof IngotMaterial) { SolidMaterial handleMaterial = Materials.Wood; ModHandler.addShapedRecipe(String.format("file_%s", solidMaterial), - MetaItems.FILE.getStackForm(solidMaterial), - "P", "P", "S", - 'P', new UnificationEntry(OrePrefix.plate, solidMaterial), - 'S', new UnificationEntry(OrePrefix.stick, handleMaterial)); + MetaItems.FILE.getStackForm(solidMaterial), + "P", "P", "S", + 'P', new UnificationEntry(OrePrefix.plate, solidMaterial), + 'S', new UnificationEntry(OrePrefix.stick, handleMaterial)); } int voltageMultiplier = getVoltageMultiplier(solidMaterial); RecipeMaps.EXTRUDER_RECIPES.recipeBuilder() - .input(OrePrefix.ingot, solidMaterial, 2) - .notConsumable(MetaItems.SHAPE_EXTRUDER_FILE) - .outputs(OreDictUnifier.get(toolPrefix, solidMaterial)) - .duration((int) solidMaterial.getAverageMass() * 2) - .EUt(8 * voltageMultiplier) - .buildAndRegister(); + .input(OrePrefix.ingot, solidMaterial, 2) + .notConsumable(MetaItems.SHAPE_EXTRUDER_FILE) + .outputs(OreDictUnifier.get(toolPrefix, solidMaterial)) + .duration((int) solidMaterial.getAverageMass() * 2) + .EUt(8 * voltageMultiplier) + .buildAndRegister(); } private static int getVoltageMultiplier(Material material) { return material instanceof IngotMaterial && ((IngotMaterial) material) - .blastFurnaceTemperature >= 2800 ? 32 : 8; + .blastFurnaceTemperature >= 2800 ? 32 : 8; } } diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index 4126be976b5..341d7434df8 100644 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -91,7 +91,8 @@ metaitem.dynamite.name=Dynamite metaitem.power_unit.lv.name=Power Unit (LV) metaitem.power_unit.mv.name=Power Unit (MV) metaitem.power_unit.hv.name=Power Unit (HV) -metaitem.jackhammer_base.name=JackHammer Base (HV) +metaitem.power_unit.ev.name=Power Unit (EV) +metaitem.power_unit.iv.name=Power Unit (IV) metaitem.nano_saber.name=Nano Saber metaitem.nano_saber.tooltip=Ryujin no ken wo kurae! metaitem.energy_field_projector.name=Energy Field Projector @@ -782,6 +783,10 @@ metaitem.tool.rolling_pin.name=%s Rolling Pin metaitem.tool.drill.lv.name=%s Drill (LV) metaitem.tool.drill.mv.name=%s Drill (MV) metaitem.tool.drill.hv.name=%s Drill (HV) +metaitem.tool.drill.ev.name=%s Drill (EV) +metaitem.tool.drill.iv.name=%s Drill (IV) +metaitem.tool.mining_hammer.name=%s Mining Hammer +metaitem.tool.mining_hammer.tooltip=Mines a 3x3 area at once (unless you're crouching) metaitem.tool.chainsaw.lv.name=%s Chainsaw (LV) metaitem.tool.chainsaw.lv.tooltip=Can also harvest Ice metaitem.tool.chainsaw.mv.name=%s Chainsaw (MV) @@ -794,8 +799,6 @@ metaitem.tool.wrench.mv.name=%s Wrench (MV) metaitem.tool.wrench.mv.tooltip=Hold Leftclick to dismantle Machines metaitem.tool.wrench.hv.name=%s Wrench (HV) metaitem.tool.wrench.hv.tooltip=Hold Leftclick to dismantle Machines -metaitem.tool.jackhammer.name=%s JackHammer (HV) -metaitem.tool.jackhammer.tooltip=Breaks Rocks into pieces metaitem.tool.buzzsaw.name=%s Buzzsaw (LV) metaitem.tool.buzzsaw.tooltip=Not suitable for harvesting Blocks metaitem.tool.screwdriver.lv.name=%s Screwdriver (LV) @@ -806,10 +809,11 @@ metaitem.turbine_rotor.name=%s Turbine Rotor metaitem.turbine_rotor.tooltip=Turbine Rotors for your power station metaitem.tool.magnifying_glass.name=%s Magnifying Glass -metaitem.jack_hammer.mode.three_by_three=3x3 Panel -metaitem.jack_hammer.mode.vertical_line=Vertical Line -metaitem.jack_hammer.mode.horizontal_line=Horizontal Line -metaitem.jack_hammer.mode.single_block=Single Block +metaitem.drill.mode.three_cube=3x3x3 Cube +metaitem.drill.mode.five_cube=5x5x5 Cube +metaitem.drill.mode.seven_cube=7x7x7 Cube +metaitem.drill.mode.nine_cube=9x9x9 Cube +metaitem.drill.mode.single_block=Single Block metaitem.behavior.mode_switch.tooltip=Use while sneaking to switch mode metaitem.behavior.mode_switch.mode_switched=§eMode Set to: %s @@ -3053,8 +3057,6 @@ achievement.brrrr=Brrrr... achievement.brrrr.desc=Craft a Chainsaw(LV) achievement.highpowerdrill=High Power Drill achievement.highpowerdrill.desc=Craft a Drill(HV) -achievement.hammertime=Hammertime -achievement.hammertime.desc=Craft a Jackhammer achievement.repair=Repairs achievement.repair.desc=Craft a Disassembler achievement.unitool=Universal Tool diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/power_unit.ev.json b/src/main/resources/assets/gregtech/models/item/metaitems/power_unit.ev.json new file mode 100644 index 00000000000..39efd609071 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/power_unit.ev.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/tools/power_unit_ev" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/power_unit.iv.json b/src/main/resources/assets/gregtech/models/item/metaitems/power_unit.iv.json new file mode 100644 index 00000000000..e6505968e01 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/power_unit.iv.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/tools/power_unit_iv" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/tools/drill.ev.json b/src/main/resources/assets/gregtech/models/item/tools/drill.ev.json new file mode 100644 index 00000000000..0525d4cb155 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/tools/drill.ev.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "gregtech:items/tools/power_unit_ev", + "layer1": "gregtech:items/tools/drill" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/tools/drill.iv.json b/src/main/resources/assets/gregtech/models/item/tools/drill.iv.json new file mode 100644 index 00000000000..176ba5ee5d1 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/tools/drill.iv.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "gregtech:items/tools/power_unit_iv", + "layer1": "gregtech:items/tools/drill" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/tools/mining_hammer.json b/src/main/resources/assets/gregtech/models/item/tools/mining_hammer.json new file mode 100644 index 00000000000..f531f5a1a94 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/tools/mining_hammer.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "gregtech:items/tools/mining_hammer_handle", + "layer1": "gregtech:items/tools/mining_hammer_head" + } +} diff --git a/src/main/resources/assets/gregtech/textures/items/tools/jackhammer.png b/src/main/resources/assets/gregtech/textures/items/tools/jackhammer.png deleted file mode 100644 index f8941e41828..00000000000 Binary files a/src/main/resources/assets/gregtech/textures/items/tools/jackhammer.png and /dev/null differ diff --git a/src/main/resources/assets/gregtech/textures/items/tools/jackhammer_base.png b/src/main/resources/assets/gregtech/textures/items/tools/jackhammer_base.png deleted file mode 100644 index f6d0c35ee4a..00000000000 Binary files a/src/main/resources/assets/gregtech/textures/items/tools/jackhammer_base.png and /dev/null differ diff --git a/src/main/resources/assets/gregtech/textures/items/tools/mining_hammer_handle.png b/src/main/resources/assets/gregtech/textures/items/tools/mining_hammer_handle.png new file mode 100644 index 00000000000..7dd23ab9888 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/tools/mining_hammer_handle.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/tools/mining_hammer_head.png b/src/main/resources/assets/gregtech/textures/items/tools/mining_hammer_head.png new file mode 100644 index 00000000000..2273d752dd5 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/tools/mining_hammer_head.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/tools/power_unit_ev.png b/src/main/resources/assets/gregtech/textures/items/tools/power_unit_ev.png new file mode 100644 index 00000000000..bddd9d1ee0d Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/tools/power_unit_ev.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/tools/power_unit_hv.png b/src/main/resources/assets/gregtech/textures/items/tools/power_unit_hv.png index bddd9d1ee0d..b2be009b737 100644 Binary files a/src/main/resources/assets/gregtech/textures/items/tools/power_unit_hv.png and b/src/main/resources/assets/gregtech/textures/items/tools/power_unit_hv.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/tools/power_unit_iv.png b/src/main/resources/assets/gregtech/textures/items/tools/power_unit_iv.png new file mode 100644 index 00000000000..e64eea13649 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/tools/power_unit_iv.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/tools/power_unit_lv.png b/src/main/resources/assets/gregtech/textures/items/tools/power_unit_lv.png index d47e4353a94..a7bf5602f7e 100644 Binary files a/src/main/resources/assets/gregtech/textures/items/tools/power_unit_lv.png and b/src/main/resources/assets/gregtech/textures/items/tools/power_unit_lv.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/tools/power_unit_mv.png b/src/main/resources/assets/gregtech/textures/items/tools/power_unit_mv.png index b2be009b737..d47e4353a94 100644 Binary files a/src/main/resources/assets/gregtech/textures/items/tools/power_unit_mv.png and b/src/main/resources/assets/gregtech/textures/items/tools/power_unit_mv.png differ