diff --git a/CHANGELOG.md b/CHANGELOG.md index c9b7bb520..ec3215f2a 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - Added Silk Touch Upgrade for Destructor (InusualZ) - Added Fortune Upgrade for Destructor (InusualZ) - Added ore dictionary compare toggle to storage I/O blocks (raoulvdberge) +- Controller sorts by energy usage in GUI (raoulvdberge) - The Constructor can now drop items in the world (raoulvdberge) - The Constructor can now place skulls (modmuss50) - The Destructor can now pick up items in the world (InusualZ) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java index 7bc3084fd..447cced99 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java @@ -114,22 +114,22 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR node.getEnergyUsage() ); - if (clientNode.getStack().getItem() != null) { - if (nodes.contains(clientNode)) { - for (ClientNode other : nodes) { - if (other.equals(clientNode)) { - other.setAmount(other.getAmount() + 1); + if (clientNode.getStack().getItem() == null) { + continue; + } - break; - } - } - } else { - nodes.add(clientNode); - } + if (nodes.contains(clientNode)) { + ClientNode other = nodes.get(nodes.indexOf(clientNode)); + + other.setAmount(other.getAmount() + 1); + } else { + nodes.add(clientNode); } } } + Collections.sort(nodes, CLIENT_NODE_COMPARATOR); + return nodes; } }); @@ -139,6 +139,14 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR private static final String NBT_CRAFTING_TASKS = "CraftingTasks"; + private static final Comparator CLIENT_NODE_COMPARATOR = (left, right) -> { + if (left.getEnergyUsage() == right.getEnergyUsage()) { + return 0; + } + + return (left.getEnergyUsage() > right.getEnergyUsage()) ? -1 : 1; + }; + private static final Comparator ITEM_SIZE_COMPARATOR = (left, right) -> { if (left.getStored() == right.getStored()) { return 0;