aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java/me/shedaniel/rei/plugin/client
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-11-09 22:22:39 +0800
committershedaniel <daniel@shedaniel.me>2022-11-09 22:23:11 +0800
commita932ccf66dc4f0b14de780879b00e4d4a9ea1f0c (patch)
treedaec80c222da6969bef0c42f0b1636a21381438b /runtime/src/main/java/me/shedaniel/rei/plugin/client
parent66bd26b6ab2172a834d06e9f70d09a659faa8ebd (diff)
parentc6f180f73bcbf5aa23b8b741e6a4f617439214e5 (diff)
downloadRoughlyEnoughItems-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')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/FilteredStacksVisibilityHandler.java20
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchFilterPrepareWatcher.java2
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);