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