Make everything work again
This commit is contained in:
@@ -36,7 +36,7 @@ public class BlockExternalStorage extends BlockNode {
|
||||
public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block) {
|
||||
super.neighborChanged(state, world, pos, block);
|
||||
|
||||
if (!world.isRemote) {
|
||||
if (!world.isRemote && ((TileExternalStorage) world.getTileEntity(pos)).isConnected()) {
|
||||
((TileExternalStorage) world.getTileEntity(pos)).updateStorage();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -194,12 +194,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
if (couldRun != canRun()) {
|
||||
couldRun = canRun();
|
||||
|
||||
if (!couldRun && !nodes.isEmpty()) {
|
||||
disconnectAll();
|
||||
} else if (couldRun) {
|
||||
rebuildNodes();
|
||||
}
|
||||
}
|
||||
|
||||
if (getEnergyScaledForDisplay() != lastEnergyDisplay) {
|
||||
lastEnergyDisplay = getEnergyScaledForDisplay();
|
||||
@@ -225,6 +221,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
}
|
||||
|
||||
nodes.clear();
|
||||
nodesPos.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -383,6 +380,14 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
|
||||
@Override
|
||||
public void rebuildNodes() {
|
||||
if (!canRun()) {
|
||||
if (!nodes.isEmpty()) {
|
||||
disconnectAll();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
List<INetworkNode> newNodes = new ArrayList<INetworkNode>();
|
||||
Set<BlockPos> newNodesPos = new HashSet<BlockPos>();
|
||||
|
||||
@@ -424,20 +429,23 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
}
|
||||
}
|
||||
|
||||
for (INetworkNode newNode : newNodes) {
|
||||
if (!nodesPos.contains(newNode.getPosition())) {
|
||||
List<INetworkNode> oldNodes = new ArrayList<INetworkNode>(nodes);
|
||||
Set<BlockPos> oldNodesPos = new HashSet<BlockPos>(nodesPos);
|
||||
|
||||
this.nodes = newNodes;
|
||||
this.nodesPos = newNodesPos;
|
||||
|
||||
for (INetworkNode newNode : nodes) {
|
||||
if (!oldNodesPos.contains(newNode.getPosition())) {
|
||||
newNode.onConnected(this);
|
||||
}
|
||||
}
|
||||
|
||||
for (INetworkNode oldNode : nodes) {
|
||||
if (!newNodesPos.contains(oldNode.getPosition())) {
|
||||
for (INetworkNode oldNode : oldNodes) {
|
||||
if (!nodesPos.contains(oldNode.getPosition())) {
|
||||
oldNode.onDisconnected();
|
||||
}
|
||||
}
|
||||
|
||||
this.nodes = newNodes;
|
||||
this.nodesPos = newNodesPos;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -667,6 +675,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
@Override
|
||||
public void setRedstoneMode(RedstoneMode mode) {
|
||||
this.redstoneMode = mode;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -42,6 +42,7 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I
|
||||
|
||||
private List<ExternalStorage> storages = new ArrayList<ExternalStorage>();
|
||||
private int lastDrawerCount;
|
||||
private boolean updatedOnce;
|
||||
|
||||
@Override
|
||||
public int getEnergyUsage() {
|
||||
@@ -57,17 +58,23 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I
|
||||
super.onConnectionChange(network, state);
|
||||
|
||||
network.getStorage().rebuild();
|
||||
|
||||
updatedOnce = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
if (ticks == 0) {
|
||||
if (isConnected()) {
|
||||
if (!updatedOnce) {
|
||||
updateStorage();
|
||||
|
||||
updatedOnce = true;
|
||||
} else if (getFacingTile() instanceof IDrawerGroup && lastDrawerCount != ((IDrawerGroup) getFacingTile()).getDrawerCount()) {
|
||||
lastDrawerCount = ((IDrawerGroup) getFacingTile()).getDrawerCount();
|
||||
|
||||
updateStorage();
|
||||
}
|
||||
}
|
||||
|
||||
super.update();
|
||||
}
|
||||
@@ -192,10 +199,8 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I
|
||||
}
|
||||
}
|
||||
|
||||
if (network != null) {
|
||||
network.getStorage().rebuild();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addStorages(List<IStorage> storages) {
|
||||
|
||||
Reference in New Issue
Block a user