From a7e0b3e2bfbdefdd7eee4dc108e7e6e4fce5da33 Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 30 Apr 2019 20:16:24 +0800 Subject: Fixed #76 --- .../shedaniel/rei/gui/ContainerScreenOverlay.java | 22 +++++++++++----------- .../shedaniel/rei/gui/widget/ItemListOverlay.java | 11 +++++++---- 2 files changed, 18 insertions(+), 15 deletions(-) (limited to 'src/main/java/me/shedaniel') diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index 577f0fc72..41bd9b9ec 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -61,7 +61,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra this.rectangle = RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel ? boundsHandler.getLeftBounds(MinecraftClient.getInstance().currentScreen) : boundsHandler.getRightBounds(MinecraftClient.getInstance().currentScreen); this.lastLeft = getLeft(); widgets.add(itemListOverlay = new ItemListOverlay(page)); - itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); + itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); widgets.add(buttonLeft = new ButtonWidget(rectangle.x, rectangle.y + 5, 16, 16, new TranslatableTextComponent("text.rei.left_arrow")) { @Override @@ -69,7 +69,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra page--; if (page < 0) page = getTotalPage(); - itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); + itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); } @Override @@ -88,7 +88,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra page++; if (page > getTotalPage()) page = 0; - itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); + itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); } @Override @@ -216,7 +216,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra public void onLabelClicked() { MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); page = 0; - itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); + itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); } @Override @@ -227,19 +227,19 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra buttonLeft.enabled = buttonRight.enabled = getTotalPage() > 0; if (ScreenHelper.searchField == null) ScreenHelper.searchField = new SearchFieldWidget(0, 0, 0, 0); - ScreenHelper.searchField.setChangedListener(s -> { - searchTerm = s; - itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); - }); ScreenHelper.searchField.getBounds().setBounds(getTextFieldArea()); this.widgets.add(ScreenHelper.searchField); ScreenHelper.searchField.setText(searchTerm); + ScreenHelper.searchField.setChangedListener(s -> { + searchTerm = s; + itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true); + }); if (RoughlyEnoughItemsCore.getConfigManager().getConfig().enableCraftableOnlyButton) this.widgets.add(toggleButtonWidget = new CraftableToggleButtonWidget(getCraftableToggleArea()) { @Override public void onPressed() { RoughlyEnoughItemsCore.getConfigManager().toggleCraftableOnly(); - itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); + itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true); } @Override @@ -250,7 +250,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra }); else toggleButtonWidget = null; - this.itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); + this.itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); } private Weather getNextWeather() { @@ -332,7 +332,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra else if (RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() && (!hasSameListContent(new LinkedList<>(ScreenHelper.inventoryStacks), currentStacks) || (currentStacks.size() != ScreenHelper.inventoryStacks.size()))) { ScreenHelper.inventoryStacks = ClientHelper.getInventoryItemsTypes(); DisplayHelper.DisplayBoundsHandler boundsHandler = RoughlyEnoughItemsCore.getDisplayHelper().getResponsibleBoundsHandler(MinecraftClient.getInstance().currentScreen.getClass()); - itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); + itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true); } GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GuiLighting.disable(); diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java index 7b8e3b353..345342ef0 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java @@ -34,10 +34,10 @@ import java.util.stream.Collectors; public class ItemListOverlay extends Widget { private static List searchBlacklisted = Lists.newArrayList(); + private final List currentDisplayed; private List widgets; private int width, height, page; private Rectangle rectangle, listArea; - private List currentDisplayed; public ItemListOverlay(int page) { this.currentDisplayed = Lists.newArrayList(); @@ -86,12 +86,15 @@ public class ItemListOverlay extends Widget { ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate("text.rei.delete_items"))); } - public void updateList(DisplayHelper.DisplayBoundsHandler boundsHandler, Rectangle rectangle, int page, String searchTerm) { + public void updateList(DisplayHelper.DisplayBoundsHandler boundsHandler, Rectangle rectangle, int page, String searchTerm, boolean processSearchTerm) { this.rectangle = rectangle; this.page = page; this.widgets = Lists.newLinkedList(); calculateListSize(rectangle); - currentDisplayed = processSearchTerm(searchTerm, RoughlyEnoughItemsCore.getItemRegisterer().getItemList(), ScreenHelper.inventoryStacks); + if (currentDisplayed.isEmpty() || processSearchTerm) { + currentDisplayed.clear(); + currentDisplayed.addAll(processSearchTerm(searchTerm, RoughlyEnoughItemsCore.getItemRegisterer().getItemList(), ScreenHelper.inventoryStacks)); + } int startX = (int) rectangle.getCenterX() - width * 9; int startY = (int) rectangle.getCenterY() - height * 9; this.listArea = new Rectangle((int) startX, (int) startY, width * 18, height * 18); @@ -182,7 +185,7 @@ public class ItemListOverlay extends Widget { } private List processSearchTerm(String searchTerm, List ol, List inventoryItems) { - List os = new LinkedList<>(ol), stacks = Lists.newArrayList(), finalStacks = Lists.newArrayList(); + List os = Lists.newArrayList(ol), stacks = Lists.newArrayList(), finalStacks = Lists.newArrayList(); List itemGroups = Lists.newArrayList(ItemGroup.GROUPS); itemGroups.add(null); ItemListOrdering ordering = RoughlyEnoughItemsCore.getConfigManager().getConfig().itemListOrdering; -- cgit