Reworked storage network code, should fix weird machine disconnection issues

This commit is contained in:
Raoul Van den Berge
2016-08-26 19:37:37 +02:00
parent 528e3fcfe0
commit 6fe92e1b6c
28 changed files with 259 additions and 90 deletions

View File

@@ -18,12 +18,14 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.items.ItemHandlerHelper;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageBlocks;
import refinedstorage.api.RefinedStorageAPI;
import refinedstorage.api.autocrafting.ICraftingPattern;
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
import refinedstorage.api.autocrafting.ICraftingTask;
import refinedstorage.api.network.*;
import refinedstorage.api.network.grid.IFluidGridHandler;
import refinedstorage.api.network.grid.IItemGridHandler;
import refinedstorage.api.network.registry.INetworkRegistry;
import refinedstorage.api.storage.CompareUtils;
import refinedstorage.api.storage.fluid.IFluidStorage;
import refinedstorage.api.storage.fluid.IGroupedFluidStorage;
@@ -184,6 +186,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
private IControllerEnergyIC2 energyEU;
private ControllerEnergyTesla energyTesla;
private boolean destroyed;
private int lastEnergyDisplay;
private int lastEnergyComparator;
@@ -234,6 +238,12 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override
public void update() {
if (!worldObj.isRemote) {
INetworkRegistry registry = RefinedStorageAPI.getNetworkRegistry(worldObj);
if (!destroyed && registry.getNetwork(pos) == null) {
registry.addNetwork(this);
}
energyEU.update();
if (canRun()) {
@@ -335,9 +345,9 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override
public void invalidate() {
energyEU.invalidate();
super.invalidate();
energyEU.invalidate();
}
@Override
@@ -362,6 +372,14 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
energyEU.onChunkUnload();
}
public void onDestroyed() {
nodeGraph.disconnectAll();
destroyed = true;
RefinedStorageAPI.getNetworkRegistry(worldObj).removeNetwork(pos);
}
public IGroupedItemStorage getItemStorage() {
return itemStorage;
}