diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-06-19 02:52:23 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2023-05-29 21:00:40 +0800 |
| commit | f8d1f9e67b7f14fe22ac4e632aa6a8e36274c9c8 (patch) | |
| tree | 3d47f1213075c5af3fc9cd9fed423bda3443c626 /runtime/src/main/java | |
| parent | c2de681d4e851e42a1c877b4007f7ad49b8ec862 (diff) | |
| download | RoughlyEnoughItems-f8d1f9e67b7f14fe22ac4e632aa6a8e36274c9c8.tar.gz RoughlyEnoughItems-f8d1f9e67b7f14fe22ac4e632aa6a8e36274c9c8.tar.bz2 RoughlyEnoughItems-f8d1f9e67b7f14fe22ac4e632aa6a8e36274c9c8.zip | |
Fix #935
Diffstat (limited to 'runtime/src/main/java')
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; + } + } + }; + } } |
