From cd57003454840efd74ef072072402ea3822ab2ba Mon Sep 17 00:00:00 2001 From: shedaniel Date: Wed, 15 Jul 2020 22:27:07 +0800 Subject: Close #322 Signed-off-by: shedaniel --- .../me/shedaniel/rei/impl/EntryRegistryImpl.java | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java') 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 stackPredicate) { + if (reloading) { + reloadingRegistry.removeIf(wrapper -> stackPredicate.test(wrapper.unwrap())); + } else { + entries.removeIf(stackPredicate); + } + } } -- cgit