summaryrefslogtreecommitdiff
path: root/ihl/flexible_cable
diff options
context:
space:
mode:
authorFoghrye4 <foghrye4@gmail.com>2017-06-13 20:58:18 +0300
committerFoghrye4 <foghrye4@gmail.com>2017-06-13 20:58:18 +0300
commit1da8dcd58647e34c9af94ceeecaeaf3b0d08c48c (patch)
treef9de575627405d0c407b2afb442ab18a6fbea01f /ihl/flexible_cable
parent50d62a1298f05d6d440a5bc261a0fdf9ffece893 (diff)
enet update
Diffstat (limited to 'ihl/flexible_cable')
-rw-r--r--ihl/flexible_cable/AnchorTileEntity.java11
-rw-r--r--ihl/flexible_cable/FlexibleCableHolderBaseTileEntity.java17
-rw-r--r--ihl/flexible_cable/IHLENet.java2
-rw-r--r--ihl/flexible_cable/IHLGrid.java27
-rw-r--r--ihl/flexible_cable/PowerCableNodeEntity.java5
-rw-r--r--ihl/flexible_cable/RectifierTransformerUnitTileEntity.java8
-rw-r--r--ihl/flexible_cable/SubAnchorEnergyNetNode.java23
-rw-r--r--ihl/flexible_cable/SubRTUEnergyNetNode.java15
8 files changed, 102 insertions, 6 deletions
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();
+ }
+
}