aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-07-08 22:49:27 +0800
committershedaniel <daniel@shedaniel.me>2020-07-08 22:49:27 +0800
commitddbedf6a7dc89176ab7797e5aaa10d6ea563f9a9 (patch)
tree3ecdb75f9c34c5cba27c15ee84d845aaa654eb2e /src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
parent1189bcf3a46777239462da0dc45aa088697fec40 (diff)
downloadRoughlyEnoughItems-ddbedf6a7dc89176ab7797e5aaa10d6ea563f9a9.tar.gz
RoughlyEnoughItems-ddbedf6a7dc89176ab7797e5aaa10d6ea563f9a9.tar.bz2
RoughlyEnoughItems-ddbedf6a7dc89176ab7797e5aaa10d6ea563f9a9.zip
Custom Filtering Rules
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java')
-rw-r--r--src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java b/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
index 5dfa05331..b3274ae94 100644
--- a/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
+++ b/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
@@ -31,6 +31,10 @@ import me.shedaniel.rei.api.ConfigObject;
import me.shedaniel.rei.api.EntryRegistry;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeHelper;
+import me.shedaniel.rei.impl.filtering.FilteringContextImpl;
+import me.shedaniel.rei.impl.filtering.FilteringRule;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Pair;
@@ -42,6 +46,7 @@ import java.util.*;
import java.util.stream.Collectors;
@ApiStatus.Internal
+@Environment(EnvType.CLIENT)
public class EntryRegistryImpl implements EntryRegistry {
private final List<EntryStack> preFilteredList = Lists.newCopyOnWriteArrayList();
@@ -117,14 +122,19 @@ public class EntryRegistryImpl implements EntryRegistry {
public void refilter() {
long started = System.currentTimeMillis();
- Collection<EntryStack> filteredStacks = ConfigObject.getInstance().getFilteredStacks();
+ FilteringContextImpl context = new FilteringContextImpl(getStacksList());
+ List<FilteringRule<?>> rules = ConfigObject.getInstance().getFilteringRules();
+ for (int i = rules.size() - 1; i >= 0; i--) {
+ context.handleResult(rules.get(i).processFilteredStacks(context));
+ }
preFilteredList.clear();
+ Collection<EntryStack> filteredStacks = context.getHiddenStacks();
for (EntryStack stack : getStacksList()) {
if (findFirstOrNullEqualsEntryIgnoreAmount(filteredStacks, stack) == null)
preFilteredList.add(stack);
}
long time = System.currentTimeMillis() - started;
- RoughlyEnoughItemsCore.LOGGER.info("Refiltered %d entries in %dms.", filteredStacks.size(), time);
+ RoughlyEnoughItemsCore.LOGGER.info("Refiltered %d entries with %d rules in %dms.", filteredStacks.size(), rules.size(), time);
}
public void reset() {