aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-02-12 01:55:38 +0800
committershedaniel <daniel@shedaniel.me>2020-02-12 02:03:30 +0800
commit620b7b47c9c2a3d7e1f54c5a8c82113acaff7438 (patch)
treedde7882dac52864c84167799db97cb6f72db90e0 /src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
parent5cb938a76b4f93c9f58bc725a1543e511c760aa9 (diff)
downloadRoughlyEnoughItems-620b7b47c9c2a3d7e1f54c5a8c82113acaff7438.tar.gz
RoughlyEnoughItems-620b7b47c9c2a3d7e1f54c5a8c82113acaff7438.tar.bz2
RoughlyEnoughItems-620b7b47c9c2a3d7e1f54c5a8c82113acaff7438.zip
fix favorites saving
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.java19
1 files changed, 17 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 cb78e0ab8..98e2c53e9 100644
--- a/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
+++ b/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
@@ -7,6 +7,7 @@ package me.shedaniel.rei.impl;
import com.google.common.collect.Lists;
import com.google.common.collect.Queues;
+import me.shedaniel.rei.api.ConfigObject;
import me.shedaniel.rei.api.EntryRegistry;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeHelper;
@@ -26,8 +27,10 @@ public class EntryRegistryImpl implements EntryRegistry {
private final CopyOnWriteArrayList<EntryStack> entries = Lists.newCopyOnWriteArrayList();
private final Queue<Pair<EntryStack, Collection<? extends EntryStack>>> queueRegisterEntryStackAfter = Queues.newConcurrentLinkedQueue();
private List<EntryStack> reloadList;
+ private boolean doingDistinct = false;
public void distinct() {
+ doingDistinct = true;
TreeSet<EntryStack> set = new TreeSet<>((i, j) -> i.equalsAll(j) ? 0 : 1);
set.addAll(reloadList);
entries.clear();
@@ -40,14 +43,25 @@ public class EntryRegistryImpl implements EntryRegistry {
break;
registerEntriesAfter(pair.getLeft(), pair.getRight());
}
+ set.clear();
+ set.addAll(entries);
+ set.removeIf(EntryStack::isEmpty);
+ entries.clear();
+ entries.addAll(set);
+ set.clear();
+ for (EntryStack stack : ConfigObject.getInstance().getFilteredStacks()) {
+ entries.remove(stack);
+ }
+ doingDistinct = false;
}
@Override
public List<EntryStack> getStacksList() {
- return RecipeHelper.getInstance().arePluginsLoading() ? reloadList : entries;
+ return RecipeHelper.getInstance().arePluginsLoading() && !doingDistinct ? reloadList : entries;
}
public void reset() {
+ doingDistinct = false;
reloadList = Lists.newArrayList();
queueRegisterEntryStackAfter.clear();
entries.clear();
@@ -94,8 +108,9 @@ public class EntryRegistryImpl implements EntryRegistry {
public void queueRegisterEntryAfter(EntryStack afterEntry, Collection<? extends EntryStack> stacks) {
if (RecipeHelper.getInstance().arePluginsLoading()) {
queueRegisterEntryStackAfter.add(new Pair<>(afterEntry, stacks));
- } else
+ } else {
registerEntriesAfter(afterEntry, stacks);
+ }
}
@Override