diff --git a/src/main/java/mekanism/api/gas/GasStack.java b/src/main/java/mekanism/api/gas/GasStack.java index ec1549163..05e5ae689 100644 --- a/src/main/java/mekanism/api/gas/GasStack.java +++ b/src/main/java/mekanism/api/gas/GasStack.java @@ -45,6 +45,13 @@ public class GasStack { return type; } + + public GasStack withAmount(int newAmount) + { + amount = newAmount; + + return this; + } /** * Writes this GasStack to a defined tag compound. diff --git a/src/main/java/mekanism/client/gui/GuiChemicalWasher.java b/src/main/java/mekanism/client/gui/GuiChemicalWasher.java index 9e2731031..30f650404 100644 --- a/src/main/java/mekanism/client/gui/GuiChemicalWasher.java +++ b/src/main/java/mekanism/client/gui/GuiChemicalWasher.java @@ -21,7 +21,6 @@ import mekanism.common.network.PacketTileEntity.TileEntityMessage; import mekanism.common.tile.TileEntityChemicalWasher; 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; @@ -40,12 +39,13 @@ public class GuiChemicalWasher extends GuiMekanism tileEntity = tentity; guiElements.add(new GuiRedstoneControl(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalWasher.png"))); + guiElements.add(new GuiUpgradeTab(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalWasher.png"))); guiElements.add(new GuiBucketIO(this, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalWasher.png"))); guiElements.add(new GuiEnergyInfo(new IInfoHandler() { @Override public List getInfo() { - String multiplier = MekanismUtils.getEnergyDisplay(tileEntity.ENERGY_USAGE); + String multiplier = MekanismUtils.getEnergyDisplay(tileEntity.energyUsage); 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/GuiElectricPump.java b/src/main/java/mekanism/client/gui/GuiElectricPump.java index dcc573ed8..feb84df06 100644 --- a/src/main/java/mekanism/client/gui/GuiElectricPump.java +++ b/src/main/java/mekanism/client/gui/GuiElectricPump.java @@ -8,7 +8,6 @@ import mekanism.common.tile.TileEntityElectricPump; import mekanism.common.util.LangUtils; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; - import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.FluidTank; @@ -41,7 +40,7 @@ public class GuiElectricPump extends GuiMekanism } }, GuiGauge.Type.STANDARD, this, guiLocation, 6, 13)); guiElements.add(new GuiRedstoneControl(this, tileEntity, guiLocation)); - + guiElements.add(new GuiUpgradeTab(this, tileEntity, guiLocation)); } @Override diff --git a/src/main/java/mekanism/client/nei/ElectrolyticSeparatorRecipeHandler.java b/src/main/java/mekanism/client/nei/ElectrolyticSeparatorRecipeHandler.java index 19ad4813d..9185bc26a 100644 --- a/src/main/java/mekanism/client/nei/ElectrolyticSeparatorRecipeHandler.java +++ b/src/main/java/mekanism/client/nei/ElectrolyticSeparatorRecipeHandler.java @@ -1,6 +1,10 @@ package mekanism.client.nei; -import java.awt.*; +import static codechicken.lib.gui.GuiDraw.changeTexture; +import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; + +import java.awt.Point; +import java.awt.Rectangle; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -22,11 +26,11 @@ import mekanism.client.gui.GuiSlot.SlotOverlay; import mekanism.client.gui.GuiSlot.SlotType; import mekanism.common.ObfuscatedNames; import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.ChemicalPairInput; +import mekanism.common.recipe.inputs.FluidInput; +import mekanism.common.recipe.machines.SeparatorRecipe; import mekanism.common.util.LangUtils; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; - import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraftforge.fluids.FluidStack; @@ -38,9 +42,6 @@ import codechicken.nei.PositionedStack; import codechicken.nei.recipe.GuiRecipe; import codechicken.nei.recipe.TemplateRecipeHandler; -import static codechicken.lib.gui.GuiDraw.changeTexture; -import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; - public class ElectrolyticSeparatorRecipeHandler extends BaseRecipeHandler { private int ticksPassed; @@ -110,7 +111,7 @@ public class ElectrolyticSeparatorRecipeHandler extends BaseRecipeHandler return "mekanism.electrolyticseparator"; } - public Set> getRecipes() + public Set> getRecipes() { return Recipe.ELECTROLYTIC_SEPARATOR.get().entrySet(); } @@ -135,21 +136,21 @@ public class ElectrolyticSeparatorRecipeHandler extends BaseRecipeHandler if(recipe.fluidInput != null) { - fluidInput.setDummyType(recipe.fluidInput.getFluid()); + fluidInput.setDummyType(recipe.fluidInput.ingredient.getFluid()); fluidInput.renderScale(0, 0, -xOffset, -yOffset); } - if(recipe.outputPair.leftGas != null) + if(recipe.outputPair.recipeOutput.leftGas != null) { - displayGauge(28, 59-xOffset, 19-yOffset, 176, 68, 28, null, recipe.outputPair.leftGas); - leftGas.setDummyType(recipe.outputPair.leftGas.getGas()); + displayGauge(28, 59-xOffset, 19-yOffset, 176, 68, 28, null, recipe.outputPair.recipeOutput.leftGas); + leftGas.setDummyType(recipe.outputPair.recipeOutput.leftGas.getGas()); leftGas.renderScale(0, 0, -xOffset, -yOffset); } - if(recipe.outputPair.rightGas != null) + if(recipe.outputPair.recipeOutput.rightGas != null) { - displayGauge(28, 101-xOffset, 19-yOffset, 176, 68, 28, null, recipe.outputPair.rightGas); - rightGas.setDummyType(recipe.outputPair.rightGas.getGas()); + displayGauge(28, 101-xOffset, 19-yOffset, 176, 68, 28, null, recipe.outputPair.recipeOutput.rightGas); + rightGas.setDummyType(recipe.outputPair.recipeOutput.rightGas.getGas()); rightGas.renderScale(0, 0, -xOffset, -yOffset); } } @@ -180,9 +181,9 @@ public class ElectrolyticSeparatorRecipeHandler extends BaseRecipeHandler } else if(outputId.equals("gas") && results.length == 1 && results[0] instanceof GasStack) { - for(Map.Entry irecipe : getRecipes()) + for(Map.Entry irecipe : getRecipes()) { - if(irecipe.getValue().containsType((GasStack)results[0])) + if(irecipe.getValue().recipeOutput.containsType((GasStack)results[0])) { arecipes.add(new CachedIORecipe(irecipe)); } @@ -198,7 +199,7 @@ public class ElectrolyticSeparatorRecipeHandler extends BaseRecipeHandler { if(inputId.equals("fluid") && ingredients.length == 1 && ingredients[0] instanceof FluidStack) { - for(Map.Entry irecipe : getRecipes()) + for(Map.Entry irecipe : getRecipes()) { if(irecipe.getKey().isFluidEqual((FluidStack)ingredients[0])) { @@ -221,15 +222,15 @@ public class ElectrolyticSeparatorRecipeHandler extends BaseRecipeHandler if(xAxis >= 6 && xAxis <= 22 && yAxis >= 11+7 && yAxis <= 69+7) { - currenttip.add(LangUtils.localizeFluidStack(((CachedIORecipe)arecipes.get(recipe)).fluidInput)); + currenttip.add(LangUtils.localizeFluidStack(((CachedIORecipe)arecipes.get(recipe)).fluidInput.ingredient)); } else if(xAxis >= 59 && xAxis <= 75 && yAxis >= 19+7 && yAxis <= 47+7) { - currenttip.add(((CachedIORecipe)arecipes.get(recipe)).outputPair.leftGas.getGas().getLocalizedName()); + currenttip.add(((CachedIORecipe)arecipes.get(recipe)).outputPair.recipeOutput.leftGas.getGas().getLocalizedName()); } else if(xAxis >= 101 && xAxis <= 117 && yAxis >= 19+7 && yAxis <= 47+7) { - currenttip.add(((CachedIORecipe)arecipes.get(recipe)).outputPair.rightGas.getGas().getLocalizedName()); + currenttip.add(((CachedIORecipe)arecipes.get(recipe)).outputPair.recipeOutput.rightGas.getGas().getLocalizedName()); } return super.handleTooltip(gui, currenttip, recipe); @@ -248,15 +249,15 @@ public class ElectrolyticSeparatorRecipeHandler extends BaseRecipeHandler if(xAxis >= 6 && xAxis <= 22 && yAxis >= 11+7 && yAxis <= 69+7) { - fluid = ((CachedIORecipe)arecipes.get(recipe)).fluidInput; + fluid = ((CachedIORecipe)arecipes.get(recipe)).fluidInput.ingredient; } else if(xAxis >= 59 && xAxis <= 75 && yAxis >= 19+7 && yAxis <= 47+7) { - gas = ((CachedIORecipe)arecipes.get(recipe)).outputPair.leftGas; + gas = ((CachedIORecipe)arecipes.get(recipe)).outputPair.recipeOutput.leftGas; } else if(xAxis >= 101 && xAxis <= 117 && yAxis >= 19+7 && yAxis <= 47+7) { - gas = ((CachedIORecipe)arecipes.get(recipe)).outputPair.rightGas; + gas = ((CachedIORecipe)arecipes.get(recipe)).outputPair.recipeOutput.rightGas; } if(gas != null) @@ -310,15 +311,15 @@ public class ElectrolyticSeparatorRecipeHandler extends BaseRecipeHandler if(xAxis >= 6 && xAxis <= 22 && yAxis >= 11+7 && yAxis <= 69+7) { - fluid = ((CachedIORecipe)arecipes.get(recipe)).fluidInput; + fluid = ((CachedIORecipe)arecipes.get(recipe)).fluidInput.ingredient; } else if(xAxis >= 59 && xAxis <= 75 && yAxis >= 19+7 && yAxis <= 47+7) { - gas = ((CachedIORecipe)arecipes.get(recipe)).outputPair.leftGas; + gas = ((CachedIORecipe)arecipes.get(recipe)).outputPair.recipeOutput.leftGas; } else if(xAxis >= 101 && xAxis <= 117 && yAxis >= 19+7 && yAxis <= 47+7) { - gas = ((CachedIORecipe)arecipes.get(recipe)).outputPair.rightGas; + gas = ((CachedIORecipe)arecipes.get(recipe)).outputPair.recipeOutput.rightGas; } if(gas != null) @@ -367,8 +368,8 @@ public class ElectrolyticSeparatorRecipeHandler extends BaseRecipeHandler public class CachedIORecipe extends TemplateRecipeHandler.CachedRecipe { - public FluidStack fluidInput; - public ChemicalPairInput outputPair; + public FluidInput fluidInput; + public SeparatorRecipe outputPair; @Override public PositionedStack getResult() @@ -376,7 +377,7 @@ public class ElectrolyticSeparatorRecipeHandler extends BaseRecipeHandler return null; } - public CachedIORecipe(FluidStack input, ChemicalPairInput pair) + public CachedIORecipe(FluidInput input, SeparatorRecipe pair) { fluidInput = input; outputPair = pair; @@ -384,7 +385,7 @@ public class ElectrolyticSeparatorRecipeHandler extends BaseRecipeHandler public CachedIORecipe(Map.Entry recipe) { - this((FluidStack)recipe.getKey(), (ChemicalPairInput)recipe.getValue()); + this((FluidInput)recipe.getKey(), (SeparatorRecipe)recipe.getValue()); } } } diff --git a/src/main/java/mekanism/client/render/MekanismRenderer.java b/src/main/java/mekanism/client/render/MekanismRenderer.java index 859026932..80a593886 100644 --- a/src/main/java/mekanism/client/render/MekanismRenderer.java +++ b/src/main/java/mekanism/client/render/MekanismRenderer.java @@ -110,11 +110,13 @@ public class MekanismRenderer } FluidRegistry.getFluid("brine").setIcons(event.map.registerIcon("mekanism:LiquidBrine")); + FluidRegistry.getFluid("heavywater").setIcons(event.map.registerIcon("mekanism:LiquidHeavyWater")); if(RenderPartTransmitter.getInstance() != null) { RenderPartTransmitter.getInstance().resetDisplayInts(); } + RenderDynamicTank.resetDisplayInts(); RenderSalinationController.resetDisplayInts(); RenderPortableTank.resetDisplayInts(); diff --git a/src/main/java/mekanism/common/HeatNetwork.java b/src/main/java/mekanism/common/HeatNetwork.java index 234f9eb76..dc07ce67c 100644 --- a/src/main/java/mekanism/common/HeatNetwork.java +++ b/src/main/java/mekanism/common/HeatNetwork.java @@ -136,6 +136,7 @@ public class HeatNetwork extends DynamicNetwork newHeatLost += d[1]; } } + for(IGridTransmitter transmitter : transmitters) { if(transmitter instanceof IHeatTransfer) @@ -145,6 +146,7 @@ public class HeatNetwork extends DynamicNetwork } } } + heatLost = newHeatLost; heatTransferred = newHeatTransferred; meanTemp = newSumTemp / transmitters.size(); diff --git a/src/main/java/mekanism/common/Mekanism.java b/src/main/java/mekanism/common/Mekanism.java index c9c8de4c2..90bfe42a7 100644 --- a/src/main/java/mekanism/common/Mekanism.java +++ b/src/main/java/mekanism/common/Mekanism.java @@ -32,7 +32,6 @@ import mekanism.common.Tier.EnergyCubeTier; import mekanism.common.Tier.FactoryTier; import mekanism.common.base.IFactory.RecipeType; import mekanism.common.base.IModule; -import mekanism.common.content.boiler.BoilerCache; import mekanism.common.content.boiler.BoilerManager; import mekanism.common.content.boiler.SynchronizedBoilerData; import mekanism.common.content.matrix.MatrixCache; @@ -75,7 +74,6 @@ import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; import mekanism.common.voice.VoiceServerManager; import mekanism.common.world.GenHandler; - import net.minecraft.entity.EnumCreatureType; import net.minecraft.init.Blocks; import net.minecraft.init.Items; @@ -91,12 +89,20 @@ import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.event.world.ChunkDataEvent; import net.minecraftforge.event.world.ChunkEvent; +import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.RecipeSorter; import net.minecraftforge.oredict.RecipeSorter.Category; import net.minecraftforge.oredict.ShapelessOreRecipe; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import rebelkeithy.mods.metallurgy.api.IOreInfo; +import rebelkeithy.mods.metallurgy.api.MetallurgyAPI; +import codechicken.multipart.handler.MultipartProxy; import cpw.mods.fml.client.event.ConfigChangedEvent; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.IFuelHandler; @@ -114,12 +120,6 @@ import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; -import codechicken.multipart.handler.MultipartProxy; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import rebelkeithy.mods.metallurgy.api.IOreInfo; -import rebelkeithy.mods.metallurgy.api.MetallurgyAPI; - /** * Mekanism - a Minecraft mod * @author AidanBrady @@ -286,6 +286,9 @@ public class Mekanism CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.EnergyUpgrade), new Object[] { " G ", "ADA", " G ", Character.valueOf('G'), "blockGlass", Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('D'), "dustGold" })); + CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.FilterUpgrade), new Object[] { + " G ", "ADA", " G ", Character.valueOf('G'), "blockGlass", Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('D'), "dustTin" + })); CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.AtomicDisassembler.getUnchargedItem(), new Object[] { "AEA", "ACA", " O ", Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('E'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('C'), MekanismItems.AtomicAlloy, Character.valueOf('O'), "ingotRefinedObsidian" })); @@ -1038,6 +1041,8 @@ public class Mekanism GasRegistry.register(new Gas("fusionFuelDT")).registerFluid(); GasRegistry.register(new Gas("steam")).registerFluid(); + FluidRegistry.registerFluid(new Fluid("heavyWater")); + for(Resource resource : Resource.values()) { String name = resource.getName(); diff --git a/src/main/java/mekanism/common/MekanismItems.java b/src/main/java/mekanism/common/MekanismItems.java index 01b2bd201..b4669ebeb 100644 --- a/src/main/java/mekanism/common/MekanismItems.java +++ b/src/main/java/mekanism/common/MekanismItems.java @@ -50,6 +50,7 @@ public class MekanismItems public static final ItemEnergized EnergyTablet = (ItemEnergized)new ItemEnergized(1000000).setUnlocalizedName("EnergyTablet"); public static final Item SpeedUpgrade = new ItemUpgrade(Upgrade.SPEED).setUnlocalizedName("SpeedUpgrade"); public static final Item EnergyUpgrade = new ItemUpgrade(Upgrade.ENERGY).setUnlocalizedName("EnergyUpgrade"); + public static final Item FilterUpgrade = new ItemUpgrade(Upgrade.FILTER).setUnlocalizedName("FilterUpgrade"); public static final ItemRobit Robit = (ItemRobit)new ItemRobit().setUnlocalizedName("Robit"); public static final ItemAtomicDisassembler AtomicDisassembler = (ItemAtomicDisassembler)new ItemAtomicDisassembler().setUnlocalizedName("AtomicDisassembler"); public static final Item EnrichedIron = new ItemMekanism().setUnlocalizedName("EnrichedIron"); @@ -104,6 +105,7 @@ public class MekanismItems GameRegistry.registerItem(EnergyTablet, "EnergyTablet"); GameRegistry.registerItem(SpeedUpgrade, "SpeedUpgrade"); GameRegistry.registerItem(EnergyUpgrade, "EnergyUpgrade"); + GameRegistry.registerItem(FilterUpgrade, "HeavyWaterUpgrade"); GameRegistry.registerItem(Robit, "Robit"); GameRegistry.registerItem(AtomicDisassembler, "AtomicDisassembler"); GameRegistry.registerItem(EnrichedAlloy, "EnrichedAlloy"); diff --git a/src/main/java/mekanism/common/Upgrade.java b/src/main/java/mekanism/common/Upgrade.java index a900c652f..10abd55a6 100644 --- a/src/main/java/mekanism/common/Upgrade.java +++ b/src/main/java/mekanism/common/Upgrade.java @@ -19,7 +19,8 @@ import net.minecraftforge.common.util.Constants.NBT; public enum Upgrade { SPEED("speed", 8, EnumColor.RED), - ENERGY("energy", 8, EnumColor.BRIGHT_GREEN); + ENERGY("energy", 8, EnumColor.BRIGHT_GREEN), + FILTER("filter", 1, EnumColor.DARK_AQUA); private String name; private int maxStack; @@ -66,6 +67,8 @@ public enum Upgrade return new ItemStack(MekanismItems.SpeedUpgrade); case ENERGY: return new ItemStack(MekanismItems.EnergyUpgrade); + case FILTER: + return new ItemStack(MekanismItems.FilterUpgrade); } return null; diff --git a/src/main/java/mekanism/common/item/ItemBlockMachine.java b/src/main/java/mekanism/common/item/ItemBlockMachine.java index e4995aa1b..2f5ed6e70 100644 --- a/src/main/java/mekanism/common/item/ItemBlockMachine.java +++ b/src/main/java/mekanism/common/item/ItemBlockMachine.java @@ -521,7 +521,7 @@ public class ItemBlockMachine extends ItemBlock implements IEnergizedItem, ISpec return itemstack; } - FluidStack fluid = MekanismUtils.getFluid(world, coord.xCoord, coord.yCoord, coord.zCoord); + FluidStack fluid = MekanismUtils.getFluid(world, coord.xCoord, coord.yCoord, coord.zCoord, false); if(fluid != null && (getFluidStack(itemstack) == null || getFluidStack(itemstack).isFluidEqual(fluid))) { diff --git a/src/main/java/mekanism/common/recipe/inputs/FluidInput.java b/src/main/java/mekanism/common/recipe/inputs/FluidInput.java index 54ac66181..72c230bc3 100644 --- a/src/main/java/mekanism/common/recipe/inputs/FluidInput.java +++ b/src/main/java/mekanism/common/recipe/inputs/FluidInput.java @@ -24,13 +24,14 @@ public class FluidInput extends MachineInput return ingredient != null; } - public boolean useFluid(FluidTank fluidTank, boolean deplete) + public boolean useFluid(FluidTank fluidTank, boolean deplete, int scale) { if(fluidTank.getFluid().containsFluid(ingredient)) { - fluidTank.drain(ingredient.amount, deplete); + fluidTank.drain(ingredient.amount*scale, deplete); return true; } + return false; } diff --git a/src/main/java/mekanism/common/recipe/inputs/GasInput.java b/src/main/java/mekanism/common/recipe/inputs/GasInput.java index 984cec26c..ccf9a0ed4 100644 --- a/src/main/java/mekanism/common/recipe/inputs/GasInput.java +++ b/src/main/java/mekanism/common/recipe/inputs/GasInput.java @@ -24,13 +24,15 @@ public class GasInput extends MachineInput return ingredient != null; } - public boolean useGas(GasTank gasTank, boolean deplete) + public boolean useGas(GasTank gasTank, boolean deplete, int scale) { - if(gasTank.getGasType() == ingredient.getGas() && gasTank.getStored() >= ingredient.amount) + if(gasTank.getGasType() == ingredient.getGas() && gasTank.getStored() >= ingredient.amount*scale) { - gasTank.draw(ingredient.amount, deplete); + gasTank.draw(ingredient.amount*scale, deplete); + return true; } + return false; } @@ -47,6 +49,7 @@ public class GasInput extends MachineInput { return !other.isValid(); } + return other.ingredient.hashCode() == ingredient.hashCode(); } diff --git a/src/main/java/mekanism/common/recipe/machines/ChemicalInfuserRecipe.java b/src/main/java/mekanism/common/recipe/machines/ChemicalInfuserRecipe.java index fb89ab12d..25f93cf36 100644 --- a/src/main/java/mekanism/common/recipe/machines/ChemicalInfuserRecipe.java +++ b/src/main/java/mekanism/common/recipe/machines/ChemicalInfuserRecipe.java @@ -24,14 +24,14 @@ public class ChemicalInfuserRecipe extends MachineRecipe return new GasOutput(output.copy()); } - public boolean applyOutputs(GasTank gasTank, boolean doEmit) + public boolean applyOutputs(GasTank gasTank, boolean doEmit, int scale) { - if(gasTank.canReceive(output.getGas()) && gasTank.getNeeded() >= output.amount) + if(gasTank.canReceive(output.getGas()) && gasTank.getNeeded() >= output.amount*scale) { - gasTank.receive(output.copy(), doEmit); + gasTank.receive(output.copy().withAmount(output.amount*scale), doEmit); + return true; } + return false; } } diff --git a/src/main/java/mekanism/common/tile/TileEntityAmbientAccumulator.java b/src/main/java/mekanism/common/tile/TileEntityAmbientAccumulator.java index 796c51c3f..fdf60644a 100644 --- a/src/main/java/mekanism/common/tile/TileEntityAmbientAccumulator.java +++ b/src/main/java/mekanism/common/tile/TileEntityAmbientAccumulator.java @@ -43,9 +43,9 @@ public class TileEntityAmbientAccumulator extends TileEntityContainerBlock imple cachedRecipe = RecipeHandler.getDimensionGas(new IntegerInput(cachedDimensionId)); } - if(cachedRecipe != null && gasRand.nextDouble() < 0.05 && cachedRecipe.getOutput().applyOutputs(collectedGas, false)) + if(cachedRecipe != null && gasRand.nextDouble() < 0.05 && cachedRecipe.getOutput().applyOutputs(collectedGas, false, 1)) { - cachedRecipe.getOutput().applyOutputs(collectedGas, true); + cachedRecipe.getOutput().applyOutputs(collectedGas, true, 1); } } } diff --git a/src/main/java/mekanism/common/tile/TileEntityBasicMachine.java b/src/main/java/mekanism/common/tile/TileEntityBasicMachine.java index 483f49517..403f631a1 100644 --- a/src/main/java/mekanism/common/tile/TileEntityBasicMachine.java +++ b/src/main/java/mekanism/common/tile/TileEntityBasicMachine.java @@ -238,6 +238,7 @@ public abstract class TileEntityBasicMachine, ticksRequired = MekanismUtils.getTicks(this, BASE_TICKS_REQUIRED); case ENERGY: //and SPEED fall-through. energyPerTick = MekanismUtils.getEnergyPerTick(this, BASE_ENERGY_PER_TICK); + maxEnergy = MekanismUtils.getMaxEnergy(this, BASE_MAX_ENERGY); } } diff --git a/src/main/java/mekanism/common/tile/TileEntityChemicalCrystallizer.java b/src/main/java/mekanism/common/tile/TileEntityChemicalCrystallizer.java index 66ecfec21..8a6dd21ad 100644 --- a/src/main/java/mekanism/common/tile/TileEntityChemicalCrystallizer.java +++ b/src/main/java/mekanism/common/tile/TileEntityChemicalCrystallizer.java @@ -502,6 +502,7 @@ public class TileEntityChemicalCrystallizer extends TileEntityNoisyElectricBlock ticksRequired = MekanismUtils.getTicks(this, BASE_TICKS_REQUIRED); 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/TileEntityChemicalDissolutionChamber.java b/src/main/java/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java index c882d75f0..2e903976f 100644 --- a/src/main/java/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java +++ b/src/main/java/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java @@ -214,16 +214,18 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityNoisyElectri public double getScaledProgress() { - return ((double)operatingTicks) / ((double)BASE_TICKS_REQUIRED); + return ((double)operatingTicks) / ((double)ticksRequired); } public DissolutionRecipe getRecipe() { ItemStackInput input = getInput(); + if(cachedRecipe == null || !input.testEquality(cachedRecipe.getInput())) { cachedRecipe = RecipeHandler.getDissolutionRecipe(getInput()); } + return cachedRecipe; } @@ -464,6 +466,7 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityNoisyElectri ticksRequired = MekanismUtils.getTicks(this, BASE_TICKS_REQUIRED); 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/TileEntityChemicalOxidizer.java b/src/main/java/mekanism/common/tile/TileEntityChemicalOxidizer.java index 78a26f219..9da089444 100644 --- a/src/main/java/mekanism/common/tile/TileEntityChemicalOxidizer.java +++ b/src/main/java/mekanism/common/tile/TileEntityChemicalOxidizer.java @@ -201,10 +201,12 @@ public class TileEntityChemicalOxidizer extends TileEntityNoisyElectricBlock imp public OxidationRecipe getRecipe() { ItemStackInput input = getInput(); + if(cachedRecipe == null || !input.testEquality(cachedRecipe.getInput())) { cachedRecipe = RecipeHandler.getOxidizerRecipe(getInput()); } + return cachedRecipe; } @@ -384,6 +386,7 @@ public class TileEntityChemicalOxidizer extends TileEntityNoisyElectricBlock imp ticksRequired = MekanismUtils.getTicks(this, BASE_TICKS_REQUIRED); 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/TileEntityChemicalWasher.java b/src/main/java/mekanism/common/tile/TileEntityChemicalWasher.java index 889d56121..356ed0763 100644 --- a/src/main/java/mekanism/common/tile/TileEntityChemicalWasher.java +++ b/src/main/java/mekanism/common/tile/TileEntityChemicalWasher.java @@ -1,5 +1,7 @@ package mekanism.common.tile; +import io.netty.buffer.ByteBuf; + import java.util.ArrayList; import mekanism.api.Coord4D; @@ -14,19 +16,21 @@ import mekanism.api.gas.IGasHandler; import mekanism.api.gas.IGasItem; import mekanism.api.gas.ITubeConnection; import mekanism.common.Mekanism; +import mekanism.common.Upgrade; import mekanism.common.base.IRedstoneControl; import mekanism.common.base.ISustainedData; +import mekanism.common.base.IUpgradeTile; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.network.PacketTileEntity.TileEntityMessage; import mekanism.common.recipe.RecipeHandler; import mekanism.common.recipe.inputs.GasInput; import mekanism.common.recipe.machines.WasherRecipe; +import mekanism.common.tile.component.TileComponentUpgrade; import mekanism.common.util.ChargeUtils; import mekanism.common.util.FluidContainerUtils; import mekanism.common.util.InventoryUtils; import mekanism.common.util.MekanismUtils; import mekanism.common.util.PipeUtils; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; @@ -42,9 +46,7 @@ import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidContainerItem; import net.minecraftforge.fluids.IFluidHandler; -import io.netty.buffer.ByteBuf; - -public class TileEntityChemicalWasher extends TileEntityNoisyElectricBlock implements IGasHandler, ITubeConnection, IRedstoneControl, IFluidHandler, ISustainedData +public class TileEntityChemicalWasher extends TileEntityNoisyElectricBlock implements IGasHandler, ITubeConnection, IRedstoneControl, IFluidHandler, IUpgradeTile, ISustainedData { public FluidTank fluidTank = new FluidTank(MAX_FLUID); public GasTank inputTank = new GasTank(MAX_GAS); @@ -65,9 +67,13 @@ public class TileEntityChemicalWasher extends TileEntityNoisyElectricBlock imple public double prevEnergy; - public final double ENERGY_USAGE = usage.chemicalWasherUsage; + public final double BASE_ENERGY_USAGE = usage.chemicalWasherUsage; + + public double energyUsage = usage.chemicalWasherUsage; public WasherRecipe cachedRecipe; + + public TileComponentUpgrade upgradeComponent = new TileComponentUpgrade(this, 4); /** This machine's current RedstoneControl type. */ public RedstoneControl controlType = RedstoneControl.DISABLED; @@ -75,7 +81,7 @@ public class TileEntityChemicalWasher extends TileEntityNoisyElectricBlock imple public TileEntityChemicalWasher() { super("washer", "ChemicalWasher", MachineType.CHEMICAL_WASHER.baseEnergy); - inventory = new ItemStack[4]; + inventory = new ItemStack[5]; } @Override @@ -114,13 +120,13 @@ public class TileEntityChemicalWasher extends TileEntityNoisyElectricBlock imple outputTank.draw(GasTransmission.addGas(inventory[2], outputTank.getGas()), true); } - if(canOperate(recipe) && getEnergy() >= ENERGY_USAGE && MekanismUtils.canFunction(this)) + if(canOperate(recipe) && getEnergy() >= energyUsage && MekanismUtils.canFunction(this)) { setActive(true); operate(recipe); - setEnergy(getEnergy() - ENERGY_USAGE); + setEnergy(getEnergy() - energyUsage); } else { if(prevEnergy >= getEnergy()) @@ -151,10 +157,12 @@ public class TileEntityChemicalWasher extends TileEntityNoisyElectricBlock imple public WasherRecipe getRecipe() { GasInput input = getInput(); + if(cachedRecipe == null || !input.testEquality(cachedRecipe.getInput())) { cachedRecipe = RecipeHandler.getChemicalWasherRecipe(getInput()); } + return cachedRecipe; } @@ -170,7 +178,7 @@ public class TileEntityChemicalWasher extends TileEntityNoisyElectricBlock imple public void operate(WasherRecipe recipe) { - recipe.operate(inputTank, fluidTank, outputTank); + recipe.operate(inputTank, fluidTank, outputTank, getUpgradedUsage()); } private void manageBuckets() @@ -244,7 +252,15 @@ public class TileEntityChemicalWasher extends TileEntityNoisyElectricBlock imple } } } - + + public int getUpgradedUsage() + { + int possibleProcess = Math.min(inputTank.getStored(), outputTank.getNeeded()); + possibleProcess = Math.min((int)Math.pow(2, upgradeComponent.getUpgrades(Upgrade.SPEED)), possibleProcess); + + return Math.min(fluidTank.getFluidAmount()/WATER_USAGE, possibleProcess); + } + @Override public void handlePacketData(ByteBuf dataStream) { @@ -612,4 +628,23 @@ public class TileEntityChemicalWasher extends TileEntityNoisyElectricBlock imple inputTank.setGas(GasStack.readFromNBT(itemStack.stackTagCompound.getCompoundTag("inputTank"))); outputTank.setGas(GasStack.readFromNBT(itemStack.stackTagCompound.getCompoundTag("outputTank"))); } + + @Override + public TileComponentUpgrade getComponent() + { + return upgradeComponent; + } + + @Override + public void recalculateUpgradables(Upgrade upgrade) + { + super.recalculateUpgradables(upgrade); + + switch(upgrade) + { + 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/TileEntityDigitalMiner.java b/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java index ce6759f6a..36f2a6b84 100644 --- a/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java +++ b/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java @@ -1478,6 +1478,7 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I delayLength = MekanismUtils.getTicks(this, 80); 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/TileEntityElectricPump.java b/src/main/java/mekanism/common/tile/TileEntityElectricPump.java index f03043769..7d3f212d4 100644 --- a/src/main/java/mekanism/common/tile/TileEntityElectricPump.java +++ b/src/main/java/mekanism/common/tile/TileEntityElectricPump.java @@ -1,5 +1,7 @@ package mekanism.common.tile; +import io.netty.buffer.ByteBuf; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -12,13 +14,15 @@ import mekanism.api.Coord4D; import mekanism.api.EnumColor; import mekanism.api.IConfigurable; import mekanism.api.MekanismConfig.usage; +import mekanism.common.Upgrade; import mekanism.common.base.IRedstoneControl; import mekanism.common.base.ISustainedTank; +import mekanism.common.base.IUpgradeTile; +import mekanism.common.tile.component.TileComponentUpgrade; import mekanism.common.util.ChargeUtils; import mekanism.common.util.FluidContainerUtils; 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; @@ -35,9 +39,7 @@ import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidContainerItem; import net.minecraftforge.fluids.IFluidHandler; -import io.netty.buffer.ByteBuf; - -public class TileEntityElectricPump extends TileEntityElectricBlock implements IFluidHandler, ISustainedTank, IConfigurable, IRedstoneControl +public class TileEntityElectricPump extends TileEntityElectricBlock implements IFluidHandler, ISustainedTank, IConfigurable, IRedstoneControl, IUpgradeTile { /** This pump's tank */ public FluidTank fluidTank = new FluidTank(10000); @@ -47,11 +49,16 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I /** This machine's current RedstoneControl type. */ public RedstoneControl controlType = RedstoneControl.DISABLED; + + public TileComponentUpgrade upgradeComponent = new TileComponentUpgrade(this, 3); public TileEntityElectricPump() { super("ElectricPump", 10000); - inventory = new ItemStack[3]; + inventory = new ItemStack[4]; + + upgradeComponent.clearSupportedTypes(); + upgradeComponent.setSupported(Upgrade.FILTER); } @Override @@ -131,8 +138,7 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I suck(true); } } - else - { + else { ticker--; } } @@ -158,6 +164,11 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I } } } + + public boolean hasFilter() + { + return upgradeComponent.getInstalledTypes().contains(Upgrade.FILTER); + } public boolean suck(boolean take) { @@ -171,13 +182,13 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I if(MekanismUtils.isFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord)) { - if(fluidTank.getFluid() == null || MekanismUtils.getFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord).isFluidEqual(fluidTank.getFluid())) + if(fluidTank.getFluid() == null || MekanismUtils.getFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord, hasFilter()).isFluidEqual(fluidTank.getFluid())) { if(take) { setEnergy(getEnergy() - usage.electricPumpUsage); recurringNodes.add(wrapper.clone()); - fluidTank.fill(MekanismUtils.getFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord), true); + fluidTank.fill(MekanismUtils.getFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord, hasFilter()), true); worldObj.setBlockToAir(wrapper.xCoord, wrapper.yCoord, wrapper.zCoord); } @@ -192,12 +203,12 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I { if(MekanismUtils.isFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord)) { - if(fluidTank.getFluid() == null || MekanismUtils.getFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord).isFluidEqual(fluidTank.getFluid())) + if(fluidTank.getFluid() == null || MekanismUtils.getFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord, hasFilter()).isFluidEqual(fluidTank.getFluid())) { if(take) { setEnergy(getEnergy() - usage.electricPumpUsage); - fluidTank.fill(MekanismUtils.getFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord), true); + fluidTank.fill(MekanismUtils.getFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord, hasFilter()), true); worldObj.setBlockToAir(wrapper.xCoord, wrapper.yCoord, wrapper.zCoord); } @@ -214,13 +225,13 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I { if(MekanismUtils.isFluid(worldObj, side.xCoord, side.yCoord, side.zCoord)) { - if(fluidTank.getFluid() == null || MekanismUtils.getFluid(worldObj, side.xCoord, side.yCoord, side.zCoord).isFluidEqual(fluidTank.getFluid())) + if(fluidTank.getFluid() == null || MekanismUtils.getFluid(worldObj, side.xCoord, side.yCoord, side.zCoord, hasFilter()).isFluidEqual(fluidTank.getFluid())) { if(take) { setEnergy(getEnergy() - usage.electricPumpUsage); recurringNodes.add(side); - fluidTank.fill(MekanismUtils.getFluid(worldObj, side.xCoord, side.yCoord, side.zCoord), true); + fluidTank.fill(MekanismUtils.getFluid(worldObj, side.xCoord, side.yCoord, side.zCoord, hasFilter()), true); worldObj.setBlockToAir(side.xCoord, side.yCoord, side.zCoord); } @@ -495,4 +506,10 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I { return true; } + + @Override + public TileComponentUpgrade getComponent() + { + return upgradeComponent; + } } diff --git a/src/main/java/mekanism/common/tile/TileEntityFactory.java b/src/main/java/mekanism/common/tile/TileEntityFactory.java index 7b05752f2..229b3f916 100644 --- a/src/main/java/mekanism/common/tile/TileEntityFactory.java +++ b/src/main/java/mekanism/common/tile/TileEntityFactory.java @@ -944,6 +944,7 @@ public class TileEntityFactory extends TileEntityNoisyElectricBlock implements I secondaryEnergyPerTick = MekanismUtils.getSecondaryEnergyPerTickMean(this, recipeType.getSecondaryEnergyPerTick()); case ENERGY: energyPerTick = MekanismUtils.getEnergyPerTick(this, BASE_ENERGY_PER_TICK); + maxEnergy = MekanismUtils.getMaxEnergy(this, BASE_MAX_ENERGY); } } } \ No newline at end of file diff --git a/src/main/java/mekanism/common/tile/TileEntityMetallurgicInfuser.java b/src/main/java/mekanism/common/tile/TileEntityMetallurgicInfuser.java index 8d6d7d722..6e83fa87b 100644 --- a/src/main/java/mekanism/common/tile/TileEntityMetallurgicInfuser.java +++ b/src/main/java/mekanism/common/tile/TileEntityMetallurgicInfuser.java @@ -241,6 +241,7 @@ public class TileEntityMetallurgicInfuser extends TileEntityNoisyElectricBlock i for(Object obj : Recipe.METALLURGIC_INFUSER.get().keySet()) { InfusionInput input = (InfusionInput)obj; + if(input.inputStack.isItemEqual(itemstack)) { return true; @@ -543,6 +544,7 @@ public class TileEntityMetallurgicInfuser extends TileEntityNoisyElectricBlock i ticksRequired = MekanismUtils.getTicks(this, BASE_TICKS_REQUIRED); case ENERGY: energyPerTick = MekanismUtils.getEnergyPerTick(this, BASE_ENERGY_PER_TICK); + maxEnergy = MekanismUtils.getMaxEnergy(this, BASE_MAX_ENERGY); } } } \ No newline at end of file diff --git a/src/main/java/mekanism/common/tile/component/TileComponentUpgrade.java b/src/main/java/mekanism/common/tile/component/TileComponentUpgrade.java index 7e2d1ba73..f750d170c 100644 --- a/src/main/java/mekanism/common/tile/component/TileComponentUpgrade.java +++ b/src/main/java/mekanism/common/tile/component/TileComponentUpgrade.java @@ -142,6 +142,11 @@ public class TileComponentUpgrade implements ITileComponent { return supported; } + + public void clearSupportedTypes() + { + supported.clear(); + } @Override public void read(ByteBuf dataStream) @@ -181,6 +186,7 @@ public class TileComponentUpgrade implements ITileComponent public void read(NBTTagCompound nbtTags) { upgrades = Upgrade.buildMap(nbtTags); + for(Upgrade upgrade : getSupportedTypes()) { tileEntity.recalculateUpgradables(upgrade); diff --git a/src/main/java/mekanism/common/util/MekanismUtils.java b/src/main/java/mekanism/common/util/MekanismUtils.java index 59d4c5db1..630430e2f 100644 --- a/src/main/java/mekanism/common/util/MekanismUtils.java +++ b/src/main/java/mekanism/common/util/MekanismUtils.java @@ -745,7 +745,7 @@ public final class MekanismUtils */ public static boolean isFluid(World world, int x, int y, int z) { - return getFluid(world, x, y, z) != null; + return getFluid(world, x, y, z, false) != null; } /** @@ -756,7 +756,7 @@ public final class MekanismUtils * @param z - z coordinate * @return the fluid at the certain location, null if it doesn't exist */ - public static FluidStack getFluid(World world, int x, int y, int z) + public static FluidStack getFluid(World world, int x, int y, int z, boolean filter) { Block block = world.getBlock(x, y, z); int meta = world.getBlockMetadata(x, y, z); @@ -768,7 +768,13 @@ public final class MekanismUtils if((block == Blocks.water || block == Blocks.flowing_water) && meta == 0) { - return new FluidStack(FluidRegistry.WATER, FluidContainerRegistry.BUCKET_VOLUME); + if(!filter) + { + return new FluidStack(FluidRegistry.WATER, FluidContainerRegistry.BUCKET_VOLUME); + } + else { + return new FluidStack(FluidRegistry.getFluid("heavywater"), 10); + } } else if((block == Blocks.lava || block == Blocks.flowing_lava) && meta == 0) { diff --git a/src/main/resources/assets/mekanism/lang/en_US.lang b/src/main/resources/assets/mekanism/lang/en_US.lang index fcc6c1cb1..9fcc00c43 100644 --- a/src/main/resources/assets/mekanism/lang/en_US.lang +++ b/src/main/resources/assets/mekanism/lang/en_US.lang @@ -10,6 +10,7 @@ item.AtomicAlloy.name=Atomic Alloy item.EnergyTablet.name=Energy Tablet item.SpeedUpgrade.name=Speed Upgrade item.EnergyUpgrade.name=Energy Upgrade +item.FilterUpgrade.name=Filter Upgrade item.Robit.name=Robit item.AtomicDisassembler.name=Atomic Disassembler item.ElectricBow.name=Electric Bow @@ -275,6 +276,7 @@ fluid.hydrogenChloride=Liquid Hydrogen Chloride fluid.brine=Brine fluid.ethene=Liquid Ethylene fluid.sodium=Liquid Sodium +fluid.heavyWater=Heavy Water //OreGas names oregas.iron=Iron Ore @@ -299,6 +301,8 @@ upgrade.energy=Energy upgrade.energy.desc=Increases energy efficiency !nand capacity of machinery. upgrade.speed=Speed upgrade.speed.desc=Increases speed of machinery. +upgrade.filter=Filter +upgrade.filter.desc=A filter that separates !nheavy water from regular water. //Key description text key.mode=Mode Switch diff --git a/src/main/resources/assets/mekanism/render/ChemicalCrystallizer.png b/src/main/resources/assets/mekanism/render/ChemicalCrystallizer.png index ff177a7f1..c4d0ff88e 100644 Binary files a/src/main/resources/assets/mekanism/render/ChemicalCrystallizer.png and b/src/main/resources/assets/mekanism/render/ChemicalCrystallizer.png differ diff --git a/src/main/resources/assets/mekanism/render/ChemicalDissolutionChamber.png b/src/main/resources/assets/mekanism/render/ChemicalDissolutionChamber.png index 06241ca67..7b1e34027 100644 Binary files a/src/main/resources/assets/mekanism/render/ChemicalDissolutionChamber.png and b/src/main/resources/assets/mekanism/render/ChemicalDissolutionChamber.png differ diff --git a/src/main/resources/assets/mekanism/render/ChemicalInfuser.png b/src/main/resources/assets/mekanism/render/ChemicalInfuser.png index 54a32b15e..44cc40639 100755 Binary files a/src/main/resources/assets/mekanism/render/ChemicalInfuser.png and b/src/main/resources/assets/mekanism/render/ChemicalInfuser.png differ diff --git a/src/main/resources/assets/mekanism/render/ChemicalWasher.png b/src/main/resources/assets/mekanism/render/ChemicalWasher.png index a0a2a9ba8..34e4e5cb1 100644 Binary files a/src/main/resources/assets/mekanism/render/ChemicalWasher.png and b/src/main/resources/assets/mekanism/render/ChemicalWasher.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/LiquidHeavyWater.png b/src/main/resources/assets/mekanism/textures/blocks/LiquidHeavyWater.png new file mode 100644 index 000000000..ffa6e1bac Binary files /dev/null and b/src/main/resources/assets/mekanism/textures/blocks/LiquidHeavyWater.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/LiquidHeavyWater.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/LiquidHeavyWater.png.mcmeta new file mode 100644 index 000000000..4b721e09a --- /dev/null +++ b/src/main/resources/assets/mekanism/textures/blocks/LiquidHeavyWater.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} diff --git a/src/main/resources/assets/mekanism/textures/items/FilterUpgrade.png b/src/main/resources/assets/mekanism/textures/items/FilterUpgrade.png new file mode 100644 index 000000000..74f69f181 Binary files /dev/null and b/src/main/resources/assets/mekanism/textures/items/FilterUpgrade.png differ