From 1da8dcd58647e34c9af94ceeecaeaf3b0d08c48c Mon Sep 17 00:00:00 2001 From: Foghrye4 Date: Tue, 13 Jun 2017 20:58:18 +0300 Subject: enet update --- ihl/IHLModInfo.java | 2 +- ihl/flexible_cable/AnchorTileEntity.java | 11 +- .../FlexibleCableHolderBaseTileEntity.java | 17 + ihl/flexible_cable/IHLENet.java | 2 + ihl/flexible_cable/IHLGrid.java | 27 +- ihl/flexible_cable/PowerCableNodeEntity.java | 5 + .../RectifierTransformerUnitTileEntity.java | 8 + ihl/flexible_cable/SubAnchorEnergyNetNode.java | 23 +- ihl/flexible_cable/SubRTUEnergyNetNode.java | 15 + ihl/interfaces/IEnergyNetNode.java | 1 + ihl/interfaces/IHasTemperature.java | 4 - ihl/items_blocks/FlexibleCableItem.java | 8 +- ihl/items_blocks/IHLTool.java | 32 +- .../chemistry/ElectrolysisBathContainer.java | 8 - .../chemistry/ElectrolysisBathTileEntity.java | 9 +- .../chemistry/FractionatorBottomTileEntity.java | 59 +-- .../metallurgy/BasicElectricMotorTileEntity.java | 4 +- .../metallurgy/ImpregnatingMachineTileEntity.java | 10 +- ihl/utils/IHLFluidTank.java | 555 ++++++++------------- 19 files changed, 362 insertions(+), 438 deletions(-) delete mode 100644 ihl/interfaces/IHasTemperature.java (limited to 'ihl') diff --git a/ihl/IHLModInfo.java b/ihl/IHLModInfo.java index 1f2977f..0122a92 100644 --- a/ihl/IHLModInfo.java +++ b/ihl/IHLModInfo.java @@ -3,5 +3,5 @@ package ihl; public class IHLModInfo { public static final String MODID = "ihl"; public static final String MODNAME = "IHL Tools & Machines for IC2V2"; - public static final String MODVERSION = "0.643"; + public static final String MODVERSION = "0.646"; } diff --git a/ihl/flexible_cable/AnchorTileEntity.java b/ihl/flexible_cable/AnchorTileEntity.java index 1262a01..2da08a6 100644 --- a/ihl/flexible_cable/AnchorTileEntity.java +++ b/ihl/flexible_cable/AnchorTileEntity.java @@ -75,6 +75,11 @@ public class AnchorTileEntity extends TileEntityBlock implements IEnergySink, IE MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); this.addedToEnergyNet = false; } + for(SubAnchorEnergyNetNode sen:energyNetNodes) + { + sen.onUnloaded(); + } + } } @@ -257,7 +262,7 @@ public class AnchorTileEntity extends TileEntityBlock implements IEnergySink, IE double amount=0d; for(short i=0;i<6;i++) { - amount+=energyNetNodes[i].getDemandedEnergy(); + amount=energyNetNodes[i].getDemandedEnergy(); } return amount; } @@ -437,4 +442,8 @@ public class AnchorTileEntity extends TileEntityBlock implements IEnergySink, IE } } + + public boolean isTileEntityInvalid() { + return this.tileEntityInvalid; + } } diff --git a/ihl/flexible_cable/FlexibleCableHolderBaseTileEntity.java b/ihl/flexible_cable/FlexibleCableHolderBaseTileEntity.java index 2923ed2..919e130 100644 --- a/ihl/flexible_cable/FlexibleCableHolderBaseTileEntity.java +++ b/ihl/flexible_cable/FlexibleCableHolderBaseTileEntity.java @@ -41,6 +41,18 @@ public abstract class FlexibleCableHolderBaseTileEntity extends TileEntityInvent } } + @Override + public void onUnloaded() + { + super.onUnloaded(); + if(gridID!=-1) + { + IHLGrid grid = IHLMod.enet.getGrid(gridID); + grid.remove(this); + } + } + + @SuppressWarnings("unchecked") @Override public void setFacing(short facing1) @@ -217,4 +229,9 @@ public abstract class FlexibleCableHolderBaseTileEntity extends TileEntityInvent { this.checkCables=b; } + + @Override + public boolean isTileEntityBaseInvalid(){ + return this.tileEntityInvalid; + } } diff --git a/ihl/flexible_cable/IHLENet.java b/ihl/flexible_cable/IHLENet.java index cf0670d..2d4ec23 100644 --- a/ihl/flexible_cable/IHLENet.java +++ b/ihl/flexible_cable/IHLENet.java @@ -67,6 +67,8 @@ public class IHLENet { public IHLGrid getGrid(int gridID) { + if(gridID==-1) + throw new IllegalArgumentException("Node should never ask grid with ID -1"); if(this.grids.get(gridID)==null) { IHLGrid cgrid; diff --git a/ihl/flexible_cable/IHLGrid.java b/ihl/flexible_cable/IHLGrid.java index d223e10..92a64c8 100644 --- a/ihl/flexible_cable/IHLGrid.java +++ b/ihl/flexible_cable/IHLGrid.java @@ -21,7 +21,7 @@ public class IHLGrid public double energy=0D; private IEnergyNetNode sink; private IEnergyNetNode source; - private double voltage; + private double voltage=400d; private double lastVoltage; public boolean isGridValid=true; private double total20TicksEU; @@ -139,6 +139,18 @@ public class IHLGrid private void updateGrid() { + Iterator atei2 = telist.iterator(); + while (atei2.hasNext()) { + IEnergyNetNode cte = atei2.next(); + if (cte.isTileEntityBaseInvalid()) { + if (!cte.getCableList().isEmpty()) { + for (IHLCable cable : cte.getCableList()) { + IHLMod.enet.cablesToGrids.remove(cable.chainUID); + } + } + atei2.remove(); + } + } if(this.source!=null && this.sink!=null && this.source!=this.sink && @@ -240,6 +252,8 @@ public class IHLGrid cursor=this.getHasCable(cable, cursor, gridTEList); } this.energyLossSinkMap.put(sink, powerLossPerSquaredEU); + if(voltage1<1d) + voltage1=1d; this.voltageSinkMap.put(sink, voltage1); } this.calculatedSources.add(this.source); @@ -299,4 +313,15 @@ public class IHLGrid } } } + + public void remove(IEnergyNetNode e) { + this.telist.remove(e); + if(!e.getCableList().isEmpty()) + { + for(IHLCable cable:e.getCableList()) + { + IHLMod.enet.cablesToGrids.remove(cable.chainUID); + } + } + } } diff --git a/ihl/flexible_cable/PowerCableNodeEntity.java b/ihl/flexible_cable/PowerCableNodeEntity.java index 7396967..346b86c 100644 --- a/ihl/flexible_cable/PowerCableNodeEntity.java +++ b/ihl/flexible_cable/PowerCableNodeEntity.java @@ -235,4 +235,9 @@ public class PowerCableNodeEntity extends NodeEntity implements IEnergyNetNode{ @Override public void injectEnergyInThisNode(double amount, double voltage) {} + @Override + public boolean isTileEntityBaseInvalid() { + return this.isDead; + } + } diff --git a/ihl/flexible_cable/RectifierTransformerUnitTileEntity.java b/ihl/flexible_cable/RectifierTransformerUnitTileEntity.java index 484df85..60a5a76 100644 --- a/ihl/flexible_cable/RectifierTransformerUnitTileEntity.java +++ b/ihl/flexible_cable/RectifierTransformerUnitTileEntity.java @@ -66,6 +66,10 @@ public class RectifierTransformerUnitTileEntity extends TileEntityInventory impl @Override public void onUnloaded() { + for(short i=0;i<2;i++) + { + energyNetNodes[i].onUnloaded(); + } if (IC2.platform.isSimulating() && this.addedToEnergyNet) { MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); @@ -323,6 +327,10 @@ public class RectifierTransformerUnitTileEntity extends TileEntityInventory impl } } + + public boolean isTileEntityInvalid() { + return this.tileEntityInvalid; + } } diff --git a/ihl/flexible_cable/SubAnchorEnergyNetNode.java b/ihl/flexible_cable/SubAnchorEnergyNetNode.java index 5fd4d91..daada72 100644 --- a/ihl/flexible_cable/SubAnchorEnergyNetNode.java +++ b/ihl/flexible_cable/SubAnchorEnergyNetNode.java @@ -7,6 +7,7 @@ import ic2.api.energy.EnergyNet; import ic2.api.energy.event.EnergyTileLoadEvent; import ic2.api.energy.event.EnergyTileUnloadEvent; import ic2.api.energy.tile.IEnergySink; +import ic2.api.energy.tile.IEnergySource; import ic2.core.IC2; import ihl.IHLMod; import ihl.interfaces.IEnergyNetNode; @@ -152,6 +153,15 @@ public class SubAnchorEnergyNetNode implements IEnergyNetNode{ } } + public void onUnloaded() + { + if(gridID!=-1) + { + IHLGrid grid = IHLMod.enet.getGrid(gridID); + grid.remove(this); + } + } + public NBTTagCompound writeToNBT() { NBTTagCompound nbt = new NBTTagCompound(); @@ -186,10 +196,9 @@ public class SubAnchorEnergyNetNode implements IEnergyNetNode{ } else { - double dEnergy = this.getGrid().energy; - if(dEnergy<1d) + if(this.getGrid().energy<=1d) { - return Integer.MAX_VALUE; + return 65536d; } else { @@ -280,7 +289,7 @@ public class SubAnchorEnergyNetNode implements IEnergyNetNode{ } if(te instanceof IEnergySink) { - return ((IEnergySink)te).getDemandedEnergy(); + return ((IEnergySink)te).acceptsEnergyFrom(this.base, ForgeDirection.getOrientation(this.facing))?((IEnergySink)te).getDemandedEnergy():0d; } return 0d; } @@ -328,4 +337,10 @@ public class SubAnchorEnergyNetNode implements IEnergyNetNode{ amount=((IEnergySink)te1).injectEnergy(direction, amount, voltage); } } + + @Override + public boolean isTileEntityBaseInvalid() { + return base.isTileEntityInvalid(); + } + } diff --git a/ihl/flexible_cable/SubRTUEnergyNetNode.java b/ihl/flexible_cable/SubRTUEnergyNetNode.java index df5e9e4..06fc964 100644 --- a/ihl/flexible_cable/SubRTUEnergyNetNode.java +++ b/ihl/flexible_cable/SubRTUEnergyNetNode.java @@ -176,6 +176,15 @@ public class SubRTUEnergyNetNode implements IEnergyNetNode{ } } + public void onUnloaded() + { + if(gridID!=-1) + { + IHLGrid grid = IHLMod.enet.getGrid(gridID); + grid.remove(this); + } + } + public NBTTagCompound writeToNBT() { NBTTagCompound nbt = new NBTTagCompound(); @@ -302,4 +311,10 @@ public class SubRTUEnergyNetNode implements IEnergyNetNode{ } } } + + @Override + public boolean isTileEntityBaseInvalid() { + return this.base.isTileEntityInvalid(); + } + } diff --git a/ihl/interfaces/IEnergyNetNode.java b/ihl/interfaces/IEnergyNetNode.java index b18b166..c347d97 100644 --- a/ihl/interfaces/IEnergyNetNode.java +++ b/ihl/interfaces/IEnergyNetNode.java @@ -17,4 +17,5 @@ public interface IEnergyNetNode extends ICableHolder{ void remove(IHLCable cable); double getEnergyAmountThisNodeWant(); void injectEnergyInThisNode(double amount, double voltage); + public boolean isTileEntityBaseInvalid(); } diff --git a/ihl/interfaces/IHasTemperature.java b/ihl/interfaces/IHasTemperature.java deleted file mode 100644 index 7c4474d..0000000 --- a/ihl/interfaces/IHasTemperature.java +++ /dev/null @@ -1,4 +0,0 @@ -package ihl.interfaces; -public interface IHasTemperature { -public int getTemperature(); -} diff --git a/ihl/items_blocks/FlexibleCableItem.java b/ihl/items_blocks/FlexibleCableItem.java index 68cceab..ad1a1ae 100644 --- a/ihl/items_blocks/FlexibleCableItem.java +++ b/ihl/items_blocks/FlexibleCableItem.java @@ -204,10 +204,10 @@ public class FlexibleCableItem extends Item implements IWire { cable.setInteger("connectorZ1", t1.zCoord); cable.setShort("connectorFacing1", facing); cable.setInteger("connectorDimensionId1", t1.getWorldObj().provider.dimensionId); - if (te.addCable(cable) && te1.addCable(cable)) { - te.setGrid(newGridID); - te1.setGrid(newGridID); - } + te.addCable(cable); + te1.addCable(cable); + te.setGrid(newGridID); + te1.setGrid(newGridID); } private int getTransverseSection(ItemStack stack) { diff --git a/ihl/items_blocks/IHLTool.java b/ihl/items_blocks/IHLTool.java index 150d0ca..eb23ff5 100644 --- a/ihl/items_blocks/IHLTool.java +++ b/ihl/items_blocks/IHLTool.java @@ -7,12 +7,14 @@ import java.util.Map; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ic2.api.energy.tile.IEnergySink; import ic2.api.reactor.IReactor; import ihl.IHLCreativeTab; import ihl.IHLModInfo; import ihl.flexible_cable.SetOfDiesMiniGUI; -import ihl.interfaces.IHasTemperature; +import ihl.interfaces.IEnergyNetNode; import ihl.interfaces.IItemHasMiniGUI; +import ihl.interfaces.IMultiPowerCableHolder; import ihl.interfaces.ItemMiniGUI; import ihl.utils.IHLUtils; import net.minecraft.client.gui.inventory.GuiContainer; @@ -77,14 +79,34 @@ public class IHLTool extends Item implements IItemHasMiniGUI{ int y=movingobjectposition.blockY; int z=movingobjectposition.blockZ; TileEntity te = world.getTileEntity(x, y, z); - if(te instanceof IHasTemperature) - { - this.setThermometerTemperature(itemStack, entityPlayer, ((IHasTemperature)te).getTemperature()); - } if(te instanceof IReactor) { this.setThermometerTemperature(itemStack, entityPlayer, ((IReactor)te).getHeat()+273); } + if(te instanceof IEnergySink) + { + System.out.println("demanded="+((IEnergySink)te).getDemandedEnergy()); + } + IEnergyNetNode node = null; + if(te instanceof IMultiPowerCableHolder) + { + node = ((IMultiPowerCableHolder)te).getEnergyNetNode((short) 0); + for(short i=0;i<6;i++){ + if(((IMultiPowerCableHolder)te).getEnergyNetNode(i).getGridID()!=-1) + node = ((IMultiPowerCableHolder)te).getEnergyNetNode(i); + } + } + if(te instanceof IEnergyNetNode) + { + node = ((IEnergyNetNode)te); + } + if(node!=null){ + System.out.println("gridId="+node.getGridID()); + if(node.getGridID()!=-1){ + System.out.println("grid energy="+node.getGrid().energy); + System.out.println("getEnergyAmountThisNodeWant()="+node.getEnergyAmountThisNodeWant()); + } + } } return itemStack; } diff --git a/ihl/processing/chemistry/ElectrolysisBathContainer.java b/ihl/processing/chemistry/ElectrolysisBathContainer.java index 9797755..54bb9c7 100644 --- a/ihl/processing/chemistry/ElectrolysisBathContainer.java +++ b/ihl/processing/chemistry/ElectrolysisBathContainer.java @@ -60,16 +60,11 @@ public class ElectrolysisBathContainer extends ContainerBase0D) + if(gridID!=-1 && this.getGrid().energy>0D) { - double voltage = this.getGrid().getSinkVoltage(this); - double drawEnergy = voltage*voltage/resistance; + double drawEnergy = getEnergyAmountThisNodeWant(); this.progress+=drawEnergy; this.getGrid().drawEnergy(drawEnergy, this); } @@ -289,7 +286,7 @@ public class ElectrolysisBathTileEntity extends FlexibleCableHolderBaseTileEntit { double voltage = this.getGrid().getSinkVoltage(this); double energy = voltage*voltage/resistance; - return this.getOutput()!=null?energy:0; + return this.getOutput()!=null?energy>1d?energy:1d:0d; } @Override diff --git a/ihl/processing/chemistry/FractionatorBottomTileEntity.java b/ihl/processing/chemistry/FractionatorBottomTileEntity.java index eeabf61..3d9e95e 100644 --- a/ihl/processing/chemistry/FractionatorBottomTileEntity.java +++ b/ihl/processing/chemistry/FractionatorBottomTileEntity.java @@ -130,11 +130,7 @@ public class FractionatorBottomTileEntity extends TileEntityInventory implements FluidStack coolant = this.waterTank.getFluid(); if(coolant!=null && coolant.amount>0) { - int t1 = this.waterTank.getTemperature(); - float densityOfCoolant = IHLFluid.getRealDensity(coolant.getFluid()); - float densityOfGas = 17.8f; - int boilingPointOfGas = IHLFluid.getBoilingPoint(result2.getFluid()); - int amountOfGasToCondense = this.getAmountOfCondensedGas(coolant.amount, amountOfVapours, boilingPointOfGas, t1, densityOfGas, densityOfCoolant); + int amountOfGasToCondense = Math.min(coolant.amount*50, amountOfVapours); amountOfGasCondensed += amountOfGasToCondense; amountOfFluidEvaporated -= amountOfGasToCondense/50; } @@ -252,59 +248,6 @@ public class FractionatorBottomTileEntity extends TileEntityInventory implements } return false; } - - private int getAmountOfCondensedGas(int amountOfCoolant, int amountOfGas, int boilingPointOfGas, int temperatureOfCoolant, float densityOfGas, float densityOfCoolant) - { - if(amountOfCoolant<=0 || amountOfGas<=0 || boilingPointOfGas-202*dt2) - { - deltaT = (float) ((dt1-dt2)/Math.log((double)dt2/(double)dt1)); - } - else - { - deltaT = (dt1+dt2)*0.5F; - } - float Q1 = kF*deltaT; - if(Q1>=maxQ) - { - break; - } - else - { - int next_L = (int)(Q1/H/densityOfGas); - if(Math.abs(next_L-L)<4) - { - L=next_L; - break; - } - L=next_L; - } - } - if(t1_1>t1) - { - this.waterTank.setTemperature(t1_1); - } - else - { - this.waterTank.setTemperature(t1+1); - } - return L; - } @Override public String getInventoryName() diff --git a/ihl/processing/metallurgy/BasicElectricMotorTileEntity.java b/ihl/processing/metallurgy/BasicElectricMotorTileEntity.java index f02abea..a546b0a 100644 --- a/ihl/processing/metallurgy/BasicElectricMotorTileEntity.java +++ b/ihl/processing/metallurgy/BasicElectricMotorTileEntity.java @@ -31,7 +31,7 @@ public abstract class BasicElectricMotorTileEntity extends FlexibleCableHolderBa public short progress; protected short operationLength = 6000; protected double energyConsume = 1d; - public double energy; + public double energy = 0d; public int maxStorage = 128; private boolean addedToEnergyNet = false; @@ -257,7 +257,7 @@ public abstract class BasicElectricMotorTileEntity extends FlexibleCableHolderBa @Override public double getEnergyAmountThisNodeWant() { - return this.energy - this.getMaxStorage(); + return this.getMaxStorage()-this.energy; } public double drawEnergyToGrid(double amount) { diff --git a/ihl/processing/metallurgy/ImpregnatingMachineTileEntity.java b/ihl/processing/metallurgy/ImpregnatingMachineTileEntity.java index a0ed60d..4f7c529 100644 --- a/ihl/processing/metallurgy/ImpregnatingMachineTileEntity.java +++ b/ihl/processing/metallurgy/ImpregnatingMachineTileEntity.java @@ -16,7 +16,6 @@ import ic2.core.block.invslot.InvSlot.Access; import ic2.core.block.invslot.InvSlotConsumableLiquid; import ic2.core.block.invslot.InvSlotOutput; import ihl.interfaces.IFluidTankVisual; -import ihl.interfaces.IHasTemperature; import ihl.processing.chemistry.ApparatusProcessableInvSlot; import ihl.processing.chemistry.ChemicalReactorTileEntity; import ihl.processing.invslots.IHLInvSlotOutput; @@ -37,7 +36,7 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; -public class ImpregnatingMachineTileEntity extends TileEntityInventory implements IHasGui,IFluidTankVisual,INetworkTileEntityEventListener, IFluidHandler, IHasTemperature +public class ImpregnatingMachineTileEntity extends TileEntityInventory implements IHasGui,IFluidTankVisual,INetworkTileEntityEventListener, IFluidHandler { private final static UniversalRecipeManager recipeManager = new UniversalRecipeManager("tub"); public final ApparatusProcessableInvSlot input; @@ -123,7 +122,6 @@ public class ImpregnatingMachineTileEntity extends TileEntityInventory implement visibleFluidId=-1; IC2.network.get().updateTileEntityField(this, "visibleFluidId"); } - temperature=(short) (this.fluidTank.getTemperature()-273); IHLUtils.handleFluidSlotsBehaviour(fillInputSlot, drainInputSlot, emptyFluidItemsSlot, fluidTank); if (this.canOperate()) { @@ -333,12 +331,6 @@ public class ImpregnatingMachineTileEntity extends TileEntityInventory implement return pass==0; } - @Override - public int getTemperature() - { - return this.fluidTank.getTemperature(); - } - @Override public int getVisibleFluidId() { return this.visibleFluidId; diff --git a/ihl/utils/IHLFluidTank.java b/ihl/utils/IHLFluidTank.java index 6ffd2bf..67597e1 100644 --- a/ihl/utils/IHLFluidTank.java +++ b/ihl/utils/IHLFluidTank.java @@ -16,419 +16,304 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidTank; -public class IHLFluidTank implements IFluidTank -{ - private final List fluidList = new ArrayList(); - private final int capacity; - private int temperature=293; +public class IHLFluidTank implements IFluidTank { + private final List fluidList = new ArrayList(); + private final int capacity; - public IHLFluidTank(int capacity) - { - this.capacity = capacity; - } + public IHLFluidTank(int capacity) { + this.capacity = capacity; + } - public IHLFluidTank(int capacity, boolean isOpenVessel1) - { - this.capacity = capacity; - } - - public IHLFluidTank readFromNBT(NBTTagCompound nbt) - { - if (!nbt.hasKey("Empty")) - { - NBTTagList fluidList1 = nbt.getTagList("fluids", 10); - for(int i=0;i fli = fluidList.iterator(); - while(fli.hasNext()) - { - FluidStack fluid=fli.next(); - if(fluid!=null) - { - NBTTagCompound fluidNBT1 = new NBTTagCompound(); - fluid.writeToNBT(fluidNBT1); - fluids.appendTag(fluidNBT1); - } - } + public IHLFluidTank readFromNBT(NBTTagCompound nbt) { + if (!nbt.hasKey("Empty")) { + NBTTagList fluidList1 = nbt.getTagList("fluids", 10); + for (int i = 0; i < fluidList1.tagCount(); i++) { + NBTTagCompound fluidNBT1 = fluidList1.getCompoundTagAt(i); + FluidStack fluid = FluidStack.loadFluidStackFromNBT(fluidNBT1); + if (fluid != null) { + fluidList.add(fluid); + } + } + } + return this; + } + + public NBTTagCompound writeToNBT(NBTTagCompound nbt) { + if (!fluidList.isEmpty()) { + NBTTagList fluids = new NBTTagList(); + Iterator fli = fluidList.iterator(); + while (fli.hasNext()) { + FluidStack fluid = fli.next(); + if (fluid != null) { + NBTTagCompound fluidNBT1 = new NBTTagCompound(); + fluid.writeToNBT(fluidNBT1); + fluids.appendTag(fluidNBT1); + } + } nbt.setTag("fluids", fluids); - nbt.setInteger("temperature", temperature); - } - else - { - nbt.setString("Empty", ""); - } - return nbt; - } + } else { + nbt.setString("Empty", ""); + } + return nbt; + } - /* IFluidTank */ - @Override - public FluidStack getFluid() - { - if(this.fluidList.isEmpty()) - { - return null; - } - return this.fluidList.get(0); - } - - public FluidStack getLigthestFluid() - { - if(this.fluidList.isEmpty()) - { - return IHLUtils.getFluidStackWithSize("air", this.capacity); - } - return this.fluidList.get(this.fluidList.size()-1); - } + /* IFluidTank */ + @Override + public FluidStack getFluid() { + if (this.fluidList.isEmpty()) { + return null; + } + return this.fluidList.get(0); + } - @Override - public int getFluidAmount() - { - int amount=0; - Iterator fli = fluidList.iterator(); - while(fli.hasNext()) - { - FluidStack fluid=fli.next(); - if(fluid!=null) - { - amount+=fluid.amount; - } - } - return amount; - } + public FluidStack getLigthestFluid() { + if (this.fluidList.isEmpty()) { + return IHLUtils.getFluidStackWithSize("air", this.capacity); + } + return this.fluidList.get(this.fluidList.size() - 1); + } - @Override - public int getCapacity() - { - return capacity; - } + @Override + public int getFluidAmount() { + int amount = 0; + Iterator fli = fluidList.iterator(); + while (fli.hasNext()) { + FluidStack fluid = fli.next(); + if (fluid != null) { + amount += fluid.amount; + } + } + return amount; + } + + @Override + public int getCapacity() { + return capacity; + } - @Override - public FluidTankInfo getInfo() - { - return new FluidTankInfo(this); - } + @Override + public FluidTankInfo getInfo() { + return new FluidTankInfo(this); + } - @Override - public int fill(FluidStack resource, boolean doFill) - { - if (resource == null || resource.getFluid() == null || resource.amount<=0) - { - return 0; - } - if (!doFill) - { - if (fluidList.isEmpty()) - { - return Math.min(capacity, resource.amount); - } - return Math.min(capacity - this.getFluidAmount(), resource.amount); - } - if (fluidList.isEmpty()) - { - FluidStack fluid = copyWithSize(resource,Math.min(capacity, resource.amount)); - fluidList.add(fluid); - this.temperature=fluid.getFluid().getTemperature(); - return fluid.amount; - } - this.temperature=alignTemperatures(resource); + @Override + public int fill(FluidStack resource, boolean doFill) { + if (resource == null) + return 0; + int freeSpace = capacity - this.getFluidAmount(); + int amount1 = Math.min(freeSpace, resource.amount); + if (resource.getFluid() == null || amount1<=0) { + return 0; + } + if (!doFill) { + return amount1; + } FluidStack fluid = getFluidStackWithSameFluid(resource); - if(fluid!=null) - { - int amount1=Math.min(capacity - this.getFluidAmount(), resource.amount); - fluid.amount+=amount1; + if (fluid != null) { + fluid.amount += amount1; return amount1; } - fluid = copyWithSize(resource,Math.min(capacity, resource.amount)); + fluid = copyWithSize(resource, amount1); fluidList.add(fluid); - this.sortFluidsByDensity(); - return fluid.amount; - } - - private int alignTemperatures(FluidStack resource) - { - int amountOfFluidInTank = this.getFluidAmount(); - int averageT=(this.temperature*amountOfFluidInTank+resource.getFluid().getTemperature()*resource.amount)/(amountOfFluidInTank+resource.amount); - return averageT; + this.sortFluidsByDensity(); + return amount1; } @Override - public FluidStack drain(int maxDrain, boolean doDrain) - { - if (fluidList.isEmpty()) - { - return null; - } + public FluidStack drain(int maxDrain, boolean doDrain) { + if (fluidList.isEmpty()) { + return null; + } FluidStack fstack = this.getFluid().copy(); - fstack.amount=maxDrain; + fstack.amount = maxDrain; return this.drain(fstack, doDrain); - } - + } - public FluidStack drainLightest(int maxDrain, boolean doDrain) - { - if (fluidList.isEmpty()) - { - return null; - } + public FluidStack drainLightest(int maxDrain, boolean doDrain) { + if (fluidList.isEmpty()) { + return null; + } FluidStack fstack = this.getLigthestFluid().copy(); - fstack.amount=maxDrain; + fstack.amount = maxDrain; return this.drain(fstack, doDrain); } - - public FluidStack drain(Object fluidStack, boolean doDrain) - { - if (fluidList.isEmpty()) - { - return null; - } - int drained = 0; - if(fluidStack instanceof FluidStack) - { - drained = ((FluidStack)fluidStack).amount; - } - else - { - drained = ((IRecipeInputFluid)fluidStack).getAmount(); - } - FluidStack fluid = this.getFluidStackWithSameFluid(fluidStack); - if (fluid==null) - { - return null; - } - if (fluid.amount < drained) - { - drained = fluid.amount; - } - FluidStack stack = copyWithSize(fluid,drained); - if (doDrain) - { - fluid.amount -= drained; - if (fluid.amount <= 0) - { - this.fluidList.remove(fluid); - fluid = null; - } - } - return stack; - } - - public FluidStack getFluidStackWithSameFluid(Object fluidStack) - { - Iterator fli = fluidList.iterator(); - while(fli.hasNext()) - { - FluidStack fluid=fli.next(); - if(fluid!=null) - { - if(fluidStack instanceof FluidStack) - { - if(fluid.isFluidEqual((FluidStack)fluidStack)) - { - return fluid; - } - } - else - { - if(((IRecipeInputFluid)fluidStack).matches(fluid)) - { - return fluid; - } - } - } - } + + public FluidStack drain(Object fluidStack, boolean doDrain) { + if (fluidList.isEmpty()) { + return null; + } + int drained = 0; + if (fluidStack instanceof FluidStack) { + drained = ((FluidStack) fluidStack).amount; + } else { + drained = ((IRecipeInputFluid) fluidStack).getAmount(); + } + FluidStack fluid = this.getFluidStackWithSameFluid(fluidStack); + if (fluid == null) { + return null; + } + if (fluid.amount < drained) { + drained = fluid.amount; + } + FluidStack stack = copyWithSize(fluid, drained); + if (doDrain) { + fluid.amount -= drained; + if (fluid.amount <= 0) { + this.fluidList.remove(fluid); + } + } + return stack; + } + + public FluidStack getFluidStackWithSameFluid(Object fluidStack) { + Iterator fli = fluidList.iterator(); + while (fli.hasNext()) { + FluidStack fluid = fli.next(); + if (fluid != null) { + if (fluidStack instanceof FluidStack) { + if (fluid.isFluidEqual((FluidStack) fluidStack)) { + return fluid; + } + } else { + if (((IRecipeInputFluid) fluidStack).matches(fluid)) { + return fluid; + } + } + } + } return null; - } - - public int getNumberOfFluids() - { + } + + public int getNumberOfFluids() { return this.fluidList.size(); } - public void setFluidAmount(int amount1, int index) - { - if(this.fluidList.size()<=index) - { - while(this.fluidList.size()<=index) - { - this.fluidList.add(new FluidStack(FluidRegistry.WATER,1)); + public void setFluidAmount(int amount1, int index) { + if (this.fluidList.size() <= index) { + while (this.fluidList.size() <= index) { + this.fluidList.add(new FluidStack(FluidRegistry.WATER, 1)); } } - this.fluidList.get(index).amount=amount1; + this.fluidList.get(index).amount = amount1; } - - public int getFluidAmount(int index) - { - if(this.fluidList.size()<=index || this.fluidList.get(index)==null) - { + + public int getFluidAmount(int index) { + if (this.fluidList.size() <= index || this.fluidList.get(index) == null) { return 0; } return this.fluidList.get(index).amount; } - public int getFluidID(int i) - { - if(this.fluidList.get(i)==null) - { + public int getFluidID(int i) { + if (this.fluidList.get(i) == null) { return -1; } return this.fluidList.get(i).getFluid().getID(); } - - public void sortFluidsByDensity() - { + + public void sortFluidsByDensity() { Map sortMap = new HashMap(); int[] keysArray = new int[fluidList.size()]; - Iterator fli = fluidList.iterator(); - while(fli.hasNext()) - { - FluidStack fluid=fli.next(); - if(fluid==null) - { - return; - } - int key = Math.round(IHLFluid.getRealDensity(fluid.getFluid())*100F); - while(sortMap.containsKey(key)) - { - key++; - } - sortMap.put(key, fluid); - keysArray[fluidList.indexOf(fluid)]=key; - } + Iterator fli = fluidList.iterator(); + while (fli.hasNext()) { + FluidStack fluid = fli.next(); + if (fluid == null) { + return; + } + int key = Math.round(IHLFluid.getRealDensity(fluid.getFluid()) * 100F); + while (sortMap.containsKey(key)) { + key++; + } + sortMap.put(key, fluid); + keysArray[fluidList.indexOf(fluid)] = key; + } Arrays.sort(keysArray); ArrayList newFluidList = new ArrayList(); - for(int i=keysArray.length-1;i>=0;i--) - { + for (int i = keysArray.length - 1; i >= 0; i--) { newFluidList.add(sortMap.get(keysArray[i])); } this.fluidList.clear(); this.fluidList.addAll(newFluidList); } - public FluidStack getFluid(int i) - { + public FluidStack getFluid(int i) { return this.fluidList.get(i); } - public void setTag(String string, int t1_1) - { - if(this.getFluid().tag==null) - { - this.getFluid().tag=new NBTTagCompound(); + public void setTag(String string, int t1_1) { + if (this.getFluid().tag == null) { + this.getFluid().tag = new NBTTagCompound(); } this.getFluid().tag.setInteger(string, t1_1); } - public void setEmpty() - { + public void setEmpty() { this.fluidList.clear(); } - public int getTemperature() - { - return this.temperature; - } - - public void setTemperature(int t1) - { - this.temperature=t1; - } - - public List getFluidList() - { + public List getFluidList() { return this.fluidList; } - public void drain(List fluidInputs, boolean doDrain) - { - if(fluidInputs!=null && !fluidInputs.isEmpty()) - { + public void drain(List fluidInputs, boolean doDrain) { + if (fluidInputs != null && !fluidInputs.isEmpty()) { Iterator fsi = fluidInputs.iterator(); - while(fsi.hasNext()) - { + while (fsi.hasNext()) { this.drain(fsi.next(), doDrain); } } } - public void fill(List fluidOutputs, boolean doFill) - { - if(fluidOutputs!=null && !fluidOutputs.isEmpty()) - { + public void fill(List fluidOutputs, boolean doFill) { + if (fluidOutputs != null && !fluidOutputs.isEmpty()) { Iterator fsi = fluidOutputs.iterator(); - while(fsi.hasNext()) - { + while (fsi.hasNext()) { this.fill(fsi.next(), doFill); } } } - - private FluidStack copyWithSize(FluidStack resource, int amount1) - { + + private FluidStack copyWithSize(FluidStack resource, int amount1) { FluidStack fluid = resource.copy(); - fluid.amount=amount1; - if(resource.tag!=null) - { - fluid.tag=(NBTTagCompound) resource.tag.copy(); + fluid.amount = amount1; + if (resource.tag != null) { + fluid.tag = (NBTTagCompound) resource.tag.copy(); } - return fluid; + return fluid; } - public FluidStack drain(IRecipeInputFluid fluidStack, int amount, boolean doDrain) - { - if (fluidList.isEmpty()) - { - return null; - } - int drained = amount; - FluidStack fluid = this.getFluidStackWithSameFluid(fluidStack); - if (fluid==null) - { - return null; - } - if (fluid.amount < drained) - { - drained = fluid.amount; - } - FluidStack stack = copyWithSize(fluid,drained); - if (doDrain) - { - fluid.amount -= drained; - if (fluid.amount <= 0) - { - this.fluidList.remove(fluid); - fluid = null; - } - } - return stack; + public FluidStack drain(IRecipeInputFluid fluidStack, int amount, boolean doDrain) { + if (fluidList.isEmpty()) { + return null; + } + int drained = amount; + FluidStack fluid = this.getFluidStackWithSameFluid(fluidStack); + if (fluid == null) { + return null; + } + if (fluid.amount < drained) { + drained = fluid.amount; + } + FluidStack stack = copyWithSize(fluid, drained); + if (doDrain) { + fluid.amount -= drained; + if (fluid.amount <= 0) { + this.fluidList.remove(fluid); + } + } + return stack; } - - public void checkCorrectState() - { - if(!this.fluidList.isEmpty()) - { - Iterator fsi=this.fluidList.iterator(); - while(fsi.hasNext()) - { + + public void checkCorrectState() { + if (!this.fluidList.isEmpty()) { + Iterator fsi = this.fluidList.iterator(); + while (fsi.hasNext()) { FluidStack fs = fsi.next(); - if(fs.amount<=0) - { + if (fs.amount <= 0) { fsi.remove(); } } -- cgit v1.2.3