aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/src/main')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java22
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java22
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java3
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java4
-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.java16
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java22
-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/RecipeDisplayExporter.java34
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java4
-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/modules/entries/GameModeMenuEntry.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/entries/SubSubsetsMenuEntry.java4
-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.java10
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java12
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/SearchFilterSyntaxHighlightingScreen.java13
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java13
-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/toast/CopyRecipeIdentifierToast.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/toast/ExportRecipeIdentifierToast.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DynamicErrorFreeEntryListWidget.java153
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryListEntryWidget.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryListWidget.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/TabWidget.java3
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/ArrowWidget.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/BurningFireWidget.java3
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/ButtonWidget.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/FillRectangleDrawableConsumer.java19
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/PanelWidget.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget.java15
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TexturedDrawableConsumer.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/compat/LBASupportPlugin.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/InputSlotCrafter.java3
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java15
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java16
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java88
45 files changed, 459 insertions, 249 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
index eec3d7514..9513bbe21 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/RoughlyEnoughItemsNetwork.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
index 82389bafe..21042c30e 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
@@ -25,6 +25,7 @@ package me.shedaniel.rei;
import io.netty.buffer.Unpooled;
import me.shedaniel.architectury.networking.NetworkManager;
+import me.shedaniel.rei.api.client.REIHelper;
import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.display.Display;
import me.shedaniel.rei.impl.common.transfer.InputSlotCrafter;
@@ -57,9 +58,10 @@ public class RoughlyEnoughItemsNetwork {
player.displayClientMessage(new TranslatableComponent("text.rei.no_permission_cheat").withStyle(ChatFormatting.RED), false);
return;
}
- if (!player.inventory.getCarried().isEmpty()) {
- player.inventory.setCarried(ItemStack.EMPTY);
- player.broadcastCarriedItem();
+ AbstractContainerMenu menu = player.containerMenu;
+ if (!menu.getCarried().isEmpty()) {
+ menu.setCarried(ItemStack.EMPTY);
+ menu.broadcastChanges();
}
});
NetworkManager.registerReceiver(NetworkManager.c2s(), CREATE_ITEMS_PACKET, (buf, context) -> {
@@ -69,7 +71,7 @@ public class RoughlyEnoughItemsNetwork {
return;
}
ItemStack stack = buf.readItem();
- if (player.inventory.add(stack.copy())) {
+ if (player.getInventory().add(stack.copy())) {
NetworkManager.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new FriendlyByteBuf(Unpooled.buffer()).writeItem(stack.copy()).writeUtf(player.getScoreboardName(), 32767));
} else {
player.displayClientMessage(new TranslatableComponent("text.rei.failed_cheat_items"), false);
@@ -82,16 +84,16 @@ public class RoughlyEnoughItemsNetwork {
return;
}
- Inventory inventory = player.inventory;
+ AbstractContainerMenu menu = player.containerMenu;
ItemStack itemStack = buf.readItem();
ItemStack stack = itemStack.copy();
- if (!inventory.getCarried().isEmpty() && ItemStack.isSameIgnoreDurability(inventory.getCarried(), stack) && ItemStack.tagMatches(inventory.getCarried(), stack)) {
- stack.setCount(Mth.clamp(stack.getCount() + inventory.getCarried().getCount(), 1, stack.getMaxStackSize()));
- } else if (!inventory.getCarried().isEmpty()) {
+ if (!menu.getCarried().isEmpty() && ItemStack.isSameIgnoreDurability(menu.getCarried(), stack) && ItemStack.tagMatches(menu.getCarried(), stack)) {
+ stack.setCount(Mth.clamp(stack.getCount() + menu.getCarried().getCount(), 1, stack.getMaxStackSize()));
+ } else if (!menu.getCarried().isEmpty()) {
return;
}
- inventory.setCarried(stack.copy());
- player.broadcastCarriedItem();
+ menu.setCarried(stack.copy());
+ menu.broadcastChanges();
NetworkManager.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new FriendlyByteBuf(Unpooled.buffer()).writeItem(itemStack.copy()).writeUtf(player.getScoreboardName(), 32767));
});
NetworkManager.registerReceiver(NetworkManager.c2s(), MOVE_ITEMS_PACKET, (packetByteBuf, context) -> {
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 140c1edc1..29d2deb00 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
@@ -59,7 +59,7 @@ import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.LazyLoadedValue;
import net.minecraft.util.Mth;
-import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
@@ -158,7 +158,7 @@ public class ClientHelperImpl implements ClientHelper {
@Override
public void sendDeletePacket() {
if (Minecraft.getInstance().screen instanceof CreativeModeInventoryScreen) {
- Minecraft.getInstance().player.inventory.setCarried(ItemStack.EMPTY);
+ Minecraft.getInstance().player.containerMenu.setCarried(ItemStack.EMPTY);
((CreativeModeInventoryScreen) Minecraft.getInstance().screen).isQuickCrafting = false;
return;
}
@@ -174,22 +174,22 @@ public class ClientHelperImpl implements ClientHelper {
return false;
EntryStack<ItemStack> entry = (EntryStack<ItemStack>) e;
if (Minecraft.getInstance().player == null) return false;
- if (Minecraft.getInstance().player.inventory == null) return false;
+ if (Minecraft.getInstance().player.getInventory() == null) return false;
ItemStack cheatedStack = entry.getValue().copy();
if (ConfigObject.getInstance().isGrabbingItems() && Minecraft.getInstance().screen instanceof CreativeModeInventoryScreen) {
- Inventory inventory = Minecraft.getInstance().player.inventory;
+ AbstractContainerMenu menu = Minecraft.getInstance().player.containerMenu;
EntryStack<ItemStack> stack = entry.copy();
- if (!inventory.getCarried().isEmpty() && EntryStacks.equalsExact(EntryStacks.of(inventory.getCarried()), stack)) {
- stack.getValue().setCount(Mth.clamp(stack.getValue().getCount() + inventory.getCarried().getCount(), 1, stack.getValue().getMaxStackSize()));
- } else if (!inventory.getCarried().isEmpty()) {
+ if (!menu.getCarried().isEmpty() && EntryStacks.equalsExact(EntryStacks.of(menu.getCarried()), stack)) {
+ stack.getValue().setCount(Mth.clamp(stack.getValue().getCount() + menu.getCarried().getCount(), 1, stack.getValue().getMaxStackSize()));
+ } else if (!menu.getCarried().isEmpty()) {
return false;
}
- inventory.setCarried(stack.getValue().copy());
+ menu.setCarried(stack.getValue().copy());
return true;
} else if (ClientHelperImpl.getInstance().canUsePackets()) {
- Inventory inventory = Minecraft.getInstance().player.inventory;
+ AbstractContainerMenu menu = Minecraft.getInstance().player.containerMenu;
EntryStack<ItemStack> stack = entry.copy();
- if (!inventory.getCarried().isEmpty() && !EntryStacks.equalsExact(EntryStacks.of(inventory.getCarried()), stack)) {
+ if (!menu.getCarried().isEmpty() && !EntryStacks.equalsExact(EntryStacks.of(menu.getCarried()), stack)) {
return false;
}
try {
@@ -217,7 +217,7 @@ public class ClientHelperImpl implements ClientHelper {
@ApiStatus.Internal
public LongSet _getInventoryItemsTypes() {
- return Minecraft.getInstance().player.inventory.compartments.stream()
+ return Minecraft.getInstance().player.getInventory().compartments.stream()
.flatMap(Collection::stream)
.map(EntryStacks::of)
.mapToLong(EntryStacks::hashExact)
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 731b2a996..1a4d28fcf 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
@@ -47,6 +47,7 @@ import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.InteractionResult;
+import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
@@ -216,7 +217,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 03008b2e3..292d76358 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
@@ -28,7 +28,7 @@ import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.mojang.blaze3d.platform.InputConstants;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
-import me.shedaniel.architectury.hooks.ScreenHooks;
+import me.shedaniel.architectury.hooks.screen.ScreenHooks;
import me.shedaniel.autoconfig.AutoConfig;
import me.shedaniel.autoconfig.annotation.ConfigEntry;
import me.shedaniel.autoconfig.gui.ConfigScreenProvider;
@@ -306,7 +306,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);
Minecraft.getInstance().setScreen(creditsScreen);
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 48d17ee69..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
@@ -23,13 +23,18 @@
package me.shedaniel.rei.impl.client.config.entries;
+import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import me.s