diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-06-19 02:52:23 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-06-28 03:21:12 +0800 |
| commit | 62e44ab43188de4a353bc943747e81543f2dc782 (patch) | |
| tree | ae3577fbda865b2dedda0749bd75be315bcd831d /runtime/src/main/java/me | |
| parent | b04e074d0ccd87c3115e9b82f6466740aa8c9001 (diff) | |
| download | RoughlyEnoughItems-62e44ab43188de4a353bc943747e81543f2dc782.tar.gz RoughlyEnoughItems-62e44ab43188de4a353bc943747e81543f2dc782.tar.bz2 RoughlyEnoughItems-62e44ab43188de4a353bc943747e81543f2dc782.zip | |
Fix #935
Diffstat (limited to 'runtime/src/main/java/me')
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 1ec1b4fb1..6cd6bd754 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 @@ -36,6 +36,7 @@ import me.shedaniel.rei.api.client.config.entry.EntryStackProvider; import me.shedaniel.rei.api.client.favorites.FavoriteEntry; import me.shedaniel.rei.api.client.gui.config.*; 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; @@ -369,6 +370,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 d9937319c..4e16a86d4 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; @@ -801,7 +800,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; } } @@ -885,7 +884,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 77fcd96d9..f9040a694 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 @@ -53,7 +53,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; @@ -537,9 +536,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(); @@ -619,9 +618,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; + } + } + }; + } } |
