From 2c47af75968e2bdfae717d52cd0c137ed542673b Mon Sep 17 00:00:00 2001 From: shedaniel Date: Fri, 15 Jul 2022 23:55:34 +0800 Subject: Remove subsets, clean up code --- .../rei/api/client/config/ConfigObject.java | 1 + .../rei/api/client/plugins/REIClientPlugin.java | 1 + .../rei/api/client/subsets/SubsetsRegistry.java | 1 + .../shedaniel/rei/api/common/display/Display.java | 2 +- gradle.properties | 6 +- .../rei/impl/client/config/ConfigManagerImpl.java | 1 - .../rei/impl/client/gui/RecipeDisplayExporter.java | 21 +-- .../rei/impl/client/gui/ScreenOverlayImpl.java | 131 +++-------------- .../rei/impl/client/gui/modules/Menu.java | 113 +-------------- .../entries/EntryStackSubsetsMenuEntry.java | 136 ------------------ .../gui/modules/entries/SubSubsetsMenuEntry.java | 156 --------------------- .../gui/screen/AbstractDisplayViewingScreen.java | 2 +- .../gui/screen/DefaultDisplayViewingScreen.java | 4 - .../SearchFilterSyntaxHighlightingScreen.java | 3 - .../client/gui/widget/CachedEntryListRender.java | 1 - .../rei/impl/client/gui/widget/QueuedTooltip.java | 4 - .../client/gui/widget/basewidgets/PanelWidget.java | 7 - .../gui/widget/search/OverlaySearchField.java | 2 +- .../OverlaySearchFieldSyntaxHighlighter.java | 6 +- .../rei/impl/client/search/argument/Argument.java | 2 - .../search/argument/type/TagArgumentType.java | 3 +- .../impl/client/subsets/SubsetsRegistryImpl.java | 49 ++----- 22 files changed, 51 insertions(+), 601 deletions(-) delete mode 100644 runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/entries/EntryStackSubsetsMenuEntry.java delete mode 100644 runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/entries/SubSubsetsMenuEntry.java diff --git a/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java b/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java index b8ce1656c..3b0e0efbb 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java @@ -313,6 +313,7 @@ public interface ConfigObject { @ApiStatus.Experimental boolean doDebugSearchTimeRequired(); + @Deprecated(forRemoval = true) boolean isSubsetsEnabled(); boolean isInventoryHighlightingAllowed(); diff --git a/api/src/main/java/me/shedaniel/rei/api/client/plugins/REIClientPlugin.java b/api/src/main/java/me/shedaniel/rei/api/client/plugins/REIClientPlugin.java index d316994e9..f3ff9408d 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/plugins/REIClientPlugin.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/plugins/REIClientPlugin.java @@ -121,6 +121,7 @@ public interface REIClientPlugin extends REIPlugin { * @param registry the registry */ @ApiStatus.OverrideOnly + @Deprecated(forRemoval = true) default void registerSubsets(SubsetsRegistry registry) { } diff --git a/api/src/main/java/me/shedaniel/rei/api/client/subsets/SubsetsRegistry.java b/api/src/main/java/me/shedaniel/rei/api/client/subsets/SubsetsRegistry.java index e80504e77..d7046d494 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/subsets/SubsetsRegistry.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/subsets/SubsetsRegistry.java @@ -37,6 +37,7 @@ import java.util.List; import java.util.Set; @Environment(EnvType.CLIENT) +@Deprecated(forRemoval = true) public interface SubsetsRegistry extends Reloadable { static SubsetsRegistry getInstance() { return PluginManager.getClientInstance().get(SubsetsRegistry.class); diff --git a/api/src/main/java/me/shedaniel/rei/api/common/display/Display.java b/api/src/main/java/me/shedaniel/rei/api/common/display/Display.java index e13e3c4e2..e6479b587 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/display/Display.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/display/Display.java @@ -55,7 +55,7 @@ public interface Display extends DisplaySpec { */ List getInputEntries(); - @Deprecated + @Deprecated(forRemoval = true) default List getInputEntries(MenuSerializationContext context, MenuInfo info, boolean fill) { return getInputEntries(); } diff --git a/gradle.properties b/gradle.properties index 2175ba88e..9672274a3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,11 +4,11 @@ unstable=false supported_version=1.19 minecraft_version=1.19 forgeEnabled=true -forge_version=41.0.87 +forge_version=41.0.94 fabricloader_version=0.14.6 -cloth_config_version=7.0.69 +cloth_config_version=7.0.73 modmenu_version=4.0.0 fabric_api=0.55.2+1.19 -architectury_version=5.7.28 +architectury_version=5.9.30 api_exculde= #api_include=me.shedaniel.cloth:cloth-events,me.shedaniel.cloth:config-2,me.sargunvohra.mcmods:autoconfig1u,org.jetbrains:annotations,net.fabricmc.fabric-api:fabric diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java index 5e91da666..16fafcbff 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java @@ -100,7 +100,6 @@ public class ConfigManagerImpl implements ConfigManager { private ConfigObjectImpl object; public ConfigManagerImpl() { - Jankson jankson = Jankson.builder().build(); AutoConfig.register(ConfigObjectImpl.class, (definition, configClass) -> new JanksonConfigSerializer<>(definition, configClass, buildJankson(Jankson.builder()))); GuiRegistry guiRegistry = AutoConfig.getGuiRegistry(ConfigObjectImpl.class); guiRegistry.registerPredicateProvider((i13n, field, config, defaults, guiProvider) -> { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/RecipeDisplayExporter.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/RecipeDisplayExporter.java index 267450618..b643a5608 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/RecipeDisplayExporter.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/RecipeDisplayExporter.java @@ -37,7 +37,6 @@ import me.shedaniel.rei.impl.client.gui.toast.ExportRecipeIdentifierToast; import me.shedaniel.rei.impl.display.DisplaySpec; import net.minecraft.Util; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.resources.language.I18n; import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.ApiStatus; @@ -50,13 +49,11 @@ import java.util.Date; import java.util.List; @ApiStatus.Internal -public final class RecipeDisplayExporter extends Widget { - private static final RecipeDisplayExporter INSTANCE = new RecipeDisplayExporter(); - +public final class RecipeDisplayExporter { private RecipeDisplayExporter() {} public static void exportRecipeDisplay(Rectangle rectangle, DisplaySpec display, List widgets, boolean toast) { - INSTANCE.exportRecipe(rectangle, display, widgets); + exportRecipe(rectangle, display, widgets); if (toast) { ExportRecipeIdentifierToast.addToast(I18n.get("msg.rei.exported_recipe"), I18n.get("msg.rei.exported_recipe.desc")); } @@ -80,7 +77,7 @@ public final class RecipeDisplayExporter extends Widget { } } - private void exportRecipe(Rectangle rectangle, DisplaySpec display, List widgets) { + private static void exportRecipe(Rectangle rectangle, DisplaySpec display, List widgets) { Minecraft client = Minecraft.getInstance(); Window window = client.getWindow(); RenderTarget renderTarget = new TextureTarget(window.getWidth(), window.getHeight(), true, false); @@ -113,7 +110,7 @@ public final class RecipeDisplayExporter extends Widget { } Util.ioPool().execute(() -> { try { - File export = new File(minecraft.gameDirectory, "rei_exports/" + display.provideInternalDisplay().getCategoryIdentifier().toString().replace('/', '_').replace(':', '_')); + File export = new File(Minecraft.getInstance().gameDirectory, "rei_exports/" + display.provideInternalDisplay().getCategoryIdentifier().toString().replace('/', '_').replace(':', '_')); export.mkdirs(); strippedImage.writeToFile(getExportFilename(display, export)); } catch (IOException e) { @@ -130,14 +127,4 @@ public final class RecipeDisplayExporter extends Widget { poseStack.popPose(); RenderSystem.applyModelViewMatrix(); } - - @Override - public void render(PoseStack matrixStack, int mouseY, int i, float f) { - - } - - @Override - public List children() { - return null; - } } 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 2ee632c45..4451a8398 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 @@ -76,24 +76,18 @@ import me.shedaniel.rei.impl.client.gui.widget.entrylist.PaginatedEntryListWidge import me.shedaniel.rei.impl.client.gui.widget.entrylist.ScrolledEntryListWidget; 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; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiComponent; import net.minecraft.client.gui.chat.NarratorChatListener; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.multiplayer.PlayerInfo; import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionResult; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.GameType; import net.minecraft.world.level.block.Blocks; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; @@ -218,14 +212,6 @@ public class ScreenOverlayImpl extends ScreenOverlay { this.overlayMenu = new OverlayMenu(uuid, menu, Widgets.withTranslate(menu, 0, 0, 400), or, and); } - @ApiStatus.Internal - @Nullable - public Menu getOverlayMenu() { - if (isMenuOpened(Menu.SUBSETS)) - return this.overlayMenu.menu; - throw new IllegalStateException("Subsets menu accessed when subsets are not opened!"); - } - @ApiStatus.Internal @Override public void closeOverlayMenu() { @@ -253,10 +239,6 @@ public class ScreenOverlayImpl extends ScreenOverlay { return !this.bounds.isEmpty(); } - public void init(boolean useless) { - init(); - } - public void init() { draggingStack.set(DraggableComponentProvider.from(ScreenRegistry.getInstance()::getDraggableComponentProviders), DraggableComponentVisitor.from(ScreenRegistry.getInstance()::getDraggableComponentVisitors)); @@ -382,17 +364,6 @@ public class ScreenOverlayImpl extends ScreenOverlay { }) ) )); - Rectangle subsetsButtonBounds = getSubsetsButtonBounds(); - if (ConfigObject.getInstance().isSubsetsEnabled()) { - widgets.add(InternalWidgets.wrapLateRenderable(Widgets.createButton(subsetsButtonBounds, ClientHelperImpl.getInstance().isAprilFools.get() ? Component.translatable("text.rei.tiny_potato") : Component.translatable("text.rei.subsets")) - .onClick(button -> { - proceedOpenMenuOrElse(Menu.SUBSETS, () -> { - openMenu(Menu.SUBSETS, Menu.createSubsetsMenuFromRegistry(subsetsButtonBounds), point -> true, point -> ConfigObject.getInstance().isSubsetsEnabled()); - }, menu -> { - closeOverlayMenu(); - }); - }))); - } if (!ConfigObject.getInstance().isEntryListWidgetScrolled()) { widgets.add(Widgets.createClickableLabel(new Point(bounds.x + ((bounds.width - 18) / 2), bounds.y + (ConfigObject.getInstance().getSearchFieldLocation() == SearchFieldLocation.TOP_SIDE ? 24 : 0) + 10), NarratorChatListener.NO_TITLE, label -> { if (!Screen.hasShiftDown()) { @@ -454,7 +425,7 @@ public class ScreenOverlayImpl extends ScreenOverlay { } else if (ClientHelperImpl.getInstance().hasPermissionToUsePackets()) return Component.translatable("text.rei.cheating_enabled"); else - return Component.translatable("text.rei.cheating_limited_enabled"); + return Component.translatable("text.rei.cheating_limited_enabled"); }), new SeparatorMenuEntry(), ToggleMenuEntry.ofDeciding(Component.translatable("text.rei.config.menu.dark_theme"), @@ -524,63 +495,16 @@ public class ScreenOverlayImpl extends ScreenOverlay { ); } - private Rectangle getSubsetsButtonBounds() { - if (ConfigObject.getInstance().isSubsetsEnabled()) { - ScreenRegistry registry = ScreenRegistry.getInstance(); - Rectangle screenBounds = registry.getScreenBounds(minecraft.screen); - return new Rectangle(screenBounds.x, 3, screenBounds.width, 18); - } - return null; - } - - private Weather getNextWeather() { - try { - Weather current = getCurrentWeather(); - int next = current.getId() + 1; - if (next >= 3) - next = 0; - return Weather.byId(next); - } catch (Exception e) { - return Weather.CLEAR; - } - } - - private Weather getCurrentWeather() { - ClientLevel world = Minecraft.getInstance().level; - if (world.isThundering()) - return Weather.THUNDER; - if (world.getLevelData().isRaining()) - return Weather.RAIN; - return Weather.CLEAR; - } - - private String getGameModeShortText(GameType gameMode) { - return I18n.get("text.rei.short_gamemode." + gameMode.getName()); - } - - private String getGameModeText(GameType gameMode) { - return I18n.get("selectWorld.gameMode." + gameMode.getName()); - } - - private GameType getCurrentGameMode() { - PlayerInfo info = Minecraft.getInstance().getConnection().getPlayerInfo(Minecraft.getInstance().player.getGameProfile().getId()); - return info == null ? GameType.SURVIVAL : info.getGameMode(); - } - private Rectangle getSearchFieldArea() { int widthRemoved = 1; if (ConfigObject.getInstance().isCraftableFilterEnabled()) widthRemoved += 22; if (ConfigObject.getInstance().isLowerConfigButton()) widthRemoved += 22; SearchFieldLocation searchFieldLocation = REIRuntime.getInstance().getContextualSearchFieldLocation(); - switch (searchFieldLocation) { - case TOP_SIDE: - return getTopSideSearchFieldArea(widthRemoved); - case BOTTOM_SIDE: - return getBottomSideSearchFieldArea(widthRemoved); - default: - case CENTER: - return getCenterSearchFieldArea(widthRemoved); - } + return switch (searchFieldLocation) { + case TOP_SIDE -> getTopSideSearchFieldArea(widthRemoved); + case BOTTOM_SIDE -> getBottomSideSearchFieldArea(widthRemoved); + case CENTER -> getCenterSearchFieldArea(widthRemoved); + }; } private Rectangle getTopSideSearchFieldArea(int widthRemoved) { @@ -617,10 +541,6 @@ public class ScreenOverlayImpl extends ScreenOverlay { return new Rectangle(ConfigObject.getInstance().isLeftHandSidePanel() ? window.getGuiScaledWidth() - 30 : 10, 10, 20, 20); } - private String getCheatModeText() { - return I18n.get(String.format("%s%s", "text.rei.", ClientHelper.getInstance().isCheating() ? "cheat" : "nocheat")); - } - @Override public Rectangle getBounds() { return bounds; @@ -680,17 +600,7 @@ public class ScreenOverlayImpl extends ScreenOverlay { this.renderWidgets(matrices, mouseX, mouseY, delta); if (ConfigObject.getInstance().areClickableRecipeArrowsEnabled()) { Screen screen = Minecraft.getInstance().screen; - ClickArea.ClickAreaContext context = new ClickArea.ClickAreaContext() { - @Override - public Screen getScreen() { - return screen; - } - - @Override - public Point getMousePosition() { - return new Point(mouseX, mouseY); - } - }; + ClickArea.ClickAreaContext context = createClickAreaContext(mouseX, mouseY, screen); List clickAreaTooltips = ScreenRegistry.getInstance().getClickAreaTooltips((Class) screen.getClass(), context); if (clickAreaTooltips != null && !clickAreaTooltips.isEmpty()) { Tooltip.create(clickAreaTooltips).queue(); @@ -698,6 +608,20 @@ public class ScreenOverlayImpl extends ScreenOverlay { } } + private ClickArea.ClickAreaContext createClickAreaContext(double mouseX, double mouseY, Screen screen) { + return new ClickArea.ClickAreaContext<>() { + @Override + public Screen getScreen() { + return screen; + } + + @Override + public Point getMousePosition() { + return new Point(mouseX, mouseY); + } + }; + } + private static Rectangle calculateOverlayBounds() { Rectangle bounds = ScreenRegistry.getInstance().getOverlayBounds(ConfigObject.getInstance().getDisplayPanelLocation(), Minecraft.getInstance().screen); @@ -739,7 +663,6 @@ public class ScreenOverlayImpl extends ScreenOverlay { choosePageWidget.render(matrices, mouseX, mouseY, delta); } } - Screen currentScreen = Minecraft.getInstance().screen; if (choosePageWidget == null) { TOOLTIPS.stream().filter(Objects::nonNull) .reduce((tooltip, tooltip2) -> tooltip2) @@ -946,17 +869,7 @@ public class ScreenOverlayImpl extends ScreenOverlay { } if (ConfigObject.getInstance().areClickableRecipeArrowsEnabled()) { Screen screen = Minecraft.getInstance().screen; - ClickArea.ClickAreaContext context = new ClickArea.ClickAreaContext() { - @Override - public Screen getScreen() { - return screen; - } - - @Override - public Point getMousePosition() { - return new Point(mouseX, mouseY); - } - }; + ClickArea.ClickAreaContext context = createClickAreaContext(mouseX, mouseY, screen); if (ScreenRegistry.getInstance().executeClickArea((Class) screen.getClass(), context)) { return true; } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/Menu.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/Menu.java index 3ed184ad0..163b8bd89 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/Menu.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/Menu.java @@ -24,41 +24,26 @@ package me.shedaniel.rei.impl.client.gui.modules; import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; import com.mojang.blaze3d.vertex.PoseStack; import me.shedaniel.clothconfig2.ClothConfigInitializer; import me.shedaniel.clothconfig2.api.ScissorsHandler; import me.shedaniel.clothconfig2.api.scroll.ScrollingContainer; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; -import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.client.REIRuntime; import me.shedaniel.rei.api.client.gui.widgets.WidgetWithBounds; -import me.shedaniel.rei.api.client.registry.entry.EntryRegistry; -import me.shedaniel.rei.api.client.subsets.SubsetsRegistry; -import me.shedaniel.rei.api.common.entry.EntryStack; -import me.shedaniel.rei.api.common.util.CollectionUtils; -import me.shedaniel.rei.api.common.util.EntryStacks; -import me.shedaniel.rei.impl.client.gui.modules.entries.EntryStackSubsetsMenuEntry; import me.shedaniel.rei.impl.client.gui.modules.entries.SubMenuEntry; -import me.shedaniel.rei.impl.client.gui.modules.entries.SubSubsetsMenuEntry; import me.shedaniel.rei.impl.client.gui.widget.LateRenderable; import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.language.I18n; -import net.minecraft.core.Registry; -import net.minecraft.network.chat.Component; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.ApiStatus; -import java.util.*; -import java.util.stream.Collectors; +import java.util.Collection; +import java.util.Comparator; +import java.util.List; +import java.util.UUID; @ApiStatus.Internal public class Menu extends WidgetWithBounds implements LateRenderable { - public static final UUID SUBSETS = UUID.randomUUID(); public static final UUID WEATHER = UUID.randomUUID(); public static final UUID GAME_TYPE = UUID.randomUUID(); @@ -106,96 +91,6 @@ public class Menu extends WidgetWithBounds implements LateRenderable { this.menuStartPoint = new Point(x, y); } - public static Menu createSubsetsMenuFromRegistry(Rectangle menuStart) { - EntryRegistry instance = EntryRegistry.getInstance(); - List> stacks = instance.getEntryStacks().collect(Collectors.toList()); - Map entries = Maps.newHashMap(); - { - // All Entries group - Map allEntries = getOrCreateSubEntryInMap(entries, "roughlyenoughitems:all_entries"); - for (EntryStack stack : stacks) { - putEntryInMap(allEntries, stack); - } - } - { - // Item Groups group - Map itemGroups = getOrCreateSubEntryInMap(entries, "roughlyenoughitems:item_groups"); - for (Item item : Registry.ITEM) { - CreativeModeTab group = item.getItemCategory(); - if (group == null) - continue; - List list; - try { - list = instance.appendStacksForItem(item); - Map groupMenu = getOrCreateSubEntryInMap(itemGroups, "_item_group_" + group.langId); - for (ItemStack stack : list) { - putEntryInMap(groupMenu, EntryStacks.of(stack)); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - } - Set paths = SubsetsRegistry.getInstance().getPaths(); - for (String path : paths) { - Map lastMap = entries; - String[] pathSegments = path.split("/"); - for (String pathSegment : pathSegments) { - lastMap = getOrCreateSubEntryInMap(lastMap, pathSegment); - } - for (EntryStack entry : SubsetsRegistry.getInstance().getPathEntries(path)) { - EntryStack firstStack = CollectionUtils.findFirstOrNullEqualsExact(stacks, entry); - if (firstStack != null) { - putEntryInMap(lastMap, firstStack); - } - } - } - return new Menu(menuStart, buildEntries(entries), true); - } - - private static Map getOrCreateSubEntryInMap(Map parent, String pathSegment) { - putEntryInMap(parent, pathSegment); - return (Map) parent.get(pathSegment); - } - - private static void putEntryInMap(Map parent, String pathSegment) { - if (!parent.containsKey(pathSegment)) { - parent.put(pathSegment, Maps.newHashMap()); - } - } - - private static void putEntryInMap(Map parent, EntryStack stack) { - Set> items = (Set>) parent.get("items"); - if (items == null) { - items = Sets.newLinkedHashSet(); - parent.put("items", items); - } - items.add(stack); - } - - private static List buildEntries(Map map) { - List entries = Lists.newArrayList(); - for (Map.Entry entry : map.entrySet()) { - if (entry.getKey().equals("items")) { - Set> items = (Set>) entry.getValue(); - for (EntryStack item : items) { - entries.add(new EntryStackSubsetsMenuEntry(item)); - } - } else { - Map entryMap = (Map) entry.getValue(); - if (entry.getKey().startsWith("_item_group_")) { - entries.add(new SubSubsetsMenuEntry(Component.translatable(entry.getKey().replace("_item_group_", "itemGroup.")), buildEntries(entryMap))); - } else { - String translationKey = "subsets.rei." + entry.getKey().replace(':', '.'); - if (!I18n.exists(translationKey)) - RoughlyEnoughItemsCore.LOGGER.warn("Subsets menu " + translationKey + " does not have a translation"); - entries.add(new SubSubsetsMenuEntry(Component.translatable(translationKey), buildEntries(entryMap))); - } - } - } - return entries; - } - @SuppressWarnings("deprecation") private void buildEntries(Collection entries, boolean sort) { this.entries.clear(); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/entries/EntryStackSubsetsMenuEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/entries/EntryStackSubsetsMenuEntry.java deleted file mode 100644 index dfe6fac94..000000000 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/entries/EntryStackSubsetsMenuEntry.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * This file is licensed under the MIT License, part of Roughly Enough Items. - * Copyright (c) 2018, 2019, 2020, 2021, 2022 shedaniel - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package me.shedaniel.rei.impl.client.gui.modules.entries; - -import com.mojang.blaze3d.vertex.PoseStack; -import me.shedaniel.math.Point; -import me.shedaniel.math.Rectangle; -import me.shedaniel.rei.RoughlyEnoughItemsCoreClient; -import me.shedaniel.rei.api.client.REIRuntime; -import me.shedaniel.rei.api.client.config.ConfigManager; -import me.shedaniel.rei.api.client.config.ConfigObject; -import me.shedaniel.rei.api.client.config.entry.EntryStackProvider; -import me.shedaniel.rei.api.client.gui.widgets.TooltipContext; -import me.shedaniel.rei.api.client.registry.entry.EntryRegistry; -import me.shedaniel.rei.api.common.entry.EntryStack; -import me.shedaniel.rei.api.common.util.EntryStacks; -import me.shedaniel.rei.impl.client.REIRuntimeImpl; -import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl; -import me.shedaniel.rei.impl.client.gui.modules.AbstractMenuEntry; -import me.shedaniel.rei.impl.client.gui.modules.Menu; -import me.shedaniel.rei.impl.client.gui.modules.MenuEntry; -import net.minecraft.client.gui.components.events.GuiEventListener; -import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.sounds.SoundEvents; -import org.jetbrains.annotations.ApiStatus; - -import java.util.Collections; -import java.util.List; - -@ApiStatus.Experimental -@ApiStatus.Internal -public class EntryStackSubsetsMenuEntry extends AbstractMenuEntry { - final EntryStack stack; - private boolean clickedLast = false; - private Boolean isFiltered = null; - - public EntryStackSubsetsMenuEntry(EntryStack stack) { - this.stack = stack; - } - - @Override - public int getEntryWidth() { - return 18; - } - - @Override - public int getEntryHeight() { - return 18; - } - - @Override - public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { - if (isFiltered()) { - fill(matrices, getX(), getY(), getX() + getWidth(), getY() + 18, isSelected() ? -26215 : -65536); - } else if (isSelected()) { - fill(matrices, getX(), getY(), getX() + getWidth(), getY() + 18, 1174405119); - } - if (containsMouse() && mouseX >= getX() + (getWidth() / 2) - 8 && mouseX <= getX() + (getWidth() / 2) + 8 && mouseY >= getY() + 1 && mouseY <= getY() + 17) { - REIRuntime.getInstance().queueTooltip(stack.getTooltip(TooltipContext.of(new Point(mouseX, mouseY)))); - if (RoughlyEnoughItemsCoreClient.isLeftMousePressed && !clickedLast) { - clickedLast = true; - if (getParent().scrolling.getScissorBounds().contains(mouseX, mouseY)) { - minecraft.getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F)); - List> filteredStacks = ConfigObject.getInstance().getFilteredStackProviders(); - if (isFiltered()) { - filteredStacks.removeIf(next -> EntryStacks.equalsExact(next.provide(), stack)); - } else { - filteredStacks.add(EntryStackProvider.ofStack(stack.normalize())); - } - Menu menu = ((ScreenOverlayImpl) REIRuntime.getInstance().getOverlay().get()).getOverlayMenu(); - if (menu != null) - recalculateFilter(menu); - ConfigManager.getInstance().saveConfig(); - EntryRegistry.getInstance().refilter(); - if (REIRuntimeImpl.getSearchField() != null) { - ScreenOverlayImpl.getEntryListWidget().updateSearch(REIRuntimeImpl.getSearchField().getText(), true); - } - } - } else if (!RoughlyEnoughItemsCoreClient.isLeftMousePressed) clickedLast = false; - } else clickedLast = false; - stack.render(matrices, new Rectangle(getX() + (getWidth() / 2) - 8, getY() + 1, 16, 16), mouseX, mouseY, delta); - } - - void recalculateFilter(Menu menu) { - for (MenuEntry child : menu.children()) { - if (child instanceof SubSubsetsMenuEntry && ((SubSubsetsMenuEntry) child).getChildMenu() != null) { - recalculateFilter(((SubSubsetsMenuEntry) child).getChildMenu()); - } else if (child instanceof EntryStackSubsetsMenuEntry && EntryStacks.equalsExact(((EntryStackSubsetsMenuEntry) child).stack, stack)) { - ((EntryStackSubsetsMenuEntry) child).isFiltered = null; - } - } - } - - @Override - public boolean mouseClicked(double mouseX, double mouseY, int button) { - return isRendering() && mouseX >= getX() && mouseX <= getX() + getWidth() && mouseY >= getY() && mouseY <= getY() + getEntryHeight(); - } - - @Override - public List children() { - return Collections.emptyList(); - } - - public boolean isFiltered() { - if (isFiltered == null) { - isFiltered = false; - List> filteredStacks = ConfigObject.getInstance().getFilteredStackProviders(); - for (EntryStackProvider provider : filteredStacks) { - if (EntryStacks.equalsExact(provider.provide(), stack)) - return isFiltered = true; - } - } - return isFiltered; - } -} diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/entries/SubSubsetsMenuEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/entries/SubSubsetsMenuEntry.java deleted file mode 100644 index dbcfbc8c1..000000000 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/entries/SubSubsetsMenuEntry.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * This file is licensed under the MIT License, part of Roughly Enough Items. - * Copyright (c) 2018, 2019, 2020, 2021, 2022 shedaniel - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package me.shedaniel.rei.impl.client.gui.modules.entries; - -import com.mojang.blaze3d.vertex.PoseStack; -import me.shedaniel.rei.api.client.REIRuntime; -import me.shedaniel.rei.api.client.config.ConfigManager; -import me.shedaniel.rei.api.client.config.ConfigObject; -import me.shedaniel.rei.api.client.config.entry.EntryStackProvider; -import me.shedaniel.rei.api.client.gui.widgets.Tooltip; -import me.shedaniel.rei.api.client.registry.entry.EntryRegistry; -import me.shedaniel.rei.api.common.util.EntryStacks; -import me.shedaniel.rei.impl.client.REIRuntimeImpl; -import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl; -import me.shedaniel.rei.impl.client.gui.modules.Menu; -import me.shedaniel.rei.impl.client.gui.modules.MenuEntry; -import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.network.chat.Component; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.util.Mth; -import net.minecraft.util.Tuple; -import org.jetbrains.annotations.ApiStatus; - -import java.util.Collections; -import java.util.List; -import java.util.function.Supplier; - -@ApiStatus.Internal -public class SubSubsetsMenuEntry extends SubMenuEntry { - private Tuple filteredRatio = null; - private long lastListHash = -1; - private boolean clickedBefore = false; - - public SubSubsetsMenuEntry(Component text) { - this(text, Collections.emptyList()); - } - - public SubSubsetsMenuEntry(Component text, Supplier> entries) { - this(text, entries.get()); - } - - public SubSubsetsMenuEntry(Component text, List entries) { - super(text, entries); - } - - @Override - public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { - super.render(matrices, mouseX, mouseY, delta); - if (isSelected()) { - if (entries.isEmpty()) { - clickedBefore = false; - } - if (clickedBefore) { - if (isRendering() && mouseX >= getX() && mouseX <= getX() + getWidth() && mouseY >= getY() && mouseY <= getY() + 12 && !entries.isEmpty()) { - REIRuntime.getInstance().queueTooltip(Tooltip.create(Component.literal("Click again to filter everything in this group."))); - } else clickedBefore = false; - } - } else clickedBefore = false; - } - - @Override - protected void renderBackground(PoseStack poses, int x, int y, int width, int height) { - double filteredRatio = getFilteredRatio(); - if (filteredRatio > 0) { - filteredRatio = filteredRatio * 0.85 + 0.15; - fill(poses, x, y, x + width, y + 12, (16711680 | Mth.ceil(filteredRatio * 255.0) << 24) + (isSelected() ? 39321 : 0)); - } else if (isSelected()) { - fill(poses, x, y, x + width, y + 12, -12237499); - } - } - - @Override - protected boolean onClick(double mouseX, double mouseY, int button) { - if (clickedBefore) { - clickedBefore = false; - List> filteredStacks = ConfigObject.getInstance().getFilteredStackProviders(); - Menu overlay = ((ScreenOverlayImpl) REIRuntime.getInstance().getOverlay().get()).getOverlayMenu(); - setFiltered(filteredStacks, overlay, this, !(getFilteredRatio() > 0)); - ConfigManager.getInstance().saveConfig(); - EntryRegistry.getInstance().refilter(); - if (REIRuntimeImpl.getSearchField() != null) { - ScreenOverlayImpl.getEntryListWidget().updateSearch(REIRuntimeImpl.getSearchField().getText(), true); - } - } else { - clickedBefore = true; - } - minecraft.getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F)); - return true; - } - - private void setFiltered(List> filteredStacks, Menu subsetsMenu, SubSubsetsMenuEntry subSubsetsMenuEntry, boolean filtered) { - for (MenuEntry entry : subSubsetsMenuEntry.entries) { - if (entry instanceof EntryStackSubsetsMenuEntry menuEntry) { - if (menuEntry.isFiltered() != filtered) { - if (!filtered) { - filteredStacks.removeIf(next -> EntryStacks.equalsExact(next.provide(), menuEntry.stack)); - } else { - filteredStacks.add(EntryStackProvider.ofStack(menuEntry.stack.normalize())); - } - } - if (subsetsMenu != null) - menuEntry.recalculateFilter(subsetsMenu); - } else if (entry instanceof SubSubsetsMenuEntry menuEntry) { - setFiltered(filteredStacks, subsetsMenu, menuEntry, filtered); - } - } - } - - public double getFilteredRatio() { - Tuple pair = getFilteredRatioPair(); - return pair.getB() == 0 ? 0 : pair.getA() / (double) pair.getB(); - } - - public Tuple getFilteredRatioPair() { - List> filteredStacks = ConfigObject.getInstance().getFilteredStackProviders(); - if (lastListHash != filteredStacks.hashCode()) { - int size = 0; - int filtered = 0; - for (MenuEntry entry : entries) { - if (entry instanceof EntryStackSubsetsMenuEntry) { - size++; - if (((EntryStackSubsetsMenuEntry) entry).isFiltered()) - filtered++; - } else if (entry instanceof SubSubsetsMenuEntry) { - Tuple pair = ((SubSubsetsMenuEntry) entry).getFilteredRatioPair(); - filtered += pair.getA(); - size += pair.getB(); - } - } - filteredRatio = new Tuple<>(filtered, size); - lastListHash = filteredStacks.hashCode(); - } - return filteredRatio; - } -} diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java index 27a6551d7..7d8c9c072 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java @@ -350,7 +350,7 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { - return super.mouseClicked(mouseX, mouseY, button) || (getOverlay().mouseClicked(mouseX, mouseY, button) && handleFocuses()); + return super.mouseClicked(mouseX, mouseY, button) || (getOverlay().mouseClicked(mouseX, mouseY, button) && handleFocuses(button)); } @Override diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java index 011d46a51..45010f1cc 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java @@ -151,10 +151,6 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { int totalDisplayHeight = (getCurrentCategory().getDisplayHeight() + 4) * Math.max(1, getRecipesPerPage(maxHeight, getCurrentCategory()) + 1) + 36; int guiWidth = Math.max(maxWidthDisplay + 10 + 14 + 14, 190); this.bounds = new Rectangle(width / 2 - guiWidth / 2, height / 2 - maxHeight / 2, guiWidth, maxHeight); - if (ConfigObject.getInstance().isSubsetsEnabled()) { - this.bounds.setLocation(this.bounds.getX(), this.bounds.getY() + 15); - this.bounds.setSize(this.bounds.getWidth(), this.bounds.getHeight() - 10); - } boolean isCompactTabs = ConfigObject.getInstance().isUsingCompactTabs(); boolean isCompactTabButtons = ConfigObject.getInstance().isUsingCompactTabButtons(); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/SearchFilterSyntaxHighlightingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/SearchFilterSyntaxHighlightingScreen.java index 206a4546a..a2575d643 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/SearchFilterSyntaxHighlightingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/SearchFilterSyntaxHighlightingScreen.java @@ -37,12 +37,10 @@ public class SearchFilterSyntaxHighlightingScreen extends Screen { super(component); } - @Override public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { renderHoleBackground(matrices, 0, height, 32, 255, 255); super.render(matrices, mouseX, mouseY, delta); - } protected void renderHoleBackground(PoseStack matrices, int y1, int y2, int tint, int alpha1, int alpha2) { @@ -52,7 +50,6 @@ public class SearchFilterSyntaxHighlightingScreen extends Screen { Matrix4f matrix = matrices.last().pose(); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); RenderSystem.setShader(GameRenderer::getPositionTexColorShader); - float float_1 = 32.0F; buffer.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); buffer.vertex(matrix, 0, y2, 0.0F).uv(0.0F, y2 / 32.0F).color(tint, tint, tint, alpha2).endVertex(); buffer.vertex(matrix, this.width, y2, 0.0F).uv(this.width / 32.0F, y2 / 32.0F).color(tint, tint, tint, alpha2).endVertex(); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CachedEntryListRender.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CachedEntryListRender.java index 8b39a5d08..12c475f99 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CachedEntryListRender.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CachedEntryListRender.java @@ -146,7 +146,6 @@ public class CachedEntryListRender { hash = new Long2LongOpenHashMap(list.size() + 10); Minecraft minecraft = Minecraft.getInstance(); - Window window = minecraft.getWindow(); TextureTarget target = new TextureTarget(width, height, true, false); target.bindWrite(true); Matrix4f projectionMatrix = Matrix4f.orthographic(0.0F, width, 0.0F, height, 1000.0F, 3000.0F); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/QueuedTooltip.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/QueuedTooltip.java index 27cf89f09..03a89eb6d 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/QueuedTooltip.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/QueuedTooltip.java @@ -135,10 +135,6 @@ public class QueuedTooltip implements Tooltip { return obj instanceof TooltipComponent; } - public boolean isClientComponent() { - return obj instanceof ClientTooltipComponent; - } - @Override public TooltipComponent getAsTooltipComponent() { return (TooltipComponent) obj; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/PanelWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/PanelWidget.java index f3e6a4ceb..d3b8c0484 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/PanelWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/PanelWidget.java @@ -53,7 +53,6 @@ public final class PanelWidget extends Panel { private int color = -1; private int xTextureOffset = 0; private int yTextureOffset = RecipeBorderType.DEFAULT.getYOffset(); - private ResourceLocation texture = null; private Predicate rendering = Predicates.alwaysTrue(); private final NumberAnimator darkBackgroundAlpha = ValueAnimator.ofFloat() .withConvention(() -> REIRuntime.getInstance().isDarkThemeEnabled() ? 1.0F : 0.0F, ValueAnimator.typicalTransitionTime()) @@ -67,12 +66,6 @@ public final class PanelWidget extends Panel { this.bounds = Objects.requireNonNull(bounds); } - public static void render(PoseStack matrices, Rectangle bounds, int color, float delta) { - TEMP.bounds.setBounds(Objects.requireNonNull(bounds)); - TEMP.color = color; - TEMP.render(matrices, 0, 0, delta); - } - @Override public int getXTextureOffset() { return xTextureOffset; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java index bed536c9c..b06cedb2c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java @@ -72,7 +72,7 @@ public class OverlaySearchField extends TextFieldWidget implements TextFieldWidg private static final Style SPLITTER_STYLE = Style.EMPTY.withColor(ChatFormatting.GRAY); private static final Style QUOTES_STYLE = Style.EMPTY.withColor(ChatFormatting.GOLD); private static final Style ERROR_STYLE = Style.EMPTY.withColor(TextColor.fromRgb(0xff5555)); - private final OverlaySearchFieldSyntaxHighlighter highlighter = new OverlaySearchFieldSyntaxHighlighter(this); + private final OverlaySearchFieldSyntaxHighlighter highlighter = new OverlaySearchFieldSyntaxHighlighter(getText()); public long keybindFocusTime = -1; public int keybindFocusKey = -1; public boolean isMain = true; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchFieldSyntaxHighlighter.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchFieldSyntaxHighlighter.java index 2f49f4f87..24e63c253 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchFieldSyntaxHighlighter.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchFieldSyntaxHighlighter.java @@ -33,12 +33,10 @@ import java.util.function.Consumer; @ApiStatus.Internal public class OverlaySearchFieldSyntaxHighlighter implements Consumer { - private final OverlaySearchField field; public byte[] highlighted; - public OverlaySearchFieldSyntaxHighlighter(OverlaySearchField field) { - this.field = field; - this.accept(field.getText()); + public OverlaySearchFieldSyntaxHighlighter(String text) { + this.accept(text); } @Override diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/Argument.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/Argument.java index f8ffecc4e..c0126e9a9 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/Argument.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/Argument.java @@ -70,10 +70,8 @@ import java.util.regex.Pattern; @ApiStatus.Internal @Environment(EnvType.CLIENT) public class Argument { - public static final String SPACE = " ", EMPTY = ""; public static final Short2ObjectMap> SEARCH_CACHE = Short2ObjectMaps.synchronize(new Short2ObjectOpenHashMap<>()); private static final AtomicReference lastLanguage = new AtomicReference<>(); - static final Argument ALWAYS = new Argument<>(AlwaysMatchingArgumentType.INSTANCE, EMPTY, true, -1, -1, true); private ArgumentType argumentType; private String text; private T filterData; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TagArgumentType.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TagArgumentType.java index 4d40cf524..6791090f9 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TagArgumentType.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TagArgumentType.java @@ -69,7 +69,8 @@ public final class TagArgumentType extends ArgumentType { @Override public String[] cacheData(EntryStack stack) { Stream> tags = stack.getTagsFor(); - return tags.map(TagArgumentType::toString).toArray(String[]::new); + String[] array = tags.map(TagArgumentType::toString).toArray(String[]::new); + return array.length == 0 ? EMPTY_ARRAY : array; } @Override diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/subsets/SubsetsRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/subsets/SubsetsRegistryImpl.java index 8eabff6ef..94febcd8e 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/subsets/SubsetsRegistryImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/subsets/SubsetsRegistryImpl.java @@ -23,26 +23,23 @@ package me.shedaniel.rei.impl.client.subsets; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; import me.shedaniel.rei.api.client.plugins.REIClientPlugin; import me.shedaniel.rei.api.client.subsets.SubsetsRegistry; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.registry.ReloadStage; -import me.shedaniel.rei.api.common.util.CollectionUtils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Set; @ApiStatus.Internal @Environment(EnvType.CLIENT) public class SubsetsRegistryImpl implements SubsetsRegistry { - private final Map>> paths = Maps.newHashMap(); - @Override public ReloadStage getStage() { return ReloadStage.START; @@ -55,64 +52,34 @@ public class SubsetsRegistryImpl implements SubsetsRegistry { @Override public void startReload() { - paths.clear(); } @Override public List getEntryPaths(EntryStack stack) { - List strings = null; - for (Map.Entry>> entry : paths.entrySet()) { - if (CollectionUtils.findFirstOrNullEqualsExact(entry.getValue(), stack) != null) { - if (strings == null) - strings = new ArrayList<>(); - strings.add(entry.getKey()); - } - } - return strings == null ? Collections.emptyList() : strings; + return Collections.emptyList(); } @Override public void registerPathEntry(String path, EntryStack stack) { - getOrCreatePathEntries(path).add(stack.normalize()); } @Override public void registerPathEntries(String path, Collection> stacks) { - Set> entries = getOrCreatePathEntries(path); - for (EntryStack stack : stacks) { - entries.add(stack.normalize()); - } } @Nullable @Override public Set> getPathEntries(String path) { - if (!isPathValid(path)) - throw new IllegalArgumentException("Illegal path: " + path); - return paths.get(path); + return null; } @Override public Set getPaths() { - return paths.keySet(); + return Collections.emptySet(); } @Override public Set> getOrCreatePathEntries(String path) { - Set> paths = getPathEntries(path); - if (paths == null) { - this.paths.put(path, Sets.newLinkedHashSet()); - paths = Objects.requireNonNull(getPathEntries(path)); - } - return paths; - } - - private boolean isPathValid(String path) { - String[] pathSegments = path.split("/"); - for (String pathSegment : pathSegments) { - if (!ResourceLocation.isValidResourceLocation(pathSegment)) - return false; - } - return true; + return Collections.emptySet(); } } -- cgit