From 12dbb340dd72847dfa871244b04c7b4983b37950 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 14 Jul 2025 16:42:54 +0200 Subject: [PATCH] half-priced salammi --- changelog | 6 + .../java/com/hbm/crafting/ToolRecipes.java | 2 +- .../ContainerMachineAssemblyMachine.java | 5 +- .../gui/GUIMachineAssemblyMachine.java | 3 +- .../gui/GUIMachineChemicalFactory.java | 3 +- .../gui/GUIMachineChemicalPlant.java | 3 +- .../gui/GUIScreenRecipeSelector.java | 24 +- .../inventory/recipes/AssemblerRecipes.java | 1 - .../recipes/AssemblyMachineRecipes.java | 313 +++++++++++++++++- .../recipes/loader/GenericRecipe.java | 12 + .../recipes/loader/GenericRecipes.java | 29 ++ .../recipes/loader/SerializableRecipe.java | 2 + src/main/java/com/hbm/items/ModItems.java | 13 +- .../com/hbm/items/machine/ItemBlueprints.java | 132 ++++++++ src/main/java/com/hbm/main/MainRegistry.java | 2 + .../hbm/module/machine/ModuleMachineBase.java | 11 +- .../TileEntityMachineAssemblyMachine.java | 3 +- .../TileEntityMachineChemicalFactory.java | 4 +- .../TileEntityMachineChemicalPlant.java | 3 +- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../textures/gui/processing/gui_assembler.png | Bin 3445 -> 3490 bytes .../gui/processing/gui_chemical_factory.png | Bin 3531 -> 3644 bytes .../textures/gui/processing/gui_chemplant.png | Bin 3535 -> 3594 bytes .../assets/hbm/textures/items/blueprints.png | Bin 0 -> 379 bytes .../textures/items/blueprints_discover.png | Bin 0 -> 397 bytes .../hbm/textures/items/blueprints_secret.png | Bin 0 -> 313 bytes 27 files changed, 536 insertions(+), 37 deletions(-) create mode 100644 src/main/java/com/hbm/items/machine/ItemBlueprints.java create mode 100644 src/main/resources/assets/hbm/textures/items/blueprints.png create mode 100644 src/main/resources/assets/hbm/textures/items/blueprints_discover.png create mode 100644 src/main/resources/assets/hbm/textures/items/blueprints_secret.png diff --git a/changelog b/changelog index 914e54d80..6be709682 100644 --- a/changelog +++ b/changelog @@ -3,6 +3,12 @@ * Features a brand new animated model, GUI and the new recipe selection system * Many recipes have been reworked, with the microcrafting complexity reduced * The redcoil didn't get a recipe. It's gonna die soon. + * Neither did the schrabidium transmutator + * Balls-o-tron's spawner can now be made without a worm coin, using a silver key instead. This means that, while expensive, it's possible to summon him without finding a jungle dungeon +* Blueprins + * Replace the journals + * Instead of opening them and making a template, they act as a multi template + * Blueprints need to remain in the slot, removing them will disable the recipes again ## Changed * Removed levitation unit diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 39c00cde5..de9dc346f 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -159,7 +159,7 @@ public class ToolRecipes { //Bobmazon CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon), new Object[] { Items.book, Items.gold_nugget, Items.string, KEY_BLUE }); - + //Carts CraftingManager.addRecipeAuto(ItemModMinecart.createCartItem(EnumCartBase.WOOD, EnumMinecart.EMPTY), new Object[] { "P P", "WPW", 'P',KEY_SLAB, 'W', KEY_PLANKS }); CraftingManager.addRecipeAuto(ItemModMinecart.createCartItem(EnumCartBase.STEEL, EnumMinecart.EMPTY), new Object[] { "P P", "IPI", 'P', STEEL.plate(), 'I', STEEL.ingot() }); diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineAssemblyMachine.java b/src/main/java/com/hbm/inventory/container/ContainerMachineAssemblyMachine.java index f7bc0d499..507d41e66 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineAssemblyMachine.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineAssemblyMachine.java @@ -3,7 +3,6 @@ package com.hbm.inventory.container; import com.hbm.inventory.SlotCraftingOutput; import com.hbm.inventory.SlotNonRetarded; import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemAssemblyTemplate; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.util.InventoryUtil; @@ -51,12 +50,12 @@ public class ContainerMachineAssemblyMachine extends ContainerBase { if(slotOriginal.getItem() instanceof IBatteryItem || slotOriginal.getItem() == ModItems.battery_creative) { if(!this.mergeItemStack(slotStack, 0, 1, false)) return null; - } else if(slotOriginal.getItem() instanceof ItemAssemblyTemplate) { + } else if(slotOriginal.getItem() == ModItems.blueprints) { if(!this.mergeItemStack(slotStack, 1, 2, false)) return null; } else if(slotOriginal.getItem() instanceof ItemMachineUpgrade) { if(!this.mergeItemStack(slotStack, 2, 4, false)) return null; } else { - if(!InventoryUtil.mergeItemStack(this.inventorySlots, slotStack, 4, 7, false)) return null; + if(!InventoryUtil.mergeItemStack(this.inventorySlots, slotStack, 4, 16, false)) return null; } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineAssemblyMachine.java b/src/main/java/com/hbm/inventory/gui/GUIMachineAssemblyMachine.java index 1572ed3be..d69a8f062 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineAssemblyMachine.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineAssemblyMachine.java @@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineAssemblyMachine; import com.hbm.inventory.recipes.AssemblyMachineRecipes; import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.items.machine.ItemBlueprints; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineAssemblyMachine; @@ -52,7 +53,7 @@ public class GUIMachineAssemblyMachine extends GuiInfoContainer { protected void mouseClicked(int x, int y, int button) { super.mouseClicked(x, y, button); - if(this.checkClick(x, y, 7, 125, 18, 18)) GUIScreenRecipeSelector.openSelector(AssemblyMachineRecipes.INSTANCE, assembler, assembler.assemblerModule.recipe, 0, this); + if(this.checkClick(x, y, 7, 125, 18, 18)) GUIScreenRecipeSelector.openSelector(AssemblyMachineRecipes.INSTANCE, assembler, assembler.assemblerModule.recipe, 0, ItemBlueprints.grabPool(assembler.slots[1]), this); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineChemicalFactory.java b/src/main/java/com/hbm/inventory/gui/GUIMachineChemicalFactory.java index a31917752..567b2e256 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineChemicalFactory.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineChemicalFactory.java @@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineChemicalFactory; import com.hbm.inventory.recipes.ChemicalPlantRecipes; import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.items.machine.ItemBlueprints; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineChemicalFactory; @@ -57,7 +58,7 @@ public class GUIMachineChemicalFactory extends GuiInfoContainer { protected void mouseClicked(int x, int y, int button) { super.mouseClicked(x, y, button); - for(int i = 0; i < 4; i++) if(this.checkClick(x, y, 74, 19 + i * 22, 18, 18)) GUIScreenRecipeSelector.openSelector(ChemicalPlantRecipes.INSTANCE, chemplant, chemplant.chemplantModule[i].recipe, i, this); + for(int i = 0; i < 4; i++) if(this.checkClick(x, y, 74, 19 + i * 22, 18, 18)) GUIScreenRecipeSelector.openSelector(ChemicalPlantRecipes.INSTANCE, chemplant, chemplant.chemplantModule[i].recipe, i, ItemBlueprints.grabPool(chemplant.slots[4 + i * 7]), this); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineChemicalPlant.java b/src/main/java/com/hbm/inventory/gui/GUIMachineChemicalPlant.java index 9f02d0adf..78a2e619b 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineChemicalPlant.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineChemicalPlant.java @@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineChemicalPlant; import com.hbm.inventory.recipes.ChemicalPlantRecipes; import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.items.machine.ItemBlueprints; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineChemicalPlant; @@ -54,7 +55,7 @@ public class GUIMachineChemicalPlant extends GuiInfoContainer { protected void mouseClicked(int x, int y, int button) { super.mouseClicked(x, y, button); - if(this.checkClick(x, y, 7, 125, 18, 18)) GUIScreenRecipeSelector.openSelector(ChemicalPlantRecipes.INSTANCE, chemplant, chemplant.chemplantModule.recipe, 0, this); + if(this.checkClick(x, y, 7, 125, 18, 18)) GUIScreenRecipeSelector.openSelector(ChemicalPlantRecipes.INSTANCE, chemplant, chemplant.chemplantModule.recipe, 0, ItemBlueprints.grabPool(chemplant.slots[1]), this); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenRecipeSelector.java b/src/main/java/com/hbm/inventory/gui/GUIScreenRecipeSelector.java index 6f101ef29..4a5e3bb83 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenRecipeSelector.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenRecipeSelector.java @@ -50,16 +50,18 @@ public class GUIScreenRecipeSelector extends GuiScreen { protected int index; protected IControlReceiver tile; protected GuiScreen previousScreen; + protected String installedPool; - public static void openSelector(GenericRecipes recipeSet, IControlReceiver tile, String selection, int index, GuiScreen previousScreen) { - FMLCommonHandler.instance().showGuiScreen(new GUIScreenRecipeSelector(recipeSet, tile, selection, index, previousScreen)); + public static void openSelector(GenericRecipes recipeSet, IControlReceiver tile, String selection, int index, String installedPool, GuiScreen previousScreen) { + FMLCommonHandler.instance().showGuiScreen(new GUIScreenRecipeSelector(recipeSet, tile, selection, index, installedPool, previousScreen)); } - public GUIScreenRecipeSelector(GenericRecipes recipeSet, IControlReceiver tile, String selection, int index, GuiScreen previousScreen) { + public GUIScreenRecipeSelector(GenericRecipes recipeSet, IControlReceiver tile, String selection, int index, String installedPool, GuiScreen previousScreen) { this.recipeSet = recipeSet; this.tile = tile; this.selection = selection; this.index = index; + this.installedPool = installedPool; this.previousScreen = previousScreen; if(this.selection == null) this.selection = NULL_SELECTION; @@ -83,7 +85,11 @@ public class GUIScreenRecipeSelector extends GuiScreen { private void regenerateRecipes() { this.recipes.clear(); - this.recipes.addAll(recipeSet.recipeOrderedList); + + for(Object o : recipeSet.recipeOrderedList) { + GenericRecipe recipe = (GenericRecipe) o; + if(!recipe.isPooled() || (this.installedPool != null && recipe.isPartOfPool(installedPool))) this.recipes.add(recipe); + } resetPaging(); } @@ -92,15 +98,17 @@ public class GUIScreenRecipeSelector extends GuiScreen { this.recipes.clear(); if(search.isEmpty()) { - this.recipes.addAll(recipeSet.recipeOrderedList); + regenerateRecipes(); } else { for(Object o : recipeSet.recipeOrderedList) { GenericRecipe recipe = (GenericRecipe) o; - if(recipe.matchesSearch(search)) this.recipes.add(recipe); + if(recipe.matchesSearch(search)) { + if(!recipe.isPooled() || (this.installedPool != null && recipe.isPartOfPool(installedPool))) this.recipes.add(recipe); + } } + + resetPaging(); } - - resetPaging(); } private void resetPaging() { diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index f725cd17a..13e823907 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -197,7 +197,6 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.solinium_core, 1), new AStack[] {new OreDictStack(SA327.nugget(), 9), new OreDictStack(EUPH.nugget(), 1), },400); makeRecipe(new ComparableStack(ModItems.solinium_propellant, 1), new AStack[] {new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 3), new OreDictStack(OreDictManager.getReflector(), 2), new ComparableStack(ModItems.plate_polymer, 6), new OreDictStack(W.wireFine(), 6), new ComparableStack(ModItems.biomass_compressed, 4), },350); makeRecipe(new ComparableStack(ModItems.schrabidium_hammer, 1), new AStack[] {new OreDictStack(SA326.block(), 35), new ComparableStack(ModItems.billet_yharonite, 128), new ComparableStack(Items.nether_star, 3), new ComparableStack(ModItems.fragment_meteorite, 512), },1000); - makeRecipe(new ComparableStack(ModItems.component_emitter, 1), new AStack[] {new OreDictStack(STEEL.shell(), 3), new OreDictStack(AL.shell(), 2), new OreDictStack(STEEL.plate(), 32), new OreDictStack(PB.plate(), 24), new ComparableStack(ModItems.plate_desh, 24), new ComparableStack(ModItems.pipes_steel, 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new OreDictStack(STAR.ingot(), 26), new ComparableStack(ModItems.powder_magic, 48), new ComparableStack(ModItems.crystal_xen, 1), },2500); makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 8), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(ANY_RUBBER.ingot(), 8), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.BASIC.ordinal()), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300); makeRecipe(new ComparableStack(ModBlocks.machine_radar_large, 1), new AStack[] {new OreDictStack(STEEL.plateWelded(), 6), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 16), new OreDictStack(ANY_RUBBER.ingot(), 16), new ComparableStack(ModItems.magnetron, 12), new ComparableStack(ModItems.motor_desh, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_copper, 32), new ComparableStack(ModItems.crt_display, 4), },600); makeRecipe(new ComparableStack(ModBlocks.machine_forcefield, 1), new AStack[] {new OreDictStack(ALLOY.plate528(), 8), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.coil_gold_torus, 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 12), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.upgrade_radius, 1), new ComparableStack(ModItems.upgrade_health, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new ComparableStack(ModBlocks.machine_transformer, 1), },1000); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index 629e10584..39f2fc198 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -5,7 +5,6 @@ import java.util.HashMap; import java.util.List; import static com.hbm.inventory.OreDictManager.*; -import static com.hbm.inventory.material.Mats.*; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.FluidStack; @@ -17,11 +16,18 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.GenericRecipe; import com.hbm.inventory.recipes.loader.GenericRecipes; import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumCasingType; +import com.hbm.items.ItemEnums.EnumSecretType; import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; +import com.hbm.items.machine.ItemDrillbit.EnumDrillType; +import com.hbm.items.machine.ItemPistons.EnumPistonType; +import com.hbm.items.weapon.ItemAmmoHIMARS; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -41,6 +47,20 @@ 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")); 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)) @@ -96,6 +116,19 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new OreDictStack(DURA.ingot(), 1), new OreDictStack(STEEL.plateCast(), 1), new OreDictStack(MINGRADE.wireDense(), 1))); this.register(new GenericRecipe("ass.sealcontroller").setup(100, 100).outputItems(new ItemStack(ModBlocks.seal_controller, 1)) .inputItems(new OreDictStack(DURA.ingot(), 1), new OreDictStack(STEEL.plateCast(), 1), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(MINGRADE.wireDense(), 4))); + + // nuclear door mod + this.register(new GenericRecipe("ass.vaultdoor").setup(600, 100).outputItems(new ItemStack(ModBlocks.vault_door, 1)) + .inputItems(new OreDictStack(STEEL.ingot(), 32), new OreDictStack(DURA.ingot(), 32), new OreDictStack(PB.plateCast(), 8), new OreDictStack(ANY_RUBBER.ingot(), 12), new OreDictStack(DURA.bolt(), 32), new ComparableStack(ModItems.motor, 3))); + this.register(new GenericRecipe("ass.blastdoor").setup(200, 100).outputItems(new ItemStack(ModBlocks.blast_door, 1)) + .inputItems(new OreDictStack(STEEL.ingot(), 8), new OreDictStack(PB.plate(), 6), new OreDictStack(ALLOY.plate(), 6), new OreDictStack(ANY_RUBBER.ingot(), 2), new OreDictStack(DURA.bolt(), 8), new ComparableStack(ModItems.motor, 1))); + this.register(new GenericRecipe("ass.firedoor").setup(300, 100).outputItems(new ItemStack(ModBlocks.fire_door, 1)) + .inputItems(new OreDictStack(STEEL.plate(), 16), new OreDictStack(ALLOY.plate(), 8), new OreDictStack(DURA.bolt(), 8), new ComparableStack(ModItems.motor, 2))); + + /* + this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModBlocks., 1)) + .inputItems()); + */ // machines this.register(new GenericRecipe("ass.shredder").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_shredder, 1)) @@ -106,6 +139,8 @@ public class AssemblyMachineRecipes extends GenericRecipes { .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))); this.register(new GenericRecipe("ass.gascent").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_gascent, 1)) .inputItems(new ComparableStack(ModItems.centrifuge_element, 4), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(DESH.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()))); + this.register(new GenericRecipe("ass.arcfurnace").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_arc_furnace, 1)) + .inputItems(new OreDictStack(ANY_CONCRETE.any(), 12), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.ingot_firebrick, 16),new OreDictStack(STEEL.plateCast(), 8), new ComparableStack(ModBlocks.machine_transformer, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG.ordinal()))); this.register(new GenericRecipe("ass.acidizer").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_crystallizer, 1)) .inputItems(new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(TI.shell(), 3), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.BASIC))); this.register(new GenericRecipe("ass.rtg").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_rtg_grey, 1)) @@ -122,19 +157,69 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new OreDictStack(STEEL.plateWelded(), 8), new OreDictStack(STEEL.shell(), 4), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new OreDictStack(NB.ingot(), 4))); this.register(new GenericRecipe("ass.epress").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_epress, 1)) .inputItems(new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC))); + this.register(new GenericRecipe("ass.excavator").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_excavator, 1)) + .inputItems(new ComparableStack(Blocks.stonebrick, 8), new OreDictStack(STEEL.ingot(), 8), new OreDictStack(IRON.ingot(), 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG))); + this.register(new GenericRecipe("ass.drillsteel").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.STEEL.ordinal())) + .inputItems(new OreDictStack(STEEL.ingot(), 12), new OreDictStack(W.ingot(), 4))); + this.register(new GenericRecipe("ass.drillsteeldiamond").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.STEEL_DIAMOND.ordinal())) + .inputItems(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.STEEL.ordinal()), new OreDictStack(DIAMOND.dust(), 16))); + this.register(new GenericRecipe("ass.drilldura").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.HSS.ordinal())) + .inputItems(new OreDictStack(DURA.ingot(), 12), new OreDictStack(ANY_PLASTIC.ingot(), 12), new OreDictStack(TI.ingot(), 8))); + this.register(new GenericRecipe("ass.drillduradiamond").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.HSS_DIAMOND.ordinal())) + .inputItems(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.HSS.ordinal()), new OreDictStack(DIAMOND.dust(), 24))); + this.register(new GenericRecipe("ass.drilldesh").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.DESH.ordinal())) + .inputItems(new OreDictStack(DESH.ingot(), 16), new OreDictStack(RUBBER.ingot(), 12), new OreDictStack(NB.ingot(), 4))); + this.register(new GenericRecipe("ass.drilldeshdiamond").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.DESH_DIAMOND.ordinal())) + .inputItems(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.DESH.ordinal()), new OreDictStack(DIAMOND.dust(), 32))); + this.register(new GenericRecipe("ass.drilltc").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY.ordinal())) + .inputItems(new OreDictStack(ANY_RESISTANTALLOY.ingot(), 20), new OreDictStack(DESH.ingot(), 12), new OreDictStack(RUBBER.ingot(), 8))); + this.register(new GenericRecipe("ass.drilltcdiamond").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY_DIAMOND.ordinal())) + .inputItems(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY.ordinal()), new OreDictStack(DIAMOND.dust(), 48))); + this.register(new GenericRecipe("ass.drillferro").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.FERRO.ordinal())) + .inputItems(new OreDictStack(FERRO.ingot(), 24), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 12), new OreDictStack(BI.ingot(), 4))); + this.register(new GenericRecipe("ass.drillferrodiamond").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.FERRO_DIAMOND.ordinal())) + .inputItems(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.FERRO.ordinal()), new OreDictStack(DIAMOND.dust(), 56))); + this.register(new GenericRecipe("ass.slopper").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_ore_slopper, 1)) + .inputItems(new OreDictStack(STEEL.plateCast(), 6), new OreDictStack(TI.plate(), 8), new OreDictStack(CU.pipe(), 3), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG))); this.register(new GenericRecipe("ass.mininglaser").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_mining_laser, 1)) - .inputItems(new ComparableStack(ModItems.tank_steel, 3), new OreDictStack(STEEL.plate528(), 16), new ComparableStack(ModItems.crystal_redstone, 3), new ComparableStack(Items.diamond, 3), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.motor, 3), new OreDictStack(DURA.plate(), 4))); + .inputItems(new OreDictStack(STEEL.plate528(), 16), new OreDictStack(TI.shell(), 4), new OreDictStack(DURA.plate(), 4), new ComparableStack(ModItems.crystal_redstone, 3), new ComparableStack(Items.diamond, 3), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.motor, 3))); this.register(new GenericRecipe("ass.teleporter").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_teleporter, 1)) .inputItems(new OreDictStack(TI.plate(), 12), new OreDictStack(ALLOY.plate528(), 12), new OreDictStack(GOLD.wireFine(), 32), new ComparableStack(ModItems.entanglement_kit, 1), new ComparableStack(ModBlocks.machine_battery, 1))); - + this.register(new GenericRecipe("ass.radar").setup(300, 100).outputItems(new ItemStack(ModBlocks.machine_radar, 1)) + .inputItems(new OreDictStack(STEEL.plate528(), 12), new OreDictStack(ANY_RUBBER.ingot(), 12), new ComparableStack(ModItems.magnetron, 5), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.BASIC.ordinal()), new ComparableStack(ModItems.crt_display, 4))); + this.register(new GenericRecipe("ass.radarlarge").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_radar_large, 1)) + .inputItems(new OreDictStack(STEEL.plateWelded(), 6), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(ANY_RUBBER.ingot(), 24), new ComparableStack(ModItems.magnetron, 16), new ComparableStack(ModItems.motor_desh, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.crt_display, 4))); + this.register(new GenericRecipe("ass.forcefield").setup(600, 100).outputItems(new ItemStack(ModBlocks.machine_forcefield, 1)) + .inputItems(new OreDictStack(ALLOY.plate528(), 8), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.coil_gold_torus, 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 12), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.upgrade_radius, 1), new ComparableStack(ModItems.upgrade_health, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new ComparableStack(ModBlocks.machine_transformer, 1))); + 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))); + // generators this.register(new GenericRecipe("ass.dieselgen").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_diesel, 1)) .inputItems(new OreDictStack(STEEL.shell(), 1), new OreDictStack(CU.plateCast(), 2), new ComparableStack(ModItems.coil_copper, 4))); + this.register(new GenericRecipe("ass.combustiongen").setup(300, 100).outputItems(new ItemStack(ModBlocks.machine_combustion_engine, 1)) + .inputItems(new OreDictStack(STEEL.plate528(), 16), new OreDictStack(CU.ingot(), 12), new OreDictStack(GOLD.wireDense(), 8), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC))); + this.register(new GenericRecipe("ass.pistonsetsteel").setup(200, 100).outputItems(new ItemStack(ModItems.piston_set, 1, EnumPistonType.STEEL.ordinal())) + .inputItems(new OreDictStack(STEEL.plate(), 16), new OreDictStack(CU.plate(), 4), new OreDictStack(W.ingot(), 8), new OreDictStack(W.bolt(), 16))); + this.register(new GenericRecipe("ass.pistonsetdura").setup(200, 100).outputItems(new ItemStack(ModItems.piston_set, 1, EnumPistonType.DURA.ordinal())) + .inputItems(new OreDictStack(DURA.ingot(), 24), new OreDictStack(TI.plate(), 8), new OreDictStack(W.ingot(), 8), new OreDictStack(DURA.bolt(), 16))); + this.register(new GenericRecipe("ass.pistonsetdesh").setup(200, 100).outputItems(new ItemStack(ModItems.piston_set, 1, EnumPistonType.DESH.ordinal())) + .inputItems(new OreDictStack(DESH.ingot(), 24), new OreDictStack(ANY_PLASTIC.ingot(), 12), new OreDictStack(CU.plate(), 24), new OreDictStack(W.ingot(), 16), new OreDictStack(DURA.pipe(), 4))); + this.register(new GenericRecipe("ass.pistonsetstar").setup(200, 100).outputItems(new ItemStack(ModItems.piston_set, 1, EnumPistonType.STARMETAL.ordinal())) + .inputItems(new OreDictStack(STAR.ingot(), 24), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(BIGMT.plate(), 24), new OreDictStack(NB.ingot(), 16), new OreDictStack(DURA.pipe(), 4))); this.register(new GenericRecipe("ass.turbofan").setup(300, 100).outputItems(new ItemStack(ModBlocks.machine_turbofan, 1)) .inputItems(new OreDictStack(TI.shell(), 8), new OreDictStack(DURA.pipe(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 12), new ComparableStack(ModItems.turbine_tungsten, 1), new OreDictStack(GOLD.wireDense(), 12), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.BASIC.ordinal()))); this.register(new GenericRecipe("ass.gasturbine").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_turbinegas, 1)) .inputItems(new OreDictStack(STEEL.shell(), 10), new OreDictStack(GOLD.wireDense(), 12), new OreDictStack(DURA.pipe(), 4),new OreDictStack(STEEL.pipe(), 4), new ComparableStack(ModItems.turbine_tungsten, 1), new ComparableStack(ModItems.ingot_rubber, 12), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.BASIC.ordinal()))); - + this.register(new GenericRecipe("ass.iturbine").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_large_turbine, 1)) + .inputItems(new OreDictStack(STEEL.plate528(), 12), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.turbine_titanium, 3), new OreDictStack(GOLD.wireDense(), 6), new OreDictStack(DURA.pipe(), 3), new OreDictStack(STEEL.pipe(), 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC))); + this.register(new GenericRecipe("ass.leviturbine").setup(600, 100).outputItems(new ItemStack(ModBlocks.machine_chungus, 1)) + .inputItems(new OreDictStack(STEEL.shell(), 6), new OreDictStack(STEEL.plateWelded(), 16), new OreDictStack(TI.plate528(), 12), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new ComparableStack(ModItems.turbine_tungsten, 5), new ComparableStack(ModItems.turbine_titanium, 3), new ComparableStack(ModItems.flywheel_beryllium, 1), new OreDictStack(GOLD.wireDense(), 48), new OreDictStack(DURA.pipe(), 16), new OreDictStack(STEEL.pipe(), 16))); + + // condensers + this.register(new GenericRecipe("ass.hpcondenser").setup(600, 100).outputItems(new ItemStack(ModBlocks.machine_condenser_powered, 1)) + .inputItems(new OreDictStack(STEEL.plateWelded(), 8), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 4), new OreDictStack(CU.plate528(), 16), new ComparableStack(ModItems.motor_desh, 3), new OreDictStack(STEEL.pipe(), 24), new OreDictStack(Fluids.LUBRICANT.getDict(1_000), 4))); + // batteries this.register(new GenericRecipe("ass.battery").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_battery, 1)) .inputItems(new OreDictStack(STEEL.plateWelded(), 1), new OreDictStack(S.dust(), 12), new OreDictStack(PB.dust(), 12))); @@ -144,7 +229,19 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new OreDictStack(DESH.ingot(), 16), new OreDictStack(NP237.dust(), 12), new OreDictStack(SA326.dust(), 12))); this.register(new GenericRecipe("ass.batterydnt").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_battery, 1)) .inputItems(new OreDictStack(DNT.ingot(), 24), new ComparableStack(ModItems.powder_spark_mix, 12), new ComparableStack(ModItems.battery_spark_cell_1000, 1), new OreDictStack(CMB.ingot(), 32))); - + this.register(new GenericRecipe("ass.fensusan").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.machine_fensu, 1)) + .inputItems(new ComparableStack(ModItems.ingot_electronium, 32), + new ComparableStack(ModBlocks.machine_dineutronium_battery, 16), + new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 64), + new OreDictStack(DURA.block(), 16), + new OreDictStack(STAR.block(), 64), + new ComparableStack(ModBlocks.machine_transformer_dnt, 8), + new ComparableStack(ModItems.coil_magnetized_tungsten, 24), + new ComparableStack(ModItems.powder_magic, 64), + new ComparableStack(ModItems.plate_dineutronium, 24), + new ComparableStack(ModItems.ingot_u238m2), + new ComparableStack(ModItems.ingot_cft, 128))); + // fluid tanks this.register(new GenericRecipe("ass.tank").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_fluidtank, 1)) .inputItems(new OreDictStack(STEEL.plate528(), 8), new OreDictStack(STEEL.shell(), 4), new OreDictStack(ANY_TAR.any(), 4))); @@ -153,7 +250,18 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.orbus").setup(300, 100).outputItems(new ItemStack(ModBlocks.machine_orbus, 1)) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(BIGMT.plateCast(), 4), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1))); + // accelerators + this.register(new GenericRecipe("ass.cyclotron").setup(600, 100).outputItems(new ItemStack(ModBlocks.machine_cyclotron, 1)) + .inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 3), new OreDictStack(ND.wireDense(), 32), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(STEEL.plate528(), 32), new OreDictStack(AL.plate528(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 24), new OreDictStack(RUBBER.ingot(), 24), new OreDictStack(CU.plateCast(), 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC))); + + // reactors + this.register(new GenericRecipe("ass.cirnox").setup(600, 100).outputItems(new ItemStack(ModBlocks.reactor_zirnox, 1)) + .inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(B.ingot(), 8), new OreDictStack(GRAPHITE.ingot(), 16), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(ANY_CONCRETE.any(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC))); + + // fusion reactor + this.register(new GenericRecipe("ass.fusioncore").setup(600, 100).outputItems(new ItemStack(ModBlocks.struct_iter_core, 1)) + .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 6), new OreDictStack(W.plateWelded(), 6), new OreDictStack(OreDictManager.getReflector(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID))); this.register(new GenericRecipe("ass.fusionconductor").setup(100, 100).outputItems(new ItemStack(ModBlocks.fusion_conductor, 1)) .inputItems(new ComparableStack(ModItems.coil_advanced_alloy, 5))); this.register(new GenericRecipe("ass.fusioncenter").setup(200, 100).outputItems(new ItemStack(ModBlocks.fusion_center, 1)) @@ -162,6 +270,12 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new OreDictStack(TI.ingot(), 4), new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.motor, 4))); this.register(new GenericRecipe("ass.fusionheater").setup(200, 100).outputItems(new ItemStack(ModBlocks.fusion_heater, 4)) .inputItems(new OreDictStack(W.plateWelded(), 2), new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new ComparableStack(ModItems.magnetron, 2))); + this.register(new GenericRecipe("ass.blankettungsten").setup(600, 100).outputItems(new ItemStack(ModItems.fusion_shield_tungsten, 1)) + .inputItems(new OreDictStack(W.block(), 32), new OreDictStack(OreDictManager.getReflector(), 96))); + this.register(new GenericRecipe("ass.blanketdesh").setup(600, 100).outputItems(new ItemStack(ModItems.fusion_shield_desh, 1)) + .inputItems(new OreDictStack(DESH.block(), 16), new OreDictStack(CO.block(), 16), new OreDictStack(BIGMT.plate(), 96))); + this.register(new GenericRecipe("ass.blanketchlorophyte").setup(600, 100).outputItems(new ItemStack(ModItems.fusion_shield_chlorophyte, 1)) + .inputItems(new OreDictStack(W.block(), 16), new OreDictStack(DURA.block(), 16), new OreDictStack(OreDictManager.getReflector(), 48), new ComparableStack(ModItems.powder_chlorophyte, 48))); // watz this.register(new GenericRecipe("ass.watzrod").setup(200, 100).outputItems(new ItemStack(ModBlocks.watz_element, 3)) @@ -171,6 +285,13 @@ public class AssemblyMachineRecipes extends GenericRecipes { 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))); + // upgrades + this.register(new GenericRecipe("ass.overdrive1").setup(200, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_1, 1)) + .inputItems(new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(BIGMT.ingot(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED))); + this.register(new GenericRecipe("ass.overdrive2").setup(600, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_2, 1)) + .inputItems(new ComparableStack(ModItems.upgrade_overdrive_1, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(BIGMT.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD))); + this.register(new GenericRecipe("ass.overdrive3").setup(1_200, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_3, 1)) + .inputItems(new ComparableStack(ModItems.upgrade_overdrive_2, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(ANY_BISMOIDBRONZE.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID))); /* this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModBlocks., 1)) .inputItems()); @@ -179,6 +300,8 @@ public class AssemblyMachineRecipes extends GenericRecipes { // rancid shit mob spawners this.register(new GenericRecipe("ass.chopper").setup(1_200, 100).outputItems(new ItemStack(ModItems.spawn_chopper, 8)) .inputItems(new OreDictStack(CMB.plateCast(), 24), new OreDictStack(STEEL.plate(), 32), new OreDictStack(MAGTUNG.wireFine(), 48), new ComparableStack(ModItems.motor_desh, 5), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_ADVANCED))); + this.register(new GenericRecipe("ass.ballsotron").setup(1_200, 100).outputItems(new ItemStack(ModItems.spawn_worm, 1)) + .inputItems(new OreDictStack(TI.plateWelded(), 32), new OreDictStack(RUBBER.ingot(), 64), new ComparableStack(ModItems.motor, 64), new OreDictStack(GOLD.wireDense(), 64), new OreDictStack(U238.block(), 10), new ComparableStack(ModItems.mech_key, 1))); // weapon parts this.register(new GenericRecipe("ass.clusterpellets").setup(50, 100).outputItems(new ItemStack(ModItems.pellet_cluster, 1)) @@ -212,7 +335,7 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.customnuke").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_custom, 1)) .inputItems(new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack(KEY_GRAY, 4))); this.register(new GenericRecipe("ass.levibomb").setup(200, 100).outputItems(new ItemStack(ModBlocks.float_bomb, 1)) - .inputItems(new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireDense(), 8))); + .inputItems(new OreDictStack(TI.plate(), 12), new OreDictStack(SA326.nugget(), 3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireDense(), 8))); this.register(new GenericRecipe("ass.endobomb").setup(200, 100).outputItems(new ItemStack(ModBlocks.therm_endo, 1)) .inputItems(new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.powder_ice, 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_gold, 4))); this.register(new GenericRecipe("ass.exobomb").setup(200, 100).outputItems(new ItemStack(ModBlocks.therm_exo, 1)) @@ -249,7 +372,8 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.mikecore").setup(1_200, 100).outputItems(new ItemStack(ModItems.mike_core, 1)) .inputItems(new OreDictStack(U238.nugget(), 24), new OreDictStack(PB.ingot(), 6))); this.register(new GenericRecipe("ass.mikedeut").setup(600, 100).outputItems(new ItemStack(ModItems.mike_deut, 1)) - .inputItems(new OreDictStack(IRON.plate528(), 12), new OreDictStack(STEEL.plate528(), 16), new ComparableStack(ModItems.cell_deuterium, 10))); + .inputItems(new OreDictStack(IRON.plate528(), 12), new OreDictStack(STEEL.plate528(), 16)) + .inputFluids(new FluidStack(Fluids.DEUTERIUM, 10_000))); this.register(new GenericRecipe("ass.mikecooler").setup(300, 100).outputItems(new ItemStack(ModItems.mike_cooling_unit, 1)) .inputItems(new OreDictStack(IRON.plate528(), 8), new ComparableStack(ModItems.coil_copper, 5), new ComparableStack(ModItems.coil_tungsten, 5), new ComparableStack(ModItems.motor, 2))); this.register(new GenericRecipe("ass.fleijaigniter").setup(200, 100).outputItems(new ItemStack(ModItems.fleija_igniter, 1)) @@ -290,7 +414,50 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new ComparableStack(ModItems.plate_paa, 3), new OreDictStack(OreDictManager.getReflector(), 1), new ComparableStack(ModItems.coil_magnetized_tungsten, 3), new ComparableStack(ModItems.powder_power, 3))); this.register(new GenericRecipe("ass.bholegrenade").setup(1_200, 100).outputItems(new ItemStack(ModItems.grenade_black_hole, 1)) .inputItems(new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(OreDictManager.getReflector(), 3), new ComparableStack(ModItems.coil_magnetized_tungsten, 2), new ComparableStack(ModItems.black_hole, 1))); + + /* + this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModBlocks., 1)) + .inputItems()); + */ + // turrets + this.register(new GenericRecipe("ass.turretchekhov").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_chekhov, 1)) + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 3), new OreDictStack(GUNMETAL.mechanism(), 3), new ComparableStack(ModBlocks.crate_iron, 1), new ComparableStack(ModItems.crt_display, 1))); + this.register(new GenericRecipe("ass.turretfriendly").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_friendly, 1)) + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC), new OreDictStack(STEEL.pipe(), 3), new OreDictStack(GUNMETAL.mechanism(), 1), new ComparableStack(ModBlocks.crate_iron, 1), new ComparableStack(ModItems.crt_display, 1))); + this.register(new GenericRecipe("ass.turretjeremy").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_jeremy, 1)) + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.motor_desh, 1), new OreDictStack(STEEL.shell(), 3), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1))); + this.register(new GenericRecipe("ass.turrettauon").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_tauon, 1)) + .inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.motor_desh, 1), new OreDictStack(CU.ingot(), 32), new OreDictStack(BIGMT.mechanism(), 3), new ComparableStack(ModItems.battery_lithium, 1), new ComparableStack(ModItems.crt_display, 1))); + this.register(new GenericRecipe("ass.turretrichard").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_richard, 1)) + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.shell(), 8), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1))); + this.register(new GenericRecipe("ass.turrethoward").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_howard, 1)) + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 24), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 10), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1))); + this.register(new GenericRecipe("ass.maxwell").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_maxwell, 1)) + .inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new OreDictStack(STEEL.ingot(), 24), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 4), new OreDictStack(BIGMT.mechanism(), 3), new ComparableStack(ModItems.magnetron, 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new ComparableStack(ModItems.crt_display, 1))); + this.register(new GenericRecipe("ass.fritz").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_fritz, 1)) + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(GUNMETAL.mechanism(), 3), new ComparableStack(ModBlocks.barrel_steel))); + this.register(new GenericRecipe("ass.arty").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.turret_arty, 1)) + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 128), new ComparableStack(ModItems.motor_desh, 5), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 12), new OreDictStack(WEAPONSTEEL.mechanism(), 16), new ComparableStack(ModBlocks.machine_radar, 1), new ComparableStack(ModItems.crt_display, 1))); + this.register(new GenericRecipe("ass.himars").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.turret_himars, 1)) + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 128), new OreDictStack(ANY_PLASTIC.ingot(), 64), new ComparableStack(ModItems.motor_desh, 5), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), new OreDictStack(BIGMT.mechanism(), 8), new ComparableStack(ModBlocks.machine_radar, 1), new ComparableStack(ModItems.crt_display, 1))); + this.register(new GenericRecipe("ass.himarssmall").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL)) + .inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_PLASTIC.ingot(), 12), new ComparableStack(ModItems.rocket_fuel, 48), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 48), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC))); + this.register(new GenericRecipe("ass.himarssmallhe").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_HE)) + .inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_PLASTIC.ingot(), 24), new ComparableStack(ModItems.rocket_fuel, 48), new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 18), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 48), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC))); + this.register(new GenericRecipe("ass.himarssmallwp").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_WP)) + .inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_PLASTIC.ingot(), 24), new ComparableStack(ModItems.rocket_fuel, 48), new OreDictStack(P_WHITE.ingot(), 18), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 48), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC))); + this.register(new GenericRecipe("ass.himarssmalltb").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_TB)) + .inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_PLASTIC.ingot(), 24), new ComparableStack(ModItems.rocket_fuel, 48), new ComparableStack(ModItems.ball_tatb, 32), new OreDictStack(Fluids.KEROSENE_REFORM.getDict(1_000), 12), new OreDictStack(Fluids.PEROXIDE.getDict(1_000), 12), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC))); + this.register(new GenericRecipe("ass.himarssmallnuke").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_MINI_NUKE)) + .inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_PLASTIC.ingot(), 24), new ComparableStack(ModItems.rocket_fuel, 48), new ComparableStack(ModItems.ball_tatb, 6), new OreDictStack(PU239.nugget(), 12), new OreDictStack(OreDictManager.getReflector(), 12), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC))); + this.register(new GenericRecipe("ass.himarssmalllava").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_LAVA)) + .inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), new ComparableStack(ModItems.rocket_fuel, 32), new ComparableStack(ModItems.ball_tatb, 4), new OreDictStack(VOLCANIC.gem(), 1), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC))); + this.register(new GenericRecipe("ass.himarslarge").setup(200, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.LARGE)) + .inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), new ComparableStack(ModItems.rocket_fuel, 36), new ComparableStack(ModItems.ball_tatb, 16), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED))); + this.register(new GenericRecipe("ass.himarslargetb").setup(200, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.LARGE_TB)) + .inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), new ComparableStack(ModItems.rocket_fuel, 36), new ComparableStack(ModItems.ball_tatb, 24), new OreDictStack(Fluids.KEROSENE_REFORM.getDict(1_000), 16), new OreDictStack(Fluids.PEROXIDE.getDict(1_000), 16), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED))); + // missile parts this.register(new GenericRecipe("ass.missileassembly").setup(200, 100).outputItems(new ItemStack(ModItems.missile_assembly, 1)) .inputItems(new OreDictStack(AL.shell(), 2), new OreDictStack(TI.shell(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.rocket_fuel, 8), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC))); @@ -328,7 +495,137 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.stealthmissile").setup(1_200, 100).outputItems(new ItemStack(ModItems.missile_stealth, 1)) .inputItems(new OreDictStack(TI.plate(), 20), new OreDictStack(AL.plate(), 20), new OreDictStack(KEY_BLACK, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(STEEL.bolt(), 32))); this.register(new GenericRecipe("ass.thrusternerva").setup(600, 100).outputItems(new ItemStack(ModItems.thruster_nuclear, 1)) - .inputItems(new OreDictStack(DURA.ingot(), 32), new OreDictStack(B.ingot(), 8), new OreDictStack(PB.plate(), 16), new ComparableStack(ModItems.pipes_steel))); + .inputItems(new OreDictStack(DURA.ingot(), 32), new OreDictStack(B.ingot(), 8), new OreDictStack(PB.plate(), 16), new OreDictStack(STEEL.pipe(), 4))); + + /* + this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModItems., 1)) + .inputItems()); + */ + + // weapons + this.register(new GenericRecipe("ass.schrabhammer").setup(6_000, 100).outputItems(new ItemStack(ModItems.schrabidium_hammer, 1)) + .inputItems( + new OreDictStack(SA326.block(), 35), + new ComparableStack(ModItems.billet_yharonite, 64), + new ComparableStack(ModItems.billet_yharonite, 64), + new ComparableStack(ModItems.coin_ufo, 1), + new ComparableStack(ModItems.fragment_meteorite, 64), + new ComparableStack(ModItems.fragment_meteorite, 64), + new ComparableStack(ModItems.fragment_meteorite, 64), + new ComparableStack(ModItems.fragment_meteorite, 64), + new ComparableStack(ModItems.fragment_meteorite, 64), + new ComparableStack(ModItems.fragment_meteorite, 64), + new ComparableStack(ModItems.fragment_meteorite, 64), + new ComparableStack(ModItems.fragment_meteorite, 64))); + + // ammo + this.register(new GenericRecipe("ass.50bmgsm").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_standard, 6, EnumAmmo.BMG50_SM.ordinal())) + .inputItems(new ComparableStack(ModItems.casing, 1, EnumCasingType.LARGE_STEEL), new OreDictStack(ANY_SMOKELESS.dust(), 6), new OreDictStack(STAR.ingot(), 3)) + .setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "silverstorm")); + this.register(new GenericRecipe("ass.50bmgbypass").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_secret, 12, EnumAmmoSecret.BMG50_BLACK.ordinal())) + .inputItems(new ComparableStack(ModItems.casing, 2, EnumCasingType.LARGE_STEEL), new OreDictStack(ANY_SMOKELESS.dust(), 24), new ComparableStack(ModItems.item_secret, 1, EnumSecretType.SELENIUM_STEEL), new ComparableStack(ModItems.black_diamond)) + .setPools(GenericRecipes.POOL_PREFIX_SECRET + "psalm")); + + // space + this.register(new GenericRecipe("ass.soyuz").setup(6_000, 100).outputItems(new ItemStack(ModItems.missile_soyuz, 1)) + .inputItems(new OreDictStack(TI.shell(), 32), + new OreDictStack(RUBBER.ingot(), 64), + new ComparableStack(ModItems.rocket_fuel, 64), + new ComparableStack(ModItems.thruster_small, 12), + new ComparableStack(ModItems.thruster_medium, 12), + new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER), + new ComparableStack(ModItems.part_generic, 32, EnumPartType.LDE)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "soyuz")); + this.register(new GenericRecipe("ass.lander").setup(2_400, 100).outputItems(new ItemStack(ModItems.missile_soyuz_lander, 1)) + .inputItems(new OreDictStack(AL.shell(), 4), + new OreDictStack(RUBBER.ingot(), 16), + new ComparableStack(ModItems.rocket_fuel, 16), + new ComparableStack(ModItems.thruster_small, 3), + new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER_ADVANCED), + new ComparableStack(ModItems.part_generic, 12, EnumPartType.LDE)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "soyuz")); + this.register(new GenericRecipe("ass.satellitebase").setup(600, 100).outputItems(new ItemStack(ModItems.sat_base, 1)) + .inputItems(new OreDictStack(RUBBER.ingot(), 12), + new OreDictStack(TI.shell(), 3), + new ComparableStack(ModItems.thruster_large, 1), + new ComparableStack(ModItems.part_generic, 8, EnumPartType.LDE), + new ComparableStack(ModItems.plate_desh, 4), + new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), + new ComparableStack(ModItems.photo_panel, 24), + new ComparableStack(ModItems.circuit, 12, EnumCircuitType.BASIC), + new ComparableStack(ModBlocks.machine_lithium_battery, 1))); + this.register(new GenericRecipe("ass.satellitemapper").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_mapper, 1)) + .inputItems(new OreDictStack(STEEL.shell(), 3), + new ComparableStack(ModItems.plate_desh, 4), + new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), + new ComparableStack(ModBlocks.glass_quartz, 8))); + this.register(new GenericRecipe("ass.satellitescanner").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_scanner, 1)) + .inputItems(new OreDictStack(STEEL.shell(), 3), + new OreDictStack(TI.plateCast(), 8), + new ComparableStack(ModItems.plate_desh, 4), + new ComparableStack(ModItems.magnetron, 8), + new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED.ordinal()))); + this.register(new GenericRecipe("ass.satelliteradar").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_radar, 1)) + .inputItems(new OreDictStack(STEEL.shell(), 3), + new OreDictStack(TI.plateCast(), 12), + new ComparableStack(ModItems.magnetron, 12), + new ComparableStack(ModItems.coil_gold, 16), + new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()))); + this.register(new GenericRecipe("ass.satellitelaser").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_laser, 1)) + .inputItems(new OreDictStack(STEEL.shell(), 6), + new OreDictStack(CU.plateCast(), 24), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), + new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD), + new ComparableStack(ModItems.crystal_diamond, 8), + new ComparableStack(ModBlocks.glass_quartz, 8))); + this.register(new GenericRecipe("ass.satelliteresonator").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_resonator, 1)) + .inputItems(new OreDictStack(STEEL.plateCast(), 6), + new OreDictStack(STAR.ingot(), 12), + new OreDictStack(ANY_PLASTIC.ingot(), 48), + new ComparableStack(ModItems.crystal_xen, 1), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED))); + this.register(new GenericRecipe("ass.satelliterelay").setup(600, 100).outputItems(new ItemStack(ModItems.sat_foeq, 1)) + .inputItems(new OreDictStack(TI.shell(), 3), + new ComparableStack(ModItems.plate_desh, 8), + new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.HYDROGEN.getID()), + new ComparableStack(ModItems.photo_panel, 16), + new ComparableStack(ModItems.thruster_nuclear, 1), + new ComparableStack(ModItems.ingot_uranium_fuel, 6), + new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BASIC), + new ComparableStack(ModItems.magnetron, 3), + new ComparableStack(ModBlocks.machine_lithium_battery, 1))); + this.register(new GenericRecipe("ass.satelliteasteroidminer").setup(600, 100).outputItems(new ItemStack(ModItems.sat_miner, 1)) + .inputItems(new OreDictStack(BIGMT.plate(), 24), + new ComparableStack(ModItems.motor_desh, 2), + new ComparableStack(ModItems.drill_titanium, 2), + new ComparableStack(ModItems.circuit, 12, EnumCircuitType.ADVANCED), + new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), + new ComparableStack(ModItems.thruster_small, 1), + new ComparableStack(ModItems.photo_panel, 12), + new ComparableStack(ModItems.centrifuge_element, 4), + new ComparableStack(ModBlocks.machine_lithium_battery, 1))); + this.register(new GenericRecipe("ass.satellitelunarminer").setup(600, 100).outputItems(new ItemStack(ModItems.sat_lunar_miner, 1)) + .inputItems(new ComparableStack(ModItems.ingot_meteorite, 4), + new ComparableStack(ModItems.plate_desh, 4), + new ComparableStack(ModItems.motor, 2), + new ComparableStack(ModItems.drill_titanium, 2), + new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), + new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), + new ComparableStack(ModItems.thruster_small, 1), + new ComparableStack(ModItems.photo_panel, 12), + new ComparableStack(ModBlocks.machine_lithium_battery, 1))); + this.register(new GenericRecipe("ass.gerald").setup(6_000, 100).outputItems(new ItemStack(ModItems.sat_gerald, 1)) + .inputItems(new OreDictStack(SBD.plateCast(), 64), + new OreDictStack(SBD.plateCast(), 64), + new OreDictStack(BSCCO.wireDense(), 64), + new OreDictStack(BSCCO.wireDense(), 64), + new ComparableStack(ModBlocks.det_nuke, 64), + new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE), + new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE), + new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE), + new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE), + new ComparableStack(ModItems.circuit, 64, EnumCircuitType.CONTROLLER_QUANTUM), + new ComparableStack(ModItems.coin_ufo, 1)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "gerald")); + } public static HashMap getRecipes() { 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 f2c8dfd42..eff9d27a8 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java @@ -31,11 +31,22 @@ public class GenericRecipe { protected ItemStack icon; public boolean writeIcon = false; public boolean customLocalization = false; + protected String[] blueprintPools = null; public GenericRecipe(String name) { this.name = name; } + public boolean isPooled() { + return blueprintPools != null; + } + + public boolean isPartOfPool(String lookingFor) { + if(!isPooled()) return false; + for(String pool : blueprintPools) if (pool.equals(lookingFor)) return true; + return false; + } + public GenericRecipe setDuration(int duration) { this.duration = duration; return this; } public GenericRecipe setPower(long power) { this.power = power; return this; } public GenericRecipe setup(int duration, long power) { return this.setDuration(duration).setPower(power); } @@ -45,6 +56,7 @@ public class GenericRecipe { public GenericRecipe setIcon(Item item) { return this.setIcon(new ItemStack(item)); } 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 inputItems(AStack... input) { this.inputItem = input; return this; } public GenericRecipe inputFluids(FluidStack... input) { this.inputFluid = input; return this; } 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 4738b449a..1cb5cadb2 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipes.java @@ -32,8 +32,20 @@ public abstract class GenericRecipes extends Serializab public static final Random RNG = new Random(); + /** Alternate recipes, i.e. obtainable otherwise */ + public static final String POOL_PREFIX_ALT = "alt."; + /** Discoverable recipes, i.e. not obtainable otherwise */ + public static final String POOL_PREFIX_DISCOVER = "discover."; + /** Secret recipes, self-explantory. Why even have this comment? */ + public static final String POOL_PREFIX_SECRET = "secret."; + public List recipeOrderedList = new ArrayList(); public HashMap recipeNameMap = new HashMap(); + + /** Blueprint pool name to list of recipe names that are part of this pool */ + 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(); public abstract int inputItemLimit(); public abstract int inputFluidLimit(); @@ -41,6 +53,21 @@ public abstract class GenericRecipes extends Serializab public abstract int outputFluidLimit(); public boolean hasDuration() { return true; } public boolean hasPower() { return true; } + + public static void addToPool(String pool, GenericRecipe recipe) { + List list = blueprintPools.get(pool); + if(list == null) { + list = new ArrayList(); + blueprintPools.put(pool, list); + } + list.add(recipe.name); + pooledBlueprints.put(recipe.name, recipe); + } + + public static void clearPools() { + blueprintPools.clear(); + pooledBlueprints.clear(); + } @Override public Object getRecipeObject() { @@ -75,6 +102,7 @@ public abstract class GenericRecipes extends Serializab if(obj.has("icon")) recipe.setIcon(this.readItemStack(obj.get("icon").getAsJsonArray())); if(obj.has("named") && obj.get("named").getAsBoolean()) recipe.setNamed(); + if(obj.has("blueprintpool")) recipe.setPools(obj.get("blueprintpool").getAsString().split(":")); readExtraData(element, recipe); @@ -123,6 +151,7 @@ public abstract class GenericRecipes extends Serializab } if(recipe.customLocalization) writer.name("named").value(true); + if(recipe.blueprintPools != null && recipe.blueprintPools.length > 0) writer.name("blueprintpool").value(String.join(":", recipe.blueprintPools)); writeExtraData(recipe, writer); } diff --git a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java index f633298f1..8fa127907 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -106,6 +106,8 @@ public abstract class SerializableRecipe { MainRegistry.logger.info("Starting recipe init!"); + GenericRecipes.clearPools(); + for(SerializableRecipe recipe : recipeHandlers) { recipe.deleteRecipes(); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 251e2d396..f6afda0e0 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -553,7 +553,7 @@ public class ModItems { public static Item coil_copper; public static Item coil_copper_torus; public static Item coil_tungsten; - public static Item tank_steel; + @Deprecated public static Item tank_steel; public static Item motor; public static Item motor_desh; public static Item motor_bismuth; @@ -566,8 +566,6 @@ public class ModItems { public static Item coil_magnetized_tungsten; public static Item coil_gold; public static Item coil_gold_torus; - public static Item component_limiter; - public static Item component_emitter; public static Item chlorine_pinwheel; public static Item deuterium_filter; @@ -1183,6 +1181,7 @@ public class ModItems { public static Item radar_linker; public static Item settings_tool; + public static Item blueprints; public static Item template_folder; public static Item journal_pip; public static Item journal_bj; @@ -2716,8 +2715,6 @@ public class ModItems { coil_magnetized_tungsten = new Item().setUnlocalizedName("coil_magnetized_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_magnetized_tungsten"); coil_gold = new Item().setUnlocalizedName("coil_gold").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_gold"); coil_gold_torus = new Item().setUnlocalizedName("coil_gold_torus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_gold_torus"); - component_limiter = new Item().setUnlocalizedName("component_limiter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":component_limiter"); - component_emitter = new Item().setUnlocalizedName("component_emitter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":component_emitter"); chlorine_pinwheel = new ItemInfiniteFluid(Fluids.CHLORINE, 1, 2).setUnlocalizedName("chlorine_pinwheel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chlorine_pinwheel"); FluidTank.noDualUnload.add(chlorine_pinwheel); ring_starmetal = new Item().setUnlocalizedName("ring_starmetal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ring_starmetal"); @@ -4103,6 +4100,7 @@ public class ModItems { mech_key = new ItemCustomLore().setUnlocalizedName("mech_key").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":mech_key"); + blueprints = new ItemBlueprints().setUnlocalizedName("blueprints").setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":blueprints"); template_folder = new ItemTemplateFolder().setUnlocalizedName("template_folder").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":template_folder"); journal_pip = new ItemTemplateFolder().setUnlocalizedName("journal_pip").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":journal_pip"); journal_bj = new ItemTemplateFolder().setUnlocalizedName("journal_bj").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":journal_bj"); @@ -5521,10 +5519,6 @@ public class ModItems { //GameRegistry.registerItem(telepad, telepad.getUnlocalizedName()); GameRegistry.registerItem(entanglement_kit, entanglement_kit.getUnlocalizedName()); - //AMS Parts - GameRegistry.registerItem(component_limiter, component_limiter.getUnlocalizedName()); - GameRegistry.registerItem(component_emitter, component_emitter.getUnlocalizedName()); - //Bomb Parts GameRegistry.registerItem(fins_flat, fins_flat.getUnlocalizedName()); GameRegistry.registerItem(fins_small_steel, fins_small_steel.getUnlocalizedName()); @@ -5748,6 +5742,7 @@ public class ModItems { GameRegistry.registerItem(fusion_core_infinite, fusion_core_infinite.getUnlocalizedName()); //Folders + GameRegistry.registerItem(blueprints, blueprints.getUnlocalizedName()); GameRegistry.registerItem(template_folder, template_folder.getUnlocalizedName()); GameRegistry.registerItem(journal_pip, journal_pip.getUnlocalizedName()); GameRegistry.registerItem(journal_bj, journal_bj.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemBlueprints.java b/src/main/java/com/hbm/items/machine/ItemBlueprints.java new file mode 100644 index 000000000..84976e8c5 --- /dev/null +++ b/src/main/java/com/hbm/items/machine/ItemBlueprints.java @@ -0,0 +1,132 @@ +package com.hbm.items.machine; + +import java.util.List; +import java.util.Map.Entry; + +import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.inventory.recipes.loader.GenericRecipes; +import com.hbm.items.ModItems; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class ItemBlueprints extends Item { + + @SideOnly(Side.CLIENT) protected IIcon iconDiscover; + @SideOnly(Side.CLIENT) protected IIcon iconSecret; + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister reg) { + super.registerIcons(reg); + this.iconDiscover = reg.registerIcon(this.getIconString() + "_discover"); + this.iconSecret = reg.registerIcon(this.getIconString() + "_secret"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconIndex(ItemStack stack) { + return this.getIcon(stack, 0); + } + + @Override + public IIcon getIcon(ItemStack stack, int pass) { + + if(stack.hasTagCompound()) { + String poolName = stack.stackTagCompound.getString("pool"); + if(poolName == null) return this.itemIcon; + if(poolName.startsWith(GenericRecipes.POOL_PREFIX_DISCOVER)) return this.iconDiscover; + if(poolName.startsWith(GenericRecipes.POOL_PREFIX_SECRET)) return this.iconSecret; + } + + return this.itemIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + for(Entry> pool : GenericRecipes.blueprintPools.entrySet()) { + list.add(make(pool.getKey())); + } + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + if(world.isRemote) return stack; + if(!player.inventory.hasItem(Items.paper)) return stack; + + player.inventory.consumeInventoryItem(Items.paper); + player.swingItem(); + + ItemStack copy = stack.copy(); + copy.stackSize = 1; + + if(!player.capabilities.isCreativeMode) { + if(stack.stackSize < stack.getMaxStackSize()) { + stack.stackSize++; + return stack; + } + + if(!player.inventory.addItemStackToInventory(copy)) { + copy = stack.copy(); + copy.stackSize = 1; + player.dropPlayerItemWithRandomChoice(copy, false); + } + + player.inventoryContainer.detectAndSendChanges(); + } else { + player.dropPlayerItemWithRandomChoice(copy, false); + } + + return stack; + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add(EnumChatFormatting.RED + "Right-click to copy (requires paper)"); + + if(!stack.hasTagCompound()) { + return; + } + + String poolName = stack.stackTagCompound.getString("pool"); + List pool = GenericRecipes.blueprintPools.get(poolName); + + if(pool == null || pool.isEmpty()) { + return; + } + + for(String name : pool) { + GenericRecipe recipe = GenericRecipes.pooledBlueprints.get(name); + if(recipe != null) { + list.add(recipe.getLocalizedName()); + } + } + } + + public static String grabPool(ItemStack stack) { + if(stack == null) return null; + if(stack.getItem() != ModItems.blueprints) return null; + if(!stack.hasTagCompound()) return null; + if(!stack.stackTagCompound.hasKey("pool")) return null; + return stack.stackTagCompound.getString("pool"); + } + + public ItemStack make(String pool) { + ItemStack stack = new ItemStack(ModItems.blueprints); + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setString("pool", pool); + return stack; + } +} diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 5b9d63062..756760d15 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1714,6 +1714,8 @@ public class MainRegistry { ignoreMappings.add("hbm:item.chopper_tail"); ignoreMappings.add("hbm:item.chopper_wing"); ignoreMappings.add("hbm:item.chopper_blades"); + ignoreMappings.add("hbm:item.component_emitter"); + ignoreMappings.add("hbm:item.component_limiter"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/module/machine/ModuleMachineBase.java b/src/main/java/com/hbm/module/machine/ModuleMachineBase.java index 7787b4fbd..9815c0803 100644 --- a/src/main/java/com/hbm/module/machine/ModuleMachineBase.java +++ b/src/main/java/com/hbm/module/machine/ModuleMachineBase.java @@ -3,6 +3,7 @@ package com.hbm.module.machine; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.loader.GenericRecipe; import com.hbm.inventory.recipes.loader.GenericRecipes.IOutput; +import com.hbm.items.machine.ItemBlueprints; import api.hbm.energymk2.IEnergyHandlerMK2; import cpw.mods.fml.common.network.ByteBufUtils; @@ -130,8 +131,16 @@ public abstract class ModuleMachineBase { public abstract GenericRecipe getRecipe(); - public void update(double speed, double power, boolean extraCondition) { + public void update(double speed, double power, boolean extraCondition, ItemStack blueprint) { GenericRecipe recipe = getRecipe(); + + if(recipe != null && recipe.isPooled() && !recipe.isPartOfPool(ItemBlueprints.grabPool(blueprint))) { + this.didProcess = false; + this.progress = 0F; + this.recipe = "null"; + return; + } + this.setupTanks(recipe); this.didProcess = false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyMachine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyMachine.java index 508259c48..2ad98b8c0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyMachine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyMachine.java @@ -104,7 +104,7 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl pow += Math.min(upgradeManager.getLevel(UpgradeType.SPEED), 3) * 1D; pow += Math.min(upgradeManager.getLevel(UpgradeType.OVERDRIVE), 3) * 10D / 3D; - this.assemblerModule.update(speed, pow, true); + this.assemblerModule.update(speed, pow, true, slots[1]); this.didProcess = this.assemblerModule.didProcess; if(this.assemblerModule.markDirty) this.markDirty(); @@ -266,6 +266,7 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { if(slot == 0) return true; // battery + if(slot == 1 && stack.getItem() == ModItems.blueprints) return true; if(slot >= 2 && slot <= 3 && stack.getItem() instanceof ItemMachineUpgrade) return true; // upgrades if(this.assemblerModule.isItemValid(slot, stack)) return true; // recipe input crap return false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalFactory.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalFactory.java index 62b9f0a68..dfcd1c50d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalFactory.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalFactory.java @@ -10,6 +10,7 @@ import com.hbm.inventory.container.ContainerMachineChemicalFactory; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineChemicalFactory; +import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; @@ -101,6 +102,7 @@ public class TileEntityMachineChemicalFactory extends TileEntityMachineBase impl @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { if(slot == 0) return true; // battery + for(int i = 0; i < 4; i++) if(slot == 4 + i * 7 && stack.getItem() == ModItems.blueprints) return true; if(slot >= 1 && slot <= 3 && stack.getItem() instanceof ItemMachineUpgrade) return true; // upgrades for(int i = 0; i < 4; i++) if(this.chemplantModule[i].isItemValid(slot, stack)) return true; // recipe input crap return false; @@ -163,7 +165,7 @@ public class TileEntityMachineChemicalFactory extends TileEntityMachineBase impl boolean markDirty = false; for(int i = 0; i < 4; i++) { - this.chemplantModule[i].update(speed * 2D, pow * 2D, canCool()); + this.chemplantModule[i].update(speed * 2D, pow * 2D, canCool(), slots[4 + i * 7]); this.didProcess[i] = this.chemplantModule[i].didProcess; markDirty |= this.chemplantModule[i].markDirty; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalPlant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalPlant.java index 47e0a7d62..6a21f07de 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalPlant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalPlant.java @@ -110,7 +110,7 @@ public class TileEntityMachineChemicalPlant extends TileEntityMachineBase implem pow += Math.min(upgradeManager.getLevel(UpgradeType.SPEED), 3) * 1D; pow += Math.min(upgradeManager.getLevel(UpgradeType.OVERDRIVE), 3) * 10D / 3D; - this.chemplantModule.update(speed, pow, true); + this.chemplantModule.update(speed, pow, true, slots[1]); this.didProcess = this.chemplantModule.didProcess; if(this.chemplantModule.markDirty) this.markDirty(); @@ -232,6 +232,7 @@ public class TileEntityMachineChemicalPlant extends TileEntityMachineBase implem @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { if(slot == 0) return true; // battery + if(slot == 1 && stack.getItem() == ModItems.blueprints) return true; if(slot >= 2 && slot <= 3 && stack.getItem() instanceof ItemMachineUpgrade) return true; // upgrades if(slot >= 10 && slot <= 12) return true; // input fluid if(slot >= 16 && slot <= 18) return true; // output fluid diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 50aa4a009..7def2090a 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1416,6 +1416,7 @@ item.blades_schrabidium.name=Schrabidiumsägeblatt item.blades_steel.name=Stahlsägeblatt item.blades_titanium.name=Titansägeblatt item.blowtorch.name=Lötlampe +item.blueprints.name=Blaupausen item.board_copper.name=Kupfertafel item.boat_rubber.name=Schlauchboot item.bobmazon.name=Bobmazon diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index cb32c226e..0d27f7c80 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2160,6 +2160,7 @@ item.blades_desh.name=Desh Shredder Blades item.blades_steel.name=Steel Shredder Blades item.blades_titanium.name=Titanium Shredder Blades item.blowtorch.name=Blowtorch +item.blueprints.name=Blueprints item.board_copper.name=Copper Panel item.boat_rubber.name=Rubber Boat item.bobmazon.name=Bobmazon diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_assembler.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_assembler.png index dc9f7034bfa3723926a9e3a087278070caec4777..3101c24f903633853b12ac0e0fc9f60d57105786 100644 GIT binary patch literal 3490 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 literal 3445 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 LjP>(Q6Yu{E9d9*S diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_chemical_factory.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_chemical_factory.png index 7e6aa8347e4fff3bda07f1e73bea1f64835e6b4c..ae4a7ef6dfebea7a10da1bbe415b94fcc2daca3b 100644 GIT binary patch literal 3644 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 E0rwknW&i*H literal 3531 zcma)9c{r478-HfAm3=)?oJk1bI2|4Pn`9{@4Iwe9q?oc6*=Aa-;V?;(eM?2zMVPV_ zPEA9$>>)H5hKynGz3QCr`>yNzzU%s)f1c;Pp7(y9`}ezl_kF)_l(m&9Ki>{M006(a znXwH32zZGAJY4YPGxQljj5^lYWA#aVM1||(24hUl zV;?;gS&ITms_M>dLRB==j7U#|>5iP7-KM6yeF6fMY)W_rM6E(8ZzbPkM2oTJt&W8X zCoBZ0+ITn7s8<5mT|ER@L7|G6_5-E0wJPLR`J}}3YdUF;hUtBt3XP-IUls$W7oLg% z_=rE3KKC7=u5Gs8Ol4hq$SLcaSso_KC%nRccugDhzkmjE+fSW3g~e*_hqXeLs z8m;L1$u$6;K6vM5bv;bj1VB&J)P`3KZaKo+l=oEX`4anqje+G`av0!FJEz$?eDz5M z(kpO99jhs|-Og&IQk@rm6H1g%pt+Zq?$aG5{K;(%h!O-xZtG^eMzwF^q$!5*Sq*$Z zRL*f}Ac13(4gf_*5^p6DA<15QZaiHZBqSo|ry>lWFLR?#`z?RYlNX$;Dt$J=9r{4? zw4}8Ta_ZA>{P@nUE){cwP^Xp9L4S~6ww6!6nWToO4-V~H5#(uJUOx1q=6Y8^|46Oi zo%m4>$0=Pe(DkKkPkv`1XU%1EDMYHpq8~b?A7-XZMR;B@EDx0Fj?FMgeDdUEY2CW@ z&?ZL^i)D@tb6zqlW2Rm1D7s3-9Hx`C>EQ|Ojjt6LlZFRU-;J*gAN^QGk}_>nRzx(g zyVQ4F*+xrc2Tx2=S<7~OmVIkMK|wz7n9MkquIHVIA3Nkp$lRNRfs8LJuXSFCtxS2W z%RX^EZDn^OD~Z|1Wt3G3R^||i@`aqfj=apUHu1X!zYU*kyC%&;YD4~Ux@X_XZ;$(f z%@WU@6<(?JoEvQ)>UrcrphzTP{abdFzk$&XgC1OH+7$Nx7iL!zDVJ=XHo5M z_i_bWI{@R?wHrqh$Cq=d8JzZv)?wCZ)>5x#C+n<)qxAg2*)p&MGWnHuBAWcxds=)t zuv&{#Au)yg_hD0`r=0f24a;N%{o{)qYi>IDJhy&W%mq1Mx6IY=>7Xi6rQR#)D(z)C z!2`*^+(ofdk8{ncK*-`GK=CFdU7b}5R*E_1iGIvN%KeqgsH`n_I76uJV1~Z@QU4RkT9j=#zMEaLZ|1*X-05n_O+Di|w>$8En!eEi<|3=Wlqe*6<}dRHZNfye0DbVcxdW))KoLg5+mIu* zO!C-d2184T57y5u9R9fgWbBQI%;U!Ir#Yz-DCjLDCyk^dMZYidVIm@Nc<2`!5^0AS zhD&U>cy*2$=5ibkZ$s)*e4WT=q3m@h=S&hExYlkSRrU%gsUYRUu@bf+y*dI3H)AN* z1R>?;VfFnG4^Dzutj}wr?6p?Y&E2I;X%>FP}1x}kJEw4l85%Z_ntqY4(So*hN zPK}f`?78K#t3gu-O5=gM+C44&jV&Z9S^P~=-xr-jT&~8-8ktgs6o@|;iHc6(8#oR# zZmO(NNcpD~%0) zeympU-$^jKf?^-fo;J&hY(omUPAH1^776u33TvAW#Yr>61Th30A^AJ>hVw8;Nk?g+ zz4ZfSw&;&0H*OE0D6!W46d!6v+I;0}7uz^s)Ufg7CT_&dvw}3;T;|7~gnPnAgUX4~ z&3ppkN7ntI%HGYRL;cu4$vdCJ|B~~So^)~w7YAoG9btyKs$TwGfI^)z;6X_j7hJl_ zeS(W&wbrW`YKLyH|H?TtOn91>MvBGt7nakX1i6d|f2$~xkm>#^z9)%TBA=VcHy}gE z+>uHLo^o5c(NW+V zin~xq*NV|`YHs7`2O15h%kBx0n>rr@QH~tb@(v2M)lR=8i!5)qTRG2Sm$gs)*278D z*)@j*(Z>O3RsuxVy7&`iQBjln3L-RzEX#q4JfNoN&}I#G_`% zN@~Ta5W@-dU2Ow{dxL|gVJvz2Zpoh(J+;WAUP_DXmrJa#1wFHd0w3}kR5LC9oPBXy z7!ZrU7BDOn5ePr=-2nPU#TO72+T+=35rGl}7uJSOUvksEkd|@jhieQNLCFkSHr7Oi z9Dca}SHs#sPgXa5!QS9^T~Xl#xRbzr#Afv;viT7;1Tnn(+eqiM-`Fz8Y~}S3?>KuRUX?C`%zgII}r(W>V9(n9=_LRh{h2Y97b9 zlfR8v-Z9BJvN=l-yt0y_xld1E`xLq1o_cLTgC5@_P2MR_0ZOwDaeX~xEM#V8=I!+K z-nBD^v8=_>2-zKsH<&745Es6ntE+3Wx&G=E>0x?$sqAuRfFVJ@>jD!aYdeRmPD2Is zOOhosY2Dp+W4Z|2FG4c!5ndvwEbnRoqB)cqr=zmUyflc2yeI%7%{LtD-%mgeqh8wF z6eGFJEdSl4iCy*XLE`VzF(cmi%oqM;t9?-}<#l}N7@(8wZr3m!eejJhus|Xe+{*gW z6u|+4dSe-Y-khT&nfjr$WzD&6ga$9q{tgqYweS}}6nLJ%W4sFpY4k@ymnXqcouYy| zl;fU`!S4k4{8?i;;bdRngaj4ys*oj&%*V@%651QzvtHinhPC#iB4Lm_3Tn=^YRp8e z?;kuC83nQFD>F^b&XX<^zgi~nG=+YgQEW2K^dDX&6NZ=GL2T;&W*dAaDWG1GSPLNQ zhsCIXYlB;ySUL@FqY$7>t<)$8tG5lHsdiYQKmeKcnxTDa1&G1`pS$HzL<;dw1aSLg zg%&v@0H*HFps7?|F~V@uv<#?X65TxaAhpv`csTfNCfGkB+qD7wy|=GYlw|xC1#YyI z0brcFZY)=oLcFr(%0!k&(H#KytMsfrjn8G%)-ICY8OtTS{Q``RhMzIiVTrn8Kj<7U zM)B1V?e+Uoh)l)1NnhcF4&T%{ z+1{rIGN>npxoJ>d+@LvvXWw_H<4NwOt%MENiw}mxj-+mrBv#7E%Em;#J*O!gwIV+} zp3Xpl5kU;FzJmlxU(Shmg@p|V$U5k#!t%Ccbtd8P$qxs)w(s3}4`x7++i{3fl=|zK|FvC6nK6AA>Lpo7v5vvvVZ>cqB~A=Hy34;=;o&Rtyodg+ zqrLs;h7T#uJqZ0Fh_m9|UW=Zg=^>O{8Ip|8RfR^16^ad!W{h7GmUOW;tZ$*MLHZM6 zC6FYn?Ei49Zs{89F85?@K%EbFOGA7EBGBVn)?A#>)l2@5kUHlE> ux41t}wY!{*;B2l(6ztym=lcK04VK}HbFyfOL(jstjLZ*P85bMjZ~OyLHeh`K diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_chemplant.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_chemplant.png index d58713d9c3f848312cd58d877fd04d93f618154d..3ce1bc32c7c7bc336caa829c6559d5caf3a9c325 100644 GIT binary patch literal 3594 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 AKmY&$ literal 3535 zcma)8c|6ox8~^=gX@)n$6mh4qMcFE3Ez1nqNwTM6sH{n(!N|}iA$8jX6!xQqE z*NFnc#)&W!jx4)I+E}8ozcPG$jM}!s1vlCW&jybdSFBXdRreonDf+UZkXLkN{fi@u(HTSf@DTS_fRyEJ#pzqkkUcekIBivBedf; zBnjyOErLB=-BZK6x+|#jC~oNTe0Ibp_EKYsB;-;c)4I=Yk>3VhEf6SQP;JpMzX z8#S4BSb0T%5BRc*I`1ckTFSgT7%@Amb?g-Ca@w);eu9$v&sx2o`OA{}C(9>CldX1? zmX&!qIXQ(%=)mT=)n5fyxGjGPa11P4`+FNS`xz~X10QPz^w9mKpZxWjT z7p-KgTd7O0#lX646m$@I(w|Lxd>Kc?Zvyt6qfmU`4FxZs^EOafP>ecjBxqogb!c)A ziIo-_R~xAYK~@JduUhjZ!Rn+b-VXOpYT_}8=``_)bHiXf&?lsaP^b{3$3kX7H$_d6 z(z#%rG)Oe;DgdoO-tKdsIWW|8hV^`BQ~Bn{GSK}g<%0AvF3=2FDjopbUcQW3Msm3! z-=?PS+Usm-y|Q~&S^}sgGqVTNmjZ`IGM2|g z$zeY%^3(22J7-f%uo)~aFzh(zRVso?hShc8D*G^YbF;pq4>H@8OXk(DV~MGMW@-@_ z=f%o8Z@TE@<<45}(swunk9p?|Gdt&b$WKnBgql~MqxcXAyk%Ofol_WYvc4!M47t&m zl|weM)nVlE4&H~J@|#L;)qRc3)x#TY#`li;JMxl3kPn6H0I6vIkhaR5maC? zh5}N=eA%16;ldoBBh~^^{2Ecjc*HXmWK4hQ29=1VhmPTlj7KyCdAoka#cib2N3BOX z4ESTc5)OE6Dk0mhBBhuJNLf!I4LoDdT9l9tTYBSUqU$ppMx64=WaDLmFQA$WA}kyb z_9N_~1OycGz$5TnnfjXI_Tsc+&;}9zM+6`eIKVa%kiyLUhcFj_JRXd3sc!4D6M=+k z16&^RG{5{mypFC)A+sul!$%a4vFR$~{GU?p;YlectnthFKE+=|>eJ`#>|2edeLY$V zqY-uQXDFadfE*|2r@?>Q{u8woQd{N3HS1l~i9u*f@`Rs%D9mif^qP-inSG0@1I?>Hx3)<|bqQ-AKlD^@K4$LdhnjdmhB@Os z8!%mWJ3(D{en5MRJ)&^W%c7v~4r@;aMY-sN$Y=D$uLH0eVu@HD3(3Lb#&k1_CEIwx zXGl@dE3wmKT_X6dLiC*^o>=f*hY~@%=Di}EpE4QDIb-EjdD(z+$z;RjckezFl4HAu zCD$$|(leJZ>x|7s@|X+0sEs8G*o`>RCL5nNN7uUhRSSNCHVu52e0B8S4YlcWzcF$( zpYn=lhIgDz-P2rw!>Mi!%_Z+U`832fW>Trz_|8yW>t`DB+dy?A|7;mYt3US10>K`8 zl6OXk>(~R2xTg#0L`o2Kaaan+= zx(VnN;{(pbBcdGrUwkYZ+90hSHwUAiqm99dTr*%0fqJ=N6M%zgFIa45iYhB-MjGUY zWMrR`dvEH7%?MheX4LD}AtThC#Ygm?=8uq57Q7$tJ54!Hzh3Yw1U++TMC(`p>?WR1 z3NQz>1o)(cpy3*4>je+YXK1gn=q~(N5Dj2e)pJ)w1CZS_x+z~Z!OQ72qNW>Dmquvf zz4bR1JE7GtnqXUfjpXSrPGm!W;LvnDqSF9|X4bg%JQRd?%($4qMtc>B#`wigJ8n0= zJ*@wEKf(BXQW?5;B1Lj)9H(c+6gInbdq%&9Kc{ z@EcB*nv7hJjohnj-U z4`!tAsU5?pOF;tx2ZthnikYiPRy)26R&-x`)6&A$FSCpoetTlilgdgx$lMod3#{G_ zJWK)JFOQwF0{SPl8zsNY%(N{mQG<090wcm0JDYIa@Lk=aHb=4EUDMv(?OO2qbk&@9 zc}HO?;T2iO-!F0Jwu*0mvhC)*t<$HOH6&8x@|PfYpRTjsl1i|lTNc3m{nLHcPsf0- zbT%`VnDSs#)Zq`TRJALm9)`+qrkkofWmySnRhw0s_V82sLY1R5pJR!w!TXNkM1-r; zw}Wql7o4$XHx|)SO?zn8Ii97I3FWG2wJQ?c|DqqHB7j{`uOiyx>JBw4ijjIsF!S4z zAmE*_h$aPoAkZ*pHXjTzyoZldUx?1xAY`<5*JL7%K)@FetRqCOGge6 z4ch>gSP^XSHV!;-*mG{YXPlyDM6gg(S|k&LDEviayelav5BrXl}^|4(({*?b10lx^f%DnIK>$fMFZ%Se4T9GKD0WH{y7BJ2?+}F@Vq-_UAM)u0Csi)UiEmV_FBQGQCqK89mV$e;va$x6d915Kv40JM+3Q{GbeH+z}PjQBpKXcrT=>sv}x4^Q?`05Xfn!RJtlx zmzPVGN2xKe#BnH)X{XUb7hxn^Jur}V3MrIuiEv>B&f@zhvCKAH%{g;pYoj7V(#3xR DKjunf diff --git a/src/main/resources/assets/hbm/textures/items/blueprints.png b/src/main/resources/assets/hbm/textures/items/blueprints.png new file mode 100644 index 0000000000000000000000000000000000000000..225bec283a40a368b2fe88ed70f545c848ca102b GIT binary patch literal 379 zcmV->0fhdEP)3b->*B=6m`_w6kFQPHsh=bUSYqiAowd(3!w`|SM- zA$!EZVBnNe0N89qnrwU8z~u4TOVZh;JLeqzG1gkFwW#+8w4tpuX%cyBg;C{1{dy08 zQVN@m+7xNxC+SS4AI#=Uuc-~tA2(}klBCJD4=|fAn>+dZDxEPalH`P&yEktLfT^FP z$cF%wdePj0n2lLcg_# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/blueprints_discover.png b/src/main/resources/assets/hbm/textures/items/blueprints_discover.png new file mode 100644 index 0000000000000000000000000000000000000000..66cdcea650c4eb892facdfd28145531b98aae877 GIT binary patch literal 397 zcmV;80doF{P)gJZI z8f4uWChFVZKrLhn(aO@KsuScc{lnOj?Pq#-@4fH+-u2**(tb(^!&NEQlgWK6|6718 z91O12*>3mQg0ujm(WumQ9e^P4NYjmqnWo)>s71A-<2(YO>pDT;DL|TTS`e*iRd#gU zw_iazLc9}2+gi{xZG?CMpePEa(>ZCnQE`AM+7gDVQuDm0GD!|tRv*`OYDqwA9N!lJ z?Drq1J6J3pO3Uiggj6rC3K05FU$0G(=ak{s}Tp~f&x8{ZeqW_KKqM~b4rFuE8< zmn_T4vi$THs$@0!asP r9AAEk64G=aJ2rLpP(m&h{+qr4spP$PtFypF00000NkvXXu0mjf)by^B literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/blueprints_secret.png b/src/main/resources/assets/hbm/textures/items/blueprints_secret.png new file mode 100644 index 0000000000000000000000000000000000000000..9abb970571fc173b44a8a56657a9e92cd66fc43d GIT binary patch literal 313 zcmV-90mlA`P)2t*>Om%54B| zz!Y~R7%PbbBm@XU7WMcf%fOq_y-;J%>Yo7&0GK&m%=6r=X#gT(r4#@_tre$rjk%x0 zp@C#TbR5SK08mOntu+cx>)JrNt*UqYKA&HLbVOvT3TBQ;k8E-|9%CEnJpR;)$N(5K z+wU+KGe?SuiHI%BV$5v+#*tw_M93!j;Ic{I_W%GQY7Mf9r+1pB$wb76DC&^zNCVlX z1AOeDFaMmXYQ7DBZdLPGRqtNH8