diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-11-09 22:22:39 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-11-09 22:23:11 +0800 |
| commit | a932ccf66dc4f0b14de780879b00e4d4a9ea1f0c (patch) | |
| tree | daec80c222da6969bef0c42f0b1636a21381438b /runtime/src/main/java/me/shedaniel/rei/plugin/client | |
| parent | 66bd26b6ab2172a834d06e9f70d09a659faa8ebd (diff) | |
| parent | c6f180f73bcbf5aa23b8b741e6a4f617439214e5 (diff) | |
| download | RoughlyEnoughItems-a932ccf66dc4f0b14de780879b00e4d4a9ea1f0c.tar.gz RoughlyEnoughItems-a932ccf66dc4f0b14de780879b00e4d4a9ea1f0c.tar.bz2 RoughlyEnoughItems-a932ccf66dc4f0b14de780879b00e4d4a9ea1f0c.zip | |
Merge remote-tracking branch 'origin/9.x-1.19' into feature/1.19.3
Diffstat (limited to 'runtime/src/main/java/me/shedaniel/rei/plugin/client')
2 files changed, 15 insertions, 7 deletions
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<Display> visible = Reference2BooleanMaps.synchronize(new Reference2BooleanOpenHashMap<>()); private List<FilteringRule<?>> filteringRules; - private FilteringCacheImpl cache; + private Map<FilteringRule<?>, Object> cache = new HashMap<>(); private final Predicate<Display> 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<FilteringRule<?>> rules) { + private static boolean isEntryIngredientAllHidden(EntryIngredient ingredient, Map<FilteringRule<?>, Object> cache, List<FilteringRule<?>> 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<Object>) 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(); } 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); |
