From 62791baec7f5ab1d604551ee2902facaffefce74 Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Tue, 24 Feb 2015 14:11:26 -0500 Subject: [PATCH] Solar Evaporation Plant fixes --- .../java/mekanism/api/MekanismConfig.java | 1 - .../gui/GuiSolarEvaporationController.java | 21 ++- .../client/nei/NEIMekanismConfig.java | 6 +- ...ava => SolarEvaporationRecipeHandler.java} | 10 +- .../RenderSalinationController.java | 10 +- .../java/mekanism/common/CommonProxy.java | 1 - src/main/java/mekanism/common/Mekanism.java | 4 + .../common/network/PacketConfigSync.java | 2 - .../mekanism/common/recipe/RecipeHandler.java | 23 +++- .../recipe/machines/GasCentrifugeRecipe.java | 1 - .../machines/SolarEvaporationRecipe.java | 38 +++++ .../common/recipe/outputs/FluidOutput.java | 32 +++++ .../TileEntitySolarEvaporationController.java | 130 ++++++++++-------- .../tile/TileEntitySolarEvaporationValve.java | 16 +-- ....png => GuiSolarEvaporationController.png} | Bin .../gui/nei/GuiSalinationController.png | Bin 4410 -> 0 bytes .../gui/nei/GuiSolarEvaporationController.png | Bin 0 -> 4359 bytes 17 files changed, 200 insertions(+), 95 deletions(-) rename src/main/java/mekanism/client/nei/{SalinationControllerRecipeHandler.java => SolarEvaporationRecipeHandler.java} (95%) create mode 100644 src/main/java/mekanism/common/recipe/machines/SolarEvaporationRecipe.java create mode 100644 src/main/java/mekanism/common/recipe/outputs/FluidOutput.java rename src/main/resources/assets/mekanism/gui/{GuiSalinationController.png => GuiSolarEvaporationController.png} (100%) delete mode 100644 src/main/resources/assets/mekanism/gui/nei/GuiSalinationController.png create mode 100644 src/main/resources/assets/mekanism/gui/nei/GuiSolarEvaporationController.png diff --git a/src/main/java/mekanism/api/MekanismConfig.java b/src/main/java/mekanism/api/MekanismConfig.java index c08701b98..75b7084a9 100644 --- a/src/main/java/mekanism/api/MekanismConfig.java +++ b/src/main/java/mekanism/api/MekanismConfig.java @@ -81,7 +81,6 @@ public class MekanismConfig public static double pressurizedReactionBaseUsage; public static double fluidicPlenisherUsage; public static double laserUsage; - public static double salinationPlantWaterUsage; public static double gasCentrifugeUsage; public static double heavyWaterElectrolysisUsage; } diff --git a/src/main/java/mekanism/client/gui/GuiSolarEvaporationController.java b/src/main/java/mekanism/client/gui/GuiSolarEvaporationController.java index 81a5ab5d1..992a3454e 100644 --- a/src/main/java/mekanism/client/gui/GuiSolarEvaporationController.java +++ b/src/main/java/mekanism/client/gui/GuiSolarEvaporationController.java @@ -42,12 +42,12 @@ public class GuiSolarEvaporationController extends GuiMekanism if(xAxis >= 7 && xAxis <= 23 && yAxis >= 14 && yAxis <= 72) { - drawCreativeTabHoveringText(tileEntity.waterTank.getFluid() != null ? LangUtils.localizeFluidStack(tileEntity.waterTank.getFluid()) + ": " + tileEntity.waterTank.getFluidAmount() : MekanismUtils.localize("gui.empty"), xAxis, yAxis); + drawCreativeTabHoveringText(tileEntity.inputTank.getFluid() != null ? LangUtils.localizeFluidStack(tileEntity.inputTank.getFluid()) + ": " + tileEntity.inputTank.getFluidAmount() : MekanismUtils.localize("gui.empty"), xAxis, yAxis); } if(xAxis >= 153 && xAxis <= 169 && yAxis >= 14 && yAxis <= 72) { - drawCreativeTabHoveringText(tileEntity.brineTank.getFluid() != null ? LangUtils.localizeFluidStack(tileEntity.brineTank.getFluid()) + ": " + tileEntity.brineTank.getFluidAmount() : MekanismUtils.localize("gui.empty"), xAxis, yAxis); + drawCreativeTabHoveringText(tileEntity.outputTank.getFluid() != null ? LangUtils.localizeFluidStack(tileEntity.outputTank.getFluid()) + ": " + tileEntity.outputTank.getFluidAmount() : MekanismUtils.localize("gui.empty"), xAxis, yAxis); } if(xAxis >= 49 && xAxis <= 127 && yAxis >= 64 && yAxis <= 72) @@ -64,8 +64,7 @@ public class GuiSolarEvaporationController extends GuiMekanism { return "Structured"; } - else if(!tileEntity.structured) - { + else { if(tileEntity.controllerConflict) { return "Conflict"; @@ -74,8 +73,6 @@ public class GuiSolarEvaporationController extends GuiMekanism return "Incomplete"; } } - - return null; } private String getTemp() @@ -104,7 +101,7 @@ public class GuiSolarEvaporationController extends GuiMekanism { super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); - mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiSalinationController.png")); + mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiSolarEvaporationController.png")); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); int guiWidth = (width - xSize) / 2; int guiHeight = (height - ySize) / 2; @@ -115,14 +112,14 @@ public class GuiSolarEvaporationController extends GuiMekanism int displayInt; - if(tileEntity.getScaledWaterLevel(58) > 0) + if(tileEntity.getScaledInputLevel(58) > 0) { - displayGauge(7, 14, tileEntity.getScaledWaterLevel(58), tileEntity.waterTank.getFluid(), null); + displayGauge(7, 14, tileEntity.getScaledInputLevel(58), tileEntity.inputTank.getFluid(), null); } - if(tileEntity.getScaledBrineLevel(58) > 0) + if(tileEntity.getScaledOutputLevel(58) > 0) { - displayGauge(153, 14, tileEntity.getScaledBrineLevel(58), tileEntity.brineTank.getFluid(), null); + displayGauge(153, 14, tileEntity.getScaledOutputLevel(58), tileEntity.outputTank.getFluid(), null); } displayInt = tileEntity.getScaledTempLevel(78); @@ -174,7 +171,7 @@ public class GuiSolarEvaporationController extends GuiMekanism } } - mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiSalinationController.png")); + mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiSolarEvaporationController.png")); drawTexturedModalRect(guiWidth + xPos, guiHeight + yPos, 176, 0, 16, 59); } } diff --git a/src/main/java/mekanism/client/nei/NEIMekanismConfig.java b/src/main/java/mekanism/client/nei/NEIMekanismConfig.java index cd85f096d..2dbcd6001 100644 --- a/src/main/java/mekanism/client/nei/NEIMekanismConfig.java +++ b/src/main/java/mekanism/client/nei/NEIMekanismConfig.java @@ -70,8 +70,8 @@ public class NEIMekanismConfig implements IConfigureNEI API.registerRecipeHandler(new PrecisionSawmillRecipeHandler()); API.registerUsageHandler(new PrecisionSawmillRecipeHandler()); - API.registerRecipeHandler(new SalinationControllerRecipeHandler()); - API.registerUsageHandler(new SalinationControllerRecipeHandler()); + API.registerRecipeHandler(new SolarEvaporationRecipeHandler()); + API.registerUsageHandler(new SolarEvaporationRecipeHandler()); API.registerRecipeHandler(new ChemicalDissolutionChamberRecipeHandler()); API.registerUsageHandler(new ChemicalDissolutionChamberRecipeHandler()); @@ -97,7 +97,7 @@ public class NEIMekanismConfig implements IConfigureNEI API.setGuiOffset(GuiRotaryCondensentrator.class, RotaryCondensentratorRecipeHandler.xOffset, RotaryCondensentratorRecipeHandler.yOffset); API.setGuiOffset(GuiElectrolyticSeparator.class, ElectrolyticSeparatorRecipeHandler.xOffset, ElectrolyticSeparatorRecipeHandler.yOffset); API.setGuiOffset(GuiPrecisionSawmill.class, 16, 6); - API.setGuiOffset(GuiSolarEvaporationController.class, SalinationControllerRecipeHandler.xOffset, SalinationControllerRecipeHandler.yOffset); + API.setGuiOffset(GuiSolarEvaporationController.class, SolarEvaporationRecipeHandler.xOffset, SolarEvaporationRecipeHandler.yOffset); API.setGuiOffset(GuiChemicalDissolutionChamber.class, ChemicalDissolutionChamberRecipeHandler.xOffset, ChemicalDissolutionChamberRecipeHandler.yOffset); API.setGuiOffset(GuiChemicalWasher.class, ChemicalWasherRecipeHandler.xOffset, ChemicalWasherRecipeHandler.yOffset); API.setGuiOffset(GuiChemicalCrystallizer.class, ChemicalCrystallizerRecipeHandler.xOffset, ChemicalCrystallizerRecipeHandler.yOffset); diff --git a/src/main/java/mekanism/client/nei/SalinationControllerRecipeHandler.java b/src/main/java/mekanism/client/nei/SolarEvaporationRecipeHandler.java similarity index 95% rename from src/main/java/mekanism/client/nei/SalinationControllerRecipeHandler.java rename to src/main/java/mekanism/client/nei/SolarEvaporationRecipeHandler.java index 7bac1c031..7144aa3b3 100644 --- a/src/main/java/mekanism/client/nei/SalinationControllerRecipeHandler.java +++ b/src/main/java/mekanism/client/nei/SolarEvaporationRecipeHandler.java @@ -27,7 +27,7 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import static codechicken.lib.gui.GuiDraw.changeTexture; import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; -public class SalinationControllerRecipeHandler extends BaseRecipeHandler +public class SolarEvaporationRecipeHandler extends BaseRecipeHandler { private int ticksPassed; @@ -47,19 +47,19 @@ public class SalinationControllerRecipeHandler extends BaseRecipeHandler @Override public String getRecipeName() { - return MekanismUtils.localize("tile.BasicBlock.SalinationController.name"); + return MekanismUtils.localize("tile.BasicBlock.SolarEvaporationController.name"); } @Override public String getOverlayIdentifier() { - return "salinationcontroller"; + return "solarevaporation"; } @Override public String getGuiTexture() { - return "mekanism:gui/nei/GuiSalinationController.png"; + return "mekanism:gui/nei/GuiSolarEvaporationController.png"; } @Override @@ -70,7 +70,7 @@ public class SalinationControllerRecipeHandler extends BaseRecipeHandler public String getRecipeId() { - return "mekanism.salinationcontroller"; + return "mekanism.solarevaporation"; } public Set> getRecipes() diff --git a/src/main/java/mekanism/client/render/tileentity/RenderSalinationController.java b/src/main/java/mekanism/client/render/tileentity/RenderSalinationController.java index fe3346b34..6cb3c2101 100644 --- a/src/main/java/mekanism/client/render/tileentity/RenderSalinationController.java +++ b/src/main/java/mekanism/client/render/tileentity/RenderSalinationController.java @@ -34,7 +34,7 @@ public class RenderSalinationController extends TileEntitySpecialRenderer public void renderAModelAt(TileEntitySolarEvaporationController tileEntity, double x, double y, double z, float partialTick) { - if(tileEntity.structured && tileEntity.waterTank.getFluid() != null) + if(tileEntity.structured && tileEntity.inputTank.getFluid() != null) { SalinationRenderData data = new SalinationRenderData(); @@ -43,7 +43,7 @@ public class RenderSalinationController extends TileEntitySpecialRenderer bindTexture(MekanismRenderer.getBlocksTexture()); - if(data.height >= 1 && tileEntity.waterTank.getCapacity() > 0) + if(data.height >= 1 && tileEntity.inputTank.getCapacity() > 0) { Coord4D renderLoc = tileEntity.getRenderLocation(); @@ -51,10 +51,10 @@ public class RenderSalinationController extends TileEntitySpecialRenderer GL11.glTranslated(getX(renderLoc.xCoord), getY(renderLoc.yCoord), getZ(renderLoc.zCoord)); - MekanismRenderer.glowOn(tileEntity.waterTank.getFluid().getFluid().getLuminosity()); + MekanismRenderer.glowOn(tileEntity.inputTank.getFluid().getFluid().getLuminosity()); - DisplayInteger[] displayList = getListAndRender(data, tileEntity.waterTank.getFluid().getFluid()); - displayList[(int)(((float)tileEntity.waterTank.getFluidAmount()/tileEntity.waterTank.getCapacity())*((float)getStages(data.height)-1))].render(); + DisplayInteger[] displayList = getListAndRender(data, tileEntity.inputTank.getFluid().getFluid()); + displayList[(int)(((float)tileEntity.inputTank.getFluidAmount()/tileEntity.inputTank.getCapacity())*((float)getStages(data.height)-1))].render(); MekanismRenderer.glowOff(); diff --git a/src/main/java/mekanism/common/CommonProxy.java b/src/main/java/mekanism/common/CommonProxy.java index a21778202..8a6206fe4 100644 --- a/src/main/java/mekanism/common/CommonProxy.java +++ b/src/main/java/mekanism/common/CommonProxy.java @@ -269,7 +269,6 @@ public class CommonProxy usage.pressurizedReactionBaseUsage = Mekanism.configuration.get("usage", "PressurizedReactionBaseUsage", 5D).getDouble(5D); usage.fluidicPlenisherUsage = Mekanism.configuration.get("usage", "FluidicPlenisherUsage", 100D).getDouble(100D); usage.laserUsage = Mekanism.configuration.get("usage", "LaserUsage", 5000D).getDouble(5000D); - usage.salinationPlantWaterUsage = Mekanism.configuration.get("usage", "SalinationPlantSpeed", 40.0, "Millibuckets of water turned into brine by the plant per tick", 1.0, 9000.0).getDouble(); usage.gasCentrifugeUsage = Mekanism.configuration.get("usage", "GasCentrifugeUsage", 100D).getDouble(100D); usage.heavyWaterElectrolysisUsage = Mekanism.configuration.get("usage", "HeavyWaterElectrolysisUsage", 800D).getDouble(800D); diff --git a/src/main/java/mekanism/common/Mekanism.java b/src/main/java/mekanism/common/Mekanism.java index b5094b671..93745ceaa 100644 --- a/src/main/java/mekanism/common/Mekanism.java +++ b/src/main/java/mekanism/common/Mekanism.java @@ -725,6 +725,10 @@ public class Mekanism RecipeHandler.addElectrolyticSeparatorRecipe(FluidRegistry.getFluidStack("brine", 10), 2 * general.FROM_H2, new GasStack(GasRegistry.getGas("sodium"), 1), new GasStack(GasRegistry.getGas("chlorine"), 1)); RecipeHandler.addElectrolyticSeparatorRecipe(FluidRegistry.getFluidStack("heavywater", 2), usage.heavyWaterElectrolysisUsage, new GasStack(GasRegistry.getGas("deuterium"), 2), new GasStack(GasRegistry.getGas("oxygen"), 1)); + //Solar Evaporation Plant Recipes + RecipeHandler.addSolarEvaporationRecipe(FluidRegistry.getFluidStack("water", 40), FluidRegistry.getFluidStack("brine", 1)); + RecipeHandler.addSolarEvaporationRecipe(FluidRegistry.getFluidStack("brine", 10), FluidRegistry.getFluidStack("lithium", 1)); + //T4 Processing Recipes for(Gas gas : GasRegistry.getRegisteredGasses()) { diff --git a/src/main/java/mekanism/common/network/PacketConfigSync.java b/src/main/java/mekanism/common/network/PacketConfigSync.java index 0df663666..fee7f917d 100644 --- a/src/main/java/mekanism/common/network/PacketConfigSync.java +++ b/src/main/java/mekanism/common/network/PacketConfigSync.java @@ -72,7 +72,6 @@ public class PacketConfigSync implements IMessageHandler recipes = Recipe.SOLAR_EVAPORATION_PLANT.get(); + + SolarEvaporationRecipe recipe = recipes.get(input); + return recipe == null ? null : recipe.copy(); + } + + return null; + } public static PressurizedRecipe getPRCRecipe(PressurizedInput input) { @@ -519,7 +537,8 @@ public final class RecipeHandler CHEMICAL_CRYSTALLIZER(new HashMap()), PRESSURIZED_REACTION_CHAMBER(new HashMap()), AMBIENT_ACCUMULATOR(new HashMap()), - GAS_CENTRIFUGE(new HashMap()); + GAS_CENTRIFUGE(new HashMap()), + SOLAR_EVAPORATION_PLANT(new HashMap()); private HashMap recipes; diff --git a/src/main/java/mekanism/common/recipe/machines/GasCentrifugeRecipe.java b/src/main/java/mekanism/common/recipe/machines/GasCentrifugeRecipe.java index 7c7666a83..f56525d71 100644 --- a/src/main/java/mekanism/common/recipe/machines/GasCentrifugeRecipe.java +++ b/src/main/java/mekanism/common/recipe/machines/GasCentrifugeRecipe.java @@ -35,5 +35,4 @@ public class GasCentrifugeRecipe extends MachineRecipe +{ + public SolarEvaporationRecipe(FluidStack input, FluidStack output) + { + super(new FluidInput(input), new FluidOutput(output)); + } + + public SolarEvaporationRecipe(FluidInput input, FluidOutput output) + { + super(input, output); + } + + @Override + public SolarEvaporationRecipe copy() + { + return new SolarEvaporationRecipe(getInput(), getOutput()); + } + + public boolean canOperate(FluidTank inputTank, FluidTank outputTank) + { + return getInput().useFluid(inputTank, false, 1) && getOutput().applyOutputs(outputTank, false); + } + + public void operate(FluidTank inputTank, FluidTank outputTank) + { + if(getInput().useFluid(inputTank, true, 1)) + { + getOutput().applyOutputs(outputTank, true); + } + } +} diff --git a/src/main/java/mekanism/common/recipe/outputs/FluidOutput.java b/src/main/java/mekanism/common/recipe/outputs/FluidOutput.java new file mode 100644 index 000000000..07671657d --- /dev/null +++ b/src/main/java/mekanism/common/recipe/outputs/FluidOutput.java @@ -0,0 +1,32 @@ +package mekanism.common.recipe.outputs; + +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; + +public class FluidOutput extends MachineOutput +{ + public FluidStack output; + + public FluidOutput(FluidStack stack) + { + output = stack; + } + + @Override + public FluidOutput copy() + { + return new FluidOutput(output.copy()); + } + + public boolean applyOutputs(FluidTank fluidTank, boolean doEmit) + { + if(fluidTank.fill(output, false) > 0) + { + fluidTank.fill(output, doEmit); + + return true; + } + + return false; + } +} diff --git a/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationController.java b/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationController.java index be3b45e47..e1bd8712b 100644 --- a/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationController.java +++ b/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationController.java @@ -14,6 +14,10 @@ import mekanism.common.Mekanism; import mekanism.common.base.IActiveState; import mekanism.common.content.tank.TankUpdateProtocol; import mekanism.common.network.PacketTileEntity.TileEntityMessage; +import mekanism.common.recipe.RecipeHandler; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.FluidInput; +import mekanism.common.recipe.machines.SolarEvaporationRecipe; import mekanism.common.util.MekanismUtils; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; @@ -21,6 +25,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; @@ -30,20 +35,20 @@ import cpw.mods.fml.relauncher.SideOnly; public class TileEntitySolarEvaporationController extends TileEntitySolarEvaporationBlock implements IActiveState { - public static final int MAX_BRINE = 10000; + public static final int MAX_OUTPUT = 10000; public static final int MAX_SOLARS = 4; public static final int WARMUP = 10000; - public FluidTank waterTank = new FluidTank(0); - public FluidTank brineTank = new FluidTank(MAX_BRINE); + public FluidTank inputTank = new FluidTank(0); + public FluidTank outputTank = new FluidTank(MAX_OUTPUT); public Set tankParts = new HashSet(); public ISalinationSolar[] solars = new ISalinationSolar[4]; public boolean temperatureSet = false; - public double partialWater = 0; - public double partialBrine = 0; + public double partialInput = 0; + public double partialOutput = 0; public float biomeTemp = 0; public float temperature = 0; @@ -88,38 +93,45 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora if(canOperate()) { - int brineNeeded = brineTank.getCapacity()-brineTank.getFluidAmount(); - int waterStored = waterTank.getFluidAmount(); + SolarEvaporationRecipe recipe = getRecipe(); - partialWater += Math.min(waterTank.getFluidAmount(), getTemperature()*usage.salinationPlantWaterUsage); + int outputNeeded = outputTank.getCapacity()-outputTank.getFluidAmount(); + int inputStored = inputTank.getFluidAmount(); - if(partialWater >= 1) + partialInput += Math.min(inputTank.getFluidAmount(), getTemperature()*recipe.recipeInput.ingredient.amount); + + if(partialInput >= 1) { - int waterInt = (int)Math.floor(partialWater); - waterTank.drain(waterInt, true); - partialWater %= 1; - partialBrine += ((double)waterInt)/usage.salinationPlantWaterUsage; + int inputInt = (int)Math.floor(partialInput); + inputTank.drain(inputInt, true); + partialInput %= 1; + partialOutput += ((double)inputInt)/recipe.recipeInput.ingredient.amount; } - if(partialBrine >= 1) + if(partialOutput >= 1) { - int brineInt = (int)Math.floor(partialBrine); - brineTank.fill(FluidRegistry.getFluidStack("brine", brineInt), true); - partialBrine %= 1; + int outputInt = (int)Math.floor(partialOutput); + outputTank.fill(new FluidStack(recipe.recipeOutput.output.getFluid(), outputInt), true); + partialOutput %= 1; } } if(structured) { - if(Math.abs((float)waterTank.getFluidAmount()/waterTank.getCapacity()-prevScale) > 0.01) + if(Math.abs((float)inputTank.getFluidAmount()/inputTank.getCapacity()-prevScale) > 0.01) { Mekanism.packetHandler.sendToReceivers(new TileEntityMessage(Coord4D.get(this), getNetworkedData(new ArrayList())), new Range4D(Coord4D.get(this))); - prevScale = (float)waterTank.getFluidAmount()/waterTank.getCapacity(); + prevScale = (float)inputTank.getFluidAmount()/inputTank.getCapacity(); } } } } + public SolarEvaporationRecipe getRecipe() + { + return RecipeHandler.getSolarEvaporationRecipe(new FluidInput(inputTank.getFluid())); + } + @Override public void onChunkUnload() { @@ -136,6 +148,16 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora refresh(); } + public boolean hasRecipe(Fluid fluid) + { + if(fluid == null) + { + return false; + } + + return Recipe.SOLAR_EVAPORATION_PLANT.containsRecipe(fluid); + } + protected void refresh() { if(!worldObj.isRemote) @@ -154,11 +176,11 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora if(structured) { - waterTank.setCapacity(getMaxWater()); + inputTank.setCapacity(getMaxWater()); - if(waterTank.getFluid() != null) + if(inputTank.getFluid() != null) { - waterTank.getFluid().amount = Math.min(waterTank.getFluid().amount, getMaxWater()); + inputTank.getFluid().amount = Math.min(inputTank.getFluid().amount, getMaxWater()); } temperature = Math.min(getMaxTemperature(), getTemperature()); @@ -172,12 +194,12 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora public boolean canOperate() { - if(!structured || height < 3 || height > 18 || waterTank.getFluid() == null || getTempMultiplier() == 0) + if(!structured || height < 3 || height > 18 || inputTank.getFluid() == null || getTempMultiplier() == 0) { return false; } - if(!waterTank.getFluid().containsFluid(FluidRegistry.getFluidStack("water", 1)) || brineTank.getCapacity()-brineTank.getFluidAmount() == 0) + if(getRecipe() == null) { return false; } @@ -189,17 +211,17 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora { if(inventory[2] != null) { - if(brineTank.getFluid() != null && brineTank.getFluid().amount >= FluidContainerRegistry.BUCKET_VOLUME) + if(outputTank.getFluid() != null && outputTank.getFluid().amount >= FluidContainerRegistry.BUCKET_VOLUME) { if(FluidContainerRegistry.isEmptyContainer(inventory[2])) { - ItemStack tempStack = FluidContainerRegistry.fillFluidContainer(brineTank.getFluid(), inventory[2]); + ItemStack tempStack = FluidContainerRegistry.fillFluidContainer(outputTank.getFluid(), inventory[2]); if(tempStack != null) { if(inventory[3] == null) { - brineTank.drain(FluidContainerRegistry.BUCKET_VOLUME, true); + outputTank.drain(FluidContainerRegistry.BUCKET_VOLUME, true); inventory[3] = tempStack; inventory[2].stackSize--; @@ -213,7 +235,7 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora } else if(tempStack.isItemEqual(inventory[3]) && tempStack.getMaxStackSize() > inventory[3].stackSize) { - brineTank.drain(FluidContainerRegistry.BUCKET_VOLUME, true); + outputTank.drain(FluidContainerRegistry.BUCKET_VOLUME, true); inventory[3].stackSize++; inventory[2].stackSize--; @@ -236,9 +258,9 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora { FluidStack itemFluid = FluidContainerRegistry.getFluidForFilledItem(inventory[0]); - if((waterTank.getFluid() == null && itemFluid.amount <= getMaxWater()) || waterTank.getFluid().amount+itemFluid.amount <= getMaxWater()) + if((inputTank.getFluid() == null && itemFluid.amount <= getMaxWater()) || inputTank.getFluid().amount+itemFluid.amount <= getMaxWater()) { - if(itemFluid.getFluid() != FluidRegistry.WATER || (waterTank.getFluid() != null && !waterTank.getFluid().isFluidEqual(itemFluid))) + if(itemFluid.getFluid() != FluidRegistry.WATER || (inputTank.getFluid() != null && !inputTank.getFluid().isFluidEqual(itemFluid))) { return; } @@ -277,7 +299,7 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora if(filled) { - waterTank.fill(itemFluid, true); + inputTank.fill(itemFluid, true); } } } @@ -597,14 +619,14 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora } } - public int getScaledWaterLevel(int i) + public int getScaledInputLevel(int i) { - return getMaxWater() > 0 ? (waterTank.getFluid() != null ? waterTank.getFluid().amount*i / getMaxWater() : 0) : 0; + return getMaxWater() > 0 ? (inputTank.getFluid() != null ? inputTank.getFluid().amount*i / getMaxWater() : 0) : 0; } - public int getScaledBrineLevel(int i) + public int getScaledOutputLevel(int i) { - return brineTank.getFluid() != null ? brineTank.getFluid().amount*i / MAX_BRINE : 0; + return outputTank.getFluid() != null ? outputTank.getFluid().amount*i / MAX_OUTPUT : 0; } public int getScaledTempLevel(int i) @@ -636,18 +658,18 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora if(dataStream.readBoolean()) { - waterTank.setFluid(new FluidStack(dataStream.readInt(), dataStream.readInt())); + inputTank.setFluid(new FluidStack(dataStream.readInt(), dataStream.readInt())); } else { - waterTank.setFluid(null); + inputTank.setFluid(null); } if(dataStream.readBoolean()) { - brineTank.setFluid(new FluidStack(dataStream.readInt(), dataStream.readInt())); + outputTank.setFluid(new FluidStack(dataStream.readInt(), dataStream.readInt())); } else { - brineTank.setFluid(null); + outputTank.setFluid(null); } boolean prev = structured; @@ -662,7 +684,7 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora if(structured != prev) { - waterTank.setCapacity(getMaxWater()); + inputTank.setCapacity(getMaxWater()); worldObj.func_147479_m(xCoord, yCoord, zCoord); } @@ -674,21 +696,21 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora { super.getNetworkedData(data); - if(waterTank.getFluid() != null) + if(inputTank.getFluid() != null) { data.add(true); - data.add(waterTank.getFluid().fluidID); - data.add(waterTank.getFluid().amount); + data.add(inputTank.getFluid().fluidID); + data.add(inputTank.getFluid().amount); } else { data.add(false); } - if(brineTank.getFluid() != null) + if(outputTank.getFluid() != null) { data.add(true); - data.add(brineTank.getFluid().fluidID); - data.add(brineTank.getFluid().amount); + data.add(outputTank.getFluid().fluidID); + data.add(outputTank.getFluid().amount); } else { data.add(false); @@ -710,13 +732,13 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora { super.readFromNBT(nbtTags); - waterTank.readFromNBT(nbtTags.getCompoundTag("waterTank")); - brineTank.readFromNBT(nbtTags.getCompoundTag("brineTank")); + inputTank.readFromNBT(nbtTags.getCompoundTag("waterTank")); + outputTank.readFromNBT(nbtTags.getCompoundTag("brineTank")); temperature = nbtTags.getFloat("temperature"); - partialWater = nbtTags.getDouble("partialWater"); - partialBrine = nbtTags.getDouble("partialBrine"); + partialInput = nbtTags.getDouble("partialWater"); + partialOutput = nbtTags.getDouble("partialBrine"); } @Override @@ -724,13 +746,13 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora { super.writeToNBT(nbtTags); - nbtTags.setTag("waterTank", waterTank.writeToNBT(new NBTTagCompound())); - nbtTags.setTag("brineTank", brineTank.writeToNBT(new NBTTagCompound())); + nbtTags.setTag("waterTank", inputTank.writeToNBT(new NBTTagCompound())); + nbtTags.setTag("brineTank", outputTank.writeToNBT(new NBTTagCompound())); nbtTags.setFloat("temperature", temperature); - nbtTags.setDouble("partialWater", partialWater); - nbtTags.setDouble("partialBrine", partialBrine); + nbtTags.setDouble("partialWater", partialInput); + nbtTags.setDouble("partialBrine", partialOutput); } @Override diff --git a/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationValve.java b/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationValve.java index 648b2615a..77f5538e9 100644 --- a/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationValve.java +++ b/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationValve.java @@ -2,10 +2,8 @@ package mekanism.common.tile; import mekanism.api.Coord4D; import mekanism.common.util.PipeUtils; - import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; @@ -40,15 +38,15 @@ public class TileEntitySolarEvaporationValve extends TileEntitySolarEvaporationB @Override public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { - return master == null ? 0 : master.waterTank.fill(resource, doFill); + return master == null ? 0 : master.inputTank.fill(resource, doFill); } @Override public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) { - if(master != null && resource.getFluid() == FluidRegistry.getFluid("brine")) + if(master != null && (resource == null || resource.isFluidEqual(master.outputTank.getFluid()))) { - return master.brineTank.drain(resource.amount, doDrain); + return master.outputTank.drain(resource.amount, doDrain); } return null; @@ -59,7 +57,7 @@ public class TileEntitySolarEvaporationValve extends TileEntitySolarEvaporationB { if(master != null) { - return master.brineTank.drain(maxDrain, doDrain); + return master.outputTank.drain(maxDrain, doDrain); } return null; @@ -68,13 +66,13 @@ public class TileEntitySolarEvaporationValve extends TileEntitySolarEvaporationB @Override public boolean canFill(ForgeDirection from, Fluid fluid) { - return master != null && fluid == FluidRegistry.getFluid("water"); + return master != null && master.hasRecipe(fluid); } @Override public boolean canDrain(ForgeDirection from, Fluid fluid) { - return master != null && fluid == FluidRegistry.getFluid("brine"); + return master != null && master.outputTank.getFluidAmount() > 0; } @Override @@ -85,6 +83,6 @@ public class TileEntitySolarEvaporationValve extends TileEntitySolarEvaporationB return PipeUtils.EMPTY; } - return new FluidTankInfo[] {new FluidTankInfo(master.waterTank), new FluidTankInfo(master.brineTank)}; + return new FluidTankInfo[] {new FluidTankInfo(master.inputTank), new FluidTankInfo(master.outputTank)}; } } diff --git a/src/main/resources/assets/mekanism/gui/GuiSalinationController.png b/src/main/resources/assets/mekanism/gui/GuiSolarEvaporationController.png similarity index 100% rename from src/main/resources/assets/mekanism/gui/GuiSalinationController.png rename to src/main/resources/assets/mekanism/gui/GuiSolarEvaporationController.png diff --git a/src/main/resources/assets/mekanism/gui/nei/GuiSalinationController.png b/src/main/resources/assets/mekanism/gui/nei/GuiSalinationController.png deleted file mode 100644 index ad9ddd4638ebe23ef06e241f660b38c5a7bdaadd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4410 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 diff --git a/src/main/resources/assets/mekanism/gui/nei/GuiSolarEvaporationController.png b/src/main/resources/assets/mekanism/gui/nei/GuiSolarEvaporationController.png new file mode 100644 index 0000000000000000000000000000000000000000..6f129a64fce15d08cb515de3e106b86bda8501aa GIT binary patch literal 4359 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 Se9+