aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java')
-rw-r--r--src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java b/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
index fcc62fe23..b4849b4e9 100644
--- a/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
+++ b/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
@@ -42,6 +42,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
+import java.util.function.Predicate;
import java.util.stream.Stream;
@ApiStatus.Internal
@@ -82,6 +83,8 @@ public class EntryRegistryImpl implements EntryRegistry {
return preFilteredList;
}
+ @Override
+ @ApiStatus.Experimental
public void refilter() {
long started = System.currentTimeMillis();
@@ -155,4 +158,30 @@ public class EntryRegistryImpl implements EntryRegistry {
} else entries.addAll(stacks);
}
}
+
+ @Override
+ public boolean alreadyContain(EntryStack stack) {
+ if (reloading) {
+ return reloadingRegistry.parallelStream().anyMatch(s -> s.unwrap().equalsAll(stack));
+ }
+ return entries.parallelStream().anyMatch(s -> s.equalsAll(stack));
+ }
+
+ @Override
+ public void removeEntry(EntryStack stack) {
+ if (reloading) {
+ reloadingRegistry.remove(new AmountIgnoredEntryStackWrapper(stack));
+ } else {
+ entries.remove(stack);
+ }
+ }
+
+ @Override
+ public void removeEntryIf(Predicate<EntryStack> stackPredicate) {
+ if (reloading) {
+ reloadingRegistry.removeIf(wrapper -> stackPredicate.test(wrapper.unwrap()));
+ } else {
+ entries.removeIf(stackPredicate);
+ }
+ }
}