diff options
19 files changed, 362 insertions, 438 deletions
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<IEnergyNetNode> 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 ContainerBase<ElectrolysisBathTil icrafting.sendProgressBarUpdate(this, 0, this.tileEntity.progress);
}
- if (this.tileEntity.temperature != this.lastTemperature)
- {
- icrafting.sendProgressBarUpdate(this, 1, this.tileEntity.temperature);
- }
}
this.lastNumberOfFluids = this.tileEntity.getNumberOfFluidsInTank();
this.lastFluidAmount = this.tileEntity.getTankAmount();
this.lastProgress = this.tileEntity.progress;
- this.lastTemperature = this.tileEntity.temperature;
}
@Override
@@ -81,9 +76,6 @@ public class ElectrolysisBathContainer extends ContainerBase<ElectrolysisBathTil case 0:
this.tileEntity.progress=(short) value;
break;
- case 1:
- this.tileEntity.temperature=(short) value;
- break;
}
}
diff --git a/ihl/processing/chemistry/ElectrolysisBathTileEntity.java b/ihl/processing/chemistry/ElectrolysisBathTileEntity.java index 8a498b6..f4743df 100644 --- a/ihl/processing/chemistry/ElectrolysisBathTileEntity.java +++ b/ihl/processing/chemistry/ElectrolysisBathTileEntity.java @@ -42,7 +42,6 @@ public class ElectrolysisBathTileEntity extends FlexibleCableHolderBaseTileEntit public short progress;
protected short operationLength=20000;//Short.MAX_VALUE=32767
private final IHLFluidTank fluidTank = new IHLFluidTank(2000);
- public short temperature=20;
private final static double resistance=5D;
public ElectrolysisBathTileEntity() {
@@ -88,7 +87,6 @@ public class ElectrolysisBathTileEntity extends FlexibleCableHolderBaseTileEntit public void updateEntityServer()
{
super.updateEntityServer();
- temperature=(short) (this.fluidTank.getTemperature()-273);
IHLUtils.handleFluidSlotsBehaviour(fillInputSlot, drainInputSlot, emptyFluidItemsSlot, fluidTank);
if (this.canOperate())
{
@@ -97,10 +95,9 @@ public class ElectrolysisBathTileEntity extends FlexibleCableHolderBaseTileEntit {
IC2.network.get().initiateTileEntityEvent(this, 0, true);
}
- if(this.getGrid().energy>0D)
+ 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-20<temperatureOfCoolant)
- {
- return 0;
- }
- int L = amountOfGas;
- int t2 = boilingPointOfGas;
- int t1 = temperatureOfCoolant;
- int dt1=t2-t1;
- float maxQ=H*L*densityOfGas;
- int t1_1 = t1;
- for(int i=0;i<10;i++)
- {
- float Q2=H*L*densityOfGas;
- t1_1 = t1+(int)(Q2/fluidC/amountOfCoolant/densityOfCoolant);
- int dt2=t2-t1_1;
- float deltaT;
- if(dt1>2*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())
{
@@ -334,12 +332,6 @@ public class ImpregnatingMachineTileEntity extends TileEntityInventory implement }
@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<FluidStack> fluidList = new ArrayList<FluidStack>();
- private final int capacity;
- private int temperature=293;
+public class IHLFluidTank implements IFluidTank {
+ private final List<FluidStack> fluidList = new ArrayList<FluidStack>();
+ 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<fluidList1.tagCount();i++)
- {
- NBTTagCompound fluidNBT1 = fluidList1.getCompoundTagAt(i);
- FluidStack fluid = FluidStack.loadFluidStackFromNBT(fluidNBT1);
- if (fluid != null)
- {
- fluidList.add(fluid);
- }
- }
- temperature=nbt.getInteger("temperature");
- }
- return this;
- }
+ public IHLFluidTank(int capacity, boolean isOpenVessel1) {
+ this.capacity = capacity;
+ }
- public NBTTagCompound writeToNBT(NBTTagCompound nbt)
- {
- if (!fluidList.isEmpty())
- {
- NBTTagList fluids = new NBTTagList();
- Iterator<FluidStack> 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<FluidStack> 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<FluidStack> 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<FluidStack> 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<FluidStack> 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<FluidStack> 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<Integer, FluidStack> sortMap = new HashMap<Integer, FluidStack>();
int[] keysArray = new int[fluidList.size()];
- Iterator<FluidStack> 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<FluidStack> 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<FluidStack> newFluidList = new ArrayList<FluidStack>();
- 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<FluidStack> getFluidList()
- {
+ public List<FluidStack> 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<FluidStack> fluidOutputs, boolean doFill)
- {
- if(fluidOutputs!=null && !fluidOutputs.isEmpty())
- {
+ public void fill(List<FluidStack> fluidOutputs, boolean doFill) {
+ if (fluidOutputs != null && !fluidOutputs.isEmpty()) {
Iterator<FluidStack> 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<FluidStack> fsi=this.fluidList.iterator();
- while(fsi.hasNext())
- {
+
+ public void checkCorrectState() {
+ if (!this.fluidList.isEmpty()) {
+ Iterator<FluidStack> fsi = this.fluidList.iterator();
+ while (fsi.hasNext()) {
FluidStack fs = fsi.next();
- if(fs.amount<=0)
- {
+ if (fs.amount <= 0) {
fsi.remove();
}
}
|
