From 1e869aeac83d1627a6cae32a3b53b7d17bd3d7b8 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Mon, 29 May 2023 23:17:20 +0800 Subject: Fix compile errors --- .../me/shedaniel/rei/RoughlyEnoughItemsCore.java | 7 +- .../rei/RoughlyEnoughItemsCoreClient.java | 109 ++++++++++++--------- .../shedaniel/rei/RoughlyEnoughItemsNetwork.java | 2 +- .../rei/impl/client/ClientHelperImpl.java | 8 +- .../shedaniel/rei/impl/client/ErrorDisplayer.java | 2 +- .../shedaniel/rei/impl/client/REIRuntimeImpl.java | 2 +- .../rei/impl/client/config/ConfigObjectImpl.java | 1 - .../client/config/addon/ConfigAddonsScreen.java | 10 +- .../client/config/entries/ConfigAddonsEntry.java | 6 -- .../config/entries/FilteringCategoriesEntry.java | 6 -- .../config/entries/FilteringCategoriesScreen.java | 8 +- .../config/entries/FilteringRulesScreen.java | 6 +- .../config/entries/NoFilteringCategoriesEntry.java | 6 -- .../entry/filtering/FilteringContextImpl.java | 6 +- .../filtering/rules/BasicFilteringRuleImpl.java | 5 +- .../filtering/rules/SearchFilteringRuleType.java | 8 +- .../entry/type/types/RenderingEntryDefinition.java | 8 +- .../favorites/FavoriteEntryTypeRegistryImpl.java | 40 +++++++- .../rei/impl/client/gui/ScreenOverlayImpl.java | 26 +++-- .../rei/impl/client/gui/credits/CreditsScreen.java | 13 --- .../rei/impl/client/gui/hints/HintProvider.java | 40 +++++++- .../rei/impl/client/gui/modules/Menu.java | 4 +- .../gui/screen/AbstractDisplayViewingScreen.java | 12 +-- .../gui/screen/CompositeDisplayViewingScreen.java | 2 +- .../client/gui/screen/ConfigReloadingScreen.java | 18 +++- .../gui/screen/DefaultDisplayViewingScreen.java | 4 +- .../client/gui/widget/AutoCraftingEvaluator.java | 49 ++++----- .../gui/widget/BatchedEntryRendererManager.java | 2 +- .../client/gui/widget/CachedEntryListRender.java | 7 +- .../impl/client/gui/widget/ConfigButtonWidget.java | 18 +--- .../gui/widget/CraftableFilterButtonWidget.java | 13 +-- .../gui/widget/DelegateWidgetWithTranslate.java | 2 +- .../client/gui/widget/DisplayTooltipComponent.java | 82 ---------------- .../impl/client/gui/widget/EntryHighlighter.java | 35 +++++-- .../rei/impl/client/gui/widget/EntryWidget.java | 26 ++--- .../rei/impl/client/gui/widget/QueuedTooltip.java | 2 - .../impl/client/gui/widget/TabContainerWidget.java | 17 ++-- .../gui/widget/entrylist/CachingEntryRenderer.java | 8 +- .../entrylist/CollapsedEntriesBorderRenderer.java | 62 +++++++----- .../widget/entrylist/CollapsedEntriesTooltip.java | 88 ----------------- .../entrylist/CollapsingEntryListWidget.java | 6 +- .../widget/entrylist/EntryListSearchManager.java | 4 +- .../gui/widget/entrylist/EntryListStackEntry.java | 13 +-- .../gui/widget/entrylist/EntryListWidget.java | 5 +- .../widget/entrylist/PaginatedEntryListWidget.java | 13 ++- .../widget/entrylist/ScrolledEntryListWidget.java | 3 +- .../widget/favorites/FavoritesEntriesManager.java | 7 +- .../impl/client/gui/widget/hint/HintWidget.java | 7 +- .../gui/widget/hint/HintsContainerWidget.java | 2 +- .../gui/widget/search/OverlaySearchField.java | 3 +- .../registry/display/DisplayRegistryImpl.java | 2 +- .../rei/impl/client/search/AsyncSearchManager.java | 49 +++++++-- .../search/argument/AlternativeArgument.java | 3 +- .../rei/impl/client/search/argument/Argument.java | 9 +- .../impl/client/search/argument/ArgumentCache.java | 3 +- .../client/search/argument/InputMethodMatcher.java | 4 +- .../search/argument/type/TagArgumentType.java | 3 - .../client/search/method/DefaultInputMethod.java | 3 +- .../search/method/InputMethodRegistryImpl.java | 3 +- .../search/method/unihan/BomopofoInputMethod.java | 9 +- .../method/unihan/DoublePinyinInputMethod.java | 17 ++-- .../search/method/unihan/JyutpingInputMethod.java | 7 +- .../search/method/unihan/PinyinInputMethod.java | 68 ++++++++++--- .../search/method/unihan/UniHanInputMethod.java | 4 +- .../client/search/method/unihan/UniHanManager.java | 2 +- .../impl/client/transfer/MissingStacksTooltip.java | 107 -------------------- .../transfer/TransferHandlerRegistryImpl.java | 5 - .../shedaniel/rei/impl/client/view/ViewsImpl.java | 2 +- .../entry/DeferringEntryTypeProviderImpl.java | 2 +- .../impl/common/entry/type/EntryRegistryImpl.java | 3 +- .../common/entry/type/EntryRegistryListImpl.java | 16 +-- .../common/entry/type/PreFilteredEntryList.java | 51 ++++++++-- .../rei/impl/common/plugins/PluginManagerImpl.java | 20 ++-- .../impl/common/transfer/MenuInfoRegistryImpl.java | 2 +- .../rei/impl/init/PrimitivePlatformAdapter.java | 2 +- .../plugin/client/DefaultClientRuntimePlugin.java | 4 +- .../client/HideIngredientsFromTagsPlugin.java | 48 +++++++-- .../rei/plugin/client/InputMethodWatcher.java | 5 +- .../plugin/client/SearchFilterPrepareWatcher.java | 3 +- .../plugin/client/entry/FluidEntryDefinition.java | 4 +- .../plugin/client/entry/ItemEntryDefinition.java | 27 +++-- .../shedaniel/rei/plugin/test/REITestPlugin.java | 5 +- 82 files changed, 646 insertions(+), 679 deletions(-) delete mode 100644 runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayTooltipComponent.java delete mode 100644 runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsedEntriesTooltip.java delete mode 100644 runtime/src/main/java/me/shedaniel/rei/impl/client/transfer/MissingStacksTooltip.java (limited to 'runtime/src/main/java/me') diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index aea482e5b..e87d29b92 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -24,7 +24,7 @@ package me.shedaniel.rei; import com.google.common.collect.ImmutableList; -import dev.architectury.platform.Mod; +import me.shedaniel.architectury.platform.Mod; import me.shedaniel.architectury.platform.Platform; import me.shedaniel.architectury.registry.ReloadListeners; import me.shedaniel.architectury.utils.Env; @@ -70,6 +70,7 @@ import java.util.ServiceLoader; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.UnaryOperator; +import java.util.stream.Collectors; @ApiStatus.Internal public class RoughlyEnoughItemsCore { @@ -99,7 +100,7 @@ public class RoughlyEnoughItemsCore { logger.info("Java: " + System.getProperty("java.version") + " (" + System.getProperty("java.vendor") + ")"); logger.info("========================================"); logger.info("Mods:"); - for (Mod mod : Platform.getMods().stream().sorted(Comparator.comparing(Mod::getModId)).toList()) { + for (Mod mod : Platform.getMods().stream().sorted(Comparator.comparing(Mod::getModId)).collect(Collectors.toList())) { logger.info("- " + mod.getModId() + ": " + mod.getVersion()); } logger.info("========================================"); @@ -185,6 +186,6 @@ public class RoughlyEnoughItemsCore { } public static PluginDetector getPluginDetector() { - return PLUGIN_DETECTOR_LOADER.findFirst().orElseThrow(); + return PLUGIN_DETECTOR_LOADER.iterator().next(); } } diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java index 16734b614..8e6380fe7 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java @@ -24,8 +24,6 @@ package me.shedaniel.rei; import com.google.common.collect.Lists; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.serialization.DataResult; import me.shedaniel.architectury.event.Event; import me.shedaniel.architectury.event.EventFactory; @@ -33,7 +31,7 @@ import me.shedaniel.architectury.event.events.GuiEvent; import me.shedaniel.architectury.event.events.RecipeUpdateEvent; import me.shedaniel.architectury.event.events.client.ClientScreenInputEvent; import me.shedaniel.architectury.networking.NetworkManager; -import me.shedaniel.architectury.platform.Platform; +import me.shedaniel.architectury.utils.BooleanValue; import me.shedaniel.math.Point; import me.shedaniel.rei.api.client.REIRuntime; import me.shedaniel.rei.api.client.config.ConfigObject; @@ -101,6 +99,7 @@ import net.minecraft.client.gui.screens.inventory.CraftingScreen; import net.minecraft.client.gui.screens.recipebook.GhostRecipe; import net.minecraft.client.gui.screens.recipebook.RecipeBookComponent; import net.minecraft.client.resources.language.I18n; +import net.minecraft.data.models.blockstates.PropertyDispatch; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TextComponent; @@ -113,7 +112,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.crafting.Ingredient; -import org.apache.commons.lang3.function.TriFunction; import org.apache.commons.lang3.mutable.MutableLong; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; @@ -156,8 +154,7 @@ public class RoughlyEnoughItemsCoreClient { return entryType.readResult(object); }, "favoriteEntryFromJson"); ClientInternals.attachInstance((BiFunction<@Nullable Point, Collection, Tooltip>) QueuedTooltip::impl, "tooltipProvider"); - ClientInternals.attachInstance((TriFunction) TooltipContextImpl::new, "tooltipContextProvider"); - ClientInternals.attachInstance((Function) QueuedTooltip.TooltipEntryImpl::new, "tooltipEntryProvider"); + ClientInternals.attachInstance((PropertyDispatch.TriFunction) TooltipContextImpl::new, "tooltipContextProvider"); ClientInternals.attachInstance((BiFunction, FavoriteMenuEntry>) SubMenuEntry::new, "subMenuEntry"); ClientInternals.attachInstance((BiFunction) (text, value) -> ToggleMenuEntry.of(text, value::get, value), "toggleEntry"); ClientInternals.attachInstance((Function<@Nullable Boolean, ClickArea.Result>) successful -> new ClickArea.Result() { @@ -325,14 +322,14 @@ public class RoughlyEnoughItemsCoreClient { RecipeUpdateEvent.EVENT.register(recipeManager -> { reloadPlugins(endReload, ReloadStage.END); }); - ClientGuiEvent.INIT_PRE.register((screen, access) -> { + GuiEvent.INIT_PRE.register((screen, widgets, children) -> { List stages = ((PluginManagerImpl>) PluginManager.getInstance()).getObservedStages(); if (Minecraft.getInstance().level != null && Minecraft.getInstance().player != null && stages.contains(ReloadStage.START) && !stages.contains(ReloadStage.END) && !PluginManager.areAnyReloading() && screen instanceof AbstractContainerScreen) { for (Future task : RELOAD_TASKS) { if (!task.isDone()) { - return EventResult.pass(); + return InteractionResult.PASS; } } @@ -340,7 +337,7 @@ public class RoughlyEnoughItemsCoreClient { reloadPlugins(endReload, ReloadStage.END); } - return EventResult.pass(); + return InteractionResult.PASS; }); GuiEvent.INIT_POST.register((screen, widgets, children) -> { REIRuntime.getInstance().getOverlay(false, true); @@ -400,8 +397,14 @@ public class RoughlyEnoughItemsCoreClient { if (!REIRuntimeImpl.getSearchField().isFocused()) { GuiEventListener focused = screen.getFocused(); if (focused != null) { - if (focused instanceof EditBox editBox && editBox.isFocused()) return EventResult.pass(); - if (focused instanceof RecipeBookComponent book && book.searchBox != null && book.searchBox.isFocused()) return InteractionResult.PASS; + if (focused instanceof EditBox && ((EditBox) focused).isFocused()) { + EditBox editBox = (EditBox) focused; + return InteractionResult.PASS; + } + if (focused instanceof RecipeBookComponent && ((RecipeBookComponent) focused).searchBox != null && ((RecipeBookComponent) focused).searchBox.isFocused()) { + RecipeBookComponent book = (RecipeBookComponent) focused; + return InteractionResult.PASS; + } } } resetFocused(screen); @@ -413,40 +416,40 @@ public class RoughlyEnoughItemsCoreClient { int[] rendered = {0}; GuiEvent.RENDER_PRE.register((screen, matrices, mouseX, mouseY, delta) -> { if (shouldReturn(screen)) - return EventResult.pass(); + return InteractionResult.PASS; rendered[0] = 0; - return EventResult.pass(); - }); - GuiEvent.RENDER_CONTAINER_BACKGROUND.register((screen, matrices, mouseX, mouseY, delta) -> { - if (shouldReturn(screen)) - return; - rendered[0] = 1; - resetFocused(screen); - if (!(screen instanceof DisplayScreen)) { - getOverlay().render(matrices, mouseX, mouseY, delta); - } - resetFocused(screen); - }); - GuiEvent.RENDER_CONTAINER_FOREGROUND.register((screen, matrices, mouseX, mouseY, delta) -> { - if (shouldReturn(screen)) - return; - rendered[0] = 2; - resetFocused(screen); - PoseStack poseStack = RenderSystem.getModelViewStack(); - poseStack.pushPose(); - poseStack.translate(-screen.leftPos, -screen.topPos, 0.0); - RenderSystem.applyModelViewMatrix(); - ((ScreenOverlayImpl) getOverlay()).lateRender(matrices, mouseX, mouseY, delta); - poseStack.popPose(); - RenderSystem.applyModelViewMatrix(); - resetFocused(screen); + return InteractionResult.PASS; }); +// GuiEvent.RENDER_CONTAINER_BACKGROUND.register((screen, matrices, mouseX, mouseY, delta) -> { +// if (shouldReturn(screen)) +// return; +// rendered[0] = 1; +// resetFocused(screen); +// if (!(screen instanceof DisplayScreen)) { +// getOverlay().render(matrices, mouseX, mouseY, delta); +// } +// resetFocused(screen); +// }); +// GuiEvent.RENDER_CONTAINER_FOREGROUND.register((screen, matrices, mouseX, mouseY, delta) -> { +// if (shouldReturn(screen)) +// return; +// rendered[0] = 2; +// resetFocused(screen); +// PoseStack poseStack = RenderSystem.getModelViewStack(); +// poseStack.pushPose(); +// poseStack.translate(-screen.leftPos, -screen.topPos, 0.0); +// RenderSystem.applyModelViewMatrix(); +// ((ScreenOverlayImpl) getOverlay()).lateRender(matrices, mouseX, mouseY, delta); +// poseStack.popPose(); +// RenderSystem.applyModelViewMatrix(); +// resetFocused(screen); +// }); GuiEvent.RENDER_POST.register((screen, matrices, mouseX, mouseY, delta) -> { if (shouldReturn(screen) || rendered[0] == 2) return; - if (screen instanceof AbstractContainerScreen) { - InternalLogger.getInstance().warn("Screen " + screen.getClass().getName() + " did not render background and foreground! This might cause rendering issues!"); - } +// if (screen instanceof AbstractContainerScreen) { +// InternalLogger.getInstance().warn("Screen " + screen.getClass().getName() + " did not render background and foreground! This might cause rendering issues!"); +// } resetFocused(screen); if (rendered[0] == 0 && !(screen instanceof DisplayScreen)) { getOverlay().render(matrices, mouseX, mouseY, delta); @@ -478,8 +481,14 @@ public class RoughlyEnoughItemsCoreClient { if (!REIRuntimeImpl.getSearchField().isFocused()) { GuiEventListener focused = screen.getFocused(); if (focused != null) { - if (focused instanceof EditBox editBox && editBox.isFocused()) return EventResult.pass(); - if (focused instanceof RecipeBookComponent book && book.searchBox != null && book.searchBox.isFocused()) return InteractionResult.PASS; + if (focused instanceof EditBox && ((EditBox) focused).isFocused()) { + EditBox editBox = (EditBox) focused; + return InteractionResult.PASS; + } + if (focused instanceof RecipeBookComponent && ((RecipeBookComponent) focused).searchBox != null && ((RecipeBookComponent) focused).searchBox.isFocused()) { + RecipeBookComponent book = (RecipeBookComponent) focused; + return InteractionResult.PASS; + } } } resetFocused(screen); @@ -490,19 +499,25 @@ public class RoughlyEnoughItemsCoreClient { }); ClientScreenInputEvent.KEY_RELEASED_PRE.register((minecraftClient, screen, i, i1, i2) -> { if (shouldReturn(screen) || screen instanceof DisplayScreen) - return EventResult.pass(); + return InteractionResult.PASS; if (!REIRuntimeImpl.getSearchField().isFocused()) { GuiEventListener focused = screen.getFocused(); if (focused != null) { - if (focused instanceof EditBox editBox && editBox.isFocused()) return EventResult.pass(); - if (focused instanceof RecipeBookComponent book && book.searchBox != null && book.searchBox.isFocused()) return EventResult.pass(); + if (focused instanceof EditBox && ((EditBox) focused).isFocused()) { + EditBox editBox = (EditBox) focused; + return InteractionResult.PASS; + } + if (focused instanceof RecipeBookComponent && ((RecipeBookComponent) focused).searchBox != null && ((RecipeBookComponent) focused).searchBox.isFocused()) { + RecipeBookComponent book = (RecipeBookComponent) focused; + return InteractionResult.PASS; + } } } resetFocused(screen); if (getOverlay().keyReleased(i, i1, i2) && resetFocused(screen)) - return EventResult.interruptFalse(); - return EventResult.pass(); + return InteractionResult.FAIL; + return InteractionResult.PASS; }); } diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java index 830f4b508..67596b386 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java @@ -109,7 +109,7 @@ public class RoughlyEnoughItemsNetwork { int hotbarSlotId = buf.readVarInt(); if (hotbarSlotId >= 0 && hotbarSlotId < 9) { AbstractContainerMenu menu = player.containerMenu; - player.getInventory().items.set(hotbarSlotId, stack.copy()); + player.inventory.items.set(hotbarSlotId, stack.copy()); menu.broadcastChanges(); NetworkManager.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new FriendlyByteBuf(Unpooled.buffer()).writeItem(stack.copy()).writeUtf(player.getScoreboardName(), 32767)); } else { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java index d13760f9d..25755d9b9 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java @@ -238,12 +238,12 @@ public class ClientHelperImpl implements ClientHelper { return false; EntryStack entry = (EntryStack) e; if (Minecraft.getInstance().player == null) return false; - if (Minecraft.getInstance().player.getInventory() == null) return false; + if (Minecraft.getInstance().player.inventory == null) return false; if (Minecraft.getInstance().gameMode != null && Minecraft.getInstance().screen instanceof CreativeModeInventoryScreen) { AbstractContainerMenu menu = Minecraft.getInstance().player.containerMenu; EntryStack stack = entry.copy(); - if (menu.getCarried().isEmpty()) { - Minecraft.getInstance().player.getInventory().setItem(hotbarSlotId, stack.getValue().copy()); + if (Minecraft.getInstance().player.inventory.getCarried().isEmpty()) { + Minecraft.getInstance().player.inventory.setItem(hotbarSlotId, stack.getValue().copy()); Minecraft.getInstance().player.inventoryMenu.broadcastChanges(); return true; } @@ -251,7 +251,7 @@ public class ClientHelperImpl implements ClientHelper { if (ClientHelperImpl.getInstance().canUseHotbarPackets()) { AbstractContainerMenu menu = Minecraft.getInstance().player.containerMenu; EntryStack stack = entry.copy(); - if (!menu.getCarried().isEmpty()) { + if (!Minecraft.getInstance().player.inventory.getCarried().isEmpty()) { return false; } try { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/ErrorDisplayer.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/ErrorDisplayer.java index 641be5422..f98b6a3d8 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/ErrorDisplayer.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/ErrorDisplayer.java @@ -55,7 +55,7 @@ public class ErrorDisplayer { } public static void registerGuiInit(UnaryOperator consumer) { - ErrorGuiInitializer initializer = ServiceLoader.load(ErrorGuiInitializer.class).findFirst().orElseThrow(); + ErrorGuiInitializer initializer = ServiceLoader.load(ErrorGuiInitializer.class).iterator().next(); initializer.registerGuiInit(consumer); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java index a70504178..0695d23e6 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java @@ -29,7 +29,7 @@ import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.systems.RenderSystem; import me.shedaniel.architectury.event.events.GuiEvent; import me.shedaniel.architectury.event.events.client.ClientTickEvent; -import dev.architectury.platform.Platform; +import me.shedaniel.architectury.platform.Platform; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.REIRuntime; import me.shedaniel.rei.api.client.config.ConfigManager; 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 70a62251b..0ee37aac5 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,7 +38,6 @@ import me.shedaniel.rei.api.client.favorites.FavoriteEntry; 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.api.common.category.CategoryIdentifier; import me.shedaniel.rei.impl.client.gui.widget.favorites.FavoritesEntriesManager; import net.fabricmc.api.EnvType; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/addon/ConfigAddonsScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/addon/ConfigAddonsScreen.java index 192cf3f6e..157627c64 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/addon/ConfigAddonsScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/addon/ConfigAddonsScreen.java @@ -32,7 +32,6 @@ import me.shedaniel.rei.impl.client.gui.InternalTextures; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.events.GuiEventListener; -import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.screens.Screen; import net.minecraft.locale.Language; import net.minecraft.network.chat.Component; @@ -59,7 +58,7 @@ public class ConfigAddonsScreen extends Screen { super.init(); { Component backText = new TextComponent("↩ ").append(new TranslatableComponent("gui.back")); - addRenderableWidget(new Button(4, 4, Minecraft.getInstance().font.width(backText) + 10, 20, backText, button -> { + addButton(new Button(4, 4, Minecraft.getInstance().font.width(backText) + 10, 20, backText, button -> { minecraft.setScreen(parent); })); } @@ -145,7 +144,7 @@ public class ConfigAddonsScreen extends Screen { @Override protected void renderBg(PoseStack matrices, Minecraft client, int mouseX, int mouseY) { super.renderBg(matrices, client, mouseX, mouseY); - RenderSystem.setShaderTexture(0, InternalTextures.CHEST_GUI_TEXTURE); + Minecraft.getInstance().getTextureManager().bind(InternalTextures.CHEST_GUI_TEXTURE); blit(matrices, x + 3, y + 3, 0, 0, 14, 14); } }; @@ -183,10 +182,5 @@ public class ConfigAddonsScreen extends Screen { public List children() { return Collections.singletonList(configureButton); } - - @Override - public List narratables() { - return Collections.singletonList(configureButton); - } } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ConfigAddonsEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ConfigAddonsEntry.java index 7ef751e51..3c3eb5f35 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ConfigAddonsEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ConfigAddonsEntry.java @@ -34,7 +34,6 @@ import net.minecraft.client.gui.chat.NarratorChatListener; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.events.GuiEventListener; -import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.util.Unit; import org.jetbrains.annotations.ApiStatus; @@ -88,9 +87,4 @@ public class ConfigAddonsEntry extends AbstractConfigListEntry { public List children() { return children; } - - @Override - public List narratables() { - return children; - } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesEntry.java index c9c473fd6..478706adf 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesEntry.java @@ -32,7 +32,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.events.GuiEventListener; -import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TranslatableComponent; import org.jetbrains.annotations.ApiStatus; @@ -101,11 +100,6 @@ public class FilteringCategoriesEntry extends AbstractConfigListEntry narratables() { - return children; - } - @Override public boolean isEdited() { return super.isEdited() || edited; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesScreen.java index 214591e80..7e033cada 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesScreen.java @@ -31,7 +31,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.events.GuiEventListener; -import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.locale.Language; @@ -60,7 +59,7 @@ public class FilteringCategoriesScreen extends Screen { super.init(); { Component backText = new TextComponent("↩ ").append(new TranslatableComponent("gui.back")); - addRenderableWidget(new Button(4, 4, Minecraft.getInstance().font.width(backText) + 10, 20, backText, button -> { + addButton(new Button(4, 4, Minecraft.getInstance().font.width(backText) + 10, 20, backText, button -> { minecraft.setScreen(parent); this.parent = null; })); @@ -239,10 +238,5 @@ public class FilteringCategoriesScreen extends Screen { public List children() { return Collections.singletonList(toggleButton); } - - @Override - public List narratables() { - return Collections.singletonList(toggleButton); - } } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java index 122699b4f..f7bd31ef8 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java @@ -23,7 +23,9 @@ package me.shedaniel.rei.impl.client.config.entries; +import com.google.common.base.MoreObjects; import com.google.common.base.Suppliers; +import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import me.shedaniel.clothconfig2.gui.widget.DynamicElementListWidget; @@ -194,7 +196,7 @@ public class FilteringRulesScreen extends Screen { public DefaultRuleEntry(FilteringRule rule, FilteringEntry entry, Function screenFunction) { super(rule); - this.screenFunction = Objects.requireNonNullElseGet(screenFunction == null ? ((FilteringRuleType>) rule.getType()).createEntryScreen(rule) : screenFunction, () -> placeholderScreen(rule)); + this.screenFunction = MoreObjects.firstNonNull(screenFunction == null ? ((FilteringRuleType>) rule.getType()).createEntryScreen(rule) : screenFunction, placeholderScreen(rule)); configureButton = new Button(0, 0, 20, 20, Component.nullToEmpty(null), button -> { entry.edited = true; Minecraft.getInstance().setScreen(this.screenFunction.apply(Minecraft.getInstance().screen)); @@ -268,7 +270,7 @@ public class FilteringRulesScreen extends Screen { Function function = bool -> { return new TranslatableComponent("rule.roughlyenoughitems.filtering.search.show." + bool); }; - Map> stacks = FilteringLogic.hidden(List.of(r), false, false, EntryRegistry.getInstance().getEntryStacks().collect(Collectors.toList())); + Map> stacks = FilteringLogic.hidden(ImmutableList.of(r), false, false, EntryRegistry.getInstance().getEntryStacks().collect(Collectors.toList())); entryConsumer.accept(new SubRulesEntry(rule, () -> function.apply(true), Collections.singletonList(new SearchFilteringRuleType.EntryStacksRuleEntry(rule, diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringCategoriesEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringCategoriesEntry.java index 4561aea73..072eb45b8 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringCategoriesEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringCategoriesEntry.java @@ -32,7 +32,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.events.GuiEventListener; -import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TranslatableComponent; import org.jetbrains.annotations.ApiStatus; @@ -95,9 +94,4 @@ public class NoFilteringCategoriesEntry extends AbstractConfigListEntry children() { return children; } - - @Override - public List narratables() { - return children; - } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringContextImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringContextImpl.java index 8536e3538..d37ae71c4 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringContextImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringContextImpl.java @@ -100,8 +100,8 @@ public class FilteringContextImpl implements FilteringContext { private Collection> getStacksFacing(FilteringContextType type) { Set wrappers = this.stacks.get(type); - if (wrappers == null || wrappers.isEmpty()) return List.of(); - return new AbstractSet<>() { + if (wrappers == null || wrappers.isEmpty()) return Collections.emptyList(); + return new AbstractSet>() { @Override public Iterator> iterator() { return Iterators.transform(wrappers.iterator(), HashedEntryStackWrapper::unwrap); @@ -116,7 +116,7 @@ public class FilteringContextImpl implements FilteringContext { private LongCollection getHashesFacing(FilteringContextType type) { Set wrappers = this.stacks.get(type); - if (wrappers == null || wrappers.isEmpty()) return LongSets.emptySet(); + if (wrappers == null || wrappers.isEmpty()) return LongSets.EMPTY_SET; return new AbstractLongSet() { @Override public LongIterator iterator() { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/BasicFilteringRuleImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/BasicFilteringRuleImpl.java index 11fc34070..4e5cc57d0 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/BasicFilteringRuleImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/BasicFilteringRuleImpl.java @@ -40,6 +40,7 @@ import me.shedaniel.rei.impl.client.util.ThreadCreator; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.function.Supplier; @@ -110,7 +111,7 @@ public enum BasicFilteringRuleImpl implements BasicFilteringRule { shownHashes.remove(hashExact); if (!isReloading()) { - markDirty(List.of(stack), null); + markDirty(Collections.singletonList(stack), null); } return this; @@ -138,7 +139,7 @@ public enum BasicFilteringRuleImpl implements BasicFilteringRule { hiddenHashes.remove(hashExact); if (!isReloading()) { - markDirty(List.of(stack), null); + markDirty(Collections.singletonList(stack), null); } return this; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRuleType.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRuleType.java index 3fb2040dd..cb6d6a234 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRuleType.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRuleType.java @@ -38,7 +38,6 @@ import me.shedaniel.rei.impl.client.gui.widget.EntryWidget; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.events.GuiEventListener; -import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.screens.Screen; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; @@ -90,7 +89,7 @@ public enum SearchFilteringRuleType implements FilteringRuleType createEntryScreen(SearchFilteringRule rule) { - return screen -> new FilteringRuleOptionsScreen<>(rule, screen) { + return screen -> new FilteringRuleOptionsScreen(rule, screen) { TextFieldRuleEntry entry = null; BooleanRuleEntry show = null; List entryStacks = new ArrayList<>(); @@ -167,11 +166,6 @@ public enum SearchFilteringRuleType implements FilteringRuleType narratables() { - return Lists.newArrayList(); - } - @Override public List children() { return Lists.newArrayList(); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/type/types/RenderingEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/type/types/RenderingEntryDefinition.java index e3447403a..10a792145 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/type/types/RenderingEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/type/types/RenderingEntryDefinition.java @@ -51,15 +51,13 @@ public class RenderingEntryDefinition { } return super.asFormattedText(entry, value); } - + @Override public Component asFormattedText(EntryStack entry, Renderer value, TooltipContext context) { Tooltip tooltip = value.getTooltip(context); if (tooltip != null) { - for (Tooltip.Entry e : tooltip.entries()) { - if (e.isText()) { - return e.getAsText(); - } + for (Component e : tooltip.getText()) { + return e; } } return super.asFormattedText(entry, value, context); 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 e79b25279..923c78d14 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 @@ -47,6 +47,7 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; @ApiStatus.Internal public class FavoriteEntryTypeRegistryImpl implements FavoriteEntryType.Registry { @@ -155,6 +156,43 @@ public class FavoriteEntryTypeRegistryImpl implements FavoriteEntryType.Registry return CollectionUtils.filterAndMap(entries, CompoundEntry::defaultFavorited, CompoundEntry::entry); } - public record CompoundEntry(FavoriteEntry entry, boolean defaultFavorited) {} + public static final class CompoundEntry { + private final FavoriteEntry entry; + private final boolean defaultFavorited; + + public CompoundEntry(FavoriteEntry entry, boolean defaultFavorited) { + this.entry = entry; + this.defaultFavorited = defaultFavorited; + } + + public FavoriteEntry entry() { + return entry; + } + + public boolean defaultFavorited() { + return defaultFavorited; + } + + @Override + public boolean equals(Object obj) { + if (obj == this) return true; + if (obj == null || obj.getClass() != this.getClass()) return false; + CompoundEntry that = (CompoundEntry) obj; + return Objects.equals(this.entry, that.entry) && + this.defaultFavorited == that.defaultFavorited; + } + + @Override + public int hashCode() { + return Objects.hash(entry, defaultFavorited); + } + + @Override + public String toString() { + return "CompoundEntry[" + + "entry=" + entry + ", " + + "defaultFavorited=" + defaultFavorited + ']'; + } + } } } 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 e61808254..199f7a39c 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 @@ -23,6 +23,7 @@ package me.shedaniel.rei.impl.client.gui; +import com.google.common.base.MoreObjects; import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.systems.RenderSystem; @@ -108,7 +109,7 @@ public abstract class ScreenOverlayImpl extends ScreenOverlay { ScreenOverlayImpl overlay = ScreenOverlayImpl.getInstance(); Rectangle overlayBounds = overlay.bounds; - entryListWidget.updateArea(Objects.requireNonNullElse(overlayBounds, new Rectangle()), REIRuntimeImpl.getSearchField() == null ? "" : REIRuntimeImpl.getSearchField().getText()); + entryListWidget.updateArea(MoreObjects.firstNonNull(overlayBounds, new Rectangle()), REIRuntimeImpl.getSearchField() == null ? "" : REIRuntimeImpl.getSearchField().getText()); entryListWidget.updateEntriesPosition(); return entryListWidget; @@ -120,7 +121,7 @@ public abstract class ScreenOverlayImpl extends ScreenOverlay { } public static ScreenOverlayImpl getInstance() { - return (ScreenOverlayImpl) REIRuntime.getInstance().getOverlay().orElseThrow(); + return (ScreenOverlayImpl) REIRuntime.getInstance().getOverlay().orElseThrow(NullPointerException::new); } public void tick() { @@ -194,11 +195,16 @@ public abstract class ScreenOverlayImpl extends ScreenOverlay { if (ConfigObject.getInstance().isCraftableFilterEnabled()) widthRemoved += 22; if (ConfigObject.getInstance().isLowerConfigButton()) widthRemoved += 22; SearchFieldLocation searchFieldLocation = REIRuntime.getInstance().getContextualSearchFieldLocation(); - return switch (searchFieldLocation) { - case TOP_SIDE -> getTopSideSearchFieldArea(widthRemoved); - case BOTTOM_SIDE -> getBottomSideSearchFieldArea(widthRemoved); - case CENTER -> getCenterSearchFieldArea(widthRemoved); - }; + switch (searchFieldLocation) { + case TOP_SIDE: + return getTopSideSearchFieldArea(widthRemoved); + case BOTTOM_SIDE: + return getBottomSideSearchFieldArea(widthRemoved); + case CENTER: + return getCenterSearchFieldArea(widthRemoved); + default: + throw new IllegalArgumentException(); + } } private Rectangle getTopSideSearchFieldArea(int widthRemoved) { @@ -253,7 +259,7 @@ public abstract class ScreenOverlayImpl extends ScreenOverlay { } private ClickArea.ClickAreaContext createClickAreaContext(double mouseX, double mouseY, Screen screen) { - return new ClickArea.ClickAreaContext<>() { + return new ClickArea.ClickAreaContext() { @Override public Screen getScreen() { return screen; @@ -298,8 +304,10 @@ public abstract class ScreenOverlayImpl extends ScreenOverlay { for (Widget widget : widgets) { if (widget instanceof LateRenderable && widget != menuHolder.widget()) widget.render(matrices, mouseX, mouseY, delta); - else if (widget instanceof OverlaySearchField field) + else if (widget instanceof OverlaySearchField) { + OverlaySearchField field = (OverlaySearchField) widget; field.laterRender(matrices, mouseX, mouseY, delta); + } } matrices.pushPose(); matrices.translate(0, 0, 500); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java index 62696ca57..68122b9cf 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java @@ -35,14 +35,11 @@ import net.minecraft.client.gui.components.AbstractButton; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.resources.language.I18n; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.util.Tuple; import org.jetbrains.annotations.ApiStatus; -import java.lang.reflect.InvocationTargetException; import java.util.List; import java.util.Locale; import java.util.stream.Collectors; @@ -117,16 +114,6 @@ public class CreditsScreen extends Screen { addButton(buttonDone = new Button(width / 2 - 100, height - 26, 200, 20, new TranslatableComponent("gui.done"), button -> openPrevious())); } - private static void fillTranslators(Exception[] exception, List>> translators) { - try { - Class.forName("me.shedaniel.rei.impl.client.gui.credits.%s.CreditsScreenImpl".formatted(Platform.isForge() ? "forge" : "fabric")) - .getDeclaredMethod("fillTranslators", Exception[].class, List.class) - .invoke(null, exception, translators); - } catch (IllegalAccessException | ClassNotFoundException | NoSuchMethodException | InvocationTargetException e) { - throw new RuntimeException(e); - } - } - private void openPrevious() { Minecraft.getInstance().setScreen(parent); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/hints/HintProvider.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/hints/HintProvider.java index c87ef50c6..9f94a455d 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/hints/HintProvider.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/hints/HintProvider.java @@ -33,6 +33,7 @@ import net.minecraft.network.chat.Component; import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.Objects; import java.util.function.Consumer; @Environment(EnvType.CLIENT) @@ -51,5 +52,42 @@ public interface HintProvider { List getButtons(); - record HintButton(Component name, Consumer action) {} + final class HintButton { + private final Component name; + private final Consumer action; + + public HintButton(Component name, Consumer action) { + this.name = name; + this.action = action; + } + + public Component name() { + return name; + } + + public Consumer action() { + return action; + } + + @Override + public boolean equals(Object obj) { + if (obj == this) return true; + if (obj == null || obj.getClass() != this.getClass()) return false; + HintButton that = (HintButton) obj; + return Objects.equals(this.name, that.name) && + Objects.equals(this.action, that.action); + } + + @Override + public int hashCode() { + return Objects.hash(name, action); + } + + @Override + public String toString() { + return "HintButton[" + + "name=" + name + ", " + + "action=" + action + ']'; + } + } } 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 39b95272a..e14d37183 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 @@ -102,8 +102,8 @@ public class Menu extends WidgetWithBounds implements LateRenderable { } for (FavoriteMenuEntry entry : this.entries) { entry.closeMenu = ScreenOverlayImpl.getInstance().menuAccess()::close; - if (entry instanceof SubMenuEntry menuEntry) { - menuEntry.setParent(this); + if (entry instanceof SubMenuEntry) { + ((SubMenuEntry) entry).setParent(this); } } } 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 b66cf1f67..ffad7b7d6 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 @@ -25,7 +25,7 @@ package me.shedaniel.rei.impl.client.gui.screen; import com.google.common.collect.Lists; import me.shedaniel.architectury.fluid.FluidStack; -import dev.architectury.utils.value.IntValue; +import me.shedaniel.architectury.utils.IntValue; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.REIRuntime; import me.shedaniel.rei.api.client.config.ConfigObject; @@ -47,10 +47,10 @@ import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes; import me.shedaniel.rei.api.common.util.CollectionUtils; import me.shedaniel.rei.impl.client.REIRuntimeImpl; import me.shedaniel.rei.impl.client.gui.widget.EntryWidget; +import me.shedaniel.rei.impl.client.gui.widget.TabContainerWidget; import me.shedaniel.rei.impl.display.DisplaySpec; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.chat.NarratorChatListener; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.screens.Screen; @@ -136,7 +136,7 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis @Override public List children() { List children = super.children(); - children.sort(Comparator.comparingDouble(value -> value instanceof Widget widget ? widget.getZRenderingPriority() : 0).reversed()); + children.sort(Comparator.comparingDouble(value -> value instanceof Widget ? ((Widget) value).getZRenderingPriority() : 0).reversed()); return (List) children; } @@ -277,12 +277,6 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis @Override public Tooltip apply(Tooltip tooltip) { if (widget.getEntries().size() > 1) { - for (Tooltip.Entry entry : tooltip.entries()) { - if (entry.isTooltipComponent() && entry.getAsTooltipComponent() instanceof TooltipProcessor) { - return tooltip; - } - } - tooltip.add(new TranslatableComponent("text.rei.tag_accept", widget.tagMatch.toString()) .withStyle(ChatFormatting.GRAY)); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java index 9076c0ffc..83c9d496f 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java @@ -300,7 +300,7 @@ public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen getOverlay().render(matrices, mouseX, mouseY, delta); super.render(matrices, mouseX, mouseY, delta); for (Widget widget : widgets) { - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); widget.render(matrices, mouseX, mouseY, delta); } matrices.pushPose(); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/ConfigReloadingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/ConfigReloadingScreen.java index 083d950db..3b43c9e86 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/ConfigReloadingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/ConfigReloadingScreen.java @@ -65,11 +65,19 @@ public class ConfigReloadingScreen extends Screen { return; } drawCenteredString(matrices, this.font, title, this.width / 2, this.height / 2 - 50, 0xffffff); - String text = switch ((int) (Util.getMillis() / 300L % 4L)) { - case 1, 3 -> "o O o"; - case 2 -> "o o O"; - default -> "O o o"; - }; + String text; + switch ((int) (Util.getMillis() / 300L % 4L)) { + case 1: + case 3: + text = "o O o"; + break; + case 2: + text = "o o O"; + break; + default: + text = "O o o"; + break; + } drawCenteredString(matrices, this.font, text, this.width / 2, this.height / 2 - 50 + 9, 0x808080); Component subtitle = this.subtitle.get(); if (subtitle != null) { 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 a193e6142..0e412ca71 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 @@ -184,11 +184,11 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { Rectangle categoryNextBounds = categoryNext.getBounds(); matrices.pushPose(); matrices.translate(0.5, 0.5, 0); - RenderSystem.setShaderTexture(0, InternalTextures.ARROW_LEFT_TEXTURE); + Minecraft.getInstance().getTextureManager().bind(InternalTextures.ARROW_LEFT_TEXTURE); blit(matrices, recipeBackBounds.x + 2, recipeBackBounds.y + 2, 0, 0, 8, 8, 8, 8); blit(matrices, categoryBackBounds.x + 2, categoryBackBounds.y + 2, 0, 0, 8, 8, 8, 8); matrices.translate(-0.5, 0, 0); - RenderSystem.setShaderTexture(0, InternalTextures.ARROW_RIGHT_TEXTURE); + Minecraft.getInstance().getTextureManager().bind(InternalTextures.ARROW_RIGHT_TEXTURE); blit(matrices, recipeNextBounds.x + 2, recipeNextBounds.y + 2, 0, 0, 8, 8, 8, 8); blit(matrices, categoryNextBounds.x + 2, categoryNextBounds.y + 2, 0, 0, 8, 8, 8, 8); matrices.popPose(); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/AutoCraftingEvaluator.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/AutoCraftingEvaluator.java index bbdf0e979..d1c242023 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/AutoCraftingEvaluator.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/AutoCraftingEvaluator.java @@ -37,6 +37,7 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.resources.language.I18n; +import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; @@ -63,25 +64,25 @@ public class AutoCraftingEvaluator { public static AutoCraftingResult evaluateAutoCrafting(boolean actuallyCrafting, boolean stackedCrafting, Display display, Supplier> idsSupplier) { AbstractContainerScreen containerScreen = REIRuntime.getInstance().getPreviousContainerScreen(); AutoCraftingResult result = new AutoCraftingResult(); - final List errorTooltip = new ArrayList<>(); + final List errorTooltip = new ArrayList<>(); result.tooltipRenderer = (pos, sink) -> { - List str = new ArrayList<>(errorTooltip); + List str = new ArrayList<>(errorTooltip); if (ConfigObject.getInstance().isFavoritesEnabled()) { - str.add(Tooltip.entry(new TextComponent(" "))); - str.add(Tooltip.entry(new TranslatableComponent("text.rei.save.recipes", new TextComponent(ConfigObject.getInstance().getFavoriteKeyCode().getLocalizedName().getString().toUpperCase(Locale.ROOT)).withStyle(ChatFormatting.BOLD)).withStyle(ChatFormatting.GRAY))); + str.add(new TextComponent(" ")); + str.add(new TranslatableComponent("text.rei.save.recipes", new TextComponent(ConfigObject.getInstance().getFavoriteKeyCode().getLocalizedName().getString().toUpperCase(Locale.ROOT)).withStyle(ChatFormatting.BOLD)).withStyle(ChatFormatting.GRAY)); } if (Minecraft.getInstance().options.advancedItemTooltips && idsSupplier != null) { Collection locations = idsSupplier.get(); if (!locations.isEmpty()) { - str.add(Tooltip.entry(new TextComponent(" "))); + str.add(new TextComponent(" ")); for (ResourceLocation location : locations) { String t = I18n.get("text.rei.recipe_id", "", location.toString()); if (t.startsWith("\n")) { t = t.substring("\n".length()); } - str.add(Tooltip.entry(new TextComponent(t).withStyle(ChatFormatting.GRAY))); + str.add(new TextComponent(t).withStyle(ChatFormatting.GRAY)); } } } @@ -90,7 +91,7 @@ public class AutoCraftingEvaluator { }; if (containerScreen == null) { - errorTooltip.add(Tooltip.entry(new TranslatableComponent("error.rei.not.supported.move.items").withStyle(ChatFormatting.RED))); + errorTooltip.add(new TranslatableComponent("error.rei.not.supported.move.items").withStyle(ChatFormatting.RED)); return result; } @@ -146,46 +147,38 @@ public class AutoCraftingEvaluator { if (!result.hasApplicable) { errorTooltip.clear(); - errorTooltip.add(Tooltip.entry(new TranslatableComponent("error.rei.not.supported.move.items").withStyle(ChatFormatting.RED))); + errorTooltip.add(new TranslatableComponent("error.rei.not.supported.move.items").withStyle(ChatFormatting.RED)); return result; } if (errors.isEmpty()) { errorTooltip.clear(); - errorTooltip.add(Tooltip.entry(new TranslatableComponent("text.auto_craft.move_items"))); + errorTooltip.add(new TranslatableComponent("text.auto_craft.move_items")); if (successfulResult != null) { successfulResult.fillTooltip(errorTooltip); } } else { errorTooltip.clear(); - List tooltipsFilled = new ArrayList<>(); + List tooltipsFilled = new ArrayList<>(); for (TransferHandler.Result error : errors) { error.fillTooltip(tooltipsFilled); } if (errors.size() == 1) { - for (Tooltip.Entry tooltipFilled : tooltipsFilled) { - if (tooltipFilled.isText()) { - MutableComponent colored = tooltipFilled.getAsText().copy().withStyle(ChatFormatting.RED); - if (!CollectionUtils.anyMatch(errorTooltip, ss -> ss.isText() && ss.getAsText().getString().equalsIgnoreCase(colored.getString()))) { - errorTooltip.add(Tooltip.entry(colored)); - } - } else { - errorTooltip.add(tooltipFilled); + for (Component tooltipFilled