From 1da8dcd58647e34c9af94ceeecaeaf3b0d08c48c Mon Sep 17 00:00:00 2001 From: Foghrye4 Date: Tue, 13 Jun 2017 20:58:18 +0300 Subject: enet update --- 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 ++++++++++++ 8 files changed, 102 insertions(+), 6 deletions(-) (limited to 'ihl/flexible_cable') 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(); + } + } -- cgit v1.2.3