From c27630f0c0eb7e5084f28139aaf2ba45ff3a7e23 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 9 May 2020 00:26:18 +0800 Subject: Welcome back: Container Signed-off-by: shedaniel --- .../me/shedaniel/rei/RoughlyEnoughItemsCore.java | 28 ++++++------ .../shedaniel/rei/RoughlyEnoughItemsNetwork.java | 24 +++++----- .../me/shedaniel/rei/RoughlyEnoughItemsState.java | 1 - .../me/shedaniel/rei/api/AutoTransferHandler.java | 34 +++++++++----- src/main/java/me/shedaniel/rei/api/REIHelper.java | 9 +++- .../java/me/shedaniel/rei/api/RecipeHelper.java | 6 +-- .../shedaniel/rei/api/TransferRecipeDisplay.java | 5 +-- .../shedaniel/rei/gui/ContainerScreenOverlay.java | 40 ++++++++--------- .../shedaniel/rei/gui/PreRecipeViewingScreen.java | 6 +-- .../me/shedaniel/rei/gui/RecipeViewingScreen.java | 4 +- .../rei/gui/VillagerRecipeViewingScreen.java | 4 +- .../shedaniel/rei/gui/WarningAndErrorScreen.java | 4 +- .../rei/gui/credits/CreditsEntryListWidget.java | 2 +- .../shedaniel/rei/gui/credits/CreditsScreen.java | 6 +-- .../me/shedaniel/rei/gui/widget/EntryWidget.java | 3 -- .../me/shedaniel/rei/impl/ClientHelperImpl.java | 4 +- .../me/shedaniel/rei/impl/ConfigManagerImpl.java | 2 +- .../me/shedaniel/rei/impl/ConfigObjectImpl.java | 7 ++- .../me/shedaniel/rei/impl/EntryRegistryImpl.java | 2 +- .../me/shedaniel/rei/impl/InternalWidgets.java | 10 ++--- .../me/shedaniel/rei/impl/RecipeHelperImpl.java | 12 ++--- .../java/me/shedaniel/rei/impl/ScreenHelper.java | 22 ++++----- .../me/shedaniel/rei/plugin/DefaultPlugin.java | 12 ++--- .../plugin/DefaultPotionEffectExclusionZones.java | 10 ++--- .../plugin/DefaultRecipeBookExclusionZones.java | 14 +++--- .../rei/plugin/DefaultServerContainerPlugin.java | 12 ++--- .../autocrafting/DefaultCategoryHandler.java | 22 ++++----- .../autocrafting/DefaultRecipeBookHandler.java | 26 +++++------ .../containers/CraftingContainerInfoWrapper.java | 12 ++--- .../rei/plugin/cooking/DefaultCookingDisplay.java | 4 +- .../plugin/crafting/DefaultCraftingCategory.java | 6 +-- .../plugin/crafting/DefaultCraftingDisplay.java | 4 +- .../information/DefaultInformationCategory.java | 2 +- .../me/shedaniel/rei/server/ContainerInfo.java | 6 +-- .../shedaniel/rei/server/ContainerInfoHandler.java | 22 ++++----- .../me/shedaniel/rei/server/InputSlotCrafter.java | 52 +++++++++++----------- 36 files changed, 226 insertions(+), 213 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index 0fd28b111..9c90ea21d 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -39,9 +39,9 @@ import net.fabricmc.loader.api.ModContainer; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Element; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.CraftingScreen; +import net.minecraft.client.gui.screen.ingame.ContainerScreen; +import net.minecraft.client.gui.screen.ingame.CraftingTableScreen; import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; -import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.gui.screen.ingame.InventoryScreen; import net.minecraft.client.gui.screen.recipebook.RecipeBookGhostSlots; import net.minecraft.client.gui.screen.recipebook.RecipeBookProvider; @@ -49,11 +49,11 @@ import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.client.gui.widget.TexturedButtonWidget; import net.minecraft.client.resource.language.I18n; +import net.minecraft.container.CraftingTableContainer; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeManager; -import net.minecraft.screen.CraftingScreenHandler; import net.minecraft.screen.slot.Slot; import net.minecraft.text.LiteralText; import net.minecraft.util.ActionResult; @@ -192,11 +192,11 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { ClientSidePacketRegistry.INSTANCE.register(RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, (packetContext, packetByteBuf) -> { ItemStack stack = packetByteBuf.readItemStack(); String player = packetByteBuf.readString(32767); - packetContext.getPlayer().sendMessage(new LiteralText(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", SearchArgument.tryGetItemStackName(stack.copy())).replaceAll("\\{item_count}", stack.copy().getCount() + "").replaceAll("\\{player_name}", player)), false); + packetContext.getPlayer().addMessage(new LiteralText(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", SearchArgument.tryGetItemStackName(stack.copy())).replaceAll("\\{item_count}", stack.copy().getCount() + "").replaceAll("\\{player_name}", player)), false); }); ClientSidePacketRegistry.INSTANCE.register(RoughlyEnoughItemsNetwork.NOT_ENOUGH_ITEMS_PACKET, (packetContext, packetByteBuf) -> { Screen currentScreen = MinecraftClient.getInstance().currentScreen; - if (currentScreen instanceof CraftingScreen) { + if (currentScreen instanceof CraftingTableScreen) { RecipeBookWidget recipeBookGui = ((RecipeBookProvider) currentScreen).getRecipeBookWidget(); RecipeBookGhostSlots ghostSlots = recipeBookGui.ghostSlots; ghostSlots.reset(); @@ -213,12 +213,12 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { } ghostSlots.addSlot(Ingredient.ofItems(Items.STONE), 381203812, 12738291); - CraftingScreenHandler screenHandler = ((CraftingScreen) currentScreen).getScreenHandler(); + CraftingTableContainer container = ((CraftingTableScreen) currentScreen).getContainer(); for (int i = 0; i < input.size(); i++) { List stacks = input.get(i); if (!stacks.isEmpty()) { - Slot slot = screenHandler.getSlot(i + screenHandler.getCraftingResultSlotIndex() + 1); - ghostSlots.addSlot(Ingredient.ofStacks(stacks.toArray(new ItemStack[0])), slot.x, slot.y); + Slot slot = container.getSlot(i + container.getCraftingResultSlotIndex() + 1); + ghostSlots.addSlot(Ingredient.ofStacks(stacks.toArray(new ItemStack[0])), slot.xPosition, slot.yPosition); } } } @@ -296,7 +296,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { continue; ActionResult result = decider.shouldScreenBeOverlayed(screen); if (result != ActionResult.PASS) - return result == ActionResult.FAIL || REIHelper.getInstance().getPreviousHandledScreen() == null; + return result == ActionResult.FAIL || REIHelper.getInstance().getPreviousContainerScreen() == null; } } catch (ConcurrentModificationException ignored) { } @@ -308,7 +308,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { long[] lastSync = {-1}; ClothClientHooks.SYNC_RECIPES.register((minecraftClient, recipeManager, synchronizeRecipesS2CPacket) -> syncRecipes(lastSync)); ClothClientHooks.SCREEN_ADD_BUTTON.register((minecraftClient, screen, abstractButtonWidget) -> { - if (ConfigObject.getInstance().doesDisableRecipeBook() && screen instanceof HandledScreen && abstractButtonWidget instanceof TexturedButtonWidget) + if (ConfigObject.getInstance().doesDisableRecipeBook() && screen instanceof ContainerScreen && abstractButtonWidget instanceof TexturedButtonWidget) if (((TexturedButtonWidget) abstractButtonWidget).texture.equals(recipeButtonTex)) return ActionResult.FAIL; return ActionResult.PASS; @@ -318,8 +318,8 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { return; if (screen instanceof InventoryScreen && minecraftClient.interactionManager.hasCreativeInventory()) return; - if (screen instanceof HandledScreen) - ScreenHelper.setLastHandledScreen((HandledScreen) screen); + if (screen instanceof ContainerScreen) + ScreenHelper.setPreviousContainerScreen((ContainerScreen) screen); boolean alreadyAdded = false; for (Element element : Lists.newArrayList(screenHooks.cloth_getChildren())) if (ContainerScreenOverlay.class.isAssignableFrom(element.getClass())) @@ -385,9 +385,9 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { return ActionResult.PASS; if (ScreenHelper.getLastOverlay().keyPressed(i, i1, i2)) return ActionResult.SUCCESS; - if (screen instanceof HandledScreen && ConfigObject.getInstance().doesDisableRecipeBook() && ConfigObject.getInstance().doesFixTabCloseContainer()) + if (screen instanceof ContainerScreen && ConfigObject.getInstance().doesDisableRecipeBook() && ConfigObject.getInstance().doesFixTabCloseContainer()) if (i == 258 && minecraftClient.options.keyInventory.matchesKey(i, i1)) { - minecraftClient.player.closeHandledScreen(); + minecraftClient.player.closeContainer(); return ActionResult.SUCCESS; } return ActionResult.PASS; diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java index 2898983b7..4c20d5f7b 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java @@ -31,11 +31,11 @@ import me.shedaniel.rei.server.InputSlotCrafter; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.network.ServerSidePacketRegistry; import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.container.Container; +import net.minecraft.container.CraftingContainer; +import net.minecraft.container.PlayerContainer; import net.minecraft.item.ItemStack; import net.minecraft.network.PacketByteBuf; -import net.minecraft.screen.AbstractRecipeScreenHandler; -import net.minecraft.screen.PlayerScreenHandler; -import net.minecraft.screen.ScreenHandler; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; @@ -65,7 +65,7 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer { ServerSidePacketRegistry.INSTANCE.register(DELETE_ITEMS_PACKET, (packetContext, packetByteBuf) -> { ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer(); if (player.getServer().getPermissionLevel(player.getGameProfile()) < player.getServer().getOpPermissionLevel()) { - player.sendMessage(new TranslatableText("text.rei.no_permission_cheat").formatted(Formatting.RED), false); + player.addMessage(new TranslatableText("text.rei.no_permission_cheat").formatted(Formatting.RED), false); return; } if (!player.inventory.getCursorStack().isEmpty()) @@ -74,20 +74,20 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer { ServerSidePacketRegistry.INSTANCE.register(CREATE_ITEMS_PACKET, (packetContext, packetByteBuf) -> { ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer(); if (player.getServer().getPermissionLevel(player.getGameProfile()) < player.getServer().getOpPermissionLevel()) { - player.sendMessage(new TranslatableText("text.rei.no_permission_cheat").formatted(Formatting.RED), false); + player.addMessage(new TranslatableText("text.rei.no_permission_cheat").formatted(Formatting.RED), false); return; } ItemStack stack = packetByteBuf.readItemStack(); if (player.inventory.insertStack(stack.copy())) { ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new PacketByteBuf(Unpooled.buffer()).writeItemStack(stack.copy()).writeString(player.getEntityName(), 32767)); } else - player.sendMessage(new TranslatableText("text.rei.failed_cheat_items"), false); + player.addMessage(new TranslatableText("text.rei.failed_cheat_items"), false); }); ServerSidePacketRegistry.INSTANCE.register(MOVE_ITEMS_PACKET, (packetContext, packetByteBuf) -> { Identifier category = packetByteBuf.readIdentifier(); ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer(); - ScreenHandler screenHandler = player.currentScreenHandler; - PlayerScreenHandler playerScreenHandler = player.playerScreenHandler; + Container container = player.container; + PlayerContainer playerContainer = player.playerContainer; try { boolean shift = packetByteBuf.readBoolean(); Map> input = Maps.newHashMap(); @@ -101,9 +101,9 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer { input.put(i, list); } try { - InputSlotCrafter.start(category, screenHandler, player, input, shift); + InputSlotCrafter.start(category, container, player, input, shift); } catch (InputSlotCrafter.NotEnoughMaterialsException e) { - if (!(screenHandler instanceof AbstractRecipeScreenHandler)) + if (!(container instanceof CraftingContainer)) return; PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer()); buf.writeInt(input.size()); @@ -118,9 +118,9 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer { ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, NOT_ENOUGH_ITEMS_PACKET, buf); } } catch (IllegalStateException e) { - player.sendSystemMessage(new TranslatableText(e.getMessage()).formatted(Formatting.RED)); + player.sendMessage(new TranslatableText(e.getMessage()).formatted(Formatting.RED)); } catch (Exception e) { - player.sendSystemMessage(new TranslatableText("error.rei.internal.error", e.getMessage()).formatted(Formatting.RED)); + player.sendMessage(new TranslatableText("error.rei.internal.error", e.getMessage()).formatted(Formatting.RED)); e.printStackTrace(); } } catch (Exception e) { diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsState.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsState.java index 0a67d6f75..2f5240d09 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsState.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsState.java @@ -79,7 +79,6 @@ public class RoughlyEnoughItemsState { } } - @SuppressWarnings({"Convert2MethodRef", "FunctionalExpressionCanBeFolded"}) public static void onContinue(Runnable runnable) { continueCallbacks.add(runnable); } diff --git a/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java b/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java index e494aae65..85eb02553 100644 --- a/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java +++ b/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java @@ -26,8 +26,8 @@ package me.shedaniel.rei.api; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.screen.ScreenHandler; +import net.minecraft.client.gui.screen.ingame.ContainerScreen; +import net.minecraft.container.Container; import org.jetbrains.annotations.ApiStatus; import java.util.function.Supplier; @@ -80,8 +80,8 @@ public interface AutoTransferHandler { } interface Context { - static Context create(boolean actuallyCrafting, HandledScreen handledScreen, RecipeDisplay recipeDisplay) { - return new ContextImpl(actuallyCrafting, handledScreen, () -> recipeDisplay); + static Context create(boolean actuallyCrafting, ContainerScreen containerScreen, RecipeDisplay recipeDisplay) { + return new ContextImpl(actuallyCrafting, containerScreen, () -> recipeDisplay); } default MinecraftClient getMinecraft() { @@ -90,12 +90,22 @@ public interface AutoTransferHandler { boolean isActuallyCrafting(); - HandledScreen getHandledScreen(); + ContainerScreen getContainerScreen(); + + @Deprecated + default ContainerScreen getHandledScreen() { + return getContainerScreen(); + } RecipeDisplay getRecipe(); - default ScreenHandler getScreenHandler() { - return getHandledScreen().getScreenHandler(); + @Deprecated + default Container getScreenHandler() { + return getContainer(); + } + + default Container getContainer() { + return getHandledScreen().getContainer(); } } @@ -154,12 +164,12 @@ public interface AutoTransferHandler { @ApiStatus.Internal final class ContextImpl implements Context { boolean actuallyCrafting; - HandledScreen handledScreen; + ContainerScreen containerScreen; Supplier recipeDisplaySupplier; - private ContextImpl(boolean actuallyCrafting, HandledScreen handledScreen, Supplier recipeDisplaySupplier) { + private ContextImpl(boolean actuallyCrafting, ContainerScreen containerScreen, Supplier recipeDisplaySupplier) { this.actuallyCrafting = actuallyCrafting; - this.handledScreen = handledScreen; + this.containerScreen = containerScreen; this.recipeDisplaySupplier = recipeDisplaySupplier; } @@ -169,8 +179,8 @@ public interface AutoTransferHandler { } @Override - public HandledScreen getHandledScreen() { - return handledScreen; + public ContainerScreen getContainerScreen() { + return containerScreen; } @Override diff --git a/src/main/java/me/shedaniel/rei/api/REIHelper.java b/src/main/java/me/shedaniel/rei/api/REIHelper.java index bfb9eac9f..a6ff10a8b 100644 --- a/src/main/java/me/shedaniel/rei/api/REIHelper.java +++ b/src/main/java/me/shedaniel/rei/api/REIHelper.java @@ -26,7 +26,7 @@ package me.shedaniel.rei.api; import me.shedaniel.rei.api.widgets.Tooltip; import me.shedaniel.rei.gui.widget.TextFieldWidget; import me.shedaniel.rei.impl.ScreenHelper; -import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.gui.screen.ingame.ContainerScreen; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.Nullable; @@ -41,7 +41,12 @@ public interface REIHelper { return ScreenHelper.getInstance(); } - HandledScreen getPreviousHandledScreen(); + ContainerScreen getPreviousContainerScreen(); + + @Deprecated + default ContainerScreen getPreviousHandledScreen() { + return getPreviousContainerScreen(); + } boolean isDarkThemeEnabled(); diff --git a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java index 9bec4c656..e4b80e915 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java @@ -25,7 +25,7 @@ package me.shedaniel.rei.api; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.RoughlyEnoughItemsCore; -import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.gui.screen.ingame.ContainerScreen; import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeManager; import net.minecraft.util.Identifier; @@ -221,7 +221,7 @@ public interface RecipeHelper { */ void registerLiveRecipeGenerator(LiveRecipeGenerator liveRecipeGenerator); - void registerScreenClickArea(Rectangle rectangle, Class> screenClass, Identifier... categories); + void registerScreenClickArea(Rectangle rectangle, Class> screenClass, Identifier... categories); > void registerRecipes(Identifier category, Class recipeClass, Function mappingFunction); @@ -233,7 +233,7 @@ public interface RecipeHelper { boolean arePluginsLoading(); interface ScreenClickArea { - Class getScreenClass(); + Class getScreenClass(); Rectangle getRectangle(); diff --git a/src/main/java/me/shedaniel/rei/api/TransferRecipeDisplay.java b/src/main/java/me/shedaniel/rei/api/TransferRecipeDisplay.java index e5ff9aa2c..d856b9076 100644 --- a/src/main/java/me/shedaniel/rei/api/TransferRecipeDisplay.java +++ b/src/main/java/me/shedaniel/rei/api/TransferRecipeDisplay.java @@ -24,8 +24,7 @@ package me.shedaniel.rei.api; import me.shedaniel.rei.server.ContainerInfo; -import net.minecraft.screen.ScreenHandler; - +import net.minecraft.container.Container; import java.util.List; public interface TransferRecipeDisplay extends RecipeDisplay { @@ -40,6 +39,6 @@ public interface TransferRecipeDisplay extends RecipeDisplay { */ int getHeight(); - List> getOrganisedInputEntries(ContainerInfo containerInfo, ScreenHandler container); + List> getOrganisedInputEntries(ContainerInfo containerInfo, Container container); } diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index 0aaabfa7a..9388ad352 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -47,7 +47,7 @@ import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Element; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.gui.screen.ingame.ContainerScreen; import net.minecraft.client.render.Tessellator; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.item.ItemRenderer; @@ -234,7 +234,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds { ClientHelper.getInstance().setCheating(!ClientHelper.getInstance().isCheating()); return; } - ConfigManager.getInstance().openConfigScreen(REIHelper.getInstance().getPreviousHandledScreen()); + ConfigManager.getInstance().openConfigScreen(REIHelper.getInstance().getPreviousContainerScreen()); }) .onRender((matrices, button) -> { if (ClientHelper.getInstance().isCheating() && RoughlyEnoughItemsCore.hasOperatorPermission()) { @@ -374,7 +374,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds { VillagerRecipeViewingScreen widget = (VillagerRecipeViewingScreen) MinecraftClient.getInstance().currentScreen; return new Rectangle(widget.bounds.x, 3, widget.bounds.width, 18); } - return new Rectangle(REIHelper.getInstance().getPreviousHandledScreen().x, 3, REIHelper.getInstance().getPreviousHandledScreen().backgroundWidth, 18); + return new Rectangle(REIHelper.getInstance().getPreviousContainerScreen().x, 3, REIHelper.getInstance().getPreviousContainerScreen().containerWidth, 18); } return null; } @@ -443,7 +443,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds { VillagerRecipeViewingScreen widget = (VillagerRecipeViewingScreen) MinecraftClient.getInstance().currentScreen; return new Rectangle(widget.bounds.x, window.getScaledHeight() - 22, widget.bounds.width - widthRemoved, 18); } - return new Rectangle(REIHelper.getInstance().getPreviousHandledScreen().x, window.getScaledHeight() - 22, REIHelper.getInstance().getPreviousHandledScreen().backgroundWidth - widthRemoved, 18); + return new Rectangle(REIHelper.getInstance().getPreviousContainerScreen().x, window.getScaledHeight() - 22, REIHelper.getInstance().getPreviousContainerScreen().containerWidth - widthRemoved, 18); } private Rectangle getCraftableToggleArea() { @@ -494,22 +494,22 @@ public class ContainerScreenOverlay extends WidgetWithBounds { if (OverlaySearchField.isSearching) { matrices.push(); matrices.translate(0, 0, 200f); - if (MinecraftClient.getInstance().currentScreen instanceof HandledScreen) { - HandledScreen handledScreen = (HandledScreen) MinecraftClient.getInstance().currentScreen; - int x = handledScreen.x, y = handledScreen.y; - for (Slot slot : handledScreen.getScreenHandler().slots) + if (MinecraftClient.getInstance().currentScreen instanceof ContainerScreen) { + ContainerScreen containerScreen = (ContainerScreen) MinecraftClient.getInstance().currentScreen; + int x = containerScreen.x, y = containerScreen.y; + for (Slot slot : containerScreen.getContainer().slots) if (!slot.hasStack() || !ENTRY_LIST_WIDGET.canLastSearchTermsBeAppliedTo(EntryStack.create(slot.getStack()))) - fillGradient(matrices, x + slot.x, y + slot.y, x + slot.x + 16, y + slot.y + 16, -601874400, -601874400); + fillGradient(matrices, x + slot.xPosition, y + slot.yPosition, x + slot.xPosition + 16, y + slot.yPosition + 16, -601874400, -601874400); } matrices.pop(); } RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); this.renderWidgets(matrices, mouseX, mouseY, delta); - if (MinecraftClient.getInstance().currentScreen instanceof HandledScreen && ConfigObject.getInstance().areClickableRecipeArrowsEnabled()) { - HandledScreen handledScreen = (HandledScreen) MinecraftClient.getInstance().currentScreen; + if (MinecraftClient.getInstance().currentScreen instanceof ContainerScreen && ConfigObject.getInstance().areClickableRecipeArrowsEnabled()) { + ContainerScreen containerScreen = (ContainerScreen) MinecraftClient.getInstance().currentScreen; for (RecipeHelper.ScreenClickArea area : RecipeHelper.getInstance().getScreenClickAreas()) if (area.getScreenClass().equals(MinecraftClient.getInstance().currentScreen.getClass())) - if (area.getRectangle().contains(mouseX - handledScreen.x, mouseY - handledScreen.y)) { + if (area.getRectangle().contains(mouseX - containerScreen.x, mouseY - containerScreen.y)) { String collect = CollectionUtils.mapAndJoinToString(area.getCategories(), identifier -> RecipeHelper.getInstance().getCategory(identifier).getCategoryName(), ", "); TOOLTIPS.add(Tooltip.create(new TranslatableText("text.rei.view_recipes_for", collect))); break; @@ -640,10 +640,10 @@ public class ContainerScreenOverlay extends WidgetWithBounds { return true; } ItemStack itemStack = null; - if (MinecraftClient.getInstance().currentScreen instanceof HandledScreen) { - HandledScreen handledScreen = (HandledScreen) MinecraftClient.getInstance().currentScreen; - if (handledScreen.focusedSlot != null && !handledScreen.focusedSlot.getStack().isEmpty()) - itemStack = handledScreen.focusedSlot.getStack(); + if (MinecraftClient.getInstance().currentScreen instanceof ContainerScreen) { + ContainerScreen containerScreen = (ContainerScreen) MinecraftClient.getInstance().currentScreen; + if (containerScreen.focusedSlot != null && !containerScreen.focusedSlot.getStack().isEmpty()) + itemStack = containerScreen.focusedSlot.getStack(); } if (itemStack != null && !itemStack.isEmpty()) { if (ConfigObject.getInstance().getRecipeKeybind().matchesKey(int_1, int_2)) @@ -713,11 +713,11 @@ public class ContainerScreenOverlay extends WidgetWithBounds { removeGameModeMenu(); } } - if (MinecraftClient.getInstance().currentScreen instanceof HandledScreen && ConfigObject.getInstance().areClickableRecipeArrowsEnabled()) { - HandledScreen handledScreen = (HandledScreen) MinecraftClient.getInstance().currentScreen; + if (MinecraftClient.getInstance().currentScreen instanceof ContainerScreen && ConfigObject.getInstance().areClickableRecipeArrowsEnabled()) { + ContainerScreen containerScreen = (ContainerScreen) MinecraftClient.getInstance().currentScreen; for (RecipeHelper.ScreenClickArea area : RecipeHelper.getInstance().getScreenClickAreas()) - if (area.getScreenClass().equals(handledScreen.getClass())) - if (area.getRectangle().contains(double_1 - handledScreen.x, double_2 - handledScreen.y)) { + if (area.getScreenClass().equals(containerScreen.getClass())) + if (area.getRectangle().contains(double_1 - containerScreen.x, double_2 - containerScreen.y)) { ClientHelper.getInstance().executeViewAllRecipesFromCategories(Arrays.asList(area.getCategories())); MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); return true; diff --git a/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java index 593745af7..603243fd2 100644 --- a/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java @@ -37,7 +37,7 @@ import me.shedaniel.rei.impl.ScreenHelper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Element; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.gui.screen.ingame.ContainerScreen; import net.minecraft.client.util.NarratorManager; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; @@ -127,7 +127,7 @@ public class PreRecipeViewingScreen extends Screen { this.drawCenteredText(matrices, this.textRenderer, this.title, this.width / 2, 20, 16777215); if (showTips) { int i = 30; - for (Text s : this.textRenderer.wrapLines(new TranslatableText("text.rei.recipe_screen_type.selection.sub").formatted(Formatting.GRAY), width - 30)) { + for (Text s : this.textRenderer.wrapStringToWidthAsList(new TranslatableText("text.rei.recipe_screen_type.selection.sub").formatted(Formatting.GRAY), width - 30)) { this.drawCenteredText(matrices, this.textRenderer, s, width / 2, i, -1); i += 10; } @@ -163,7 +163,7 @@ public class PreRecipeViewingScreen extends Screen { public boolean keyPressed(int int_1, int int_2, int int_3) { if (int_1 == 256 || this.client.options.keyInventory.matchesKey(int_1, int_2)) { MinecraftClient.getInstance().openScreen(parent); - if (parent instanceof HandledScreen) + if (parent instanceof ContainerScreen) ScreenHelper.getLastOverlay().init(); return true; } diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index 41e5f720a..f9176405e 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -193,7 +193,7 @@ public class RecipeViewingScreen extends Screen implements RecipeScreen { if (element.keyPressed(int_1, int_2, int_3)) return true; if (int_1 == 256 || this.client.options.keyInventory.matchesKey(int_1, int_2)) { - MinecraftClient.getInstance().openScreen(ScreenHelper.getLastHandledScreen()); + MinecraftClient.getInstance().openScreen(REIHelper.getInstance().getPreviousContainerScreen()); ScreenHelper.getLastOverlay().init(); return true; } @@ -201,7 +201,7 @@ public class RecipeViewingScreen extends Screen implements RecipeScreen { if (ScreenHelper.hasLastRecipeScreen()) client.openScreen(ScreenHelper.getLastRecipeScreen()); else - client.openScreen(ScreenHelper.getLastHandledScreen()); + client.openScreen(REIHelper.getInstance().getPreviousContainerScreen()); return true; } return super.keyPressed(int_1, int_2, int_3); diff --git a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java index ae6d396a6..1f653bc72 100644 --- a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java @@ -399,7 +399,7 @@ public class VillagerRecipeViewingScreen extends Screen implements RecipeScreen if (element.keyPressed(int_1, int_2, int_3)) return true; if (int_1 == 256 || this.client.options.keyInventory.matchesKey(int_1, int_2)) { - MinecraftClient.getInstance().openScreen(ScreenHelper.getLastHandledScreen()); + MinecraftClient.getInstance().openScreen(REIHelper.getInstance().getPreviousContainerScreen()); ScreenHelper.getLastOverlay().init(); return true; } @@ -407,7 +407,7 @@ public class VillagerRecipeViewingScreen extends Screen implements RecipeScreen if (ScreenHelper.hasLastRecipeScreen()) client.openScreen(ScreenHelper.getLastRecipeScreen()); else - client.openScreen(ScreenHelper.getLastHandledScreen()); + client.openScreen(REIHelper.getInstance().getPreviousContainerScreen()); return true; } return super.keyPressed(int_1, int_2, int_3); diff --git a/src/main/java/me/shedaniel/rei/gui/WarningAndErrorScreen.java b/src/main/java/me/shedaniel/rei/gui/WarningAndErrorScreen.java index 50f2ccf23..47065133c 100644 --- a/src/main/java/me/shedaniel/rei/gui/WarningAndErrorScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/WarningAndErrorScreen.java @@ -66,13 +66,13 @@ public class WarningAndErrorScreen extends Screen { } private void addText(Text string) { - for (Text s : textRenderer.wrapLines(string, width - 80)) { + for (Text s : textRenderer.wrapStringToWidthAsList(string, width - 80)) { listWidget.creditsAddEntry(new TextItem(s)); } } private void addLink(Text string, String link) { - for (Text s : textRenderer.wrapLines(string, width - 80)) { + for (Text s : textRenderer.wrapStringToWidthAsList(string, width - 80)) { listWidget.creditsAddEntry(new LinkItem(s.getString(), link)); } } diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java index 158ac014b..fd79e4f24 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java @@ -113,7 +113,7 @@ public class CreditsEntryListWidget extends DynamicNewSmoothScrollingEntryListWi public TranslationCreditsItem(Text language, Text translators, int width, int maxWidth) { this.language = language; - this.translators = MinecraftClient.getInstance().textRenderer.wrapLines(translators, width); + this.translators = MinecraftClient.getInstance().textRenderer.wrapStringToWidthAsList(translators, width); this.maxWidth = maxWidth; } diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java index e182da42e..7277ea383 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java @@ -30,7 +30,7 @@ import me.shedaniel.rei.impl.ScreenHelper; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.metadata.CustomValue; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.gui.screen.ingame.ContainerScreen; import net.minecraft.client.gui.widget.AbstractPressableButtonWidget; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.NarratorManager; @@ -61,7 +61,7 @@ public class CreditsScreen extends Screen { public boolean keyPressed(int int_1, int int_2, int int_3) { if (int_1 == 256 && this.shouldCloseOnEsc()) { this.client.openScreen(parent); - if (parent instanceof HandledScreen) + if (parent instanceof ContainerScreen) ScreenHelper.getLastOverlay().init(); return true; } @@ -115,7 +115,7 @@ public class CreditsScreen extends Screen { @Override public void onPress() { CreditsScreen.this.client.openScreen(parent); - if (parent instanceof HandledScreen) + if (parent instanceof ContainerScreen) ScreenHelper.getLastOverlay().init(); } }); diff --git a/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java index 188800fb1..58fb85802 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java @@ -36,9 +36,7 @@ import me.shedaniel.rei.impl.ScreenHelper; import me.shedaniel.rei.utils.CollectionUtils; import net.minecraft.client.gui.Element; import net.minecraft.client.resource.language.I18n; -import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.sound.SoundEvents; import net.minecraft.text.LiteralText; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; @@ -389,7 +387,6 @@ public class EntryWidget extends Slot { } else { ContainerScreenOverlay.getEntryListWidget().updateSearch(ScreenHelper.getSearchField().getText()); } - minecraft.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); return true; } } diff --git a/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java b/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java index 88620fa47..5213cd220 100644 --- a/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java @@ -177,7 +177,7 @@ public class ClientHelperImpl implements ClientHelper, ClientModInitializer { String madeUpCommand = og.replaceAll("\\{player_name}", MinecraftClient.getInstance().player.getEntityName()).replaceAll("\\{item_name}", identifier.getPath()).replaceAll("\\{item_identifier}", identifier.toString()).replaceAll("\\{nbt}", tagMessage).replaceAll("\\{count}", String.valueOf(cheatedStack.getCount())); if (madeUpCommand.length() > 256) { madeUpCommand = og.replaceAll("\\{player_name}", MinecraftClient.getInstance().player.getEntityName()).replaceAll("\\{item_name}", identifier.getPath()).replaceAll("\\{item_identifier}", identifier.toString()).replaceAll("\\{nbt}", "").replaceAll("\\{count}", String.valueOf(cheatedStack.getCount())); - MinecraftClient.getInstance().player.sendMessage(new TranslatableText("text.rei.too_long_nbt"), false); + MinecraftClient.getInstance().player.addMessage(new TranslatableText("text.rei.too_long_nbt"), false); } MinecraftClient.getInstance().player.sendChatMessage(madeUpCommand); return true; @@ -260,7 +260,7 @@ public class ClientHelperImpl implements ClientHelper, ClientModInitializer { screen = new VillagerRecipeViewingScreen(map, category); } else if (ConfigObject.getInstance().getRecipeScreenType() == RecipeScreenType.UNSET) { @Nullable Identifier finalCategory = category; - screen = new PreRecipeViewingScreen(REIHelper.getInstance().getPreviousHandledScreen(), RecipeScreenType.UNSET, true, original -> { + screen = new PreRecipeViewingScreen(REIHelper.getInstance().getPreviousContainerScreen(), RecipeScreenType.UNSET, true, original -> { ConfigObject.getInstance().setRecipeScreenType(original ? RecipeScreenType.ORIGINAL : RecipeScreenType.VILLAGER); ConfigManager.getInstance().saveConfig(); openRecipeViewingScreen(map, finalCategory, ingredientNotice, resultNotice); diff --git a/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java b/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java index d75dde451..b2edf106f 100644 --- a/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java @@ -117,7 +117,7 @@ public class ConfigManagerImpl implements ConfigManager { Collections.singletonList(new RecipeScreenTypeEntry(220, new TranslatableText(i13n), getUnsafely(field, config, RecipeScreenType.UNSET), getUnsafely(field, defaults), type -> setUnsafely(field, config, type))) , (field) -> field.getType() == RecipeScreenType.class, ConfigObjectImpl.UseSpecialRecipeTypeScreen.class); guiRegistry.registerAnnotationProvider((i13n, field, config, defaults, guiProvider) -> - REIHelper.getInstance().getPreviousHandledScreen() == null || MinecraftClient.getInstance().getNetworkHandler() == null || MinecraftClient.getInstance().getNetworkHandler().getRecipeManager() == null ? + REIHelper.getInstance().getPreviousContainerScreen() == null || MinecraftClient.getInstance().getNetworkHandler() == null || MinecraftClient.getInstance().getNetworkHandler().getRecipeManager() == null ? Collections.singletonList(new NoFilteringEntry(getUnsafely(field, config, new ArrayList<>()), getUnsafely(field, defaults), list -> setUnsafely(field, config, list))) : Collections.singletonList(new FilteringEntry(getUnsafely(field, config, new ArrayList<>()), getUnsafely(field, defaults), list -> setUnsafely(field, config, list))) diff --git a/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java b/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java index bab9c8661..ac6d6f472 100644 --- a/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java @@ -32,6 +32,9 @@ import me.shedaniel.clothconfig2.api.ModifierKeyCode; import me.shedaniel.rei.api.ConfigObject; import me.shedaniel.rei.api.EntryStack; import me.shedaniel.rei.gui.config.*; +import me.shedaniel.rei.impl.ConfigObjectImpl.DontApplyFieldName; +import me.shedaniel.rei.impl.ConfigObjectImpl.UseFilteringScreen; +import me.shedaniel.rei.impl.ConfigObjectImpl.UseSpecialRecipeTypeScreen; import net.minecraft.client.util.InputUtil; import org.jetbrains.annotations.ApiStatus; @@ -399,7 +402,7 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData { @Comment("Declares whether favorites will be searched.") private boolean searchFavorites = true; @UsePercentage(min = 0.25, max = 4.0) private double entrySize = 1.0; private boolean useCompactTabs = true; - private boolean lowerConfigButton = false; + private boolean lowerConfigButton = true; @Comment("Declares whether REI should resize its recipe window dynamically") private boolean resizeDynamically = false; } @@ -415,7 +418,7 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData { } public static class Modules { - @Comment("Declares whether the craftable filter button is enabled.") private boolean enableCraftableOnlyButton = true; + @Comment("Declares whether the craftable filter button is enabled.") private boolean enableCraftableOnlyButton = false; private boolean toastDisplayedOnCopyIdentifier = true; @Comment("Declares whether the utils buttons are shown.") private boolean showUtilsButtons = false; @Comment("Declares whether REI should remove the recipe book.") private boolean disableRecipeBook = false; diff --git a/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java b/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java index f7dfda2b3..6aa59e42c 100644 --- a/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java @@ -126,7 +126,7 @@ public class EntryRegistryImpl implements EntryRegistry { public ItemStack[] getAllStacksFromItem(Item item) { List list = appendStacksForItem(item); ItemStack[] array = list.toArray(new ItemStack[0]); - Arrays.sort(array, (a, b) -> ItemStack.areEqual(a, b) ? 0 : 1); + Arrays.sort(array, (a, b) -> ItemStack.areEqualIgnoreDamage(a, b) ? 0 : 1); return array; } diff --git a/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java b/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java index 3460b23bd..e6b04a84d 100644 --- a/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java +++ b/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java @@ -37,7 +37,7 @@ import me.shedaniel.rei.gui.widget.WidgetWithBounds; import me.shedaniel.rei.utils.CollectionUtils; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Element; -import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.gui.screen.ingame.ContainerScreen; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; @@ -55,13 +55,13 @@ public final class InternalWidgets { private InternalWidgets() {} public static Widget createAutoCraftingButtonWidget(Rectangle displayBounds, Rectangle rectangle, Text text, Supplier displaySupplier, List setupDisplay, RecipeCategory category) { - HandledScreen handledScreen = REIHelper.getInstance().getPreviousHandledScreen(); + ContainerScreen containerScreen = REIHelper.getInstance().getPreviousContainerScreen(); boolean[] visible = {false}; List[] errorTooltip = new List[]{null}; Button autoCraftingButton = Widgets.createButton(rectangle, text) .focusable(false) .onClick(button -> { - AutoTransferHandler.Context context = AutoTransferHandler.Context.create(true, handledScreen, displaySupplier.get()); + AutoTransferHandler.Context context = AutoTransferHandler.Context.create(true, containerScreen, displaySupplier.get()); for (AutoTransferHandler autoTransferHandler : RecipeHelper.getInstance().getSortedAutoCraftingHandler()) try { AutoTransferHandler.Result result = autoTransferHandler.handle(context); @@ -70,7 +70,7 @@ public final class InternalWidgets { } catch (Exception e) { e.printStackTrace(); } - MinecraftClient.getInstance().openScreen(handledScreen); + MinecraftClient.getInstance().openScreen(containerScreen); ScreenHelper.getLastOverlay().init(); }) .onRender((matrices, button) -> { @@ -79,7 +79,7 @@ public final class InternalWidgets { int color = 0; visible[0] = false; IntList redSlots = null; - AutoTransferHandler.Context context = AutoTransferHandler.Context.create(false, handledScreen, displaySupplier.get()); + AutoTransferHandler.Context context = AutoTransferHandler.Context.create(false, containerScreen, displaySupplier.get()); for (AutoTransferHandler autoTransferHandler : RecipeHelper.getInstance().getSortedAutoCraftingHandler()) { try { AutoTransferHandler.Result result = autoTransferHandler.handle(context); diff --git a/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java b/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java index 1ccd768ce..f07f62028 100644 --- a/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java @@ -34,7 +34,7 @@ import me.shedaniel.rei.api.plugins.REIPluginV0; import me.shedaniel.rei.api.subsets.SubsetsRegistry; import me.shedaniel.rei.impl.subsets.SubsetsRegistryImpl; import me.shedaniel.rei.utils.CollectionUtils; -import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.gui.screen.ingame.ContainerScreen; import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeManager; import net.minecraft.util.ActionResult; @@ -360,7 +360,7 @@ public class RecipeHelperImpl implements RecipeHelper { @Override public ActionResult shouldScreenBeOverlayed(Class screen) { - return HandledScreen.class.isAssignableFrom(screen) ? ActionResult.SUCCESS : ActionResult.PASS; + return ContainerScreen.class.isAssignableFrom(screen) ? ActionResult.SUCCESS : ActionResult.PASS; } @Override @@ -466,7 +466,7 @@ public class RecipeHelperImpl implements RecipeHelper { } @Override - public void registerScreenClickArea(Rectangle rectangle, Class> screenClass, Identifier... categories) { + public void registerScreenClickArea(Rectangle rectangle, Class> screenClass, Identifier... categories) { this.screenClickAreas.add(new ScreenClickAreaImpl(screenClass, rectangle, categories)); } @@ -498,17 +498,17 @@ public class RecipeHelperImpl implements RecipeHelper { } private static class ScreenClickAreaImpl implements ScreenClickArea { - Class> screenClass; + Class> screenClass; Rectangle rectangle; Identifier[] categories; - private ScreenClickAreaImpl(Class> screenClass, Rectangle rectangle, Identifier[] categories) { + private ScreenClickAreaImpl(Class> screenClass, Rectangle rectangle, Identifier[] categories) { this.screenClass = screenClass; this.rectangle = rectangle; this.categories = categories; } - public Class> getScreenClass() { + public Class> getScreenClass() { return screenClass; } diff --git a/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java b/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java index 10e0065c2..4cf3558a1 100644 --- a/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java +++ b/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java @@ -44,7 +44,7 @@ import net.fabricmc.fabric.api.event.client.ClientTickCallback; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.gui.screen.ingame.ContainerScreen; import net.minecraft.client.util.Window; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; @@ -64,7 +64,7 @@ public class ScreenHelper implements ClientModInitializer, REIHelper { @ApiStatus.Internal public static List inventoryStacks = Lists.newArrayList(); private static ContainerScreenOverlay overlay; - private static HandledScreen lastHandledScreen = null; + private static ContainerScreen previousContainerScreen = null; private static LinkedHashSet lastRecipeScreen = Sets.newLinkedHashSetWithExpectedSize(5); private static ScreenHelper instance; @@ -152,21 +152,21 @@ public class ScreenHelper implements ClientModInitializer, REIHelper { } /** - * @see REIHelper#getPreviousHandledScreen() + * @see REIHelper#getPreviousContainerScreen() */ @Deprecated @ApiStatus.ScheduledForRemoval - public static HandledScreen getLastHandledScreen() { - return lastHandledScreen; + public static ContainerScreen getLastHandledScreen() { + return previousContainerScreen; } @Override - public HandledScreen getPreviousHandledScreen() { - return lastHandledScreen; + public ContainerScreen getPreviousContainerScreen() { + return previousContainerScreen; } - public static void setLastHandledScreen(HandledScreen lastScreenWithHandler) { - ScreenHelper.lastHandledScreen = lastScreenWithHandler; + public static void setPreviousContainerScreen(ContainerScreen previousContainerScreen) { + ScreenHelper.previousContainerScreen = previousContainerScreen; } public static void drawHoveringWidget(MatrixStack matrices, int x, int y, TriConsumer consumer, int width, int height, float delta) { @@ -215,8 +215,8 @@ public class ScreenHelper implements ClientModInitializer, REIHelper { } client.currentScreen = null; client.openScreen(warningAndErrorScreen); - } else if (lastHandledScreen != screen && screen instanceof HandledScreen) - lastHandledScreen = (HandledScreen) screen; + } else if (previousContainerScreen != screen && screen instanceof ContainerScreen) + previousContainerScreen = (ContainerScreen) screen; return ActionResult.PASS; }); boolean loaded = FabricLoader.getInstance().isModLoaded("fabric-events-lifecycle-v0"); diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java index 76495ed77..a8e81d37e 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java @@ -299,20 +299,20 @@ public class DefaultPlugin implements REIPluginV0 { return Collections.emptyList(); return Collections.singletonList(widget.getBounds().clone()); }); - displayHelper.registerHandler(new DisplayHelper.DisplayBoundsHandler>() { + displayHelper.registerHandler(new DisplayHelper.DisplayBoundsHandler>() { @Override public Class getBaseSupportedClass() { - return HandledScreen.class; + return ContainerScreen.class; } @Override - public Rectangle getLeftBounds(HandledScreen screen) { + public Rectangle getLeftBounds(ContainerScreen screen) { return new Rectangle(2, 0, screen.x - 4, screen.height); } @Override - public Rectangle getRightBounds(HandledScreen screen) { - int startX = screen.x + screen.backgroundWidth + 2; + public Rectangle getRightBounds(ContainerScreen screen) { + int startX = screen.x + screen.containerWidth + 2; return new Rectangle(startX, 0, screen.width - startX - 2, screen.height); } @@ -392,7 +392,7 @@ public class DefaultPlugin implements REIPluginV0 { recipeHelper.removeAutoCraftButton(COMPOSTING); recipeHelper.removeAutoCraftButton(BEACON); recipeHelper.removeAutoCraftButton(INFO); - recipeHelper.registerScreenClickArea(new Rectangle(88, 32, 28, 23), CraftingScreen.class, CRAFTING); + recipeHelper.registerScreenClickArea(new Rectangle(88, 32, 28, 23), CraftingTableScreen.class, CRAFTING); recipeHelper.registerScreenClickArea(new Rectangle(137, 29, 10, 13), InventoryScreen.class, CRAFTING); recipeHelper.registerScreenClickArea(new Rectangle(97, 16, 14, 30), BrewingStandScreen.class, BREWING); recipeHelper.registerScreenClickArea(new Rectangle(78, 32, 28, 23), FurnaceScreen.class, SMELTING); diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java index 024eea242..0dbd2df61 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java @@ -28,7 +28,7 @@ import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.REIHelper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ingame.AbstractInventoryScreen; -import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.gui.screen.ingame.ContainerScreen; import net.minecraft.entity.effect.StatusEffectInstance; import java.util.ArrayList; @@ -40,15 +40,15 @@ import java.util.function.Supplier; public class DefaultPotionEffectExclusionZones implements Supplier> { @Override public List get() { - if (!(REIHelper.getInstance().getPreviousHandledScreen() instanceof AbstractInventoryScreen) || !((AbstractInventoryScreen) REIHelper.getInstance().getPreviousHandledScreen()).drawStatusEffects) + if (!(REIHelper.getInstance().getPreviousContainerScreen() instanceof AbstractInventoryScreen) || !((AbstractInventoryScreen) REIHelper.getInstance().getPreviousContainerScreen()).offsetGuiForEffects) return Collections.emptyList(); Collection activePotionEffects = MinecraftClient.getInstance().player.getStatusEffects(); if (activePotionEffects.isEmpty()) return Collections.emptyList(); - HandledScreen handledScreen = REIHelper.getInstance().getPreviousHandledScreen(); + ContainerScreen containerScreen = REIHelper.getInstance().getPreviousContainerScreen(); List list = new ArrayList<>(); - int x = handledScreen.x - 124; - int y = handledScreen.y; + int x = containerScreen.x - 124; + int y = containerScreen.y; int height = 33; if (activePotionEffects.size() > 5) height = 132 / (activePotionEffects.size() - 1); diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java b/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java index 98565e321..ff5a14025 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java @@ -27,10 +27,10 @@ import com.google.common.collect.Lists; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.REIHelper; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.gui.screen.ingame.ContainerScreen; import net.minecraft.client.gui.screen.recipebook.RecipeBookProvider; import net.minecraft.client.recipebook.ClientRecipeBook; -import net.minecraft.screen.AbstractRecipeScreenHandler; +import net.minecraft.container.CraftingContainer; import java.util.Collections; import java.util.List; @@ -40,13 +40,13 @@ public class DefaultRecipeBookExclusionZones implements Supplier @Override public List get() { - if (!MinecraftClient.getInstance().player.getRecipeBook().isGuiOpen() || !(MinecraftClient.getInstance().currentScreen instanceof RecipeBookProvider) || !(REIHelper.getInstance().getPreviousHandledScreen().getScreenHandler() instanceof AbstractRecipeScreenHandler)) + if (!MinecraftClient.getInstance().player.getRecipeBook().isGuiOpen() || !(MinecraftClient.getInstance().currentScreen instanceof RecipeBookProvider) || !(REIHelper.getInstance().getPreviousContainerScreen().getContainer() instanceof CraftingContainer)) return Collections.emptyList(); - HandledScreen handledScreen = REIHelper.getInstance().getPreviousHandledScreen(); - List l = Lists.newArrayList(new Rectangle(handledScreen.x - 4 - 145, handledScreen.y, 4 + 145 + 30, handledScreen.backgroundHeight)); - int size = ClientRecipeBook.getGroups((AbstractRecipeScreenHandler) REIHelper.getInstance().getPreviousHandledScreen().getScreenHandler()).size(); + ContainerScreen containerScreen = REIHelper.getInstance().getPreviousContainerScreen(); + List l = Lists.newArrayList(new Rectangle(containerScreen.x - 4 - 145, containerScreen.y, 4 + 145 + 30, containerScreen.containerHeight)); + int size = ClientRecipeBook.getGroupsForContainer((CraftingContainer) REIHelper.getInstance().getPreviousContainerScreen().getContainer()).size(); if (size > 0) - l.add(new Rectangle(handledScreen.x - 4 - 145 - 30, handledScreen.y, 30, size * 27)); + l.add(new Rectangle(containerScreen.x - 4 - 145 - 30, containerScreen.y, 30, size * 27)); return l; } diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultServerContainerPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultServerContainerPlugin.java index 1573669c3..cdbfa789b 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultServerContainerPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultServerContainerPlugin.java @@ -25,16 +25,16 @@ package me.shedaniel.rei.plugin; import me.shedaniel.rei.plugin.containers.CraftingContainerInfoWrapper; import me.shedaniel.rei.server.ContainerInfoHandler; -import net.minecraft.screen.*; +import net.minecraft.container.*; import net.minecraft.util.Identifier; public class DefaultServerContainerPlugin implements Runnable { @Override public void run() { - ContainerInfoHandler.registerScreenWithHandlerInfo(new Identifier("minecraft", "plugins/crafting"), CraftingContainerInfoWrapper.create(CraftingScreenHandler.class