diff --git a/src/main/java/com/klikli_dev/occultism/client/gui/storage/StorageControllerGuiBase.java b/src/main/java/com/klikli_dev/occultism/client/gui/storage/StorageControllerGuiBase.java index bd7503041..838d52bf8 100644 --- a/src/main/java/com/klikli_dev/occultism/client/gui/storage/StorageControllerGuiBase.java +++ b/src/main/java/com/klikli_dev/occultism/client/gui/storage/StorageControllerGuiBase.java @@ -69,7 +69,6 @@ import java.util.stream.Collectors; public abstract class StorageControllerGuiBase extends AbstractContainerScreen implements IStorageControllerGui, IStorageControllerGuiContainer, ContainerListener { - //region Fields public static final int ORDER_AREA_OFFSET = 48; protected static final ResourceLocation BACKGROUND = new ResourceLocation(Occultism.MODID, "textures/gui/storage_controller_droparea.png"); @@ -101,9 +100,9 @@ public abstract class StorageControllerGuiBase cachedStacksToDisplay; + private String cachedSearchString; - //region Initialization public StorageControllerGuiBase(T container, Inventory playerInventory, Component name) { super(container, playerInventory, name); this.storageControllerContainer = container; @@ -126,9 +125,7 @@ public StorageControllerGuiBase(T container, Inventory playerInventory, Componen OccultismPackets.sendToServer(new MessageRequestStacks()); } - //endregion Initialization - //region Getter / Setter protected abstract boolean isGuiValid(); protected abstract BlockPos getEntityPosition(); @@ -141,9 +138,6 @@ public StorageControllerGuiBase(T container, Inventory playerInventory, Componen public abstract void setSortType(SortType sortType); - //endregion Getter / Setter - - //region Overrides @Override public Font getFontRenderer() { return this.font; @@ -425,9 +419,7 @@ public boolean charTyped(char typedChar, int keyCode) { return false; } - //endregion Overrides - //region Methods public void initButtons() { int controlButtonSize = 12; @@ -706,11 +698,8 @@ protected void buildPage(List objectsToDisplay) { protected void sortItemStacks(List stacksToDisplay) { stacksToDisplay.sort(new Comparator() { - //region Fields final int direction = StorageControllerGuiBase.this.getSortDirection().isDown() ? -1 : 1; - //endregion Fields - //region Overrides @Override public int compare(ItemStack a, ItemStack b) { switch (StorageControllerGuiBase.this.getSortType()) { @@ -727,7 +716,6 @@ public int compare(ItemStack a, ItemStack b) { } return 0; } - //endregion Overrides }); } @@ -735,11 +723,17 @@ protected List applySearchToItems() { String searchText = this.searchBar.getValue(); if (!searchText.equals("")) { + if (this.cachedStacksToDisplay != null && this.cachedSearchString != null && this.cachedSearchString.equals(searchText)) + return this.cachedStacksToDisplay; + List stacksToDisplay = new ArrayList<>(); for (ItemStack stack : this.stacks) { if (this.itemMatchesSearch(stack)) stacksToDisplay.add(stack); } + + this.cachedStacksToDisplay = stacksToDisplay; + this.cachedSearchString = searchText; return stacksToDisplay; } return new ArrayList<>(this.stacks); @@ -802,11 +796,8 @@ protected void sortMachines(List machinesToDisplay) { ResourceKey dimensionKey = this.minecraft.player.level.dimension(); machinesToDisplay.sort(new Comparator() { - //region Fields final int direction = StorageControllerGuiBase.this.getSortDirection().isDown() ? -1 : 1; - //endregion Fields - //region Overrides @Override public int compare(MachineReference a, MachineReference b) { switch (StorageControllerGuiBase.this.getSortType()) { @@ -830,7 +821,6 @@ public int compare(MachineReference a, MachineReference b) { } return 0; } - //endregion Overrides }); } @@ -867,5 +857,4 @@ protected void clearSearch() { } } - //endregion Methods }