From 2e42d6872548241691e28d913681ff6950a4aba9 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 8 Mar 2019 17:49:29 +0800 Subject: Catch StackOverflow --- .../me/shedaniel/rei/RoughlyEnoughItemsCore.java | 3 +- .../java/me/shedaniel/rei/client/ClientHelper.java | 8 +-- .../java/me/shedaniel/rei/client/GuiHelper.java | 66 ------------------- .../java/me/shedaniel/rei/client/ScreenHelper.java | 76 ++++++++++++++++++++++ .../shedaniel/rei/gui/ContainerScreenOverlay.java | 64 +++++++++--------- .../me/shedaniel/rei/gui/RecipeViewingScreen.java | 32 +++++---- .../me/shedaniel/rei/gui/config/ConfigScreen.java | 6 +- .../shedaniel/rei/gui/credits/CreditsScreen.java | 6 +- .../gui/widget/CraftableToggleButtonWidget.java | 4 +- .../shedaniel/rei/gui/widget/ItemListOverlay.java | 46 ++++++++++--- .../shedaniel/rei/gui/widget/ItemSlotWidget.java | 21 +++--- .../rei/gui/widget/SpeedCraftingButtonWidget.java | 14 ++-- .../me/shedaniel/rei/gui/widget/TabWidget.java | 4 +- .../shedaniel/rei/mixin/MixinContainerScreen.java | 16 ++--- .../mixin/MixinCreativePlayerInventoryScreen.java | 10 +-- 15 files changed, 208 insertions(+), 168 deletions(-) delete mode 100644 src/main/java/me/shedaniel/rei/client/GuiHelper.java create mode 100644 src/main/java/me/shedaniel/rei/client/ScreenHelper.java (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 2cac1d50e..497b4e391 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -6,6 +6,7 @@ import me.shedaniel.rei.api.PluginDisabler; import me.shedaniel.rei.api.REIPlugin; import me.shedaniel.rei.api.RecipeHelper; import me.shedaniel.rei.client.*; +import me.shedaniel.rei.gui.widget.ItemListOverlay; import me.shedaniel.rei.plugin.DefaultPlugin; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.ModInitializer; @@ -98,7 +99,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer, ModInitiali ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer(); ItemStack stack = packetByteBuf.readItemStack(); if (player.inventory.insertStack(stack.copy())) - player.addChatMessage(new StringTextComponent(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", stack.copy().getDisplayName().getFormattedText()).replaceAll("\\{item_count}", stack.copy().getAmount() + "").replaceAll("\\{player_name}", player.getEntityName())), false); + player.addChatMessage(new StringTextComponent(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", ItemListOverlay.tryGetItemStackName(stack.copy())).replaceAll("\\{item_count}", stack.copy().getAmount() + "").replaceAll("\\{player_name}", player.getEntityName())), false); else player.addChatMessage(new TranslatableTextComponent("text.rei.failed_cheat_items"), false); }); diff --git a/src/main/java/me/shedaniel/rei/client/ClientHelper.java b/src/main/java/me/shedaniel/rei/client/ClientHelper.java index ad14db62f..660fa8709 100644 --- a/src/main/java/me/shedaniel/rei/client/ClientHelper.java +++ b/src/main/java/me/shedaniel/rei/client/ClientHelper.java @@ -77,7 +77,7 @@ public class ClientHelper implements ClientModInitializer { } public static void sendDeletePacket() { - if (GuiHelper.getLastContainerScreen() instanceof CreativePlayerInventoryScreen) { + if (ScreenHelper.getLastContainerScreen() instanceof CreativePlayerInventoryScreen) { MinecraftClient.getInstance().player.inventory.setCursorStack(ItemStack.EMPTY); return; } @@ -107,14 +107,14 @@ public class ClientHelper implements ClientModInitializer { } } - public static boolean executeRecipeKeyBind(ContainerScreenOverlay overlay, ItemStack stack) { + public static boolean executeRecipeKeyBind(ItemStack stack) { Map> map = RecipeHelper.getInstance().getRecipesFor(stack); if (map.keySet().size() > 0) MinecraftClient.getInstance().openScreen(new RecipeViewingScreen(MinecraftClient.getInstance().window, map)); return map.keySet().size() > 0; } - public static boolean executeUsageKeyBind(ContainerScreenOverlay overlay, ItemStack stack) { + public static boolean executeUsageKeyBind(ItemStack stack) { Map> map = RecipeHelper.getInstance().getUsagesFor(stack); if (map.keySet().size() > 0) MinecraftClient.getInstance().openScreen(new RecipeViewingScreen(MinecraftClient.getInstance().window, map)); @@ -135,7 +135,7 @@ public class ClientHelper implements ClientModInitializer { return inventoryStacks; } - public static boolean executeViewAllRecipesKeyBind(ContainerScreenOverlay lastOverlay) { + public static boolean executeViewAllRecipesKeyBind() { Map> map = RecipeHelper.getInstance().getAllRecipes(); if (map.keySet().size() > 0) MinecraftClient.getInstance().openScreen(new RecipeViewingScreen(MinecraftClient.getInstance().window, map)); diff --git a/src/main/java/me/shedaniel/rei/client/GuiHelper.java b/src/main/java/me/shedaniel/rei/client/GuiHelper.java deleted file mode 100644 index 329753add..000000000 --- a/src/main/java/me/shedaniel/rei/client/GuiHelper.java +++ /dev/null @@ -1,66 +0,0 @@ -package me.shedaniel.rei.client; - -import com.google.common.collect.Lists; -import me.shedaniel.rei.RoughlyEnoughItemsCore; -import me.shedaniel.rei.gui.ContainerScreenOverlay; -import me.shedaniel.rei.gui.widget.TextFieldWidget; -import me.shedaniel.rei.listeners.ContainerScreenHooks; -import net.minecraft.client.gui.ContainerScreen; -import net.minecraft.client.gui.InputListener; -import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.gui.widget.RecipeBookButtonWidget; -import net.minecraft.item.ItemStack; - -import java.util.List; - -public class GuiHelper { - - public static TextFieldWidget searchField; - public static List inventoryStacks = Lists.newArrayList(); - private static boolean overlayVisible = true; - private static ContainerScreenOverlay overlay; - private static ContainerScreen lastContainerScreen; - - public static boolean isOverlayVisible() { - return overlayVisible; - } - - public static void toggleOverlayVisible() { - overlayVisible = !overlayVisible; - } - - public static ContainerScreenOverlay getLastOverlay(boolean reset) { - if (overlay == null || reset) { - overlay = new ContainerScreenOverlay(); - overlay.onInitialized(); - } - return overlay; - } - - public static ContainerScreenOverlay getLastOverlay() { - return getLastOverlay(false); - } - - public static void disableRecipeBook(ContainerScreen lastContainerScreen, List listeners, List buttonWidgets) { - RoughlyEnoughItemsCore.LOGGER.info("%d %d", listeners.size(), buttonWidgets.size()); - for(InputListener listener : listeners) - if (listener instanceof RecipeBookButtonWidget) - listeners.remove(listener); - for(ButtonWidget buttonWidget : buttonWidgets) - if (buttonWidget instanceof RecipeBookButtonWidget) - buttonWidgets.remove(buttonWidget); - } - - public static ContainerScreen getLastContainerScreen() { - return lastContainerScreen; - } - - public static void setLastContainerScreen(ContainerScreen lastContainerScreen) { - GuiHelper.lastContainerScreen = lastContainerScreen; - } - - public static ContainerScreenHooks getLastContainerScreenHooks() { - return (ContainerScreenHooks) lastContainerScreen; - } - -} diff --git a/src/main/java/me/shedaniel/rei/client/ScreenHelper.java b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java new file mode 100644 index 000000000..057f3a4e4 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java @@ -0,0 +1,76 @@ +package me.shedaniel.rei.client; + +import com.google.common.collect.Lists; +import me.shedaniel.rei.RoughlyEnoughItemsCore; +import me.shedaniel.rei.gui.ContainerScreenOverlay; +import me.shedaniel.rei.gui.widget.TextFieldWidget; +import me.shedaniel.rei.listeners.ContainerScreenHooks; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.event.client.ClientTickCallback; +import net.minecraft.client.gui.ContainerScreen; +import net.minecraft.client.gui.InputListener; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.gui.widget.RecipeBookButtonWidget; +import net.minecraft.item.ItemStack; + +import java.util.List; + +public class ScreenHelper implements ClientModInitializer { + + public static TextFieldWidget searchField; + public static List inventoryStacks = Lists.newArrayList(); + private static boolean overlayVisible = true; + private static ContainerScreenOverlay overlay; + private static ContainerScreen lastContainerScreen; + + public static boolean isOverlayVisible() { + return overlayVisible; + } + + public static void toggleOverlayVisible() { + overlayVisible = !overlayVisible; + } + + public static ContainerScreenOverlay getLastOverlay(boolean reset) { + if (overlay == null || reset) { + overlay = new ContainerScreenOverlay(); + overlay.onInitialized(); + } + return overlay; + } + + public static ContainerScreenOverlay getLastOverlay() { + return getLastOverlay(false); + } + + public static void disableRecipeBook(ContainerScreen lastContainerScreen, List listeners, List buttonWidgets) { + RoughlyEnoughItemsCore.LOGGER.info("%d %d", listeners.size(), buttonWidgets.size()); + for(InputListener listener : listeners) + if (listener instanceof RecipeBookButtonWidget) + listeners.remove(listener); + for(ButtonWidget buttonWidget : buttonWidgets) + if (buttonWidget instanceof RecipeBookButtonWidget) + buttonWidgets.remove(buttonWidget); + } + + public static ContainerScreen getLastContainerScreen() { + return lastContainerScreen; + } + + public static void setLastContainerScreen(ContainerScreen lastContainerScreen) { + ScreenHelper.lastContainerScreen = lastContainerScreen; + } + + public static ContainerScreenHooks getLastContainerScreenHooks() { + return (ContainerScreenHooks) lastContainerScreen; + } + + @Override + public void onInitializeClient() { + ClientTickCallback.EVENT.register(client -> { + if (lastContainerScreen != client.currentScreen && client.currentScreen instanceof ContainerScreen) + lastContainerScreen = (ContainerScreen) client.currentScreen; + }); + } + +} diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index 015d9747a..b295039a7 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -4,7 +4,7 @@ import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.client.Weather; import me.shedaniel.rei.gui.credits.CreditsScreen; import me.shedaniel.rei.gui.widget.*; @@ -80,7 +80,7 @@ public class ContainerScreenOverlay extends ScreenComponent { ClientHelper.setCheating(!ClientHelper.isCheating()); return; } - ClientHelper.openConfigWindow(GuiHelper.getLastContainerScreen()); + ClientHelper.openConfigWindow(ScreenHelper.getLastContainerScreen()); } @Override @@ -107,7 +107,7 @@ public class ContainerScreenOverlay extends ScreenComponent { widgets.add(new ButtonWidget(RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel ? window.getScaledWidth() - 50 : 10, window.getScaledHeight() - 30, 40, 20, I18n.translate("text.rei.credits")) { @Override public void onPressed(int button, double mouseX, double mouseY) { - MinecraftClient.getInstance().openScreen(new CreditsScreen(GuiHelper.getLastContainerScreen())); + MinecraftClient.getInstance().openScreen(new CreditsScreen(ScreenHelper.getLastContainerScreen())); } }); if (RoughlyEnoughItemsCore.getConfigManager().getConfig().showUtilsButtons) { @@ -160,8 +160,8 @@ public class ContainerScreenOverlay extends ScreenComponent { itemListOverlay.updateList(getItemListArea(), page, searchTerm); } }); - if (GuiHelper.searchField == null) - GuiHelper.searchField = new TextFieldWidget(0, 0, 0, 0) { + if (ScreenHelper.searchField == null) + ScreenHelper.searchField = new TextFieldWidget(0, 0, 0, 0) { @Override public boolean mouseClicked(double double_1, double double_2, int int_1) { if (isVisible() && getBounds().contains(double_1, double_2) && int_1 == 1) { @@ -171,13 +171,13 @@ public class ContainerScreenOverlay extends ScreenComponent { return super.mouseClicked(double_1, double_2, int_1); } }; - GuiHelper.searchField.setChangedListener(s -> { + ScreenHelper.searchField.setChangedListener(s -> { searchTerm = s; itemListOverlay.updateList(getItemListArea(), page, searchTerm); }); - GuiHelper.searchField.getBounds().setBounds(getTextFieldArea()); - this.widgets.add(GuiHelper.searchField); - GuiHelper.searchField.setText(searchTerm); + ScreenHelper.searchField.getBounds().setBounds(getTextFieldArea()); + this.widgets.add(ScreenHelper.searchField); + ScreenHelper.searchField.setText(searchTerm); if (RoughlyEnoughItemsCore.getConfigManager().getConfig().enableCraftableOnlyButton) this.widgets.add(new CraftableToggleButtonWidget(getCraftableToggleArea()) { @Override @@ -263,7 +263,7 @@ public class ContainerScreenOverlay extends ScreenComponent { RecipeViewingScreen widget = (RecipeViewingScreen) MinecraftClient.getInstance().currentScreen; return new Rectangle(widget.getBounds().x, window.getScaledHeight() - 22, widget.getBounds().width - widthRemoved, 18); } - return new Rectangle(GuiHelper.getLastContainerScreenHooks().rei_getContainerLeft(), window.getScaledHeight() - 22, GuiHelper.getLastContainerScreenHooks().rei_getContainerWidth() - widthRemoved, 18); + return new Rectangle(ScreenHelper.getLastContainerScreenHooks().rei_getContainerLeft(), window.getScaledHeight() - 22, ScreenHelper.getLastContainerScreenHooks().rei_getContainerWidth() - widthRemoved, 18); } private Rectangle getCraftableToggleArea() { @@ -289,8 +289,8 @@ public class ContainerScreenOverlay extends ScreenComponent { List currentStacks = ClientHelper.getInventoryItemsTypes(); if (getLeft() != lastLeft) onInitialized(); - else if (RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() && (!hasSameListContent(new LinkedList<>(GuiHelper.inventoryStacks), currentStacks) || (currentStacks.size() != GuiHelper.inventoryStacks.size()))) { - GuiHelper.inventoryStacks = ClientHelper.getInventoryItemsTypes(); + else if (RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() && (!hasSameListContent(new LinkedList<>(ScreenHelper.inventoryStacks), currentStacks) || (currentStacks.size() != ScreenHelper.inventoryStacks.size()))) { + ScreenHelper.inventoryStacks = ClientHelper.getInventoryItemsTypes(); itemListOverlay.updateList(getItemListArea(), page, searchTerm); } GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); @@ -306,15 +306,15 @@ public class ContainerScreenOverlay extends ScreenComponent { private boolean hasSameListContent(List list1, List list2) { Collections.sort(list1, (itemStack, t1) -> { - return itemStack.getDisplayName().getFormattedText().compareToIgnoreCase(t1.getDisplayName().getFormattedText()); + return ItemListOverlay.tryGetItemStackName(itemStack).compareToIgnoreCase(ItemListOverlay.tryGetItemStackName(t1)); }); Collections.sort(list2, (itemStack, t1) -> { - return itemStack.getDisplayName().getFormattedText().compareToIgnoreCase(t1.getDisplayName().getFormattedText()); + return ItemListOverlay.tryGetItemStackName(itemStack).compareToIgnoreCase(ItemListOverlay.tryGetItemStackName(t1)); }); String lastString = String.join("", list1.stream().map(itemStack -> { - return itemStack.getDisplayName().getFormattedText(); + return ItemListOverlay.tryGetItemStackName(itemStack); }).collect(Collectors.toList())), currentString = String.join("", list2.stream().map(itemStack -> { - return itemStack.getDisplayName().getFormattedText(); + return ItemListOverlay.tryGetItemStackName(itemStack); }).collect(Collectors.toList())); return lastString.equals(currentString); } @@ -324,7 +324,7 @@ public class ContainerScreenOverlay extends ScreenComponent { } public void draw(int int_1, int int_2, float float_1) { - if (!GuiHelper.isOverlayVisible()) + if (!ScreenHelper.isOverlayVisible()) return; buttonLeft.enabled = itemListOverlay.getWidgets().size() > 0; buttonRight.enabled = itemListOverlay.getWidgets().size() > 0; @@ -337,7 +337,7 @@ public class ContainerScreenOverlay extends ScreenComponent { private Rectangle calculateBoundary() { if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel) { - int startX = GuiHelper.getLastContainerScreenHooks().rei_getContainerLeft() + GuiHelper.getLastContainerScreenHooks().rei_getContainerWidth() + 10; + int startX = ScreenHelper.getLastContainerScreenHooks().rei_getContainerLeft() + ScreenHelper.getLastContainerScreenHooks().rei_getContainerWidth() + 10; int width = window.getScaledWidth() - startX; if (MinecraftClient.getInstance().currentScreen instanceof RecipeViewingScreen) { RecipeViewingScreen widget = (RecipeViewingScreen) MinecraftClient.getInstance().currentScreen; @@ -355,8 +355,8 @@ public class ContainerScreenOverlay extends ScreenComponent { return widget.getBounds().x; } if (MinecraftClient.getInstance().player.getRecipeBook().isGuiOpen()) - return GuiHelper.getLastContainerScreenHooks().rei_getContainerLeft() - 147 - 30; - return GuiHelper.getLastContainerScreenHooks().rei_getContainerLeft(); + return ScreenHelper.getLastContainerScreenHooks().rei_getContainerLeft() - 147 - 30; + return ScreenHelper.getLastContainerScreenHooks().rei_getContainerLeft(); } private int getTotalPage() { @@ -365,7 +365,7 @@ public class ContainerScreenOverlay extends ScreenComponent { @Override public boolean mouseScrolled(double amount) { - if (!GuiHelper.isOverlayVisible()) + if (!ScreenHelper.isOverlayVisible()) return false; if (rectangle.contains(ClientHelper.getMouseLocation())) { if (amount > 0 && buttonLeft.enabled) @@ -388,10 +388,10 @@ public class ContainerScreenOverlay extends ScreenComponent { if (listener.keyPressed(int_1, int_2, int_3)) return true; if (ClientHelper.HIDE.matchesKey(int_1, int_2)) { - GuiHelper.toggleOverlayVisible(); + ScreenHelper.toggleOverlayVisible(); return true; } - if (!GuiHelper.isOverlayVisible()) + if (!ScreenHelper.isOverlayVisible()) return false; Point point = ClientHelper.getMouseLocation(); ItemStack itemStack = null; @@ -402,27 +402,27 @@ public class ContainerScreenOverlay extends ScreenComponent { } if (itemStack == null && MinecraftClient.getInstance().currentScreen instanceof RecipeViewingScreen) { RecipeViewingScreen recipeViewingWidget = (RecipeViewingScreen) MinecraftClient.getInstance().currentScreen; - for(InputListener listener : recipeViewingWidget.getInputListeners()) - if (listener instanceof ItemSlotWidget && ((HighlightableWidget) listener).isHighlighted(point.x, point.y)) { - itemStack = ((ItemSlotWidget) listener).getCurrentStack(); + for(IWidget widget : recipeViewingWidget.getWidgets()) + if (widget instanceof ItemSlotWidget && ((HighlightableWidget) widget).isHighlighted(point.x, point.y)) { + itemStack = ((ItemSlotWidget) widget).getCurrentStack(); break; } } if (itemStack == null && MinecraftClient.getInstance().currentScreen instanceof ContainerScreen) - if (GuiHelper.getLastContainerScreenHooks().rei_getHoveredSlot() != null) - itemStack = GuiHelper.getLastContainerScreenHooks().rei_getHoveredSlot().getStack(); + if (ScreenHelper.getLastContainerScreenHooks().rei_getHoveredSlot() != null) + itemStack = ScreenHelper.getLastContainerScreenHooks().rei_getHoveredSlot().getStack(); if (itemStack != null && !itemStack.isEmpty()) { if (ClientHelper.RECIPE.matchesKey(int_1, int_2)) - return ClientHelper.executeRecipeKeyBind(this, itemStack); + return ClientHelper.executeRecipeKeyBind(itemStack); else if (ClientHelper.USAGE.matchesKey(int_1, int_2)) - return ClientHelper.executeUsageKeyBind(this, itemStack); + return ClientHelper.executeUsageKeyBind(itemStack); } return false; } @Override public boolean charTyped(char char_1, int int_1) { - if (!GuiHelper.isOverlayVisible()) + if (!ScreenHelper.isOverlayVisible()) return false; for(InputListener listener : getInputListeners()) if (listener.charTyped(char_1, int_1)) @@ -437,7 +437,7 @@ public class ContainerScreenOverlay extends ScreenComponent { @Override public boolean mouseClicked(double double_1, double double_2, int int_1) { - if (!GuiHelper.isOverlayVisible()) + if (!ScreenHelper.isOverlayVisible()) return false; return super.mouseClicked(double_1, double_2, int_1); } diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index 2948870f7..32a9455a4 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -5,7 +5,7 @@ import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.*; import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.gui.widget.*; import net.minecraft.client.MinecraftClient; import net.minecraft.client.audio.PositionedSoundInstance; @@ -79,8 +79,8 @@ public class RecipeViewingScreen extends Screen { return true; } if ((int_1 == 256 || this.client.options.keyInventory.matchesKey(int_1, int_2)) && this.doesEscapeKeyClose()) { - MinecraftClient.getInstance().openScreen(GuiHelper.getLastContainerScreen()); - GuiHelper.getLastOverlay().onInitialized(); + MinecraftClient.getInstance().openScreen(ScreenHelper.getLastContainerScreen()); + ScreenHelper.getLastOverlay().onInitialized(); return true; } if (choosePageActivated) { @@ -103,7 +103,7 @@ public class RecipeViewingScreen extends Screen { public void onInitialized() { super.onInitialized(); this.tabs.clear(); - this.widgets.clear(); + this.widgets = Lists.newLinkedList(); this.largestWidth = window.getScaledWidth() - 100; this.largestHeight = window.getScaledHeight() - 40; this.guiWidth = MathHelper.clamp(getCurrentDisplayed().stream().map(display -> selectedCategory.getDisplayWidth(display)).max(Integer::compareTo).orElse(150) + 30, 0, largestWidth); @@ -120,6 +120,7 @@ public class RecipeViewingScreen extends Screen { currentCategoryIndex = categories.size() - 1; selectedCategory = categories.get(currentCategoryIndex); categoryPages = MathHelper.floor(currentCategoryIndex / 6d); + page = 0; RecipeViewingScreen.this.onInitialized(); } }); @@ -132,6 +133,7 @@ public class RecipeViewingScreen extends Screen { currentCategoryIndex = 0; selectedCategory = categories.get(currentCategoryIndex); categoryPages = MathHelper.floor(currentCategoryIndex / 6d); + page = 0; RecipeViewingScreen.this.onInitialized(); } }); @@ -165,13 +167,13 @@ public class RecipeViewingScreen extends Screen { this.text = selectedCategory.getCategoryName(); super.draw(mouseX, mouseY, partialTicks); if (isHighlighted(mouseX, mouseY)) - GuiHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate("text.rei.view_all_categories").split("\n"))); + ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate("text.rei.view_all_categories").split("\n"))); } @Override public void onLabelClicked() { MinecraftClient.getInstance().getSoundLoader().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); - ClientHelper.executeViewAllRecipesKeyBind(GuiHelper.getLastOverlay()); + ClientHelper.executeViewAllRecipesKeyBind(); } }); widgets.add(new ClickableLabelWidget((int) bounds.getCenterX(), (int) bounds.getY() + 23, "") { @@ -180,7 +182,7 @@ public class RecipeViewingScreen extends Screen { this.text = String.format("%d/%d", page + 1, getTotalPages(selectedCategory)); super.draw(mouseX, mouseY, partialTicks); if (isHighlighted(mouseX, mouseY)) - GuiHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate("text.rei.choose_page").split("\n"))); + ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate("text.rei.choose_page").split("\n"))); } @Override @@ -213,14 +215,12 @@ public class RecipeViewingScreen extends Screen { } } Optional supplier = RecipeHelper.getInstance().getSpeedCraftButtonArea(selectedCategory); - final SpeedCraftFunctional functional = getSpeedCraftFunctionalByCategory(GuiHelper.getLastContainerScreen(), selectedCategory); + final SpeedCraftFunctional functional = getSpeedCraftFunctionalByCategory(ScreenHelper.getLastContainerScreen(), selectedCategory); int recipeHeight = selectedCategory.getDisplayHeight(); List currentDisplayed = getCurrentDisplayed(); for(int i = 0; i < currentDisplayed.size(); i++) { int finalI = i; - final Supplier displaySupplier = () -> { - return currentDisplayed.get(finalI); - }; + final Supplier displaySupplier = () -> currentDisplayed.get(finalI); int displayWidth = selectedCategory.getDisplayWidth(displaySupplier.get()); final Rectangle displayBounds = new Rectangle((int) getBounds().getCenterX() - displayWidth / 2, getBounds().y + 40 + recipeHeight * i + 7 * i, displayWidth, recipeHeight); widgets.addAll(selectedCategory.setupDisplay(displaySupplier, displayBounds)); @@ -232,12 +232,16 @@ public class RecipeViewingScreen extends Screen { else recipeChoosePageWidget = null; - GuiHelper.getLastOverlay().onInitialized(); + ScreenHelper.getLastOverlay().onInitialized(); listeners.addAll(tabs); - listeners.add(GuiHelper.getLastOverlay()); + listeners.add(ScreenHelper.getLastOverlay()); listeners.addAll(widgets); } + public List getWidgets() { + return widgets; + } + public List getCurrentDisplayed() { List list = Lists.newArrayList(); int recipesPerPage = getRecipesPerPage(); @@ -293,7 +297,7 @@ public class RecipeViewingScreen extends Screen { GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GuiLighting.disable(); tabs.stream().filter(TabWidget::isSelected).forEach(tabWidget -> tabWidget.draw(mouseX, mouseY, delta)); - GuiHelper.getLastOverlay().drawOverlay(mouseX, mouseY, delta); + ScreenHelper.getLastOverlay().drawOverlay(mouseX, mouseY, delta); if (choosePageActivated) { zOffset = 500.0f; this.drawGradientRect(0, 0, this.screenWidth, this.screenHeight, -1072689136, -804253680); diff --git a/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java b/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java index 01f40f9aa..32624584a 100644 --- a/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java @@ -3,7 +3,7 @@ package me.shedaniel.rei.gui.config; import com.google.common.collect.Lists; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.client.ItemListOrdering; import me.shedaniel.rei.gui.widget.QueuedTooltip; import me.shedaniel.rei.gui.widget.TextFieldWidget; @@ -35,7 +35,7 @@ public class ConfigScreen extends Screen { public boolean keyPressed(int int_1, int int_2, int int_3) { if (int_1 == 256 && this.doesEscapeKeyClose()) { MinecraftClient.getInstance().openScreen(parent); - GuiHelper.getLastOverlay().onInitialized(); + ScreenHelper.getLastOverlay().onInitialized(); return true; } else { return super.keyPressed(int_1, int_2, int_3); @@ -340,7 +340,7 @@ public class ConfigScreen extends Screen { e.printStackTrace(); } ConfigScreen.this.client.openScreen(parent); - GuiHelper.getLastOverlay().onInitialized(); + ScreenHelper.getLastOverlay().onInitialized(); } }); super.onInitialized(); 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 7f727ae4c..40e4aed80 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java @@ -1,6 +1,6 @@ package me.shedaniel.rei.gui.credits; -import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.client.ScreenHelper; import net.minecraft.client.gui.ContainerScreen; import net.minecraft.client.gui.InputListener; import net.minecraft.client.gui.Screen; @@ -21,7 +21,7 @@ public class CreditsScreen extends Screen { public boolean keyPressed(int int_1, int int_2, int int_3) { if (int_1 == 256 && this.doesEscapeKeyClose()) { this.client.openScreen(parent); - GuiHelper.getLastOverlay().onInitialized(); + ScreenHelper.getLastOverlay().onInitialized(); return true; } return super.keyPressed(int_1, int_2, int_3); @@ -38,7 +38,7 @@ public class CreditsScreen extends Screen { @Override public void onPressed(double double_1, double double_2) { CreditsScreen.this.client.openScreen(parent); - GuiHelper.getLastOverlay().onInitialized(); + ScreenHelper.getLastOverlay().onInitialized(); } }); } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java index 8006d5846..dbd44bc9e 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java @@ -3,7 +3,7 @@ package me.shedaniel.rei.gui.widget; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.client.ScreenHelper; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.GuiLighting; @@ -48,7 +48,7 @@ public abstract class CraftableToggleButtonWidget extends ButtonWidget { } private void drawTooltip() { - GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate(RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() ? "text.rei.showing_craftable" : "text.rei.showing_all")))); + ScreenHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate(RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() ? "text.rei.showing_craftable" : "text.rei.showing_all")))); } } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java index 129ef1051..4d5916a15 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java @@ -4,16 +4,18 @@ import com.google.common.collect.Lists; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.RecipeHelper; import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; import me.shedaniel.rei.client.ItemListOrdering; +import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.client.SearchArgument; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.resource.language.I18n; +import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.registry.Registry; import org.apache.commons.lang3.StringUtils; import java.awt.*; @@ -24,6 +26,7 @@ import java.util.stream.Stream; public class ItemListOverlay extends DrawableHelper implements IWidget { + private static List searchBlacklisted = Lists.newArrayList(); private List widgets; private int width, height, page; private Rectangle rectangle, listArea; @@ -36,6 +39,33 @@ public class ItemListOverlay extends DrawableHelper implements IWidget { this.page = page; } + public static List tryGetItemStackToolTip(ItemStack itemStack) { + if (!searchBlacklisted.contains(itemStack.getItem())) + try { + return MinecraftClient.getInstance().currentScreen.getStackTooltip(itemStack); + } catch (Throwable e) { + e.printStackTrace(); + searchBlacklisted.add(itemStack.getItem()); + } + return Collections.singletonList(tryGetItemStackName(itemStack)); + } + + public static String tryGetItemStackName(ItemStack stack) { + if (!searchBlacklisted.contains(stack.getItem())) + try { + return stack.getDisplayName().getFormattedText(); + } catch (Throwable e) { + e.printStackTrace(); + searchBlacklisted.add(stack.getItem()); + } + try { + return I18n.translate("item." + Registry.ITEM.getId(stack.getItem()).toString().replace(":", ".")); + } catch (Throwable e) { + e.printStackTrace(); + } + return "ERROR"; + } + public int getTotalSlotsPerPage() { return width * height; } @@ -45,7 +75,7 @@ public class ItemListOverlay extends DrawableHelper implements IWidget { widgets.forEach(widget -> widget.draw(int_1, int_2, float_1)); ClientPlayerEntity player = MinecraftClient.getInstance().player; if (rectangle.contains(ClientHelper.getMouseLocation()) && ClientHelper.isCheating() && !player.inventory.getCursorStack().isEmpty() && MinecraftClient.getInstance().isInSingleplayer()) - GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate("text.rei.delete_items")))); + ScreenHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate("text.rei.delete_items")))); } public List getWidgets() { @@ -55,7 +85,7 @@ public class ItemListOverlay extends DrawableHelper implements IWidget { public void updateList(Rectangle bounds, int page, String searchTerm) { this.rectangle = bounds; this.widgets = Lists.newLinkedList(); - currentDisplayed = processSearchTerm(searchTerm, RoughlyEnoughItemsCore.getItemRegisterer().getItemList(), GuiHelper.inventoryStacks); + currentDisplayed = processSearchTerm(searchTerm, RoughlyEnoughItemsCore.getItemRegisterer().getItemList(), ScreenHelper.inventoryStacks); this.page = page; calculateListSize(rectangle); double startX = rectangle.getCenterX() - width * 9; @@ -83,9 +113,9 @@ public class ItemListOverlay extends DrawableHelper implements IWidget { return ClientHelper.tryCheatingStack(cheatedStack); } } else if (button == 0) - return ClientHelper.executeRecipeKeyBind(GuiHelper.getLastOverlay(), getCurrentStack().copy()); + return ClientHelper.executeRecipeKeyBind(getCurrentStack().copy()); else if (button == 1) - return ClientHelper.executeUsageKeyBind(GuiHelper.getLastOverlay(), getCurrentStack().copy()); + return ClientHelper.executeUsageKeyBind(getCurrentStack().copy()); } return false; } @@ -107,7 +137,7 @@ public class ItemListOverlay extends DrawableHelper implements IWidget { if (ordering != ItemListOrdering.registry) Collections.sort(os, (itemStack, t1) -> { if (ordering.equals(ItemListOrdering.name)) - return itemStack.getDisplayName().getFormattedText().compareToIgnoreCase(t1.getDisplayName().getFormattedText()); + return tryGetItemStackName(itemStack).compareToIgnoreCase(tryGetItemStackName(t1)); if (ordering.equals(ItemListOrdering.item_groups)) return itemGroups.indexOf(itemStack.getItem().getItemGroup()) - itemGroups.indexOf(t1.getItem().getItemGroup()); return 0; @@ -154,9 +184,9 @@ public class ItemListOverlay extends DrawableHelper implements IWidget { private boolean filterItem(ItemStack itemStack, List arguments) { String mod = ClientHelper.getModFromItemStack(itemStack); - List toolTipsList = MinecraftClient.getInstance().currentScreen.getStackTooltip(itemStack); + List toolTipsList = tryGetItemStackToolTip(itemStack); String toolTipsMixed = toolTipsList.stream().skip(1).collect(Collectors.joining()).toLowerCase(); - String allMixed = Stream.of(itemStack.getDisplayName().getFormattedText(), toolTipsMixed).collect(Collectors.joining()).toLowerCase(); + String allMixed = Stream.of(tryGetItemStackName(itemStack), toolTipsMixed).collect(Collectors.joining()).toLowerCase(); for(SearchArgument searchArgument : arguments.stream().filter(searchArgument -> !searchArgument.isInclude()).collect(Collectors.toList())) { if (searchArgument.getArgumentType().equals(SearchArgument.ArgumentType.MOD)) if (mod.toLowerCase().contains(searchArgument.getText().toLowerCase())) diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java index 29cde759d..d68740d1f 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java @@ -3,7 +3,7 @@ package me.shedaniel.rei.gui.widget; import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.client.ScreenHelper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.render.GuiLighting; @@ -18,7 +18,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; -import java.util.stream.Collectors; public class ItemSlotWidget extends DrawableHelper implements HighlightableWidget { @@ -89,20 +88,17 @@ public class ItemSlotWidget extends DrawableHelper implements HighlightableWidge protected void drawToolTip(ItemStack itemStack) { List toolTip = getTooltip(itemStack); - GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), toolTip)); + ScreenHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), toolTip)); } protected List getTooltip(ItemStack itemStack) { final String modString = "§9§o" + ClientHelper.getModFromItemStack(itemStack); MinecraftClient mc = MinecraftClient.getInstance(); - List toolTip = Lists.newArrayList(); - try { - toolTip = MinecraftClient.getInstance().currentScreen.getStackTooltip(itemStack).stream().filter(s -> !s.equals(modString)).collect(Collectors.toList()); - } catch (Exception e) { - e.printStackTrace(); - toolTip.add(itemStack.getDisplayName().getFormattedText()); - } + List toolTip = Lists.newArrayList(ItemListOverlay.tryGetItemStackToolTip(itemStack)); toolTip.addAll(getExtraToolTips(itemStack)); + for(String s : Lists.newArrayList(toolTip)) + if (s.equalsIgnoreCase(modString)) + toolTip.remove(s); toolTip.add(modString); return toolTip; } @@ -135,10 +131,11 @@ public class ItemSlotWidget extends DrawableHelper implements HighlightableWidge if (!clickToMoreRecipes) return false; if (getBounds().contains(mouseX, mouseY)) { + System.out.println(ItemListOverlay.tryGetItemStackName(getCurrentStack())); if (button == 0) - return ClientHelper.executeRecipeKeyBind(GuiHelper.getLastOverlay(), getCurrentStack().copy()); + return ClientHelper.executeRecipeKeyBind(getCurrentStack().copy()); else if (button == 1) - return ClientHelper.executeUsageKeyBind(GuiHelper.getLastOverlay(), getCurrentStack().copy()); + return ClientHelper.executeUsageKeyBind(getCurrentStack().copy()); } return false; } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java index 0a2e9ae0f..eb41d51c9 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java @@ -3,7 +3,7 @@ package me.shedaniel.rei.gui.widget; import me.shedaniel.rei.api.RecipeDisplay; import me.shedaniel.rei.api.SpeedCraftFunctional; import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.client.ScreenHelper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.resource.language.I18n; @@ -24,20 +24,20 @@ public class SpeedCraftingButtonWidget extends ButtonWidget { @Override public void onPressed(int button, double mouseX, double mouseY) { - MinecraftClient.getInstance().openScreen(GuiHelper.getLastContainerScreen()); - GuiHelper.getLastOverlay().onInitialized(); - functional.performAutoCraft(GuiHelper.getLastContainerScreen(), displaySupplier.get()); + MinecraftClient.getInstance().openScreen(ScreenHelper.getLastContainerScreen()); + ScreenHelper.getLastOverlay().onInitialized(); + functional.performAutoCraft(ScreenHelper.getLastContainerScreen(), displaySupplier.get()); } @Override public void draw(int mouseX, int mouseY, float partialTicks) { - this.enabled = functional != null && functional.acceptRecipe(GuiHelper.getLastContainerScreen(), displaySupplier.get()); + this.enabled = functional != null && functional.acceptRecipe(ScreenHelper.getLastContainerScreen(), displaySupplier.get()); super.draw(mouseX, mouseY, partialTicks); if (getBounds().contains(mouseX, mouseY)) if (enabled) - GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate("text.speed_craft.move_items")))); + ScreenHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate("text.speed_craft.move_items")))); else - GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate("text.speed_craft.failed_move_items")))); + ScreenHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate("text.speed_craft.failed_move_items")))); } } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java index 6cca96b24..071a4e75a 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java @@ -3,7 +3,7 @@ package me.shedaniel.rei.gui.widget; import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.gui.RecipeViewingScreen; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawableHelper; @@ -91,7 +91,7 @@ public class TabWidget extends DrawableHelper implements HighlightableWidget { } private void drawTooltip() { - GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(categoryName))); + ScreenHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(categoryName))); } @Override diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java index b0fed91c7..2147f0f09 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java @@ -1,16 +1,14 @@ package me.shedaniel.rei.mixin; -import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.TabGetter; import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.gui.ContainerScreenOverlay; import me.shedaniel.rei.listeners.ContainerScreenHooks; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.ContainerScreen; import net.minecraft.client.gui.Screen; import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen; -import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.container.Slot; import net.minecraft.item.ItemGroup; import org.spongepowered.asm.mixin.Mixin; @@ -61,8 +59,8 @@ public class MixinContainerScreen extends Screen implements ContainerScreenHooks if (tabGetter.rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex()) return; } - GuiHelper.setLastContainerScreen((ContainerScreen) (Object) this); - this.listeners.add(GuiHelper.getLastOverlay(true)); + ScreenHelper.setLastContainerScreen((ContainerScreen) (Object) this); + this.listeners.add(ScreenHelper.getLastOverlay(true)); } @Inject(method = "draw(IIF)V", at = @At("RETURN")) @@ -72,7 +70,7 @@ public class MixinContainerScreen extends Screen implements ContainerScreenHooks if (tabGetter.rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex()) return; } - GuiHelper.getLastOverlay().drawOverlay(int_1, int_2, float_1); + ScreenHelper.getLastOverlay().drawOverlay(int_1, int_2, float_1); } @Override @@ -87,8 +85,8 @@ public class MixinContainerScreen extends Screen implements ContainerScreenHooks if (tabGetter.rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex()) return super.mouseScrolled(double_1); } - ContainerScreenOverlay overlay = GuiHelper.getLastOverlay(); - if (GuiHelper.isOverlayVisible() && overlay.getRectangle().contains(ClientHelper.getMouseLocation())) + ContainerScreenOverlay overlay = ScreenHelper.getLastOverlay(); + if (ScreenHelper.isOverlayVisible() && overlay.getRectangle().contains(ClientHelper.getMouseLocation())) if (overlay.mouseScrolled(double_1)) return true; return super.mouseScrolled(double_1); @@ -101,7 +99,7 @@ public class MixinContainerScreen extends Screen implements ContainerScreenHooks if (tabGetter.rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex()) return; } - if (GuiHelper.getLastOverlay().keyPressed(int_1, int_2, int_3)) { + if (ScreenHelper.getLastOverlay().keyPressed(int_1, int_2, int_3)) { ci.setReturnValue(true); ci.cancel(); } diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java index 94a6302a5..51eb3947b 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java @@ -1,7 +1,7 @@ package me.shedaniel.rei.mixin; import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.client.ScreenHelper; import net.minecraft.client.gui.ingame.AbstractPlayerInventoryScreen; import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen; import net.minecraft.entity.player.PlayerInventory; @@ -31,7 +31,7 @@ public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerI @Inject(method = "mouseScrolled", at = @At("HEAD"), cancellable = true) public void mouseScrolled(double amount, CallbackInfoReturnable ci) { if (!doRenderScrollBar() && selectedTab == ItemGroup.INVENTORY.getIndex()) - if (GuiHelper.isOverlayVisible() && GuiHelper.getLastOverlay().getRectangle().contains(ClientHelper.getMouseLocation()) && GuiHelper.getLastOverlay().mouseScrolled(amount)) { + if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().getRectangle().contains(ClientHelper.getMouseLocation()) && ScreenHelper.getLastOverlay().mouseScrolled(amount)) { ci.setReturnValue(true); ci.cancel(); } @@ -40,7 +40,7 @@ public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerI @Inject(method = "keyPressed", at = @At("HEAD"), cancellable = true) public void keyPressed(int int_1, int int_2, int int_3, CallbackInfoReturnable ci) { if (selectedTab == ItemGroup.INVENTORY.getIndex()) - if (GuiHelper.getLastOverlay().keyPressed(int_1, int_2, int_3)) { + if (ScreenHelper.getLastOverlay().keyPressed(int_1, int_2, int_3)) { ci.setReturnValue(true); ci.cancel(); } @@ -49,7 +49,7 @@ public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerI @Inject(method = "charTyped", at = @At("HEAD"), cancellable = true) public void charTyped(char char_1, int int_1, CallbackInfoReturnable ci) { if (!this.field_2888 && selectedTab == ItemGroup.INVENTORY.getIndex()) - if (GuiHelper.isOverlayVisible() && GuiHelper.getLastOverlay().charTyped(char_1, int_1)) { + if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().charTyped(char_1, int_1)) { ci.setReturnValue(true); ci.cancel(); } @@ -58,7 +58,7 @@ public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerI @Inject(method = "mouseClicked", at = @At("HEAD"), cancellable = true) public void mouseClicked(double i, double j, int k, CallbackInfoReturnable ci) { if (selectedTab == ItemGroup.INVENTORY.getIndex()) - if (GuiHelper.isOverlayVisible() && GuiHelper.getLastOverlay().mouseClicked(i, j, k)) { + if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().mouseClicked(i, j, k)) { ci.setReturnValue(true); ci.cancel(); } -- cgit