aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-05-22 04:10:24 +0800
committershedaniel <daniel@shedaniel.me>2021-05-22 04:10:24 +0800
commite82ab958bc7d13e556d7426b7a1862ec76e23eba (patch)
tree6b4dd9517552e4a21ce723c46151cddd84cb706d
parent114a076d4556290d63dc4a93c13f24d14d3c09a5 (diff)
downloadRoughlyEnoughItems-e82ab958bc7d13e556d7426b7a1862ec76e23eba.tar.gz
RoughlyEnoughItems-e82ab958bc7d13e556d7426b7a1862ec76e23eba.tar.bz2
RoughlyEnoughItems-e82ab958bc7d13e556d7426b7a1862ec76e23eba.zip
Initial port to 21w20a
-rwxr-xr-xbuild.gradle5
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java15
-rw-r--r--fabric/src/main/resources/roughlyenoughitems.accessWidener6
-rw-r--r--gradle.properties10
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java18
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java23
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java13
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringEntry.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/RecipeScreenTypeEntry.java24
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/SearchFilterSyntaxHighlightingEntry.java16
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsEntryListWidget.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java10
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DelegateScreen.java20
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java10
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/WarningAndErrorScreen.java51
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DynamicErrorFreeEntryListWidget.java75
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget.java2
25 files changed, 267 insertions, 96 deletions
diff --git a/build.gradle b/build.gradle
index d8e0fb21f..a41934159 100755
--- a/build.gradle
+++ b/build.gradle
@@ -60,10 +60,7 @@ allprojects {
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
- def targetVersion = 8
- if (JavaVersion.current().isJava9Compatible()) {
- options.release = targetVersion
- }
+ options.release = 16
}
}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
index 325995f52..05f670dcf 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
@@ -44,7 +44,6 @@ import me.shedaniel.rei.api.client.registry.screen.ExclusionZones;
import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry;
import me.shedaniel.rei.api.client.registry.transfer.TransferHandlerRegistry;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
-import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes;
import me.shedaniel.rei.api.common.util.CollectionUtils;
import me.shedaniel.rei.api.common.util.EntryIngredients;
import me.shedaniel.rei.api.common.util.EntryStacks;
@@ -258,9 +257,6 @@ public class DefaultClientPlugin implements REIClientPlugin, BuiltinClientPlugin
DummyAxeItem.getStrippedBlocksMap().entrySet().stream().sorted(Comparator.comparing(b -> Registry.BLOCK.getKey(b.getKey()))).forEach(set -> {
registry.add(new DefaultStrippingDisplay(EntryStacks.of(set.getKey()), EntryStacks.of(set.getValue())));
});
- DummyHoeItem.getTilledBlocksMap().entrySet().stream().sorted(Comparator.comparing(b -> Registry.BLOCK.getKey(b.getKey()))).forEach(set -> {
- registry.add(new DefaultTillingDisplay(EntryStacks.of(set.getKey()), EntryStacks.of(set.getValue().getBlock())));
- });
DummyShovelItem.getPathBlocksMap().entrySet().stream().sorted(Comparator.comparing(b -> Registry.BLOCK.getKey(b.getKey()))).forEach(set -> {
registry.add(new DefaultPathingDisplay(EntryStacks.of(set.getKey()), EntryStacks.of(set.getValue().getBlock())));
});
@@ -380,15 +376,4 @@ public class DefaultClientPlugin implements REIClientPlugin, BuiltinClientPlugin
return STRIPPABLES;
}
}
-
- public static class DummyHoeItem extends HoeItem {
- public DummyHoeItem(Tier tier, int i, float f, Properties properties) {
- super(tier, i, f, properties);
- }
-
- public static Map<Block, BlockState> getTilledBlocksMap() {
- return TILLABLES;
- }
- }
-
}
diff --git a/fabric/src/main/resources/roughlyenoughitems.accessWidener b/fabric/src/main/resources/roughlyenoughitems.accessWidener
index 555e7bc91..74966e6f4 100644
--- a/fabric/src/main/resources/roughlyenoughitems.accessWidener
+++ b/fabric/src/main/resources/roughlyenoughitems.accessWidener
@@ -32,4 +32,8 @@ accessible method net/minecraft/client/gui/screens/Screen
accessible method net/minecraft/client/gui/screens/Screen insertText (Ljava/lang/String;Z)V
accessible method net/minecraft/client/gui/screens/Screen isValidCharacterForName (Ljava/lang/String;CI)Z
accessible field net/minecraft/client/gui/screens/inventory/AbstractContainerScreen draggingItem Lnet/minecraft/world/item/ItemStack;
-mutable field net/minecraft/client/gui/screens/inventory/AbstractContainerScreen draggingItem Lnet/minecraft/world/item/ItemStack; \ No newline at end of file
+mutable field net/minecraft/client/gui/screens/inventory/AbstractContainerScreen draggingItem Lnet/minecraft/world/item/ItemStack;
+extendable method net/minecraft/client/gui/screens/Screen init (Lnet/minecraft/client/Minecraft;II)V
+accessible method net/minecraft/client/gui/screens/Screen addRenderableWidget (Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/components/events/GuiEventListener;
+accessible method net/minecraft/client/gui/screens/Screen addRenderableOnly (Lnet/minecraft/client/gui/components/Widget;)Lnet/minecraft/client/gui/components/Widget;
+accessible method net/minecraft/client/gui/screens/Screen addWidget (Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/components/events/GuiEventListener; \ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 25ff411b4..8b4fa6b01 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,14 +1,14 @@
org.gradle.jvmargs=-Xmx3G
base_version=6.0.0
unstable=true
-supported_version=21w19a
-minecraft_version=21w19a
+supported_version=21w20a
+minecraft_version=21w20a
forgeEnabled=false
forge_version=36.0.43
fabricloader_version=0.11.3
-cloth_config_version=5.0.23
+cloth_config_version=5.0.33
modmenu_version=2.0.0-beta.4
-fabric_api=0.34.4+1.17
-architectury_version=2.0.154
+fabric_api=0.34.5+1.17
+architectury_version=2.0.11
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- \ No newline at end of file
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;