diff --git a/src/main/java/mekanism/api/transmitters/TransmitterNetworkRegistry.java b/src/main/java/mekanism/api/transmitters/TransmitterNetworkRegistry.java index 7a43930aa..0f9c1c5fb 100644 --- a/src/main/java/mekanism/api/transmitters/TransmitterNetworkRegistry.java +++ b/src/main/java/mekanism/api/transmitters/TransmitterNetworkRegistry.java @@ -115,7 +115,7 @@ public class TransmitterNetworkRegistry for(IGridTransmitter invalid : invalidTransmitters) { - if(!invalid.isOrphan()) + if(!(invalid.isOrphan() && invalid.isValid())) { DynamicNetwork n = invalid.getTransmitterNetwork(); @@ -163,7 +163,7 @@ public class TransmitterNetworkRegistry case 0: if(MekanismAPI.debug) { - logger.info("No networks found. Creating new network"); + logger.info("No networks found. Creating new network for " + finder.connectedTransmitters.size() + " transmitters"); } network = startOrphan.createEmptyNetwork(); @@ -172,7 +172,7 @@ public class TransmitterNetworkRegistry case 1: if(MekanismAPI.debug) { - logger.info("Using single found network"); + logger.info("Adding " + finder.connectedTransmitters.size() + " transmitters to single found network"); } network = finder.networksFound.iterator().next(); @@ -181,7 +181,7 @@ public class TransmitterNetworkRegistry default: if(MekanismAPI.debug) { - logger.info("Merging " + finder.networksFound.size() + " networks"); + logger.info("Merging " + finder.networksFound.size() + " networks with " + finder.connectedTransmitters.size() + " new transmitters"); } network = startOrphan.mergeNetworks(finder.networksFound); diff --git a/src/main/java/mekanism/common/multipart/MultipartTransmitter.java b/src/main/java/mekanism/common/multipart/MultipartTransmitter.java index 03265e0b1..015f21c52 100644 --- a/src/main/java/mekanism/common/multipart/MultipartTransmitter.java +++ b/src/main/java/mekanism/common/multipart/MultipartTransmitter.java @@ -74,7 +74,7 @@ public class MultipartTransmitter> extends Tran @Override public boolean isValid() { - return !(getPart().tile() == null || getPart().tile().isInvalid()) && coord().exists(world()); + return getPart().tile() != null && !getPart().tile().isInvalid() && !getPart().unloaded && coord().exists(world()); } @Override diff --git a/src/main/java/mekanism/common/multipart/PartTransmitter.java b/src/main/java/mekanism/common/multipart/PartTransmitter.java index da8498aaf..5772a1375 100644 --- a/src/main/java/mekanism/common/multipart/PartTransmitter.java +++ b/src/main/java/mekanism/common/multipart/PartTransmitter.java @@ -13,6 +13,8 @@ public abstract class PartTransmitter> extends { public MultipartTransmitter transmitterDelegate; + public boolean unloaded = true; + public PartTransmitter() { transmitterDelegate = new MultipartTransmitter<>(this); @@ -36,6 +38,8 @@ public abstract class PartTransmitter> extends else { MinecraftForge.EVENT_BUS.post(new NetworkClientRequest(tile())); } + + unloaded = false; } public abstract N createNewNetwork(); @@ -46,6 +50,8 @@ public abstract class PartTransmitter> extends public void onChunkUnload() { super.onChunkUnload(); + + unloaded = true; if(!world().isRemote) {