From 2405e96d889341b82d00a9103e688d54713f2ce3 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 16 Mar 2019 10:30:26 +0800 Subject: Better Widgets --- .../java/me/shedaniel/rei/api/RecipeCategory.java | 4 +- .../shedaniel/rei/gui/ContainerScreenOverlay.java | 22 ++-- .../me/shedaniel/rei/gui/RecipeViewingScreen.java | 96 +++++++++-------- .../me/shedaniel/rei/gui/config/ConfigEntry.java | 16 +-- .../me/shedaniel/rei/gui/config/ConfigScreen.java | 88 ++++++---------- .../shedaniel/rei/gui/credits/CreditsScreen.java | 24 ++--- .../me/shedaniel/rei/gui/widget/ButtonWidget.java | 65 ++++++++---- .../rei/gui/widget/ClickableLabelWidget.java | 43 ++++++-- .../shedaniel/rei/gui/widget/DraggableWidget.java | 11 +- .../rei/gui/widget/HighlightableWidget.java | 10 +- .../java/me/shedaniel/rei/gui/widget/IWidget.java | 40 -------- .../shedaniel/rei/gui/widget/ItemListOverlay.java | 15 ++- .../shedaniel/rei/gui/widget/ItemSlotWidget.java | 19 ++-- .../me/shedaniel/rei/gui/widget/LabelWidget.java | 17 +++- .../shedaniel/rei/gui/widget/RecipeBaseWidget.java | 8 +- .../rei/gui/widget/RecipeChoosePageWidget.java | 17 ++-- .../rei/gui/widget/RecipePageLabelWidget.java | 113 --------------------- .../rei/gui/widget/SpeedCraftingButtonWidget.java | 2 +- .../me/shedaniel/rei/gui/widget/TabWidget.java | 9 +- .../shedaniel/rei/gui/widget/TextFieldWidget.java | 32 +++--- .../java/me/shedaniel/rei/gui/widget/Widget.java | 9 ++ .../rei/mixin/MixinCraftingTableScreen.java | 4 +- .../rei/mixin/MixinPlayerInventoryScreen.java | 4 +- .../rei/plugin/DefaultBlastingCategory.java | 6 +- .../rei/plugin/DefaultBrewingCategory.java | 6 +- .../rei/plugin/DefaultCampfireCategory.java | 6 +- .../rei/plugin/DefaultCraftingCategory.java | 6 +- .../rei/plugin/DefaultSmeltingCategory.java | 6 +- .../rei/plugin/DefaultSmokingCategory.java | 6 +- .../rei/plugin/DefaultStoneCuttingCategory.java | 6 +- .../java/me/shedaniel/rei/utils/ClothRegistry.java | 11 -- src/main/resources/fabric.mod.json | 2 +- 32 files changed, 293 insertions(+), 430 deletions(-) delete mode 100644 src/main/java/me/shedaniel/rei/gui/widget/IWidget.java delete mode 100644 src/main/java/me/shedaniel/rei/gui/widget/RecipePageLabelWidget.java create mode 100644 src/main/java/me/shedaniel/rei/gui/widget/Widget.java (limited to 'src/main') diff --git a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java index 79a9a0b7d..4bc4c6e0d 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java @@ -1,7 +1,7 @@ package me.shedaniel.rei.api; import me.shedaniel.rei.gui.RecipeViewingScreen; -import me.shedaniel.rei.gui.widget.IWidget; +import me.shedaniel.rei.gui.widget.Widget; import me.shedaniel.rei.gui.widget.RecipeBaseWidget; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.item.ItemStack; @@ -21,7 +21,7 @@ public interface RecipeCategory { String getCategoryName(); - default List setupDisplay(Supplier recipeDisplaySupplier, Rectangle bounds) { + default List setupDisplay(Supplier recipeDisplaySupplier, Rectangle bounds) { return Collections.singletonList(new RecipeBaseWidget(bounds)); } diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index e50b7d9c9..b79dbf4c6 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -39,7 +39,7 @@ public class ContainerScreenOverlay extends ScreenComponent { public static String searchTerm = ""; private static int page = 0; private static ItemListOverlay itemListOverlay; - private final List widgets = Lists.newArrayList(); + private final List widgets = Lists.newArrayList(); private Rectangle rectangle; private Window window; private ButtonWidget buttonLeft, buttonRight; @@ -56,7 +56,7 @@ public class ContainerScreenOverlay extends ScreenComponent { widgets.add(buttonLeft = new ButtonWidget(rectangle.x, rectangle.y + 5, 16, 16, new TranslatableTextComponent("text.rei.left_arrow")) { @Override - public void onPressed(int button, double mouseX, double mouseY) { + public void onPressed() { page--; if (page < 0) page = getTotalPage(); @@ -65,7 +65,7 @@ public class ContainerScreenOverlay extends ScreenComponent { }); widgets.add(buttonRight = new ButtonWidget(rectangle.x + rectangle.width - 18, rectangle.y + 5, 16, 16, new TranslatableTextComponent("text.rei.right_arrow")) { @Override - public void onPressed(int button, double mouseX, double mouseY) { + public void onPressed() { page++; if (page > getTotalPage()) page = 0; @@ -75,7 +75,7 @@ public class ContainerScreenOverlay extends ScreenComponent { page = MathHelper.clamp(page, 0, getTotalPage()); widgets.add(new ButtonWidget(RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel ? window.getScaledWidth() - 30 : 10, 10, 20, 20, "") { @Override - public void onPressed(int button, double mouseX, double mouseY) { + public void onPressed() { if (Screen.isShiftPressed()) { ClientHelper.setCheating(!ClientHelper.isCheating()); return; @@ -106,14 +106,14 @@ public class ContainerScreenOverlay extends ScreenComponent { if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().disableCreditsButton) 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) { + public void onPressed() { MinecraftClient.getInstance().openScreen(new CreditsScreen(ScreenHelper.getLastContainerScreen())); } }); if (RoughlyEnoughItemsCore.getConfigManager().getConfig().showUtilsButtons) { widgets.add(new ButtonWidget(RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel ? window.getScaledWidth() - 55 : 35, 10, 20, 20, "") { @Override - public void onPressed(int button, double mouseX, double mouseY) { + public void onPressed() { MinecraftClient.getInstance().player.sendChatMessage(RoughlyEnoughItemsCore.getConfigManager().getConfig().gamemodeCommand.replaceAll("\\{gamemode}", getNextGameMode().getName())); } @@ -127,7 +127,7 @@ public class ContainerScreenOverlay extends ScreenComponent { }); widgets.add(new ButtonWidget(RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel ? window.getScaledWidth() - 80 : 60, 10, 20, 20, "") { @Override - public void onPressed(int button, double mouseX, double mouseY) { + public void onPressed() { MinecraftClient.getInstance().player.sendChatMessage(RoughlyEnoughItemsCore.getConfigManager().getConfig().weatherCommand.replaceAll("\\{weather}", getNextWeather().getName().toLowerCase())); } @@ -181,7 +181,7 @@ public class ContainerScreenOverlay extends ScreenComponent { if (RoughlyEnoughItemsCore.getConfigManager().getConfig().enableCraftableOnlyButton) this.widgets.add(new CraftableToggleButtonWidget(getCraftableToggleArea()) { @Override - public void onPressed(int button, double mouseX, double mouseY) { + public void onPressed() { RoughlyEnoughItemsCore.getConfigManager().toggleCraftableOnly(); itemListOverlay.updateList(getItemListArea(), page, searchTerm); } @@ -369,14 +369,14 @@ public class ContainerScreenOverlay extends ScreenComponent { return false; if (rectangle.contains(ClientHelper.getMouseLocation())) { if (amount > 0 && buttonLeft.enabled) - buttonLeft.onPressed(0, 0, 0); + buttonLeft.onPressed(); else if (amount < 0 && buttonRight.enabled) - buttonRight.onPressed(0, 0, 0); + buttonRight.onPressed(); else return false; return true; } - for(IWidget widget : widgets) + for(Widget widget : widgets) if (widget.mouseScrolled(i, j, amount)) return true; return false; diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index 68fde8422..cbfafb1af 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -32,7 +32,7 @@ public class RecipeViewingScreen extends Screen { public static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); public static final Color SUB_COLOR = new Color(159, 159, 159); private static final Identifier CREATIVE_INVENTORY_TABS = new Identifier("textures/gui/container/creative_inventory/tabs.png"); - private final List widgets; + private final List widgets; private final List tabs; private final Map> categoriesMap; private final List categories; @@ -83,14 +83,18 @@ public class RecipeViewingScreen extends Screen { ScreenHelper.getLastOverlay().onInitialized(); return true; } + if (int_1 == 258) { + if (isShiftPressed()) + this.method_19354(); + else + this.focusNext(); + return true; + } if (choosePageActivated) { if (recipeChoosePageWidget.keyPressed(int_1, int_2, int_3)) return true; return false; } - for(InputListener listener : listeners) - if (listener.keyPressed(int_1, int_2, int_3)) - return true; return super.keyPressed(int_1, int_2, int_3); } @@ -114,7 +118,7 @@ public class RecipeViewingScreen extends Screen { widgets.add(categoryBack = new ButtonWidget((int) bounds.getX() + 5, (int) bounds.getY() + 5, 12, 12, new TranslatableTextComponent("text.rei.left_arrow")) { @Override - public void onPressed(int button, double mouseX, double mouseY) { + public void onPressed() { int currentCategoryIndex = categories.indexOf(selectedCategory); currentCategoryIndex--; if (currentCategoryIndex < 0) @@ -125,9 +129,26 @@ public class RecipeViewingScreen extends Screen { RecipeViewingScreen.this.onInitialized(); } }); + widgets.add(new ClickableLabelWidget((int) bounds.getCenterX(), (int) bounds.getY() + 7, "") { + @Override + public void draw(int mouseX, int mouseY, float partialTicks) { + this.text = selectedCategory.getCategoryName(); + super.draw(mouseX, mouseY, partialTicks); + if (isHighlighted(mouseX, mouseY)) + ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate("text.rei.view_all_categories").split("\n"))); + else if (focused) + ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(new Point(x, y), 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(); + } + }); widgets.add(categoryNext = new ButtonWidget((int) bounds.getMaxX() - 17, (int) bounds.getY() + 5, 12, 12, new TranslatableTextComponent("text.rei.right_arrow")) { @Override - public void onPressed(int button, double mouseX, double mouseY) { + public void onPressed() { int currentCategoryIndex = categories.indexOf(selectedCategory); currentCategoryIndex++; if (currentCategoryIndex >= categories.size()) @@ -143,40 +164,13 @@ public class RecipeViewingScreen extends Screen { widgets.add(recipeBack = new ButtonWidget((int) bounds.getX() + 5, (int) bounds.getY() + 21, 12, 12, new TranslatableTextComponent("text.rei.left_arrow")) { @Override - public void onPressed(int button, double mouseX, double mouseY) { + public void onPressed() { page--; if (page < 0) page = getTotalPages(selectedCategory) - 1; RecipeViewingScreen.this.onInitialized(); } }); - widgets.add(recipeNext = new ButtonWidget((int) bounds.getMaxX() - 17, (int) bounds.getY() + 21, 12, 12, new TranslatableTextComponent("text.rei.right_arrow")) { - @Override - public void onPressed(int button, double mouseX, double mouseY) { - page++; - if (page >= getTotalPages(selectedCategory)) - page = 0; - RecipeViewingScreen.this.onInitialized(); - } - }); - recipeBack.enabled = categoriesMap.get(selectedCategory).size() > getRecipesPerPage(); - recipeNext.enabled = categoriesMap.get(selectedCategory).size() > getRecipesPerPage(); - - widgets.add(new ClickableLabelWidget((int) bounds.getCenterX(), (int) bounds.getY() + 7, "") { - @Override - public void draw(int mouseX, int mouseY, float partialTicks) { - this.text = selectedCategory.getCategoryName(); - super.draw(mouseX, mouseY, partialTicks); - if (isHighlighted(mouseX, mouseY)) - 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(); - } - }); widgets.add(new ClickableLabelWidget((int) bounds.getCenterX(), (int) bounds.getY() + 23, "") { @Override public void draw(int mouseX, int mouseY, float partialTicks) { @@ -184,6 +178,8 @@ public class RecipeViewingScreen extends Screen { super.draw(mouseX, mouseY, partialTicks); if (isHighlighted(mouseX, mouseY)) ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate("text.rei.choose_page").split("\n"))); + else if (focused) + ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(new Point(x, y), I18n.translate("text.rei.choose_page").split("\n"))); } @Override @@ -193,13 +189,25 @@ public class RecipeViewingScreen extends Screen { RecipeViewingScreen.this.onInitialized(); } }); + widgets.add(recipeNext = new ButtonWidget((int) bounds.getMaxX() - 17, (int) bounds.getY() + 21, 12, 12, new TranslatableTextComponent("text.rei.right_arrow")) { + @Override + public void onPressed() { + page++; + if (page >= getTotalPages(selectedCategory)) + page = 0; + RecipeViewingScreen.this.onInitialized(); + } + }); + recipeBack.enabled = categoriesMap.get(selectedCategory).size() > getRecipesPerPage(); + recipeNext.enabled = categoriesMap.get(selectedCategory).size() > getRecipesPerPage(); + for(int i = 0; i < 6; i++) { int j = i + categoryPages * 6; if (categories.size() > j) { TabWidget tab; tabs.add(tab = new TabWidget(i, this, new Rectangle(bounds.x + 4 + 28 * i, bounds.y - 28, 28, 28)) { @Override - public boolean onMouseClick(int button, double mouseX, double mouseY) { + public boolean mouseClicked(double mouseX, double mouseY, int button) { if (getBounds().contains(mouseX, mouseY)) { MinecraftClient.getInstance().getSoundLoader().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); if (getId() + categoryPages * 6 == categories.indexOf(selectedCategory)) @@ -238,7 +246,7 @@ public class RecipeViewingScreen extends Screen { listeners.addAll(widgets); } - public List getWidgets() { + public List getWidgets() { return widgets; } @@ -354,15 +362,15 @@ public class RecipeViewingScreen extends Screen { return true; if (getBounds().contains(ClientHelper.getMouseLocation())) { if (amount > 0 && recipeBack.enabled) - recipeBack.onPressed(0, 0, 0); + recipeBack.onPressed(); else if (amount < 0 && recipeNext.enabled) - recipeNext.onPressed(0, 0, 0); + recipeNext.onPressed(); } if ((new Rectangle(bounds.x, bounds.y - 28, bounds.width, 28)).contains(ClientHelper.getMouseLocation())) { if (amount > 0 && categoryBack.enabled) - categoryBack.onPressed(0, 0, 0); + categoryBack.onPressed(); else if (amount < 0 && categoryNext.enabled) - categoryNext.onPressed(0, 0, 0); + categoryNext.onPressed(); } return super.mouseScrolled(i, j, amount); } @@ -383,17 +391,17 @@ public class RecipeViewingScreen extends Screen { if (entry.mouseClicked(double_1, double_2, int_1)) { focusOn(entry); if (int_1 == 0) - method_1966(true); //setActive + setActive(true); return true; } return false; } - @Override //getFocused - public InputListener method_19357() { + @Override + public InputListener getFocused() { if (choosePageActivated) return recipeChoosePageWidget; - return super.method_19357(); + return super.getFocused(); } } diff --git a/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java b/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java index 8e42c622a..fdea6df9f 100644 --- a/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java +++ b/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java @@ -4,11 +4,9 @@ import me.shedaniel.rei.client.ClientHelper; import me.shedaniel.rei.gui.widget.ButtonWidget; import me.shedaniel.rei.gui.widget.TextFieldWidget; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.audio.PositionedSoundInstance; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.widget.EntryListWidget; import net.minecraft.client.util.Window; -import net.minecraft.sound.SoundEvents; import net.minecraft.text.Style; import net.minecraft.text.TextComponent; @@ -26,17 +24,9 @@ public abstract class ConfigEntry extends EntryListWidget.Entry { this.buttonProvider = buttonProvider; this.buttonWidget = new ButtonWidget(0, 0, 150, 20, "") { @Override - public boolean onMouseClick(int button, double mouseX, double mouseY) { - if (getBounds().contains(mouseX, mouseY) && enabled) - if (buttonProvider.onPressed(button, mouseX, mouseY)) { - MinecraftClient.getInstance().getSoundLoader().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); - return true; - } - return false; + public void onPressed() { + buttonProvider.onPressed(); } - - @Override - public void onPressed(int button, double mouseX, double mouseY) {} }; } @@ -65,7 +55,7 @@ public abstract class ConfigEntry extends EntryListWidget.Entry { interface ConfigEntryButtonProvider { - public boolean onPressed(int button, double mouseX, double mouseY); + public void onPressed(); public String getText(); 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 c1f0f885d..ce8814abf 100644 --- a/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java @@ -7,10 +7,9 @@ import me.shedaniel.rei.client.ItemListOrdering; import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.gui.widget.QueuedTooltip; import me.shedaniel.rei.gui.widget.TextFieldWidget; -import net.minecraft.class_4185; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.InputListener; import net.minecraft.client.gui.Screen; +import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.text.TranslatableTextComponent; @@ -35,14 +34,13 @@ public class ConfigScreen extends Screen { @Override public boolean keyPressed(int int_1, int int_2, int int_3) { - if (int_1 == 256 && this.doesEscapeKeyClose()) { + if (int_1 == 256) { MinecraftClient.getInstance().openScreen(parent); if (initOverlay) ScreenHelper.getLastOverlay().onInitialized(); return true; - } else { - return super.keyPressed(int_1, int_2, int_3); } + return super.keyPressed(int_1, int_2, int_3); } @Override @@ -52,10 +50,8 @@ public class ConfigScreen extends Screen { entryListWidget.configAddEntry(new ConfigEntry.CategoryTitleConfigEntry(new TranslatableTextComponent("text.rei.config.general"))); entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.cheating"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() { @Override - public boolean onPressed(int button, double mouseX, double mouseY) { - if (button == 0) - ClientHelper.setCheating(!ClientHelper.isCheating()); - return true; + public void onPressed() { + ClientHelper.setCheating(!ClientHelper.isCheating()); } @Override @@ -66,16 +62,13 @@ public class ConfigScreen extends Screen { entryListWidget.configAddEntry(new ConfigEntry.CategoryTitleConfigEntry(new TranslatableTextComponent("text.rei.config.appearance"))); entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.side_search_box"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() { @Override - public boolean onPressed(int button, double mouseX, double mouseY) { - if (button == 0) - RoughlyEnoughItemsCore.getConfigManager().getConfig().sideSearchField = !RoughlyEnoughItemsCore.getConfigManager().getConfig().sideSearchField; + public void onPressed() { + RoughlyEnoughItemsCore.getConfigManager().getConfig().sideSearchField = !RoughlyEnoughItemsCore.getConfigManager().getConfig().sideSearchField; try { RoughlyEnoughItemsCore.getConfigManager().saveConfig(); } catch (IOException e) { e.printStackTrace(); - return false; } - return true; } @Override @@ -85,7 +78,7 @@ public class ConfigScreen extends Screen { })); entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.list_ordering"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() { @Override - public boolean onPressed(int button, double mouseX, double mouseY) { + public void onPressed() { int index = Arrays.asList(ItemListOrdering.values()).indexOf(RoughlyEnoughItemsCore.getConfigManager().getConfig().itemListOrdering) + 1; if (index >= ItemListOrdering.values().length) { index = 0; @@ -96,9 +89,7 @@ public class ConfigScreen extends Screen { RoughlyEnoughItemsCore.getConfigManager().saveConfig(); } catch (IOException e) { e.printStackTrace(); - return false; } - return true; } @Override @@ -108,16 +99,13 @@ public class ConfigScreen extends Screen { })); entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.mirror_rei"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() { @Override - public boolean onPressed(int button, double mouseX, double mouseY) { - if (button == 0) - RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel = !RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel; + public void onPressed() { + RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel = !RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel; try { RoughlyEnoughItemsCore.getConfigManager().saveConfig(); } catch (IOException e) { e.printStackTrace(); - return false; } - return true; } @Override @@ -128,16 +116,13 @@ public class ConfigScreen extends Screen { entryListWidget.configAddEntry(new ConfigEntry.CategoryTitleConfigEntry(new TranslatableTextComponent("text.rei.config.modules"))); entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.enable_craftable_only"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() { @Override - public boolean onPressed(int button, double mouseX, double mouseY) { - if (button == 0) - RoughlyEnoughItemsCore.getConfigManager().getConfig().enableCraftableOnlyButton = !RoughlyEnoughItemsCore.getConfigManager().getConfig().enableCraftableOnlyButton; + public void onPressed() { + RoughlyEnoughItemsCore.getConfigManager().getConfig().enableCraftableOnlyButton = !RoughlyEnoughItemsCore.getConfigManager().getConfig().enableCraftableOnlyButton; try { RoughlyEnoughItemsCore.getConfigManager().saveConfig(); } catch (IOException e) { e.printStackTrace(); - return false; } - return true; } @Override @@ -147,16 +132,13 @@ public class ConfigScreen extends Screen { })); entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.load_default_plugin"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() { @Override - public boolean onPressed(int button, double mouseX, double mouseY) { - if (button == 0) - RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin = !RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin; + public void onPressed() { + RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin = !RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin; try { RoughlyEnoughItemsCore.getConfigManager().saveConfig(); } catch (IOException e) { e.printStackTrace(); - return false; } - return true; } @Override @@ -174,16 +156,13 @@ public class ConfigScreen extends Screen { })); entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.disable_credits_button"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() { @Override - public boolean onPressed(int button, double mouseX, double mouseY) { - if (button == 0) - RoughlyEnoughItemsCore.getConfigManager().getConfig().disableCreditsButton = !RoughlyEnoughItemsCore.getConfigManager().getConfig().disableCreditsButton; + public void onPressed() { + RoughlyEnoughItemsCore.getConfigManager().getConfig().disableCreditsButton = !RoughlyEnoughItemsCore.getConfigManager().getConfig().disableCreditsButton; try { RoughlyEnoughItemsCore.getConfigManager().saveConfig(); } catch (IOException e) { e.printStackTrace(); - return false; } - return true; } @Override @@ -193,16 +172,13 @@ public class ConfigScreen extends Screen { })); entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.enable_util_buttons"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() { @Override - public boolean onPressed(int button, double mouseX, double mouseY) { - if (button == 0) - RoughlyEnoughItemsCore.getConfigManager().getConfig().showUtilsButtons = !RoughlyEnoughItemsCore.getConfigManager().getConfig().showUtilsButtons; + public void onPressed() { + RoughlyEnoughItemsCore.getConfigManager().getConfig().showUtilsButtons = !RoughlyEnoughItemsCore.getConfigManager().getConfig().showUtilsButtons; try { RoughlyEnoughItemsCore.getConfigManager().saveConfig(); } catch (IOException e) { e.printStackTrace(); - return false; } - return true; } @Override @@ -212,16 +188,13 @@ public class ConfigScreen extends Screen { })); entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.disable_recipe_book"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() { @Override - public boolean onPressed(int button, double mouseX, double mouseY) { - if (button == 0) - RoughlyEnoughItemsCore.getConfigManager().getConfig().disableRecipeBook = !RoughlyEnoughItemsCore.getConfigManager().getConfig().disableRecipeBook; + public void onPressed() { + RoughlyEnoughItemsCore.getConfigManager().getConfig().disableRecipeBook = !RoughlyEnoughItemsCore.getConfigManager().getConfig().disableRecipeBook; try { RoughlyEnoughItemsCore.getConfigManager().saveConfig(); } catch (IOException e) { e.printStackTrace(); - return false; } - return true; } @Override @@ -334,9 +307,9 @@ public class ConfigScreen extends Screen { return false; } })); - addButton(new class_4185(screenWidth / 2 - 100, screenHeight - 26, I18n.translate("gui.done")) { + addButton(new ButtonWidget(screenWidth / 2 - 100, screenHeight - 26, I18n.translate("gui.done")) { @Override - public void method_1826() { + public void onPressed() { try { RoughlyEnoughItemsCore.getConfigManager().saveConfig(); } catch (IOException e) { @@ -354,6 +327,13 @@ public class ConfigScreen extends Screen { return String.format("%s%s", showCraftableOnlyButton ? "§a" : "§c", showCraftableOnlyButton ? I18n.translate("text.rei.enabled") : I18n.translate("text.rei.disabled")); } + @Override + public boolean mouseScrolled(double double_1, double double_2, double double_3) { + if (entryListWidget.mouseScrolled(double_1, double_2, double_3)) + return true; + return super.mouseScrolled(double_1, double_2, double_3); + } + @Override public void draw(int int_1, int int_2, float float_1) { this.drawTextureBackground(0); @@ -366,14 +346,4 @@ public class ConfigScreen extends Screen { GuiLighting.disable(); } - @Override - public boolean isPauseScreen() { - return false; - } - - @Override - public InputListener method_19357() { - return entryListWidget; - } - } 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 b2b241225..f55c20191 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java @@ -1,10 +1,10 @@ package me.shedaniel.rei.gui.credits; import me.shedaniel.rei.client.ScreenHelper; -import net.minecraft.class_4185; import net.minecraft.client.gui.ContainerScreen; import net.minecraft.client.gui.InputListener; import net.minecraft.client.gui.Screen; +import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.resource.language.I18n; import net.minecraft.text.StringTextComponent; @@ -34,32 +34,28 @@ public class CreditsScreen extends Screen { for(String line : I18n.translate("text.rei.credit.text").split("\n")) entryListWidget.creditsAddEntry(new CreditsEntry(new StringTextComponent(line))); entryListWidget.creditsAddEntry(new CreditsEntry(new StringTextComponent(""))); - addButton(new class_4185(screenWidth / 2 - 100, screenHeight - 26, I18n.translate("gui.done")) { + addButton(new ButtonWidget(screenWidth / 2 - 100, screenHeight - 26, I18n.translate("gui.done")) { @Override - public void method_1826() { + public void onPressed() { CreditsScreen.this.client.openScreen(parent); ScreenHelper.getLastOverlay().onInitialized(); } }); } + @Override + public boolean mouseScrolled(double double_1, double double_2, double double_3) { + if (entryListWidget.mouseScrolled(double_1, double_2, double_3)) + return true; + return super.mouseScrolled(double_1, double_2, double_3); + } + @Override public void draw(int int_1, int int_2, float float_1) { - //draw this.drawTextureBackground(0); this.entryListWidget.draw(int_1, int_2, float_1); this.drawStringCentered(this.fontRenderer, I18n.translate("text.rei.credits"), this.screenWidth / 2, 16, 16777215); super.draw(int_1, int_2, float_1); } - @Override - public boolean isPauseScreen() { - return false; - } - - @Override - public InputListener method_19357() { - return entryListWidget; - } - } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java index a6657ef0a..b396c764e 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java @@ -4,24 +4,22 @@ import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.MinecraftClient; import net.minecraft.client.audio.PositionedSoundInstance; import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.InputListener; +import net.minecraft.client.gui.widget.AbstractButtonWidget; import net.minecraft.sound.SoundEvents; import net.minecraft.text.TextComponent; -import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; import java.awt.*; -import java.util.ArrayList; +import java.util.Collections; import java.util.List; -public abstract class ButtonWidget extends DrawableHelper implements HighlightableWidget { +public abstract class ButtonWidget extends HighlightableWidget { - protected static final Identifier WIDGET_TEX = new Identifier("textures/gui/widgets.png"); public String text; public boolean enabled; public boolean visible; - protected boolean hovered; - private boolean pressed; + private boolean focused; private Rectangle bounds; public ButtonWidget(Rectangle rectangle, TextComponent text) { @@ -58,21 +56,15 @@ public abstract class ButtonWidget extends DrawableHelper implements Highlightab return int_1; } - @Override - public List getListeners() { - return new ArrayList<>(); - } - @Override public void draw(int mouseX, int mouseY, float partialTicks) { if (this.visible) { int x = bounds.x, y = bounds.y, width = bounds.width, height = bounds.height; MinecraftClient client = MinecraftClient.getInstance(); TextRenderer textRenderer = client.textRenderer; - client.getTextureManager().bindTexture(WIDGET_TEX); + client.getTextureManager().bindTexture(AbstractButtonWidget.WIDGET_TEX); GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - this.hovered = bounds.contains(mouseX, mouseY); - int textureOffset = this.getTextureId(this.hovered); + int textureOffset = this.getTextureId(isHovered(mouseX, mouseY)); GlStateManager.enableBlend(); GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); @@ -94,7 +86,7 @@ public abstract class ButtonWidget extends DrawableHelper implements Highlightab int colour = 14737632; if (!this.enabled) { colour = 10526880; - } else if (this.hovered) { + } else if (isHovered(mouseX, mouseY)) { colour = 16777120; } @@ -102,16 +94,49 @@ public abstract class ButtonWidget extends DrawableHelper implements Highlightab } } + public boolean isHovered(int mouseX, int mouseY) { + return bounds.contains(mouseX, mouseY) || focused; + } + + @Override + public boolean hasFocus() { + return visible && enabled; + } + + @Override + public void setHasFocus(boolean boolean_1) { + focused = boolean_1; + } + @Override - public boolean onMouseClick(int button, double mouseX, double mouseY) { - if (bounds.contains(mouseX, mouseY) && enabled) { + public List getInputListeners() { + return Collections.emptyList(); + } + + @Override + public boolean mouseClicked(double mouseX, double mouseY, int button) { + if (bounds.contains(mouseX, mouseY) && enabled && button == 0) { MinecraftClient.getInstance().getSoundLoader().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); - onPressed(button, mouseX, mouseY); + onPressed(); return true; } return false; } - public abstract void onPressed(int button, double mouseX, double mouseY); + @Override + public boolean keyPressed(int int_1, int int_2, int int_3) { + if (this.enabled && this.visible) { + if (int_1 != 257 && int_1 != 32 && int_1 != 335) { + return false; + } else { + MinecraftClient.getInstance().getSoundLoader().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); + this.onPressed(); + return true; + } + } + return false; + } + + public abstract void onPressed(); } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java index 7f7de43d3..b25338537 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java @@ -2,28 +2,25 @@ package me.shedaniel.rei.gui.widget; import java.awt.*; -public abstract class ClickableLabelWidget extends LabelWidget implements HighlightableWidget { +public abstract class ClickableLabelWidget extends LabelWidget { + + private static final int hoveredColor = (new Color(102, 255, 204)).getRGB(); + protected boolean focused; public ClickableLabelWidget(int x, int y, String text) { super(x, y, text); } - @Override - public Rectangle getBounds() { - int width = textRenderer.getStringWidth(text); - return new Rectangle(x - width / 2 - 1, y - 5, width + 2, 14); - } - @Override public void draw(int mouseX, int mouseY, float partialTicks) { int colour = -1; - if (isHighlighted(mouseX, mouseY)) - colour = 16777120; - drawStringCentered(textRenderer, (isHighlighted(mouseX, mouseY) ? "§n" : "") + text, x, y, colour); + if (isHovered(mouseX, mouseY)) + colour = hoveredColor; + drawStringCentered(textRenderer, (isHovered(mouseX, mouseY) ? "§n" : "") + text, x, y, colour); } @Override - public boolean onMouseClick(int button, double mouseX, double mouseY) { + public boolean mouseClicked(double mouseX, double mouseY, int button) { if (button == 0 && isHighlighted(mouseX, mouseY)) { onLabelClicked(); return true; @@ -31,6 +28,30 @@ public abstract class ClickableLabelWidget extends LabelWidget implements Highli return false; } + @Override + public boolean keyPressed(int int_1, int int_2, int int_3) { + if (int_1 != 257 && int_1 != 32 && int_1 != 335) { + return false; + } else { + this.onLabelClicked(); + return true; + } + } + + @Override + public boolean hasFocus() { + return true; + } + + public boolean isHovered(int mouseX, int mouseY) { + return isHighlighted(mouseX, mouseY) || focused; + } + + @Override + public void setHasFocus(boolean boolean_1) { + focused = boolean_1; + } + public abstract void onLabelClicked(); } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/DraggableWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/DraggableWidget.java index 4fccaf633..3a003a608 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/DraggableWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/DraggableWidget.java @@ -2,11 +2,12 @@ package me.shedaniel.rei.gui.widget; import me.shedaniel.rei.client.ClientHelper; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.InputListener; import net.minecraft.client.util.Window; import java.awt.*; -public abstract class DraggableWidget implements HighlightableWidget { +public abstract class DraggableWidget extends HighlightableWidget { protected boolean dragged = false; private Point midPoint, startPoint; @@ -50,8 +51,8 @@ public abstract class DraggableWidget implements HighlightableWidget { } return true; } - for(IWidget widget : getListeners()) - if (widget.mouseDragged(double_1, double_2, int_1, double_3, double_4)) + for(InputListener listener : getInputListeners()) + if (listener.mouseDragged(double_1, double_2, int_1, double_3, double_4)) return true; return false; } @@ -66,8 +67,8 @@ public abstract class DraggableWidget implements HighlightableWidget { onMouseReleaseMidPoint(getMidPoint()); return true; } - for(IWidget widget : getListeners()) - if (widget.mouseReleased(double_1, double_2, int_1)) + for(InputListener listener : getInputListeners()) + if (listener.mouseReleased(double_1, double_2, int_1)) return true; return false; } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/HighlightableWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/HighlightableWidget.java index da18cfc97..382293a0a 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/HighlightableWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/HighlightableWidget.java @@ -2,19 +2,19 @@ package me.shedaniel.rei.gui.widget; import java.awt.*; -public interface HighlightableWidget extends IWidget { +public abstract class HighlightableWidget extends Widget { - public Rectangle getBounds(); + abstract public Shape getBounds(); - default boolean isHighlighted(int mouseX, int mouseY) { + public boolean isHighlighted(int mouseX, int mouseY) { return getBounds().contains(mouseX, mouseY); } - default boolean isHighlighted(Point point) { + public boolean isHighlighted(Point point) { return this.isHighlighted(point.x, point.y); } - default boolean isHighlighted(double mouseX, double mouseY) { + public boolean isHighlighted(double mouseX, double mouseY) { return this.isHighlighted((int) mouseX, (int) mouseY); } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/IWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/IWidget.java deleted file mode 100644 index 59446f8bd..000000000 --- a/src/main/java/me/shedaniel/rei/gui/widget/IWidget.java +++ /dev/null @@ -1,40 +0,0 @@ -package me.shedaniel.rei.gui.widget; - -import net.minecraft.client.gui.Drawable; -import net.minecraft.client.gui.InputListener; - -import java.util.List; - -public interface IWidget extends InputListener, Drawable { - - public List getListeners(); - - @Override - default boolean mouseClicked(double double_1, double double_2, int int_1) { - if (onMouseClick(int_1, double_1, double_2)) - return true; - for(IWidget widget : getListeners()) - if (widget.mouseClicked(double_1, double_2, int_1)) - return true; - return false; - } - - default boolean onMouseClick(int button, double mouseX, double mouseY) { - return false; - } - - default boolean onMouseScrolled(double amount) { - return false; - } - - @Override - default boolean mouseScrolled(double i, double j, double amount) { - if (onMouseScrolled(amount)) - return true; - for(IWidget widget : getListeners()) - if (widget.mouseScrolled(i, j, amount)) - return true; - return false; - } - -} 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 5af711e0c..a6542b3e5 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java @@ -8,7 +8,6 @@ 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; @@ -24,10 +23,10 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; -public class ItemListOverlay extends DrawableHelper implements IWidget { +public class ItemListOverlay extends Widget { private static List searchBlacklisted = Lists.newArrayList(); - private List widgets; + private List widgets; private int width, height, page; private Rectangle rectangle, listArea; private List currentDisplayed; @@ -78,7 +77,7 @@ public class ItemListOverlay extends DrawableHelper implements IWidget { ScreenHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate("text.rei.delete_items")))); } - public List getWidgets() { + public List getWidgets() { return widgets; } @@ -104,7 +103,7 @@ public class ItemListOverlay extends DrawableHelper implements IWidget { } @Override - public boolean onMouseClick(int button, double mouseX, double mouseY) { + public boolean mouseClicked(double mouseX, double mouseY, int button) { if (isHighlighted(mouseX, mouseY)) { if (ClientHelper.isCheating()) { if (getCurrentStack() != null && !getCurrentStack().isEmpty()) { @@ -127,7 +126,7 @@ public class ItemListOverlay extends DrawableHelper implements IWidget { @Override public boolean keyPressed(int int_1, int int_2, int int_3) { - for(IWidget widget : widgets) + for(Widget widget : widgets) if (widget.keyPressed(int_1, int_2, int_3)) return true; return false; @@ -248,7 +247,7 @@ public class ItemListOverlay extends DrawableHelper implements IWidget { } if (!player.inventory.getCursorStack().isEmpty() && MinecraftClient.getInstance().isInSingleplayer()) return false; - for(IWidget widget : getListeners()) + for(Widget widget : getInputListeners()) if (widget.mouseClicked(double_1, double_2, int_1)) return true; } @@ -256,7 +255,7 @@ public class ItemListOverlay extends DrawableHelper implements IWidget { } @Override - public List getListeners() { + public List getInputListeners() { return widgets; } 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 04f8ad9c8..c5165c554 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java @@ -5,7 +5,7 @@ import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.client.ClientHelper; import me.shedaniel.rei.client.ScreenHelper; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.InputListener; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.item.ItemStack; @@ -14,10 +14,11 @@ import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; import java.awt.*; -import java.util.*; +import java.util.Collections; +import java.util.LinkedList; import java.util.List; -public class ItemSlotWidget extends DrawableHelper implements HighlightableWidget { +public class ItemSlotWidget extends HighlightableWidget { private static final Identifier RECIPE_GUI = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); private List itemList = new LinkedList<>(); @@ -43,6 +44,11 @@ public class ItemSlotWidget extends DrawableHelper implements HighlightableWidge this.clickToMoreRecipes = clickToMoreRecipes; } + @Override + public List getInputListeners() { + return Collections.emptyList(); + } + public void setDrawHighlightedBackground(boolean drawHighlightedBackground) { this.drawHighlightedBackground = drawHighlightedBackground; } @@ -51,11 +57,6 @@ public class ItemSlotWidget extends DrawableHelper implements HighlightableWidge return drawBackground; } - @Override - public List getListeners() { - return new ArrayList<>(); - } - @Override public void draw(int mouseX, int mouseY, float partialTicks) { final ItemStack itemStack = getCurrentStack(); @@ -125,7 +126,7 @@ public class ItemSlotWidget extends DrawableHelper implements HighlightableWidge } @Override - public boolean onMouseClick(int button, double mouseX, double mouseY) { + public boolean mouseClicked(double mouseX, double mouseY, int button) { if (!clickToMoreRecipes) return false; if (getBounds().contains(mouseX, mouseY)) diff --git a/src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java index d24480341..e8cc59203 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java @@ -2,12 +2,13 @@ package me.shedaniel.rei.gui.widget; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.InputListener; -import java.util.ArrayList; +import java.awt.*; +import java.util.Collections; import java.util.List; -public class LabelWidget extends DrawableHelper implements IWidget { +public class LabelWidget extends HighlightableWidget { public int x; public int y; @@ -22,8 +23,14 @@ public class LabelWidget extends DrawableHelper implements IWidget { } @Override - public List getListeners() { - return new ArrayList<>(); + public Rectangle getBounds() { + int width = textRenderer.getStringWidth(text); + return new Rectangle(x - width / 2 - 1, y - 5, width + 2, 14); + } + + @Override + public List getInputListeners() { + return Collections.emptyList(); } @Override diff --git a/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java index 84df02552..e12f12c52 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java @@ -8,10 +8,10 @@ import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; import java.awt.*; -import java.util.ArrayList; +import java.util.Collections; import java.util.List; -public class RecipeBaseWidget extends DrawableHelper implements HighlightableWidget { +public class RecipeBaseWidget extends HighlightableWidget { private static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); private static final Color INNER_COLOR = new Color(198, 198, 198); @@ -28,8 +28,8 @@ public class RecipeBaseWidget extends DrawableHelper implements HighlightableWid } @Override - public List getListeners() { - return new ArrayList<>(); + public List getInputListeners() { + return Collections.emptyList(); } @Override diff --git a/src/main/java/me/shedaniel/rei/gui/widget/RecipeChoosePageWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/RecipeChoosePageWidget.java index 5b043caa4..98851b326 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeChoosePageWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeChoosePageWidget.java @@ -14,6 +14,7 @@ import net.minecraft.util.math.MathHelper; import java.awt.*; import java.io.IOException; +import java.util.Collections; import java.util.List; import java.util.Optional; @@ -22,7 +23,7 @@ public class RecipeChoosePageWidget extends DraggableWidget { private int currentPage; private int maxPage; private Rectangle bounds, grabBounds, dragBounds; - private List widgets; + private List widgets; private RecipeViewingScreen recipeViewingScreen; private TextFieldWidget textFieldWidget; private RecipeBaseWidget base1, base2; @@ -81,10 +82,10 @@ public class RecipeChoosePageWidget extends DraggableWidget { this.widgets = Lists.newArrayList(); this.widgets.add(base1 = new RecipeBaseWidget(new Rectangle(bounds.x + bounds.width - 50, bounds.y + bounds.height - 6, 50, 36))); this.widgets.add(base2 = new RecipeBaseWidget(bounds)); - this.widgets.add(new IWidget() { + this.widgets.add(new Widget() { @Override - public List getListeners() { - return Lists.newArrayList(); + public List getInputListeners() { + return Collections.emptyList(); } @Override @@ -114,7 +115,7 @@ public class RecipeChoosePageWidget extends DraggableWidget { textFieldWidget.setText(String.valueOf(currentPage + 1)); widgets.add(btnDone = new ButtonWidget(bounds.x + bounds.width - 45, bounds.y + bounds.height + 3, 40, 20, I18n.translate("gui.done")) { @Override - public void onPressed(int button, double mouseX, double mouseY) { + public void onPressed() { recipeViewingScreen.page = MathHelper.clamp(getIntFromString(textFieldWidget.getText()).orElse(0) - 1, 0, recipeViewingScreen.getTotalPages(recipeViewingScreen.getSelectedCategory()) - 1); recipeViewingScreen.choosePageActivated = false; recipeViewingScreen.onInitialized(); @@ -129,7 +130,7 @@ public class RecipeChoosePageWidget extends DraggableWidget { } @Override - public List getListeners() { + public List getInputListeners() { return widgets; } @@ -145,7 +146,7 @@ public class RecipeChoosePageWidget extends DraggableWidget { @Override public boolean charTyped(char char_1, int int_1) { - for(IWidget widget : widgets) + for(Widget widget : widgets) if (widget.charTyped(char_1, int_1)) return true; return false; @@ -159,7 +160,7 @@ public class RecipeChoosePageWidget extends DraggableWidget { recipeViewingScreen.onInitialized(); return true; } - for(IWidget widget : widgets) + for(Widget widget : widgets) if (widget.keyPressed(int_1, int_2, int_3)) return true; return false; diff --git a/src/main/java/me/shedaniel/rei/gui/widget/RecipePageLabelWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/RecipePageLabelWidget.java deleted file mode 100644 index a81765143..000000000 --- a/src/main/java/me/shedaniel/rei/gui/widget/RecipePageLabelWidget.java +++ /dev/null @@ -1,113 +0,0 @@ -package me.shedaniel.rei.gui.widget; - -import net.minecraft.client.gui.DrawableHelper; - -import java.awt.*; - -public class RecipePageLabelWidget extends TextFieldWidget { - - private Point middlePoint; - private int maximumPage; - - public RecipePageLabelWidget(int x, int y, int currentPage, int maximumPage) { - super(new Rectangle(0, 0, 40, 20)); - this.middlePoint = new Point(x, y); - this.maximumPage = maximumPage; - this.setHasBorder(false); - setChangedListener(s -> updateSize()); - this.setText(String.valueOf(currentPage + 1)); - stripInvaild = s -> { - StringBuilder stringBuilder_1 = new StringBuilder(); - char[] var2 = s.toCharArray(); - int var3 = var2.length; - - for(int var4 = 0; var4 < var3; ++var4) { - char char_1 = var2[var4]; - if (Character.isDigit(char_1)) - stringBuilder_1.append(char_1); - } - - return stringBuilder_1.toString(); - }; - setMaxLength(String.valueOf(maximumPage).length()); - } - - public void updateSize() { - this.getBounds().setLocation(middlePoint.x - 40, middlePoint.y); - } - - @Override - public void draw(int int_1, int int_2, float float_1) { - setEditableColor(isInvaildPage(getText()) ? -1 : Color.RED.getRGB()); - if (this.isVisible()) { - if (this.hasBorder()) { - drawRect(this.getBounds().x - 1, this.getBounds().y - 1, this.getBounds().x + this.getBounds().width + 1, this.getBounds().y + this.getBounds().height + 1, -6250336); - drawRect(this.getBounds().x, this.getBounds().y, this.getBounds().x + this.getBounds().width, this.getBounds().y + this.getBounds().height, -16777216); - } - - int color = this.editable ? this.editableColor : this.notEditableColor; - int int_4 = this.cursorMax - this.field_2103; - int int_5 = this.cursorMin - this.field_2103; - String string_1 = this.getText(); //this.textRenderer.trimToWidth(this.getText().substring(this.field_2103), this.getWidth()); - boolean boolean_1 = int_4 >= 0 && int_4 <= string_1.length(); - boolean boolean_2 = this.isFocused() && this.focusedTicks / 6 % 2 == 0 && boolean_1; - int int_6 = this.hasBorder() ? this.getBounds().x + 4 : this.getBounds().x; - int int_7 = this.hasBorder() ? this.getBounds().y + (this.getBounds().height - 8) / 2 : this.getBounds().y; - int int_8 = int_6; - if (int_5 > string_1.length()) { - int_5 = string_1.length(); - } - - if (!string_1.isEmpty()) { - String string_2 = boolean_1 ? string_1.substring(0, int_4) : string_1; - int_8 = this.textRenderer.drawWithShadow(this.renderTextProvider.apply(string_2, this.field_2103), (float) getBounds().x + getBounds().width - textRenderer.getStringWidth(string_2.substring(1)), (float) int_7, color); - } - - boolean boolean_3 = this.cursorMax < this.getText().length() || this.getText().length() >= this.getMaxLength(); - int int_9 = int_8; - if (!boolean_1) { - int_9 = int_4 > 0 ? int_6 + this.getBounds().width : int_6; - } else if (boolean_3) { - int_9 = int_8 - 1; - --int_8; - } - - if (!string_1.isEmpty() && boolean_1 && int_4 < string_1.length()) { - this.textRenderer.drawWithShadow((String) this.renderTextProvider.apply(string_1.substring(int_4), this.cursorMax), (float) int_8, (float) int_7, color); - } - - if (!boolean_3 && getText().isEmpty() && this.getSuggestion() != null) { - this.textRenderer.drawWithShadow(this.textRenderer.trimToWidth(this.getSuggestion(), this.getWidth()), (float) int_6, (float) int_7, -8355712); - } -