From 85ab4c61276f249f27b42a794167f2831ca7656a Mon Sep 17 00:00:00 2001 From: shedaniel Date: Fri, 28 Oct 2022 20:03:11 +0800 Subject: Add filtering rules to the API (#1169) --- .../runtime/FilteredStacksVisibilityHandler.java | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'runtime/src/main/java/me/shedaniel/rei/plugin/client') diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/FilteredStacksVisibilityHandler.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/FilteredStacksVisibilityHandler.java index 3bdca8c15..923a416c2 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/FilteredStacksVisibilityHandler.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/FilteredStacksVisibilityHandler.java @@ -29,23 +29,29 @@ import it.unimi.dsi.fastutil.objects.Reference2BooleanMap; import it.unimi.dsi.fastutil.objects.Reference2BooleanMaps; import it.unimi.dsi.fastutil.objects.Reference2BooleanOpenHashMap; import me.shedaniel.rei.api.client.config.ConfigObject; +import me.shedaniel.rei.api.client.entry.filtering.FilteringRule; import me.shedaniel.rei.api.client.registry.display.DisplayCategory; import me.shedaniel.rei.api.client.registry.display.DisplayRegistry; import me.shedaniel.rei.api.client.registry.display.visibility.DisplayVisibilityPredicate; import me.shedaniel.rei.api.common.display.Display; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.impl.client.config.ConfigObjectImpl; -import me.shedaniel.rei.impl.client.entry.filtering.*; +import me.shedaniel.rei.impl.client.entry.filtering.FilteringContextImpl; +import me.shedaniel.rei.impl.client.entry.filtering.FilteringContextType; +import me.shedaniel.rei.impl.client.entry.filtering.FilteringResultImpl; import me.shedaniel.rei.impl.common.InternalLogger; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.function.Predicate; public class FilteredStacksVisibilityHandler implements DisplayVisibilityPredicate { private boolean checkHiddenStacks; private Reference2BooleanMap visible = Reference2BooleanMaps.synchronize(new Reference2BooleanOpenHashMap<>()); private List> filteringRules; - private FilteringCacheImpl cache; + private Map, Object> cache = new HashMap<>(); private final Predicate displayPredicate = this::checkHiddenStacks; @Override @@ -63,10 +69,10 @@ public class FilteredStacksVisibilityHandler implements DisplayVisibilityPredica if (checkHiddenStacks) { filteringRules = ((ConfigObjectImpl) ConfigObject.getInstance()).getFilteringRules(); - cache = new FilteringCacheImpl(); + cache = new HashMap<>(); for (int i = filteringRules.size() - 1; i >= 0; i--) { FilteringRule rule = filteringRules.get(i); - cache.setCache(rule, rule.prepareCache(false)); + cache.put(rule, rule.prepareCache(false)); } cacheExisting(); @@ -105,11 +111,13 @@ public class FilteredStacksVisibilityHandler implements DisplayVisibilityPredica return true; } - private static boolean isEntryIngredientAllHidden(EntryIngredient ingredient, FilteringCache cache, List> rules) { + private static boolean isEntryIngredientAllHidden(EntryIngredient ingredient, Map, Object> cache, List> rules) { FilteringContextImpl context = new FilteringContextImpl(false, ingredient); for (int i = rules.size() - 1; i >= 0; i--) { FilteringRule rule = rules.get(i); - context.handleResult(rule.processFilteredStacks(context, cache, false)); + context.handleResult((FilteringResultImpl) ((FilteringRule) rule).processFilteredStacks(context, + () -> new FilteringResultImpl(new ArrayList<>(), new ArrayList<>()), + cache.get(rule), false)); } return context.stacks.get(FilteringContextType.SHOWN).isEmpty() && context.stacks.get(FilteringContextType.DEFAULT).isEmpty(); } -- cgit From bf1b353d94e32227c2928829482da3d03564ffa1 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Mon, 7 Nov 2022 20:24:21 +0800 Subject: Improve on searching --- .../shedaniel/rei/plugin/client/runtime/SearchFilterPrepareWatcher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'runtime/src/main/java/me/shedaniel/rei/plugin/client') diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchFilterPrepareWatcher.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchFilterPrepareWatcher.java index 1bc99287f..d29b3c389 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchFilterPrepareWatcher.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchFilterPrepareWatcher.java @@ -47,7 +47,7 @@ public class SearchFilterPrepareWatcher implements HintProvider { try { if (Argument.prepareStage != null && Argument.currentStages != null && Argument.prepareStacks != null && Argument.prepareStacks.size() > 100 && Argument.prepareStart != null) { - if (Util.getEpochMillis() - Argument.prepareStart < 500) return Collections.emptyList(); + if (Util.getEpochMillis() - Argument.prepareStart < 100) return Collections.emptyList(); int prepareStageCurrent = Argument.prepareStage.firstInt(); int prepareStageTotal = Argument.prepareStage.secondInt(); IntIntPair currentStage = ArrayUtils.get(Argument.currentStages, prepareStageCurrent - 1); -- cgit