From 9a7d1bc21e86041d8a6f54602282a770ca557c60 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Thu, 27 Feb 2020 02:48:41 +0800 Subject: Better refiltering, 20w09a, delta based PreRecipeViewingScreen animation and fix pressing E closes when searching. Signed-off-by: shedaniel --- .../java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java | 2 +- .../java/me/shedaniel/rei/gui/RecipeViewingScreen.java | 10 +++++----- .../me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java | 15 ++++++++++----- .../java/me/shedaniel/rei/impl/EntryRegistryImpl.java | 7 +++---- 4 files changed, 19 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java index 57a8859c6..13fd15027 100644 --- a/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java @@ -156,7 +156,7 @@ public class PreRecipeViewingScreen extends Screen { private void updateFramePosition(float delta) { target = clamp(target); if (!DynamicNewSmoothScrollingEntryListWidget.Precision.almostEquals(frame, target, DynamicNewSmoothScrollingEntryListWidget.Precision.FLOAT_EPSILON)) - frame = ease(frame, target, Math.min((System.currentTimeMillis() - start) / ((double) duration), 1)); + frame = ease(frame, target, Math.min((System.currentTimeMillis() - start) / (double) duration * delta * 3.0D, 1)); else frame = target; } diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index 9ce0ce872..a678ce12c 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -150,11 +150,6 @@ public class RecipeViewingScreen extends Screen implements StackToNoticeScreen { init(); return true; } - if ((int_1 == 256 || this.minecraft.options.keyInventory.matchesKey(int_1, int_2)) && this.shouldCloseOnEsc()) { - MinecraftClient.getInstance().openScreen(ScreenHelper.getLastContainerScreen()); - ScreenHelper.getLastOverlay().init(); - return true; - } if (int_1 == 258) { boolean boolean_1 = !hasShiftDown(); if (!this.changeFocus(boolean_1)) @@ -175,6 +170,11 @@ public class RecipeViewingScreen extends Screen implements StackToNoticeScreen { for (Element element : children()) if (element.keyPressed(int_1, int_2, int_3)) return true; + if (int_1 == 256 || this.minecraft.options.keyInventory.matchesKey(int_1, int_2)) { + MinecraftClient.getInstance().openScreen(ScreenHelper.getLastContainerScreen()); + ScreenHelper.getLastOverlay().init(); + return true; + } if (int_1 == 259) { if (ScreenHelper.hasLastRecipeScreen()) minecraft.openScreen(ScreenHelper.getLastRecipeScreen()); diff --git a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java index e60140c78..fc9e287b4 100644 --- a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java @@ -104,6 +104,11 @@ public class VillagerRecipeViewingScreen extends Screen implements StackToNotice }); } + @Override + public boolean isPauseScreen() { + return false; + } + @Override public void addIngredientStackToNotice(EntryStack stack) { ingredientStackToNotice = stack; @@ -457,11 +462,6 @@ public class VillagerRecipeViewingScreen extends Screen implements StackToNotice @Override public boolean keyPressed(int int_1, int int_2, int int_3) { - if ((int_1 == 256 || this.minecraft.options.keyInventory.matchesKey(int_1, int_2)) && this.shouldCloseOnEsc()) { - MinecraftClient.getInstance().openScreen(ScreenHelper.getLastContainerScreen()); - ScreenHelper.getLastOverlay().init(); - return true; - } if (int_1 == 258) { boolean boolean_1 = !hasShiftDown(); if (!this.changeFocus(boolean_1)) @@ -490,6 +490,11 @@ public class VillagerRecipeViewingScreen extends Screen implements StackToNotice for (Element element : children()) if (element.keyPressed(int_1, int_2, int_3)) return true; + if (int_1 == 256 || this.minecraft.options.keyInventory.matchesKey(int_1, int_2)) { + MinecraftClient.getInstance().openScreen(ScreenHelper.getLastContainerScreen()); + ScreenHelper.getLastOverlay().init(); + return true; + } if (int_1 == 259) { if (ScreenHelper.hasLastRecipeScreen()) minecraft.openScreen(ScreenHelper.getLastRecipeScreen()); diff --git a/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java b/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java index c6d6ce190..c4db31c96 100644 --- a/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java @@ -94,15 +94,14 @@ public class EntryRegistryImpl implements EntryRegistry { public void refilter() { long started = System.currentTimeMillis(); - Set set = Sets.newLinkedHashSet(); - set.addAll(ConfigObject.getInstance().getFilteredStacks()); + Collection filteredStacks = ConfigObject.getInstance().getFilteredStacks(); preFilteredList.clear(); for (EntryStack stack : getStacksList()) { - if (findFirstOrNullEqualsEntryIgnoreAmount(set, stack) == null) + if (findFirstOrNullEqualsEntryIgnoreAmount(filteredStacks, stack) == null) preFilteredList.add(stack); } long time = System.currentTimeMillis() - started; - RoughlyEnoughItemsCore.LOGGER.info("[REI] Refiltered %d entries in %dms.", set.size(), time); + RoughlyEnoughItemsCore.LOGGER.info("[REI] Refiltered %d entries in %dms.", filteredStacks.size(), time); } public void reset() { -- cgit