From 87a95e0732688b661cc207c0bcaaa803e652c203 Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Fri, 3 Jan 2014 00:24:22 +0000 Subject: [PATCH] Add Chlorine, do more E. Separator work, including temporary lava/brine substitute. I think it's pretty much finished for now, though maybe it could do with a new model. --- common/mekanism/api/gas/IGasHandler.java | 2 +- .../client/render/MekanismRenderer.java | 1 + common/mekanism/common/Mekanism.java | 2 + common/mekanism/common/RecipeHandler.java | 28 +++++++ .../client/gui/GuiElectrolyticSeparator.java | 78 ++++++++---------- .../render/RenderElectrolyticSeparator.java | 8 +- .../ContainerElectrolyticSeparator.java | 21 ++--- .../TileEntityElectrolyticSeparator.java | 39 ++++++--- .../mekanism/gui/GuiElectrolyticSeparator.png | Bin 4550 -> 2501 bytes resources/assets/mekanism/lang/en_US.lang | 2 + .../mekanism/textures/blocks/Chlorine.png | Bin 0 -> 14326 bytes .../textures/blocks/Chlorine.png.mcmeta | 5 ++ 12 files changed, 110 insertions(+), 76 deletions(-) create mode 100644 resources/assets/mekanism/textures/blocks/Chlorine.png create mode 100644 resources/assets/mekanism/textures/blocks/Chlorine.png.mcmeta diff --git a/common/mekanism/api/gas/IGasHandler.java b/common/mekanism/api/gas/IGasHandler.java index 77abf4ca6..6abc06168 100644 --- a/common/mekanism/api/gas/IGasHandler.java +++ b/common/mekanism/api/gas/IGasHandler.java @@ -11,7 +11,7 @@ public interface IGasHandler { /** * Transfer a certain amount of gas to this block. - * @param amount - amount to transfer + * @param stack - gas to add * @return gas added */ public int receiveGas(ForgeDirection side, GasStack stack); diff --git a/common/mekanism/client/render/MekanismRenderer.java b/common/mekanism/client/render/MekanismRenderer.java index af33a5872..6e3dff7d5 100644 --- a/common/mekanism/client/render/MekanismRenderer.java +++ b/common/mekanism/client/render/MekanismRenderer.java @@ -68,6 +68,7 @@ public class MekanismRenderer GasRegistry.getGas("hydrogen").setIcon(event.map.registerIcon("mekanism:LiquidHydrogen")); GasRegistry.getGas("oxygen").setIcon(event.map.registerIcon("mekanism:LiquidOxygen")); GasRegistry.getGas("water").setIcon(event.map.registerIcon("mekanism:WaterVapor")); + GasRegistry.getGas("chlorine").setIcon(event.map.registerIcon("mekanism:Chlorine")); GasRegistry.getGas("sulfurDioxideGas").setIcon(event.map.registerIcon("mekanism:LiquidSulfurDioxide")); GasRegistry.getGas("sulfurTrioxideGas").setIcon(event.map.registerIcon("mekanism:LiquidSulfurTrioxide")); GasRegistry.getGas("sulfuricAcid").setIcon(event.map.registerIcon("mekanism:LiquidSulfuricAcid")); diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index d6ff320ae..ffcbd22f8 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -637,6 +637,7 @@ public class Mekanism //Electrolytic Separator Recipes RecipeHandler.addElectrolyticSeparatorRecipe(FluidRegistry.getFluidStack("water", 2), new ChemicalInput(new GasStack(GasRegistry.getGas("hydrogen"), 2), new GasStack(GasRegistry.getGas("oxygen"), 1))); + RecipeHandler.addElectrolyticSeparatorRecipe(FluidRegistry.getFluidStack("lava", 10), new ChemicalInput(new GasStack(GasRegistry.getGas("hydrogen"), 1), new GasStack(GasRegistry.getGas("chlorine"), 1))); //Infuse objects InfuseRegistry.registerInfuseObject(new ItemStack(Item.coal, 1, 0), new InfuseObject(InfuseRegistry.get("CARBON"), 10)); @@ -982,6 +983,7 @@ public class Mekanism GasRegistry.register(new Gas("hydrogen")).registerFluid(); GasRegistry.register(new Gas("oxygen")).registerFluid(); GasRegistry.register(new Gas("water")).registerFluid(); + GasRegistry.register(new Gas("chlorine")).registerFluid(); GasRegistry.register(new Gas("sulfurDioxideGas")).registerFluid(); GasRegistry.register(new Gas("sulfurTrioxideGas")).registerFluid(); GasRegistry.register(new Gas("sulfuricAcid")).registerFluid(); diff --git a/common/mekanism/common/RecipeHandler.java b/common/mekanism/common/RecipeHandler.java index d21ff06d0..2eb9718b7 100644 --- a/common/mekanism/common/RecipeHandler.java +++ b/common/mekanism/common/RecipeHandler.java @@ -347,12 +347,40 @@ public final class RecipeHandler return true; } } + if(entry.getKey() instanceof FluidStack) + { + if(((FluidStack)entry.getKey()).isFluidEqual(input)) + { + return true; + } + } } } return false; } + public boolean containsRecipe(Fluid input) + { + for(Object obj : get().entrySet()) + { + if(obj instanceof Map.Entry) + { + Map.Entry entry = (Map.Entry)obj; + + if(entry.getKey() instanceof FluidStack) + { + if(((FluidStack)entry.getKey()).getFluid() == input) + { + return true; + } + } + } + } + + return false; + } + public HashMap get() { return recipes; diff --git a/common/mekanism/generators/client/gui/GuiElectrolyticSeparator.java b/common/mekanism/generators/client/gui/GuiElectrolyticSeparator.java index 042bfef60..948c639ef 100644 --- a/common/mekanism/generators/client/gui/GuiElectrolyticSeparator.java +++ b/common/mekanism/generators/client/gui/GuiElectrolyticSeparator.java @@ -1,6 +1,10 @@ package mekanism.generators.client.gui; +import mekanism.api.Coord4D; import mekanism.api.gas.Gas; +import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketTileEntity; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; import mekanism.generators.common.inventory.container.ContainerElectrolyticSeparator; @@ -13,6 +17,8 @@ import org.lwjgl.opengl.GL11; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import java.util.ArrayList; + @SideOnly(Side.CLIENT) public class GuiElectrolyticSeparator extends GuiContainer { @@ -32,55 +38,23 @@ public class GuiElectrolyticSeparator extends GuiContainer int xAxis = (x - (width - xSize) / 2); int yAxis = (y - (height - ySize) / 2); - if(xAxis > 160 && xAxis < 169 && yAxis > 73 && yAxis < 82) + if(xAxis > 8 && xAxis < 17 && yAxis > 73 && yAxis < 82) { - Gas gasToSet = null; - /* - if(tileEntity.outputType == GasRegistry.getGas("hydrogen")) - { - gasToSet = GasRegistry.getGas("oxygen"); - } - else if(tileEntity.outputType == GasRegistry.getGas("oxygen")) - { - gasToSet = null; - } - else if(tileEntity.outputType == null) - { - gasToSet = GasRegistry.getGas("hydrogen"); - } - ArrayList data = new ArrayList(); data.add((byte)0); - data.add(GasRegistry.getGasID(gasToSet)); - + PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity().setParams(Coord4D.get(tileEntity), data)); mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - */ + } - else if(xAxis > 8 && xAxis < 17 && yAxis > 73 && yAxis < 82) + else if(xAxis > 160 && xAxis < 169 && yAxis > 73 && yAxis < 82) { - Gas gasToSet = null; - /* - if(tileEntity.dumpType == null) - { - gasToSet = GasRegistry.getGas("oxygen"); - } - else if(tileEntity.dumpType == GasRegistry.getGas("oxygen")) - { - gasToSet = GasRegistry.getGas("hydrogen"); - } - else if(tileEntity.dumpType == GasRegistry.getGas("hydrogen")) - { - gasToSet = null; - } - ArrayList data = new ArrayList(); data.add((byte)1); - data.add(GasRegistry.getGasID(gasToSet)); PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity().setParams(Coord4D.get(tileEntity), data)); mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - */ + } } @@ -91,10 +65,24 @@ public class GuiElectrolyticSeparator extends GuiContainer int yAxis = (mouseY - (height - ySize) / 2); fontRenderer.drawString(tileEntity.getInvName(), 45, 6, 0x404040); - fontRenderer.drawString(MekanismUtils.localize("gui.output"), 124, 73, 0x404040); - fontRenderer.drawString(MekanismUtils.localize("gui.electrolyticSeparator.dump"), 21, 73, 0x404040); - - if(xAxis >= 165 && xAxis <= 169 && yAxis >= 17 && yAxis <= 69) + String name = tileEntity.leftTank.getGas() == null ? MekanismUtils.localize("gui.none") : tileEntity.leftTank.getGas().getGas().getLocalizedName(); + fontRenderer.drawString(name, 21, 73, 0x404040); + name = tileEntity.rightTank.getGas() == null ? MekanismUtils.localize("gui.none") : tileEntity.rightTank.getGas().getGas().getLocalizedName(); + fontRenderer.drawString(name, 152-(name.length()*5), 73, 0x404040); + + if(xAxis >= 7 && xAxis <= 11 && yAxis >= 17 && yAxis <= 69) + { + drawCreativeTabHoveringText(tileEntity.fluidTank.getFluid() != null ? tileEntity.fluidTank.getFluid().getFluid().getLocalizedName() + ": " + tileEntity.fluidTank.getFluidAmount() + "mB" : MekanismUtils.localize("gui.empty"), xAxis, yAxis); + } + if(xAxis >= 65 && xAxis <= 69 && yAxis >= 17 && yAxis <= 48) + { + drawCreativeTabHoveringText(tileEntity.leftTank.getGas() != null ? tileEntity.leftTank.getGas().getGas().getLocalizedName() + ": " + tileEntity.leftTank.getStored() : MekanismUtils.localize("gui.empty"), xAxis, yAxis); + } + if(xAxis >= 107 && xAxis <= 111 && yAxis >= 17 && yAxis <= 48) + { + drawCreativeTabHoveringText(tileEntity.rightTank.getGas() != null ? tileEntity.rightTank.getGas().getGas().getLocalizedName() + ": " + tileEntity.rightTank.getStored() : MekanismUtils.localize("gui.empty"), xAxis, yAxis); + } + if(xAxis >= 165 && xAxis <= 169 && yAxis >= 17 && yAxis <= 69) { drawCreativeTabHoveringText(MekanismUtils.getEnergyDisplay(tileEntity.getEnergy()), xAxis, yAxis); } @@ -109,11 +97,11 @@ public class GuiElectrolyticSeparator extends GuiContainer int guiHeight = (height - ySize) / 2; drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize); - int outputDisplay = 1;//tileEntity.outputType == GasRegistry.getGas("oxygen") ? 82 : (tileEntity.outputType == GasRegistry.getGas("hydrogen") ? 90 : 98); - drawTexturedModalRect(guiWidth + 160, guiHeight + 73, 176, outputDisplay, 8, 8); + int leftDisplay = tileEntity.dumpLeft ? 90 : 82; + drawTexturedModalRect(guiWidth + 8, guiHeight + 73, 176, leftDisplay, 8, 8); - int dumpDisplay = 1;//tileEntity.dumpType == GasRegistry.getGas("oxygen") ? 82 : (tileEntity.dumpType == GasRegistry.getGas("hydrogen") ? 90 : 98); - drawTexturedModalRect(guiWidth + 8, guiHeight + 73, 176, dumpDisplay, 8, 8); + int rightDisplay = tileEntity.dumpRight ? 90 : 82; + drawTexturedModalRect(guiWidth + 160, guiHeight + 73, 176, rightDisplay, 8, 8); int displayInt; diff --git a/common/mekanism/generators/client/render/RenderElectrolyticSeparator.java b/common/mekanism/generators/client/render/RenderElectrolyticSeparator.java index ffe2065e6..797767718 100644 --- a/common/mekanism/generators/client/render/RenderElectrolyticSeparator.java +++ b/common/mekanism/generators/client/render/RenderElectrolyticSeparator.java @@ -32,10 +32,10 @@ public class RenderElectrolyticSeparator extends TileEntitySpecialRenderer switch(tileEntity.facing) { - case 2: GL11.glRotatef(270, 0.0F, 1.0F, 0.0F); break; - case 3: GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); break; - case 4: GL11.glRotatef(0, 0.0F, 1.0F, 0.0F); break; - case 5: GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); break; + case 2: GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); break; + case 3: GL11.glRotatef(270, 0.0F, 1.0F, 0.0F); break; + case 4: GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); break; + case 5: GL11.glRotatef(0, 0.0F, 1.0F, 0.0F); break; } GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); diff --git a/common/mekanism/generators/common/inventory/container/ContainerElectrolyticSeparator.java b/common/mekanism/generators/common/inventory/container/ContainerElectrolyticSeparator.java index fe8e5482f..cdc94d06d 100644 --- a/common/mekanism/generators/common/inventory/container/ContainerElectrolyticSeparator.java +++ b/common/mekanism/generators/common/inventory/container/ContainerElectrolyticSeparator.java @@ -2,6 +2,7 @@ package mekanism.generators.common.inventory.container; import mekanism.api.gas.GasRegistry; import mekanism.api.gas.IGasItem; +import mekanism.common.RecipeHandler; import mekanism.common.inventory.slot.SlotEnergy.SlotDischarge; import mekanism.common.inventory.slot.SlotStorageTank; import mekanism.common.util.ChargeUtils; @@ -23,8 +24,8 @@ public class ContainerElectrolyticSeparator extends Container { tileEntity = tentity; addSlotToContainer(new Slot(tentity, 0, 17, 35)); - addSlotToContainer(new SlotStorageTank(tentity, GasRegistry.getGas("hydrogen"), false, 1, 59, 52)); - addSlotToContainer(new SlotStorageTank(tentity, GasRegistry.getGas("oxygen"), false, 2, 101, 52)); + addSlotToContainer(new SlotStorageTank(tentity, null, true, 1, 59, 52)); + addSlotToContainer(new SlotStorageTank(tentity, null, true, 2, 101, 52)); addSlotToContainer(new SlotDischarge(tentity, 3, 143, 35)); int slotX; @@ -73,7 +74,7 @@ public class ContainerElectrolyticSeparator extends Container if(slotID != 0 && slotID != 1 && slotID != 2 && slotID != 3) { - if(isWater(slotStack)) + if(isCorrectFluid(slotStack)) { if(!mergeItemStack(slotStack, 0, 1, false)) { @@ -166,18 +167,8 @@ public class ContainerElectrolyticSeparator extends Container return stack; } - public boolean isWater(ItemStack itemStack) + public boolean isCorrectFluid(ItemStack itemStack) { - FluidStack fluid = FluidContainerRegistry.getFluidForFilledItem(itemStack); - - if(fluid != null) - { - if(fluid.getFluid() == FluidRegistry.WATER) - { - return true; - } - } - - return false; + return RecipeHandler.Recipe.ELECTROLYTIC_SEPARATOR.containsRecipe(itemStack); } } diff --git a/common/mekanism/generators/common/tileentity/TileEntityElectrolyticSeparator.java b/common/mekanism/generators/common/tileentity/TileEntityElectrolyticSeparator.java index 9f67aa3f4..e575bb931 100644 --- a/common/mekanism/generators/common/tileentity/TileEntityElectrolyticSeparator.java +++ b/common/mekanism/generators/common/tileentity/TileEntityElectrolyticSeparator.java @@ -72,13 +72,12 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp { ChargeUtils.discharge(3, this); - /*if(inventory[0] != null) + if(inventory[0] != null) { - FluidStack fluid = FluidContainerRegistry.getFluidForFilledItem(inventory[0]); - - if(fluid != null && fluid.getFluid() == FluidRegistry.WATER) + if(RecipeHandler.Recipe.ELECTROLYTIC_SEPARATOR.containsRecipe(inventory[0])) { - if(fluidTank.getFluid() == null || fluidTank.getFluid().amount+fluid.amount <= fluidTank.getCapacity()) + FluidStack fluid = FluidContainerRegistry.getFluidForFilledItem(inventory[0]); + if(fluidTank.getFluid() == null || fluid.isFluidEqual(fluidTank.getFluid()) && fluidTank.getFluid().amount+fluid.amount <= fluidTank.getCapacity()) { fluidTank.fill(fluid, true); @@ -96,7 +95,7 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp } } } - }*/ + } if(!worldObj.isRemote) { @@ -256,7 +255,7 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp { if(slotID == 0) { - return FluidContainerRegistry.getFluidForFilledItem(itemstack) != null && FluidContainerRegistry.getFluidForFilledItem(itemstack).getFluid() == FluidRegistry.WATER; + return RecipeHandler.Recipe.ELECTROLYTIC_SEPARATOR.containsRecipe(itemstack); } else if(slotID == 1) { @@ -338,11 +337,11 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp if(type == 0) { - dumpLeft = dataStream.readBoolean(); + dumpLeft ^= true; } else if(type == 1) { - dumpRight = dataStream.readBoolean(); + dumpRight ^= true; } return; @@ -559,7 +558,7 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp @Override public boolean canFill(ForgeDirection from, Fluid fluid) { - return fluid == FluidRegistry.WATER; + return RecipeHandler.Recipe.ELECTROLYTIC_SEPARATOR.containsRecipe(fluid); } @Override @@ -571,7 +570,7 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp @Override public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { - if(resource.getFluid() == FluidRegistry.WATER) + if(RecipeHandler.Recipe.ELECTROLYTIC_SEPARATOR.containsRecipe(resource.getFluid())) { return fluidTank.fill(resource, doFill); } @@ -598,6 +597,14 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp @Override public GasStack drawGas(ForgeDirection side, int amount) { + if(side == MekanismUtils.getLeft(facing)) + { + return leftTank.draw(amount, true); + } + else if(side == MekanismUtils.getRight(facing)) + { + return rightTank.draw(amount, true); + } return null; } @@ -608,6 +615,16 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp @Override public boolean canDrawGas(ForgeDirection side, Gas type) { + if(side == MekanismUtils.getLeft(facing)) + { + return leftTank.getGas() != null && leftTank.getGas().getGas() == type; + } + + if(side == MekanismUtils.getRight(facing)) + { + return rightTank.getGas() != null && rightTank.getGas().getGas() == type; + } + return false; } } diff --git a/resources/assets/mekanism/gui/GuiElectrolyticSeparator.png b/resources/assets/mekanism/gui/GuiElectrolyticSeparator.png index 80cae4b02f367eb9e5e498d2b7d45960da93960e..4fa5a7392c6fa9be4cbb2418ff3dd0a8758c2de4 100644 GIT binary patch literal 2501 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 E0sYj<;Q#;t diff --git a/resources/assets/mekanism/lang/en_US.lang b/resources/assets/mekanism/lang/en_US.lang index a79f6504a..712cba6e4 100644 --- a/resources/assets/mekanism/lang/en_US.lang +++ b/resources/assets/mekanism/lang/en_US.lang @@ -153,6 +153,7 @@ item.tinIngot.name=Tin Ingot gas.hydrogen=Hydrogen gas.oxygen=Oxygen gas.water=Water Vapor +gas.chlorine=Chlorine gas.sulfurDioxideGas=Sulfur Dioxide gas.sulfurTrioxideGas=Sulfur Trioxide gas.sulfuricAcid=Sulfuric Acid @@ -160,6 +161,7 @@ gas.sulfuricAcid=Sulfuric Acid //Fluids fluid.hydrogen=Liquid Hydrogen fluid.oxygen=Liquid Oxygen +fluid.chlorine=Liquid Chlorine fluid.sulfurDioxideGas=Liquid Sulfur Dioxide fluid.sulfurTrioxideGas=Liquid Sulfur Trioxide fluid.sulfuricAcid=Liquid Sulfuric Acid diff --git a/resources/assets/mekanism/textures/blocks/Chlorine.png b/resources/assets/mekanism/textures/blocks/Chlorine.png new file mode 100644 index 0000000000000000000000000000000000000000..8ace07917702d94045d050d8ce9cbb79ebc7b574 GIT binary patch literal 14326 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 literal 0 HcmV?d00001 diff --git a/resources/assets/mekanism/textures/blocks/Chlorine.png.mcmeta b/resources/assets/mekanism/textures/blocks/Chlorine.png.mcmeta new file mode 100644 index 000000000..4b721e09a --- /dev/null +++ b/resources/assets/mekanism/textures/blocks/Chlorine.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +}