diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b72d6e6a..bc9fcc497 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Refined Storage Changelog +### 0.8.17 +**Bugfixes** +- Fixed Grid causing sorting lag on the client + ### 0.8.16 **Bugfixes** - Fixed issue with IC2 integration causing console spam diff --git a/src/main/java/refinedstorage/gui/grid/GuiGrid.java b/src/main/java/refinedstorage/gui/grid/GuiGrid.java index 6f82c2c1d..2b9a94ffa 100755 --- a/src/main/java/refinedstorage/gui/grid/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/grid/GuiGrid.java @@ -1,5 +1,7 @@ package refinedstorage.gui.grid; +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Multimap; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; @@ -36,10 +38,10 @@ public class GuiGrid extends GuiBase { public static final GridSortingQuantity SORTING_QUANTITY = new GridSortingQuantity(); public static final GridSortingName SORTING_NAME = new GridSortingName(); - public static List ITEMS = new ArrayList<>(); + public static Multimap ITEMS = ArrayListMultimap.create(); public static List SORTED_ITEMS = new ArrayList<>(); - public static boolean markedForSorting; + private static boolean markedForSorting; private GuiTextField searchField; @@ -48,6 +50,10 @@ public class GuiGrid extends GuiBase { private int slotNumber; + public static void markForSorting() { + markedForSorting = true; + } + public GuiGrid(ContainerGrid container, IGrid grid) { super(container, 227, (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 247 : 208); @@ -95,7 +101,7 @@ public class GuiGrid extends GuiBase { List sortedItems = new ArrayList<>(); if (grid.isConnected()) { - sortedItems.addAll(ITEMS); + sortedItems.addAll(ITEMS.values()); String query = searchField.getText().trim().toLowerCase(); diff --git a/src/main/java/refinedstorage/network/MessageGridDelta.java b/src/main/java/refinedstorage/network/MessageGridDelta.java index dbb765f82..27d961c94 100755 --- a/src/main/java/refinedstorage/network/MessageGridDelta.java +++ b/src/main/java/refinedstorage/network/MessageGridDelta.java @@ -1,6 +1,7 @@ package refinedstorage.network; import io.netty.buffer.ByteBuf; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; @@ -39,22 +40,24 @@ public class MessageGridDelta implements IMessage, IMessageHandler - GuiGrid.markedForSorting = true); + }, parameter -> GuiGrid.markForSorting()); public static final TileDataParameter SORTING_DIRECTION = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer() { @Override @@ -68,7 +67,7 @@ public class TileGrid extends TileNode implements IGrid { tile.markDirty(); } } - }, parameter -> GuiGrid.markedForSorting = true); + }, parameter -> GuiGrid.markForSorting()); public static final TileDataParameter SORTING_TYPE = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer() { @Override @@ -84,7 +83,7 @@ public class TileGrid extends TileNode implements IGrid { tile.markDirty(); } } - }, parameter -> GuiGrid.markedForSorting = true); + }, parameter -> GuiGrid.markForSorting()); public static final TileDataParameter SEARCH_BOX_MODE = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer() { @Override diff --git a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java index 1e3303833..4981e7761 100755 --- a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java +++ b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java @@ -116,7 +116,7 @@ public class WirelessGrid implements IGrid { this.viewType = type; - GuiGrid.markedForSorting = true; + GuiGrid.markForSorting(); } @Override @@ -125,7 +125,7 @@ public class WirelessGrid implements IGrid { this.sortingType = type; - GuiGrid.markedForSorting = true; + GuiGrid.markForSorting(); } @Override @@ -134,7 +134,7 @@ public class WirelessGrid implements IGrid { this.sortingDirection = direction; - GuiGrid.markedForSorting = true; + GuiGrid.markForSorting(); } @Override