From 3913bbf815652539fb89a915410048ca4481151c Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Fri, 26 Aug 2016 16:06:40 +0200 Subject: [PATCH] Implement equals/hashCode on nodes --- .../api/network/INetworkNodeGraph.java | 7 ---- .../api/network/NetworkUtils.java | 9 +---- .../apiimpl/network/NetworkNodeGraph.java | 35 ++++++------------- .../network/MessageGridItemDelta.java | 2 +- .../network/MessageGridItemUpdate.java | 2 +- .../java/refinedstorage/tile/TileNode.java | 12 +++++++ 6 files changed, 25 insertions(+), 42 deletions(-) diff --git a/src/main/java/refinedstorage/api/network/INetworkNodeGraph.java b/src/main/java/refinedstorage/api/network/INetworkNodeGraph.java index e63db1ae9..9556db0d9 100755 --- a/src/main/java/refinedstorage/api/network/INetworkNodeGraph.java +++ b/src/main/java/refinedstorage/api/network/INetworkNodeGraph.java @@ -1,10 +1,8 @@ package refinedstorage.api.network; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; import java.util.List; -import java.util.Set; /** * A graph of all the nodes connected to a network. @@ -23,11 +21,6 @@ public interface INetworkNodeGraph { */ List all(); - /** - * @return A set of hashes of all connected nodes, see {@link NetworkUtils#getNodeHashCode(World, INetworkNode)} - */ - Set allHashes(); - /** * Disconnects and notifies all connected nodes. */ diff --git a/src/main/java/refinedstorage/api/network/NetworkUtils.java b/src/main/java/refinedstorage/api/network/NetworkUtils.java index 64bb7eda8..9c55ad938 100755 --- a/src/main/java/refinedstorage/api/network/NetworkUtils.java +++ b/src/main/java/refinedstorage/api/network/NetworkUtils.java @@ -3,7 +3,6 @@ package refinedstorage.api.network; import io.netty.buffer.ByteBuf; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.world.World; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fml.common.network.ByteBufUtils; @@ -42,13 +41,7 @@ public final class NetworkUtils { return stack.getFluid().hashCode() * (stack.tag != null ? stack.tag.hashCode() : 1); } - public static int getNodeHashCode(World world, INetworkNode node) { - int result = node.getPosition().hashCode(); - result = 31 * result + world.provider.getDimension(); - return result; - } - - public static void writeStack(ByteBuf buf, INetworkMaster network, ItemStack stack) { + public static void writeItemStack(ByteBuf buf, INetworkMaster network, ItemStack stack) { buf.writeInt(Item.getIdFromItem(stack.getItem())); buf.writeInt(stack.stackSize); buf.writeInt(stack.getItemDamage()); diff --git a/src/main/java/refinedstorage/apiimpl/network/NetworkNodeGraph.java b/src/main/java/refinedstorage/apiimpl/network/NetworkNodeGraph.java index a5322e772..f1e67bb0a 100755 --- a/src/main/java/refinedstorage/apiimpl/network/NetworkNodeGraph.java +++ b/src/main/java/refinedstorage/apiimpl/network/NetworkNodeGraph.java @@ -7,7 +7,6 @@ import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; import refinedstorage.api.network.INetworkNode; import refinedstorage.api.network.INetworkNodeGraph; -import refinedstorage.api.network.NetworkUtils; import refinedstorage.tile.TileController; import refinedstorage.tile.TileNetworkTransmitter; @@ -17,7 +16,6 @@ public class NetworkNodeGraph implements INetworkNodeGraph { private TileController controller; private List nodes = new ArrayList<>(); - private Set nodeHashes = new HashSet<>(); public NetworkNodeGraph(TileController controller) { this.controller = controller; @@ -36,7 +34,6 @@ public class NetworkNodeGraph implements INetworkNodeGraph { World world = getWorld(); List newNodes = new ArrayList<>(); - Set newNodeHashes = new HashSet<>(); Set checked = new HashSet<>(); Queue toCheck = new ArrayDeque<>(); @@ -66,7 +63,6 @@ public class NetworkNodeGraph implements INetworkNodeGraph { INetworkNode node = (INetworkNode) tile; newNodes.add(node); - newNodeHashes.add(NetworkUtils.getNodeHashCode(world, node)); if (tile instanceof TileNetworkTransmitter) { final TileNetworkTransmitter transmitter = (TileNetworkTransmitter) tile; @@ -86,7 +82,6 @@ public class NetworkNodeGraph implements INetworkNodeGraph { dimensionGraph.rebuild(transmitter.getReceiver(), false); newNodes.addAll(dimensionGraph.all()); - newNodeHashes.addAll(dimensionGraph.allHashes()); } } else { BlockPos receiver = transmitter.getReceiver(); @@ -109,34 +104,30 @@ public class NetworkNodeGraph implements INetworkNodeGraph { } } - List oldNodes = new ArrayList<>(nodes); - Set oldNodeHashes = new HashSet<>(nodeHashes); - - this.nodes = newNodes; - this.nodeHashes = newNodeHashes; + boolean changed = false; if (notify) { - boolean changed = false; - - for (INetworkNode newNode : nodes) { - if (!oldNodeHashes.contains(NetworkUtils.getNodeHashCode(newNode.getNodeWorld(), newNode))) { + for (INetworkNode newNode : newNodes) { + if (!nodes.contains(newNode)) { newNode.onConnected(controller); changed = true; } } - for (INetworkNode oldNode : oldNodes) { - if (!nodeHashes.contains(NetworkUtils.getNodeHashCode(oldNode.getNodeWorld(), oldNode))) { + for (INetworkNode oldNode : nodes) { + if (!newNodes.contains(oldNode)) { oldNode.onDisconnected(controller); changed = true; } } + } - if (changed) { - controller.getDataManager().sendParameterToWatchers(TileController.NODES); - } + this.nodes = newNodes; + + if (changed) { + controller.getDataManager().sendParameterToWatchers(TileController.NODES); } } @@ -145,11 +136,6 @@ public class NetworkNodeGraph implements INetworkNodeGraph { return nodes; } - @Override - public Set allHashes() { - return nodeHashes; - } - @Override public void disconnectAll() { for (INetworkNode node : nodes) { @@ -159,7 +145,6 @@ public class NetworkNodeGraph implements INetworkNodeGraph { } nodes.clear(); - nodeHashes.clear(); controller.getDataManager().sendParameterToWatchers(TileController.NODES); } diff --git a/src/main/java/refinedstorage/network/MessageGridItemDelta.java b/src/main/java/refinedstorage/network/MessageGridItemDelta.java index 04fdb7c03..7e34bac2e 100755 --- a/src/main/java/refinedstorage/network/MessageGridItemDelta.java +++ b/src/main/java/refinedstorage/network/MessageGridItemDelta.java @@ -35,7 +35,7 @@ public class MessageGridItemDelta implements IMessage, IMessageHandler