aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me')
-rw-r--r--src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java3
-rw-r--r--src/main/java/me/shedaniel/rei/client/ClientHelper.java8
-rw-r--r--src/main/java/me/shedaniel/rei/client/ScreenHelper.java (renamed from src/main/java/me/shedaniel/rei/client/GuiHelper.java)14
-rw-r--r--src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java64
-rw-r--r--src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java32
-rw-r--r--src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java6
-rw-r--r--src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java6
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java4
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java46
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java21
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java14
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java4
-rw-r--r--src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java16
-rw-r--r--src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java10
14 files changed, 144 insertions, 104 deletions
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<RecipeCategory, List<RecipeDisplay>> 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<RecipeCategory, List<RecipeDisplay>> 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<RecipeCategory, List<RecipeDisplay>> 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/ScreenHelper.java
index 329753add..057f3a4e4 100644
--- a/src/main/java/me/shedaniel/rei/client/GuiHelper.java
+++ b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java
@@ -5,6 +5,8 @@ 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;
@@ -13,7 +15,7 @@ import net.minecraft.item.ItemStack;
import java.util.List;
-public class GuiHelper {
+public class ScreenHelper implements ClientModInitializer {
public static TextFieldWidget searchField;
public static List<ItemStack> inventoryStacks = Lists.newArrayList();
@@ -56,11 +58,19 @@ public class GuiHelper {
}
public static void setLastContainerScreen(ContainerScreen lastContainerScreen) {
- GuiHelper.lastContainerScreen = 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<ItemStack> 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<ItemStack> list1, List<ItemStack> 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<ButtonAreaSupplier> supplier = RecipeHelper.getInstance().getSpeedCraftButtonArea(selectedCategory);
- final SpeedCraftFunctional functional = getSpeedCraftFunctionalByCategory(GuiHelper.getLastContainerScreen(), selectedCategory);
+ final SpeedCraftFunctional functional = getSpeedCraftFunctionalByCategory(ScreenHelper.getLastContainerScreen(), selectedCategory);
int recipeHeight = selectedCategory.getDisplayHeight();
List<RecipeDisplay> currentDisplayed = getCurrentDisplayed();
for(int i = 0; i < currentDisplayed.size(); i++) {
int finalI = i;
- final Supplier<RecipeDisplay> displaySupplier = () -> {
- return currentDisplayed.get(finalI);
- };
+ final Supplier<RecipeDisplay> 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<IWidget> getWidgets() {
+ return widgets;
+ }
+
public List<RecipeDisplay> getCurrentDisplayed() {
List<RecipeDisplay> 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<Item> searchBlacklisted = Lists.newArrayList();
private List<IWidget> 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<String> 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<IWidget> 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<SearchArgument> arguments) {
String mod = ClientHelper.getModFromItemStack(item