Multi-block clean up should be cleaner now.

This commit is contained in:
AlgorithmX2
2014-06-13 14:39:36 -05:00
parent ed85b174c6
commit 730200ed8d
6 changed files with 51 additions and 28 deletions
+2 -1
View File
@@ -3,10 +3,11 @@ package appeng.me.cluster;
public interface IAEMultiBlock public interface IAEMultiBlock
{ {
void disconnect(); void disconnect(boolean b);
IAECluster getCluster(); IAECluster getCluster();
boolean isValid(); boolean isValid();
} }
@@ -73,7 +73,7 @@ public class QuantumCalculator extends MBCalculator
c.Ring[ringNum++] = te; c.Ring[ringNum++] = te;
} }
te.updateStatus( c, flags ); te.updateStatus( c, flags, true );
} }
} }
} }
@@ -89,7 +89,7 @@ public class QuantumCalculator extends MBCalculator
@Override @Override
public void disconnect() public void disconnect()
{ {
tqb.disconnect(); tqb.disconnect(true);
} }
@Override @Override
@@ -29,7 +29,7 @@ public class QuantumCluster implements ILocatable, IAECluster
public WorldCoord min; public WorldCoord min;
public WorldCoord max; public WorldCoord max;
public boolean isDestroyed = false; public boolean isDestroyed = false;
private boolean updateStatus = true; public boolean updateStatus = true;
boolean registered = false; boolean registered = false;
private long thisSide; private long thisSide;
@@ -211,14 +211,11 @@ public class QuantumCluster implements ILocatable, IAECluster
MinecraftForge.EVENT_BUS.post( new LocatableEventAnnounce( this, LocatableEvent.Unregister ) ); MinecraftForge.EVENT_BUS.post( new LocatableEventAnnounce( this, LocatableEvent.Unregister ) );
} }
if ( updateStatus ) center.updateStatus( null, (byte) -1, updateStatus );
{
center.updateStatus( null, (byte) -1 );
for (TileQuantumBridge r : Ring) for (TileQuantumBridge r : Ring)
{ {
r.updateStatus( null, (byte) -1 ); r.updateStatus( null, (byte) -1, updateStatus );
}
} }
center = null; center = null;
@@ -60,7 +60,7 @@ public class SpatialPylonCalculator extends MBCalculator
@Override @Override
public void disconnect() public void disconnect()
{ {
tqb.disconnect(); tqb.disconnect(true);
} }
@Override @Override
+27 -2
View File
@@ -130,11 +130,19 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock
} }
@Override @Override
public void disconnect() public void disconnect(boolean affectWorld)
{ {
if ( clust != null ) if ( clust != null )
{
if ( ! affectWorld )
clust.updateStatus = false;
clust.destroy(); clust.destroy();
}
clust = null; clust = null;
if ( affectWorld )
gridProxy.setValidSides( EnumSet.noneOf( ForgeDirection.class ) ); gridProxy.setValidSides( EnumSet.noneOf( ForgeDirection.class ) );
} }
@@ -158,10 +166,26 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock
gridProxy.setVisualRepresentation( ring ); gridProxy.setVisualRepresentation( ring );
} }
public void updateStatus(QuantumCluster c, byte flags) @Override
public void invalidate()
{
disconnect(false);
super.invalidate();
}
@Override
public void onChunkUnload()
{
disconnect(false);
super.onChunkUnload();
}
public void updateStatus(QuantumCluster c, byte flags, boolean affectWorld)
{ {
clust = c; clust = c;
if ( affectWorld )
{
if ( xdex != flags ) if ( xdex != flags )
{ {
xdex = flags; xdex = flags;
@@ -175,6 +199,7 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock
else else
gridProxy.setValidSides( EnumSet.allOf( ForgeDirection.class ) ); gridProxy.setValidSides( EnumSet.allOf( ForgeDirection.class ) );
} }
}
public long getQEDest() public long getQEDest()
{ {
+3 -3
View File
@@ -127,15 +127,15 @@ public class TileSpatialPylon extends AENetworkTile implements IAEMultiBlock
@Override @Override
public void invalidate() public void invalidate()
{ {
disconnect(false);
super.invalidate(); super.invalidate();
disconnect();
} }
@Override @Override
public void onChunkUnload() public void onChunkUnload()
{ {
disconnect(false);
super.onChunkUnload(); super.onChunkUnload();
disconnect();
} }
public void onNeighborBlockChange() public void onNeighborBlockChange()
@@ -207,7 +207,7 @@ public class TileSpatialPylon extends AENetworkTile implements IAEMultiBlock
} }
@Override @Override
public void disconnect() public void disconnect(boolean b)
{ {
if ( clust != null ) if ( clust != null )
{ {