diff --git a/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/PastelNetwork.java b/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/PastelNetwork.java index 6db0f5a12c..1812922920 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/PastelNetwork.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/PastelNetwork.java @@ -47,14 +47,18 @@ public void incorporate(PastelNetwork networkToIncorporate, PastelNodeBlockEntit PastelNodeType type = nodesToIncorporate.getKey(); for (PastelNodeBlockEntity nodeToIncorporate : nodesToIncorporate.getValue()) { this.loadedNodes.get(type).add(nodeToIncorporate); - nodeToIncorporate.setParentNetwork(this); updateNodePriority(nodeToIncorporate, nodeToIncorporate.getPriority()); } } - networkToIncorporate.graph.vertexSet().forEach(graph::addVertex); + networkToIncorporate.graph.vertexSet().forEach(pos -> { + if (this.world.getBlockEntity(pos) instanceof PastelNodeBlockEntity switchNode) + switchNode.setParentNetwork(this); + graph.addVertex(pos); + }); networkToIncorporate.graph.edgeSet().forEach(edge -> { graph.addEdge(networkToIncorporate.getGraph().getEdgeSource(edge), networkToIncorporate.getGraph().getEdgeTarget(edge)); }); + addEdge(node, otherNode); } public World getWorld() { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/ServerPastelNetwork.java b/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/ServerPastelNetwork.java index 589c4de7e7..573c6c964f 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/ServerPastelNetwork.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/ServerPastelNetwork.java @@ -43,7 +43,13 @@ public void removeEdge(PastelNodeBlockEntity node, PastelNodeBlockEntity parent) super.removeEdge(node, parent); this.transmissionLogic.invalidateCache(); } - + + @Override + public void addEdge(PastelNodeBlockEntity node, PastelNodeBlockEntity parent) { + super.addEdge(node, parent); + this.transmissionLogic.invalidateCache(); + } + @Override public void tick() { this.transmissions.tick(); diff --git a/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/ServerPastelNetworkManager.java b/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/ServerPastelNetworkManager.java index eab2741bca..0ae8292338 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/ServerPastelNetworkManager.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/ServerPastelNetworkManager.java @@ -175,9 +175,8 @@ private void checkForNetworkSplit(ServerPastelNetwork network) { PastelNetwork newNetwork = createNetwork(network.world, null); for (BlockPos disconnectedNode : disconnectedNodes) { var switchedNode = network.getWorld().getBlockEntity(disconnectedNode); - network.getGraph().removeVertex(disconnectedNode); if (switchedNode instanceof PastelNodeBlockEntity pastelNode) { - network.loadedNodes.get(pastelNode.getNodeType()).remove(pastelNode); + network.removeNode(pastelNode, NodeRemovalReason.DISCONNECT); newNetwork.addNode(pastelNode); pastelNode.setParentNetwork(newNetwork); }