aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-06-19 02:52:23 +0800
committershedaniel <daniel@shedaniel.me>2023-05-29 21:00:40 +0800
commitf8d1f9e67b7f14fe22ac4e632aa6a8e36274c9c8 (patch)
tree3d47f1213075c5af3fc9cd9fed423bda3443c626 /runtime/src/main/java
parentc2de681d4e851e42a1c877b4007f7ad49b8ec862 (diff)
downloadRoughlyEnoughItems-f8d1f9e67b7f14fe22ac4e632aa6a8e36274c9c8.tar.gz
RoughlyEnoughItems-f8d1f9e67b7f14fe22ac4e632aa6a8e36274c9c8.tar.bz2
RoughlyEnoughItems-f8d1f9e67b7f14fe22ac4e632aa6a8e36274c9c8.zip
Fix #935
Diffstat (limited to 'runtime/src/main/java')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/favorites/FavoriteEntryTypeRegistryImpl.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesEntriesManager.java46
5 files changed, 50 insertions, 17 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java
index 8f8c4839a..2617a480a 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java
@@ -38,6 +38,7 @@ import me.shedaniel.rei.api.client.gui.config.*;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.CollectionUtils;
import me.shedaniel.rei.impl.client.entry.filtering.FilteringRule;
+import me.shedaniel.rei.impl.client.gui.widget.favorites.FavoritesEntriesManager;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.Minecraft;
@@ -363,6 +364,10 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData {
@Override
public List<FavoriteEntry> getFavoriteEntries() {
+ return FavoritesEntriesManager.INSTANCE.asListView();
+ }
+
+ public List<FavoriteEntry> getConfigFavoriteEntries() {
return basics.favorites;
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/favorites/FavoriteEntryTypeRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/favorites/FavoriteEntryTypeRegistryImpl.java
index 45e598625..1ae064940 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/favorites/FavoriteEntryTypeRegistryImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/favorites/FavoriteEntryTypeRegistryImpl.java
@@ -115,7 +115,7 @@ public class FavoriteEntryTypeRegistryImpl implements FavoriteEntryType.Registry
@Override
public void endReload() {
if (ConfigObject.getInstance().isFavoritesEnabled()) {
- ConfigObject.getInstance().getFavoriteEntries().removeIf(FavoriteEntry::isInvalid);
+ ConfigManagerImpl.getInstance().getConfig().getConfigFavoriteEntries().removeIf(FavoriteEntry::isInvalid);
ConfigManagerImpl.getInstance().getConfig().getHiddenFavoriteEntries().removeIf(FavoriteEntry::isInvalid);
ConfigManager.getInstance().saveConfig();
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java
index 7389aa782..434b603ce 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java
@@ -72,7 +72,6 @@ import me.shedaniel.rei.impl.client.gui.widget.InternalWidgets;
import me.shedaniel.rei.impl.client.gui.widget.LateRenderable;
import me.shedaniel.rei.impl.client.gui.widget.entrylist.EntryListSearchManager;
import me.shedaniel.rei.impl.client.gui.widget.entrylist.EntryListWidget;
-import me.shedaniel.rei.impl.client.gui.widget.favorites.FavoritesEntriesManager;
import me.shedaniel.rei.impl.client.gui.widget.favorites.FavoritesListWidget;
import me.shedaniel.rei.impl.client.gui.widget.search.OverlaySearchField;
import me.shedaniel.rei.impl.common.util.Weather;
@@ -796,7 +795,7 @@ public class ScreenOverlayImpl extends ScreenOverlay {
return ViewSearchBuilder.builder().addUsagesFor(stack).open();
} else if (ConfigObject.getInstance().getFavoriteKeyCode().matchesKey(keyCode, scanCode)) {
FavoriteEntry favoriteEntry = FavoriteEntry.fromEntryStack(stack);
- FavoritesEntriesManager.INSTANCE.add(favoriteEntry);
+ ConfigObject.getInstance().getFavoriteEntries().add(favoriteEntry);
return true;
}
}
@@ -880,7 +879,7 @@ public class ScreenOverlayImpl extends ScreenOverlay {
return ViewSearchBuilder.builder().addUsagesFor(stack).open();
} else if (visible && ConfigObject.getInstance().getFavoriteKeyCode().matchesMouse(button)) {
FavoriteEntry favoriteEntry = FavoriteEntry.fromEntryStack(stack);
- FavoritesEntriesManager.INSTANCE.add(favoriteEntry);
+ ConfigObject.getInstance().getFavoriteEntries().add(favoriteEntry);
return true;
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java
index 060938c6c..da9d869f3 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java
@@ -52,7 +52,6 @@ import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.plugins.PluginManager;
import me.shedaniel.rei.impl.client.REIRuntimeImpl;
import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl;
-import me.shedaniel.rei.impl.client.gui.widget.favorites.FavoritesEntriesManager;
import me.shedaniel.rei.impl.client.gui.widget.favorites.FavoritesListWidget;
import me.shedaniel.rei.impl.client.view.ViewsImpl;
import net.minecraft.ChatFormatting;
@@ -521,9 +520,9 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget {
FavoriteEntry favoriteEntry = asFavoriteEntry();
if (favoriteEntry != null) {
if (reverseFavoritesAction()) {
- FavoritesEntriesManager.INSTANCE.remove(favoriteEntry);
+ ConfigObject.getInstance().getFavoriteEntries().remove(favoriteEntry);
} else {
- FavoritesEntriesManager.INSTANCE.add(favoriteEntry);
+ ConfigObject.getInstance().getFavoriteEntries().add(favoriteEntry);
}
ConfigManager.getInstance().saveConfig();
FavoritesListWidget favoritesListWidget = ScreenOverlayImpl.getFavoritesListWidget();
@@ -603,9 +602,9 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget {
FavoriteEntry favoriteEntry = asFavoriteEntry();
if (favoriteEntry != null) {
if (reverseFavoritesAction()) {
- FavoritesEntriesManager.INSTANCE.remove(favoriteEntry);
+ ConfigObject.getInstance().getFavoriteEntries().remove(favoriteEntry);
} else {
- FavoritesEntriesManager.INSTANCE.add(favoriteEntry);
+ ConfigObject.getInstance().getFavoriteEntries().add(favoriteEntry);
}
ConfigManager.getInstance().saveConfig();
FavoritesListWidget favoritesListWidget = ScreenOverlayImpl.getFavoritesListWidget();
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesEntriesManager.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesEntriesManager.java
index c235e29ca..38416b7cf 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesEntriesManager.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesEntriesManager.java
@@ -31,6 +31,7 @@ import me.shedaniel.rei.impl.client.config.ConfigManagerImpl;
import me.shedaniel.rei.impl.client.config.ConfigObjectImpl;
import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl;
+import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -50,7 +51,7 @@ public class FavoritesEntriesManager {
List<FavoriteEntry> defaultFavorites = getDefaultFavorites().collect(Collectors.toList());
defaultFavorites.removeAll(config.getHiddenFavoriteEntries());
- List<FavoriteEntry> favorites = new ArrayList<>(config.getFavoriteEntries());
+ List<FavoriteEntry> favorites = new ArrayList<>(config.getConfigFavoriteEntries());
defaultFavorites.removeAll(favorites);
favorites.addAll(0, defaultFavorites);
favorites.removeIf(FavoriteEntry::isInvalid);
@@ -60,7 +61,7 @@ public class FavoritesEntriesManager {
public void remove(FavoriteEntry entry) {
ConfigObjectImpl config = ConfigManagerImpl.getInstance().getConfig();
- config.getFavoriteEntries().remove(entry);
+ config.getConfigFavoriteEntries().remove(entry);
if (getDefaultFavorites().anyMatch(e -> e.equals(entry)) && !config.getHiddenFavoriteEntries().contains(entry)) {
config.getHiddenFavoriteEntries().add(entry);
}
@@ -76,21 +77,21 @@ public class FavoritesEntriesManager {
ConfigObjectImpl config = ConfigManagerImpl.getInstance().getConfig();
List<FavoriteEntry> defaultFavorites = getDefaultFavorites().toList();
- config.getFavoriteEntries().remove(entry);
+ config.getConfigFavoriteEntries().remove(entry);
if (CollectionUtils.anyMatch(defaultFavorites, e -> e.equals(entry)) && !config.getHiddenFavoriteEntries().contains(entry)) {
config.getHiddenFavoriteEntries().add(entry);
}
for (int i = defaultFavorites.size() - 1; i >= 0; i--) {
FavoriteEntry e = defaultFavorites.get(i);
- if (!config.getFavoriteEntries().contains(e) && !config.getHiddenFavoriteEntries().contains(e)) {
- config.getFavoriteEntries().add(0, e);
+ if (!config.getConfigFavoriteEntries().contains(e) && !config.getHiddenFavoriteEntries().contains(e)) {
+ config.getConfigFavoriteEntries().add(0, e);
}
}
config.getHiddenFavoriteEntries().remove(entry);
if (!CollectionUtils.anyMatch(defaultFavorites, e -> e.equals(entry))) {
- config.getFavoriteEntries().add(entry);
+ config.getConfigFavoriteEntries().add(entry);
}
ConfigManager.getInstance().saveConfig();
@@ -107,8 +108,8 @@ public class FavoritesEntriesManager {
ConfigObjectImpl config = ConfigManagerImpl.getInstance().getConfig();
config.getHiddenFavoriteEntries().clear();
config.getHiddenFavoriteEntries().addAll(hiddenDefaultFavorites);
- config.getFavoriteEntries().clear();
- config.getFavoriteEntries().addAll(entries);
+ config.getConfigFavoriteEntries().clear();
+ config.getConfigFavoriteEntries().addAll(entries);
ConfigManager.getInstance().saveConfig();
FavoritesListWidget widget = ScreenOverlayImpl.getFavoritesListWidget();
@@ -116,4 +117,33 @@ public class FavoritesEntriesManager {
widget.updateSearch();
}
}
+
+ public List<FavoriteEntry> asListView() {
+ return new AbstractList<>() {
+ @Override
+ public FavoriteEntry get(int index) {
+ return getFavorites().get(index);
+ }
+
+ @Override
+ public int size() {
+ return getFavorites().size();
+ }
+
+ @Override
+ public void add(int index, FavoriteEntry entry) {
+ FavoritesEntriesManager.this.add(entry);
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ if (o instanceof FavoriteEntry) {
+ FavoritesEntriesManager.this.remove((FavoriteEntry) o);
+ return true;
+ } else {
+ return false;
+ }
+ }
+ };
+ }
}