From a2ee9f7570b2b1ee7f7b51950301715a15496d00 Mon Sep 17 00:00:00 2001 From: Danielshe Date: Mon, 19 Aug 2019 22:08:27 +0800 Subject: Build 2: Fix bugs - Fix freeze caused by the backspace feature - Page buttons gone when the search box is on top - Fixed #143 - Made text red when no entry has been found --- .../me/shedaniel/rei/gui/ContainerScreenOverlay.java | 8 +++++--- .../me/shedaniel/rei/gui/widget/SearchFieldWidget.java | 17 ++++++++++++++++- .../java/me/shedaniel/rei/impl/RecipeHelperImpl.java | 2 +- src/main/java/me/shedaniel/rei/impl/ScreenHelper.java | 4 ++-- 4 files changed, 24 insertions(+), 7 deletions(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index bd21cf910..e2f282762 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -80,7 +80,7 @@ public class ContainerScreenOverlay extends Widget { entryListWidget.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().isEntryListWidgetScrolled()) { - widgets.add(buttonLeft = new ButtonWidget(rectangle.x, rectangle.y + 5, 16, 16, new TranslatableText("text.rei.left_arrow")) { + widgets.add(buttonLeft = new ButtonWidget(rectangle.x, rectangle.y + (RoughlyEnoughItemsCore.getConfigManager().getConfig().getSearchFieldLocation() == SearchFieldLocation.TOP_SIDE ? 24 : 0) + 5, 16, 16, new TranslatableText("text.rei.left_arrow")) { @Override public void onPressed() { page--; @@ -99,7 +99,7 @@ public class ContainerScreenOverlay extends Widget { return false; } }); - widgets.add(buttonRight = new ButtonWidget(rectangle.x + rectangle.width - 18, rectangle.y + 5, 16, 16, new TranslatableText("text.rei.right_arrow")) { + widgets.add(buttonRight = new ButtonWidget(rectangle.x + rectangle.width - 18, rectangle.y + (RoughlyEnoughItemsCore.getConfigManager().getConfig().getSearchFieldLocation() == SearchFieldLocation.TOP_SIDE ? 24 : 0) + 5, 16, 16, new TranslatableText("text.rei.right_arrow")) { @Override public void onPressed() { page++; @@ -222,7 +222,7 @@ public class ContainerScreenOverlay extends Widget { } } if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().isEntryListWidgetScrolled()) { - widgets.add(new ClickableLabelWidget(rectangle.x + (rectangle.width / 2), rectangle.y + 10, "", getTotalPage() > 0) { + widgets.add(new ClickableLabelWidget(rectangle.x + (rectangle.width / 2), rectangle.y + (RoughlyEnoughItemsCore.getConfigManager().getConfig().getSearchFieldLocation() == SearchFieldLocation.TOP_SIDE ? 24 : 0) + 10, "", getTotalPage() > 0) { @Override public void render(int mouseX, int mouseY, float delta) { page = MathHelper.clamp(page, 0, getTotalPage()); @@ -526,6 +526,8 @@ public class ContainerScreenOverlay extends Widget { if (ClientHelper.getInstance().getFocusSearchFieldKeyBinding().matchesKey(int_1, int_2)) { ScreenHelper.searchField.setFocused(true); setFocused(ScreenHelper.searchField); + ScreenHelper.searchField.keybindFocusTime = System.currentTimeMillis(); + ScreenHelper.searchField.keybindFocusKey = int_1; return true; } return false; diff --git a/src/main/java/me/shedaniel/rei/gui/widget/SearchFieldWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/SearchFieldWidget.java index 40a54f1df..74f7a884d 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/SearchFieldWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/SearchFieldWidget.java @@ -6,14 +6,19 @@ package me.shedaniel.rei.gui.widget; import com.mojang.blaze3d.platform.GlStateManager; +import me.shedaniel.rei.gui.ContainerScreenOverlay; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.sound.PositionedSoundInstance; +import net.minecraft.client.util.InputUtil; import net.minecraft.sound.SoundEvents; public class SearchFieldWidget extends TextFieldWidget { public static boolean isSearching = false; + public long keybindFocusTime = -1; + public int keybindFocusKey = -1; protected long lastClickedTime = -1; public SearchFieldWidget(int x, int y, int width, int height) { @@ -24,7 +29,7 @@ public class SearchFieldWidget extends TextFieldWidget { public void laterRender(int int_1, int int_2, float float_1) { GuiLighting.disable(); GlStateManager.disableDepthTest(); - setEditableColor(isSearching ? -1313241 : 14737632); + setEditableColor(ContainerScreenOverlay.getEntryListWidget().children().isEmpty() && !getText().isEmpty() ? 16733525 : isSearching ? -1313241 : 14737632); setSuggestion(!isFocused() && getText().isEmpty() ? I18n.translate("text.rei.search.field.suggestion") : null); super.render(int_1, int_2, float_1); GlStateManager.enableDepthTest(); @@ -68,6 +73,16 @@ public class SearchFieldWidget extends TextFieldWidget { return super.keyPressed(int_1, int_2, int_3); } + @Override + public boolean charTyped(char char_1, int int_1) { + if (System.currentTimeMillis() - keybindFocusTime < 1000 && InputUtil.isKeyPressed(MinecraftClient.getInstance().window.getHandle(), keybindFocusKey)) { + keybindFocusTime = -1; + keybindFocusKey = -1; + return true; + } + return super.charTyped(char_1, int_1); + } + @Override public void render(int int_1, int int_2, float float_1) { } diff --git a/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java b/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java index d05823fe6..81710bddc 100644 --- a/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java @@ -218,7 +218,7 @@ public class RecipeHelperImpl implements RecipeHelper { @SuppressWarnings("deprecation") public void recipesLoaded(RecipeManager recipeManager) { - ScreenHelper.clearRecipeScreens(); + ScreenHelper.clearData(); this.recipeCount.set(0); this.recipeManager = recipeManager; this.recipeCategoryListMap.clear(); diff --git a/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java b/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java index 915dbb604..be03f4bb0 100644 --- a/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java +++ b/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java @@ -38,7 +38,7 @@ public class ScreenHelper implements ClientModInitializer { public static void storeRecipeScreen(Screen screen) { while (lastRecipeScreen.size() >= 5) - lastRecipeScreen.remove(0); + lastRecipeScreen.remove(Iterables.get(lastRecipeScreen, 0)); lastRecipeScreen.add(screen); } @@ -52,7 +52,7 @@ public class ScreenHelper implements ClientModInitializer { return screen; } - public static void clearRecipeScreens() { + public static void clearData() { lastRecipeScreen.clear(); } -- cgit