From a41760affdb11d6abbb6c1f182e845458d4f5ab1 Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Tue, 24 Dec 2013 00:23:30 -0500 Subject: [PATCH] Chemical Injection Chamber initial work --- common/mekanism/api/RecipeHelper.java | 16 +++ common/mekanism/client/ClientProxy.java | 5 + .../gui/GuiChemicalInjectionChamber.java | 15 +++ ...ChemicalInjectionChamberRecipeHandler.java | 53 ++++++++++ .../client/nei/NEIMekanismConfig.java | 5 + common/mekanism/common/CommonProxy.java | 7 +- common/mekanism/common/IFactory.java | 7 +- common/mekanism/common/Mekanism.java | 26 ++++- common/mekanism/common/RecipeHandler.java | 13 ++- .../mekanism/common/block/BlockMachine.java | 41 +++++++- .../common/item/ItemBlockMachine.java | 36 ++++--- common/mekanism/common/item/ItemClump.java | 1 + .../mekanism/common/item/ItemDirtyDust.java | 1 + common/mekanism/common/item/ItemDust.java | 1 + common/mekanism/common/item/ItemIngot.java | 1 + common/mekanism/common/item/ItemShard.java | 55 +++++++++++ .../common/network/PacketConfigSync.java | 2 + .../TileEntityChemicalInjectionChamber.java | 91 ++++++++++++++++++ .../gui/GuiChemicalInjectionChamber.png | Bin 0 -> 4846 bytes resources/assets/mekanism/lang/en_US.lang | 13 +++ .../ChemicalInjectionChamberFrontOff.png | Bin 0 -> 2723 bytes .../ChemicalInjectionChamberFrontOn.png | Bin 0 -> 5953 bytes ...ChemicalInjectionChamberFrontOn.png.mcmeta | 5 + 23 files changed, 368 insertions(+), 26 deletions(-) create mode 100644 common/mekanism/client/gui/GuiChemicalInjectionChamber.java create mode 100644 common/mekanism/client/nei/ChemicalInjectionChamberRecipeHandler.java create mode 100644 common/mekanism/common/item/ItemShard.java create mode 100644 common/mekanism/common/tileentity/TileEntityChemicalInjectionChamber.java create mode 100644 resources/assets/mekanism/gui/GuiChemicalInjectionChamber.png create mode 100644 resources/assets/mekanism/textures/blocks/ChemicalInjectionChamberFrontOff.png create mode 100644 resources/assets/mekanism/textures/blocks/ChemicalInjectionChamberFrontOn.png create mode 100644 resources/assets/mekanism/textures/blocks/ChemicalInjectionChamberFrontOn.png.mcmeta diff --git a/common/mekanism/api/RecipeHelper.java b/common/mekanism/api/RecipeHelper.java index 65eedf53c..cdb9167a1 100644 --- a/common/mekanism/api/RecipeHelper.java +++ b/common/mekanism/api/RecipeHelper.java @@ -125,6 +125,22 @@ public final class RecipeHelper } } + /** + * Add a Chemical Injection Chamber recipe. + * @param input - input ItemStack + * @param output - output ItemStack + */ + public static void addChemicalInjectionChamberRecipe(ItemStack input, ItemStack output) + { + try { + Class recipeClass = Class.forName("mekanism.common.RecipeHandler"); + Method m = recipeClass.getMethod("addChemicalInjectionChamberRecipe", ItemStack.class, ItemStack.class); + m.invoke(null, input, output); + } catch(Exception e) { + System.err.println("[Mekanism] Error while adding recipe: " + e.getMessage()); + } + } + /** * Add a Metallurgic Infuser recipe. * @param input - input Infusion diff --git a/common/mekanism/client/ClientProxy.java b/common/mekanism/client/ClientProxy.java index 482dc8485..a99bc1a21 100644 --- a/common/mekanism/client/ClientProxy.java +++ b/common/mekanism/client/ClientProxy.java @@ -6,6 +6,7 @@ import java.util.HashMap; import mekanism.client.gui.GuiChemicalFormulator; import mekanism.client.gui.GuiChemicalInfuser; +import mekanism.client.gui.GuiChemicalInjectionChamber; import mekanism.client.gui.GuiCombiner; import mekanism.client.gui.GuiConfiguration; import mekanism.client.gui.GuiCredits; @@ -79,6 +80,7 @@ import mekanism.common.tileentity.TileEntityBin; import mekanism.common.tileentity.TileEntityChargepad; import mekanism.common.tileentity.TileEntityChemicalFormulator; import mekanism.common.tileentity.TileEntityChemicalInfuser; +import mekanism.common.tileentity.TileEntityChemicalInjectionChamber; import mekanism.common.tileentity.TileEntityCombiner; import mekanism.common.tileentity.TileEntityCrusher; import mekanism.common.tileentity.TileEntityDigitalMiner; @@ -267,6 +269,7 @@ public class ClientProxy extends CommonProxy ClientRegistry.registerTileEntity(TileEntityDigitalMiner.class, "DigitalMiner", new RenderDigitalMiner()); ClientRegistry.registerTileEntity(TileEntityRotaryCondensentrator.class, "RotaryCondensentrator", new RenderRotaryCondensentrator()); ClientRegistry.registerTileEntity(TileEntityTeleporter.class, "MekanismTeleporter", new RenderTeleporter()); + ClientRegistry.registerTileEntity(TileEntityChemicalInjectionChamber.class, "ChemicalInjectionChamber", new RenderConfigurableMachine()); } @Override @@ -387,6 +390,8 @@ public class ClientProxy extends CommonProxy return new GuiChemicalFormulator(player.inventory, (TileEntityChemicalFormulator)tileEntity); case 30: return new GuiChemicalInfuser(player.inventory, (TileEntityChemicalInfuser)tileEntity); + case 31: + return new GuiChemicalInjectionChamber(player.inventory, (TileEntityAdvancedElectricMachine)tileEntity); } return null; diff --git a/common/mekanism/client/gui/GuiChemicalInjectionChamber.java b/common/mekanism/client/gui/GuiChemicalInjectionChamber.java new file mode 100644 index 000000000..8fc1d9f05 --- /dev/null +++ b/common/mekanism/client/gui/GuiChemicalInjectionChamber.java @@ -0,0 +1,15 @@ +package mekanism.client.gui; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import mekanism.common.tileentity.TileEntityAdvancedElectricMachine; +import net.minecraft.entity.player.InventoryPlayer; + +@SideOnly(Side.CLIENT) +public class GuiChemicalInjectionChamber extends GuiAdvancedElectricMachine +{ + public GuiChemicalInjectionChamber(InventoryPlayer inventory, TileEntityAdvancedElectricMachine tentity) + { + super(inventory, tentity); + } +} diff --git a/common/mekanism/client/nei/ChemicalInjectionChamberRecipeHandler.java b/common/mekanism/client/nei/ChemicalInjectionChamberRecipeHandler.java new file mode 100644 index 000000000..540750b19 --- /dev/null +++ b/common/mekanism/client/nei/ChemicalInjectionChamberRecipeHandler.java @@ -0,0 +1,53 @@ +package mekanism.client.nei; + +import java.util.Set; + +import mekanism.client.gui.GuiChemicalInjectionChamber; +import mekanism.common.RecipeHandler.Recipe; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class ChemicalInjectionChamberRecipeHandler extends AdvancedMachineRecipeHandler +{ + @Override + public String getRecipeName() + { + return "Chemical Injection Chamber"; + } + + @Override + public String getRecipeId() + { + return "mekanism.chemicalinjectionchamber"; + } + + @Override + public String getOverlayIdentifier() + { + return "chemicalinjectionchamber"; + } + + @Override + public Set getRecipes() + { + return Recipe.PURIFICATION_CHAMBER.get().entrySet(); + } + + @Override + public String getGuiTexture() + { + return "mekanism:gui/GuiChemicalInjectionChamber.png"; + } + + @Override + public ItemStack getFuelStack() + { + return new ItemStack(Item.gunpowder); + } + + @Override + public Class getGuiClass() + { + return GuiChemicalInjectionChamber.class; + } +} diff --git a/common/mekanism/client/nei/NEIMekanismConfig.java b/common/mekanism/client/nei/NEIMekanismConfig.java index 3ef4dd5aa..c2b451bdd 100644 --- a/common/mekanism/client/nei/NEIMekanismConfig.java +++ b/common/mekanism/client/nei/NEIMekanismConfig.java @@ -1,5 +1,6 @@ package mekanism.client.nei; +import mekanism.client.gui.GuiChemicalInjectionChamber; import mekanism.client.gui.GuiCombiner; import mekanism.client.gui.GuiCrusher; import mekanism.client.gui.GuiEnrichmentChamber; @@ -33,6 +34,9 @@ public class NEIMekanismConfig implements IConfigureNEI API.registerRecipeHandler(new PurificationChamberRecipeHandler()); API.registerUsageHandler(new PurificationChamberRecipeHandler()); + API.registerRecipeHandler(new ChemicalInjectionChamberRecipeHandler()); + API.registerUsageHandler(new ChemicalInjectionChamberRecipeHandler()); + API.registerRecipeHandler(new MekanismRecipeHandler()); API.registerUsageHandler(new MekanismRecipeHandler()); @@ -41,6 +45,7 @@ public class NEIMekanismConfig implements IConfigureNEI API.setGuiOffset(GuiCrusher.class, 16, 6); API.setGuiOffset(GuiCombiner.class, 16, 6); API.setGuiOffset(GuiPurificationChamber.class, 16, 6); + API.setGuiOffset(GuiChemicalInjectionChamber.class, 16, 6); API.setGuiOffset(GuiMetallurgicInfuser.class, 5, 15); API.hideItem(Mekanism.boundingBlockID); diff --git a/common/mekanism/common/CommonProxy.java b/common/mekanism/common/CommonProxy.java index 3926aa110..2bef3ff1c 100644 --- a/common/mekanism/common/CommonProxy.java +++ b/common/mekanism/common/CommonProxy.java @@ -29,6 +29,7 @@ import mekanism.common.tileentity.TileEntityBin; import mekanism.common.tileentity.TileEntityChargepad; import mekanism.common.tileentity.TileEntityChemicalFormulator; import mekanism.common.tileentity.TileEntityChemicalInfuser; +import mekanism.common.tileentity.TileEntityChemicalInjectionChamber; import mekanism.common.tileentity.TileEntityCombiner; import mekanism.common.tileentity.TileEntityContainerBlock; import mekanism.common.tileentity.TileEntityCrusher; @@ -108,6 +109,7 @@ public class CommonProxy GameRegistry.registerTileEntity(TileEntityTeleporter.class, "MekanismTeleporter"); GameRegistry.registerTileEntity(TileEntityChemicalFormulator.class, "ChemicalFormulator"); GameRegistry.registerTileEntity(TileEntityChemicalInfuser.class, "ChemicalInfuser"); + GameRegistry.registerTileEntity(TileEntityChemicalInjectionChamber.class, "ChemicalInjectionChamber"); } /** @@ -199,12 +201,13 @@ public class CommonProxy Mekanism.crusherUsage = Mekanism.configuration.get("usage", "CrusherUsage", 50D).getDouble(50D); Mekanism.factoryUsage = Mekanism.configuration.get("usage", "FactoryUsage", 50D).getDouble(50D); Mekanism.metallurgicInfuserUsage = Mekanism.configuration.get("usage", "MetallurgicInfuserUsage", 50D).getDouble(50D); - Mekanism.purificationChamberUsage = Mekanism.configuration.get("usage", "PurificationChamberUsage", 50D).getDouble(50D); + Mekanism.purificationChamberUsage = Mekanism.configuration.get("usage", "PurificationChamberUsage", 100D).getDouble(100D); Mekanism.energizedSmelterUsage = Mekanism.configuration.get("usage", "EnergizedSmelterUsage", 50D).getDouble(50D); Mekanism.digitalMinerUsage = Mekanism.configuration.get("usage", "DigitalMinerUsage", 100D).getDouble(100D); Mekanism.rotaryCondensentratorUsage = Mekanism.configuration.get("usage", "RotaryCondensentratorUsage", 50D).getDouble(50D); Mekanism.chemicalFormulatorUsage = Mekanism.configuration.get("usage", "ChemicalFormulatorUsage", 100D).getDouble(100D); Mekanism.chemicalInfuserUsage = Mekanism.configuration.get("usage", "ChemicalInfuserUsage", 100D).getDouble(100D); + Mekanism.chemicalInjectionChamberUsage = Mekanism.configuration.get("usage", "ChemicalInjectionChamberUsage", 200D).getDouble(200D); Mekanism.configuration.save(); } @@ -340,6 +343,8 @@ public class CommonProxy return new ContainerChemicalFormulator(player.inventory, (TileEntityChemicalFormulator)tileEntity); case 30: return new ContainerChemicalInfuser(player.inventory, (TileEntityChemicalInfuser)tileEntity); + case 31: + return new ContainerAdvancedElectricMachine(player.inventory, (TileEntityAdvancedElectricMachine)tileEntity); } return null; diff --git a/common/mekanism/common/IFactory.java b/common/mekanism/common/IFactory.java index 154f2c0a4..659d5080b 100644 --- a/common/mekanism/common/IFactory.java +++ b/common/mekanism/common/IFactory.java @@ -35,7 +35,8 @@ public interface IFactory CRUSHING("crushing", "Crusher.ogg", MachineType.CRUSHER.getStack(), false), COMPRESSING("compressing", "Compressor.ogg", MachineType.OSMIUM_COMPRESSOR.getStack(), true), COMBINING("combining", "Combiner.ogg", MachineType.COMBINER.getStack(), true), - PURIFYING("purifying", "PurificationChamber.ogg", MachineType.PURIFICATION_CHAMBER.getStack(), true); + PURIFYING("purifying", "PurificationChamber.ogg", MachineType.PURIFICATION_CHAMBER.getStack(), true), + INJECTING("injecting", "ChemicalInjectionChamber.ogg", MachineType.CHEMICAL_INJECTION_CHAMBER.getStack(), true); private String name; private String sound; @@ -83,6 +84,10 @@ public interface IFactory { return RecipeHandler.getOutput(input, stackDecrease, Recipe.PURIFICATION_CHAMBER.get()); } + else if(this == INJECTING) + { + return RecipeHandler.getOutput(input, stackDecrease, Recipe.CHEMICAL_INJECTION_CHAMBER.get()); + } return null; } diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index 2a0c5f92a..db8f7a03a 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -67,6 +67,7 @@ import mekanism.common.item.ItemPortableTeleporter; import mekanism.common.item.ItemProxy; import mekanism.common.item.ItemRobit; import mekanism.common.item.ItemScubaTank; +import mekanism.common.item.ItemShard; import mekanism.common.item.ItemWalkieTalkie; import mekanism.common.multipart.ItemPartTransmitter; import mekanism.common.multipart.MultipartMekanism; @@ -229,6 +230,7 @@ public class Mekanism public static ItemGasMask GasMask; public static Item Dictionary; public static Item Balloon; + public static Item Shard; //Blocks public static Block BasicBlock; @@ -291,6 +293,7 @@ public class Mekanism public static double rotaryCondensentratorUsage; public static double chemicalFormulatorUsage; public static double chemicalInfuserUsage; + public static double chemicalInjectionChamberUsage; /** * Adds all in-game crafting and smelting recipes. @@ -602,6 +605,9 @@ public class Mekanism RecipeHandler.addPurificationChamberRecipe(new ItemStack(Block.obsidian), new ItemStack(Clump, 2, 6)); RecipeHandler.addPurificationChamberRecipe(new ItemStack(Block.cobblestone), new ItemStack(Block.gravel)); + //Chemical Injection Chamber Recipes + RecipeHandler.addPurificationChamberRecipe(new ItemStack(Block.obsidian), new ItemStack(Shard, 3, 6)); + //Metallurgic Infuser Recipes RecipeHandler.addMetallurgicInfuserRecipe(InfusionInput.getInfusion(InfuseRegistry.get("CARBON"), 10, new ItemStack(Item.ingotIron)), new ItemStack(EnrichedIron)); RecipeHandler.addMetallurgicInfuserRecipe(InfusionInput.getInfusion(InfuseRegistry.get("CARBON"), 10, new ItemStack(EnrichedIron)), new ItemStack(Dust, 1, 5)); @@ -637,8 +643,8 @@ public class Mekanism Dictionary = new ItemDictionary(configuration.getItem("Dictionary", 11201).getInt()).setUnlocalizedName("Dictionary"); GasMask = (ItemGasMask)new ItemGasMask(configuration.getItem("GasMask", 11202).getInt()).setUnlocalizedName("GasMask"); ScubaTank = (ItemScubaTank)new ItemScubaTank(configuration.getItem("ScubaTank", 11203).getInt()).setUnlocalizedName("ScubaTank"); - Dust = new ItemDust(configuration.getItem("Dust", 11204).getInt()-256); - Ingot = new ItemIngot(configuration.getItem("Ingot", 11205).getInt()-256); + Dust = new ItemDust(configuration.getItem("Dust", 11204).getInt()); + Ingot = new ItemIngot(configuration.getItem("Ingot", 11205).getInt()); EnergyTablet = (ItemEnergized)new ItemEnergized(configuration.getItem("EnergyTablet", 11206).getInt(), 1000000, 120).setUnlocalizedName("EnergyTablet"); SpeedUpgrade = new ItemMachineUpgrade(configuration.getItem("SpeedUpgrade", 11207).getInt()).setUnlocalizedName("SpeedUpgrade"); EnergyUpgrade = new ItemMachineUpgrade(configuration.getItem("EnergyUpgrade", 11208).getInt()).setUnlocalizedName("EnergyUpgrade"); @@ -652,16 +658,16 @@ public class Mekanism CompressedCarbon = new ItemMekanism(configuration.getItem("CompressedCarbon", 11216).getInt()).setUnlocalizedName("CompressedCarbon"); PortableTeleporter = new ItemPortableTeleporter(configuration.getItem("PortableTeleporter", 11217).getInt()).setUnlocalizedName("PortableTeleporter"); TeleportationCore = new ItemMekanism(configuration.getItem("TeleportationCore", 11218).getInt()).setUnlocalizedName("TeleportationCore"); - Clump = new ItemClump(configuration.getItem("Clump", 11219).getInt()-256); - DirtyDust = new ItemDirtyDust(configuration.getItem("DirtyDust", 11220).getInt()-256); + Clump = new ItemClump(configuration.getItem("Clump", 11219).getInt()); + DirtyDust = new ItemDirtyDust(configuration.getItem("DirtyDust", 11220).getInt()); Configurator = new ItemConfigurator(configuration.getItem("Configurator", 11221).getInt()).setUnlocalizedName("Configurator"); NetworkReader = new ItemNetworkReader(configuration.getItem("NetworkReader", 11222).getInt()).setUnlocalizedName("NetworkReader"); Jetpack = (ItemJetpack)new ItemJetpack(configuration.getItem("Jetpack", 11223).getInt()).setUnlocalizedName("Jetpack"); WalkieTalkie = new ItemWalkieTalkie(configuration.getItem("WalkieTalkie", 11224).getInt()).setUnlocalizedName("WalkieTalkie"); PartTransmitter = new ItemPartTransmitter(configuration.getItem("MultipartTransmitter", 11225).getInt()).setUnlocalizedName("MultipartTransmitter"); Balloon = new ItemBalloon(configuration.getItem("Balloon", 11226).getInt()).setUnlocalizedName("Balloon"); + Shard = new ItemShard(configuration.getItem("Shard", 11227).getInt()); configuration.save(); - //TODO 1.7, fix item shifts //Registrations GameRegistry.registerItem(ElectricBow, "ElectricBow"); @@ -690,6 +696,7 @@ public class Mekanism GameRegistry.registerItem(GasMask, "GasMask"); GameRegistry.registerItem(ScubaTank, "ScubaTank"); GameRegistry.registerItem(Balloon, "Balloon"); + GameRegistry.registerItem(Shard, "Shard"); } /** @@ -780,6 +787,15 @@ public class Mekanism OreDictionary.registerOre("clumpObsidian", new ItemStack(Clump, 1, 6)); OreDictionary.registerOre("clumpLead", new ItemStack(Clump, 1, 7)); + OreDictionary.registerOre("shardIron", new ItemStack(Shard, 1, 0)); + OreDictionary.registerOre("shardGold", new ItemStack(Shard, 1, 1)); + OreDictionary.registerOre("shardOsmium", new ItemStack(Shard, 1, 2)); + OreDictionary.registerOre("shardCopper", new ItemStack(Shard, 1, 3)); + OreDictionary.registerOre("shardTin", new ItemStack(Shard, 1, 4)); + OreDictionary.registerOre("shardSilver", new ItemStack(Shard, 1, 5)); + OreDictionary.registerOre("shardObsidian", new ItemStack(Shard, 1, 6)); + OreDictionary.registerOre("shardLead", new ItemStack(Shard, 1, 7)); + OreDictionary.registerOre("oreOsmium", new ItemStack(OreBlock, 1, 0)); OreDictionary.registerOre("oreCopper", new ItemStack(OreBlock, 1, 1)); OreDictionary.registerOre("oreTin", new ItemStack(OreBlock, 1, 2)); diff --git a/common/mekanism/common/RecipeHandler.java b/common/mekanism/common/RecipeHandler.java index 0c3bbce56..83cc9a6a2 100644 --- a/common/mekanism/common/RecipeHandler.java +++ b/common/mekanism/common/RecipeHandler.java @@ -103,6 +103,16 @@ public final class RecipeHandler Recipe.CHEMICAL_FORMULATOR.put(input, output); } + /** + * Add a Chemical Injection Chamber recipe. + * @param input - input ItemStack + * @param output - output ItemStack + */ + public static void addChemicalInjectionChamberRecipe(ItemStack input, ItemStack output) + { + Recipe.CHEMICAL_INJECTION_CHAMBER.put(input, output); + } + /** * Gets the InfusionOutput of the InfusionInput in the parameters. * @param infusion - input Infusion @@ -239,7 +249,8 @@ public final class RecipeHandler PURIFICATION_CHAMBER(new HashMap()), METALLURGIC_INFUSER(new HashMap()), CHEMICAL_INFUSER(new HashMap()), - CHEMICAL_FORMULATOR(new HashMap()); + CHEMICAL_FORMULATOR(new HashMap()), + CHEMICAL_INJECTION_CHAMBER(new HashMap()); private HashMap recipes; diff --git a/common/mekanism/common/block/BlockMachine.java b/common/mekanism/common/block/BlockMachine.java index b78fef838..7e5480762 100644 --- a/common/mekanism/common/block/BlockMachine.java +++ b/common/mekanism/common/block/BlockMachine.java @@ -31,6 +31,7 @@ import mekanism.common.tileentity.TileEntityBasicBlock; import mekanism.common.tileentity.TileEntityChargepad; import mekanism.common.tileentity.TileEntityChemicalFormulator; import mekanism.common.tileentity.TileEntityChemicalInfuser; +import mekanism.common.tileentity.TileEntityChemicalInjectionChamber; import mekanism.common.tileentity.TileEntityCombiner; import mekanism.common.tileentity.TileEntityContainerBlock; import mekanism.common.tileentity.TileEntityCrusher; @@ -96,6 +97,9 @@ import cpw.mods.fml.relauncher.SideOnly; * 0:14: Chargepad * 0:15: Logistical Sorter * 1:0: Rotary Condensentrator + * 1:1: Chemical Formulator + * 1:2: Chemical Infuser + * 1:3: Chemical Injection Chamber * @author AidanBrady * */ @@ -147,6 +151,12 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds icons[10][2] = register.registerIcon("mekanism:SteelCasing"); icons[11][0] = register.registerIcon("mekanism:Teleporter"); } + else if(blockID == Mekanism.machineBlock2ID) + { + icons[3][0] = register.registerIcon("mekanism:ChemicalInjectionChamberFrontOff"); + icons[3][1] = register.registerIcon("mekanism:ChemicalInjectionChamberFrontOn"); + icons[3][2] = register.registerIcon("mekanism:SteelCasing"); + } } @Override @@ -398,6 +408,19 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds return icons[11][0]; } } + else if(blockID == Mekanism.machineBlock2ID) + { + if(meta == 3) + { + if(side == 3) + { + return icons[3][0]; + } + else { + return icons[3][2]; + } + } + } return null; } @@ -518,6 +541,19 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds return icons[11][0]; } } + else if(blockID == Mekanism.machineBlock2ID) + { + if(metadata == 3) + { + if(side == tileEntity.facing) + { + return MekanismUtils.isActive(world, x, y, z) ? icons[3][1] : icons[3][0]; + } + else { + return icons[3][2]; + } + } + } return null; } @@ -534,7 +570,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds { for(MachineType type : MachineType.values()) { - if(type == MachineType.CHEMICAL_FORMULATOR || type == MachineType.CHEMICAL_INFUSER /*TODO*/) + if(type == MachineType.CHEMICAL_FORMULATOR || type == MachineType.CHEMICAL_INFUSER || type == MachineType.CHEMICAL_INJECTION_CHAMBER /*TODO*/) { continue; } @@ -1040,7 +1076,8 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds LOGISTICAL_SORTER(Mekanism.machineBlockID, 15, "LogisticalSorter", -1, 0, TileEntityLogisticalSorter.class, true), ROTARY_CONDENSENTRATOR(Mekanism.machineBlock2ID, 0, "RotaryCondensentrator", 7, 20000, TileEntityRotaryCondensentrator.class, true), CHEMICAL_FORMULATOR(Mekanism.machineBlock2ID, 1, "ChemicalFormulator", 29, 20000, TileEntityChemicalFormulator.class, true), - CHEMICAL_INFUSER(Mekanism.machineBlock2ID, 2, "ChemicalInfuser", 30, 20000, TileEntityChemicalInfuser.class, true); + CHEMICAL_INFUSER(Mekanism.machineBlock2ID, 2, "ChemicalInfuser", 30, 20000, TileEntityChemicalInfuser.class, true), + CHEMICAL_INJECTION_CHAMBER(Mekanism.machineBlock2ID, 3, "ChemicalInjectionChamber", 31, Mekanism.chemicalInjectionChamberUsage*400, TileEntityChemicalInjectionChamber.class, false); public int typeId; public int meta; diff --git a/common/mekanism/common/item/ItemBlockMachine.java b/common/mekanism/common/item/ItemBlockMachine.java index 5593a6856..aab060eb0 100644 --- a/common/mekanism/common/item/ItemBlockMachine.java +++ b/common/mekanism/common/item/ItemBlockMachine.java @@ -61,22 +61,26 @@ import cpw.mods.fml.relauncher.SideOnly; /** * Item class for handling multiple machine block IDs. - * 0: Enrichment Chamber - * 1: Osmium Compressor - * 2: Combiner - * 3: Crusher - * 4: Digital Miner - * 5: Basic Factory - * 6: Advanced Factory - * 7: Elite Factory - * 8: Metallurgic Infuser - * 9: Purification Chamber - * 10: Energized Smelter - * 11: Teleporter - * 12: Electric Pump - * 13: Electric Chest - * 14: Chargepad - * 15: Logistical Sorter + * 0:0: Enrichment Chamber + * 0:1: Osmium Compressor + * 0:2: Combiner + * 0:3: Crusher + * 0:4: Digital Miner + * 0:5: Basic Factory + * 0:6: Advanced Factory + * 0:7: Elite Factory + * 0:8: Metallurgic Infuser + * 0:9: Purification Chamber + * 0:10: Energized Smelter + * 0:11: Teleporter + * 0:12: Electric Pump + * 0:13: Electric Chest + * 0:14: Chargepad + * 0:15: Logistical Sorter + * 1:0: Rotary Condensentrator + * 1:1: Chemical Formulator + * 1:2: Chemical Infuser + * 1:3: Chemical Injection Chamber * @author AidanBrady * */ diff --git a/common/mekanism/common/item/ItemClump.java b/common/mekanism/common/item/ItemClump.java index fd2da0cfd..409b43ac7 100644 --- a/common/mekanism/common/item/ItemClump.java +++ b/common/mekanism/common/item/ItemClump.java @@ -11,6 +11,7 @@ import net.minecraft.util.Icon; public class ItemClump extends ItemMekanism { public Icon[] icons = new Icon[256]; + public static String[] en_USNames = {"Iron", "Gold", "Osmium", "Copper", "Tin", "Silver", "Obsidian", "Lead"}; diff --git a/common/mekanism/common/item/ItemDirtyDust.java b/common/mekanism/common/item/ItemDirtyDust.java index e3fc08dbc..7d7b25436 100644 --- a/common/mekanism/common/item/ItemDirtyDust.java +++ b/common/mekanism/common/item/ItemDirtyDust.java @@ -11,6 +11,7 @@ import net.minecraft.util.Icon; public class ItemDirtyDust extends ItemMekanism { public Icon[] icons = new Icon[256]; + public static String[] en_USNames = {"Iron", "Gold", "Osmium", "Copper", "Tin", "Silver", "Obsidian", "Lead"}; diff --git a/common/mekanism/common/item/ItemDust.java b/common/mekanism/common/item/ItemDust.java index b98390053..325179d1c 100644 --- a/common/mekanism/common/item/ItemDust.java +++ b/common/mekanism/common/item/ItemDust.java @@ -11,6 +11,7 @@ import net.minecraft.util.Icon; public class ItemDust extends ItemMekanism { public Icon[] icons = new Icon[256]; + public static String[] en_USNames = {"Iron", "Gold", "Osmium", "Obsidian", "Diamond", "Steel", "Copper", "Tin", "Silver", diff --git a/common/mekanism/common/item/ItemIngot.java b/common/mekanism/common/item/ItemIngot.java index b636325b4..454c37bd5 100644 --- a/common/mekanism/common/item/ItemIngot.java +++ b/common/mekanism/common/item/ItemIngot.java @@ -11,6 +11,7 @@ import net.minecraft.util.Icon; public class ItemIngot extends ItemMekanism { public Icon[] icons = new Icon[256]; + public static String[] en_USNames = {"Obsidian", "Osmium", "Bronze", "Glowstone", "Steel", "Copper", "Tin"}; public ItemIngot(int id) diff --git a/common/mekanism/common/item/ItemShard.java b/common/mekanism/common/item/ItemShard.java new file mode 100644 index 000000000..a50f7b1d6 --- /dev/null +++ b/common/mekanism/common/item/ItemShard.java @@ -0,0 +1,55 @@ +package mekanism.common.item; + +import java.util.List; + +import mekanism.common.Mekanism; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Icon; + +public class ItemShard extends ItemMekanism +{ + public Icon[] icons = new Icon[256]; + + public static String[] en_USNames = {"Iron", "Gold", "Osmium", + "Copper", "Tin", "Silver", + "Obsidian", "Lead"}; + + public ItemShard(int id) + { + super(id); + setHasSubtypes(true); + setCreativeTab(Mekanism.tabMekanism); + } + + @Override + public void registerIcons(IconRegister register) + { + for(int i = 0; i <= 7; i++) + { + icons[i] = register.registerIcon("mekanism:" + en_USNames[i] + "Shard"); + } + } + + @Override + public Icon getIconFromDamage(int meta) + { + return icons[meta]; + } + + @Override + public void getSubItems(int id, CreativeTabs tabs, List itemList) + { + for(int counter = 0; counter <= 7; ++counter) + { + itemList.add(new ItemStack(this, 1, counter)); + } + } + + @Override + public String getUnlocalizedName(ItemStack item) + { + return "item." + en_USNames[item.getItemDamage()].toLowerCase() + "Shard"; + } +} diff --git a/common/mekanism/common/network/PacketConfigSync.java b/common/mekanism/common/network/PacketConfigSync.java index 26d5f8409..3c95aa6a9 100644 --- a/common/mekanism/common/network/PacketConfigSync.java +++ b/common/mekanism/common/network/PacketConfigSync.java @@ -66,6 +66,7 @@ public class PacketConfigSync implements IMekanismPacket Mekanism.rotaryCondensentratorUsage = dataStream.readDouble(); Mekanism.chemicalFormulatorUsage = dataStream.readDouble(); Mekanism.chemicalInfuserUsage = dataStream.readDouble(); + Mekanism.chemicalInjectionChamberUsage = dataStream.readDouble(); Mekanism.proxy.onConfigSync(); } @@ -110,5 +111,6 @@ public class PacketConfigSync implements IMekanismPacket dataStream.writeDouble(Mekanism.rotaryCondensentratorUsage); dataStream.writeDouble(Mekanism.chemicalFormulatorUsage); dataStream.writeDouble(Mekanism.chemicalInfuserUsage); + dataStream.writeDouble(Mekanism.chemicalInjectionChamberUsage); } } diff --git a/common/mekanism/common/tileentity/TileEntityChemicalInjectionChamber.java b/common/mekanism/common/tileentity/TileEntityChemicalInjectionChamber.java new file mode 100644 index 000000000..a198a0cf0 --- /dev/null +++ b/common/mekanism/common/tileentity/TileEntityChemicalInjectionChamber.java @@ -0,0 +1,91 @@ +package mekanism.common.tileentity; + +import java.util.Map; + +import mekanism.api.gas.Gas; +import mekanism.api.gas.GasRegistry; +import mekanism.api.gas.GasStack; +import mekanism.api.gas.GasTransmission; +import mekanism.api.gas.IGasHandler; +import mekanism.api.gas.IGasItem; +import mekanism.api.gas.ITubeConnection; +import mekanism.common.Mekanism; +import mekanism.common.RecipeHandler.Recipe; +import mekanism.common.block.BlockMachine.MachineType; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.ForgeDirection; + +public class TileEntityChemicalInjectionChamber extends TileEntityAdvancedElectricMachine implements IGasHandler, ITubeConnection +{ + public TileEntityChemicalInjectionChamber() + { + super("ChemicalInjectionChamber.ogg", "ChemicalInjectionChamber", new ResourceLocation("mekanism", "gui/GuiChemicalInjectionChamber.png"), Mekanism.chemicalInjectionChamberUsage, 1, 200, MachineType.CHEMICAL_INJECTION_CHAMBER.baseEnergy, 1200); + } + + @Override + public Map getRecipes() + { + return Recipe.CHEMICAL_INJECTION_CHAMBER.get(); + } + + @Override + public int getFuelTicks(ItemStack itemstack) + { + if(itemstack.isItemEqual(new ItemStack(Item.gunpowder))) return 20; + if(itemstack.isItemEqual(new ItemStack(Mekanism.GasTank)) && ((IGasItem)itemstack.getItem()).getGas(itemstack) != null && + ((IGasItem)itemstack.getItem()).getGas(itemstack).getGas() == GasRegistry.getGas("sulfuricAcid")) return 1; + + return 0; + } + + @Override + public int receiveGas(ForgeDirection side, GasStack stack) + { + if(stack.getGas() == GasRegistry.getGas("sulfuricAcid")) + { + int toUse = Math.min(MAX_SECONDARY_ENERGY-secondaryEnergyStored, stack.amount); + secondaryEnergyStored += toUse; + return toUse; + } + + return 0; + } + + @Override + public boolean canReceiveGas(ForgeDirection side, Gas type) + { + return type == GasRegistry.getGas("sulfuricAcid"); + } + + @Override + public void handleSecondaryFuel() + { + if(inventory[1] != null && secondaryEnergyStored < MAX_SECONDARY_ENERGY) + { + GasStack removed = GasTransmission.removeGas(inventory[1], GasRegistry.getGas("sulfuricAcid"), MAX_SECONDARY_ENERGY-secondaryEnergyStored); + setSecondaryEnergy(secondaryEnergyStored + (removed != null ? removed.amount : 0)); + } + + super.handleSecondaryFuel(); + } + + @Override + public boolean canTubeConnect(ForgeDirection side) + { + return true; + } + + @Override + public GasStack drawGas(ForgeDirection side, int amount) + { + return null; + } + + @Override + public boolean canDrawGas(ForgeDirection side, Gas type) + { + return false; + } +} diff --git a/resources/assets/mekanism/gui/GuiChemicalInjectionChamber.png b/resources/assets/mekanism/gui/GuiChemicalInjectionChamber.png new file mode 100644 index 0000000000000000000000000000000000000000..bf1276089024d667a88126578b9921631d0bc328 GIT binary patch literal 4846 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 literal 0 HcmV?d00001 diff --git a/resources/assets/mekanism/lang/en_US.lang b/resources/assets/mekanism/lang/en_US.lang index 750cea0fe..b4a3ea02c 100644 --- a/resources/assets/mekanism/lang/en_US.lang +++ b/resources/assets/mekanism/lang/en_US.lang @@ -68,6 +68,7 @@ tile.MachineBlock.DigitalMiner.name=Digital Miner tile.MachineBlock2.RotaryCondensentrator.name=Rotary Condensentrator tile.MachineBlock2.ChemicalFormulator.name=Chemical Formulator tile.MachineBlock2.ChemicalInfuser.name=Chemical Infuser +tile.MachineBlock2.ChemicalInjectionChamber.name=Chemical Injection Chamber //Ore Block tile.OreBlock.OsmiumOre.name=Osmium Ore @@ -117,6 +118,16 @@ item.silverClump.name=Silver Clump item.obsidianClump.name=Obsidian Clump item.leadClump.name=Lead Clump +//Shards +item.ironShard.name=Iron Shard +item.goldShard.name=Gold Shard +item.osmiumShard.name=Osmium Shard +item.copperShard.name=Copper Shard +item.tinShard.name=Tin Shard +item.silverShard.name=Silver Shard +item.obsidianShard.name=Obsidian Shard +item.leadShard.name=Lead Shard + //Dirty Dust item.dirtyIronDust.name=Dirty Iron Dust item.dirtyGoldDust.name=Dirty Gold Dust @@ -198,6 +209,7 @@ gui.factory.crushing=Crushing gui.factory.compressing=Compressing gui.factory.combining=Combining gui.factory.purifying=Purifying +gui.factory.injecting=Injecting gui.factory.autoSort=Auto-sort gui.oredictFilter=OreDict Filter @@ -291,6 +303,7 @@ tooltip.ElectricChest=A portable, 54-slot chest that uses energy to lock !nitsel tooltip.Chargepad=A universal chargepad that can charge any energized item !nfrom any mod. tooltip.LogisticalSorter=A filter-based, advanced sorting machine that !ncan auto-eject specified items out of and into !nadjacent inventories and Logistical Transporters. tooltip.RotaryCondensentrator=A machine capable of converting gasses into !ntheir fluid form and vice versa. +tooltip.ChemicalInjectionChamber=An elite machine capable of processing !nores into four shards, serving as the initial !nstage of 400% ore processing. tooltip.OsmiumOre=A strong mineral that can be found !nat nearly any height in the world. !nIt is known to have many uses in !nthe construction of machinery. tooltip.CopperOre=A common, conductive material that !ncan be used in the production of !nwires. It's ability to withstand !nhigh heats also makes it essential !nto advanced machinery. diff --git a/resources/assets/mekanism/textures/blocks/ChemicalInjectionChamberFrontOff.png b/resources/assets/mekanism/textures/blocks/ChemicalInjectionChamberFrontOff.png new file mode 100644 index 0000000000000000000000000000000000000000..28ffbcba228d907e90cb0edbae45cf647b3ce723 GIT binary patch literal 2723 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 literal 0 HcmV?d00001 diff --git a/resources/assets/mekanism/textures/blocks/ChemicalInjectionChamberFrontOn.png.mcmeta b/resources/assets/mekanism/textures/blocks/ChemicalInjectionChamberFrontOn.png.mcmeta new file mode 100644 index 000000000..24f9c2fae --- /dev/null +++ b/resources/assets/mekanism/textures/blocks/ChemicalInjectionChamberFrontOn.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +}