Browse Source

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
Danielshe 5 years ago
parent
commit
3c9d3873ab

+ 5 - 3
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);
         entryListWidget.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false);
         
         
         if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().isEntryListWidgetScrolled()) {
         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
                 @Override
                 public void onPressed() {
                 public void onPressed() {
                     page--;
                     page--;
@@ -99,7 +99,7 @@ public class ContainerScreenOverlay extends Widget {
                     return false;
                     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
                 @Override
                 public void onPressed() {
                 public void onPressed() {
                     page++;
                     page++;
@@ -222,7 +222,7 @@ public class ContainerScreenOverlay extends Widget {
             }
             }
         }
         }
         if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().isEntryListWidgetScrolled()) {
         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
                 @Override
                 public void render(int mouseX, int mouseY, float delta) {
                 public void render(int mouseX, int mouseY, float delta) {
                     page = MathHelper.clamp(page, 0, getTotalPage());
                     page = MathHelper.clamp(page, 0, getTotalPage());
@@ -526,6 +526,8 @@ public class ContainerScreenOverlay extends Widget {
         if (ClientHelper.getInstance().getFocusSearchFieldKeyBinding().matchesKey(int_1, int_2)) {
         if (ClientHelper.getInstance().getFocusSearchFieldKeyBinding().matchesKey(int_1, int_2)) {
             ScreenHelper.searchField.setFocused(true);
             ScreenHelper.searchField.setFocused(true);
             setFocused(ScreenHelper.searchField);
             setFocused(ScreenHelper.searchField);
+            ScreenHelper.searchField.keybindFocusTime = System.currentTimeMillis();
+            ScreenHelper.searchField.keybindFocusKey = int_1;
             return true;
             return true;
         }
         }
         return false;
         return false;

+ 16 - 1
src/main/java/me/shedaniel/rei/gui/widget/SearchFieldWidget.java

@@ -6,14 +6,19 @@
 package me.shedaniel.rei.gui.widget;
 package me.shedaniel.rei.gui.widget;
 
 
 import com.mojang.blaze3d.platform.GlStateManager;
 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.render.GuiLighting;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.client.sound.PositionedSoundInstance;
 import net.minecraft.client.sound.PositionedSoundInstance;
+import net.minecraft.client.util.InputUtil;
 import net.minecraft.sound.SoundEvents;
 import net.minecraft.sound.SoundEvents;
 
 
 public class SearchFieldWidget extends TextFieldWidget {
 public class SearchFieldWidget extends TextFieldWidget {
     
     
     public static boolean isSearching = false;
     public static boolean isSearching = false;
+    public long keybindFocusTime = -1;
+    public int keybindFocusKey = -1;
     protected long lastClickedTime = -1;
     protected long lastClickedTime = -1;
     
     
     public SearchFieldWidget(int x, int y, int width, int height) {
     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) {
     public void laterRender(int int_1, int int_2, float float_1) {
         GuiLighting.disable();
         GuiLighting.disable();
         GlStateManager.disableDepthTest();
         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);
         setSuggestion(!isFocused() && getText().isEmpty() ? I18n.translate("text.rei.search.field.suggestion") : null);
         super.render(int_1, int_2, float_1);
         super.render(int_1, int_2, float_1);
         GlStateManager.enableDepthTest();
         GlStateManager.enableDepthTest();
@@ -68,6 +73,16 @@ public class SearchFieldWidget extends TextFieldWidget {
         return super.keyPressed(int_1, int_2, int_3);
         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
     @Override
     public void render(int int_1, int int_2, float float_1) {
     public void render(int int_1, int int_2, float float_1) {
     }
     }

+ 1 - 1
src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java

@@ -218,7 +218,7 @@ public class RecipeHelperImpl implements RecipeHelper {
     
     
     @SuppressWarnings("deprecation")
     @SuppressWarnings("deprecation")
     public void recipesLoaded(RecipeManager recipeManager) {
     public void recipesLoaded(RecipeManager recipeManager) {
-        ScreenHelper.clearRecipeScreens();
+        ScreenHelper.clearData();
         this.recipeCount.set(0);
         this.recipeCount.set(0);
         this.recipeManager = recipeManager;
         this.recipeManager = recipeManager;
         this.recipeCategoryListMap.clear();
         this.recipeCategoryListMap.clear();

+ 2 - 2
src/main/java/me/shedaniel/rei/impl/ScreenHelper.java

@@ -38,7 +38,7 @@ public class ScreenHelper implements ClientModInitializer {
     
     
     public static void storeRecipeScreen(Screen screen) {
     public static void storeRecipeScreen(Screen screen) {
         while (lastRecipeScreen.size() >= 5)
         while (lastRecipeScreen.size() >= 5)
-            lastRecipeScreen.remove(0);
+            lastRecipeScreen.remove(Iterables.get(lastRecipeScreen, 0));
         lastRecipeScreen.add(screen);
         lastRecipeScreen.add(screen);
     }
     }
     
     
@@ -52,7 +52,7 @@ public class ScreenHelper implements ClientModInitializer {
         return screen;
         return screen;
     }
     }
     
     
-    public static void clearRecipeScreens() {
+    public static void clearData() {
         lastRecipeScreen.clear();
         lastRecipeScreen.clear();
     }
     }