diff options
Diffstat (limited to 'runtime/src/main/java')
21 files changed, 256 insertions, 71 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index 1edb3c221..dcb8ce91e 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -27,7 +27,6 @@ import com.google.common.collect.Lists; 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.hooks.ScreenHooks; import me.shedaniel.architectury.networking.NetworkManager; import me.shedaniel.architectury.platform.Platform; import me.shedaniel.architectury.registry.ReloadListeners; @@ -519,11 +518,12 @@ public class RoughlyEnoughItemsCore { final ResourceLocation recipeButtonTex = new ResourceLocation("textures/gui/recipe_button.png"); MutableLong lastReload = new MutableLong(-1); RecipeUpdateEvent.EVENT.register(recipeManager -> reloadPlugins(lastReload)); - GuiEvent.INIT_POST.register((screen, widgets, children) -> { + GuiEvent.INIT_POST.register((screen, access) -> { REIHelperImpl.getInstance().setPreviousScreen(screen); if (ConfigObject.getInstance().doesDisableRecipeBook() && screen instanceof AbstractContainerScreen) { - ScreenHooks.getButtons(screen).removeIf(widget -> widget instanceof ImageButton && ((ImageButton) widget).resourceLocation.equals(recipeButtonTex)); - children.removeIf(widget -> widget instanceof ImageButton && ((ImageButton) widget).resourceLocation.equals(recipeButtonTex)); + access.getRenderables().removeIf(widget -> widget instanceof ImageButton && ((ImageButton) widget).resourceLocation.equals(recipeButtonTex)); + access.getNarratables().removeIf(widget -> widget instanceof ImageButton && ((ImageButton) widget).resourceLocation.equals(recipeButtonTex)); + screen.children().removeIf(widget -> widget instanceof ImageButton && ((ImageButton) widget).resourceLocation.equals(recipeButtonTex)); } }); ClientScreenInputEvent.MOUSE_CLICKED_PRE.register((minecraftClient, screen, mouseX, mouseY, button) -> { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java index 5bdb3c710..58c7506b3 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java @@ -218,7 +218,7 @@ public class REIHelperImpl implements REIHelper { } public void onInitializeClient() { - GuiEvent.INIT_PRE.register((screen, widgets, children) -> { + GuiEvent.INIT_PRE.register((screen, access) -> { if (previousContainerScreen != screen && screen instanceof AbstractContainerScreen) previousContainerScreen = (AbstractContainerScreen<?>) screen; return InteractionResult.PASS; 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 b3ebdeaad..e89995311 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 @@ -30,8 +30,7 @@ import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.math.Matrix4f; -import me.shedaniel.architectury.hooks.ScreenHooks; -import me.shedaniel.architectury.platform.Platform; +import me.shedaniel.architectury.hooks.screen.ScreenHooks; import me.shedaniel.autoconfig.AutoConfig; import me.shedaniel.autoconfig.annotation.ConfigEntry; import me.shedaniel.autoconfig.gui.ConfigScreenProvider; @@ -64,7 +63,6 @@ import me.shedaniel.rei.impl.client.entry.filtering.rules.ManualFilteringRule; import me.shedaniel.rei.impl.client.gui.ContainerScreenOverlay; import me.shedaniel.rei.impl.client.gui.credits.CreditsScreen; import me.shedaniel.rei.impl.client.gui.screen.TransformingScreen; -import me.shedaniel.rei.impl.client.gui.screen.WarningAndErrorScreen; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.loader.api.FabricLoader; @@ -74,7 +72,6 @@ import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.resources.language.I18n; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.nbt.TagParser; @@ -83,7 +80,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.util.Mth; -import net.minecraft.util.Tuple; import net.minecraft.world.InteractionResult; import org.apache.commons.lang3.mutable.MutableLong; import org.jetbrains.annotations.ApiStatus; @@ -309,14 +305,6 @@ public class ConfigManagerImpl implements ConfigManager { @Override public Screen getConfigScreen(Screen parent) { try { - if (Platform.isFabric() && !detectWorkingOptifabric()) { - List<Tuple<String, String>> warnings = Lists.newArrayList(); - warnings.add(new Tuple<>(I18n.get("text.rei.config.optifine.title"), null)); - warnings.add(new Tuple<>(I18n.get("text.rei.config.optifine.description"), null)); - WarningAndErrorScreen screen = new WarningAndErrorScreen("config screen", warnings, Collections.emptyList(), Minecraft.getInstance()::setScreen); - screen.setParent(parent); - return screen; - } Screen parentTranslated; if (!getConfig().isConfigScreenAnimated()) { parentTranslated = parent; @@ -340,7 +328,7 @@ public class ConfigManagerImpl implements ConfigManager { builder.getOrCreateCategory(new TranslatableComponent("config.roughlyenoughitems.advanced")).getEntries().add(0, new ReloadPluginsEntry(220)); } return builder.setAfterInitConsumer(screen -> { - ScreenHooks.addButton(screen, new Button(screen.width - 104, 4, 100, 20, new TranslatableComponent("text.rei.credits"), button -> { + ScreenHooks.addRenderableWidget(screen, new Button(screen.width - 104, 4, 100, 20, new TranslatableComponent("text.rei.credits"), button -> { MutableLong current = new MutableLong(0); CreditsScreen creditsScreen = new CreditsScreen(screen); if (getConfig().isCreditsScreenAnimated()) { @@ -401,7 +389,7 @@ public class ConfigManagerImpl implements ConfigManager { @Override public void init() { super.init(); - this.addButton(new Button(this.width / 2 - 100, 140, 200, 20, CommonComponents.GUI_CANCEL, button -> this.minecraft.setScreen(parent))); + this.addRenderableWidget(new Button(this.width / 2 - 100, 140, 200, 20, CommonComponents.GUI_CANCEL, button -> this.minecraft.setScreen(parent))); } @Override diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java index 0b588f9ea..0d09a298a 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java @@ -30,6 +30,7 @@ import me.shedaniel.rei.impl.client.entry.filtering.rules.ManualFilteringRule; 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; @@ -58,7 +59,7 @@ public class FilteringAddRuleScreen extends Screen { super.init(); { Component backText = new TextComponent("↩ ").append(new TranslatableComponent("gui.back")); - addButton(new Button(4, 4, Minecraft.getInstance().font.width(backText) + 10, 20, backText, button -> { + addRenderableWidget(new Button(4, 4, Minecraft.getInstance().font.width(backText) + 10, 20, backText, button -> { minecraft.setScreen(parent); this.parent = null; })); @@ -191,5 +192,10 @@ public class FilteringAddRuleScreen extends Screen { public List<? extends GuiEventListener> children() { return Collections.singletonList(addButton); } + + @Override + public List<? extends NarratableEntry> narratables() { + return Collections.singletonList(addButton); + } } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java index 6c484cf07..498054393 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java @@ -36,6 +36,7 @@ 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 org.jetbrains.annotations.ApiStatus; @@ -57,7 +58,7 @@ public class FilteringEntry extends AbstractConfigListEntry<List<EntryStack<?>>> filteringRulesScreen.parent = Minecraft.getInstance().screen; Minecraft.getInstance().setScreen(filteringRulesScreen); }); - private final List<GuiEventListener> children = ImmutableList.of(buttonWidget); + private final List<AbstractWidget> children = ImmutableList.of(buttonWidget); public FilteringEntry(int width, List<EntryStack<?>> configFiltered, List<FilteringRule<?>> rules, List<EntryStack<?>> defaultValue, Consumer<List<EntryStack<?>>> saveConsumer, Consumer<List<FilteringRule<?>>> rulesSaveConsumer) { super(NarratorChatListener.NO_TITLE, false); @@ -104,6 +105,11 @@ public class FilteringEntry extends AbstractConfigListEntry<List<EntryStack<?>>> } @Override + public List<? extends NarratableEntry> 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/FilteringRuleOptionsScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java index 6abeef0c2..de973d768 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java @@ -30,6 +30,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.EditBox; 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.network.chat.Component; import net.minecraft.network.chat.FormattedText; @@ -62,7 +63,7 @@ public abstract class FilteringRuleOptionsScreen<T extends FilteringRule<?>> ext { Component doneText = new TranslatableComponent("gui.done"); int width = Minecraft.getInstance().font.width(doneText); - addButton(new Button(this.width - 4 - width - 10, 4, width + 10, 20, doneText, button -> { + addRenderableWidget(new Button(this.width - 4 - width - 10, 4, width + 10, 20, doneText, button -> { save(); minecraft.setScreen(parent); })); @@ -147,6 +148,11 @@ public abstract class FilteringRuleOptionsScreen<T extends FilteringRule<?>> ext public List<? extends GuiEventListener> children() { return Collections.emptyList(); } + + @Override + public List<? extends NarratableEntry> narratables() { + return Collections.emptyList(); + } } public static class EmptyRuleEntry extends RuleEntry { @@ -170,6 +176,11 @@ public abstract class FilteringRuleOptionsScreen<T extends FilteringRule<?>> ext public List<? extends GuiEventListener> children() { return Collections.emptyList(); } + + @Override + public List<? extends NarratableEntry> narratables() { + return Collections.emptyList(); + } } public static class TextFieldRuleEntry extends RuleEntry { @@ -201,6 +212,11 @@ public abstract class FilteringRuleOptionsScreen<T extends FilteringRule<?>> ext public List<? extends GuiEventListener> children() { return Collections.singletonList(widget); } + + @Override + public List<? extends NarratableEntry> narratables() { + return Collections.singletonList(widget); + } } public static class BooleanRuleEntry extends RuleEntry { @@ -236,5 +252,10 @@ public abstract class FilteringRuleOptionsScreen<T extends FilteringRule<?>> ext public List<? extends GuiEventListener> children() { return Collections.singletonList(widget); } + + @Override + public List<? extends NarratableEntry> narratables() { + return Collections.singletonList(widget); + } } } 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 a7722dd1a..ac81c87af 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 @@ -30,7 +30,11 @@ import me.shedaniel.rei.impl.client.entry.filtering.FilteringRule; import me.shedaniel.rei.impl.client.entry.filtering.rules.ManualFilteringRule; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.components.ContainerObjectSelectionList; import net.minecraft.client.gui.components.events.GuiEventListener; +import net.minecraft.client.gui.narration.NarratableEntry; +import net.minecraft.client.gui.narration.NarratedElementType; +import net.minecraft.client.gui.narration.NarrationElementOutput; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.locale.Language; @@ -63,14 +67,14 @@ public class FilteringRulesScreen extends Screen { super.init(); { Component backText = new TextComponent("↩ ").append(new TranslatableComponent("gui.back")); - addButton(new Button(4, 4, Minecraft.getInstance().font.width(backText) + 10, 20, backText, button -> { + addRenderableWidget(new Button(4, 4, Minecraft.getInstance().font.width(backText) + 10, 20, backText, button -> { minecraft.setScreen(parent); this.parent = null; })); } { Component addText = new TextComponent(" + "); - addButton(new Button(width - 4 - 20, 4, 20, 20, addText, button -> { + addRenderableWidget(new Button(width - 4 - 20, 4, 20, 20, addText, button -> { FilteringAddRuleScreen screen = new FilteringAddRuleScreen(entry); screen.parent = this; minecraft.setScreen(screen); @@ -244,5 +248,10 @@ public class FilteringRulesScreen extends Screen { public List<? extends GuiEventListener> children() { return Arrays.asList(configureButton, deleteButton); } + + @Override + public List<? extends NarratableEntry> narratables() { + return Arrays.asList(configureButton, deleteButton); + } } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringEntry.java index 4cf03088e..2db7bebdf 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringEntry.java @@ -33,6 +33,7 @@ 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 org.jetbrains.annotations.ApiStatus; @@ -47,7 +48,7 @@ public class NoFilteringEntry extends AbstractConfigListEntry<List<EntryStack<?> private List<EntryStack<?>> defaultValue; private List<EntryStack<?>> configFiltered; private final AbstractWidget buttonWidget = new Button(0, 0, 0, 20, new TranslatableComponent("config.roughlyenoughitems.filteredEntries.loadWorldFirst"), button -> {}); - private final List<GuiEventListener> children = ImmutableList.of(buttonWidget); + private final List<AbstractWidget> children = ImmutableList.of(buttonWidget); public NoFilteringEntry(int width, List<EntryStack<?>> configFiltered, List<EntryStack<?>> defaultValue, Consumer<List<EntryStack<?>>> saveConsumer) { super(NarratorChatListener.NO_TITLE, false); @@ -87,4 +88,9 @@ public class NoFilteringEntry extends AbstractConfigListEntry<List<EntryStack<?> public List<? extends GuiEventListener> children() { return children; } + + @Override + public List<? extends NarratableEntry> narratables() { + return children; + } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/RecipeScreenTypeEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/RecipeScreenTypeEntry.java index 2e30e76ff..7950a6f23 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/RecipeScreenTypeEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/RecipeScreenTypeEntry.java @@ -33,7 +33,9 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.chat.NarratorChatListener; import net.minecraft.client.gui.components.AbstractButton; 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; @@ -47,22 +49,19 @@ public class RecipeScreenTypeEntry extends TooltipListEntry<DisplayScreenType> { private DisplayScreenType type; private DisplayScreenType defaultValue; private Consumer<DisplayScreenType> save; - private final AbstractWidget buttonWidget = new AbstractButton(0, 0, 0, 20, NarratorChatListener.NO_TITLE) { - @Override - public void onPress() { - Minecraft.getInstance().setScreen(new UncertainDisplayViewingScreen(getConfigScreen(), type, false, original -> { - Minecraft.getInstance().setScreen(getConfigScreen()); - type = original ? DisplayScreenType.ORIGINAL : DisplayScreenType.COMPOSITE; - })); - } - + private final AbstractWidget buttonWidget = new Button(0, 0, 0, 20, NarratorChatListener.NO_TITLE, button -> { + Minecraft.getInstance().setScreen(new UncertainDisplayViewingScreen(getConfigScreen(), type, false, original -> { + Minecraft.getInstance().setScreen(getConfigScreen()); + type = original ? DisplayScreenType.ORIGINAL : DisplayScreenType.COMPOSITE; + })); + }) { @Override public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { setMessage(new TranslatableComponent("config.roughlyenoughitems.recipeScreenType.config", type.toString())); super.render(matrices, mouseX, mouseY, delta); } }; - private final List<GuiEventListener> children = ImmutableList.of(buttonWidget); + private final List<AbstractWidget> children = ImmutableList.of(buttonWidget); @SuppressWarnings("deprecation") public RecipeScreenTypeEntry(int width, Component fieldName, DisplayScreenType type, DisplayScreenType defaultValue, Consumer<DisplayScreenType> save) { @@ -100,6 +99,11 @@ public class RecipeScreenTypeEntry extends TooltipListEntry<DisplayScreenType> { } @Override + public List<? extends NarratableEntry> narratables() { + return children; + } + + @Override public void render(PoseStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isSelected, float delta) { super.render(matrices, index, y, x, entryWidth, entryHeight, mouseX, mouseY, isSelected, delta); Window window = Minecraft.getInstance().getWindow(); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java index cadbe569c..9766b436c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java @@ -32,9 +32,11 @@ import me.shedaniel.rei.api.common.plugins.PluginManager; import me.shedaniel.rei.impl.client.gui.screen.ConfigReloadingScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.chat.NarratorChatListener; +import net.minecraft.client.gui.components.AbstractButton; 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.client.gui.screens.Screen; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.util.Unit; @@ -57,7 +59,7 @@ public class ReloadPluginsEntry extends AbstractConfigListEntry<Unit> { } } }; - private List<GuiEventListener> children = ImmutableList.of(buttonWidget); + private List<AbstractWidget> children = ImmutableList.of(buttonWidget); public ReloadPluginsEntry(int width) { super(NarratorChatListener.NO_TITLE, false); @@ -95,4 +97,9 @@ public class ReloadPluginsEntry extends AbstractConfigListEntry<Unit> { public List<? extends GuiEventListener> children() { return children; } + + @Override + public List<? extends NarratableEntry> narratables() { + return children; + } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/SearchFilterSyntaxHighlightingEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/SearchFilterSyntaxHighlightingEntry.java index 8d9afcfd4..ce853a3aa 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/SearchFilterSyntaxHighlightingEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/SearchFilterSyntaxHighlightingEntry.java @@ -32,7 +32,9 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.chat.NarratorChatListener; import net.minecraft.client.gui.components.AbstractButton; 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.TextComponent; @@ -45,19 +47,14 @@ public class SearchFilterSyntaxHighlightingEntry extends TooltipListEntry<Syntax private SyntaxHighlightingMode type; private SyntaxHighlightingMode defaultValue; private Consumer<SyntaxHighlightingMode> save; - private final AbstractWidget buttonWidget = new AbstractButton(0, 0, 0, 20, NarratorChatListener.NO_TITLE) { - @Override - public void onPress() { - - } - + private final AbstractWidget buttonWidget = new Button(0, 0, 0, 20, NarratorChatListener.NO_TITLE, $ -> {}) { @Override public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { setMessage(new TextComponent(type.toString())); super.render(matrices, mouseX, mouseY, delta); } }; - private final List<GuiEventListener> children = ImmutableList.of(buttonWidget); + private final List<AbstractWidget> children = ImmutableList.of(buttonWidget); @SuppressWarnings("deprecation") public SearchFilterSyntaxHighlightingEntry(Component fieldName, SyntaxHighlightingMode type, SyntaxHighlightingMode defaultValue, Consumer<SyntaxHighlightingMode> save) { @@ -94,6 +91,11 @@ public class SearchFilterSyntaxHighlightingEntry extends TooltipListEntry<Syntax } @Override + public List<? extends NarratableEntry> narratables() { + return children; + } + + @Override public void render(PoseStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isSelected, float delta) { super.render(matrices, index, y, x, entryWidth, entryHeight, mouseX, mouseY, isSelected, delta); Window window = Minecraft.getInstance().getWindow(); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsEntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsEntryListWidget.java index bffbb7287..73e80c2fe 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsEntryListWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsEntryListWidget.java @@ -30,6 +30,7 @@ import net.minecraft.ChatFormatting; import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TextComponent; @@ -39,6 +40,7 @@ import org.jetbrains.annotations.ApiStatus; import java.net.URI; import java.net.URISyntaxException; +import java.util.Collections; import java.util.List; @ApiStatus.Internal @@ -89,7 +91,10 @@ public class CreditsEntryListWidget extends DynamicNewSmoothScrollingEntryListWi } public static abstract class CreditsItem extends DynamicNewSmoothScrollingEntryListWidget.Entry<CreditsItem> { - + @Override + public List<? extends NarratableEntry> narratables() { + return Collections.emptyList(); + } } public static class TextCreditsItem extends CreditsItem { 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 a4c0bedcb..39f44a8a9 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 @@ -73,7 +73,7 @@ public class CreditsScreen extends Screen { @Override public void init() { - children.add(entryListWidget = new CreditsEntryListWidget(minecraft, width, height, 32, height - 32)); + addWidget(entryListWidget = new CreditsEntryListWidget(minecraft, width, height, 32, height - 32)); entryListWidget.creditsClearEntries(); List<Tuple<String, String>> translators = Lists.newArrayList(); Exception[] exception = {null}; @@ -118,7 +118,7 @@ public class CreditsScreen extends Screen { entryListWidget.creditsAddEntry(new CreditsEntryListWidget.LinkItem(new ImmutableTextComponent("Visit the project page at CurseForge."), "https://www.curseforge.com/minecraft/mc-mods/roughly-enough-items", entryListWidget.getItemWidth(), false)); entryListWidget.creditsAddEntry(new CreditsEntryListWidget.LinkItem(new ImmutableTextComponent("Support the project via Patreon!"), "https://patreon.com/shedaniel", entryListWidget.getItemWidth(), true)); entryListWidget.creditsAddEntry(new TextCreditsItem(NarratorChatListener.NO_TITLE)); - children.add(buttonDone = new Button(width / 2 - 100, height - 26, 200, 20, new TranslatableComponent("gui.done"), button -> openPrevious())); + addRenderableWidget(buttonDone = new Button(width / 2 - 100, height - 26, 200, 20, new TranslatableComponent("gui.done"), button -> openPrevious())); } private void openPrevious() { @@ -145,7 +145,6 @@ public class CreditsScreen extends Screen { this.e |
