From 3b96fe4a4cc512e98d1267048b6789948377a7ad Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Thu, 19 Mar 2015 17:22:31 -0400 Subject: [PATCH] Fixed Digital Miner, fixed energy upgrades not affecting usage of Chemical Washers/Electrolytic Separators/Chemical Infusers/Rotary Condensentrators, added "dump excess" to electrolytic separator --- .../client/gui/GuiChemicalInfuser.java | 2 +- .../client/gui/GuiChemicalWasher.java | 2 +- .../client/gui/GuiElectrolyticSeparator.java | 49 +++++++++----- .../java/mekanism/client/gui/GuiGasTank.java | 14 ++-- .../java/mekanism/client/gui/GuiMekanism.java | 14 ++++ .../client/gui/GuiRotaryCondensentrator.java | 2 +- .../tile/TileEntityChemicalInfuser.java | 6 +- .../common/tile/TileEntityChemicalWasher.java | 6 +- .../common/tile/TileEntityDigitalMiner.java | 10 +-- .../tile/TileEntityElectrolyticSeparator.java | 63 ++++++++++++------ .../common/tile/TileEntityGasTank.java | 35 +++------- .../mekanism/common/tile/TileEntityPRC.java | 2 +- .../tile/TileEntityRotaryCondensentrator.java | 12 ++-- .../mekanism/common/util/MekanismUtils.java | 7 +- .../mekanism/gui/GuiElectrolyticSeparator.png | Bin 2245 -> 3543 bytes 15 files changed, 137 insertions(+), 87 deletions(-) diff --git a/src/main/java/mekanism/client/gui/GuiChemicalInfuser.java b/src/main/java/mekanism/client/gui/GuiChemicalInfuser.java index 6a667a5af..bd43bfac6 100644 --- a/src/main/java/mekanism/client/gui/GuiChemicalInfuser.java +++ b/src/main/java/mekanism/client/gui/GuiChemicalInfuser.java @@ -51,7 +51,7 @@ public class GuiChemicalInfuser extends GuiMekanism if(tileEntity.getRecipe() != null) { - usage = tileEntity.getUpgradedUsage(tileEntity.getRecipe())*tileEntity.BASE_ENERGY_USAGE; + usage = tileEntity.getUpgradedUsage(tileEntity.getRecipe())*MekanismUtils.getPureEnergyPerTick(tileEntity, tileEntity.BASE_ENERGY_USAGE); } String multiplier = MekanismUtils.getEnergyDisplay(usage); diff --git a/src/main/java/mekanism/client/gui/GuiChemicalWasher.java b/src/main/java/mekanism/client/gui/GuiChemicalWasher.java index 84ac10efe..045ad2514 100644 --- a/src/main/java/mekanism/client/gui/GuiChemicalWasher.java +++ b/src/main/java/mekanism/client/gui/GuiChemicalWasher.java @@ -53,7 +53,7 @@ public class GuiChemicalWasher extends GuiMekanism @Override public List getInfo() { - String multiplier = MekanismUtils.getEnergyDisplay(tileEntity.BASE_ENERGY_USAGE*tileEntity.getUpgradedUsage()); + String multiplier = MekanismUtils.getEnergyDisplay(MekanismUtils.getPureEnergyPerTick(tileEntity, tileEntity.BASE_ENERGY_USAGE)*tileEntity.getUpgradedUsage()); return ListUtils.asList("Using: " + multiplier + "/t", "Needed: " + MekanismUtils.getEnergyDisplay(tileEntity.getMaxEnergy()-tileEntity.getEnergy())); } }, this, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalWasher.png"))); diff --git a/src/main/java/mekanism/client/gui/GuiElectrolyticSeparator.java b/src/main/java/mekanism/client/gui/GuiElectrolyticSeparator.java index dcce2b2e4..fae952a4e 100755 --- a/src/main/java/mekanism/client/gui/GuiElectrolyticSeparator.java +++ b/src/main/java/mekanism/client/gui/GuiElectrolyticSeparator.java @@ -4,38 +4,39 @@ import java.util.ArrayList; import java.util.List; import mekanism.api.Coord4D; -import mekanism.api.MekanismConfig.general; import mekanism.api.gas.GasTank; import mekanism.api.util.ListUtils; import mekanism.client.gui.element.GuiEnergyInfo; +import mekanism.client.gui.element.GuiEnergyInfo.IInfoHandler; import mekanism.client.gui.element.GuiFluidGauge; +import mekanism.client.gui.element.GuiFluidGauge.IFluidInfoHandler; import mekanism.client.gui.element.GuiGasGauge; +import mekanism.client.gui.element.GuiGasGauge.IGasInfoHandler; import mekanism.client.gui.element.GuiGauge; import mekanism.client.gui.element.GuiPowerBar; import mekanism.client.gui.element.GuiProgress; -import mekanism.client.gui.element.GuiSlot; -import mekanism.client.gui.element.GuiUpgradeTab; -import mekanism.client.gui.element.GuiEnergyInfo.IInfoHandler; -import mekanism.client.gui.element.GuiFluidGauge.IFluidInfoHandler; -import mekanism.client.gui.element.GuiGasGauge.IGasInfoHandler; import mekanism.client.gui.element.GuiProgress.IProgressInfoHandler; import mekanism.client.gui.element.GuiProgress.ProgressBar; +import mekanism.client.gui.element.GuiSlot; import mekanism.client.gui.element.GuiSlot.SlotOverlay; import mekanism.client.gui.element.GuiSlot.SlotType; +import mekanism.client.gui.element.GuiUpgradeTab; import mekanism.client.sound.SoundHandler; import mekanism.common.Mekanism; import mekanism.common.inventory.container.ContainerElectrolyticSeparator; import mekanism.common.network.PacketTileEntity.TileEntityMessage; import mekanism.common.tile.TileEntityElectrolyticSeparator; +import mekanism.common.tile.TileEntityGasTank; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; import net.minecraft.entity.player.InventoryPlayer; import net.minecraftforge.fluids.FluidTank; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import org.lwjgl.opengl.GL11; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + @SideOnly(Side.CLIENT) public class GuiElectrolyticSeparator extends GuiMekanism { @@ -56,7 +57,7 @@ public class GuiElectrolyticSeparator extends GuiMekanism if(tileEntity.getRecipe() != null) { - usage = tileEntity.getUpgradedUsage(tileEntity.getRecipe())*tileEntity.getRecipe().extraEnergy; + usage = tileEntity.getUpgradedUsage(tileEntity.getRecipe())*MekanismUtils.getPureEnergyPerTick(tileEntity, tileEntity.getRecipe().extraEnergy); } String multiplier = MekanismUtils.getEnergyDisplay(usage); @@ -132,11 +133,11 @@ public class GuiElectrolyticSeparator extends GuiMekanism { fontRendererObj.drawString(tileEntity.getInventoryName(), 45, 6, 0x404040); - String name = tileEntity.dumpLeft ? "Dumping..." : tileEntity.leftTank.getGas() == null ? MekanismUtils.localize("gui.none") : tileEntity.leftTank.getGas().getGas().getLocalizedName(); - fontRendererObj.drawString(name, 21, 73, 0x404040); + String name = chooseByMode(tileEntity.dumpLeft, MekanismUtils.localize("gui.idle"), MekanismUtils.localize("gui.dumping"), MekanismUtils.localize("gui.dumping_excess")); + renderScaledText(name, 21, 73, 0x404040, 66); - name = tileEntity.dumpRight ? "Dumping..." : tileEntity.rightTank.getGas() == null ? MekanismUtils.localize("gui.none") : tileEntity.rightTank.getGas().getGas().getLocalizedName(); - fontRendererObj.drawString(name, 156-fontRendererObj.getStringWidth(name), 73, 0x404040); + name = chooseByMode(tileEntity.dumpRight, MekanismUtils.localize("gui.idle"), MekanismUtils.localize("gui.dumping"), MekanismUtils.localize("gui.dumping_excess")); + renderScaledText(name, 156-(int)(fontRendererObj.getStringWidth(name)*getNeededScale(name, 66)), 73, 0x404040, 66); super.drawGuiContainerForegroundLayer(mouseX, mouseY); } @@ -150,12 +151,30 @@ public class GuiElectrolyticSeparator extends GuiMekanism int guiHeight = (height - ySize) / 2; drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize); - int displayInt = tileEntity.dumpLeft ? 60 : 52; + int displayInt = chooseByMode(tileEntity.dumpLeft, 52, 60, 68); drawTexturedModalRect(guiWidth + 8, guiHeight + 73, 176, displayInt, 8, 8); - displayInt = tileEntity.dumpRight ? 60 : 52; + displayInt = chooseByMode(tileEntity.dumpRight, 52, 60, 68); drawTexturedModalRect(guiWidth + 160, guiHeight + 73, 176, displayInt, 8, 8); super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); } + + private T chooseByMode(TileEntityGasTank.GasMode dumping, T idleOption, T dumpingOption, T dumpingExcessOption) + { + if(dumping.equals(TileEntityGasTank.GasMode.IDLE)) + { + return idleOption; + } + else if(dumping.equals(TileEntityGasTank.GasMode.DUMPING)) + { + return dumpingOption; + } + else if(dumping.equals(TileEntityGasTank.GasMode.DUMPING_EXCESS)) + { + return dumpingExcessOption; + } + + return idleOption; //should not happen; + } } diff --git a/src/main/java/mekanism/client/gui/GuiGasTank.java b/src/main/java/mekanism/client/gui/GuiGasTank.java index 3aca80c51..6a185a353 100644 --- a/src/main/java/mekanism/client/gui/GuiGasTank.java +++ b/src/main/java/mekanism/client/gui/GuiGasTank.java @@ -2,8 +2,6 @@ package mekanism.client.gui; import java.util.ArrayList; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import mekanism.api.Coord4D; import mekanism.client.sound.SoundHandler; import mekanism.common.Mekanism; @@ -13,8 +11,12 @@ import mekanism.common.tile.TileEntityGasTank; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; import net.minecraft.entity.player.InventoryPlayer; + import org.lwjgl.opengl.GL11; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + @SideOnly(Side.CLIENT) public class GuiGasTank extends GuiMekanism { @@ -86,17 +88,17 @@ public class GuiGasTank extends GuiMekanism } } - private T chooseByMode(TileEntityGasTank.Mode dumping, T idleOption, T dumpingOption, T dumpingExcessOption) + private T chooseByMode(TileEntityGasTank.GasMode dumping, T idleOption, T dumpingOption, T dumpingExcessOption) { - if(dumping.equals(TileEntityGasTank.Mode.IDLE)) + if(dumping.equals(TileEntityGasTank.GasMode.IDLE)) { return idleOption; } - else if(dumping.equals(TileEntityGasTank.Mode.DUMPING)) + else if(dumping.equals(TileEntityGasTank.GasMode.DUMPING)) { return dumpingOption; } - else if(dumping.equals(TileEntityGasTank.Mode.DUMPING_EXCESS)) + else if(dumping.equals(TileEntityGasTank.GasMode.DUMPING_EXCESS)) { return dumpingExcessOption; } diff --git a/src/main/java/mekanism/client/gui/GuiMekanism.java b/src/main/java/mekanism/client/gui/GuiMekanism.java index b60860cd6..70768b9f7 100644 --- a/src/main/java/mekanism/client/gui/GuiMekanism.java +++ b/src/main/java/mekanism/client/gui/GuiMekanism.java @@ -38,6 +38,20 @@ public abstract class GuiMekanism extends GuiContainer implements IGuiWrapper tileEntity = tile; } + public float getNeededScale(String text, int maxX) + { + int length = fontRendererObj.getStringWidth(text); + + if(length <= maxX) + { + return 1; + } + else { + return (float)maxX/length; + } + } + + /** returns scale */ public void renderScaledText(String text, int x, int y, int color, int maxX) { int length = fontRendererObj.getStringWidth(text); diff --git a/src/main/java/mekanism/client/gui/GuiRotaryCondensentrator.java b/src/main/java/mekanism/client/gui/GuiRotaryCondensentrator.java index 38c25ed80..f80d5c47a 100644 --- a/src/main/java/mekanism/client/gui/GuiRotaryCondensentrator.java +++ b/src/main/java/mekanism/client/gui/GuiRotaryCondensentrator.java @@ -59,7 +59,7 @@ public class GuiRotaryCondensentrator extends GuiMekanism @Override public List getInfo() { - String multiplier = MekanismUtils.getEnergyDisplay(tileEntity.BASE_ENERGY_USAGE*tileEntity.getUpgradedUsage()); + String multiplier = MekanismUtils.getEnergyDisplay(MekanismUtils.getPureEnergyPerTick(tileEntity, tileEntity.BASE_ENERGY_USAGE)*tileEntity.getUpgradedUsage()); return ListUtils.asList("Using: " + multiplier + "/t", "Needed: " + MekanismUtils.getEnergyDisplay(tileEntity.getMaxEnergy()-tileEntity.getEnergy())); } }, this, MekanismUtils.getResource(ResourceType.GUI, "GuiRotaryCondensentrator.png"))); diff --git a/src/main/java/mekanism/common/tile/TileEntityChemicalInfuser.java b/src/main/java/mekanism/common/tile/TileEntityChemicalInfuser.java index 035fc1ad8..23abe8df4 100644 --- a/src/main/java/mekanism/common/tile/TileEntityChemicalInfuser.java +++ b/src/main/java/mekanism/common/tile/TileEntityChemicalInfuser.java @@ -119,10 +119,10 @@ public class TileEntityChemicalInfuser extends TileEntityNoisyElectricBlock impl ChemicalInfuserRecipe recipe = getRecipe(); - if(canOperate(recipe) && getEnergy() >= BASE_ENERGY_USAGE && MekanismUtils.canFunction(this)) + if(canOperate(recipe) && getEnergy() >= MekanismUtils.getPureEnergyPerTick(this, BASE_ENERGY_USAGE) && MekanismUtils.canFunction(this)) { setActive(true); - setEnergy(getEnergy() - BASE_ENERGY_USAGE); + setEnergy(getEnergy() - MekanismUtils.getPureEnergyPerTick(this, BASE_ENERGY_USAGE)); operate(recipe); } @@ -167,7 +167,7 @@ public class TileEntityChemicalInfuser extends TileEntityNoisyElectricBlock impl } possibleProcess = Math.min(centerTank.getNeeded()/recipe.recipeOutput.output.amount, possibleProcess); - possibleProcess = Math.min((int)(getEnergy()/BASE_ENERGY_USAGE), possibleProcess); + possibleProcess = Math.min((int)(getEnergy()/MekanismUtils.getPureEnergyPerTick(this, BASE_ENERGY_USAGE)), possibleProcess); return possibleProcess; } diff --git a/src/main/java/mekanism/common/tile/TileEntityChemicalWasher.java b/src/main/java/mekanism/common/tile/TileEntityChemicalWasher.java index 1da0d9243..ec0fe767c 100644 --- a/src/main/java/mekanism/common/tile/TileEntityChemicalWasher.java +++ b/src/main/java/mekanism/common/tile/TileEntityChemicalWasher.java @@ -123,13 +123,13 @@ public class TileEntityChemicalWasher extends TileEntityNoisyElectricBlock imple WasherRecipe recipe = getRecipe(); - if(canOperate(recipe) && getEnergy() >= BASE_ENERGY_USAGE && MekanismUtils.canFunction(this)) + if(canOperate(recipe) && getEnergy() >= MekanismUtils.getPureEnergyPerTick(this, BASE_ENERGY_USAGE) && MekanismUtils.canFunction(this)) { setActive(true); int operations = operate(recipe); - setEnergy(getEnergy() - BASE_ENERGY_USAGE*operations); + setEnergy(getEnergy() - MekanismUtils.getPureEnergyPerTick(this, BASE_ENERGY_USAGE)*operations); } else { if(prevEnergy >= getEnergy()) @@ -264,7 +264,7 @@ public class TileEntityChemicalWasher extends TileEntityNoisyElectricBlock imple { int possibleProcess = (int)Math.pow(2, upgradeComponent.getUpgrades(Upgrade.SPEED)); possibleProcess = Math.min(Math.min(inputTank.getStored(), outputTank.getNeeded()), possibleProcess); - possibleProcess = Math.min((int)(getEnergy()/BASE_ENERGY_USAGE), possibleProcess); + possibleProcess = Math.min((int)(getEnergy()/MekanismUtils.getPureEnergyPerTick(this, BASE_ENERGY_USAGE)), possibleProcess); return Math.min(fluidTank.getFluidAmount()/WATER_USAGE, possibleProcess); } diff --git a/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java b/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java index eadb596a7..0f9d18165 100644 --- a/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java +++ b/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java @@ -91,10 +91,12 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I public boolean doPull = false; public ItemStack missingStack = null; + + public int BASE_DELAY = 80; public int delay; - public int delayLength; + public int delayLength = BASE_DELAY; public int clientToMine; @@ -275,9 +277,9 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I { oresToMine.remove(chunk); } + + delay = getDelay(); } - - delay = getDelay(); } else { if(prevEnergy >= getEnergy()) @@ -1470,7 +1472,7 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I switch(upgrade) { case SPEED: - delayLength = MekanismUtils.getTicks(this, 80); + delayLength = MekanismUtils.getTicks(this, BASE_DELAY); case ENERGY: energyUsage = MekanismUtils.getEnergyPerTick(this, BASE_ENERGY_USAGE); maxEnergy = MekanismUtils.getMaxEnergy(this, BASE_MAX_ENERGY); diff --git a/src/main/java/mekanism/common/tile/TileEntityElectrolyticSeparator.java b/src/main/java/mekanism/common/tile/TileEntityElectrolyticSeparator.java index 1cc453e5d..2f45e7005 100644 --- a/src/main/java/mekanism/common/tile/TileEntityElectrolyticSeparator.java +++ b/src/main/java/mekanism/common/tile/TileEntityElectrolyticSeparator.java @@ -18,8 +18,8 @@ import mekanism.api.gas.ITubeConnection; import mekanism.common.Mekanism; import mekanism.common.Upgrade; import mekanism.common.Upgrade.IUpgradeInfoHandler; -import mekanism.common.base.ITankManager; import mekanism.common.base.ISustainedData; +import mekanism.common.base.ITankManager; import mekanism.common.base.IUpgradeTile; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.network.PacketTileEntity.TileEntityMessage; @@ -28,6 +28,7 @@ import mekanism.common.recipe.RecipeHandler.Recipe; import mekanism.common.recipe.inputs.FluidInput; import mekanism.common.recipe.machines.SeparatorRecipe; import mekanism.common.recipe.outputs.ChemicalPairOutput; +import mekanism.common.tile.TileEntityGasTank.GasMode; import mekanism.common.tile.component.TileComponentUpgrade; import mekanism.common.util.ChargeUtils; import mekanism.common.util.FluidContainerUtils; @@ -71,10 +72,10 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp public int output = 256; /** The type of gas this block is outputting. */ - public boolean dumpLeft = false; + public GasMode dumpLeft = GasMode.IDLE; /** Type type of gas this block is dumping. */ - public boolean dumpRight = false; + public GasMode dumpRight = GasMode.IDLE; public boolean isActive = false; @@ -143,13 +144,13 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp SeparatorRecipe recipe = getRecipe(); - if(canOperate(recipe) && getEnergy() >= recipe.extraEnergy) + if(canOperate(recipe) && getEnergy() >= MekanismUtils.getPureEnergyPerTick(this, recipe.extraEnergy)) { setActive(true); int operations = operate(recipe); - setEnergy(getEnergy() - recipe.extraEnergy*operations); + setEnergy(getEnergy() - MekanismUtils.getPureEnergyPerTick(this, recipe.extraEnergy)*operations); } else { setActive(false); @@ -159,7 +160,7 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp if(leftTank.getGas() != null) { - if(!dumpLeft) + if(dumpLeft != GasMode.DUMPING) { GasStack toSend = new GasStack(leftTank.getGas().getGas(), Math.min(leftTank.getStored(), output)); @@ -173,7 +174,8 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp } } } - else { + else if(dumpLeft == GasMode.DUMPING) + { leftTank.draw(dumpAmount, true); if(worldObj.rand.nextInt(3) == 2) @@ -181,11 +183,21 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp Mekanism.packetHandler.sendToReceivers(new TileEntityMessage(Coord4D.get(this), getParticlePacket(0, new ArrayList())), new Range4D(Coord4D.get(this))); } } + + if(dumpRight == GasMode.DUMPING_EXCESS && leftTank.getNeeded() < output) + { + leftTank.draw(output, true); + + if(worldObj.rand.nextInt(3) == 2) + { + Mekanism.packetHandler.sendToReceivers(new TileEntityMessage(Coord4D.get(this), getParticlePacket(0, new ArrayList())), new Range4D(Coord4D.get(this))); + } + } } if(rightTank.getGas() != null) { - if(!dumpRight) + if(dumpRight != GasMode.DUMPING) { GasStack toSend = new GasStack(rightTank.getGas().getGas(), Math.min(rightTank.getStored(), output)); @@ -199,7 +211,8 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp } } } - else { + else if(dumpRight == GasMode.DUMPING) + { rightTank.draw(dumpAmount, true); if(worldObj.rand.nextInt(3) == 2) @@ -207,6 +220,16 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp Mekanism.packetHandler.sendToReceivers(new TileEntityMessage(Coord4D.get(this), getParticlePacket(1, new ArrayList())), new Range4D(Coord4D.get(this))); } } + + if(dumpRight == GasMode.DUMPING_EXCESS && rightTank.getNeeded() < output) + { + rightTank.draw(output, true); + + if(worldObj.rand.nextInt(3) == 2) + { + Mekanism.packetHandler.sendToReceivers(new TileEntityMessage(Coord4D.get(this), getParticlePacket(0, new ArrayList())), new Range4D(Coord4D.get(this))); + } + } } } @@ -227,7 +250,7 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp } possibleProcess = Math.min((int)Math.pow(2, upgradeComponent.getUpgrades(Upgrade.SPEED)), possibleProcess); - possibleProcess = Math.min((int)(getEnergy()/recipe.extraEnergy), possibleProcess); + possibleProcess = Math.min((int)(getEnergy()/MekanismUtils.getPureEnergyPerTick(this, recipe.extraEnergy)), possibleProcess); return Math.min(fluidTank.getFluidAmount()/recipe.recipeInput.ingredient.amount, possibleProcess); } @@ -378,11 +401,11 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp if(type == 0) { - dumpLeft ^= true; + dumpLeft = GasMode.values()[dumpLeft.ordinal() == GasMode.values().length-1 ? 0 : dumpLeft.ordinal()+1]; } else if(type == 1) { - dumpRight ^= true; + dumpRight = GasMode.values()[dumpRight.ordinal() == GasMode.values().length-1 ? 0 : dumpRight.ordinal()+1]; } return; @@ -418,8 +441,8 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp rightTank.setGas(null); } - dumpLeft = dataStream.readBoolean(); - dumpRight = dataStream.readBoolean(); + dumpLeft = GasMode.values()[dataStream.readInt()]; + dumpRight = GasMode.values()[dataStream.readInt()]; isActive = dataStream.readBoolean(); } else if(type == 1) @@ -465,8 +488,8 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp data.add(false); } - data.add(dumpLeft); - data.add(dumpRight); + data.add(dumpLeft.ordinal()); + data.add(dumpRight.ordinal()); data.add(isActive); return data; @@ -493,8 +516,8 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp leftTank.read(nbtTags.getCompoundTag("leftTank")); rightTank.read(nbtTags.getCompoundTag("rightTank")); - dumpLeft = nbtTags.getBoolean("dumpLeft"); - dumpRight = nbtTags.getBoolean("dumpRight"); + dumpLeft = GasMode.values()[nbtTags.getInteger("dumpLeft")]; + dumpRight = GasMode.values()[nbtTags.getInteger("dumpRight")]; } @Override @@ -510,8 +533,8 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp nbtTags.setTag("leftTank", leftTank.write(new NBTTagCompound())); nbtTags.setTag("rightTank", rightTank.write(new NBTTagCompound())); - nbtTags.setBoolean("dumpLeft", dumpLeft); - nbtTags.setBoolean("dumpRight", dumpRight); + nbtTags.setInteger("dumpLeft", dumpLeft.ordinal()); + nbtTags.setInteger("dumpRight", dumpRight.ordinal()); } @Override diff --git a/src/main/java/mekanism/common/tile/TileEntityGasTank.java b/src/main/java/mekanism/common/tile/TileEntityGasTank.java index ecdf2c1c6..9e30314fd 100644 --- a/src/main/java/mekanism/common/tile/TileEntityGasTank.java +++ b/src/main/java/mekanism/common/tile/TileEntityGasTank.java @@ -27,7 +27,7 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityGasTank extends TileEntityContainerBlock implements IGasHandler, ITubeConnection, IRedstoneControl { - public enum Mode + public enum GasMode { IDLE, DUMPING, @@ -42,7 +42,7 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH /** How fast this tank can output gas. */ public int output = 256; - public Mode dumping; + public GasMode dumping; public int currentGasAmount; @@ -54,7 +54,7 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH super("GasTank"); inventory = new ItemStack[2]; - dumping = Mode.IDLE; + dumping = GasMode.IDLE; controlType = RedstoneControl.DISABLED; } @@ -71,7 +71,7 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH gasTank.receive(GasTransmission.removeGas(inventory[1], gasTank.getGasType(), gasTank.getNeeded()), true); } - if(!worldObj.isRemote && gasTank.getGas() != null && MekanismUtils.canFunction(this)) + if(!worldObj.isRemote && gasTank.getGas() != null && MekanismUtils.canFunction(this) && dumping != GasMode.DUMPING) { GasStack toSend = new GasStack(gasTank.getGas().getGas(), Math.min(gasTank.getStored(), output)); @@ -86,12 +86,12 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH } } - if(!worldObj.isRemote && dumping.equals(Mode.DUMPING)) + if(!worldObj.isRemote && dumping == GasMode.DUMPING) { gasTank.draw(8, true); } - if(!worldObj.isRemote && dumping.equals(Mode.DUMPING_EXCESS) && gasTank.getNeeded() < output) + if(!worldObj.isRemote && dumping == GasMode.DUMPING_EXCESS && gasTank.getNeeded() < output) { gasTank.draw(output, true); } @@ -184,7 +184,7 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH if(type == 0) { int index = (dumping.ordinal() + 1)%dumping.values().length; - dumping = Mode.values()[index]; + dumping = GasMode.values()[index]; } for(EntityPlayer player : playersUsing) @@ -205,7 +205,7 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH gasTank.setGas(null); } - dumping = Mode.values()[dataStream.readInt()]; + dumping = GasMode.values()[dataStream.readInt()]; controlType = RedstoneControl.values()[dataStream.readInt()]; MekanismUtils.updateBlock(worldObj, xCoord, yCoord, zCoord); @@ -217,22 +217,7 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH super.readFromNBT(nbtTags); gasTank.read(nbtTags.getCompoundTag("gasTank")); - - if(nbtTags.hasKey("dumpingMode")) - { - dumping = Mode.valueOf(nbtTags.getString("dumpingMode")); - } - else { - boolean dumpingBool = nbtTags.getBoolean("dumping"); - - if(dumpingBool) - { - dumping = Mode.DUMPING; - } - else { - dumping = Mode.IDLE; - } - } + dumping = GasMode.values()[nbtTags.getInteger("dumping")]; controlType = RedstoneControl.values()[nbtTags.getInteger("controlType")]; } @@ -243,7 +228,7 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH super.writeToNBT(nbtTags); nbtTags.setTag("gasTank", gasTank.write(new NBTTagCompound())); - nbtTags.setString("dumpingMode", dumping.name()); + nbtTags.setInteger("dumping", dumping.ordinal()); nbtTags.setInteger("controlType", controlType.ordinal()); } diff --git a/src/main/java/mekanism/common/tile/TileEntityPRC.java b/src/main/java/mekanism/common/tile/TileEntityPRC.java index 2854d03da..38ffe6cac 100644 --- a/src/main/java/mekanism/common/tile/TileEntityPRC.java +++ b/src/main/java/mekanism/common/tile/TileEntityPRC.java @@ -111,7 +111,7 @@ public class TileEntityPRC extends TileEntityBasicMachine= ticksRequired && getEnergy() >= MekanismUtils.getEnergyPerTick(this, BASE_ENERGY_PER_TICK + recipe.extraEnergy)) { diff --git a/src/main/java/mekanism/common/tile/TileEntityRotaryCondensentrator.java b/src/main/java/mekanism/common/tile/TileEntityRotaryCondensentrator.java index c59a88e11..23c8d1d50 100644 --- a/src/main/java/mekanism/common/tile/TileEntityRotaryCondensentrator.java +++ b/src/main/java/mekanism/common/tile/TileEntityRotaryCondensentrator.java @@ -278,14 +278,14 @@ public class TileEntityRotaryCondensentrator extends TileEntityElectricBlock imp } } - if(getEnergy() >= BASE_ENERGY_USAGE && MekanismUtils.canFunction(this) && isValidFluid(fluidTank.getFluid()) && (gasTank.getGas() == null || (gasTank.getStored() < MAX_FLUID && gasEquals(gasTank.getGas(), fluidTank.getFluid())))) + if(getEnergy() >= MekanismUtils.getPureEnergyPerTick(this, BASE_ENERGY_USAGE) && MekanismUtils.canFunction(this) && isValidFluid(fluidTank.getFluid()) && (gasTank.getGas() == null || (gasTank.getStored() < MAX_FLUID && gasEquals(gasTank.getGas(), fluidTank.getFluid())))) { - int usage = getUpgradedUsage(); + int operations = getUpgradedUsage(); setActive(true); - gasTank.receive(new GasStack(GasRegistry.getGas(fluidTank.getFluid().getFluid()), usage), true); - fluidTank.drain(usage, true); - setEnergy(getEnergy() - BASE_ENERGY_USAGE*usage); + gasTank.receive(new GasStack(GasRegistry.getGas(fluidTank.getFluid().getFluid()), operations), true); + fluidTank.drain(operations, true); + setEnergy(getEnergy() - MekanismUtils.getPureEnergyPerTick(this, BASE_ENERGY_USAGE)*operations); } else { if(prevEnergy >= getEnergy()) @@ -311,7 +311,7 @@ public class TileEntityRotaryCondensentrator extends TileEntityElectricBlock imp possibleProcess = Math.min(Math.min(fluidTank.getFluidAmount(), gasTank.getNeeded()), possibleProcess); } - possibleProcess = Math.min((int)(getEnergy()/BASE_ENERGY_USAGE), possibleProcess); + possibleProcess = Math.min((int)(getEnergy()/MekanismUtils.getPureEnergyPerTick(this, BASE_ENERGY_USAGE)), possibleProcess); return possibleProcess; } diff --git a/src/main/java/mekanism/common/util/MekanismUtils.java b/src/main/java/mekanism/common/util/MekanismUtils.java index fead19e33..d984f48f1 100644 --- a/src/main/java/mekanism/common/util/MekanismUtils.java +++ b/src/main/java/mekanism/common/util/MekanismUtils.java @@ -596,7 +596,12 @@ public final class MekanismUtils */ public static double getEnergyPerTick(IUpgradeTile mgmt, double def) { - return def * Math.pow(general.maxUpgradeMultiplier, (2*mgmt.getComponent().getUpgrades(Upgrade.SPEED)-(float)mgmt.getComponent().getUpgrades(Upgrade.ENERGY))/(float)Upgrade.SPEED.getMax()); + return def * Math.pow(general.maxUpgradeMultiplier, (2*mgmt.getComponent().getUpgrades(Upgrade.SPEED)-(float)mgmt.getComponent().getUpgrades(Upgrade.ENERGY))/(float)Upgrade.ENERGY.getMax()); + } + + public static double getPureEnergyPerTick(IUpgradeTile mgmt, double def) + { + return def * Math.pow(general.maxUpgradeMultiplier, -(float)mgmt.getComponent().getUpgrades(Upgrade.ENERGY)/(float)Upgrade.ENERGY.getMax()); } /** diff --git a/src/main/resources/assets/mekanism/gui/GuiElectrolyticSeparator.png b/src/main/resources/assets/mekanism/gui/GuiElectrolyticSeparator.png index feee8a547501adda8772f4194aa1a4f5f293f97c..b1d574e723cf059c5e2cb75536f66627b47e45f8 100644 GIT binary patch literal 3543 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 XM-+a0C!95re%JuvS64?CJ}Bug|16|V literal 2245 zcmcIldo&c<8s9UG*Qm*(QHzXMC@~{NNTw4VQJ$3u zc?_LQ%yhC=>0f0zN2#}YRZa$F@g8)|8Q=uP%u1NJMc<$_tk=~O+=s8 zLoy{DX`LIl@A(O3Q>Og}1$%5Lo`BANuZvSLP2sW#v2v%|mKVFliG_2^AFbzZCUx^Y z#$pH5x-S%0WG@W8Z@riE)IKlx7r) zgPMWUNd@J&mV&Fgn?ZEWJ%gM8?;Q8nMvtaxQ-53@?eJOSn7wPfwPXPaNxppp%k;!+ zhdfL=ge3cWW#}?9s7->@5AYfdcQP%gJ(6jGw==IoTyuE8_{c!BlmvZ;B1ZlGybn$O zJzvunIrxCn{ljJt|L#*i&J@B5QWtwtkjV5;r@4W}@{5$l@;=S09~zRMkKiM2^KqqQ z^kg6R$HC-NMOw6FkNQaTLgn2XVdW~KkZr3q$oO70o7gzR$t@2yrt5ZnsM%|!G?+eG zteF|o_J$Vax2K)+G3>nIg8qvN&r>GtK2;U|-%l!&ok=Fs-2L2&D_AC?cR5PW!=XPA zo|f5>U}BWb4wxuCy)QG_Ss^VIH*v2ZP&Rn0k49Sh6r$vMYk=~VmHrBNIn1E_tt%BoZ0-$9lI} z$*+1P*q`VnQCV&GuLr87C8z4)(RfKXIK4HcVh#Hp^a4ncEaq zS9Y`K^DnDr@irgNNJ1scsSln_X4A50k7;uaj~hs|9knzuPev#wERo!ooSm%l9Ltgn z-*k>P7J1%jXf+p4JBnrM{cM9<0ukrlcP|A!w)6|zt2o^*p?|mZOEa1<-dNUD=XqI+ z#hNfwalmZdmNm6mNcP!fk>o~JoF+|velUXv6?1p6Mrzv z;~df1a>-Hs*dbZ>o=zU3-9W!;W?RCO18{s5y}$DciP^%y(0QGQ8^<%i5M!kCtT3g_ zE+vXCyp@-+_Mx2nlM-Q$r;$+AlbjfJ=Iv|{`=b1^-Laon_}%^es~n6sMLf$m4kF?P zj~Yct+kmXU^FbU~Tc1VEWjCdWLOA|-6ab2<>k9(%?x;&axoD@u4sx$yDiBLcx>-^+ z05Eqaoc+-_o^Z6*Wf%h}6H#r7i;y^#XF9cYx%+2YZy9>*favH^)tdrmvrV+MzW2Tt zY7IghJuUP`AXg6HuxV2(rppOOVEqnF)1P_4==Ax6+Ne!!3vK+}oZT!|31XQ+cyUm$ zYa5y9y{1>Ul2MYVk(Amt5WFmUJ#vw2kWt7b=&O2FdbdF1EDAY2a5pVP>cpEjdeoRq)6aD#*yFc$N;z#nooIn9Js-Xbr~xn~u&@4@3E>i; zK4P(0`x&-(T@GIdHSazlnbX!Xeg@qw2?=8JYQV;vPZT|y?-DDjPQrl_sCz17$l2{n zRFK9HtvEjvB7oFPeL_+IwR~zSfH60xCUuh5YL@`watQ; zSlCb^nM@utsjGcZ_;|qFn=%$69!3Ktvy74L-;(%@qmObDZ@~a|uET48FgrVI%`Y=w zrx+Iqx;OS|7CvTg=zX`O$*}kEIBC6Is{^f-6%`)tcR!{<&eg-CbievW*>AX6A*YI4 z4F!9@5nkH?gF*mI8YXJ91;i<@3_vmMCXr9R6>#1*pQ0zEO%%%ZB&fOpywo8KLb0d@ z6&3L0=S8A?^$v7vxx5bd+-kIT!-e@vs!7*WS?EUwP$H3dMd^Tgrehap&siY^UEYo+ zW=-LW5F4cG^e-|CLDn+T@9}@A_Z$HbRDjx3Z%~wJ3=9U<4N@XbXRYh3qFrGB4&Tgl zGH-u-0cij|rw*>({(6JIQDfG>;B}3^85A5^nT_tt!p093$kRSqMX%`W@?Gm^s3wg- zzr5g@8x8rC)kKC!3%xXiKHPEKW^3-+7RsM?7*&^MbC-dLJ8;3*;{GT37X-%KLIFS{ z(x@h)WJju`(q^l=|C^(JUlWUo`E@O{!&ko8FukOJpnnpL%u{C1!;8>XR{ON{ShC|W nl`chgviOQZBKW7qO9%rZYWXhnQp@G_h69`&TyWI~{4V_krCg~=