diff --git a/src/main/java/ellpeck/actuallyadditions/misc/LaserRelayConnectionHandler.java b/src/main/java/ellpeck/actuallyadditions/misc/LaserRelayConnectionHandler.java index 43173472c..0fdabef7c 100644 --- a/src/main/java/ellpeck/actuallyadditions/misc/LaserRelayConnectionHandler.java +++ b/src/main/java/ellpeck/actuallyadditions/misc/LaserRelayConnectionHandler.java @@ -68,8 +68,10 @@ public class LaserRelayConnectionHandler{ */ public ArrayList getConnectionsFor(WorldPos relay){ ArrayList allPairs = new ArrayList(); - for(ArrayList aNetwork : this.networks){ - for(ConnectionPair pair : aNetwork){ + ArrayList> theNetworks = new ArrayList>(this.networks); + for(ArrayList aNetwork : theNetworks){ + ArrayList pairs = new ArrayList(aNetwork); + for(ConnectionPair pair : pairs){ if(pair.contains(relay)){ allPairs.add(pair); } @@ -86,7 +88,8 @@ public class LaserRelayConnectionHandler{ if(network != null){ //Setup new network (so that splitting a network will cause it to break into two) this.networks.remove(network); - for(ConnectionPair pair : network){ + ArrayList pairs = new ArrayList(network); + for(ConnectionPair pair : pairs){ if(!pair.contains(relay)){ this.addConnection(pair.firstRelay, pair.secondRelay); } @@ -99,8 +102,10 @@ public class LaserRelayConnectionHandler{ * Gets a Network for a Relay */ public ArrayList getNetworkFor(WorldPos relay){ - for(ArrayList aNetwork : this.networks){ - for(ConnectionPair pair : aNetwork){ + ArrayList> theNetworks = new ArrayList>(this.networks); + for(ArrayList aNetwork : theNetworks){ + ArrayList pairs = new ArrayList(aNetwork); + for(ConnectionPair pair : pairs){ if(pair.contains(relay)){ return aNetwork; } @@ -156,7 +161,8 @@ public class LaserRelayConnectionHandler{ * (Actually puts everything from the second network into the first one and removes the second one) */ public void mergeNetworks(ArrayList firstNetwork, ArrayList secondNetwork){ - for(ConnectionPair secondPair : secondNetwork){ + ArrayList pairs = new ArrayList(secondNetwork); + for(ConnectionPair secondPair : pairs){ firstNetwork.add(secondPair); } this.networks.remove(secondNetwork); @@ -167,7 +173,8 @@ public class LaserRelayConnectionHandler{ public int transferEnergyToReceiverInNeed(ArrayList network, int maxTransfer, boolean simulate){ int transmitted = 0; //Go through all of the connections in the network - for(ConnectionPair pair : network){ + ArrayList pairs = new ArrayList(network); + for(ConnectionPair pair : pairs){ WorldPos[] relays = new WorldPos[]{pair.firstRelay, pair.secondRelay}; //Go through both relays in the connection for(WorldPos relay : relays){