From b180f4e9688a71f741453d6603302fa1e095b10b Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Sun, 26 Jan 2014 17:12:03 -0500 Subject: [PATCH 1/9] Started on new machines --- common/mekanism/client/ClientProxy.java | 9 + .../model/ModelChemicalCrystalizer.java | 314 ++++++++++++++++++ .../ModelChemicalDissolutionChamber.java | 314 ++++++++++++++++++ .../client/model/ModelChemicalWasher.java | 300 +++++++++++++++++ .../render/block/MachineRenderingHandler.java | 49 ++- .../tileentity/RenderChemicalCrystalizer.java | 44 +++ .../RenderChemicalDissolutionChamber.java | 44 +++ .../tileentity/RenderChemicalWasher.java | 40 +++ common/mekanism/common/CommonProxy.java | 9 + common/mekanism/common/Mekanism.java | 3 + .../mekanism/common/block/BlockMachine.java | 11 +- .../common/item/ItemBlockMachine.java | 3 + .../common/network/PacketConfigSync.java | 6 + .../tile/TileEntityChemicalCrystalizer.java | 14 + .../TileEntityChemicalDissolutionChamber.java | 14 + .../common/tile/TileEntityChemicalWasher.java | 14 + ...Chamber.png => GuiChemicalCrystalizer.png} | Bin resources/assets/mekanism/lang/en_US.lang | 3 + .../mekanism/render/ChemicalCrystalizer.png | Bin 0 -> 5024 bytes .../render/ChemicalDissolutionChamber.png | Bin 0 -> 3530 bytes .../assets/mekanism/render/ChemicalWasher.png | Bin 0 -> 4516 bytes 21 files changed, 1185 insertions(+), 6 deletions(-) create mode 100644 common/mekanism/client/model/ModelChemicalCrystalizer.java create mode 100644 common/mekanism/client/model/ModelChemicalDissolutionChamber.java create mode 100644 common/mekanism/client/model/ModelChemicalWasher.java create mode 100644 common/mekanism/client/render/tileentity/RenderChemicalCrystalizer.java create mode 100644 common/mekanism/client/render/tileentity/RenderChemicalDissolutionChamber.java create mode 100644 common/mekanism/client/render/tileentity/RenderChemicalWasher.java create mode 100644 common/mekanism/common/tile/TileEntityChemicalCrystalizer.java create mode 100644 common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java create mode 100644 common/mekanism/common/tile/TileEntityChemicalWasher.java rename resources/assets/mekanism/gui/{GuiChemicalRecrystalizationChamber.png => GuiChemicalCrystalizer.png} (100%) create mode 100644 resources/assets/mekanism/render/ChemicalCrystalizer.png create mode 100644 resources/assets/mekanism/render/ChemicalDissolutionChamber.png create mode 100644 resources/assets/mekanism/render/ChemicalWasher.png diff --git a/common/mekanism/client/ClientProxy.java b/common/mekanism/client/ClientProxy.java index d0e368dcd..db0ee9733 100644 --- a/common/mekanism/client/ClientProxy.java +++ b/common/mekanism/client/ClientProxy.java @@ -47,8 +47,11 @@ import mekanism.client.render.entity.RenderRobit; import mekanism.client.render.item.ItemRenderingHandler; import mekanism.client.render.tileentity.RenderBin; import mekanism.client.render.tileentity.RenderChargepad; +import mekanism.client.render.tileentity.RenderChemicalCrystalizer; +import mekanism.client.render.tileentity.RenderChemicalDissolutionChamber; import mekanism.client.render.tileentity.RenderChemicalInfuser; import mekanism.client.render.tileentity.RenderChemicalOxidizer; +import mekanism.client.render.tileentity.RenderChemicalWasher; import mekanism.client.render.tileentity.RenderConfigurableMachine; import mekanism.client.render.tileentity.RenderDigitalMiner; import mekanism.client.render.tileentity.RenderDynamicTank; @@ -80,9 +83,12 @@ import mekanism.common.tile.TileEntityAdvancedElectricMachine; import mekanism.common.tile.TileEntityAdvancedFactory; import mekanism.common.tile.TileEntityBin; import mekanism.common.tile.TileEntityChargepad; +import mekanism.common.tile.TileEntityChemicalCrystalizer; +import mekanism.common.tile.TileEntityChemicalDissolutionChamber; import mekanism.common.tile.TileEntityChemicalInfuser; import mekanism.common.tile.TileEntityChemicalInjectionChamber; import mekanism.common.tile.TileEntityChemicalOxidizer; +import mekanism.common.tile.TileEntityChemicalWasher; import mekanism.common.tile.TileEntityCombiner; import mekanism.common.tile.TileEntityCrusher; import mekanism.common.tile.TileEntityDigitalMiner; @@ -298,6 +304,9 @@ public class ClientProxy extends CommonProxy GameRegistry.registerTileEntity(TileEntitySalinationValve.class, "SalinationValve"); GameRegistry.registerTileEntity(TileEntitySalinationTank.class, "SalinationTank"); ClientRegistry.registerTileEntity(TileEntityPrecisionSawmill.class, "PrecisionSawmill", new RenderConfigurableMachine()); + ClientRegistry.registerTileEntity(TileEntityChemicalDissolutionChamber.class, "ChemicalDissolutionChamber", new RenderChemicalDissolutionChamber()); + ClientRegistry.registerTileEntity(TileEntityChemicalWasher.class, "ChemicalWasher", new RenderChemicalWasher()); + ClientRegistry.registerTileEntity(TileEntityChemicalCrystalizer.class, "ChemicalCrystalizer", new RenderChemicalCrystalizer()); } @Override diff --git a/common/mekanism/client/model/ModelChemicalCrystalizer.java b/common/mekanism/client/model/ModelChemicalCrystalizer.java new file mode 100644 index 000000000..d897270a6 --- /dev/null +++ b/common/mekanism/client/model/ModelChemicalCrystalizer.java @@ -0,0 +1,314 @@ +package mekanism.client.model; + +import mekanism.client.render.MekanismRenderer; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class ModelChemicalCrystalizer extends ModelBase +{ + ModelRenderer Base; + ModelRenderer IO1; + ModelRenderer IO2; + ModelRenderer Base3; + ModelRenderer Base2; + ModelRenderer Can1B; + ModelRenderer Can1T; + ModelRenderer Can1Side3; + ModelRenderer Can1Side1; + ModelRenderer Can1Side2; + ModelRenderer Can1Side4; + ModelRenderer Can2Side4; + ModelRenderer Can3Side3; + ModelRenderer Can2Side2; + ModelRenderer Can2Side3; + ModelRenderer Can2Side1; + ModelRenderer Can4Side3; + ModelRenderer Can4Side1; + ModelRenderer Can4Sjde4; + ModelRenderer Can4Side2; + ModelRenderer Can3Side4; + ModelRenderer Can4B; + ModelRenderer Can3Side2; + ModelRenderer Can3Side1; + ModelRenderer Can2B; + ModelRenderer Can4T; + ModelRenderer Can2T; + ModelRenderer Can3T; + ModelRenderer Can3B; + ModelRenderer Spire; + ModelRenderer Spin; + ModelRenderer Vial1; + ModelRenderer Vial2; + ModelRenderer Vial3; + ModelRenderer Vial4; + + public ModelChemicalCrystalizer() + { + textureWidth = 128; + textureHeight = 64; + + Base = new ModelRenderer(this, 16, 0); + Base.addBox(0F, 0F, 0F, 14, 1, 14); + Base.setRotationPoint(-7F, 23F, -7F); + Base.setTextureSize(128, 64); + Base.mirror = true; + setRotation(Base, 0F, 0F, 0F); + IO1 = new ModelRenderer(this, 9, 17); + IO1.addBox(0F, 0F, 0F, 1, 8, 8); + IO1.setRotationPoint(-8F, 12F, -4F); + IO1.setTextureSize(128, 64); + IO1.mirror = true; + setRotation(IO1, 0F, 0F, 0F); + IO2 = new ModelRenderer(this, 9, 17); + IO2.addBox(0F, 0F, 0F, 1, 8, 8); + IO2.setRotationPoint(7F, 12F, -4F); + IO2.setTextureSize(128, 64); + IO2.mirror = true; + setRotation(IO2, 0F, 0F, 0F); + Base3 = new ModelRenderer(this, 16, 0); + Base3.addBox(0F, 0F, 0F, 14, 1, 14); + Base3.setRotationPoint(-7F, 9F, -7F); + Base3.setTextureSize(128, 64); + Base3.mirror = true; + setRotation(Base3, 0F, 0F, 0F); + Base2 = new ModelRenderer(this, 16, 0); + Base2.addBox(0F, 0F, 0F, 14, 1, 14); + Base2.setRotationPoint(-7F, 14F, -7F); + Base2.setTextureSize(128, 64); + Base2.mirror = true; + setRotation(Base2, 0F, 0F, 0F); + Can1B = new ModelRenderer(this, 0, 0); + Can1B.addBox(0F, 0F, 0F, 4, 1, 4); + Can1B.setRotationPoint(2F, 13F, 2F); + Can1B.setTextureSize(128, 64); + Can1B.mirror = true; + setRotation(Can1B, 0F, 0F, 0F); + Can1T = new ModelRenderer(this, 0, 0); + Can1T.addBox(0F, 0F, 0F, 4, 1, 4); + Can1T.setRotationPoint(2F, 10F, 2F); + Can1T.setTextureSize(128, 64); + Can1T.mirror = true; + setRotation(Can1T, 0F, 0F, 0F); + Can1Side3 = new ModelRenderer(this, 0, 0); + Can1Side3.addBox(0F, 0F, 0F, 1, 2, 2); + Can1Side3.setRotationPoint(5F, 11F, 3F); + Can1Side3.setTextureSize(128, 64); + Can1Side3.mirror = true; + setRotation(Can1Side3, 0F, 0F, 0F); + Can1Side1 = new ModelRenderer(this, 0, 0); + Can1Side1.addBox(0F, 0F, 0F, 4, 2, 1); + Can1Side1.setRotationPoint(2F, 11F, 5F); + Can1Side1.setTextureSize(128, 64); + Can1Side1.mirror = true; + setRotation(Can1Side1, 0F, 0F, 0F); + Can1Side2 = new ModelRenderer(this, 0, 0); + Can1Side2.addBox(0F, 0F, 0F, 4, 2, 1); + Can1Side2.setRotationPoint(2F, 11F, 2F); + Can1Side2.setTextureSize(128, 64); + Can1Side2.mirror = true; + setRotation(Can1Side2, 0F, 0F, 0F); + Can1Side4 = new ModelRenderer(this, 0, 0); + Can1Side4.addBox(0F, 0F, 0F, 1, 2, 2); + Can1Side4.setRotationPoint(2F, 11F, 3F); + Can1Side4.setTextureSize(128, 64); + Can1Side4.mirror = true; + setRotation(Can1Side4, 0F, 0F, 0F); + Can2Side4 = new ModelRenderer(this, 0, 0); + Can2Side4.addBox(0F, 0F, 0F, 1, 2, 2); + Can2Side4.setRotationPoint(-6F, 11F, 3F); + Can2Side4.setTextureSize(128, 64); + Can2Side4.mirror = true; + setRotation(Can2Side4, 0F, 0F, 0F); + Can3Side3 = new ModelRenderer(this, 0, 0); + Can3Side3.addBox(0F, 0F, 0F, 1, 2, 2); + Can3Side3.setRotationPoint(5F, 11F, -5F); + Can3Side3.setTextureSize(128, 64); + Can3Side3.mirror = true; + setRotation(Can3Side3, 0F, 0F, 0F); + Can2Side2 = new ModelRenderer(this, 0, 0); + Can2Side2.addBox(0F, 0F, 0F, 4, 2, 1); + Can2Side2.setRotationPoint(-6F, 11F, 2F); + Can2Side2.setTextureSize(128, 64); + Can2Side2.mirror = true; + setRotation(Can2Side2, 0F, 0F, 0F); + Can2Side3 = new ModelRenderer(this, 0, 0); + Can2Side3.addBox(0F, 0F, 0F, 1, 2, 2); + Can2Side3.setRotationPoint(-3F, 11F, 3F); + Can2Side3.setTextureSize(128, 64); + Can2Side3.mirror = true; + setRotation(Can2Side3, 0F, 0F, 0F); + Can2Side1 = new ModelRenderer(this, 0, 0); + Can2Side1.addBox(0F, 0F, 0F, 4, 2, 1); + Can2Side1.setRotationPoint(-6F, 11F, 5F); + Can2Side1.setTextureSize(128, 64); + Can2Side1.mirror = true; + setRotation(Can2Side1, 0F, 0F, 0F); + Can4Side3 = new ModelRenderer(this, 0, 0); + Can4Side3.addBox(0F, 0F, 0F, 1, 2, 2); + Can4Side3.setRotationPoint(-3F, 11F, -5F); + Can4Side3.setTextureSize(128, 64); + Can4Side3.mirror = true; + setRotation(Can4Side3, 0F, 0F, 0F); + Can4Side1 = new ModelRenderer(this, 0, 0); + Can4Side1.addBox(0F, 0F, 0F, 4, 2, 1); + Can4Side1.setRotationPoint(-6F, 11F, -3F); + Can4Side1.setTextureSize(128, 64); + Can4Side1.mirror = true; + setRotation(Can4Side1, 0F, 0F, 0F); + Can4Sjde4 = new ModelRenderer(this, 0, 0); + Can4Sjde4.addBox(0F, 0F, 0F, 1, 2, 2); + Can4Sjde4.setRotationPoint(-6F, 11F, -5F); + Can4Sjde4.setTextureSize(128, 64); + Can4Sjde4.mirror = true; + setRotation(Can4Sjde4, 0F, 0F, 0F); + Can4Side2 = new ModelRenderer(this, 0, 0); + Can4Side2.addBox(0F, 0F, 0F, 4, 2, 1); + Can4Side2.setRotationPoint(-6F, 11F, -6F); + Can4Side2.setTextureSize(128, 64); + Can4Side2.mirror = true; + setRotation(Can4Side2, 0F, 0F, 0F); + Can3Side4 = new ModelRenderer(this, 0, 0); + Can3Side4.addBox(0F, 0F, 0F, 1, 2, 2); + Can3Side4.setRotationPoint(2F, 11F, -5F); + Can3Side4.setTextureSize(128, 64); + Can3Side4.mirror = true; + setRotation(Can3Side4, 0F, 0F, 0F); + Can4B = new ModelRenderer(this, 0, 0); + Can4B.addBox(0F, 0F, 0F, 4, 1, 4); + Can4B.setRotationPoint(-6F, 13F, -6F); + Can4B.setTextureSize(128, 64); + Can4B.mirror = true; + setRotation(Can4B, 0F, 0F, 0F); + Can3Side2 = new ModelRenderer(this, 0, 0); + Can3Side2.addBox(0F, 0F, 0F, 4, 2, 1); + Can3Side2.setRotationPoint(2F, 11F, -6F); + Can3Side2.setTextureSize(128, 64); + Can3Side2.mirror = true; + setRotation(Can3Side2, 0F, 0F, 0F); + Can3Side1 = new ModelRenderer(this, 0, 0); + Can3Side1.addBox(0F, 0F, 0F, 4, 2, 1); + Can3Side1.setRotationPoint(2F, 11F, -3F); + Can3Side1.setTextureSize(128, 64); + Can3Side1.mirror = true; + setRotation(Can3Side1, 0F, 0F, 0F); + Can2B = new ModelRenderer(this, 0, 0); + Can2B.addBox(0F, 0F, 0F, 4, 1, 4); + Can2B.setRotationPoint(-6F, 13F, 2F); + Can2B.setTextureSize(128, 64); + Can2B.mirror = true; + setRotation(Can2B, 0F, 0F, 0F); + Can4T = new ModelRenderer(this, 0, 0); + Can4T.addBox(0F, 0F, 0F, 4, 1, 4); + Can4T.setRotationPoint(-6F, 10F, -6F); + Can4T.setTextureSize(128, 64); + Can4T.mirror = true; + setRotation(Can4T, 0F, 0F, 0F); + Can2T = new ModelRenderer(this, 0, 0); + Can2T.addBox(0F, 0F, 0F, 4, 1, 4); + Can2T.setRotationPoint(-6F, 10F, 2F); + Can2T.setTextureSize(128, 64); + Can2T.mirror = true; + setRotation(Can2T, 0F, 0F, 0F); + Can3T = new ModelRenderer(this, 0, 0); + Can3T.addBox(0F, 0F, 0F, 4, 1, 4); + Can3T.setRotationPoint(2F, 10F, -6F); + Can3T.setTextureSize(128, 64); + Can3T.mirror = true; + setRotation(Can3T, 0F, 0F, 0F); + Can3B = new ModelRenderer(this, 0, 0); + Can3B.addBox(0F, 0F, 0F, 4, 1, 4); + Can3B.setRotationPoint(2F, 13F, -6F); + Can3B.setTextureSize(128, 64); + Can3B.mirror = true; + setRotation(Can3B, 0F, 0F, 0F); + Spire = new ModelRenderer(this, 0, 6); + Spire.addBox(0F, 0F, 0F, 2, 8, 2); + Spire.setRotationPoint(-1F, 15F, -1F); + Spire.setTextureSize(128, 64); + Spire.mirror = true; + setRotation(Spire, 0F, 0F, 0F); + Spin = new ModelRenderer(this, 28, 24); + Spin.addBox(-4F, 0F, -4F, 8, 1, 8); + Spin.setRotationPoint(0F, 16F, 0F); + Spin.setTextureSize(128, 64); + Spin.mirror = true; + setRotation(Spin, 0F, 0F, 0F); + Vial1 = new ModelRenderer(this, 8, 6); + Vial1.addBox(-3F, 0.5F, 3F, 2, 3, 2); + Vial1.setRotationPoint(0F, 16F, 0F); + Vial1.setTextureSize(128, 64); + Vial1.mirror = true; + setRotation(Vial1, 0F, 0F, 0F); + Vial2 = new ModelRenderer(this, 8, 6); + Vial2.addBox(1F, 0.5F, 3F, 2, 3, 2); + Vial2.setRotationPoint(0F, 16F, 0F); + Vial2.setTextureSize(128, 64); + Vial2.mirror = true; + setRotation(Vial2, 0F, 0F, 0F); + Vial3 = new ModelRenderer(this, 8, 6); + Vial3.addBox(-3F, 0.5F, -5F, 2, 3, 2); + Vial3.setRotationPoint(0F, 16F, 0F); + Vial3.setTextureSize(128, 64); + Vial3.mirror = true; + setRotation(Vial3, 0F, 0F, 0F); + Vial4 = new ModelRenderer(this, 8, 6); + Vial4.addBox(1F, 0.5F, -5F, 2, 3, 2); + Vial4.setRotationPoint(0F, 16F, 0F); + Vial4.setTextureSize(128, 64); + Vial4.mirror = true; + setRotation(Vial4, 0F, 0F, 0F); + } + + public void render(float size) + { + MekanismRenderer.blendOn(); + + Base.render(size); + IO1.render(size); + IO2.render(size); + Base3.render(size); + Base2.render(size); + Can1B.render(size); + Can1T.render(size); + Can1Side3.render(size); + Can1Side1.render(size); + Can1Side2.render(size); + Can1Side4.render(size); + Can2Side4.render(size); + Can3Side3.render(size); + Can2Side2.render(size); + Can2Side3.render(size); + Can2Side1.render(size); + Can4Side3.render(size); + Can4Side1.render(size); + Can4Sjde4.render(size); + Can4Side2.render(size); + Can3Side4.render(size); + Can4B.render(size); + Can3Side2.render(size); + Can3Side1.render(size); + Can2B.render(size); + Can4T.render(size); + Can2T.render(size); + Can3T.render(size); + Can3B.render(size); + Spire.render(size); + Spin.render(size); + Vial1.render(size); + Vial2.render(size); + Vial3.render(size); + Vial4.render(size); + + MekanismRenderer.blendOff(); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/common/mekanism/client/model/ModelChemicalDissolutionChamber.java b/common/mekanism/client/model/ModelChemicalDissolutionChamber.java new file mode 100644 index 000000000..4972bd6d3 --- /dev/null +++ b/common/mekanism/client/model/ModelChemicalDissolutionChamber.java @@ -0,0 +1,314 @@ +package mekanism.client.model; + +import mekanism.client.render.MekanismRenderer; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class ModelChemicalDissolutionChamber extends ModelBase +{ + ModelRenderer Centre; + ModelRenderer Base; + ModelRenderer Base2; + ModelRenderer Can1B; + ModelRenderer Can1T; + ModelRenderer Can1Side3; + ModelRenderer Can1Side1; + ModelRenderer Can1Side2; + ModelRenderer Can1Side4; + ModelRenderer Can2Side4; + ModelRenderer Can3Side3; + ModelRenderer Can2Side2; + ModelRenderer Can2Side3; + ModelRenderer Can2Side1; + ModelRenderer Can4Side3; + ModelRenderer Can4Side1; + ModelRenderer Can4Sjde4; + ModelRenderer Can4Side2; + ModelRenderer Can3Side4; + ModelRenderer Can4B; + ModelRenderer Can3Side2; + ModelRenderer Can3Side1; + ModelRenderer Can2B; + ModelRenderer Can4T; + ModelRenderer Can2T; + ModelRenderer Can3T; + ModelRenderer Can3B; + ModelRenderer IO1; + ModelRenderer IO2Port; + ModelRenderer IO2; + ModelRenderer IO2Port2; + ModelRenderer Coil1; + ModelRenderer Coil2; + ModelRenderer Coil3; + ModelRenderer Coil4; + + public ModelChemicalDissolutionChamber() + { + textureWidth = 128; + textureHeight = 64; + + Centre = new ModelRenderer(this, 0, 17); + Centre.addBox(0F, 0F, 0F, 2, 13, 2); + Centre.setRotationPoint(-1F, 9F, -1F); + Centre.setTextureSize(128, 64); + Centre.mirror = true; + setRotation(Centre, 0F, 0F, 0F); + Base = new ModelRenderer(this, 16, 0); + Base.addBox(0F, 0F, 0F, 14, 2, 14); + Base.setRotationPoint(-7F, 22F, -7F); + Base.setTextureSize(128, 64); + Base.mirror = true; + setRotation(Base, 0F, 0F, 0F); + Base2 = new ModelRenderer(this, 16, 0); + Base2.addBox(0F, 0F, 0F, 14, 1, 14); + Base2.setRotationPoint(-7F, 16F, -7F); + Base2.setTextureSize(128, 64); + Base2.mirror = true; + setRotation(Base2, 0F, 0F, 0F); + Can1B = new ModelRenderer(this, 0, 0); + Can1B.addBox(0F, 0F, 0F, 4, 1, 4); + Can1B.setRotationPoint(2F, 21F, 2F); + Can1B.setTextureSize(128, 64); + Can1B.mirror = true; + setRotation(Can1B, 0F, 0F, 0F); + Can1T = new ModelRenderer(this, 0, 0); + Can1T.addBox(0F, 0F, 0F, 4, 1, 4); + Can1T.setRotationPoint(2F, 17F, 2F); + Can1T.setTextureSize(128, 64); + Can1T.mirror = true; + setRotation(Can1T, 0F, 0F, 0F); + Can1Side3 = new ModelRenderer(this, 0, 0); + Can1Side3.addBox(0F, 0F, 0F, 1, 3, 2); + Can1Side3.setRotationPoint(5F, 18F, 3F); + Can1Side3.setTextureSize(128, 64); + Can1Side3.mirror = true; + setRotation(Can1Side3, 0F, 0F, 0F); + Can1Side1 = new ModelRenderer(this, 0, 0); + Can1Side1.addBox(0F, 0F, 0F, 4, 3, 1); + Can1Side1.setRotationPoint(2F, 18F, 5F); + Can1Side1.setTextureSize(128, 64); + Can1Side1.mirror = true; + setRotation(Can1Side1, 0F, 0F, 0F); + Can1Side2 = new ModelRenderer(this, 0, 0); + Can1Side2.addBox(0F, 0F, 0F, 4, 3, 1); + Can1Side2.setRotationPoint(2F, 18F, 2F); + Can1Side2.setTextureSize(128, 64); + Can1Side2.mirror = true; + setRotation(Can1Side2, 0F, 0F, 0F); + Can1Side4 = new ModelRenderer(this, 0, 0); + Can1Side4.addBox(0F, 0F, 0F, 1, 3, 2); + Can1Side4.setRotationPoint(2F, 18F, 3F); + Can1Side4.setTextureSize(128, 64); + Can1Side4.mirror = true; + setRotation(Can1Side4, 0F, 0F, 0F); + Can2Side4 = new ModelRenderer(this, 0, 0); + Can2Side4.addBox(0F, 0F, 0F, 1, 3, 2); + Can2Side4.setRotationPoint(-6F, 18F, 3F); + Can2Side4.setTextureSize(128, 64); + Can2Side4.mirror = true; + setRotation(Can2Side4, 0F, 0F, 0F); + Can3Side3 = new ModelRenderer(this, 0, 0); + Can3Side3.addBox(0F, 0F, 0F, 1, 3, 2); + Can3Side3.setRotationPoint(5F, 18F, -5F); + Can3Side3.setTextureSize(128, 64); + Can3Side3.mirror = true; + setRotation(Can3Side3, 0F, 0F, 0F); + Can2Side2 = new ModelRenderer(this, 0, 0); + Can2Side2.addBox(0F, 0F, 0F, 4, 3, 1); + Can2Side2.setRotationPoint(-6F, 18F, 2F); + Can2Side2.setTextureSize(128, 64); + Can2Side2.mirror = true; + setRotation(Can2Side2, 0F, 0F, 0F); + Can2Side3 = new ModelRenderer(this, 0, 0); + Can2Side3.addBox(0F, 0F, 0F, 1, 3, 2); + Can2Side3.setRotationPoint(-3F, 18F, 3F); + Can2Side3.setTextureSize(128, 64); + Can2Side3.mirror = true; + setRotation(Can2Side3, 0F, 0F, 0F); + Can2Side1 = new ModelRenderer(this, 0, 0); + Can2Side1.addBox(0F, 0F, 0F, 4, 3, 1); + Can2Side1.setRotationPoint(-6F, 18F, 5F); + Can2Side1.setTextureSize(128, 64); + Can2Side1.mirror = true; + setRotation(Can2Side1, 0F, 0F, 0F); + Can4Side3 = new ModelRenderer(this, 0, 0); + Can4Side3.addBox(0F, 0F, 0F, 1, 3, 2); + Can4Side3.setRotationPoint(-3F, 18F, -5F); + Can4Side3.setTextureSize(128, 64); + Can4Side3.mirror = true; + setRotation(Can4Side3, 0F, 0F, 0F); + Can4Side1 = new ModelRenderer(this, 0, 0); + Can4Side1.addBox(0F, 0F, 0F, 4, 3, 1); + Can4Side1.setRotationPoint(-6F, 18F, -3F); + Can4Side1.setTextureSize(128, 64); + Can4Side1.mirror = true; + setRotation(Can4Side1, 0F, 0F, 0F); + Can4Sjde4 = new ModelRenderer(this, 0, 0); + Can4Sjde4.addBox(0F, 0F, 0F, 1, 3, 2); + Can4Sjde4.setRotationPoint(-6F, 18F, -5F); + Can4Sjde4.setTextureSize(128, 64); + Can4Sjde4.mirror = true; + setRotation(Can4Sjde4, 0F, 0F, 0F); + Can4Side2 = new ModelRenderer(this, 0, 0); + Can4Side2.addBox(0F, 0F, 0F, 4, 3, 1); + Can4Side2.setRotationPoint(-6F, 18F, -6F); + Can4Side2.setTextureSize(128, 64); + Can4Side2.mirror = true; + setRotation(Can4Side2, 0F, 0F, 0F); + Can3Side4 = new ModelRenderer(this, 0, 0); + Can3Side4.addBox(0F, 0F, 0F, 1, 3, 2); + Can3Side4.setRotationPoint(2F, 18F, -5F); + Can3Side4.setTextureSize(128, 64); + Can3Side4.mirror = true; + setRotation(Can3Side4, 0F, 0F, 0F); + Can4B = new ModelRenderer(this, 0, 0); + Can4B.addBox(0F, 0F, 0F, 4, 1, 4); + Can4B.setRotationPoint(-6F, 21F, -6F); + Can4B.setTextureSize(128, 64); + Can4B.mirror = true; + setRotation(Can4B, 0F, 0F, 0F); + Can3Side2 = new ModelRenderer(this, 0, 0); + Can3Side2.addBox(0F, 0F, 0F, 4, 3, 1); + Can3Side2.setRotationPoint(2F, 18F, -6F); + Can3Side2.setTextureSize(128, 64); + Can3Side2.mirror = true; + setRotation(Can3Side2, 0F, 0F, 0F); + Can3Side1 = new ModelRenderer(this, 0, 0); + Can3Side1.addBox(0F, 0F, 0F, 4, 3, 1); + Can3Side1.setRotationPoint(2F, 18F, -3F); + Can3Side1.setTextureSize(128, 64); + Can3Side1.mirror = true; + setRotation(Can3Side1, 0F, 0F, 0F); + Can2B = new ModelRenderer(this, 0, 0); + Can2B.addBox(0F, 0F, 0F, 4, 1, 4); + Can2B.setRotationPoint(-6F, 21F, 2F); + Can2B.setTextureSize(128, 64); + Can2B.mirror = true; + setRotation(Can2B, 0F, 0F, 0F); + Can4T = new ModelRenderer(this, 0, 0); + Can4T.addBox(0F, 0F, 0F, 4, 1, 4); + Can4T.setRotationPoint(-6F, 17F, -6F); + Can4T.setTextureSize(128, 64); + Can4T.mirror = true; + setRotation(Can4T, 0F, 0F, 0F); + Can2T = new ModelRenderer(this, 0, 0); + Can2T.addBox(0F, 0F, 0F, 4, 1, 4); + Can2T.setRotationPoint(-6F, 17F, 2F); + Can2T.setTextureSize(128, 64); + Can2T.mirror = true; + setRotation(Can2T, 0F, 0F, 0F); + Can3T = new ModelRenderer(this, 0, 0); + Can3T.addBox(0F, 0F, 0F, 4, 1, 4); + Can3T.setRotationPoint(2F, 17F, -6F); + Can3T.setTextureSize(128, 64); + Can3T.mirror = true; + setRotation(Can3T, 0F, 0F, 0F); + Can3B = new ModelRenderer(this, 0, 0); + Can3B.addBox(0F, 0F, 0F, 4, 1, 4); + Can3B.setRotationPoint(2F, 21F, -6F); + Can3B.setTextureSize(128, 64); + Can3B.mirror = true; + setRotation(Can3B, 0F, 0F, 0F); + IO1 = new ModelRenderer(this, 9, 17); + IO1.addBox(0F, 0F, 0F, 1, 8, 8); + IO1.setRotationPoint(-8F, 12F, -4F); + IO1.setTextureSize(128, 64); + IO1.mirror = true; + setRotation(IO1, 0F, 0F, 0F); + IO2Port = new ModelRenderer(this, 28, 17); + IO2Port.addBox(0F, 0F, 0F, 2, 2, 4); + IO2Port.setRotationPoint(-7F, 14F, -2F); + IO2Port.setTextureSize(128, 64); + IO2Port.mirror = true; + setRotation(IO2Port, 0F, 0F, 0F); + IO2 = new ModelRenderer(this, 9, 17); + IO2.addBox(0F, 0F, 0F, 1, 8, 8); + IO2.setRotationPoint(7F, 12F, -4F); + IO2.setTextureSize(128, 64); + IO2.mirror = true; + setRotation(IO2, 0F, 0F, 0F); + IO2Port2 = new ModelRenderer(this, 28, 17); + IO2Port2.addBox(0F, 0F, 0F, 2, 2, 4); + IO2Port2.setRotationPoint(5F, 14F, -2F); + IO2Port2.setTextureSize(128, 64); + IO2Port2.mirror = true; + setRotation(IO2Port2, 0F, 0F, 0F); + Coil1 = new ModelRenderer(this, 0, 34); + Coil1.addBox(0F, 0F, 0F, 8, 1, 8); + Coil1.setRotationPoint(-4F, 14F, -4F); + Coil1.setTextureSize(128, 64); + Coil1.mirror = true; + setRotation(Coil1, 0F, 0F, 0F); + Coil2 = new ModelRenderer(this, 0, 34); + Coil2.addBox(0F, 0F, 0F, 8, 1, 8); + Coil2.setRotationPoint(-4F, 12F, -4F); + Coil2.setTextureSize(128, 64); + Coil2.mirror = true; + setRotation(Coil2, 0F, 0F, 0F); + Coil3 = new ModelRenderer(this, 0, 34); + Coil3.addBox(0F, 0F, 0F, 8, 1, 8); + Coil3.setRotationPoint(-4F, 10F, -4F); + Coil3.setTextureSize(128, 64); + Coil3.mirror = true; + setRotation(Coil3, 0F, 0F, 0F); + Coil4 = new ModelRenderer(this, 0, 34); + Coil4.addBox(0F, 0F, 0F, 8, 1, 8); + Coil4.setRotationPoint(-4F, 8F, -4F); + Coil4.setTextureSize(128, 64); + Coil4.mirror = true; + setRotation(Coil4, 0F, 0F, 0F); + } + + public void render(float size) + { + MekanismRenderer.blendOn(); + + Centre.render(size); + Base.render(size); + Base2.render(size); + Can1B.render(size); + Can1T.render(size); + Can1Side3.render(size); + Can1Side1.render(size); + Can1Side2.render(size); + Can1Side4.render(size); + Can2Side4.render(size); + Can3Side3.render(size); + Can2Side2.render(size); + Can2Side3.render(size); + Can2Side1.render(size); + Can4Side3.render(size); + Can4Side1.render(size); + Can4Sjde4.render(size); + Can4Side2.render(size); + Can3Side4.render(size); + Can4B.render(size); + Can3Side2.render(size); + Can3Side1.render(size); + Can2B.render(size); + Can4T.render(size); + Can2T.render(size); + Can3T.render(size); + Can3B.render(size); + IO1.render(size); + IO2Port.render(size); + IO2.render(size); + IO2Port2.render(size); + Coil1.render(size); + Coil2.render(size); + Coil3.render(size); + Coil4.render(size); + + MekanismRenderer.blendOff(); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/common/mekanism/client/model/ModelChemicalWasher.java b/common/mekanism/client/model/ModelChemicalWasher.java new file mode 100644 index 000000000..a8950cbe9 --- /dev/null +++ b/common/mekanism/client/model/ModelChemicalWasher.java @@ -0,0 +1,300 @@ +package mekanism.client.model; + +import mekanism.client.render.MekanismRenderer; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class ModelChemicalWasher extends ModelBase +{ + ModelRenderer Base; + ModelRenderer Base2; + ModelRenderer IO1; + ModelRenderer IO2; + ModelRenderer IO3; + ModelRenderer Base3; + ModelRenderer Base4; + ModelRenderer Base5; + ModelRenderer Base6; + ModelRenderer Can1B; + ModelRenderer Can1T; + ModelRenderer Can1Side3; + ModelRenderer Can1Side1; + ModelRenderer Can1Side2; + ModelRenderer Can1Side4; + ModelRenderer Can2Side4; + ModelRenderer Can3Side3; + ModelRenderer Can2Side2; + ModelRenderer Can2Side3; + ModelRenderer Can2Side1; + ModelRenderer Can4Side3; + ModelRenderer Can4Side1; + ModelRenderer Can4Sjde4; + ModelRenderer Can4Side2; + ModelRenderer Can3Side4; + ModelRenderer Can4B; + ModelRenderer Can3Side2; + ModelRenderer Can3Side1; + ModelRenderer Can2B; + ModelRenderer Can4T; + ModelRenderer Can2T; + ModelRenderer Can3T; + ModelRenderer Can3B; + + public ModelChemicalWasher() + { + textureWidth = 128; + textureHeight = 64; + + Base = new ModelRenderer(this, 16, 0); + Base.addBox(0F, 0F, 0F, 14, 1, 14); + Base.setRotationPoint(-7F, 23F, -7F); + Base.setTextureSize(128, 64); + Base.mirror = true; + setRotation(Base, 0F, 0F, 0F); + Base2 = new ModelRenderer(this, 72, 0); + Base2.addBox(0F, 0F, 0F, 14, 10, 1); + Base2.setRotationPoint(-7F, 8F, 6F); + Base2.setTextureSize(128, 64); + Base2.mirror = true; + setRotation(Base2, 0F, 0F, 0F); + Base2.mirror = false; + IO1 = new ModelRenderer(this, 9, 17); + IO1.addBox(0F, 0F, 0F, 1, 8, 8); + IO1.setRotationPoint(-8F, 12F, -4F); + IO1.setTextureSize(128, 64); + IO1.mirror = true; + setRotation(IO1, 0F, 0F, 0F); + IO2 = new ModelRenderer(this, 9, 17); + IO2.addBox(0F, 0F, 0F, 1, 8, 8); + IO2.setRotationPoint(7F, 12F, -4F); + IO2.setTextureSize(128, 64); + IO2.mirror = true; + setRotation(IO2, 0F, 0F, 0F); + IO3 = new ModelRenderer(this, 0, 42); + IO3.addBox(0F, 0F, 0F, 12, 1, 8); + IO3.setRotationPoint(-6F, 8F, -4F); + IO3.setTextureSize(128, 64); + IO3.mirror = true; + setRotation(IO3, 0F, 0F, 0F); + Base3 = new ModelRenderer(this, 72, 0); + Base3.addBox(0F, 0F, 0F, 14, 10, 1); + Base3.setRotationPoint(-7F, 8F, -7F); + Base3.setTextureSize(128, 64); + Base3.mirror = true; + setRotation(Base3, 0F, 0F, 0F); + Base4 = new ModelRenderer(this, 72, 12); + Base4.addBox(0F, 0F, 0F, 1, 10, 12); + Base4.setRotationPoint(6F, 8F, -6F); + Base4.setTextureSize(128, 64); + Base4.mirror = true; + setRotation(Base4, 0F, 0F, 0F); + Base5 = new ModelRenderer(this, 72, 12); + Base5.addBox(0F, 0F, 0F, 1, 10, 12); + Base5.setRotationPoint(-7F, 8F, -6F); + Base5.setTextureSize(128, 64); + Base5.mirror = true; + setRotation(Base5, 0F, 0F, 0F); + Base6 = new ModelRenderer(this, 16, 0); + Base6.addBox(0F, 0F, 0F, 14, 1, 14); + Base6.setRotationPoint(-7F, 18F, -7F); + Base6.setTextureSize(128, 64); + Base6.mirror = true; + setRotation(Base6, 0F, 0F, 0F); + Can1B = new ModelRenderer(this, 0, 0); + Can1B.addBox(0F, 0F, 0F, 4, 1, 4); + Can1B.setRotationPoint(2F, 22F, 2F); + Can1B.setTextureSize(128, 64); + Can1B.mirror = true; + setRotation(Can1B, 0F, 0F, 0F); + Can1T = new ModelRenderer(this, 0, 0); + Can1T.addBox(0F, 0F, 0F, 4, 1, 4); + Can1T.setRotationPoint(2F, 19F, 2F); + Can1T.setTextureSize(128, 64); + Can1T.mirror = true; + setRotation(Can1T, 0F, 0F, 0F); + Can1Side3 = new ModelRenderer(this, 0, 0); + Can1Side3.addBox(0F, 0F, 0F, 1, 2, 2); + Can1Side3.setRotationPoint(5F, 20F, 3F); + Can1Side3.setTextureSize(128, 64); + Can1Side3.mirror = true; + setRotation(Can1Side3, 0F, 0F, 0F); + Can1Side1 = new ModelRenderer(this, 0, 0); + Can1Side1.addBox(0F, 0F, 0F, 4, 2, 1); + Can1Side1.setRotationPoint(2F, 20F, 5F); + Can1Side1.setTextureSize(128, 64); + Can1Side1.mirror = true; + setRotation(Can1Side1, 0F, 0F, 0F); + Can1Side2 = new ModelRenderer(this, 0, 0); + Can1Side2.addBox(0F, 0F, 0F, 4, 2, 1); + Can1Side2.setRotationPoint(2F, 20F, 2F); + Can1Side2.setTextureSize(128, 64); + Can1Side2.mirror = true; + setRotation(Can1Side2, 0F, 0F, 0F); + Can1Side4 = new ModelRenderer(this, 0, 0); + Can1Side4.addBox(0F, 0F, 0F, 1, 2, 2); + Can1Side4.setRotationPoint(2F, 20F, 3F); + Can1Side4.setTextureSize(128, 64); + Can1Side4.mirror = true; + setRotation(Can1Side4, 0F, 0F, 0F); + Can2Side4 = new ModelRenderer(this, 0, 0); + Can2Side4.addBox(0F, 0F, 0F, 1, 2, 2); + Can2Side4.setRotationPoint(-6F, 20F, 3F); + Can2Side4.setTextureSize(128, 64); + Can2Side4.mirror = true; + setRotation(Can2Side4, 0F, 0F, 0F); + Can3Side3 = new ModelRenderer(this, 0, 0); + Can3Side3.addBox(0F, 0F, 0F, 1, 2, 2); + Can3Side3.setRotationPoint(5F, 20F, -5F); + Can3Side3.setTextureSize(128, 64); + Can3Side3.mirror = true; + setRotation(Can3Side3, 0F, 0F, 0F); + Can2Side2 = new ModelRenderer(this, 0, 0); + Can2Side2.addBox(0F, 0F, 0F, 4, 2, 1); + Can2Side2.setRotationPoint(-6F, 20F, 2F); + Can2Side2.setTextureSize(128, 64); + Can2Side2.mirror = true; + setRotation(Can2Side2, 0F, 0F, 0F); + Can2Side3 = new ModelRenderer(this, 0, 0); + Can2Side3.addBox(0F, 0F, 0F, 1, 2, 2); + Can2Side3.setRotationPoint(-3F, 20F, 3F); + Can2Side3.setTextureSize(128, 64); + Can2Side3.mirror = true; + setRotation(Can2Side3, 0F, 0F, 0F); + Can2Side1 = new ModelRenderer(this, 0, 0); + Can2Side1.addBox(0F, 0F, 0F, 4, 2, 1); + Can2Side1.setRotationPoint(-6F, 20F, 5F); + Can2Side1.setTextureSize(128, 64); + Can2Side1.mirror = true; + setRotation(Can2Side1, 0F, 0F, 0F); + Can4Side3 = new ModelRenderer(this, 0, 0); + Can4Side3.addBox(0F, 0F, 0F, 1, 2, 2); + Can4Side3.setRotationPoint(-3F, 20F, -5F); + Can4Side3.setTextureSize(128, 64); + Can4Side3.mirror = true; + setRotation(Can4Side3, 0F, 0F, 0F); + Can4Side1 = new ModelRenderer(this, 0, 0); + Can4Side1.addBox(0F, 0F, 0F, 4, 2, 1); + Can4Side1.setRotationPoint(-6F, 20F, -3F); + Can4Side1.setTextureSize(128, 64); + Can4Side1.mirror = true; + setRotation(Can4Side1, 0F, 0F, 0F); + Can4Sjde4 = new ModelRenderer(this, 0, 0); + Can4Sjde4.addBox(0F, 0F, 0F, 1, 2, 2); + Can4Sjde4.setRotationPoint(-6F, 20F, -5F); + Can4Sjde4.setTextureSize(128, 64); + Can4Sjde4.mirror = true; + setRotation(Can4Sjde4, 0F, 0F, 0F); + Can4Side2 = new ModelRenderer(this, 0, 0); + Can4Side2.addBox(0F, 0F, 0F, 4, 2, 1); + Can4Side2.setRotationPoint(-6F, 20F, -6F); + Can4Side2.setTextureSize(128, 64); + Can4Side2.mirror = true; + setRotation(Can4Side2, 0F, 0F, 0F); + Can3Side4 = new ModelRenderer(this, 0, 0); + Can3Side4.addBox(0F, 0F, 0F, 1, 2, 2); + Can3Side4.setRotationPoint(2F, 20F, -5F); + Can3Side4.setTextureSize(128, 64); + Can3Side4.mirror = true; + setRotation(Can3Side4, 0F, 0F, 0F); + Can4B = new ModelRenderer(this, 0, 0); + Can4B.addBox(0F, 0F, 0F, 4, 1, 4); + Can4B.setRotationPoint(-6F, 22F, -6F); + Can4B.setTextureSize(128, 64); + Can4B.mirror = true; + setRotation(Can4B, 0F, 0F, 0F); + Can3Side2 = new ModelRenderer(this, 0, 0); + Can3Side2.addBox(0F, 0F, 0F, 4, 2, 1); + Can3Side2.setRotationPoint(2F, 20F, -6F); + Can3Side2.setTextureSize(128, 64); + Can3Side2.mirror = true; + setRotation(Can3Side2, 0F, 0F, 0F); + Can3Side1 = new ModelRenderer(this, 0, 0); + Can3Side1.addBox(0F, 0F, 0F, 4, 2, 1); + Can3Side1.setRotationPoint(2F, 20F, -3F); + Can3Side1.setTextureSize(128, 64); + Can3Side1.mirror = true; + setRotation(Can3Side1, 0F, 0F, 0F); + Can2B = new ModelRenderer(this, 0, 0); + Can2B.addBox(0F, 0F, 0F, 4, 1, 4); + Can2B.setRotationPoint(-6F, 22F, 2F); + Can2B.setTextureSize(128, 64); + Can2B.mirror = true; + setRotation(Can2B, 0F, 0F, 0F); + Can4T = new ModelRenderer(this, 0, 0); + Can4T.addBox(0F, 0F, 0F, 4, 1, 4); + Can4T.setRotationPoint(-6F, 19F, -6F); + Can4T.setTextureSize(128, 64); + Can4T.mirror = true; + setRotation(Can4T, 0F, 0F, 0F); + Can2T = new ModelRenderer(this, 0, 0); + Can2T.addBox(0F, 0F, 0F, 4, 1, 4); + Can2T.setRotationPoint(-6F, 19F, 2F); + Can2T.setTextureSize(128, 64); + Can2T.mirror = true; + setRotation(Can2T, 0F, 0F, 0F); + Can3T = new ModelRenderer(this, 0, 0); + Can3T.addBox(0F, 0F, 0F, 4, 1, 4); + Can3T.setRotationPoint(2F, 19F, -6F); + Can3T.setTextureSize(128, 64); + Can3T.mirror = true; + setRotation(Can3T, 0F, 0F, 0F); + Can3B = new ModelRenderer(this, 0, 0); + Can3B.addBox(0F, 0F, 0F, 4, 1, 4); + Can3B.setRotationPoint(2F, 22F, -6F); + Can3B.setTextureSize(128, 64); + Can3B.mirror = true; + setRotation(Can3B, 0F, 0F, 0F); + } + + public void render(float size) + { + MekanismRenderer.blendOn(); + + Base.render(size); + Base2.render(size); + IO1.render(size); + IO2.render(size); + IO3.render(size); + Base3.render(size); + Base4.render(size); + Base5.render(size); + Base6.render(size); + Can1B.render(size); + Can1T.render(size); + Can1Side3.render(size); + Can1Side1.render(size); + Can1Side2.render(size); + Can1Side4.render(size); + Can2Side4.render(size); + Can3Side3.render(size); + Can2Side2.render(size); + Can2Side3.render(size); + Can2Side1.render(size); + Can4Side3.render(size); + Can4Side1.render(size); + Can4Sjde4.render(size); + Can4Side2.render(size); + Can3Side4.render(size); + Can4B.render(size); + Can3Side2.render(size); + Can3Side1.render(size); + Can2B.render(size); + Can4T.render(size); + Can2T.render(size); + Can3T.render(size); + Can3B.render(size); + + MekanismRenderer.blendOff(); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/common/mekanism/client/render/block/MachineRenderingHandler.java b/common/mekanism/client/render/block/MachineRenderingHandler.java index 32edbf6f8..63b81aa3b 100644 --- a/common/mekanism/client/render/block/MachineRenderingHandler.java +++ b/common/mekanism/client/render/block/MachineRenderingHandler.java @@ -1,10 +1,18 @@ package mekanism.client.render.block; -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import mekanism.client.ClientProxy; -import mekanism.client.model.*; +import mekanism.client.model.ModelChargepad; +import mekanism.client.model.ModelChemicalCrystalizer; +import mekanism.client.model.ModelChemicalDissolutionChamber; +import mekanism.client.model.ModelChemicalInfuser; +import mekanism.client.model.ModelChemicalOxidizer; +import mekanism.client.model.ModelChemicalWasher; +import mekanism.client.model.ModelDigitalMiner; +import mekanism.client.model.ModelElectricPump; +import mekanism.client.model.ModelElectrolyticSeparator; +import mekanism.client.model.ModelLogisticalSorter; +import mekanism.client.model.ModelMetallurgicInfuser; +import mekanism.client.model.ModelRotaryCondensentrator; import mekanism.client.render.MekanismRenderer; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.util.MekanismUtils; @@ -13,8 +21,13 @@ import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.world.IBlockAccess; + import org.lwjgl.opengl.GL11; +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + @SideOnly(Side.CLIENT) public class MachineRenderingHandler implements ISimpleBlockRenderingHandler { @@ -27,7 +40,9 @@ public class MachineRenderingHandler implements ISimpleBlockRenderingHandler public ModelChemicalOxidizer chemicalOxidizer = new ModelChemicalOxidizer(); public ModelChemicalInfuser chemicalInfuser = new ModelChemicalInfuser(); public ModelElectrolyticSeparator electrolyticSeparator = new ModelElectrolyticSeparator(); - + public ModelChemicalDissolutionChamber chemicalDissolutionChamber = new ModelChemicalDissolutionChamber(); + public ModelChemicalWasher chemicalWasher = new ModelChemicalWasher(); + public ModelChemicalCrystalizer chemicalCrystalizer = new ModelChemicalCrystalizer(); @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) @@ -114,6 +129,30 @@ public class MachineRenderingHandler implements ISimpleBlockRenderingHandler Minecraft.getMinecraft().renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "ElectrolyticSeparator.png")); electrolyticSeparator.render(0.0625F); } + else if(type == MachineType.CHEMICAL_DISSOLUTION_CHAMBER) + { + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(270F, 0.0F, -1.0F, 0.0F); + GL11.glTranslatef(0.0F, -1.06F, 0.05F); + Minecraft.getMinecraft().renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "ChemicalDissolutionChamber.png")); + chemicalDissolutionChamber.render(0.0625F); + } + else if(type == MachineType.CHEMICAL_WASHER) + { + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(270F, 0.0F, -1.0F, 0.0F); + GL11.glTranslatef(0.0F, -1.06F, 0.05F); + Minecraft.getMinecraft().renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "ChemicalWasher.png")); + chemicalWasher.render(0.0625F); + } + else if(type == MachineType.CHEMICAL_CRYSTALIZER) + { + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(270F, 0.0F, -1.0F, 0.0F); + GL11.glTranslatef(0.0F, -1.06F, 0.05F); + Minecraft.getMinecraft().renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "ChemicalCrystalizer.png")); + chemicalCrystalizer.render(0.0625F); + } else { MekanismRenderer.renderItem(renderer, metadata, block); } diff --git a/common/mekanism/client/render/tileentity/RenderChemicalCrystalizer.java b/common/mekanism/client/render/tileentity/RenderChemicalCrystalizer.java new file mode 100644 index 000000000..8ce35ab8e --- /dev/null +++ b/common/mekanism/client/render/tileentity/RenderChemicalCrystalizer.java @@ -0,0 +1,44 @@ +package mekanism.client.render.tileentity; + +import mekanism.client.model.ModelChemicalCrystalizer; +import mekanism.common.tile.TileEntityChemicalCrystalizer; +import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class RenderChemicalCrystalizer extends TileEntitySpecialRenderer +{ + private ModelChemicalCrystalizer model = new ModelChemicalCrystalizer(); + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick) + { + renderAModelAt((TileEntityChemicalCrystalizer)tileEntity, x, y, z, partialTick); + } + + private void renderAModelAt(TileEntityChemicalCrystalizer tileEntity, double x, double y, double z, float partialTick) + { + GL11.glPushMatrix(); + GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); + bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "ChemicalCrystalizer.png")); + + switch(tileEntity.facing) + { + case 2: GL11.glRotatef(0, 0.0F, 1.0F, 0.0F); break; + case 3: GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); break; + case 4: GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); break; + case 5: GL11.glRotatef(270, 0.0F, 1.0F, 0.0F); break; + } + + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + model.render(0.0625F); + GL11.glPopMatrix(); + } +} diff --git a/common/mekanism/client/render/tileentity/RenderChemicalDissolutionChamber.java b/common/mekanism/client/render/tileentity/RenderChemicalDissolutionChamber.java new file mode 100644 index 000000000..9d9ceb2ae --- /dev/null +++ b/common/mekanism/client/render/tileentity/RenderChemicalDissolutionChamber.java @@ -0,0 +1,44 @@ +package mekanism.client.render.tileentity; + +import mekanism.client.model.ModelChemicalDissolutionChamber; +import mekanism.common.tile.TileEntityChemicalDissolutionChamber; +import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class RenderChemicalDissolutionChamber extends TileEntitySpecialRenderer +{ + private ModelChemicalDissolutionChamber model = new ModelChemicalDissolutionChamber(); + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick) + { + renderAModelAt((TileEntityChemicalDissolutionChamber)tileEntity, x, y, z, partialTick); + } + + private void renderAModelAt(TileEntityChemicalDissolutionChamber tileEntity, double x, double y, double z, float partialTick) + { + GL11.glPushMatrix(); + GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); + bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "ChemicalDissolutionChamber.png")); + + switch(tileEntity.facing) + { + case 2: GL11.glRotatef(0, 0.0F, 1.0F, 0.0F); break; + case 3: GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); break; + case 4: GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); break; + case 5: GL11.glRotatef(270, 0.0F, 1.0F, 0.0F); break; + } + + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + model.render(0.0625F); + GL11.glPopMatrix(); + } +} diff --git a/common/mekanism/client/render/tileentity/RenderChemicalWasher.java b/common/mekanism/client/render/tileentity/RenderChemicalWasher.java new file mode 100644 index 000000000..89a16cf9f --- /dev/null +++ b/common/mekanism/client/render/tileentity/RenderChemicalWasher.java @@ -0,0 +1,40 @@ +package mekanism.client.render.tileentity; + +import mekanism.client.model.ModelChemicalWasher; +import mekanism.common.tile.TileEntityChemicalWasher; +import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +import org.lwjgl.opengl.GL11; + +public class RenderChemicalWasher extends TileEntitySpecialRenderer +{ + private ModelChemicalWasher model = new ModelChemicalWasher(); + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick) + { + renderAModelAt((TileEntityChemicalWasher)tileEntity, x, y, z, partialTick); + } + + private void renderAModelAt(TileEntityChemicalWasher tileEntity, double x, double y, double z, float partialTick) + { + GL11.glPushMatrix(); + GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); + bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "ChemicalWasher.png")); + + switch(tileEntity.facing) + { + case 2: GL11.glRotatef(0, 0.0F, 1.0F, 0.0F); break; + case 3: GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); break; + case 4: GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); break; + case 5: GL11.glRotatef(270, 0.0F, 1.0F, 0.0F); break; + } + + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + model.render(0.0625F); + GL11.glPopMatrix(); + } +} diff --git a/common/mekanism/common/CommonProxy.java b/common/mekanism/common/CommonProxy.java index 12be3a848..effb0cf36 100644 --- a/common/mekanism/common/CommonProxy.java +++ b/common/mekanism/common/CommonProxy.java @@ -33,9 +33,12 @@ import mekanism.common.tile.TileEntityAdvancedFactory; import mekanism.common.tile.TileEntityBin; import mekanism.common.tile.TileEntityChanceMachine; import mekanism.common.tile.TileEntityChargepad; +import mekanism.common.tile.TileEntityChemicalCrystalizer; +import mekanism.common.tile.TileEntityChemicalDissolutionChamber; import mekanism.common.tile.TileEntityChemicalInfuser; import mekanism.common.tile.TileEntityChemicalInjectionChamber; import mekanism.common.tile.TileEntityChemicalOxidizer; +import mekanism.common.tile.TileEntityChemicalWasher; import mekanism.common.tile.TileEntityCombiner; import mekanism.common.tile.TileEntityContainerBlock; import mekanism.common.tile.TileEntityCrusher; @@ -118,6 +121,9 @@ public class CommonProxy GameRegistry.registerTileEntity(TileEntitySalinationValve.class, "SalinationValve"); GameRegistry.registerTileEntity(TileEntitySalinationTank.class, "SalinationTank"); GameRegistry.registerTileEntity(TileEntityPrecisionSawmill.class, "PrecisionSawmill"); + GameRegistry.registerTileEntity(TileEntityChemicalDissolutionChamber.class, "ChemicalDissolutionChamber"); + GameRegistry.registerTileEntity(TileEntityChemicalWasher.class, "ChemicalWasher"); + GameRegistry.registerTileEntity(TileEntityChemicalCrystalizer.class, "ChemicalCrystalizer"); } /** @@ -229,6 +235,9 @@ public class CommonProxy Mekanism.chemicalInjectionChamberUsage = Mekanism.configuration.get("usage", "ChemicalInjectionChamberUsage", 400D).getDouble(400D); Mekanism.electrolyticSeparatorUsage = Mekanism.configuration.get("usage", "ElectrolyticSeparatorUsage", 50D).getDouble(50D); Mekanism.precisionSawmillUsage = Mekanism.configuration.get("usage", "PrecisionSawmillUsage", 50D).getDouble(50D); + Mekanism.chemicalDissolutionChamberUsage = Mekanism.configuration.get("usage", "ChemicalDissolutionChamberUsage", 400D).getDouble(400D); + Mekanism.chemicalWasherUsage = Mekanism.configuration.get("usage", "ChemicalWasherUsage", 200D).getDouble(200D); + Mekanism.chemicalCrystalizerUsage = Mekanism.configuration.get("usage", "ChemicalCrystalizerUsage", 400D).getDouble(400D); Mekanism.configuration.save(); } diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index efb1d221f..86d061a33 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -323,6 +323,9 @@ public class Mekanism public static double chemicalInjectionChamberUsage; public static double electrolyticSeparatorUsage; public static double precisionSawmillUsage; + public static double chemicalDissolutionChamberUsage; + public static double chemicalWasherUsage; + public static double chemicalCrystalizerUsage; /** * Adds all in-game crafting and smelting recipes. diff --git a/common/mekanism/common/block/BlockMachine.java b/common/mekanism/common/block/BlockMachine.java index 60f209a04..292611568 100644 --- a/common/mekanism/common/block/BlockMachine.java +++ b/common/mekanism/common/block/BlockMachine.java @@ -29,9 +29,12 @@ import mekanism.common.network.PacketLogisticalSorterGui.SorterGuiPacket; import mekanism.common.tile.TileEntityAdvancedFactory; import mekanism.common.tile.TileEntityBasicBlock; import mekanism.common.tile.TileEntityChargepad; +import mekanism.common.tile.TileEntityChemicalCrystalizer; +import mekanism.common.tile.TileEntityChemicalDissolutionChamber; import mekanism.common.tile.TileEntityChemicalInfuser; import mekanism.common.tile.TileEntityChemicalInjectionChamber; import mekanism.common.tile.TileEntityChemicalOxidizer; +import mekanism.common.tile.TileEntityChemicalWasher; import mekanism.common.tile.TileEntityCombiner; import mekanism.common.tile.TileEntityContainerBlock; import mekanism.common.tile.TileEntityCrusher; @@ -104,6 +107,9 @@ import cpw.mods.fml.relauncher.SideOnly; * 1:3: Chemical Injection Chamber * 1:4: Electrolytic Separator * 1:5: Precision Sawmill + * 1:6: Chemical Dissolution Chamber + * 1:7: Chemical Washer + * 1:8: Chemical Crystalizer * @author AidanBrady * */ @@ -1093,7 +1099,10 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds CHEMICAL_INFUSER(Mekanism.machineBlock2ID, 2, "ChemicalInfuser", 30, 20000, TileEntityChemicalInfuser.class, true, false), CHEMICAL_INJECTION_CHAMBER(Mekanism.machineBlock2ID, 3, "ChemicalInjectionChamber", 31, Mekanism.chemicalInjectionChamberUsage*400, TileEntityChemicalInjectionChamber.class, false, true), ELECTROLYTIC_SEPARATOR(Mekanism.machineBlock2ID, 4, "ElectrolyticSeparator", 32, 20000, TileEntityElectrolyticSeparator.class, true, false), - PRECISION_SAWMILL(Mekanism.machineBlock2ID, 5, "PrecisionSawmill", 34, Mekanism.precisionSawmillUsage*400, TileEntityPrecisionSawmill.class, false, true); + PRECISION_SAWMILL(Mekanism.machineBlock2ID, 5, "PrecisionSawmill", 34, Mekanism.precisionSawmillUsage*400, TileEntityPrecisionSawmill.class, false, true), + CHEMICAL_DISSOLUTION_CHAMBER(Mekanism.machineBlock2ID, 6, "ChemicalDissolutionChamber", -1, 20000, TileEntityChemicalDissolutionChamber.class, true, false), + CHEMICAL_WASHER(Mekanism.machineBlock2ID, 7, "ChemicalWasher", -1, 20000, TileEntityChemicalWasher.class, true, false), + CHEMICAL_CRYSTALIZER(Mekanism.machineBlock2ID, 8, "ChemicalCrystalizer", -1, 20000, TileEntityChemicalCrystalizer.class, true, false); public int typeId; public int meta; diff --git a/common/mekanism/common/item/ItemBlockMachine.java b/common/mekanism/common/item/ItemBlockMachine.java index 6ef768f34..486cd09df 100644 --- a/common/mekanism/common/item/ItemBlockMachine.java +++ b/common/mekanism/common/item/ItemBlockMachine.java @@ -76,6 +76,9 @@ import cpw.mods.fml.relauncher.SideOnly; * 1:3: Chemical Injection Chamber * 1:4: Electrolytic Separator * 1:5: Precision Sawmill + * 1:6: Chemical Dissolution Chamber + * 1:7: Chemical Washer + * 1:8: Chemical Crystalizer * @author AidanBrady * */ diff --git a/common/mekanism/common/network/PacketConfigSync.java b/common/mekanism/common/network/PacketConfigSync.java index fef2ef7e6..70d21a688 100644 --- a/common/mekanism/common/network/PacketConfigSync.java +++ b/common/mekanism/common/network/PacketConfigSync.java @@ -70,6 +70,9 @@ public class PacketConfigSync implements IMekanismPacket Mekanism.chemicalInjectionChamberUsage = dataStream.readDouble(); Mekanism.electrolyticSeparatorUsage = dataStream.readDouble(); Mekanism.precisionSawmillUsage = dataStream.readDouble(); + Mekanism.chemicalDissolutionChamberUsage = dataStream.readDouble(); + Mekanism.chemicalWasherUsage = dataStream.readDouble(); + Mekanism.chemicalCrystalizerUsage = dataStream.readDouble(); for(IModule module : Mekanism.modulesLoaded) { @@ -123,6 +126,9 @@ public class PacketConfigSync implements IMekanismPacket dataStream.writeDouble(Mekanism.chemicalInjectionChamberUsage); dataStream.writeDouble(Mekanism.electrolyticSeparatorUsage); dataStream.writeDouble(Mekanism.precisionSawmillUsage); + dataStream.writeDouble(Mekanism.chemicalDissolutionChamberUsage); + dataStream.writeDouble(Mekanism.chemicalWasherUsage); + dataStream.writeDouble(Mekanism.chemicalCrystalizerUsage); for(IModule module : Mekanism.modulesLoaded) { diff --git a/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java b/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java new file mode 100644 index 000000000..f3b49ff96 --- /dev/null +++ b/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java @@ -0,0 +1,14 @@ +package mekanism.common.tile; + +import mekanism.common.block.BlockMachine.MachineType; +import net.minecraft.item.ItemStack; + +public class TileEntityChemicalCrystalizer extends TileEntityElectricBlock +{ + public TileEntityChemicalCrystalizer() + { + super("ChemicalCrystalizer", MachineType.CHEMICAL_CRYSTALIZER.baseEnergy); + + inventory = new ItemStack[3]; + } +} diff --git a/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java b/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java new file mode 100644 index 000000000..45c94ff63 --- /dev/null +++ b/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java @@ -0,0 +1,14 @@ +package mekanism.common.tile; + +import mekanism.common.block.BlockMachine.MachineType; +import net.minecraft.item.ItemStack; + +public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBlock +{ + public TileEntityChemicalDissolutionChamber() + { + super("ChemicalDissolutionChamber", MachineType.CHEMICAL_DISSOLUTION_CHAMBER.baseEnergy); + + inventory = new ItemStack[4]; + } +} diff --git a/common/mekanism/common/tile/TileEntityChemicalWasher.java b/common/mekanism/common/tile/TileEntityChemicalWasher.java new file mode 100644 index 000000000..f4afe5fe0 --- /dev/null +++ b/common/mekanism/common/tile/TileEntityChemicalWasher.java @@ -0,0 +1,14 @@ +package mekanism.common.tile; + +import mekanism.common.block.BlockMachine.MachineType; +import net.minecraft.item.ItemStack; + +public class TileEntityChemicalWasher extends TileEntityElectricBlock +{ + public TileEntityChemicalWasher() + { + super("ChemicalWasher", MachineType.CHEMICAL_WASHER.baseEnergy); + + inventory = new ItemStack[3]; + } +} diff --git a/resources/assets/mekanism/gui/GuiChemicalRecrystalizationChamber.png b/resources/assets/mekanism/gui/GuiChemicalCrystalizer.png similarity index 100% rename from resources/assets/mekanism/gui/GuiChemicalRecrystalizationChamber.png rename to resources/assets/mekanism/gui/GuiChemicalCrystalizer.png diff --git a/resources/assets/mekanism/lang/en_US.lang b/resources/assets/mekanism/lang/en_US.lang index 8d1df6fab..bef18987a 100644 --- a/resources/assets/mekanism/lang/en_US.lang +++ b/resources/assets/mekanism/lang/en_US.lang @@ -85,6 +85,9 @@ tile.MachineBlock2.ChemicalCombiner.name=Chemical Combiner tile.MachineBlock2.ChemicalInjectionChamber.name=Chemical Injection Chamber tile.MachineBlock2.ElectrolyticSeparator.name=Electrolytic Separator tile.MachineBlock2.PrecisionSawmill.name=Precision Sawmill +tile.MachineBlock2.ChemicalDissolutionChamber.name=Chemical Dissolution Chamber +tile.MachineBlock2.ChemicalWasher.name=Chemical Washer +tile.MachineBlock2.ChemicalCrystalizer.name=Chemical Crystalizer //Infuse types infuse.carbon=Carbon diff --git a/resources/assets/mekanism/render/ChemicalCrystalizer.png b/resources/assets/mekanism/render/ChemicalCrystalizer.png new file mode 100644 index 0000000000000000000000000000000000000000..ed9fad844248465f8dd873fb352e78a8bb0bcfa9 GIT binary patch literal 5024 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 Bk-h)` literal 0 HcmV?d00001 diff --git a/resources/assets/mekanism/render/ChemicalWasher.png b/resources/assets/mekanism/render/ChemicalWasher.png new file mode 100644 index 0000000000000000000000000000000000000000..93c84aa42c6b52ffa69262906a913259aa0c268a GIT binary patch literal 4516 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 literal 0 HcmV?d00001 From b0fbaba62b0cf17f68ce32bf93cc9cfd3028e3fc Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Sun, 26 Jan 2014 17:55:49 -0500 Subject: [PATCH 2/9] Start work on recipe systems --- common/mekanism/api/RecipeHelper.java | 54 +++++++++++++++++-- .../client/gui/GuiChemicalCrystalizer.java | 6 +++ .../gui/GuiChemicalDissolutionChamber.java | 6 +++ .../client/gui/GuiChemicalWasher.java | 6 +++ .../ContainerChemicalCrystalizer.java | 6 +++ .../ContainerChemicalDissolutionChamber.java | 6 +++ .../container/ContainerChemicalWasher.java | 6 +++ .../mekanism/common/recipe/RecipeHandler.java | 35 +++++++++++- 8 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 common/mekanism/client/gui/GuiChemicalCrystalizer.java create mode 100644 common/mekanism/client/gui/GuiChemicalDissolutionChamber.java create mode 100644 common/mekanism/client/gui/GuiChemicalWasher.java create mode 100644 common/mekanism/common/inventory/container/ContainerChemicalCrystalizer.java create mode 100644 common/mekanism/common/inventory/container/ContainerChemicalDissolutionChamber.java create mode 100644 common/mekanism/common/inventory/container/ContainerChemicalWasher.java diff --git a/common/mekanism/api/RecipeHelper.java b/common/mekanism/api/RecipeHelper.java index d7301e24f..075c9b75d 100644 --- a/common/mekanism/api/RecipeHelper.java +++ b/common/mekanism/api/RecipeHelper.java @@ -159,9 +159,9 @@ public final class RecipeHelper } /** - * Add a Electrolytic Separator recipe. - * @param input - input ItemStack - * @param output - output ItemStack + * Add an Electrolytic Separator recipe. + * @param input - input FluidStack + * @param output - output ChemicalPair */ public static void addElectrolyticSeparatorRecipe(FluidStack input, ChemicalPair output) { @@ -174,6 +174,54 @@ public final class RecipeHelper } } + /** + * Add a Chemical Dissolution Chamber recipe. + * @param input - input ItemStack + * @param output - output GasStack + */ + public static void addChemicalDissolutionChamberRecipe(ItemStack input, GasStack output) + { + try { + Class recipeClass = Class.forName("mekanism.common.recipe.RecipeHandler"); + Method m = recipeClass.getMethod("addChemicalDissolutionChamberRecipe", ItemStack.class, GasStack.class); + m.invoke(null, input, output); + } catch(Exception e) { + System.err.println("[Mekanism] Error while adding recipe: " + e.getMessage()); + } + } + + /** + * Add a Chemical Washer recipe. + * @param input - input GasStack + * @param output - output GasStack + */ + public static void addChemicalWasherRecipe(GasStack input, GasStack output) + { + try { + Class recipeClass = Class.forName("mekanism.common.recipe.RecipeHandler"); + Method m = recipeClass.getMethod("addChemicalWasherRecipe", GasStack.class, GasStack.class); + m.invoke(null, input, output); + } catch(Exception e) { + System.err.println("[Mekanism] Error while adding recipe: " + e.getMessage()); + } + } + + /** + * Add a Electrolytic Separator recipe. + * @param input - input GasStack + * @param output - output ItemStack + */ + public static void addChemicalCrystalizerRecipe(GasStack input, ItemStack output) + { + try { + Class recipeClass = Class.forName("mekanism.common.recipe.RecipeHandler"); + Method m = recipeClass.getMethod("addChemicalCrystalizerRecipe", GasStack.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/gui/GuiChemicalCrystalizer.java b/common/mekanism/client/gui/GuiChemicalCrystalizer.java new file mode 100644 index 000000000..b9e00b90b --- /dev/null +++ b/common/mekanism/client/gui/GuiChemicalCrystalizer.java @@ -0,0 +1,6 @@ +package mekanism.client.gui; + +public class GuiChemicalCrystalizer +{ + +} diff --git a/common/mekanism/client/gui/GuiChemicalDissolutionChamber.java b/common/mekanism/client/gui/GuiChemicalDissolutionChamber.java new file mode 100644 index 000000000..679c36e6f --- /dev/null +++ b/common/mekanism/client/gui/GuiChemicalDissolutionChamber.java @@ -0,0 +1,6 @@ +package mekanism.client.gui; + +public class GuiChemicalDissolutionChamber +{ + +} diff --git a/common/mekanism/client/gui/GuiChemicalWasher.java b/common/mekanism/client/gui/GuiChemicalWasher.java new file mode 100644 index 000000000..e609f2094 --- /dev/null +++ b/common/mekanism/client/gui/GuiChemicalWasher.java @@ -0,0 +1,6 @@ +package mekanism.client.gui; + +public class GuiChemicalWasher +{ + +} diff --git a/common/mekanism/common/inventory/container/ContainerChemicalCrystalizer.java b/common/mekanism/common/inventory/container/ContainerChemicalCrystalizer.java new file mode 100644 index 000000000..054538695 --- /dev/null +++ b/common/mekanism/common/inventory/container/ContainerChemicalCrystalizer.java @@ -0,0 +1,6 @@ +package mekanism.common.inventory.container; + +public class ContainerChemicalCrystalizer +{ + +} diff --git a/common/mekanism/common/inventory/container/ContainerChemicalDissolutionChamber.java b/common/mekanism/common/inventory/container/ContainerChemicalDissolutionChamber.java new file mode 100644 index 000000000..0623cda71 --- /dev/null +++ b/common/mekanism/common/inventory/container/ContainerChemicalDissolutionChamber.java @@ -0,0 +1,6 @@ +package mekanism.common.inventory.container; + +public class ContainerChemicalDissolutionChamber +{ + +} diff --git a/common/mekanism/common/inventory/container/ContainerChemicalWasher.java b/common/mekanism/common/inventory/container/ContainerChemicalWasher.java new file mode 100644 index 000000000..4ee70b7a5 --- /dev/null +++ b/common/mekanism/common/inventory/container/ContainerChemicalWasher.java @@ -0,0 +1,6 @@ +package mekanism.common.inventory.container; + +public class ContainerChemicalWasher +{ + +} diff --git a/common/mekanism/common/recipe/RecipeHandler.java b/common/mekanism/common/recipe/RecipeHandler.java index e918faa6c..adcdae405 100644 --- a/common/mekanism/common/recipe/RecipeHandler.java +++ b/common/mekanism/common/recipe/RecipeHandler.java @@ -138,6 +138,36 @@ public final class RecipeHandler { Recipe.PRECISION_SAWMILL.put(input, output); } + + /** + * Add a Chemical Dissolution Chamber recipe. + * @param input - input ItemStack + * @param output - output GasStack + */ + public static void addChemicalDissolutionChamberRecipe(ItemStack input, GasStack output) + { + Recipe.CHEMICAL_DISSOLUTION_CHAMBER.put(input, output); + } + + /** + * Add a Chemical Washer recipe. + * @param input - input GasStack + * @param output - output GasStack + */ + public static void addChemicalWasherRecipe(GasStack input, GasStack output) + { + Recipe.CHEMICAL_WASHER.put(input, output); + } + + /** + * Add a Chemical Crystalizer recipe. + * @param input - input GasStack + * @param output - output ItemStack + */ + public static void addChemicalCrystalizerRecipe(GasStack input, ItemStack output) + { + Recipe.CHEMICAL_CRYSTALIZER.put(input, output); + } /** * Gets the InfusionOutput of the InfusionInput in the parameters. @@ -389,7 +419,10 @@ public final class RecipeHandler CHEMICAL_OXIDIZER(new HashMap()), CHEMICAL_INJECTION_CHAMBER(new HashMap()), ELECTROLYTIC_SEPARATOR(new HashMap()), - PRECISION_SAWMILL(new HashMap()); + PRECISION_SAWMILL(new HashMap()), + CHEMICAL_DISSOLUTION_CHAMBER(new HashMap()), + CHEMICAL_WASHER(new HashMap()), + CHEMICAL_CRYSTALIZER(new HashMap()); private HashMap recipes; From 90328958bbf70da38556063633b090038b13feca Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Tue, 28 Jan 2014 15:51:30 -0500 Subject: [PATCH 3/9] Finished recipe system for new machines. --- common/mekanism/api/gas/OreGas.java | 18 +++ common/mekanism/common/Mekanism.java | 16 ++- common/mekanism/common/Resource.java | 13 ++ .../common/integration/OreDictManager.java | 7 ++ .../container/ContainerChemicalOxidizer.java | 3 +- .../mekanism/common/recipe/RecipeHandler.java | 115 +++++++++++++----- .../tile/TileEntityChemicalOxidizer.java | 7 +- 7 files changed, 145 insertions(+), 34 deletions(-) diff --git a/common/mekanism/api/gas/OreGas.java b/common/mekanism/api/gas/OreGas.java index 86dd31f2b..b8e02b6e2 100644 --- a/common/mekanism/api/gas/OreGas.java +++ b/common/mekanism/api/gas/OreGas.java @@ -5,6 +5,7 @@ import net.minecraft.util.StatCollector; public class OreGas extends Gas { private String oreName; + private OreGas cleanGas; public OreGas(String s, String name) { @@ -13,6 +14,23 @@ public class OreGas extends Gas oreName = name; } + public boolean isClean() + { + return getCleanGas() == null; + } + + public OreGas getCleanGas() + { + return cleanGas; + } + + public OreGas setCleanGas(OreGas gas) + { + cleanGas = gas; + + return this; + } + public String getOreName() { return StatCollector.translateToLocal(oreName); diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index 86d061a33..5da070bc2 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -709,6 +709,18 @@ public class Mekanism //Electrolytic Separator Recipes RecipeHandler.addElectrolyticSeparatorRecipe(FluidRegistry.getFluidStack("water", 2), new ChemicalPair(new GasStack(GasRegistry.getGas("hydrogen"), 2), new GasStack(GasRegistry.getGas("oxygen"), 1))); RecipeHandler.addElectrolyticSeparatorRecipe(FluidRegistry.getFluidStack("brine", 10), new ChemicalPair(new GasStack(GasRegistry.getGas("hydrogen"), 1), new GasStack(GasRegistry.getGas("chlorine"), 1))); + + //Chemical Washer Recipes + for(Gas gas : GasRegistry.getRegisteredGasses()) + { + if(gas instanceof OreGas && !((OreGas)gas).isClean()) + { + OreGas oreGas = (OreGas)gas; + + RecipeHandler.addChemicalWasherRecipe(new GasStack(oreGas, 1), new GasStack(oreGas.getCleanGas(), 1)); + RecipeHandler.addChemicalCrystalizerRecipe(new GasStack(oreGas, 200), new ItemStack(Crystal, 1, Resource.getFromName(oreGas.getName()).ordinal())); + } + } //Infuse objects InfuseRegistry.registerInfuseObject(new ItemStack(Item.coal, 1, 0), new InfuseObject(InfuseRegistry.get("CARBON"), 10)); @@ -1071,8 +1083,8 @@ public class Mekanism { String name = resource.getName(); - GasRegistry.register(new OreGas(name.toLowerCase(), "oregas." + name.toLowerCase()).setVisible(false)); - GasRegistry.register(new OreGas("clean" + name, "oregas." + name.toLowerCase()).setVisible(false)); + OreGas clean = (OreGas)GasRegistry.register(new OreGas("clean" + name, "oregas." + name.toLowerCase()).setVisible(false)); + GasRegistry.register(new OreGas(name.toLowerCase(), "oregas." + name.toLowerCase()).setCleanGas(clean).setVisible(false)); } FluidRegistry.registerFluid(new Fluid("brine")); diff --git a/common/mekanism/common/Resource.java b/common/mekanism/common/Resource.java index 969b99356..faf554fec 100644 --- a/common/mekanism/common/Resource.java +++ b/common/mekanism/common/Resource.java @@ -18,6 +18,19 @@ public enum Resource name = s; } + public static Resource getFromName(String s) + { + for(Resource r : values()) + { + if(r.name.toLowerCase().equals(s.toLowerCase())) + { + return r; + } + } + + return null; + } + public String getName() { return name; diff --git a/common/mekanism/common/integration/OreDictManager.java b/common/mekanism/common/integration/OreDictManager.java index e63529286..ea4cf4939 100644 --- a/common/mekanism/common/integration/OreDictManager.java +++ b/common/mekanism/common/integration/OreDictManager.java @@ -220,6 +220,7 @@ public final class OreDictManager RecipeHandler.addEnrichmentChamberRecipe(MekanismUtils.size(ore, 1), new ItemStack(Mekanism.Dust, 2, 6)); RecipeHandler.addPurificationChamberRecipe(MekanismUtils.size(ore, 1), new ItemStack(Mekanism.Clump, 3, 3)); RecipeHandler.addChemicalInjectionChamberRecipe(new AdvancedInput(MekanismUtils.size(ore, 1), GasRegistry.getGas("hydrogenChloride")), new ItemStack(Mekanism.Shard, 4, 3)); + RecipeHandler.addChemicalDissolutionChamberRecipe(MekanismUtils.size(ore, 1), new GasStack(GasRegistry.getGas("copper"), 1000)); } for(ItemStack ore : OreDictionary.getOres("oreTin")) @@ -227,6 +228,7 @@ public final class OreDictManager RecipeHandler.addEnrichmentChamberRecipe(MekanismUtils.size(ore, 1), new ItemStack(Mekanism.Dust, 2, 7)); RecipeHandler.addPurificationChamberRecipe(MekanismUtils.size(ore, 1), new ItemStack(Mekanism.Clump, 3, 4)); RecipeHandler.addChemicalInjectionChamberRecipe(new AdvancedInput(MekanismUtils.size(ore, 1), GasRegistry.getGas("hydrogenChloride")), new ItemStack(Mekanism.Shard, 4, 4)); + RecipeHandler.addChemicalDissolutionChamberRecipe(MekanismUtils.size(ore, 1), new GasStack(GasRegistry.getGas("tin"), 1000)); } for(ItemStack ore : OreDictionary.getOres("oreOsmium")) @@ -234,6 +236,7 @@ public final class OreDictManager RecipeHandler.addEnrichmentChamberRecipe(MekanismUtils.size(ore, 1), new ItemStack(Mekanism.Dust, 2, 2)); RecipeHandler.addPurificationChamberRecipe(MekanismUtils.size(ore, 1), new ItemStack(Mekanism.Clump, 3, 2)); RecipeHandler.addChemicalInjectionChamberRecipe(new AdvancedInput(MekanismUtils.size(ore, 1), GasRegistry.getGas("hydrogenChloride")), new ItemStack(Mekanism.Shard, 4, 2)); + RecipeHandler.addChemicalDissolutionChamberRecipe(MekanismUtils.size(ore, 1), new GasStack(GasRegistry.getGas("osmium"), 1000)); } for(ItemStack ore : OreDictionary.getOres("oreIron")) @@ -241,6 +244,7 @@ public final class OreDictManager RecipeHandler.addEnrichmentChamberRecipe(MekanismUtils.size(ore, 1), new ItemStack(Mekanism.Dust, 2, 0)); RecipeHandler.addPurificationChamberRecipe(MekanismUtils.size(ore, 1), new ItemStack(Mekanism.Clump, 3, 0)); RecipeHandler.addChemicalInjectionChamberRecipe(new AdvancedInput(MekanismUtils.size(ore, 1), GasRegistry.getGas("hydrogenChloride")), new ItemStack(Mekanism.Shard, 4, 0)); + RecipeHandler.addChemicalDissolutionChamberRecipe(MekanismUtils.size(ore, 1), new GasStack(GasRegistry.getGas("iron"), 1000)); } for(ItemStack ore : OreDictionary.getOres("oreGold")) @@ -248,6 +252,7 @@ public final class OreDictManager RecipeHandler.addEnrichmentChamberRecipe(MekanismUtils.size(ore, 1), new ItemStack(Mekanism.Dust, 2, 1)); RecipeHandler.addPurificationChamberRecipe(MekanismUtils.size(ore, 1), new ItemStack(Mekanism.Clump, 3, 1)); RecipeHandler.addChemicalInjectionChamberRecipe(new AdvancedInput(MekanismUtils.size(ore, 1), GasRegistry.getGas("hydrogenChloride")), new ItemStack(Mekanism.Shard, 4, 1)); + RecipeHandler.addChemicalDissolutionChamberRecipe(MekanismUtils.size(ore, 1), new GasStack(GasRegistry.getGas("gold"), 1000)); } for(ItemStack ore : OreDictionary.getOres("oreSilver")) @@ -255,6 +260,7 @@ public final class OreDictManager RecipeHandler.addEnrichmentChamberRecipe(MekanismUtils.size(ore, 1), new ItemStack(Mekanism.Dust, 2, 8)); RecipeHandler.addPurificationChamberRecipe(MekanismUtils.size(ore, 1), new ItemStack(Mekanism.Clump, 3, 5)); RecipeHandler.addChemicalInjectionChamberRecipe(new AdvancedInput(MekanismUtils.size(ore, 1), GasRegistry.getGas("hydrogenChloride")), new ItemStack(Mekanism.Shard, 4, 5)); + RecipeHandler.addChemicalDissolutionChamberRecipe(MekanismUtils.size(ore, 1), new GasStack(GasRegistry.getGas("silver"), 1000)); } for(ItemStack ore : OreDictionary.getOres("oreLead")) @@ -262,6 +268,7 @@ public final class OreDictManager RecipeHandler.addEnrichmentChamberRecipe(MekanismUtils.size(ore, 1), new ItemStack(Mekanism.Dust, 2, 9)); RecipeHandler.addPurificationChamberRecipe(MekanismUtils.size(ore, 1), new ItemStack(Mekanism.Clump, 3, 7)); RecipeHandler.addChemicalInjectionChamberRecipe(new AdvancedInput(MekanismUtils.size(ore, 1), GasRegistry.getGas("hydrogenChloride")), new ItemStack(Mekanism.Shard, 4, 7)); + RecipeHandler.addChemicalDissolutionChamberRecipe(MekanismUtils.size(ore, 1), new GasStack(GasRegistry.getGas("lead"), 1000)); } for(ItemStack ore : OreDictionary.getOres("oreNickel")) diff --git a/common/mekanism/common/inventory/container/ContainerChemicalOxidizer.java b/common/mekanism/common/inventory/container/ContainerChemicalOxidizer.java index 3c1aa674e..3735c09fe 100644 --- a/common/mekanism/common/inventory/container/ContainerChemicalOxidizer.java +++ b/common/mekanism/common/inventory/container/ContainerChemicalOxidizer.java @@ -4,6 +4,7 @@ import mekanism.api.gas.IGasItem; import mekanism.common.inventory.slot.SlotEnergy.SlotDischarge; import mekanism.common.inventory.slot.SlotStorageTank; import mekanism.common.recipe.RecipeHandler; +import mekanism.common.recipe.RecipeHandler.Recipe; import mekanism.common.tile.TileEntityChemicalOxidizer; import mekanism.common.util.ChargeUtils; import net.minecraft.entity.player.EntityPlayer; @@ -68,7 +69,7 @@ public class ContainerChemicalOxidizer extends Container ItemStack slotStack = currentSlot.getStack(); stack = slotStack.copy(); - if(RecipeHandler.getChemicalOxidizerOutput(slotStack, false) != null) + if(RecipeHandler.getItemToGasOutput(slotStack, false, Recipe.CHEMICAL_OXIDIZER.get()) != null) { if(!mergeItemStack(slotStack, 0, 1, true)) { diff --git a/common/mekanism/common/recipe/RecipeHandler.java b/common/mekanism/common/recipe/RecipeHandler.java index adcdae405..2799682d5 100644 --- a/common/mekanism/common/recipe/RecipeHandler.java +++ b/common/mekanism/common/recipe/RecipeHandler.java @@ -6,6 +6,7 @@ import java.util.Map; import mekanism.api.AdvancedInput; import mekanism.api.ChanceOutput; import mekanism.api.ChemicalPair; +import mekanism.api.gas.Gas; import mekanism.api.gas.GasRegistry; import mekanism.api.gas.GasStack; import mekanism.api.gas.GasTank; @@ -236,19 +237,77 @@ public final class RecipeHandler return null; } + + /** + * Gets the Chemical Washer GasStack output of the defined GasTank input. + * @param itemstack - input GasTank + * @param removeGas - whether or not to use gas in the gas tank + * @return output GasStack + */ + public static GasStack getChemicalDissolutionChamberOutput(GasTank gasTank, boolean removeGas) + { + GasStack gas = gasTank.getGas(); + + if(gas != null) + { + HashMap recipes = Recipe.CHEMICAL_WASHER.get(); + + for(Map.Entry entry : recipes.entrySet()) + { + GasStack key = (GasStack)entry.getKey(); + + if(key != null && key.getGas() == gas.getGas() && key.amount >= gas.amount) + { + gasTank.draw(key.amount, removeGas); + + return entry.getValue().copy(); + } + } + } + + return null; + } + + /** + * Gets the Chemical Washer GasStack output of the defined GasTank input. + * @param gasTank - input GasTank + * @param removeGas - whether or not to use gas in the gas tank + * @return output GasStack + */ + public static GasStack getChemicalWasherOutput(GasTank gasTank, boolean removeGas) + { + GasStack gas = gasTank.getGas(); + + if(gas != null) + { + HashMap recipes = Recipe.CHEMICAL_WASHER.get(); + + for(Map.Entry entry : recipes.entrySet()) + { + GasStack key = (GasStack)entry.getKey(); + + if(key != null && key.getGas() == gas.getGas() && key.amount >= gas.amount) + { + gasTank.draw(key.amount, removeGas); + + return entry.getValue().copy(); + } + } + } + + return null; + } /** - * Gets the InfusionOutput of the ItemStack in the parameters. + * Gets the GasStack of the ItemStack in the parameters using a defined map. * @param itemstack - input ItemStack * @param stackDecrease - whether or not to decrease the input slot's stack size * @return output GasStack */ - public static GasStack getChemicalOxidizerOutput(ItemStack itemstack, boolean stackDecrease) + public static GasStack getItemToGasOutput(ItemStack itemstack, boolean stackDecrease, HashMap recipes) { if(itemstack != null) { - HashMap recipes = Recipe.CHEMICAL_OXIDIZER.get(); - for(Map.Entry entry : recipes.entrySet()) { ItemStack stack = (ItemStack)entry.getKey(); @@ -355,30 +414,6 @@ public final class RecipeHandler return null; } - /** - * Gets the output ItemStack of the ItemStack in the parameters. - * @param itemstack - input ItemStack - * @param recipes - Map of recipes - * @return whether the item can be used in a recipe - */ - public static boolean isInRecipe(ItemStack itemstack, Map recipes) - { - if(itemstack != null) - { - for(Map.Entry entry : recipes.entrySet()) - { - ItemStack stack = (ItemStack)entry.getKey(); - - if(StackUtils.equalsWildcard(stack, itemstack)) - { - return true; - } - } - } - - return false; - } - /** * Get the result of electrolysing a given fluid * @param fluidTank - the FluidTank to electrolyse fluid from @@ -406,6 +441,30 @@ public final class RecipeHandler return null; } + + /** + * Gets the output ItemStack of the ItemStack in the parameters. + * @param itemstack - input ItemStack + * @param recipes - Map of recipes + * @return whether the item can be used in a recipe + */ + public static boolean isInRecipe(ItemStack itemstack, Map recipes) + { + if(itemstack != null) + { + for(Map.Entry entry : recipes.entrySet()) + { + ItemStack stack = (ItemStack)entry.getKey(); + + if(StackUtils.equalsWildcard(stack, itemstack)) + { + return true; + } + } + } + + return false; + } public static enum Recipe { diff --git a/common/mekanism/common/tile/TileEntityChemicalOxidizer.java b/common/mekanism/common/tile/TileEntityChemicalOxidizer.java index 7c78cbdf0..0a1ea41c6 100644 --- a/common/mekanism/common/tile/TileEntityChemicalOxidizer.java +++ b/common/mekanism/common/tile/TileEntityChemicalOxidizer.java @@ -19,6 +19,7 @@ import mekanism.common.PacketHandler.Transmission; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.network.PacketTileEntity; import mekanism.common.recipe.RecipeHandler; +import mekanism.common.recipe.RecipeHandler.Recipe; import mekanism.common.util.ChargeUtils; import mekanism.common.util.InventoryUtils; import mekanism.common.util.MekanismUtils; @@ -107,7 +108,7 @@ public class TileEntityChemicalOxidizer extends TileEntityElectricBlock implemen operatingTicks++; } else { - GasStack stack = RecipeHandler.getChemicalOxidizerOutput(inventory[0], true); + GasStack stack = RecipeHandler.getItemToGasOutput(inventory[0], true, Recipe.CHEMICAL_OXIDIZER.get()); gasTank.receive(stack, true); operatingTicks = 0; @@ -152,7 +153,7 @@ public class TileEntityChemicalOxidizer extends TileEntityElectricBlock implemen { if(slotID == 0) { - return RecipeHandler.getChemicalOxidizerOutput(itemstack, false) != null; + return RecipeHandler.getItemToGasOutput(itemstack, false, Recipe.CHEMICAL_OXIDIZER.get()) != null; } else if(slotID == 1) { @@ -204,7 +205,7 @@ public class TileEntityChemicalOxidizer extends TileEntityElectricBlock implemen return false; } - GasStack stack = RecipeHandler.getChemicalOxidizerOutput(inventory[0], false); + GasStack stack = RecipeHandler.getItemToGasOutput(inventory[0], false, Recipe.CHEMICAL_OXIDIZER.get()); if(stack == null || (gasTank.getGas() != null && (gasTank.getGas().getGas() != stack.getGas() || gasTank.getNeeded() < stack.amount))) { From 72e10a8162f1aa5bcc8603c7d385479a312a9db4 Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Tue, 28 Jan 2014 16:19:07 -0500 Subject: [PATCH 4/9] Just about finished base Chemical Washer code --- .../tile/TileEntityChemicalInfuser.java | 2 +- .../common/tile/TileEntityChemicalWasher.java | 537 +++++++++++++++++- .../assets/mekanism/gui/GuiChemicalWasher.png | Bin 4344 -> 4340 bytes 3 files changed, 534 insertions(+), 5 deletions(-) diff --git a/common/mekanism/common/tile/TileEntityChemicalInfuser.java b/common/mekanism/common/tile/TileEntityChemicalInfuser.java index 9a4693960..bed8d3042 100644 --- a/common/mekanism/common/tile/TileEntityChemicalInfuser.java +++ b/common/mekanism/common/tile/TileEntityChemicalInfuser.java @@ -153,7 +153,7 @@ public class TileEntityChemicalInfuser extends TileEntityElectricBlock implement GasStack out = RecipeHandler.getChemicalInfuserOutput(leftTank, rightTank, false); - if(out == null) + if(out == null || centerTank.getGas() != null && centerTank.getGas().getGas() != out.getGas()) { return false; } diff --git a/common/mekanism/common/tile/TileEntityChemicalWasher.java b/common/mekanism/common/tile/TileEntityChemicalWasher.java index f4afe5fe0..c468633cb 100644 --- a/common/mekanism/common/tile/TileEntityChemicalWasher.java +++ b/common/mekanism/common/tile/TileEntityChemicalWasher.java @@ -1,14 +1,543 @@ package mekanism.common.tile; -import mekanism.common.block.BlockMachine.MachineType; -import net.minecraft.item.ItemStack; +import java.util.ArrayList; -public class TileEntityChemicalWasher extends TileEntityElectricBlock +import mekanism.api.Coord4D; +import mekanism.api.gas.Gas; +import mekanism.api.gas.GasRegistry; +import mekanism.api.gas.GasStack; +import mekanism.api.gas.GasTank; +import mekanism.api.gas.GasTransmission; +import mekanism.api.gas.IGasHandler; +import mekanism.api.gas.IGasItem; +import mekanism.api.gas.ITubeConnection; +import mekanism.client.sound.IHasSound; +import mekanism.common.IActiveState; +import mekanism.common.IRedstoneControl; +import mekanism.common.Mekanism; +import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.block.BlockMachine.MachineType; +import mekanism.common.network.PacketTileEntity; +import mekanism.common.recipe.RecipeHandler; +import mekanism.common.util.ChargeUtils; +import mekanism.common.util.InventoryUtils; +import mekanism.common.util.MekanismUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.FluidTankInfo; +import net.minecraftforge.fluids.IFluidHandler; + +import com.google.common.io.ByteArrayDataInput; + +public class TileEntityChemicalWasher extends TileEntityElectricBlock implements IActiveState, IGasHandler, ITubeConnection, IRedstoneControl, IHasSound, IFluidHandler { + public FluidTank fluidTank = new FluidTank(MAX_FLUID); + public GasTank inputTank = new GasTank(MAX_GAS); + public GasTank outputTank = new GasTank(MAX_GAS); + + public static final int MAX_GAS = 10000; + public static final int MAX_FLUID = 10000; + + public static int WATER_USAGE = 5; + + public int updateDelay; + + public int gasOutput = 16; + + public boolean isActive; + + public boolean clientActive; + + public double prevEnergy; + + public final double ENERGY_USAGE = Mekanism.chemicalInfuserUsage; + + /** This machine's current RedstoneControl type. */ + public RedstoneControl controlType = RedstoneControl.DISABLED; + public TileEntityChemicalWasher() { super("ChemicalWasher", MachineType.CHEMICAL_WASHER.baseEnergy); - inventory = new ItemStack[3]; } + + @Override + public void onUpdate() + { + if(worldObj.isRemote) + { + Mekanism.proxy.registerSound(this); + + if(updateDelay > 0) + { + updateDelay--; + + if(updateDelay == 0 && clientActive != isActive) + { + isActive = clientActive; + MekanismUtils.updateBlock(worldObj, xCoord, yCoord, zCoord); + } + } + } + + if(!worldObj.isRemote) + { + if(updateDelay > 0) + { + updateDelay--; + + if(updateDelay == 0 && clientActive != isActive) + { + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity().setParams(Coord4D.get(this), getNetworkedData(new ArrayList()))); + } + } + + ChargeUtils.discharge(2, this); + + if(inventory[1] != null && outputTank.getGas() != null) + { + outputTank.draw(GasTransmission.addGas(inventory[1], outputTank.getGas()), true); + } + + if(canOperate() && getEnergy() >= ENERGY_USAGE && MekanismUtils.canFunction(this)) + { + setActive(true); + GasStack stack = RecipeHandler.getChemicalWasherOutput(inputTank, true); + + outputTank.receive(stack, true); + fluidTank.drain(WATER_USAGE, true); + + setEnergy(getEnergy() - ENERGY_USAGE); + } + else { + if(prevEnergy >= getEnergy()) + { + setActive(false); + } + } + + if(outputTank.getGas() != null) + { + GasStack toSend = new GasStack(outputTank.getGas().getGas(), Math.min(outputTank.getStored(), gasOutput)); + outputTank.draw(GasTransmission.emitGasToNetwork(toSend, this, MekanismUtils.getRight(facing)), true); + + TileEntity tileEntity = Coord4D.get(this).getFromSide(MekanismUtils.getRight(facing)).getTileEntity(worldObj); + + if(tileEntity instanceof IGasHandler) + { + if(((IGasHandler)tileEntity).canReceiveGas(MekanismUtils.getRight(facing).getOpposite(), outputTank.getGas().getGas())) + { + outputTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getRight(facing).getOpposite(), toSend), true); + } + } + } + + prevEnergy = getEnergy(); + } + } + + public boolean canOperate() + { + if(fluidTank.getFluidAmount() < WATER_USAGE || inputTank.getGas() == null || outputTank.getNeeded() == 0) + { + return false; + } + + GasStack out = RecipeHandler.getChemicalWasherOutput(inputTank, false); + + if(out == null || outputTank.getGas() != null && outputTank.getGas().getGas() != out.getGas()) + { + return false; + } + + if(outputTank.getNeeded() < out.amount) + { + return false; + } + + return true; + } + + private void manageBuckets() + { + if(FluidContainerRegistry.isFilledContainer(inventory[0])) + { + FluidStack itemFluid = FluidContainerRegistry.getFluidForFilledItem(inventory[0]); + + if((fluidTank.getFluid() == null && itemFluid.amount <= MAX_FLUID) || fluidTank.getFluid().amount+itemFluid.amount <= MAX_FLUID) + { + if(itemFluid.getFluid() != FluidRegistry.WATER || (fluidTank.getFluid() != null && !fluidTank.getFluid().isFluidEqual(itemFluid))) + { + return; + } + + ItemStack containerItem = inventory[0].getItem().getContainerItemStack(inventory[0]); + + boolean filled = false; + + if(containerItem != null) + { + if(inventory[1] == null || (inventory[1].isItemEqual(containerItem) && inventory[1].stackSize+1 <= containerItem.getMaxStackSize())) + { + inventory[0] = null; + + if(inventory[1] == null) + { + inventory[1] = containerItem; + } + else { + inventory[1].stackSize++; + } + + filled = true; + } + } + else { + inventory[0].stackSize--; + + if(inventory[0].stackSize == 0) + { + inventory[0] = null; + } + + filled = true; + } + + if(filled) + { + fluidTank.fill(itemFluid, true); + } + } + } + } + + @Override + public void handlePacketData(ByteArrayDataInput dataStream) + { + super.handlePacketData(dataStream); + + isActive = dataStream.readBoolean(); + controlType = RedstoneControl.values()[dataStream.readInt()]; + + if(dataStream.readBoolean()) + { + fluidTank.setFluid(new FluidStack(FluidRegistry.getFluid(dataStream.readInt()), dataStream.readInt())); + } + else { + fluidTank.setFluid(null); + } + + if(dataStream.readBoolean()) + { + inputTank.setGas(new GasStack(GasRegistry.getGas(dataStream.readInt()), dataStream.readInt())); + } + else { + inputTank.setGas(null); + } + + if(dataStream.readBoolean()) + { + outputTank.setGas(new GasStack(GasRegistry.getGas(dataStream.readInt()), dataStream.readInt())); + } + else { + outputTank.setGas(null); + } + + + MekanismUtils.updateBlock(worldObj, xCoord, yCoord, zCoord); + } + + @Override + public ArrayList getNetworkedData(ArrayList data) + { + super.getNetworkedData(data); + + data.add(isActive); + data.add(controlType.ordinal()); + + if(fluidTank.getFluid() != null) + { + data.add(true); + data.add(fluidTank.getFluid().getFluid().getID()); + data.add(fluidTank.getFluidAmount()); + } + else { + data.add(false); + } + + if(inputTank.getGas() != null) + { + data.add(true); + data.add(inputTank.getGas().getGas().getID()); + data.add(inputTank.getStored()); + } + else { + data.add(false); + } + + if(outputTank.getGas() != null) + { + data.add(true); + data.add(outputTank.getGas().getGas().getID()); + data.add(outputTank.getStored()); + } + else { + data.add(false); + } + + return data; + } + + @Override + public void readFromNBT(NBTTagCompound nbtTags) + { + super.readFromNBT(nbtTags); + + isActive = nbtTags.getBoolean("isActive"); + controlType = RedstoneControl.values()[nbtTags.getInteger("controlType")]; + + fluidTank.readFromNBT(nbtTags.getCompoundTag("leftTank")); + inputTank.read(nbtTags.getCompoundTag("rightTank")); + outputTank.read(nbtTags.getCompoundTag("centerTank")); + } + + @Override + public void writeToNBT(NBTTagCompound nbtTags) + { + super.writeToNBT(nbtTags); + + nbtTags.setBoolean("isActive", isActive); + nbtTags.setInteger("controlType", controlType.ordinal()); + + nbtTags.setCompoundTag("leftTank", fluidTank.writeToNBT(new NBTTagCompound())); + nbtTags.setCompoundTag("rightTank", inputTank.write(new NBTTagCompound())); + nbtTags.setCompoundTag("centerTank", outputTank.write(new NBTTagCompound())); + } + + @Override + public boolean canSetFacing(int i) + { + return i != 0 && i != 1; + } + + public GasTank getTank(ForgeDirection side) + { + if(side == MekanismUtils.getLeft(facing)) + { + return inputTank; + } + else if(side == MekanismUtils.getRight(facing)) + { + return outputTank; + } + + return null; + } + + public int getScaledFluidLevel(int i) + { + return fluidTank != null ? fluidTank.getFluidAmount()*i / MAX_FLUID : 0; + } + + public int getScaledInputGasLevel(int i) + { + return inputTank != null ? inputTank.getStored()*i / MAX_GAS : 0; + } + + public int getScaledOutputGasLevel(int i) + { + return outputTank != null ? outputTank.getStored()*i / MAX_GAS : 0; + } + + @Override + public void setActive(boolean active) + { + isActive = active; + + if(clientActive != active && updateDelay == 0) + { + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity().setParams(Coord4D.get(this), getNetworkedData(new ArrayList()))); + + updateDelay = 10; + clientActive = active; + } + } + + @Override + public boolean getActive() + { + return isActive; + } + + @Override + public boolean renderUpdate() + { + return false; + } + + @Override + public boolean lightUpdate() + { + return true; + } + + @Override + public boolean canTubeConnect(ForgeDirection side) + { + return side == MekanismUtils.getLeft(facing) || side == MekanismUtils.getRight(facing) || side == ForgeDirection.UP; + } + + @Override + public boolean canReceiveGas(ForgeDirection side, Gas type) + { + return getTank(side) != null && getTank(side) != outputTank ? getTank(side).canReceive(type) : false; + } + + @Override + public RedstoneControl getControlType() + { + return controlType; + } + + @Override + public void setControlType(RedstoneControl type) + { + controlType = type; + MekanismUtils.saveChunk(this); + } + + @Override + public int receiveGas(ForgeDirection side, GasStack stack) + { + if(canReceiveGas(side, stack != null ? stack.getGas() : null)) + { + return getTank(side).receive(stack, true); + } + + return 0; + } + + @Override + public GasStack drawGas(ForgeDirection side, int amount) + { + if(canDrawGas(side, null)) + { + return getTank(side).draw(amount, true); + } + + return null; + } + + @Override + public boolean canDrawGas(ForgeDirection side, Gas type) + { + return getTank(side) == outputTank ? getTank(side).canDraw(type) : false; + } + + @Override + public boolean isItemValidForSlot(int slotID, ItemStack itemstack) + { + if(slotID == 0) + { + return FluidContainerRegistry.getFluidForFilledItem(itemstack) != null && FluidContainerRegistry.getFluidForFilledItem(itemstack).getFluid() == FluidRegistry.WATER; + } + else if(slotID == 2) + { + return ChargeUtils.canBeDischarged(itemstack); + } + + return false; + } + + @Override + public boolean canExtractItem(int slotID, ItemStack itemstack, int side) + { + if(slotID == 1) + { + return itemstack != null && itemstack.getItem() instanceof IGasItem && ((IGasItem)itemstack.getItem()).canProvideGas(itemstack, null); + } + + return false; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) + { + if(side == MekanismUtils.getLeft(facing).ordinal()) + { + return new int[] {0}; + } + else if(side == MekanismUtils.getRight(facing).ordinal()) + { + return new int[] {1}; + } + else if(side == 0 || side == 1) + { + return new int[2]; + } + + return InventoryUtils.EMPTY; + } + + @Override + public String getSoundPath() + { + return "ChemicalWasher.ogg"; + } + + @Override + public float getVolumeMultiplier() + { + return 1; + } + + @Override + public int fill(ForgeDirection from, FluidStack resource, boolean doFill) + { + if(canFill(from, resource.getFluid())) + { + return fluidTank.fill(resource, doFill); + } + + return 0; + } + + @Override + public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) + { + return null; + } + + @Override + public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) + { + return null; + } + + @Override + public boolean canFill(ForgeDirection from, Fluid fluid) + { + return from == MekanismUtils.getLeft(facing) && fluid == FluidRegistry.WATER; + } + + @Override + public boolean canDrain(ForgeDirection from, Fluid fluid) + { + return false; + } + + @Override + public FluidTankInfo[] getTankInfo(ForgeDirection from) + { + return new FluidTankInfo[] {fluidTank.getInfo()}; + } } diff --git a/resources/assets/mekanism/gui/GuiChemicalWasher.png b/resources/assets/mekanism/gui/GuiChemicalWasher.png index c13975d7881ee277f04c28602bfaaecce68ee048..e4ff0c9e5848b3659ac7437c28e3a8b9d064f271 100644 GIT binary patch delta 2837 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 Date: Tue, 28 Jan 2014 16:49:49 -0500 Subject: [PATCH 5/9] Start on Chemical Dissolution Chamber base code --- .../TileEntityChemicalDissolutionChamber.java | 385 +++++++++++++++++- .../tile/TileEntityChemicalOxidizer.java | 1 - .../common/tile/TileEntityChemicalWasher.java | 10 +- 3 files changed, 388 insertions(+), 8 deletions(-) diff --git a/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java b/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java index 45c94ff63..5b0b53ab8 100644 --- a/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java +++ b/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java @@ -1,14 +1,389 @@ package mekanism.common.tile; -import mekanism.common.block.BlockMachine.MachineType; -import net.minecraft.item.ItemStack; +import java.util.ArrayList; -public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBlock +import com.google.common.io.ByteArrayDataInput; + +import mekanism.api.Coord4D; +import mekanism.api.gas.GasRegistry; +import mekanism.api.gas.GasStack; +import mekanism.api.gas.GasTank; +import mekanism.api.gas.GasTransmission; +import mekanism.api.gas.IGasHandler; +import mekanism.api.gas.IGasItem; +import mekanism.api.gas.ITubeConnection; +import mekanism.client.sound.IHasSound; +import mekanism.common.IActiveState; +import mekanism.common.IRedstoneControl; +import mekanism.common.Mekanism; +import mekanism.common.PacketHandler; +import mekanism.common.IRedstoneControl.RedstoneControl; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.block.BlockMachine.MachineType; +import mekanism.common.network.PacketTileEntity; +import mekanism.common.recipe.RecipeHandler; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.util.ChargeUtils; +import mekanism.common.util.InventoryUtils; +import mekanism.common.util.MekanismUtils; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.ForgeDirection; + +public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBlock implements IActiveState, ITubeConnection, IRedstoneControl, IHasSound { + public GasTank injectTank = new GasTank(MAX_GAS); + public GasTank outputTank = new GasTank(MAX_GAS); + + public static final int MAX_GAS = 10000; + + public static final int INJECT_USAGE = 1; + + public int updateDelay; + + public int gasOutput = 16; + + public boolean isActive; + + public boolean clientActive; + + public double prevEnergy; + + public int operatingTicks = 0; + + public int TICKS_REQUIRED = 100; + + public final double ENERGY_USAGE = Mekanism.rotaryCondensentratorUsage; + + public RedstoneControl controlType = RedstoneControl.DISABLED; + public TileEntityChemicalDissolutionChamber() { - super("ChemicalDissolutionChamber", MachineType.CHEMICAL_DISSOLUTION_CHAMBER.baseEnergy); - + super("ChemicalDissolutionChamber", MachineType.CHEMICAL_CRYSTALIZER.baseEnergy); inventory = new ItemStack[4]; } + + @Override + public void onUpdate() + { + if(worldObj.isRemote) + { + Mekanism.proxy.registerSound(this); + + if(updateDelay > 0) + { + updateDelay--; + + if(updateDelay == 0 && clientActive != isActive) + { + isActive = clientActive; + MekanismUtils.updateBlock(worldObj, xCoord, yCoord, zCoord); + } + } + } + + if(!worldObj.isRemote) + { + if(updateDelay > 0) + { + updateDelay--; + + if(updateDelay == 0 && clientActive != isActive) + { + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity().setParams(Coord4D.get(this), getNetworkedData(new ArrayList()))); + } + } + + ChargeUtils.discharge(3, this); + + if(inventory[0] != null && (injectTank.getGas() == null || injectTank.getStored() < injectTank.getMaxGas())) + { + injectTank.receive(GasTransmission.removeGas(inventory[0], null, injectTank.getNeeded()), true); + } + + if(inventory[2] != null && outputTank.getGas() != null) + { + outputTank.draw(GasTransmission.addGas(inventory[2], outputTank.getGas()), true); + } + + if(canOperate() && getEnergy() >= ENERGY_USAGE && MekanismUtils.canFunction(this)) + { + setActive(true); + setEnergy(getEnergy() - ENERGY_USAGE); + + if(operatingTicks < TICKS_REQUIRED) + { + operatingTicks++; + } + else { + GasStack stack = RecipeHandler.getItemToGasOutput(inventory[1], true, Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get()); + + outputTank.receive(stack, true); + operatingTicks = 0; + + if(inventory[1].stackSize <= 0) + { + inventory[1] = null; + } + + onInventoryChanged(); + } + } + else { + if(prevEnergy >= getEnergy()) + { + setActive(false); + } + } + + prevEnergy = getEnergy(); + + if(outputTank.getGas() != null) + { + GasStack toSend = new GasStack(outputTank.getGas().getGas(), Math.min(outputTank.getStored(), gasOutput)); + outputTank.draw(GasTransmission.emitGasToNetwork(toSend, this, MekanismUtils.getRight(facing)), true); + + TileEntity tileEntity = Coord4D.get(this).getFromSide(MekanismUtils.getRight(facing)).getTileEntity(worldObj); + + if(tileEntity instanceof IGasHandler) + { + if(((IGasHandler)tileEntity).canReceiveGas(MekanismUtils.getRight(facing).getOpposite(), outputTank.getGas().getGas())) + { + outputTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getRight(facing).getOpposite(), toSend), true); + } + } + } + } + } + + @Override + public boolean isItemValidForSlot(int slotID, ItemStack itemstack) + { + if(slotID == 0) + { + return RecipeHandler.getItemToGasOutput(itemstack, false, Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get()) != null; + } + else if(slotID == 1) + { + return ChargeUtils.canBeDischarged(itemstack); + } + + return false; + } + + @Override + public boolean canExtractItem(int slotID, ItemStack itemstack, int side) + { + if(slotID == 2) + { + return itemstack != null && itemstack.getItem() instanceof IGasItem && ((IGasItem)itemstack.getItem()).canProvideGas(itemstack, null); + } + + return false; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) + { + if(side == MekanismUtils.getLeft(facing).ordinal()) + { + return new int[] {0}; + } + else if(side == 0 || side == 1) + { + return new int[] {1}; + } + else if(side == MekanismUtils.getRight(facing).ordinal()) + { + return new int[] {2}; + } + + return InventoryUtils.EMPTY; + } + + public int getScaledProgress(int i) + { + return operatingTicks*i / TICKS_REQUIRED; + } + + public boolean canOperate() + { + if(injectTank.getStored() < INJECT_USAGE || inventory[1] == null) + { + return false; + } + + GasStack stack = RecipeHandler.getItemToGasOutput(inventory[1], false, Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get()); + + if(stack == null || (outputTank.getGas() != null && (outputTank.getGas().getGas() != stack.getGas() || outputTank.getNeeded() < stack.amount))) + { + return false; + } + + return true; + } + + @Override + public void handlePacketData(ByteArrayDataInput dataStream) + { + super.handlePacketData(dataStream); + + isActive = dataStream.readBoolean(); + controlType = RedstoneControl.values()[dataStream.readInt()]; + operatingTicks = dataStream.readInt(); + + if(dataStream.readBoolean()) + { + injectTank.setGas(new GasStack(GasRegistry.getGas(dataStream.readInt()), dataStream.readInt())); + } + else { + injectTank.setGas(null); + } + + if(dataStream.readBoolean()) + { + outputTank.setGas(new GasStack(GasRegistry.getGas(dataStream.readInt()), dataStream.readInt())); + } + else { + outputTank.setGas(null); + } + + MekanismUtils.updateBlock(worldObj, xCoord, yCoord, zCoord); + } + + @Override + public ArrayList getNetworkedData(ArrayList data) + { + super.getNetworkedData(data); + + data.add(isActive); + data.add(controlType.ordinal()); + data.add(operatingTicks); + + if(injectTank.getGas() != null) + { + data.add(true); + data.add(injectTank.getGas().getGas().getID()); + data.add(injectTank.getStored()); + } + else { + data.add(false); + } + + if(outputTank.getGas() != null) + { + data.add(true); + data.add(outputTank.getGas().getGas().getID()); + data.add(outputTank.getStored()); + } + else { + data.add(false); + } + + return data; + } + + @Override + public void readFromNBT(NBTTagCompound nbtTags) + { + super.readFromNBT(nbtTags); + + isActive = nbtTags.getBoolean("isActive"); + controlType = RedstoneControl.values()[nbtTags.getInteger("controlType")]; + operatingTicks = nbtTags.getInteger("operatingTicks"); + injectTank.read(nbtTags.getCompoundTag("injectTank")); + outputTank.read(nbtTags.getCompoundTag("gasTank")); + } + + @Override + public void writeToNBT(NBTTagCompound nbtTags) + { + super.writeToNBT(nbtTags); + + nbtTags.setBoolean("isActive", isActive); + nbtTags.setInteger("controlType", controlType.ordinal()); + nbtTags.setInteger("operatingTicks", operatingTicks); + nbtTags.setCompoundTag("injectTank", injectTank.write(new NBTTagCompound())); + nbtTags.setCompoundTag("gasTank", outputTank.write(new NBTTagCompound())); + } + + @Override + public boolean canSetFacing(int i) + { + return i != 0 && i != 1; + } + + public int getScaledInjectGasLevel(int i) + { + return injectTank.getGas() != null ? injectTank.getStored()*i / MAX_GAS : 0; + } + + public int getScaledOutputGasLevel(int i) + { + return outputTank.getGas() != null ? outputTank.getStored()*i / MAX_GAS : 0; + } + + @Override + public void setActive(boolean active) + { + isActive = active; + + if(clientActive != active && updateDelay == 0) + { + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity().setParams(Coord4D.get(this), getNetworkedData(new ArrayList()))); + + updateDelay = 10; + clientActive = active; + } + } + + @Override + public boolean getActive() + { + return isActive; + } + + @Override + public boolean renderUpdate() + { + return false; + } + + @Override + public boolean lightUpdate() + { + return true; + } + + @Override + public boolean canTubeConnect(ForgeDirection side) + { + return side == MekanismUtils.getLeft(facing) || side == MekanismUtils.getRight(facing); + } + + @Override + public RedstoneControl getControlType() + { + return controlType; + } + + @Override + public void setControlType(RedstoneControl type) + { + controlType = type; + MekanismUtils.saveChunk(this); + } + + @Override + public String getSoundPath() + { + return "ChemicalDissolutionChamber.ogg"; + } + + @Override + public float getVolumeMultiplier() + { + return 1; + } } diff --git a/common/mekanism/common/tile/TileEntityChemicalOxidizer.java b/common/mekanism/common/tile/TileEntityChemicalOxidizer.java index 0a1ea41c6..84a1fb066 100644 --- a/common/mekanism/common/tile/TileEntityChemicalOxidizer.java +++ b/common/mekanism/common/tile/TileEntityChemicalOxidizer.java @@ -232,7 +232,6 @@ public class TileEntityChemicalOxidizer extends TileEntityElectricBlock implemen gasTank.setGas(null); } - MekanismUtils.updateBlock(worldObj, xCoord, yCoord, zCoord); } diff --git a/common/mekanism/common/tile/TileEntityChemicalWasher.java b/common/mekanism/common/tile/TileEntityChemicalWasher.java index c468633cb..c39dea35f 100644 --- a/common/mekanism/common/tile/TileEntityChemicalWasher.java +++ b/common/mekanism/common/tile/TileEntityChemicalWasher.java @@ -23,6 +23,7 @@ import mekanism.common.recipe.RecipeHandler; import mekanism.common.util.ChargeUtils; import mekanism.common.util.InventoryUtils; import mekanism.common.util.MekanismUtils; +import mekanism.common.util.PipeUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -526,7 +527,7 @@ public class TileEntityChemicalWasher extends TileEntityElectricBlock implements @Override public boolean canFill(ForgeDirection from, Fluid fluid) { - return from == MekanismUtils.getLeft(facing) && fluid == FluidRegistry.WATER; + return from == ForgeDirection.UP && fluid == FluidRegistry.WATER; } @Override @@ -538,6 +539,11 @@ public class TileEntityChemicalWasher extends TileEntityElectricBlock implements @Override public FluidTankInfo[] getTankInfo(ForgeDirection from) { - return new FluidTankInfo[] {fluidTank.getInfo()}; + if(from == ForgeDirection.UP) + { + return new FluidTankInfo[] {fluidTank.getInfo()}; + } + + return PipeUtils.EMPTY; } } From 6a18c338cd79f058e464fec14e8b021fe7437fcc Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Tue, 28 Jan 2014 18:47:06 -0500 Subject: [PATCH 6/9] Finished Chemical Dissolution Chamber tile code --- .../TileEntityChemicalDissolutionChamber.java | 49 +++++++++++++++---- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java b/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java index 5b0b53ab8..625892e24 100644 --- a/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java +++ b/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java @@ -2,9 +2,8 @@ package mekanism.common.tile; import java.util.ArrayList; -import com.google.common.io.ByteArrayDataInput; - import mekanism.api.Coord4D; +import mekanism.api.gas.Gas; import mekanism.api.gas.GasRegistry; import mekanism.api.gas.GasStack; import mekanism.api.gas.GasTank; @@ -17,7 +16,6 @@ import mekanism.common.IActiveState; import mekanism.common.IRedstoneControl; import mekanism.common.Mekanism; import mekanism.common.PacketHandler; -import mekanism.common.IRedstoneControl.RedstoneControl; import mekanism.common.PacketHandler.Transmission; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.network.PacketTileEntity; @@ -31,7 +29,9 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; -public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBlock implements IActiveState, ITubeConnection, IRedstoneControl, IHasSound +import com.google.common.io.ByteArrayDataInput; + +public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBlock implements IActiveState, ITubeConnection, IRedstoneControl, IHasSound, IGasHandler { public GasTank injectTank = new GasTank(MAX_GAS); public GasTank outputTank = new GasTank(MAX_GAS); @@ -99,7 +99,7 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc if(inventory[0] != null && (injectTank.getGas() == null || injectTank.getStored() < injectTank.getMaxGas())) { - injectTank.receive(GasTransmission.removeGas(inventory[0], null, injectTank.getNeeded()), true); + injectTank.receive(GasTransmission.removeGas(inventory[0], GasRegistry.getGas("sulfuricAcid"), injectTank.getNeeded()), true); } if(inventory[2] != null && outputTank.getGas() != null) @@ -120,6 +120,8 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc GasStack stack = RecipeHandler.getItemToGasOutput(inventory[1], true, Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get()); outputTank.receive(stack, true); + injectTank.draw(INJECT_USAGE, true); + operatingTicks = 0; if(inventory[1].stackSize <= 0) @@ -160,11 +162,11 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc @Override public boolean isItemValidForSlot(int slotID, ItemStack itemstack) { - if(slotID == 0) + if(slotID == 1) { return RecipeHandler.getItemToGasOutput(itemstack, false, Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get()) != null; } - else if(slotID == 1) + else if(slotID == 3) { return ChargeUtils.canBeDischarged(itemstack); } @@ -188,11 +190,11 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc { if(side == MekanismUtils.getLeft(facing).ordinal()) { - return new int[] {0}; + return new int[] {1}; } else if(side == 0 || side == 1) { - return new int[] {1}; + return new int[] {0}; } else if(side == MekanismUtils.getRight(facing).ordinal()) { @@ -386,4 +388,33 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc { return 1; } + + @Override + public int receiveGas(ForgeDirection side, GasStack stack) + { + if(canReceiveGas(side, stack.getGas())) + { + return injectTank.receive(stack, true); + } + + return 0; + } + + @Override + public GasStack drawGas(ForgeDirection side, int amount) + { + return null; + } + + @Override + public boolean canReceiveGas(ForgeDirection side, Gas type) + { + return side == MekanismUtils.getLeft(facing) && type == GasRegistry.getGas("sulfuricAcid"); + } + + @Override + public boolean canDrawGas(ForgeDirection side, Gas type) + { + return false; + } } From c4e679280b43b9b3d2419536b1ba85034b6fbe73 Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Tue, 28 Jan 2014 19:29:29 -0500 Subject: [PATCH 7/9] Chemical Crystalizer base tile code --- .../mekanism/common/recipe/RecipeHandler.java | 10 +- .../tile/TileEntityChemicalCrystalizer.java | 422 +++++++++++++++++- .../TileEntityChemicalDissolutionChamber.java | 4 +- .../tile/TileEntityChemicalInfuser.java | 6 +- .../common/tile/TileEntityChemicalWasher.java | 8 +- .../mekanism/gui/GuiChemicalCrystalizer.png | Bin 4149 -> 4263 bytes .../mekanism/gui/GuiChemicalInfuser.png | Bin 2859 -> 4552 bytes 7 files changed, 436 insertions(+), 14 deletions(-) diff --git a/common/mekanism/common/recipe/RecipeHandler.java b/common/mekanism/common/recipe/RecipeHandler.java index 2799682d5..41936fc8f 100644 --- a/common/mekanism/common/recipe/RecipeHandler.java +++ b/common/mekanism/common/recipe/RecipeHandler.java @@ -239,20 +239,20 @@ public final class RecipeHandler } /** - * Gets the Chemical Washer GasStack output of the defined GasTank input. + * Gets the Chemical Crystalizer ItemStack output of the defined GasTank input. * @param itemstack - input GasTank * @param removeGas - whether or not to use gas in the gas tank - * @return output GasStack + * @return output ItemStack */ - public static GasStack getChemicalDissolutionChamberOutput(GasTank gasTank, boolean removeGas) + public static ItemStack getChemicalCrystalizerOutput(GasTank gasTank, boolean removeGas) { GasStack gas = gasTank.getGas(); if(gas != null) { - HashMap recipes = Recipe.CHEMICAL_WASHER.get(); + HashMap recipes = Recipe.CHEMICAL_CRYSTALIZER.get(); - for(Map.Entry entry : recipes.entrySet()) + for(Map.Entry entry : recipes.entrySet()) { GasStack key = (GasStack)entry.getKey(); diff --git a/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java b/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java index f3b49ff96..de4d37b23 100644 --- a/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java +++ b/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java @@ -1,14 +1,428 @@ package mekanism.common.tile; -import mekanism.common.block.BlockMachine.MachineType; -import net.minecraft.item.ItemStack; +import java.util.ArrayList; -public class TileEntityChemicalCrystalizer extends TileEntityElectricBlock +import mekanism.api.Coord4D; +import mekanism.api.gas.Gas; +import mekanism.api.gas.GasRegistry; +import mekanism.api.gas.GasStack; +import mekanism.api.gas.GasTank; +import mekanism.api.gas.GasTransmission; +import mekanism.api.gas.IGasHandler; +import mekanism.api.gas.IGasItem; +import mekanism.api.gas.ITubeConnection; +import mekanism.client.sound.IHasSound; +import mekanism.common.IActiveState; +import mekanism.common.IRedstoneControl; +import mekanism.common.Mekanism; +import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.block.BlockMachine.MachineType; +import mekanism.common.network.PacketTileEntity; +import mekanism.common.recipe.RecipeHandler; +import mekanism.common.util.ChargeUtils; +import mekanism.common.util.InventoryUtils; +import mekanism.common.util.MekanismUtils; +import mekanism.common.util.PipeUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTankInfo; + +import com.google.common.io.ByteArrayDataInput; + +public class TileEntityChemicalCrystalizer extends TileEntityElectricBlock implements IActiveState, IGasHandler, ITubeConnection, IRedstoneControl, IHasSound { + public GasTank inputTank = new GasTank(MAX_GAS); + + public static final int MAX_GAS = 10000; + public static final int MAX_FLUID = 10000; + + public static int WATER_USAGE = 5; + + public int updateDelay; + + public int gasOutput = 16; + + public int operatingTicks; + + public int TICKS_REQUIRED = 200; + + public boolean isActive; + + public boolean clientActive; + + public double prevEnergy; + + public final double ENERGY_USAGE = Mekanism.chemicalCrystalizerUsage; + + /** This machine's current RedstoneControl type. */ + public RedstoneControl controlType = RedstoneControl.DISABLED; + public TileEntityChemicalCrystalizer() { super("ChemicalCrystalizer", MachineType.CHEMICAL_CRYSTALIZER.baseEnergy); - inventory = new ItemStack[3]; } + + @Override + public void onUpdate() + { + if(worldObj.isRemote) + { + Mekanism.proxy.registerSound(this); + + if(updateDelay > 0) + { + updateDelay--; + + if(updateDelay == 0 && clientActive != isActive) + { + isActive = clientActive; + MekanismUtils.updateBlock(worldObj, xCoord, yCoord, zCoord); + } + } + } + + if(!worldObj.isRemote) + { + if(updateDelay > 0) + { + updateDelay--; + + if(updateDelay == 0 && clientActive != isActive) + { + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity().setParams(Coord4D.get(this), getNetworkedData(new ArrayList()))); + } + } + + ChargeUtils.discharge(2, this); + + if(inventory[0] != null && (inputTank.getGas() == null || inputTank.getStored() < inputTank.getMaxGas())) + { + inputTank.receive(GasTransmission.removeGas(inventory[0], null, inputTank.getNeeded()), true); + } + + if(canOperate() && MekanismUtils.canFunction(this) && getEnergy() >= ENERGY_USAGE) + { + setActive(true); + + if((operatingTicks+1) < TICKS_REQUIRED) + { + operatingTicks++; + setEnergy(getEnergy() - ENERGY_USAGE); + } + else if((operatingTicks+1) >= TICKS_REQUIRED) + { + operate(); + + operatingTicks = 0; + setEnergy(getEnergy() - ENERGY_USAGE); + } + } + else { + if(prevEnergy >= getEnergy()) + { + setActive(false); + } + } + + if(!canOperate()) + { + operatingTicks = 0; + } + + prevEnergy = getEnergy(); + } + } + + public boolean canOperate() + { + if(inputTank.getGas() == null) + { + return false; + } + + ItemStack itemstack = RecipeHandler.getChemicalCrystalizerOutput(inputTank, false); + + if(itemstack == null) + { + return false; + } + + if(inventory[1] == null) + { + return true; + } + + if(!inventory[1].isItemEqual(itemstack)) + { + return false; + } + else { + return inventory[1].stackSize + itemstack.stackSize <= inventory[1].getMaxStackSize(); + } + } + + public void operate() + { + ItemStack itemstack = RecipeHandler.getChemicalCrystalizerOutput(inputTank, true); + + if(inventory[0].stackSize <= 0) + { + inventory[0] = null; + } + + if(inventory[2] == null) + { + inventory[2] = itemstack; + } + else { + inventory[2].stackSize += itemstack.stackSize; + } + + onInventoryChanged(); + } + + @Override + public void handlePacketData(ByteArrayDataInput dataStream) + { + if(!worldObj.isRemote) + { + int type = dataStream.readInt(); + + if(type == 0) + { + inputTank.setGas(null); + } + + for(EntityPlayer player : playersUsing) + { + PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketTileEntity().setParams(Coord4D.get(this), getNetworkedData(new ArrayList())), player); + } + + return; + } + + super.handlePacketData(dataStream); + + isActive = dataStream.readBoolean(); + operatingTicks = dataStream.readInt(); + controlType = RedstoneControl.values()[dataStream.readInt()]; + + if(dataStream.readBoolean()) + { + inputTank.setGas(new GasStack(GasRegistry.getGas(dataStream.readInt()), dataStream.readInt())); + } + else { + inputTank.setGas(null); + } + + + MekanismUtils.updateBlock(worldObj, xCoord, yCoord, zCoord); + } + + @Override + public ArrayList getNetworkedData(ArrayList data) + { + super.getNetworkedData(data); + + data.add(isActive); + data.add(operatingTicks); + data.add(controlType.ordinal()); + + if(inputTank.getGas() != null) + { + data.add(true); + data.add(inputTank.getGas().getGas().getID()); + data.add(inputTank.getStored()); + } + else { + data.add(false); + } + + return data; + } + + @Override + public void readFromNBT(NBTTagCompound nbtTags) + { + super.readFromNBT(nbtTags); + + isActive = nbtTags.getBoolean("isActive"); + operatingTicks = nbtTags.getInteger("operatingTicks"); + controlType = RedstoneControl.values()[nbtTags.getInteger("controlType")]; + + inputTank.read(nbtTags.getCompoundTag("rightTank")); + } + + @Override + public void writeToNBT(NBTTagCompound nbtTags) + { + super.writeToNBT(nbtTags); + + nbtTags.setBoolean("isActive", isActive); + nbtTags.setInteger("operatingTicks", operatingTicks); + nbtTags.setInteger("controlType", controlType.ordinal()); + + nbtTags.setCompoundTag("rightTank", inputTank.write(new NBTTagCompound())); + } + + @Override + public boolean canSetFacing(int i) + { + return i != 0 && i != 1; + } + + public int getScaledInputGasLevel(int i) + { + return inputTank != null ? inputTank.getStored()*i / MAX_GAS : 0; + } + + @Override + public void setActive(boolean active) + { + isActive = active; + + if(clientActive != active && updateDelay == 0) + { + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity().setParams(Coord4D.get(this), getNetworkedData(new ArrayList()))); + + updateDelay = 10; + clientActive = active; + } + } + + @Override + public boolean getActive() + { + return isActive; + } + + @Override + public boolean renderUpdate() + { + return false; + } + + @Override + public boolean lightUpdate() + { + return true; + } + + @Override + public boolean canTubeConnect(ForgeDirection side) + { + return side == MekanismUtils.getLeft(facing); + } + + @Override + public boolean canReceiveGas(ForgeDirection side, Gas type) + { + return side == MekanismUtils.getLeft(facing) && inputTank.canReceive(type); + } + + @Override + public RedstoneControl getControlType() + { + return controlType; + } + + @Override + public void setControlType(RedstoneControl type) + { + controlType = type; + MekanismUtils.saveChunk(this); + } + + @Override + public int receiveGas(ForgeDirection side, GasStack stack) + { + if(canReceiveGas(side, stack.getGas())) + { + return inputTank.receive(stack, true); + } + + return 0; + } + + @Override + public GasStack drawGas(ForgeDirection side, int amount) + { + return null; + } + + @Override + public boolean canDrawGas(ForgeDirection side, Gas type) + { + return false; + } + + @Override + public boolean isItemValidForSlot(int slotID, ItemStack itemstack) + { + if(slotID == 0) + { + return FluidContainerRegistry.getFluidForFilledItem(itemstack) != null && FluidContainerRegistry.getFluidForFilledItem(itemstack).getFluid() == FluidRegistry.WATER; + } + else if(slotID == 2) + { + return ChargeUtils.canBeDischarged(itemstack); + } + + return false; + } + + @Override + public boolean canExtractItem(int slotID, ItemStack itemstack, int side) + { + if(slotID == 1) + { + return itemstack != null && itemstack.getItem() instanceof IGasItem && ((IGasItem)itemstack.getItem()).canProvideGas(itemstack, null); + } + else if(slotID == 2) + { + return ChargeUtils.canBeOutputted(itemstack, false); + } + + return false; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) + { + if(side == MekanismUtils.getLeft(facing).ordinal()) + { + return new int[] {0}; + } + else if(side == MekanismUtils.getRight(facing).ordinal()) + { + return new int[] {1}; + } + else if(side == 0 || side == 1) + { + return new int[2]; + } + + return InventoryUtils.EMPTY; + } + + @Override + public String getSoundPath() + { + return "ChemicalCrystalizer.ogg"; + } + + @Override + public float getVolumeMultiplier() + { + return 1; + } } diff --git a/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java b/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java index 625892e24..567f98a2c 100644 --- a/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java +++ b/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java @@ -54,13 +54,13 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc public int TICKS_REQUIRED = 100; - public final double ENERGY_USAGE = Mekanism.rotaryCondensentratorUsage; + public final double ENERGY_USAGE = Mekanism.chemicalDissolutionChamberUsage; public RedstoneControl controlType = RedstoneControl.DISABLED; public TileEntityChemicalDissolutionChamber() { - super("ChemicalDissolutionChamber", MachineType.CHEMICAL_CRYSTALIZER.baseEnergy); + super("ChemicalDissolutionChamber", MachineType.CHEMICAL_DISSOLUTION_CHAMBER.baseEnergy); inventory = new ItemStack[4]; } diff --git a/common/mekanism/common/tile/TileEntityChemicalInfuser.java b/common/mekanism/common/tile/TileEntityChemicalInfuser.java index bed8d3042..503da3962 100644 --- a/common/mekanism/common/tile/TileEntityChemicalInfuser.java +++ b/common/mekanism/common/tile/TileEntityChemicalInfuser.java @@ -432,10 +432,14 @@ public class TileEntityChemicalInfuser extends TileEntityElectricBlock implement { return itemstack != null && itemstack.getItem() instanceof IGasItem && ((IGasItem)itemstack.getItem()).canReceiveGas(itemstack, null); } - if(slotID == 1) + else if(slotID == 1) { return itemstack != null && itemstack.getItem() instanceof IGasItem && ((IGasItem)itemstack.getItem()).canProvideGas(itemstack, null); } + else if(slotID == 3) + { + return ChargeUtils.canBeOutputted(itemstack, false); + } return false; } diff --git a/common/mekanism/common/tile/TileEntityChemicalWasher.java b/common/mekanism/common/tile/TileEntityChemicalWasher.java index c39dea35f..2c2d25691 100644 --- a/common/mekanism/common/tile/TileEntityChemicalWasher.java +++ b/common/mekanism/common/tile/TileEntityChemicalWasher.java @@ -60,7 +60,7 @@ public class TileEntityChemicalWasher extends TileEntityElectricBlock implements public double prevEnergy; - public final double ENERGY_USAGE = Mekanism.chemicalInfuserUsage; + public final double ENERGY_USAGE = Mekanism.chemicalWasherUsage; /** This machine's current RedstoneControl type. */ public RedstoneControl controlType = RedstoneControl.DISABLED; @@ -394,7 +394,7 @@ public class TileEntityChemicalWasher extends TileEntityElectricBlock implements @Override public boolean canTubeConnect(ForgeDirection side) { - return side == MekanismUtils.getLeft(facing) || side == MekanismUtils.getRight(facing) || side == ForgeDirection.UP; + return side == MekanismUtils.getLeft(facing) || side == MekanismUtils.getRight(facing); } @Override @@ -466,6 +466,10 @@ public class TileEntityChemicalWasher extends TileEntityElectricBlock implements { return itemstack != null && itemstack.getItem() instanceof IGasItem && ((IGasItem)itemstack.getItem()).canProvideGas(itemstack, null); } + else if(slotID == 2) + { + return ChargeUtils.canBeOutputted(itemstack, false); + } return false; } diff --git a/resources/assets/mekanism/gui/GuiChemicalCrystalizer.png b/resources/assets/mekanism/gui/GuiChemicalCrystalizer.png index 2b7438c3db3c2095d71b935fe97e5785ffaf04c9..46923b2ed1b7157dbba1affd6e48b771b0ee7c71 100644 GIT binary patch delta 2552 zcmXw)c|26>AIHxeM`rA6gFBijODgNlNHL6ZYqFOuyWGMZl%f=wbLLtmA=)I9Eisme zaIcU-n{tbivSbJ~V@XNYX2$Pyf4|@P=bYE~^?E+f=lyw}@Aov2I2&u+AXwIVzn!i7 z8O-NlN;qLi0~qz7-O#%owdLSCN59*1QbtK>F%?$_o!YXTM|~T66il48qSX8XJ&rj- z9m%O4B~d1=M=!V=z4m_%-4aAty|y2`k#}QzXvoWf&{3ZM=bPR9;j^)!7s-R(evy1H z7mBt?I5UqPW3wi5HvKZRCWPnD&5Z}HzaCxrDd*c9XGGJ6+kbGeI1)_6&CD1mtaeH0 z5-fBh)JXfB#sduAD<=?i3F$3VAm9C#nPL8{y#_U z#_8+($VjDEE5*{nqH)3JIzHb9ZY@)`zaIBId)p|5%0DVK$At%(Km$i+8$ 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 Qt zX@&ympRrLf-K5Yt3RKKW+*{^o1u7_eE6I2Du2d70ecEb_g}4`u1O{ zvo;Ii2vhC3-G$GLo49SwpcC*Ly2g{b)G=5qNC>i6HN+nMi#q++Ef*4Wks1Z+8B<8K z_Yo!sAG3Tp6ROb|YL}Ir?c>lK8pxWgYyd(dxt1*fJxt^gf&(0;Kdf@xef(>KY(dB@ zv?*onyy}Z3_e{NKre_sK;Q$B-{r}?sh6t$0Xv&3D)7IyUovnP-KQw@Wu8~gJEyut9 E1Fh7k%Oge;AvsAxzT8Okz4 zvL$6OmXJY6jeW}?e53a}-}%n_p7Z_p-Fxo2_x$ej{GR9eoqL{h<4sM@@N$cD0|0n2 zhWh3JKv+iz;NoO$Hhx7e0I)5%>FJqb^z;y>e%>x_9?k%$wI^8(dkqB3px!)8w#ahWfs|lf zah|3h<+G3qjD?PHuS|hfz#!T+?Z>TWKBYv9+AA$psl*8Nsq3iuE){g^#q4oBM$DeR zbVVgEH8~HTsc}JS4^>BQ1xqOITV#5%MkzmnZm_;^bVTR#qUIM#McKGZ4#An@zc(J2ILNPN!8qcWnNZMQDgWhg z)7J4n);)NZC2mzppI2ar*L(;y3!2S#=)P2Q-gJkm;;njlF?8|!(pTB!FSW_Nw%1#G z;1Q+n)tDwF>AJ5>G1&;=MM{g!;iO?7V`*teAS=Km}1j9*N^G4 zRi1t!9jIrwbKPrB-qDH@5g2(!(@mX{MrXMAKevm+O((tVtUorVVEpxR_`c~Uhv&}t zjL=%z<8bhZZ-WeWD)!P-7u(70801|$K7V+h0?Bd$6|YapZ$Z!X6I!Yi)JMmq{H&F) z9KS21yM51zlN48-y6mO*B06_}c22v$_5`X@{t>mO^jW4eMN&UZ^zPvk`Sy)GbEhtq zL6nP9VtMK$eatM_*o@Ond(6{C;|UIY&a)wtk&V7hc;4szStj%Xo;Kv!I+uW zDa6rxdROs@k;Zfx@6<+_gl+*pAKEL41ghikz{)b}L??1wGU`M1LjyaZ`RBOqPGZE$ z+CKNq)Lb`YUNG!UBVPrcZE=IBxK)N+da0{O#*wBOzZq*5*B1{Jul8`yl@wRTrEX|d z-mbSYbnC!|Qq{ND}BWxR;!@@d!cGyCK5?>#7{CKKg(Cw1kH&|ipVYQ)yn2eEh z?F`|`y_00W>(=*&f-p==<^`r1(}Zcu6uUZh&j-uIR2>SFwn==@J3i&KJQEda-K%`A z*4E-!VPb`KDCYfHB}1ZN^Sitr1zwC(_ko@ny5{R(aP~uuuMqU*xP`YaBmGOgZJhyA2 zFwq}@Kc!moAyld}1briP@S4bM(QK}7(m;*UyhVEd?im4*T0bRAU10GCqKt5 zbexw7hb;WLxwaT_MU0%|rIN$HP{&}h+mDaCEay$S_>UW{)N}f@{S?6h-{4BpY7eUg za5@^D(FZ%bGoM08V=oQy5RjcK$^u~lm~*FLbO<+)K6+MmQI_RM#^~!< z1`o~-Kk|||BLN#7I8s(1&sD*VJgst0LQDcP@Th&iPz?4|6pr(vGIGy1w%k;VWg45A zr;tx(;hS5CsPZBi^VhD^%jz$QuQh5(8Y8hYRareGjry(m55YFk`<)}hk38eA+o~4* zaAR}bNes0WzD%hc^HpKCcQXlcPwJ1n?}ame`iid2Y3B{@oIEJ@bLHc}K-Qhg26M&* zU}IzRP553=SeS$^mjfy<);pZ>wN0#jBqCs$+kU}&Y;-g~X#bP0BZ;j}H!7X&Dz`c` zPb3HGXr;9k^o``15C+(Zb!Vy4R{#{iL8Llx9Vq!e_JT^J$1XVdu8fZ0ZczP3i4E+J zK->(qv5^=)yZJ;~vSMtsJ~U#Jin8(gah=x>(s?vWvwL*Ms6LwwQQL4(mrMJns4jEP z6vkT!b@dZ`w>(94f31@9k@NNX)3$Io_bA%W`%g4<7VN$gp`v|AbXpGDg@k?aYF|P# z;`)fnfRd-@U@>R?O>aJXB!NJXiiWq0`>JVaQB=w<)@SCRR@zIxJK%RNc#m3hyi)^x z-ZM(;-N4oSP6;@=(%uqP|5b1VK_x?79gp>N^;<pYc5Ls8ojR5KI z#g4z@h%^^_byXNxg0s#xN|1cZmet=trwGw~JA2`?oB#*9$vi|_ARH|#cLBowAKT%~ z_YWU$g;x4fSlB=bFVy~12bJ1Lr`!J6;Xld>2hFEJL`jw?ZSCuj1NJG`B!DMx%BC*j zLNR%R(!7nb5?wFnP8p?rO3Q1o0;(TY5~dFW@!mD;q-y&Fg+l2l0VM#6*wn%DzEz~B zUetS|vC)s+mDQXp3(peN5?ahk9!(H7m@yxq<>8-0Be@YMT>EA-EB_=v+Al&x$giZ; zomg6#$~R{28jZFzH0aD4oOxm&r{g*QgJB`2=#T8OZkXp1rA1M8DimSr4xPTZ>)O$<@`s6+{)8%u`!idpZaL zj%u%$>^|6%gK4G!Z#5^Yn)Z?ys4>+S85Gk+@MWE}p=st_Ogn zK@!oZ)io`6BY?jtT$ebfB+9H1ygVwz@SlGovXA{y;|dZgJ?@xWRz}g%5saW^L)wyiyqt7r*Gz0X7K8;tMAN zwh9vIi69(!8hZM-vslFZ+0oV>K8~G`&Zc?)9AnwBi3xp;!GW3wB1*QR#aFDrIf;-! zKflM4vmV2D<&g(U0OHpV3ZTJXy#WCBzd`8oIW2yB<*XBa6B$7jdf9i%mZp3A_-%a- zr39I~Ufa^oA0How>vAoxlWSt*%^;Q{`FwJ8SAv&@3A-{3aQzQz1PFj|0fe3jd$-Bb zEIe88W<^>U%Z*V4EmA~FnvlCphJ$jsuJY}6t$$|rZwL*(LE!*>JD02A!Nic%L)>}x zTSDpr?~s2L;xS3bpb1cSxtO57^BhkL!7pk`FN@mP1jq4@djC5R9MrJxQ>1p?*Ms6( zi{Gr=wYW)v{?h8|#cf(*t5o#kBX^c&W_~A!EE^=FZwsRrmnMxUI^KBT(Gm*FtciX| fuLb|FaSZH0GtA#6Eh)g1cVl2qo9LJ7+TZ#Yy14gc From 58f44cd3b33de5aaa0d9fa4da16c1e9a80f10b34 Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Tue, 28 Jan 2014 20:15:01 -0500 Subject: [PATCH 8/9] Slightly cheaper unicable tiers --- .../client/nei/ChemicalCrystalizerRecipeHandler.java | 6 ++++++ .../client/nei/ChemicalDissolutionChamberRecipeHandler.java | 6 ++++++ common/mekanism/client/nei/ChemicalWasherRecipeHandler.java | 6 ++++++ common/mekanism/common/Mekanism.java | 4 ++-- 4 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 common/mekanism/client/nei/ChemicalCrystalizerRecipeHandler.java create mode 100644 common/mekanism/client/nei/ChemicalDissolutionChamberRecipeHandler.java create mode 100644 common/mekanism/client/nei/ChemicalWasherRecipeHandler.java diff --git a/common/mekanism/client/nei/ChemicalCrystalizerRecipeHandler.java b/common/mekanism/client/nei/ChemicalCrystalizerRecipeHandler.java new file mode 100644 index 000000000..ddb223791 --- /dev/null +++ b/common/mekanism/client/nei/ChemicalCrystalizerRecipeHandler.java @@ -0,0 +1,6 @@ +package mekanism.client.nei; + +public class ChemicalCrystalizerRecipeHandler +{ + +} diff --git a/common/mekanism/client/nei/ChemicalDissolutionChamberRecipeHandler.java b/common/mekanism/client/nei/ChemicalDissolutionChamberRecipeHandler.java new file mode 100644 index 000000000..e83b14735 --- /dev/null +++ b/common/mekanism/client/nei/ChemicalDissolutionChamberRecipeHandler.java @@ -0,0 +1,6 @@ +package mekanism.client.nei; + +public class ChemicalDissolutionChamberRecipeHandler +{ + +} diff --git a/common/mekanism/client/nei/ChemicalWasherRecipeHandler.java b/common/mekanism/client/nei/ChemicalWasherRecipeHandler.java new file mode 100644 index 000000000..6504262e8 --- /dev/null +++ b/common/mekanism/client/nei/ChemicalWasherRecipeHandler.java @@ -0,0 +1,6 @@ +package mekanism.client.nei; + +public class ChemicalWasherRecipeHandler +{ + +} diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index 5da070bc2..7993bee47 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -571,10 +571,10 @@ public class Mekanism "ETE", Character.valueOf('E'), EnrichedAlloy, Character.valueOf('T'), new ItemStack(PartTransmitter, 1, 0) })); CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(PartTransmitter, 1, 2), new Object[] { - "CTC", Character.valueOf('C'), "circuitBasic", Character.valueOf('T'), new ItemStack(PartTransmitter, 1, 1) + "CTC", Character.valueOf('C'), "circuitBasic", Character.valueOf('T'), new ItemStack(PartTransmitter, 1, 0) })); CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(PartTransmitter, 1, 3), new Object[] { - "CTC", Character.valueOf('C'), AtomicCore, Character.valueOf('T'), new ItemStack(PartTransmitter, 1, 2) + "CTC", Character.valueOf('C'), AtomicCore, Character.valueOf('T'), new ItemStack(PartTransmitter, 1, 0) })); CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(PartTransmitter, 8, 4), new Object[] { "SBS", Character.valueOf('S'), "ingotSteel", Character.valueOf('B'), Item.bucketEmpty From d4d800fa58a9df145c57a778211634ae9f2f5dc1 Mon Sep 17 00:00:00 2001 From: Vexatos Date: Wed, 29 Jan 2014 09:04:09 +0100 Subject: [PATCH 9/9] Update de_DE.lang --- resources/assets/mekanism/lang/de_DE.lang | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/assets/mekanism/lang/de_DE.lang b/resources/assets/mekanism/lang/de_DE.lang index 042ef41b4..b3fbf6446 100644 --- a/resources/assets/mekanism/lang/de_DE.lang +++ b/resources/assets/mekanism/lang/de_DE.lang @@ -85,6 +85,9 @@ tile.MachineBlock2.ChemicalCombiner.name=Chemischer Kombinierer tile.MachineBlock2.ChemicalInjectionChamber.name=Chemische Injektionskammer tile.MachineBlock2.ElectrolyticSeparator.name=Elektrolytischer Separator tile.MachineBlock2.PrecisionSawmill.name=Präzisionssägewerk +tile.MachineBlock2.ChemicalDissolutionChamber.name=Chemische Auflösungskammer +tile.MachineBlock2.ChemicalWasher.name=Chemische Waschanlage +tile.MachineBlock2.ChemicalCrystalizer.name=Chemischer Kristallisierer //Infuse types infuse.carbon=Kohlenstoff