From 69b9ea9a7d8cf482c383e30f61a251313896fb89 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 4 Aug 2025 19:18:41 +0200 Subject: [PATCH] consumed by the sludge --- changelog | 21 ++- gradle.properties | 2 +- src/main/java/com/hbm/blocks/ModBlocks.java | 12 +- .../com/hbm/inventory/OreDictManager.java | 7 +- .../gui/GUIScreenRecipeSelector.java | 4 +- .../inventory/material/MaterialShapes.java | 1 - .../java/com/hbm/inventory/material/Mats.java | 20 +-- .../inventory/recipes/AssemblerRecipes.java | 4 +- .../recipes/AssemblyMachineRecipes.java | 43 ++--- .../recipes/BlastFurnaceRecipes.java | 6 +- .../inventory/recipes/CentrifugeRecipes.java | 27 --- .../hbm/inventory/recipes/PUREXRecipes.java | 157 +++++++++++++----- .../recipes/loader/GenericRecipe.java | 6 + .../recipes/loader/GenericRecipes.java | 15 ++ src/main/java/com/hbm/items/ModItems.java | 7 +- .../java/com/hbm/items/special/ItemDrop.java | 2 +- .../com/hbm/items/special/ItemExpensive.java | 22 +++ .../hbm/items/weapon/sedna/ItemGunBaseNT.java | 3 + .../sedna/factory/GunFactoryClient.java | 4 +- .../weapon/sedna/factory/XFactory10ga.java | 11 ++ .../weapon/sedna/mods/WeaponModManager.java | 2 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 3 +- src/main/java/com/hbm/main/MainRegistry.java | 1 + .../java/com/hbm/main/ModEventHandler.java | 6 + .../java/com/hbm/main/ResourceManager.java | 1 + .../machine/ModuleMachineAssembler.java | 5 +- .../hbm/module/machine/ModuleMachineBase.java | 35 +++- .../machine/ModuleMachineChemplant.java | 6 +- .../module/machine/ModuleMachinePUREX.java | 6 +- .../java/com/hbm/packet/PacketDispatcher.java | 2 + .../packet/toclient/HeldItemNBTPacket.java | 68 ++++++++ .../item/weapon/sedna/ItemRenderSexy.java | 11 +- .../machine/TileEntityMachinePUREX.java | 40 +++-- .../rbmk/TileEntityRBMKControlAuto.java | 2 + src/main/resources/assets/hbm/lang/de_DE.lang | 12 ++ src/main/resources/assets/hbm/lang/en_US.lang | 12 ++ .../textures/models/weapons/sexy_heretic.png | Bin 0 -> 5675 bytes .../models/weapons/whiskey (Kopie).png | Bin 37269 -> 0 bytes .../hbm/textures/models/weapons/whiskey.xcf | Bin 267625 -> 0 bytes 40 files changed, 430 insertions(+), 158 deletions(-) create mode 100644 src/main/java/com/hbm/items/special/ItemExpensive.java create mode 100644 src/main/java/com/hbm/packet/toclient/HeldItemNBTPacket.java create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/sexy_heretic.png delete mode 100644 src/main/resources/assets/hbm/textures/models/weapons/whiskey (Kopie).png delete mode 100644 src/main/resources/assets/hbm/textures/models/weapons/whiskey.xcf diff --git a/changelog b/changelog index 8e403af29..b819e17ab 100644 --- a/changelog +++ b/changelog @@ -7,6 +7,7 @@ * Rebar * When hooked up to liquid concrete using pipes, will fill to create reinforced concrete * Fills bottom to top, so connect the pipes to the top + * The rendering on this is still experimental, so don't overdo it with how large of an area you're casting * Rebar placer * Can be configured with different types of concrete, reinforced or not, or even colored * Rebar created with the rebar placer will remember its type and assume it when being filled with liquid concrete @@ -15,6 +16,7 @@ * Handles all the nuclear fuel reprocessing that was previously done by the standard centrifuge * All reprocessing recipes now require both kerosene and nitric acid * Also handles the vitrification recipes and the thorium salt reprocessing from the chemical plant + * Comes with new schrabidium extraction recipes from MEP/MEN fuels using schrabidic acid (yield is twice the schrabidium cost for acid used) ## Changed * The alternate recipes for nitric acid and xenon gas in the chemical plant now require blueprints @@ -25,10 +27,27 @@ * Biogas can now be cracked into aromatics and petroleum gas * Custom missile part recipes have been added to the new assembler * Mini nukes are now made from weapon steel instead of regular steel +* Meteorite ingots are now made from meteorite powder, not blocks +* Starmetal now requires meteorite ingots instead of blocks +* Added auto switch groups + * The new standardized processing machines (assembler, chemplant, purex) can now have recipes that are grouped + * Recipes in groups will accept non-recipe items, if the item is used in another recipe from that same group + * When this happens, the recipe switches automatically, if possible + * This means that many PUREX recycling recipes and the ingot to plate recipes don't need dedicated machines for every single recipe, rather only one for that auto switch group +* The tooltip of the chosen recipe on the recipe selector now renders in the bottom left corner instead of following the mouse, preventing an issue where the tooltip is cut off on larger GUI scales +* Expensive mode has been changed + * Instead of using heavy components for most things, there's now "expensive" items that are used by many assembler recipes + * "Expensive" items replace some of the microcrafting that's part of the recipe, meaning that expensive mode recipes are generally simpler (but require way more materials) + * All heavy components have been annihilated and any recipes that may still use them (e.g. from old configs) default to using cast plates instead +* Removed the assembly factory's recipe, as it still uses the deprecated recipe set + * A new assembly factory will be added soon +* All recently deprecated machines have been removed from the creative tabs ## Fixed * Fixed a few assembler recipes using the old crafting numbers which sometimes exceed the stack limit * As an extra safeguard, the recipe loader now throws an exception if that happens * Fixed dupe caused by the breeding reactor * Fixed a potential crash caused by a change done to tile entity proxies in relation to EnergyControl -* Fixed the assembler achievement still using the old one \ No newline at end of file +* Fixed the assembler achievement still using the old one +* Fixed the RBMK auto control rod's function not syncing to the client properly +* Fixed crash caused by new standardized machine recipes with chance-based output when they output nothing diff --git a/gradle.properties b/gradle.properties index 70b2eaeea..ca80c122b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=5397 +mod_build_number=5412 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 8e08eac42..99824c4d8 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1006,14 +1006,14 @@ public class ModBlocks { @Deprecated public static Block machine_assembler; public static Block machine_assembly_machine; - public static Block machine_assemfac; + @Deprecated public static Block machine_assemfac; public static Block machine_arc_welder; public static Block machine_soldering_station; public static Block machine_arc_furnace; @Deprecated public static Block machine_chemplant; public static Block machine_chemical_plant; - public static Block machine_chemfac; + @Deprecated public static Block machine_chemfac; public static Block machine_chemical_factory; public static Block machine_purex; public static Block machine_mixer; @@ -2237,14 +2237,14 @@ public class ModBlocks { machine_ore_slopper = new MachineOreSlopper().setBlockName("machine_ore_slopper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_mining_laser = new MachineMiningLaser(Material.iron).setBlockName("machine_mining_laser").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_mining_laser"); barricade = new BlockNoDrop(Material.sand).setBlockName("barricade").setHardness(1.0F).setResistance(2.5F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barricade"); - machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_assembler"); + machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(30.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":machine_assembler"); machine_assembly_machine = new MachineAssemblyMachine(Material.iron).setBlockName("machine_assembly_machine").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_assemfac = new MachineAssemfac(Material.iron).setBlockName("machine_assemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_assemfac = new MachineAssemfac(Material.iron).setBlockName("machine_assemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_arc_welder = new MachineArcWelder(Material.iron).setBlockName("machine_arc_welder").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_soldering_station = new MachineSolderingStation(Material.iron).setBlockName("machine_soldering_station").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_chemplant = new MachineChemplant(Material.iron).setBlockName("machine_chemplant").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_chemplant = new MachineChemplant(Material.iron).setBlockName("machine_chemplant").setHardness(5.0F).setResistance(30.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_chemical_plant = new MachineChemicalPlant(Material.iron).setBlockName("machine_chemical_plant").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_chemfac = new MachineChemfac(Material.iron).setBlockName("machine_chemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_chemfac = new MachineChemfac(Material.iron).setBlockName("machine_chemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_chemical_factory = new MachineChemicalFactory(Material.iron).setBlockName("machine_chemical_factory").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_purex = new MachinePUREX(Material.iron).setBlockName("machine_purex").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_mixer = new MachineMixer(Material.iron).setBlockName("machine_mixer").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 7d4a9e0d2..3e85fdfb4 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -552,7 +552,6 @@ public class OreDictManager { if(mat.smeltable == SmeltingBehavior.SMELTABLE) { if(mat.autogen.contains(MaterialShapes.CASTPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.CASTPLATE.name() + name, new ItemStack(ModItems.plate_cast, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.WELDEDPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WELDEDPLATE.name() + name, new ItemStack(ModItems.plate_welded, 1, mat.id)); - if(mat.autogen.contains(MaterialShapes.HEAVY_COMPONENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVY_COMPONENT.name() + name, new ItemStack(ModItems.heavy_component, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.DENSEWIRE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.DENSEWIRE.name() + name, new ItemStack(ModItems.wire_dense, 1, mat.id)); } if(mat.autogen.contains(MaterialShapes.BOLT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.BOLT.name() + name, new ItemStack(ModItems.bolt, 1, mat.id)); @@ -680,7 +679,7 @@ public class OreDictManager { ANY_RUBBER.addPrefix(INGOT, true); ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true).addPrefix(GRIP, true).addPrefix(STOCK, true); ANY_HARDPLASTIC.addPrefix(INGOT, true).addPrefix(STOCK, true).addPrefix(GRIP, true); - ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(CASTPLATE, true).addPrefix(WELDEDPLATE, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true) + ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(CASTPLATE, true).addPrefix(WELDEDPLATE, true).addPrefix(BLOCK, true) .addPrefix(LIGHTBARREL, true).addPrefix(HEAVYBARREL, true).addPrefix(LIGHTRECEIVER, true).addPrefix(HEAVYRECEIVER, true); ANY_BISMOIDBRONZE.addPrefix(INGOT, true).addPrefix(CASTPLATE, true).addPrefix(LIGHTBARREL, true).addPrefix(HEAVYBARREL, true).addPrefix(LIGHTRECEIVER, true).addPrefix(HEAVYRECEIVER, true); ANY_TAR.addPrefix(ANY, false); @@ -759,7 +758,7 @@ public class OreDictManager { public String plate() { return PLATE.name() + mats[0]; } public String plateCast() { return CASTPLATE.name() + mats[0]; } public String plateWelded() { return WELDEDPLATE.name() + mats[0]; } - public String heavyComp() { return HEAVY_COMPONENT.name() + mats[0]; } + @Deprecated public String heavyComp() { return WELDEDPLATE.name() + mats[0]; } public String wireFine() { return WIRE.name() + mats[0]; } public String wireDense() { return DENSEWIRE.name() + mats[0]; } public String shell() { return SHELL.name() + mats[0]; } @@ -1013,7 +1012,7 @@ public class OreDictManager { public String plate() { return PLATE.name() + groupName; } public String plateCast() { return CASTPLATE.name() + groupName; } public String plateWelded() { return WELDEDPLATE.name() + groupName; } - public String heavyComp() { return HEAVY_COMPONENT.name() + groupName; } + @Deprecated public String heavyComp() { return WELDEDPLATE.name() + groupName; } public String wireFine() { return WIRE.name() + groupName; } public String wireDense() { return DENSEWIRE.name() + groupName; } public String billet() { return BILLET.name() + groupName; } diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenRecipeSelector.java b/src/main/java/com/hbm/inventory/gui/GUIScreenRecipeSelector.java index 4a5e3bb83..244a2549b 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenRecipeSelector.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenRecipeSelector.java @@ -135,7 +135,7 @@ public class GUIScreenRecipeSelector extends GuiScreen { if(guiLeft + ix <= mouseX && guiLeft + ix + 18 > mouseX && guiTop + iy < mouseY && guiTop + iy + 18 >= mouseY) { GenericRecipe recipe = recipes.get(i); - this.func_146283_a(recipe.print(), mouseX, mouseY); + this.func_146283_a(recipe.print(), 0, 900); } } } @@ -143,7 +143,7 @@ public class GUIScreenRecipeSelector extends GuiScreen { if(guiLeft + 151 <= mouseX && guiLeft + 151 + 18 > mouseX && guiTop + 71 < mouseY && guiTop + 71 + 18 >= mouseY) { if(this.selection != null && this.recipeSet.recipeNameMap.containsKey(selection)) { GenericRecipe recipe = (GenericRecipe) this.recipeSet.recipeNameMap.get(selection); - this.func_146283_a(recipe.print(), mouseX, mouseY); + this.func_146283_a(recipe.print(), 0, 900); } } diff --git a/src/main/java/com/hbm/inventory/material/MaterialShapes.java b/src/main/java/com/hbm/inventory/material/MaterialShapes.java index 2f7de0461..ef44dd613 100644 --- a/src/main/java/com/hbm/inventory/material/MaterialShapes.java +++ b/src/main/java/com/hbm/inventory/material/MaterialShapes.java @@ -34,7 +34,6 @@ public class MaterialShapes { public static final MaterialShapes PIPE = new MaterialShapes(INGOT.quantity * 3, "ntmpipe"); public static final MaterialShapes QUART = new MaterialShapes(162); public static final MaterialShapes BLOCK = new MaterialShapes(INGOT.quantity * 9, "block"); - public static final MaterialShapes HEAVY_COMPONENT = new MaterialShapes(CASTPLATE.quantity * 256, "componentHeavy"); public static final MaterialShapes LIGHTBARREL = new MaterialShapes(INGOT.quantity * 3, "barrelLight"); public static final MaterialShapes HEAVYBARREL = new MaterialShapes(INGOT.quantity * 6, "barrelHeavy"); diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index 5a03bf288..3d923dd47 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -100,11 +100,11 @@ public class Mats { public static final NTMMaterial MAT_GHIORSIUM = makeSmeltable(12836, GH336, 0xF4EFE1, 0x2A3306, 0xC6C6A1).setAutogen(NUGGET, BILLET, BLOCK).m(); //Base metals - public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setAutogen(FRAGMENT, DUST, PLATE, DENSEWIRE, CASTPLATE, WELDEDPLATE, SHELL, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setAutogen(FRAGMENT, WIRE, DUST, PLATE, DENSEWIRE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setAutogen(FRAGMENT, WIRE, BOLT, DUST, DENSEWIRE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setAutogen(FRAGMENT, WIRE, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setAutogen(FRAGMENT, NUGGET, WIRE, BOLT, DUST, PLATE, CASTPLATE, PIPE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setAutogen(FRAGMENT, DUST, PLATE, DENSEWIRE, CASTPLATE, WELDEDPLATE, SHELL, BLOCK).m(); + public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setAutogen(FRAGMENT, WIRE, DUST, PLATE, DENSEWIRE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK).m(); + public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setAutogen(FRAGMENT, WIRE, BOLT, DUST, DENSEWIRE, CASTPLATE, WELDEDPLATE, BLOCK).m(); + public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setAutogen(FRAGMENT, WIRE, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK).m(); + public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setAutogen(FRAGMENT, NUGGET, WIRE, BOLT, DUST, PLATE, CASTPLATE, PIPE, BLOCK).m(); public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, BI, 0xB200FF, 0xB200FF, 0xB200FF).setAutogen(FRAGMENT, NUGGET, BILLET, DUST, BLOCK).m(); public static final NTMMaterial MAT_ARSENIC = makeSmeltable(3300, AS, 0x6CBABA, 0x242525, 0x558080).setAutogen(NUGGET).m(); public static final NTMMaterial MAT_TANTALIUM = makeSmeltable(7300, TA, 0xFFFFFF, 0x1D1D36, 0xA89B74).setAutogen(NUGGET, DUST, BLOCK).m(); @@ -135,15 +135,15 @@ public class Mats { public static final NTMMaterial MAT_OSMIRIDIUM = makeSmeltable(7699, OSMIRIDIUM, 0xDBE3EF, 0x7891BE, 0xACBDD9).setAutogen(NUGGET, CASTPLATE, WELDEDPLATE).m(); //Alloys - public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setAutogen(DUSTTINY, BOLT, WIRE, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, GRIP).m(); + public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setAutogen(DUSTTINY, BOLT, WIRE, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, GRIP).m(); public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setAutogen(WIRE, DUST, DENSEWIRE, BLOCK).m(); - public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setAutogen(WIRE, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setAutogen(WIRE, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK).m(); public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x82A59C, 0x06281E, 0x42665C).setAutogen(BOLT, DUST, PLATE, CASTPLATE, PIPE, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, GRIP).m(); - public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setAutogen(DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, STOCK, GRIP).m(); + public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setAutogen(DUST, CASTPLATE, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, STOCK, GRIP).m(); public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setAutogen(DUST, DENSEWIRE, BLOCK).m(); public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setAutogen(CASTPLATE, HEAVYBARREL, HEAVYRECEIVER).m(); - public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setAutogen(DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m(); - public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setAutogen(CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m(); + public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setAutogen(DUST, CASTPLATE, WELDEDPLATE, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m(); + public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setAutogen(CASTPLATE, WELDEDPLATE, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m(); public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setAutogen(CASTPLATE, LIGHTBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m(); public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setAutogen(CASTPLATE, LIGHTBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m(); public static final NTMMaterial MAT_BSCCO = makeSmeltable(_AS + 18, BSCCO, 0x767BF1, 0x000000, 0x5E62C0).setAutogen(DENSEWIRE).m(); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 476cb5e31..f3a8f3f2e 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -43,7 +43,7 @@ import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -public class AssemblerRecipes extends SerializableRecipe { +@Deprecated public class AssemblerRecipes extends SerializableRecipe { public static HashMap recipes = new HashMap(); public static List recipeList = new ArrayList(); @@ -54,7 +54,7 @@ public class AssemblerRecipes extends SerializableRecipe { @Override public void registerDefaults() { - boolean exp = GeneralConfig.enableExpensiveMode; + boolean exp = false;//GeneralConfig.enableExpensiveMode; makeRecipe(new ComparableStack(ModItems.plate_iron, 2), new AStack[] {new OreDictStack(IRON.ingot(), 3), },30); makeRecipe(new ComparableStack(ModItems.plate_gold, 2), new AStack[] {new OreDictStack(GOLD.ingot(), 3), },30); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index a99236b60..b0efb41f8 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -57,20 +57,21 @@ public class AssemblyMachineRecipes extends GenericRecipes { public void registerDefaults() { // plates and ingots - this.register(new GenericRecipe("ass.plateiron").setup(60, 100).outputItems(new ItemStack(ModItems.plate_iron, 1)).inputItems(new OreDictStack(IRON.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates")); - this.register(new GenericRecipe("ass.plategold").setup(60, 100).outputItems(new ItemStack(ModItems.plate_gold, 1)).inputItems(new OreDictStack(GOLD.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates")); - this.register(new GenericRecipe("ass.platetitanium").setup(60, 100).outputItems(new ItemStack(ModItems.plate_titanium, 1)).inputItems(new OreDictStack(TI.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates")); - this.register(new GenericRecipe("ass.platealu").setup(60, 100).outputItems(new ItemStack(ModItems.plate_aluminium, 1)).inputItems(new OreDictStack(AL.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates")); - this.register(new GenericRecipe("ass.platesteel").setup(60, 100).outputItems(new ItemStack(ModItems.plate_steel, 1)).inputItems(new OreDictStack(STEEL.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates")); - this.register(new GenericRecipe("ass.platelead").setup(60, 100).outputItems(new ItemStack(ModItems.plate_lead, 1)).inputItems(new OreDictStack(PB.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates")); - this.register(new GenericRecipe("ass.platecopper").setup(60, 100).outputItems(new ItemStack(ModItems.plate_copper, 1)).inputItems(new OreDictStack(CU.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates")); - this.register(new GenericRecipe("ass.platealloy").setup(60, 100).outputItems(new ItemStack(ModItems.plate_advanced_alloy, 1)).inputItems(new OreDictStack(ALLOY.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates")); - this.register(new GenericRecipe("ass.plateschrab").setup(60, 100).outputItems(new ItemStack(ModItems.plate_schrabidium, 1)).inputItems(new OreDictStack(SA326.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates")); - this.register(new GenericRecipe("ass.platecmb").setup(60, 100).outputItems(new ItemStack(ModItems.plate_combine_steel, 1)).inputItems(new OreDictStack(CMB.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates")); - this.register(new GenericRecipe("ass.plategunmetal").setup(60, 100).outputItems(new ItemStack(ModItems.plate_gunmetal, 1)).inputItems(new OreDictStack(GUNMETAL.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates")); - this.register(new GenericRecipe("ass.plateweaponsteel").setup(60, 100).outputItems(new ItemStack(ModItems.plate_weaponsteel, 1)).inputItems(new OreDictStack(WEAPONSTEEL.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates")); - this.register(new GenericRecipe("ass.platesaturnite").setup(60, 100).outputItems(new ItemStack(ModItems.plate_saturnite, 1)).inputItems(new OreDictStack(BIGMT.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates")); - this.register(new GenericRecipe("ass.platedura").setup(60, 100).outputItems(new ItemStack(ModItems.plate_dura_steel, 1)).inputItems(new OreDictStack(DURA.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates")); + String autoPlate = "autoswitch.plates"; + this.register(new GenericRecipe("ass.plateiron").setup(60, 100).outputItems(new ItemStack(ModItems.plate_iron, 1)).inputItems(new OreDictStack(IRON.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this)); + this.register(new GenericRecipe("ass.plategold").setup(60, 100).outputItems(new ItemStack(ModItems.plate_gold, 1)).inputItems(new OreDictStack(GOLD.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this)); + this.register(new GenericRecipe("ass.platetitanium").setup(60, 100).outputItems(new ItemStack(ModItems.plate_titanium, 1)).inputItems(new OreDictStack(TI.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this)); + this.register(new GenericRecipe("ass.platealu").setup(60, 100).outputItems(new ItemStack(ModItems.plate_aluminium, 1)).inputItems(new OreDictStack(AL.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this)); + this.register(new GenericRecipe("ass.platesteel").setup(60, 100).outputItems(new ItemStack(ModItems.plate_steel, 1)).inputItems(new OreDictStack(STEEL.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this)); + this.register(new GenericRecipe("ass.platelead").setup(60, 100).outputItems(new ItemStack(ModItems.plate_lead, 1)).inputItems(new OreDictStack(PB.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this)); + this.register(new GenericRecipe("ass.platecopper").setup(60, 100).outputItems(new ItemStack(ModItems.plate_copper, 1)).inputItems(new OreDictStack(CU.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this)); + this.register(new GenericRecipe("ass.platealloy").setup(60, 100).outputItems(new ItemStack(ModItems.plate_advanced_alloy, 1)).inputItems(new OreDictStack(ALLOY.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this)); + this.register(new GenericRecipe("ass.plateschrab").setup(60, 100).outputItems(new ItemStack(ModItems.plate_schrabidium, 1)).inputItems(new OreDictStack(SA326.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this)); + this.register(new GenericRecipe("ass.platecmb").setup(60, 100).outputItems(new ItemStack(ModItems.plate_combine_steel, 1)).inputItems(new OreDictStack(CMB.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this)); + this.register(new GenericRecipe("ass.plategunmetal").setup(60, 100).outputItems(new ItemStack(ModItems.plate_gunmetal, 1)).inputItems(new OreDictStack(GUNMETAL.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this)); + this.register(new GenericRecipe("ass.plateweaponsteel").setup(60, 100).outputItems(new ItemStack(ModItems.plate_weaponsteel, 1)).inputItems(new OreDictStack(WEAPONSTEEL.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this)); + this.register(new GenericRecipe("ass.platesaturnite").setup(60, 100).outputItems(new ItemStack(ModItems.plate_saturnite, 1)).inputItems(new OreDictStack(BIGMT.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this)); + this.register(new GenericRecipe("ass.platedura").setup(60, 100).outputItems(new ItemStack(ModItems.plate_dura_steel, 1)).inputItems(new OreDictStack(DURA.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this)); this.register(new GenericRecipe("ass.platemixed").setup(50, 100).outputItems(new ItemStack(ModItems.plate_mixed, 4)) .inputItems(new OreDictStack(ALLOY.plate(), 2), new OreDictStack(OreDictManager.getReflector(), 1), new OreDictStack(BIGMT.plate(), 1))); this.register(new GenericRecipe("ass.dalekanium").setup(200, 100).outputItems(new ItemStack(ModItems.plate_dalekanium, 1)) @@ -211,7 +212,10 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.motor, 2))); this.register(new GenericRecipe("ass.chemplant").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_chemical_plant, 1)) .inputItems(new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.pipe(), 2), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.coil_tungsten, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.pipe(), 2), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.coil_tungsten, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.pipe(), 2), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.coil_tungsten, 2), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ANALOG))); + this.register(new GenericRecipe("ass.purex").setup(300, 100).outputItems(new ItemStack(ModBlocks.machine_purex, 1)) + .inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(RUBBER.pipe(), 8), new OreDictStack(PB.plateCast(), 4), new ComparableStack(ModItems.motor_desh, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC)) + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.LEAD_PLATING), new OreDictStack(STEEL.shell(), 4), new OreDictStack(RUBBER.pipe(), 12), new ComparableStack(ModItems.motor_desh, 3), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.CIRCUIT))); this.register(new GenericRecipe("ass.centrifuge").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_centrifuge, 1)) .inputItems(new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG)) .inputItemsEx(new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.plateCast(), 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG))); @@ -328,9 +332,6 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.strandcaster").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_strand_caster, 1)) .inputItems(new ComparableStack(ModItems.ingot_firebrick, 16), new OreDictStack(STEEL.plateCast(), 6), new OreDictStack(CU.plateWelded(), 2), new OreDictStack(STEEL.shell(), 2), new OreDictStack(ANY_CONCRETE.any(), 8)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.ingot_firebrick, 16), new OreDictStack(STEEL.shell(), 4), new OreDictStack(ANY_CONCRETE.any(), 8))); - this.register(new GenericRecipe("ass.assemfac").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_assemfac, 1)) - .inputItems(new OreDictStack(STEEL.ingot(), 48), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new OreDictStack(B.ingot(), 4), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(KEY_ANYPANE, 64), new ComparableStack(ModItems.motor, 18), new OreDictStack(W.bolt(), 16), new OreDictStack(STEEL.pipe(), 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.HEAVY_FRAME), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new OreDictStack(B.ingot(), 4), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(KEY_ANYPANE, 64), new ComparableStack(ModItems.motor_desh, 16), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.CIRCUIT))); this.register(new GenericRecipe("ass.chemfac").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_chemical_factory, 1)) .inputItems(new OreDictStack(DURA.ingot(), 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(STEEL.shell(), 12), new OreDictStack(CU.pipe(), 8), new ComparableStack(ModItems.motor_desh, 4), new ComparableStack(ModItems.coil_tungsten, 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.HEAVY_FRAME), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(STEEL.shell(), 12), new OreDictStack(CU.pipe(), 16), new ComparableStack(ModItems.motor_desh, 16), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.CIRCUIT))); @@ -448,7 +449,7 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.pachlorophyte").setup(400, 100).outputItems(new ItemStack(ModItems.pa_coil, 1, EnumCoilType.CHLOROPHYTE.ordinal())).inputItems(new OreDictStack(CU.wireDense(), 64), new OreDictStack(CU.wireDense(), 64), new ComparableStack(ModItems.powder_chlorophyte, 16))); this.register(new GenericRecipe("ass.exposurechamber").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_exposure_chamber, 1)) .inputItems(new OreDictStack(AL.plateCast(), 12), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), new OreDictStack(ALLOY.wireDense(), 32), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModBlocks.capacitor_tantalium, 1), new ComparableStack(ModBlocks.glass_quartz, 16)) - .inputItems(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_HARDPLASTIC.ingot(), 24), new OreDictStack(ALLOY.wireDense(), 32), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.COMPUTER))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_HARDPLASTIC.ingot(), 24), new OreDictStack(ALLOY.wireDense(), 32), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.COMPUTER))); // reactors this.register(new GenericRecipe("ass.breedingreactor").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_reactor_breeding, 1)) @@ -492,10 +493,10 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.FERRO_PLATING), new OreDictStack(BIGMT.ingot(), 6), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4))); this.register(new GenericRecipe("ass.watzcooler").setup(200, 100).outputItems(new ItemStack(ModBlocks.watz_cooler, 3)) .inputItems(new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 2)) - .inputItems(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.FERRO_PLATING), new OreDictStack(RUBBER.ingot(), 8))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.FERRO_PLATING), new OreDictStack(RUBBER.ingot(), 8))); this.register(new GenericRecipe("ass.watzcasing").setup(100, 100).outputItems(new ItemStack(ModBlocks.watz_end, 3)) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plateWelded(), 2)) - .inputItems(new ComparableStack(ModItems.item_expensive, 6, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_RESISTANTALLOY.plateWelded()))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 6, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_RESISTANTALLOY.plateWelded()))); // ICF this.register(new GenericRecipe("ass.icfcell").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CELL.ordinal())) diff --git a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java index 1a7599b5d..455456499 100644 --- a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java @@ -16,7 +16,6 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; -import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.handler.imc.IMCBlastFurnace; import com.hbm.inventory.RecipesCommon.AStack; @@ -59,10 +58,9 @@ public class BlastFurnaceRecipes extends SerializableRecipe { addRecipe(W, SA326.nugget(), new ItemStack(ModItems.ingot_magnetized_tungsten)); addRecipe(STEEL, TC99.nugget(), new ItemStack(ModItems.ingot_tcalloy)); addRecipe(GOLD.plate(), ModItems.plate_mixed, new ItemStack(ModItems.plate_paa, 2)); - addRecipe(BIGMT, ModItems.powder_meteorite, new ItemStack(ModItems.ingot_starmetal, 2)); - addRecipe(CO, ModBlocks.block_meteor, new ItemStack(ModItems.ingot_meteorite)); + addRecipe(BIGMT, ModItems.ingot_meteorite, new ItemStack(ModItems.ingot_starmetal, 2)); + addRecipe(CO, ModItems.powder_meteorite, new ItemStack(ModItems.ingot_meteorite)); addRecipe(ModItems.meteorite_sword_hardened, CO, new ItemStack(ModItems.meteorite_sword_alloyed)); - addRecipe(ModBlocks.block_meteor, CO, new ItemStack(ModItems.ingot_meteorite)); if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) { addRecipe(ModItems.canister_empty, COAL, new ItemStack(ModItems.canister_full, 1, Fluids.OIL.getID())); diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index c3927a396..2a48a04f7 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -1,7 +1,6 @@ package com.hbm.inventory.recipes; import java.io.IOException; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map.Entry; @@ -26,7 +25,6 @@ import com.hbm.items.ItemEnums; import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.ItemEnums.EnumChunkType; import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.special.ItemBedrockOreNew; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; @@ -49,35 +47,12 @@ public class CentrifugeRecipes extends SerializableRecipe { boolean lbs = GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCentrifuge; - recipes.put(new ComparableStack(ModItems.icf_pellet_depleted), new ItemStack[] { - new ItemStack(ModItems.icf_pellet_empty, 1), - new ItemStack(ModItems.pellet_charged, 1), - new ItemStack(ModItems.pellet_charged, 1), - new ItemStack(ModItems.powder_iron, 1) }); - recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE)), new ItemStack[] { new ItemStack(ModItems.powder_cobalt_tiny, 2), new ItemStack(ModItems.powder_boron_tiny, 2), new ItemStack(ModItems.powder_niobium_tiny, 2), new ItemStack(ModItems.nugget_zirconium, 3) }); - ArrayList naquadriaNuggets = OreDictionary.getOres("nuggetNaquadria"); - if(naquadriaNuggets.size() != 0) { - ItemStack nuggetNQR = naquadriaNuggets.get(0); - ItemStack copy = nuggetNQR.copy(); - copy.stackSize = 12; - recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.NQD)), new ItemStack[] { - new ItemStack(ModItems.ingot_mud, 1), - copy, - new ItemStack(ModItems.nugget_euphemium, 6), - new ItemStack(ModItems.nuclear_waste, 2) }); - recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.NQR)), new ItemStack[] { - new ItemStack(ModItems.ingot_mud, 1), - new ItemStack(ModItems.nugget_co60, 12), - new ItemStack(ModItems.nugget_euphemium, 6), - new ItemStack(ModItems.nuclear_waste, 2) }); - } - recipes.put(new OreDictStack(COAL.ore()), new ItemStack[] { new ItemStack(ModItems.powder_coal, 2), new ItemStack(ModItems.powder_coal, 2), @@ -329,8 +304,6 @@ public class CentrifugeRecipes extends SerializableRecipe { recipes.put(new ComparableStack(Items.blaze_rod), new ItemStack[] {new ItemStack(Items.blaze_powder, 1), new ItemStack(Items.blaze_powder, 1), new ItemStack(ModItems.powder_fire, 1), new ItemStack(ModItems.powder_fire, 1) }); - recipes.put(new ComparableStack(ModItems.ingot_schraranium), new ItemStack[] { new ItemStack(ModItems.nugget_schrabidium, 2), new ItemStack(ModItems.nugget_schrabidium, 1), new ItemStack(ModItems.nugget_uranium, 3), new ItemStack(ModItems.nugget_neptunium, 2) }); - recipes.put(new ComparableStack(ModItems.crystal_coal), new ItemStack[] { new ItemStack(ModItems.powder_coal, 3), new ItemStack(ModItems.powder_coal, 3), new ItemStack(ModItems.powder_coal, 3), new ItemStack(ModItems.powder_lithium_tiny, 1) }); recipes.put(new ComparableStack(ModItems.crystal_iron), new ItemStack[] { new ItemStack(ModItems.powder_iron, 2), new ItemStack(ModItems.powder_iron, 2), new ItemStack(ModItems.powder_titanium, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) }); recipes.put(new ComparableStack(ModItems.crystal_gold), new ItemStack[] { new ItemStack(ModItems.powder_gold, 2), new ItemStack(ModItems.powder_gold, 2), new ItemStack(ModItems.ingot_mercury, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) }); diff --git a/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java b/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java index 65dd62fe8..3849b1759 100644 --- a/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java @@ -2,6 +2,8 @@ package com.hbm.inventory.recipes; import static com.hbm.inventory.OreDictManager.*; +import java.util.ArrayList; + import com.hbm.blocks.ModBlocks; import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon.ComparableStack; @@ -14,6 +16,7 @@ import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; public class PUREXRecipes extends GenericRecipes { @@ -37,7 +40,8 @@ public class PUREXRecipes extends GenericRecipes { long vitrification = 1_000; // ZIRNOX - this.register(new GenericRecipe("purex.zirnoxnu").setup(100, zirnoxPower).setNameWrapper("purex.recycle") + String autoZirnox = "autoswitch.zirnox"; + this.register(new GenericRecipe("purex.zirnoxnu").setup(100, zirnoxPower).setNameWrapper("purex.recycle").setGroup(autoZirnox, this) .inputItems(new ComparableStack(ModItems.waste_natural_uranium)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_u238, 1), @@ -46,8 +50,8 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 2)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.zirnoxmeu").setup(100, zirnoxPower).setNameWrapper("purex.recycle") - .inputItems(new ComparableStack(ModItems.waste_natural_uranium)) + this.register(new GenericRecipe("purex.zirnoxmeu").setup(100, zirnoxPower).setNameWrapper("purex.recycle").setGroup(autoZirnox, this) + .inputItems(new ComparableStack(ModItems.waste_uranium)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_u238, 1), new ItemStack(ModItems.nugget_pu_mix, 2), @@ -55,7 +59,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 2)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.zirnoxthmeu").setup(100, zirnoxPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.zirnoxthmeu").setup(100, zirnoxPower).setNameWrapper("purex.recycle").setGroup(autoZirnox, this) .inputItems(new ComparableStack(ModItems.waste_thorium)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_u238, 1), @@ -64,7 +68,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 2)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.zirnoxmox").setup(100, zirnoxPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.zirnoxmox").setup(100, zirnoxPower).setNameWrapper("purex.recycle").setGroup(autoZirnox, this) .inputItems(new ComparableStack(ModItems.waste_mox)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_pu_mix, 1), @@ -73,7 +77,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 3)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.zirnoxmep").setup(100, zirnoxPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.zirnoxmep").setup(100, zirnoxPower).setNameWrapper("purex.recycle").setGroup(autoZirnox, this) .inputItems(new ComparableStack(ModItems.waste_plutonium)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_pu_mix, 1), @@ -82,7 +86,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 3)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.zirnoxheu233").setup(100, zirnoxPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.zirnoxheu233").setup(100, zirnoxPower).setNameWrapper("purex.recycle").setGroup(autoZirnox, this) .inputItems(new ComparableStack(ModItems.waste_u233)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_u235, 1), @@ -91,7 +95,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 3)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.zirnoxheu235").setup(100, zirnoxPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.zirnoxheu235").setup(100, zirnoxPower).setNameWrapper("purex.recycle").setGroup(autoZirnox, this) .inputItems(new ComparableStack(ModItems.waste_u235)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_pu238, 1), @@ -100,7 +104,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 3)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.zirnoxles").setup(100, zirnoxPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.zirnoxles").setup(100, zirnoxPower).setNameWrapper("purex.recycle").setGroup(autoZirnox, this) .inputItems(new ComparableStack(ModItems.waste_schrabidium)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_beryllium, 2), @@ -109,7 +113,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 2)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.zirnoxzfbmox").setup(100, zirnoxPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.zirnoxzfbmox").setup(100, zirnoxPower).setNameWrapper("purex.recycle").setGroup(autoZirnox, this) .inputItems(new ComparableStack(ModItems.waste_zfb_mox)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_zirconium, 3), @@ -119,7 +123,8 @@ public class PUREXRecipes extends GenericRecipes { .setIconToFirstIngredient()); // Plate Fuel - this.register(new GenericRecipe("purex.platemox").setup(100, platePower).setNameWrapper("purex.recycle") + String autoPlate = "autoswitch.plate"; + this.register(new GenericRecipe("purex.platemox").setup(100, platePower).setNameWrapper("purex.recycle").setGroup(autoPlate, this) .inputItems(new ComparableStack(ModItems.waste_plate_mox)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.powder_sr90_tiny, 1), @@ -128,7 +133,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 4)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.platepu238be").setup(100, platePower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.platepu238be").setup(100, platePower).setNameWrapper("purex.recycle").setGroup(autoPlate, this) .inputItems(new ComparableStack(ModItems.waste_plate_pu238be)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_beryllium, 1), @@ -137,7 +142,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nugget_lead, 2)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.platepu239").setup(100, platePower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.platepu239").setup(100, platePower).setNameWrapper("purex.recycle").setGroup(autoPlate, this) .inputItems(new ComparableStack(ModItems.waste_plate_pu239)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_pu240, 2), @@ -146,7 +151,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 5)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.platera226be").setup(100, platePower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.platera226be").setup(100, platePower).setNameWrapper("purex.recycle").setGroup(autoPlate, this) .inputItems(new ComparableStack(ModItems.waste_plate_ra226be)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_beryllium, 2), @@ -155,7 +160,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nugget_lead, 1)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.platesa326").setup(100, platePower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.platesa326").setup(100, platePower).setNameWrapper("purex.recycle").setGroup(autoPlate, this) .inputItems(new ComparableStack(ModItems.waste_plate_sa326)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_solinium, 1), @@ -164,7 +169,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 6)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.plateu233").setup(100, platePower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.plateu233").setup(100, platePower).setNameWrapper("purex.recycle").setGroup(autoPlate, this) .inputItems(new ComparableStack(ModItems.waste_plate_u233)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_u235, 1), @@ -173,7 +178,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 6)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.plateu235").setup(100, platePower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.plateu235").setup(100, platePower).setNameWrapper("purex.recycle").setGroup(autoPlate, this) .inputItems(new ComparableStack(ModItems.waste_plate_u235)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_neptunium, 1), @@ -183,7 +188,8 @@ public class PUREXRecipes extends GenericRecipes { .setIconToFirstIngredient()); // PWR - this.register(new GenericRecipe("purex.pwrmeu").setup(100, pwrPower).setNameWrapper("purex.recycle") + String autoPWR = "autoswitch.pwr"; + this.register(new GenericRecipe("purex.pwrmeu").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.MEU)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_u238, 3), @@ -192,7 +198,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 3)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.pwrheu233").setup(100, pwrPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.pwrheu233").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.HEU233)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_u235, 3), @@ -201,7 +207,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 5)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.pwrheu235").setup(100, pwrPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.pwrheu235").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.HEU235)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_neptunium, 3), @@ -210,7 +216,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 5)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.pwrmen").setup(100, pwrPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.pwrmen").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.MEN)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_u238, 3), @@ -219,7 +225,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 3)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.pwrhen237").setup(100, pwrPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.pwrhen237").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.HEN237)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_pu238, 2), @@ -228,7 +234,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 5)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.pwrmox").setup(100, pwrPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.pwrmox").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.MOX)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_u238, 3), @@ -237,7 +243,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 3)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.pwrmep").setup(100, pwrPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.pwrmep").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.MEP)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_lead, 2), @@ -246,7 +252,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 3)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.pwrhep239").setup(100, pwrPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.pwrhep239").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.HEP239)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_pu_mix, 2), @@ -255,7 +261,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 5)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.pwrhep241").setup(100, pwrPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.pwrhep241").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.HEP241)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_lead, 3), @@ -264,7 +270,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 6)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.pwrmea").setup(100, pwrPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.pwrmea").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.MEA)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_lead, 3), @@ -273,7 +279,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 6)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.pwrhea242").setup(100, pwrPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.pwrhea242").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.HEA242)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_lead, 3), @@ -282,7 +288,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 6)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.pwrhes326").setup(100, pwrPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.pwrhes326").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.HES326)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_solinium, 3), @@ -291,7 +297,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 6)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.pwrhes327").setup(100, pwrPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.pwrhes327").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.HES327)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_australium, 4), @@ -300,7 +306,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 6)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.pwrbfbam").setup(100, pwrPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.pwrbfbam").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.BFB_AM_MIX)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_am_mix, 9), @@ -309,7 +315,7 @@ public class PUREXRecipes extends GenericRecipes { new ItemStack(ModItems.nuclear_waste_tiny, 1)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.pwrbfpu241").setup(100, pwrPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.pwrbfpu241").setup(100, pwrPower).setNameWrapper("purex.recycle").setGroup(autoPWR, this) .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.BFB_PU241)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_pu241, 9), @@ -328,7 +334,8 @@ public class PUREXRecipes extends GenericRecipes { new ChanceOutput(new ItemStack(ModItems.nuclear_waste_tiny, 1), 0.25F))); // Watz - this.register(new GenericRecipe("purex.watzschrab").setup(60, watzPower).setNameWrapper("purex.recycle") + String autoWatz = "autoswitch.watz"; + this.register(new GenericRecipe("purex.watzschrab").setup(60, watzPower).setNameWrapper("purex.recycle").setGroup(autoWatz, this) .inputItems(new ComparableStack(ModItems.watz_pellet_depleted, 1, EnumWatzType.SCHRABIDIUM)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_solinium, 15), @@ -337,7 +344,7 @@ public class PUREXRecipes extends GenericRecipes { .outputFluids(new FluidStack(Fluids.WATZ, 1_000)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.watzhes").setup(60, watzPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.watzhes").setup(60, watzPower).setNameWrapper("purex.recycle").setGroup(autoWatz, this) .inputItems(new ComparableStack(ModItems.watz_pellet_depleted, 1, EnumWatzType.HES)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_solinium, 17), @@ -346,7 +353,7 @@ public class PUREXRecipes extends GenericRecipes { .outputFluids(new FluidStack(Fluids.WATZ, 1_000)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.watzmes").setup(60, watzPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.watzmes").setup(60, watzPower).setNameWrapper("purex.recycle").setGroup(autoWatz, this) .inputItems(new ComparableStack(ModItems.watz_pellet_depleted, 1, EnumWatzType.MES)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_solinium, 12), @@ -355,7 +362,7 @@ public class PUREXRecipes extends GenericRecipes { .outputFluids(new FluidStack(Fluids.WATZ, 1_000)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.watzles").setup(60, watzPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.watzles").setup(60, watzPower).setNameWrapper("purex.recycle").setGroup(autoWatz, this) .inputItems(new ComparableStack(ModItems.watz_pellet_depleted, 1, EnumWatzType.LES)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_solinium, 9), @@ -364,7 +371,7 @@ public class PUREXRecipes extends GenericRecipes { .outputFluids(new FluidStack(Fluids.WATZ, 1_000)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.watzhen").setup(60, watzPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.watzhen").setup(60, watzPower).setNameWrapper("purex.recycle").setGroup(autoWatz, this) .inputItems(new ComparableStack(ModItems.watz_pellet_depleted, 1, EnumWatzType.HEN)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_pu239, 12), @@ -373,7 +380,7 @@ public class PUREXRecipes extends GenericRecipes { .outputFluids(new FluidStack(Fluids.WATZ, 1_000)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.watzmeu").setup(60, watzPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.watzmeu").setup(60, watzPower).setNameWrapper("purex.recycle").setGroup(autoWatz, this) .inputItems(new ComparableStack(ModItems.watz_pellet_depleted, 1, EnumWatzType.MEU)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_pu239, 12), @@ -382,7 +389,7 @@ public class PUREXRecipes extends GenericRecipes { .outputFluids(new FluidStack(Fluids.WATZ, 1_000)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.watzmep").setup(60, watzPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.watzmep").setup(60, watzPower).setNameWrapper("purex.recycle").setGroup(autoWatz, this) .inputItems(new ComparableStack(ModItems.watz_pellet_depleted, 1, EnumWatzType.MEP)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_pu241, 12), @@ -391,7 +398,7 @@ public class PUREXRecipes extends GenericRecipes { .outputFluids(new FluidStack(Fluids.WATZ, 1_000)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.watzlead").setup(60, watzPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.watzlead").setup(60, watzPower).setNameWrapper("purex.recycle").setGroup(autoWatz, this) .inputItems(new ComparableStack(ModItems.watz_pellet_depleted, 1, EnumWatzType.LEAD)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_lead, 6), @@ -400,7 +407,7 @@ public class PUREXRecipes extends GenericRecipes { .outputFluids(new FluidStack(Fluids.WATZ, 1_000)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.watzboron").setup(60, watzPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.watzboron").setup(60, watzPower).setNameWrapper("purex.recycle").setGroup(autoWatz, this) .inputItems(new ComparableStack(ModItems.watz_pellet_depleted, 1, EnumWatzType.BORON)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.powder_coal_tiny, 12), @@ -409,7 +416,7 @@ public class PUREXRecipes extends GenericRecipes { .outputFluids(new FluidStack(Fluids.WATZ, 1_000)) .setIconToFirstIngredient()); - this.register(new GenericRecipe("purex.watzdu").setup(60, watzPower).setNameWrapper("purex.recycle") + this.register(new GenericRecipe("purex.watzdu").setup(60, watzPower).setNameWrapper("purex.recycle").setGroup(autoWatz, this) .inputItems(new ComparableStack(ModItems.watz_pellet_depleted, 1, EnumWatzType.DU)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) .outputItems(new ItemStack(ModItems.nugget_polonium, 12), @@ -418,6 +425,40 @@ public class PUREXRecipes extends GenericRecipes { .outputFluids(new FluidStack(Fluids.WATZ, 1_000)) .setIconToFirstIngredient()); + ArrayList naquadriaNuggets = OreDictionary.getOres("nuggetNaquadria"); + if(naquadriaNuggets.size() != 0) { + ItemStack nuggetNQR = naquadriaNuggets.get(0); + ItemStack copy = nuggetNQR.copy(); + copy.stackSize = 12; + + this.register(new GenericRecipe("purex.watzdu").setup(60, watzPower).setNameWrapper("purex.recycle").setGroup(autoWatz, this) + .inputItems(new ComparableStack(ModItems.watz_pellet_depleted, 1, EnumWatzType.NQD)) + .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) + .outputItems(copy, + new ItemStack(ModItems.nugget_euphemium, 6), + new ItemStack(ModItems.nuclear_waste, 2)) + .outputFluids(new FluidStack(Fluids.WATZ, 1_000)) + .setIconToFirstIngredient()); + + this.register(new GenericRecipe("purex.watzdu").setup(60, watzPower).setNameWrapper("purex.recycle").setGroup(autoWatz, this) + .inputItems(new ComparableStack(ModItems.watz_pellet_depleted, 1, EnumWatzType.NQR)) + .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) + .outputItems(new ItemStack(ModItems.nugget_co60, 12), + new ItemStack(ModItems.nugget_euphemium, 6), + new ItemStack(ModItems.nuclear_waste, 2)) + .outputFluids(new FluidStack(Fluids.WATZ, 1_000)) + .setIconToFirstIngredient()); + } + + //ICF + this.register(new GenericRecipe("purex.icf").setup(300, 10_000).setNameWrapper("purex.recycle") + .inputItems(new ComparableStack(ModItems.icf_pellet_depleted)) + .outputItems(new ItemStack(ModItems.icf_pellet_empty, 1), + new ItemStack(ModItems.pellet_charged, 1), + new ItemStack(ModItems.pellet_charged, 1), + new ItemStack(ModItems.powder_iron, 1)) + .setIconToFirstIngredient()); + /// Vitrification this.register(new GenericRecipe("purex.vitliquid").setup(100, vitrification) .inputItems(new ComparableStack(ModBlocks.sand_lead)) @@ -432,5 +473,37 @@ public class PUREXRecipes extends GenericRecipes { this.register(new GenericRecipe("purex.vitsolid").setup(300, vitrification) .inputItems(new ComparableStack(ModBlocks.sand_lead), new ComparableStack(ModItems.nuclear_waste, 4)) .outputItems(new ItemStack(ModItems.nuclear_waste_vitrified, 4))); + + // Schrabidium + this.register(new GenericRecipe("purex.schraranium").setup(200, 1_000).setNameWrapper("purex.schrab") + .inputItems(new ComparableStack(ModItems.ingot_schraranium)) + .inputFluids(new FluidStack(Fluids.KEROSENE, 2_000), new FluidStack(Fluids.NITRIC_ACID, 1_000)) + .outputItems(new ItemStack(ModItems.nugget_schrabidium, 3), + new ItemStack(ModItems.nugget_uranium, 3), + new ItemStack(ModItems.nugget_neptunium, 2)) + .setIconToFirstIngredient()); + + String autoSchrab = "autoswitch.schrab"; + this.register(new GenericRecipe("purex.schrabzirnox").setup(200, 50_000).setNameWrapper("purex.schrab").setGroup(autoSchrab, this) + .inputItems(new ComparableStack(ModItems.waste_plutonium)) + .inputFluids(new FluidStack(Fluids.SOLVENT, 4_000), new FluidStack(Fluids.SCHRABIDIC, 500)) + .outputItems(new ItemStack(ModItems.powder_schrabidium, 1), + new ItemStack(ModItems.nugget_technetium, 3), + new ItemStack(ModItems.nuclear_waste_tiny, 4)) + .setIconToFirstIngredient()); + this.register(new GenericRecipe("purex.schrabpwr").setup(200, 50_000).setNameWrapper("purex.schrab").setGroup(autoSchrab, this) + .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.MEP)) + .inputFluids(new FluidStack(Fluids.SOLVENT, 4_000), new FluidStack(Fluids.SCHRABIDIC, 500)) + .outputItems(new ItemStack(ModItems.powder_schrabidium, 1), + new ItemStack(ModItems.nugget_technetium, 3), + new ItemStack(ModItems.nuclear_waste_tiny, 4)) + .setIconToFirstIngredient()); + this.register(new GenericRecipe("purex.schrabmen").setup(200, 50_000).setNameWrapper("purex.schrab").setGroup(autoSchrab, this) + .inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.MEN)) + .inputFluids(new FluidStack(Fluids.SOLVENT, 4_000), new FluidStack(Fluids.SCHRABIDIC, 500)) + .outputItems(new ItemStack(ModItems.powder_schrabidium, 1), + new ItemStack(ModItems.nugget_technetium, 3), + new ItemStack(ModItems.nuclear_waste_tiny, 4)) + .setIconToFirstIngredient()); } } diff --git a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java index 91a8d99a4..99c37e984 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java @@ -34,6 +34,7 @@ public class GenericRecipe { public boolean writeIcon = false; public boolean customLocalization = false; protected String[] blueprintPools = null; + public String autoSwitchGroup = null; public GenericRecipe(String name) { this.name = name; @@ -59,6 +60,7 @@ public class GenericRecipe { public GenericRecipe setIcon(Block block) { return this.setIcon(new ItemStack(block)); } public GenericRecipe setNamed() { this.customLocalization = true; return this; } public GenericRecipe setPools(String... pools) { this.blueprintPools = pools; for(String pool : pools) GenericRecipes.addToPool(pool, this); return this; } + public GenericRecipe setGroup(String autoSwitch, GenericRecipes set) { this.autoSwitchGroup = autoSwitch; set.addToGroup(autoSwitch, this); return this; } public GenericRecipe inputItems(AStack... input) { this.inputItem = input; for(AStack stack : this.inputItem) if(stack.stacksize > 64) throw new IllegalArgumentException("AStack in " + this.name + " exceeds stack limit!"); return this; } public GenericRecipe inputItemsEx(AStack... input) { if(!GeneralConfig.enableExpensiveMode) return this; this.inputItem = input; for(AStack stack : this.inputItem) if(stack.stacksize > 64) throw new IllegalArgumentException("AStack in " + this.name + " exceeds stack limit!"); return this; } @@ -113,6 +115,10 @@ public class GenericRecipe { public List print() { List list = new ArrayList(); list.add(EnumChatFormatting.YELLOW + this.getLocalizedName()); + if(this.autoSwitchGroup != null) { + String[] lines = I18nUtil.resolveKeyArray("autoswitch", I18nUtil.resolveKey(this.autoSwitchGroup)); + for(String line : lines) list.add(EnumChatFormatting.GOLD + line); + } if(duration > 0) list.add(EnumChatFormatting.RED + "Duration: " + this.duration / 20D + "s"); if(power > 0) list.add(EnumChatFormatting.RED + "Consumption: " + BobMathUtil.getShortNumber(power) + "HE/t"); list.add(EnumChatFormatting.BOLD + "Input:"); diff --git a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipes.java b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipes.java index 2e92b67f6..0bee0728a 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipes.java @@ -46,6 +46,9 @@ public abstract class GenericRecipes extends Serializab public static HashMap> blueprintPools = new HashMap(); /** Name to recipe map for all recipes that are part of pools for lookup */ public static HashMap pooledBlueprints = new HashMap(); + + /** Groups for auto switch functionality (changes recipe automatically based on first solid input) */ + public HashMap> autoSwitchGroups = new HashMap(); public abstract int inputItemLimit(); public abstract int inputFluidLimit(); @@ -54,6 +57,7 @@ public abstract class GenericRecipes extends Serializab public boolean hasDuration() { return true; } public boolean hasPower() { return true; } + /** Adds a recipe to a blueprint pool (i.e. a blueprint item's recipe list) */ public static void addToPool(String pool, GenericRecipe recipe) { List list = blueprintPools.get(pool); if(list == null) { @@ -64,6 +68,14 @@ public abstract class GenericRecipes extends Serializab pooledBlueprints.put(recipe.name, recipe); } + /** Adds a recipe to an auto switch group (recipe can switch based on first solid input) */ + public void addToGroup(String group, GenericRecipe recipe) { + List list = autoSwitchGroups.get(group); + if(list == null) list = new ArrayList(); + list.add(recipe); + autoSwitchGroups.put(group, list); + } + public static void clearPools() { blueprintPools.clear(); pooledBlueprints.clear(); @@ -78,6 +90,7 @@ public abstract class GenericRecipes extends Serializab public void deleteRecipes() { this.recipeOrderedList.clear(); this.recipeNameMap.clear(); + this.autoSwitchGroups.clear(); } public void register(T recipe) { @@ -104,6 +117,7 @@ public abstract class GenericRecipes extends Serializab if(obj.has("named") && obj.get("named").getAsBoolean()) recipe.setNamed(); if(obj.has("blueprintpool")) recipe.setPools(obj.get("blueprintpool").getAsString().split(":")); if(obj.has("nameWrapper")) recipe.setNameWrapper(obj.get("nameWrapper").getAsString()); + if(obj.has("autoSwitchGroup")) recipe.setGroup(obj.get("autoSwitchGroup").getAsString(), this); readExtraData(element, recipe); @@ -154,6 +168,7 @@ public abstract class GenericRecipes extends Serializab if(recipe.customLocalization) writer.name("named").value(true); if(recipe.nameWrapper != null) writer.name("nameWrapper").value(recipe.nameWrapper); if(recipe.blueprintPools != null && recipe.blueprintPools.length > 0) writer.name("blueprintpool").value(String.join(":", recipe.blueprintPools)); + if(recipe.autoSwitchGroup != null) writer.name("autoSwitchGroup").value(recipe.autoSwitchGroup); writeExtraData(recipe, writer); } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 4019a3355..24af636e0 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -702,7 +702,6 @@ public class ModItems { public static Item ingot_raw; public static Item plate_cast; public static Item plate_welded; - public static Item heavy_component; public static Item wire_fine; public static Item wire_dense; public static Item part_barrel_light; @@ -1458,6 +1457,7 @@ public class ModItems { public static Item gun_autoshotgun; public static Item gun_autoshotgun_shredder; public static Item gun_autoshotgun_sexy; + public static Item gun_autoshotgun_heretic; public static Item gun_quadro; public static Item gun_lag; public static Item gun_minigun; @@ -2346,7 +2346,7 @@ public class ModItems { thruster_nuclear = new Item().setUnlocalizedName("thruster_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thruster_nuclear"); safety_fuse = new Item().setUnlocalizedName("safety_fuse").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":safety_fuse"); part_generic = new ItemGenericPart().setUnlocalizedName("part_generic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_generic"); - item_expensive = new ItemEnumMulti(EnumExpensiveType.class, true, true).setUnlocalizedName("item_expensive").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":item_expensive"); + item_expensive = new ItemExpensive().setUnlocalizedName("item_expensive").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":item_expensive"); item_secret = new ItemEnumMulti(EnumSecretType.class, true, true).setUnlocalizedName("item_secret").setCreativeTab(null).setTextureName(RefStrings.MODID + ":item_secret"); ingot_metal = new ItemEnumMulti(EnumIngotMetal.class, true, true).setUnlocalizedName("ingot_metal").setCreativeTab(null).setTextureName(RefStrings.MODID + ":ingot_metal"); chemical_dye = new ItemChemicalDye().setUnlocalizedName("chemical_dye").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chemical_dye"); @@ -2931,7 +2931,6 @@ public class ModItems { ingot_raw = new ItemAutogen(MaterialShapes.INGOT).setUnlocalizedName("ingot_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_raw"); plate_cast = new ItemAutogen(MaterialShapes.CASTPLATE).aot(Mats.MAT_BISMUTH, "plate_cast_bismuth").setUnlocalizedName("plate_cast").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_cast"); plate_welded = new ItemAutogen(MaterialShapes.WELDEDPLATE).setUnlocalizedName("plate_welded").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_welded"); - heavy_component = new ItemAutogen(MaterialShapes.HEAVY_COMPONENT).setUnlocalizedName("heavy_component").setCreativeTab(null).setTextureName(RefStrings.MODID + ":heavy_component"); wire_fine = new ItemAutogen(MaterialShapes.WIRE) .aot(Mats.MAT_ALUMINIUM, "wire_aluminium").aot(Mats.MAT_COPPER, "wire_copper") .aot(Mats.MAT_MINGRADE, "wire_red_copper").aot(Mats.MAT_GOLD, "wire_gold") @@ -5461,7 +5460,6 @@ public class ModItems { GameRegistry.registerItem(plate_welded, plate_welded.getUnlocalizedName()); GameRegistry.registerItem(shell, shell.getUnlocalizedName()); GameRegistry.registerItem(pipe, pipe.getUnlocalizedName()); - GameRegistry.registerItem(heavy_component, heavy_component.getUnlocalizedName()); //Bolts GameRegistry.registerItem(bolt, bolt.getUnlocalizedName()); @@ -6391,6 +6389,7 @@ public class ModItems { GameRegistry.registerItem(gun_autoshotgun, gun_autoshotgun.getUnlocalizedName()); GameRegistry.registerItem(gun_autoshotgun_shredder, gun_autoshotgun_shredder.getUnlocalizedName()); GameRegistry.registerItem(gun_autoshotgun_sexy, gun_autoshotgun_sexy.getUnlocalizedName()); + GameRegistry.registerItem(gun_autoshotgun_heretic, gun_autoshotgun_heretic.getUnlocalizedName()); GameRegistry.registerItem(gun_quadro, gun_quadro.getUnlocalizedName()); GameRegistry.registerItem(gun_lag, gun_lag.getUnlocalizedName()); GameRegistry.registerItem(gun_minigun, gun_minigun.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/special/ItemDrop.java b/src/main/java/com/hbm/items/special/ItemDrop.java index 154785cf5..e1db9ab9e 100644 --- a/src/main/java/com/hbm/items/special/ItemDrop.java +++ b/src/main/java/com/hbm/items/special/ItemDrop.java @@ -202,7 +202,7 @@ public class ItemDrop extends Item { list.add("Continuously heats up matter by"); list.add("resonating every planck second."); list.add("Tends to catch fire or to create"); - list.add("small plamsa arcs. Not edible."); + list.add("small plasma arcs. Not edible."); } if (this == ModItems.black_hole) { list.add("Contains a regular singularity"); diff --git a/src/main/java/com/hbm/items/special/ItemExpensive.java b/src/main/java/com/hbm/items/special/ItemExpensive.java new file mode 100644 index 000000000..cde77e340 --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemExpensive.java @@ -0,0 +1,22 @@ +package com.hbm.items.special; + +import java.util.List; + +import com.hbm.items.ItemEnumMulti; +import com.hbm.items.ItemEnums.EnumExpensiveType; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; + +public class ItemExpensive extends ItemEnumMulti { + + public ItemExpensive() { + super(EnumExpensiveType.class, true, true); + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + list.add(EnumChatFormatting.RED + "Expensive mode item"); + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java index 66cb14695..f77640e05 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java @@ -450,6 +450,9 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); } + @Override + public boolean getShareTag() { return false; } + public static class SmokeNode { public double forward = 0D; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index 753de9167..dfa406299 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -76,7 +76,8 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_m2, new ItemRenderM2()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun, new ItemRenderShredder(ResourceManager.shredder_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_shredder, new ItemRenderShredder(ResourceManager.shredder_orig_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_sexy, new ItemRenderSexy()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_sexy, new ItemRenderSexy(ResourceManager.sexy_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_heretic, new ItemRenderSexy(ResourceManager.heretic_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_quadro, new ItemRenderQuadro()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun, new ItemRenderMinigun(ResourceManager.minigun_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun_lacunae, new ItemRenderMinigun(ResourceManager.minigun_lacunae_tex)); @@ -267,6 +268,7 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_autoshotgun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_autoshotgun_shredder) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_autoshotgun_sexy) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_autoshotgun_heretic) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_quadro) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_lag) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_minigun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java index 93c0e6913..cefcc4aad 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java @@ -67,6 +67,17 @@ public class XFactory10ga { .setupStandardConfiguration() .anim(LAMBDA_DOUBLE_BARREL_ANIMS).orchestra(Orchestras.ORCHESTRA_DOUBLE_BARREL) ).setUnlocalizedName("gun_double_barrel_sacred_dragon"); + + ModItems.gun_autoshotgun_heretic = new ItemGunBaseNT(WeaponQuality.DEBUG, new GunConfig() + .draw(20).inspect(65).reloadSequential(true).inspectCancel(false).crosshair(Crosshair.L_CIRCLE).hideCrosshair(false).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(100F).delay(3).auto(true).dryfireAfterAuto(true).reload(110).jam(19).sound("hbm:weapon.fire.shotgunAuto", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 250).addConfigs(g10, g10_shrapnel, g10_du, g10_slug, g10_explosive)) + .offset(0.75, -0.125, -0.25) + .canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_NOWEAR_FIRE).recoil(XFactory12ga.LAMBDA_RECOIL_SEXY)) + .setupStandardConfiguration() + .anim(XFactory12ga.LAMBDA_SEXY_ANIMS).orchestra(Orchestras.ORCHESTRA_SHREDDER_SEXY) + ).setUnlocalizedName("gun_autoshotgun_heretic"); } public static BiConsumer LAMBDA_RECOIL_DOUBLE_BARREL = (stack, ctx) -> { diff --git a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModManager.java b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModManager.java index 128341947..fbee99b2b 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModManager.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModManager.java @@ -138,7 +138,7 @@ public class WeaponModManager { new WeaponModDefinition(EnumModSpecial.SPEEDUP) .addMod(new Item[] {ModItems.gun_minigun, ModItems.gun_minigun_dual}, new WeaponModMinigunSpeedup(ID_MINIGUN_SPEED)) .addMod(new Item[] {ModItems.gun_autoshotgun, ModItems.gun_autoshotgun_shredder}, new WeaponModShredderSpeedup(209)); - new WeaponModDefinition(EnumModSpecial.CHOKE).addMod(new Item[] {ModItems.gun_pepperbox, ModItems.gun_maresleg, ModItems.gun_double_barrel, ModItems.gun_liberator, ModItems.gun_spas12, ModItems.gun_autoshotgun_sexy}, new WeaponModChoke(210)); + new WeaponModDefinition(EnumModSpecial.CHOKE).addMod(new Item[] {ModItems.gun_pepperbox, ModItems.gun_maresleg, ModItems.gun_double_barrel, ModItems.gun_liberator, ModItems.gun_spas12, ModItems.gun_autoshotgun_sexy, ModItems.gun_autoshotgun_heretic}, new WeaponModChoke(210)); new WeaponModDefinition(EnumModSpecial.FURNITURE_GREEN).addMod(ModItems.gun_g3, new WeaponModPolymerFurniture(ID_FURNITURE_GREEN)); new WeaponModDefinition(EnumModSpecial.FURNITURE_BLACK).addMod(ModItems.gun_g3, new WeaponModPolymerFurniture(ID_FURNITURE_BLACK)); new WeaponModDefinition(EnumModSpecial.BAYONET) diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 57e7c9744..4f891c49e 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (5397)"; + public static final String VERSION = "1.0.27 BETA (5412)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index d170e553b..2a51edc27 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -22,6 +22,7 @@ import com.hbm.inventory.material.NTMMaterial; import static com.hbm.inventory.OreDictManager.*; import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumExpensiveType; import com.hbm.items.ItemEnums.EnumLegendaryType; import com.hbm.items.ItemEnums.EnumPages; import com.hbm.items.ItemEnums.EnumPlantType; @@ -865,7 +866,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.pwr_heatsink, 4), new Object[] { "SCS", "CRC", "SCS", 'S', BIGMT.plateCast(), 'C', CU.plate(), 'R', RUBBER.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.pwr_reflector, 4), new Object[] { "RLR", "LSL", "RLR", 'R', OreDictManager.getReflector(), 'L', PB.plate528(), 'S', STEEL.plateCast() }); addRecipeAuto(new ItemStack(ModBlocks.pwr_casing, 4), new Object[] { "LCL", "CSC", "LCL", 'L', PB.plate528(), 'C', ANY_CONCRETE.any(), 'S', STEEL.plateCast() }); - addRecipeAuto(new ItemStack(ModBlocks.pwr_controller, 1), new Object[] { "CPC", "PSP", "CPC", 'C', ModBlocks.pwr_casing, 'P', ANY_PLASTIC.ingot(), 'S', !GeneralConfig.enableExpensiveMode ? DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) : STEEL.heavyComp() }); + addRecipeAuto(new ItemStack(ModBlocks.pwr_controller, 1), new Object[] { "CPC", "PSP", "CPC", 'C', ModBlocks.pwr_casing, 'P', ANY_PLASTIC.ingot(), 'S', !GeneralConfig.enableExpensiveMode ? DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) : DictFrame.fromOne(ModItems.item_expensive, EnumExpensiveType.CIRCUIT) }); addRecipeAuto(new ItemStack(ModBlocks.pwr_port, 1), new Object[] { "S", "C", "S", 'S', STEEL.plate(), 'C', ModBlocks.pwr_casing }); addRecipeAuto(new ItemStack(ModBlocks.pwr_neutron_source, 1), new Object[] { "LRL", "ZRZ", "LRL", 'L', PB.plate528(), 'R', ModItems.billet_ra226be, 'Z', ZR.plateCast() }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index b1818f018..0a9fe875e 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1723,6 +1723,7 @@ public class MainRegistry { ignoreMappings.add("hbm:item.journal_silver"); ignoreMappings.add("hbm:tile.machine_arc_furnace_off"); ignoreMappings.add("hbm:tile.machine_arc_furnace_on"); + ignoreMappings.add("hbm:item.heavy_component"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 1f0be79bf..4a3ded4e7 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -40,6 +40,7 @@ import com.hbm.items.weapon.sedna.factory.XFactory12ga; import com.hbm.lib.ModDamageSource; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.HeldItemNBTPacket; import com.hbm.packet.toclient.PermaSyncPacket; import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.packet.toclient.SerializableRecipePacket; @@ -988,6 +989,11 @@ public class ModEventHandler { player.worldObj.spawnParticle("townaura", player.posX + vec.xCoord, player.posY + 1 + vec.yCoord, player.posZ + vec.zCoord, 0.0, 0.0, 0.0); } } + + if(!player.worldObj.isRemote && event.phase == TickEvent.Phase.END && player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemGunBaseNT && player instanceof EntityPlayerMP) { + HeldItemNBTPacket packet = new HeldItemNBTPacket(player.getHeldItem()); + PacketDispatcher.wrapper.sendTo(packet, (EntityPlayerMP) player); + } } @SubscribeEvent diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 5d0002948..a3651233d 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1014,6 +1014,7 @@ public class ResourceManager { public static final ResourceLocation shredder_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/shredder.png"); public static final ResourceLocation shredder_orig_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/shredder_orig.png"); public static final ResourceLocation sexy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/sexy_real_no_fake.png"); + public static final ResourceLocation heretic_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/sexy_heretic.png"); public static final ResourceLocation whiskey_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/whiskey.png"); public static final ResourceLocation quadro_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/quadro.png"); public static final ResourceLocation quadro_rocket_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/quadro_rocket.png"); diff --git a/src/main/java/com/hbm/module/machine/ModuleMachineAssembler.java b/src/main/java/com/hbm/module/machine/ModuleMachineAssembler.java index 2316ad787..8b52114ee 100644 --- a/src/main/java/com/hbm/module/machine/ModuleMachineAssembler.java +++ b/src/main/java/com/hbm/module/machine/ModuleMachineAssembler.java @@ -3,6 +3,7 @@ package com.hbm.module.machine; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.AssemblyMachineRecipes; import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.inventory.recipes.loader.GenericRecipes; import com.hbm.util.BobMathUtil; import api.hbm.energymk2.IEnergyHandlerMK2; @@ -19,8 +20,8 @@ public class ModuleMachineAssembler extends ModuleMachineBase { } @Override - public GenericRecipe getRecipe() { - return AssemblyMachineRecipes.INSTANCE.recipeNameMap.get(this.recipe); + public GenericRecipes getRecipeSet() { + return AssemblyMachineRecipes.INSTANCE; } @Override diff --git a/src/main/java/com/hbm/module/machine/ModuleMachineBase.java b/src/main/java/com/hbm/module/machine/ModuleMachineBase.java index 9815c0803..f5f4827e5 100644 --- a/src/main/java/com/hbm/module/machine/ModuleMachineBase.java +++ b/src/main/java/com/hbm/module/machine/ModuleMachineBase.java @@ -1,7 +1,10 @@ package com.hbm.module.machine; +import java.util.List; + import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.inventory.recipes.loader.GenericRecipes; import com.hbm.inventory.recipes.loader.GenericRecipes.IOutput; import com.hbm.items.machine.ItemBlueprints; @@ -44,6 +47,20 @@ public abstract class ModuleMachineBase { /** Expects the tanks to be set up correctly beforehand */ public boolean canProcess(GenericRecipe recipe, double speed, double power) { if(recipe == null) return false; + + // auto switch functionality + if(recipe.autoSwitchGroup != null && slots[inputSlots[0]] != null) { + ItemStack itemToSwitchBy = slots[inputSlots[0]]; + List recipes = (List) this.getRecipeSet().autoSwitchGroups.get(recipe.autoSwitchGroup); + if(recipes != null) for(GenericRecipe nextRec : recipes) { + if(nextRec.inputItem == null) continue; + if(nextRec.inputItem[0].matchesRecipe(itemToSwitchBy, true)) { // perform the switch + this.recipe = nextRec.getInternalName(); + return false; // cancel the recipe this tick since we need to do the previous checking all over again + } + } + } + if(power != 1 && battery.getPower() < recipe.power * power) return false; // only check with floating point numbers if mult is not 1 if(power == 1 && battery.getPower() < recipe.power) return false; @@ -109,7 +126,7 @@ public abstract class ModuleMachineBase { if(slots[outputSlots[i]] == null) { slots[outputSlots[i]] = collapse; } else { - slots[outputSlots[i]].stackSize += collapse.stackSize; // we can do this because we've already established that the result slot is not null if it's a single output + if(collapse != null) slots[outputSlots[i]].stackSize += collapse.stackSize; // we can do this because we've already established that the result slot is not null if it's a single output } } } @@ -128,8 +145,12 @@ public abstract class ModuleMachineBase { this.progress = 0D; } } + + public GenericRecipe getRecipe() { + return (GenericRecipe) getRecipeSet().recipeNameMap.get(this.recipe); + } - public abstract GenericRecipe getRecipe(); + public abstract GenericRecipes getRecipeSet(); public void update(double speed, double power, boolean extraCondition, ItemStack blueprint) { GenericRecipe recipe = getRecipe(); @@ -164,6 +185,16 @@ public abstract class ModuleMachineBase { if(inputSlots[i] == slot && recipe.inputItem[i].matchesRecipe(stack, true)) return true; } + if(recipe.autoSwitchGroup != null) { + List recipes = (List) this.getRecipeSet().autoSwitchGroups.get(recipe.autoSwitchGroup); // why the FUCK does this need a cast + if(recipes != null) for(GenericRecipe newRec : recipes) { + if(newRec.inputItem == null) continue; + if(inputSlots[0] == slot && newRec.inputItem[0].matchesRecipe(stack, true)) { + return true; + } + } + } + return false; } diff --git a/src/main/java/com/hbm/module/machine/ModuleMachineChemplant.java b/src/main/java/com/hbm/module/machine/ModuleMachineChemplant.java index c6268e2cd..facd2bfde 100644 --- a/src/main/java/com/hbm/module/machine/ModuleMachineChemplant.java +++ b/src/main/java/com/hbm/module/machine/ModuleMachineChemplant.java @@ -2,7 +2,7 @@ package com.hbm.module.machine; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.ChemicalPlantRecipes; -import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.inventory.recipes.loader.GenericRecipes; import api.hbm.energymk2.IEnergyHandlerMK2; import net.minecraft.item.ItemStack; @@ -24,8 +24,8 @@ public class ModuleMachineChemplant extends ModuleMachineBase { } @Override - public GenericRecipe getRecipe() { - return ChemicalPlantRecipes.INSTANCE.recipeNameMap.get(this.recipe); + public GenericRecipes getRecipeSet() { + return ChemicalPlantRecipes.INSTANCE; } public ModuleMachineChemplant itemInput(int a, int b, int c) { inputSlots[0] = a; inputSlots[1] = b; inputSlots[2] = c; return this; } diff --git a/src/main/java/com/hbm/module/machine/ModuleMachinePUREX.java b/src/main/java/com/hbm/module/machine/ModuleMachinePUREX.java index afb8186d2..107a6d05e 100644 --- a/src/main/java/com/hbm/module/machine/ModuleMachinePUREX.java +++ b/src/main/java/com/hbm/module/machine/ModuleMachinePUREX.java @@ -2,7 +2,7 @@ package com.hbm.module.machine; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.PUREXRecipes; -import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.inventory.recipes.loader.GenericRecipes; import api.hbm.energymk2.IEnergyHandlerMK2; import net.minecraft.item.ItemStack; @@ -18,8 +18,8 @@ public class ModuleMachinePUREX extends ModuleMachineBase { } @Override - public GenericRecipe getRecipe() { - return PUREXRecipes.INSTANCE.recipeNameMap.get(this.recipe); + public GenericRecipes getRecipeSet() { + return PUREXRecipes.INSTANCE; } public ModuleMachinePUREX itemInput(int start) { for(int i = 0; i < inputSlots.length; i++) inputSlots[i] = start + i; return this; } diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 165664236..524319f01 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -67,6 +67,8 @@ public class PacketDispatcher { wrapper.registerMessage(BufPacket.Handler.class, BufPacket.class, i++, Side.CLIENT); //Syncs server recipe configs to the client wrapper.registerMessage(SerializableRecipePacket.Handler.class, SerializableRecipePacket.class, i++, Side.CLIENT); + //Syncing of NBT for guns + wrapper.registerMessage(HeldItemNBTPacket.Handler.class, HeldItemNBTPacket.class, i++, Side.CLIENT); } } diff --git a/src/main/java/com/hbm/packet/toclient/HeldItemNBTPacket.java b/src/main/java/com/hbm/packet/toclient/HeldItemNBTPacket.java new file mode 100644 index 000000000..45bf21e45 --- /dev/null +++ b/src/main/java/com/hbm/packet/toclient/HeldItemNBTPacket.java @@ -0,0 +1,68 @@ +package com.hbm.packet.toclient; + +import com.hbm.util.BufferUtil; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class HeldItemNBTPacket implements IMessage { + + private ItemStack stack; + + public HeldItemNBTPacket() { } + + public HeldItemNBTPacket(ItemStack stack) { + this.stack = stack; + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeShort(Item.getIdFromItem(stack.getItem())); + buf.writeByte(stack.stackSize); + buf.writeShort(stack.getItemDamage()); + NBTTagCompound nbtTagCompound = null; + nbtTagCompound = stack.stackTagCompound; + BufferUtil.writeNBT(buf, nbtTagCompound); + } + + @Override + public void fromBytes(ByteBuf buf) { + short id = buf.readShort(); + if(id >= 0) { + byte quantity = buf.readByte(); + short meta = buf.readShort(); + stack = new ItemStack(Item.getItemById(id), quantity, meta); + stack.stackTagCompound = BufferUtil.readNBT(buf); + } + } + + public static class Handler implements IMessageHandler { + + @Override + @SideOnly(Side.CLIENT) + public IMessage onMessage(HeldItemNBTPacket m, MessageContext ctx) { + try { + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + if(m.stack == null) return null; + + ItemStack held = player.getHeldItem(); + if(held == null) return null; + if(held.getItem() != m.stack.getItem()) return null; + if(held.getItemDamage() != m.stack.getItemDamage()) return null; + + held.stackTagCompound = m.stack.stackTagCompound; + + } catch(Exception x) { } finally { } + return null; + } + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSexy.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSexy.java index 895c2357e..7c961b43c 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSexy.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSexy.java @@ -11,9 +11,16 @@ import com.hbm.util.Vec3NT; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; @NotableComments public class ItemRenderSexy extends ItemRenderWeaponBase { + + protected ResourceLocation texture; + + public ItemRenderSexy(ResourceLocation texture) { + this.texture = texture; + } @Override protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } @@ -76,7 +83,7 @@ public class ItemRenderSexy extends ItemRenderWeaponBase { GL11.glPopMatrix(); } - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.sexy_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); GL11.glTranslated(0, -1, -8); GL11.glRotated(equip[0], 1, 0, 0); @@ -209,7 +216,7 @@ public class ItemRenderSexy extends ItemRenderWeaponBase { GL11.glEnable(GL11.GL_LIGHTING); GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.sexy_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); ResourceManager.sexy.renderPart("Gun"); ResourceManager.sexy.renderPart("Barrel"); ResourceManager.sexy.renderPart("RecoilSpring"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePUREX.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePUREX.java index dd28d969c..45a476b35 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePUREX.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePUREX.java @@ -10,7 +10,7 @@ import com.hbm.inventory.container.ContainerMachinePUREX; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachinePUREX; -import com.hbm.inventory.recipes.ChemicalPlantRecipes; +import com.hbm.inventory.recipes.PUREXRecipes; import com.hbm.inventory.recipes.loader.GenericRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; @@ -59,9 +59,9 @@ public class TileEntityMachinePUREX extends TileEntityMachineBase implements IEn this.inputTanks = new FluidTank[3]; this.outputTanks = new FluidTank[1]; for(int i = 0; i < 3; i++) { - this.inputTanks[i] = new FluidTank(Fluids.NONE, 16_000); + this.inputTanks[i] = new FluidTank(Fluids.NONE, 24_000); } - this.outputTanks[0] = new FluidTank(Fluids.NONE, 16_000); + this.outputTanks[0] = new FluidTank(Fluids.NONE, 24_000); this.purexModule = new ModuleMachinePUREX(0, this, slots) .itemInput(4).itemOutput(7) @@ -80,7 +80,7 @@ public class TileEntityMachinePUREX extends TileEntityMachineBase implements IEn if(!worldObj.isRemote) { - GenericRecipe recipe = ChemicalPlantRecipes.INSTANCE.recipeNameMap.get(purexModule.recipe); + GenericRecipe recipe = PUREXRecipes.INSTANCE.recipeNameMap.get(purexModule.recipe); if(recipe != null) { this.maxPower = recipe.power * 100; } @@ -124,18 +124,26 @@ public class TileEntityMachinePUREX extends TileEntityMachineBase implements IEn public DirPos[] getConPos() { return new DirPos[] { - new DirPos(xCoord + 2, yCoord, zCoord - 1, Library.POS_X), - new DirPos(xCoord + 2, yCoord, zCoord + 0, Library.POS_X), - new DirPos(xCoord + 2, yCoord, zCoord + 1, Library.POS_X), - new DirPos(xCoord - 2, yCoord, zCoord - 1, Library.NEG_X), - new DirPos(xCoord - 2, yCoord, zCoord + 0, Library.NEG_X), - new DirPos(xCoord - 2, yCoord, zCoord + 1, Library.NEG_X), - new DirPos(xCoord - 1, yCoord, zCoord + 2, Library.POS_Z), - new DirPos(xCoord + 0, yCoord, zCoord + 2, Library.POS_Z), - new DirPos(xCoord + 1, yCoord, zCoord + 2, Library.POS_Z), - new DirPos(xCoord - 1, yCoord, zCoord - 2, Library.NEG_Z), - new DirPos(xCoord + 0, yCoord, zCoord - 2, Library.NEG_Z), - new DirPos(xCoord + 1, yCoord, zCoord - 2, Library.NEG_Z), + new DirPos(xCoord + 3, yCoord, zCoord - 2, Library.POS_X), + new DirPos(xCoord + 3, yCoord, zCoord - 1, Library.POS_X), + new DirPos(xCoord + 3, yCoord, zCoord + 0, Library.POS_X), + new DirPos(xCoord + 3, yCoord, zCoord + 1, Library.POS_X), + new DirPos(xCoord + 3, yCoord, zCoord + 2, Library.POS_X), + new DirPos(xCoord - 3, yCoord, zCoord - 1, Library.NEG_X), + new DirPos(xCoord - 3, yCoord, zCoord - 2, Library.NEG_X), + new DirPos(xCoord - 3, yCoord, zCoord + 0, Library.NEG_X), + new DirPos(xCoord - 3, yCoord, zCoord + 1, Library.NEG_X), + new DirPos(xCoord - 3, yCoord, zCoord + 2, Library.NEG_X), + new DirPos(xCoord - 2, yCoord, zCoord + 3, Library.POS_Z), + new DirPos(xCoord - 1, yCoord, zCoord + 3, Library.POS_Z), + new DirPos(xCoord + 0, yCoord, zCoord + 3, Library.POS_Z), + new DirPos(xCoord + 1, yCoord, zCoord + 3, Library.POS_Z), + new DirPos(xCoord + 2, yCoord, zCoord + 3, Library.POS_Z), + new DirPos(xCoord - 2, yCoord, zCoord - 3, Library.NEG_Z), + new DirPos(xCoord - 1, yCoord, zCoord - 3, Library.NEG_Z), + new DirPos(xCoord + 0, yCoord, zCoord - 3, Library.NEG_Z), + new DirPos(xCoord + 1, yCoord, zCoord - 3, Library.NEG_Z), + new DirPos(xCoord + 2, yCoord, zCoord - 3, Library.NEG_Z), }; } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java index 3da017e91..5c1837c71 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java @@ -112,6 +112,7 @@ public class TileEntityRBMKControlAuto extends TileEntityRBMKControl implements buf.writeDouble(this.levelUpper); buf.writeDouble(this.heatLower); buf.writeDouble(this.heatUpper); + if(function != null) buf.writeInt(function.ordinal()); } @Override @@ -121,6 +122,7 @@ public class TileEntityRBMKControlAuto extends TileEntityRBMKControl implements this.levelUpper = buf.readDouble(); this.heatLower = buf.readDouble(); this.heatUpper = buf.readDouble(); + this.function = RBMKFunction.values()[buf.readInt()]; } @Override diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index d909adf39..26b2baf6f 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -129,6 +129,14 @@ armorMod.type.leggings=Beinschienen armorMod.type.servo=Servos armorMod.type.special=Spezial +autoswitch=Teil der Rezeptgruppe "%s"$Rezept ändert sich basierend auf das erste Item +autoswitch.plate=Wiederanreicherung Plattenbrennstoff +autoswitch.plates=Metallplatten +autoswitch.pwr=Wiederanreicherung PWR-Brennstoff +autoswitch.schrab=Schrabidium-Extraktion +autoswitch.watz=Wiederanreicherung Watzpellet +autoswitch.zirnox=Wiederanreicherung ZIRNOX-Brennstoff + bomb.detonated=Erfolgreich gezündet! bomb.incompatible=Gerät kann nicht ausgelöst werden! bomb.launched=Erfolgreich gestartet! @@ -392,6 +400,7 @@ container.machineLargeTurbine=Industrielle Dampfturbine container.machineLiquefactor=Verflüssiger container.machineMixer=Industrieller Mixer container.machineOreSlopper=B.E.M. +container.machinePUREX=PUREX container.machinePyroOven=Pyrolyseofen container.machineRefinery=Ölraffinerie container.machineRotaryFurnace=Rotationshochofen @@ -2102,6 +2111,7 @@ item.gun_amat.name=Panzerbüchse item.gun_amat_penance.name=Penance item.gun_amat_subtlety.name=Subtlety item.gun_autoshotgun.name=Auto-Flinte +item.gun_autoshotgun_heretic.name=The Heretic item.gun_autoshotgun_sexy.name=Sexy item.gun_autoshotgun_shredder.name=Shredder item.gun_b92.name=§9B92 Energiepistole§r @@ -3710,6 +3720,7 @@ potion.hbm_taint=Verdorben potion.hbm_telekinesis=! ! ! purex.recycle=Wiederanreicherung von %s +purex.schrab=Schrabidium extrahieren aus %s radar.clearMap=Karte zurücksetzen radar.detectMissiles=Raketen erkennen @@ -4460,6 +4471,7 @@ tile.machine_powerrtg.name=PT-Isotopenzelle tile.machine_press.name=Befeuerte Presse tile.machine_puf6_tank.name=Plutoniumhexafluorid-Tank tile.machine_pumpjack.name=Pferdekopfpumpe +tile.machine_purex.name=PUREX tile.machine_pyrooven.name=Pyrolyseofen tile.machine_radar.name=Radar tile.machine_radar_large.name=Großes Radar diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 1ddb53855..d1c47cebc 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -184,6 +184,14 @@ armorMod.type.leggings=Leggings armorMod.type.servo=Servos armorMod.type.special=Special +autoswitch=Part of auto switch group "%s"$Recipe changes based on first ingredient +autoswitch.plate=Re-Enrichment Plate Fuel +autoswitch.plates=Metal Plates +autoswitch.pwr=Re-Enrichment PWR Fuel +autoswitch.schrab=Schrabidium Extraction +autoswitch.watz=Re-Enrichment Watz Pellet +autoswitch.zirnox=Re-Enrichment ZIRNOX Fuel + battery.mode.buffer=Input/Output Mode battery.mode.input=Input Mode battery.mode.off=OffW @@ -794,6 +802,7 @@ container.machineLargeTurbine=Industrial Steam Turbine container.machineLiquefactor=Liquefactor container.machineMixer=Industrial Mixer container.machineOreSlopper=B.O.P. +container.machinePUREX=PUREX container.machinePyroOven=Pyrolysis Oven container.machineRefinery=Oil Refinery container.machineRotaryFurnace=Rotary Furnace @@ -2913,6 +2922,7 @@ item.gun_amat.name=Anti-Materiel Rifle item.gun_amat_penance.name=Penance item.gun_amat_subtlety.name=Subtlety item.gun_autoshotgun.name=Auto Shotgun +item.gun_autoshotgun_heretic.name=The Heretic item.gun_autoshotgun_sexy.name=Sexy item.gun_autoshotgun_shredder.name=Shredder item.gun_b92.name=§9B92 Energy Pistol§r @@ -4768,6 +4778,7 @@ potion.hbm_taint=Tainted potion.hbm_telekinesis=! ! ! purex.recycle=Re-enrichment of %s +purex.schrab=Schrabidium extraction from %s radar.clearMap=Clear Map radar.detectMissiles=Detect Missiles @@ -5597,6 +5608,7 @@ tile.machine_powerrtg.name=PT Isotope Cell tile.machine_press.name=Burner Press tile.machine_puf6_tank.name=Plutonium Hexafluoride Tank tile.machine_pumpjack.name=Pumpjack +tile.machine_purex.name=PUREX tile.machine_pyrooven.name=Pyrolysis Oven tile.machine_radar.name=Radar tile.machine_radar_large.name=Large Radar diff --git a/src/main/resources/assets/hbm/textures/models/weapons/sexy_heretic.png b/src/main/resources/assets/hbm/textures/models/weapons/sexy_heretic.png new file mode 100644 index 0000000000000000000000000000000000000000..4dab907d0d4320b2b7014ece5e4265051a877a51 GIT binary patch literal 5675 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 N#$a=U20d8p{{d1I+>-zR literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/whiskey (Kopie).png b/src/main/resources/assets/hbm/textures/models/weapons/whiskey (Kopie).png deleted file mode 100644 index 959b94011dd9e1bf6a37e1adc7d0ac47df9c2fb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37269 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 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/whiskey.xcf b/src/main/resources/assets/hbm/textures/models/weapons/whiskey.xcf deleted file mode 100644 index 2376c64d51e153dc45b6dd1b928d8a9cf8a7d0bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267625 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