diff options
Diffstat (limited to 'runtime/src/main')
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 |
