From 16e35bc7ddb5924008be5be1b60db29d461d72b5 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 30 Mar 2019 20:21:18 +0800 Subject: Using Cloth events instead of overwriting methods --- CHANGELOG.md | 2 + gradle.properties | 8 +- src/main/java/me/shedaniel/rei/api/TabGetter.java | 5 -- .../me/shedaniel/rei/client/RecipeHelperImpl.java | 6 +- .../java/me/shedaniel/rei/client/ScreenHelper.java | 14 ---- .../shedaniel/rei/gui/ContainerScreenOverlay.java | 43 ++++++---- .../me/shedaniel/rei/gui/RecipeViewingScreen.java | 30 +++---- .../rei/gui/config/ItemListOrderingEntry.java | 12 +-- .../me/shedaniel/rei/gui/credits/CreditsEntry.java | 20 ----- .../rei/gui/credits/CreditsEntryListWidget.java | 24 +++--- .../me/shedaniel/rei/gui/credits/CreditsItem.java | 24 ++++++ .../shedaniel/rei/gui/credits/CreditsScreen.java | 4 +- .../me/shedaniel/rei/gui/widget/ButtonWidget.java | 95 ++++++++++------------ .../rei/gui/widget/ClickableLabelWidget.java | 15 +++- .../gui/widget/CraftableToggleButtonWidget.java | 15 +++- .../shedaniel/rei/gui/widget/DraggableWidget.java | 6 +- .../rei/gui/widget/HighlightableWidget.java | 15 ++-- .../shedaniel/rei/gui/widget/ItemListOverlay.java | 16 ++-- .../shedaniel/rei/gui/widget/ItemSlotWidget.java | 12 ++- .../me/shedaniel/rei/gui/widget/LabelWidget.java | 7 +- .../rei/gui/widget/RecipeChoosePageWidget.java | 12 +-- .../rei/gui/widget/SpeedCraftingButtonWidget.java | 3 +- .../me/shedaniel/rei/gui/widget/TabWidget.java | 7 +- .../shedaniel/rei/gui/widget/TextFieldWidget.java | 9 +- .../java/me/shedaniel/rei/gui/widget/Widget.java | 9 +- .../CreativePlayerInventoryScreenHooks.java | 9 ++ .../shedaniel/rei/mixin/MixinContainerScreen.java | 20 ++--- .../rei/mixin/MixinCraftingTableScreen.java | 8 +- .../mixin/MixinCreativePlayerInventoryScreen.java | 37 ++++----- .../rei/mixin/MixinPlayerInventoryScreen.java | 8 +- .../me/shedaniel/rei/mixin/MixinTabGetter.java | 19 ----- .../java/me/shedaniel/rei/utils/ClothRegistry.java | 39 ++++++--- src/main/resources/fabric.mod.json | 2 +- src/main/resources/roughlyenoughitems.client.json | 1 - 34 files changed, 270 insertions(+), 286 deletions(-) delete mode 100644 src/main/java/me/shedaniel/rei/api/TabGetter.java delete mode 100644 src/main/java/me/shedaniel/rei/gui/credits/CreditsEntry.java create mode 100644 src/main/java/me/shedaniel/rei/gui/credits/CreditsItem.java create mode 100644 src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java delete mode 100644 src/main/java/me/shedaniel/rei/mixin/MixinTabGetter.java diff --git a/CHANGELOG.md b/CHANGELOG.md index ea1c9e49e..0d536a507 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +# v2.5.1.75 +- Using Cloth events instead of overwriting methods \o/ (Please update [Cloth](https://minecraft.curseforge.com/projects/cloth)) # v2.5.1.74 - Updated to 19w13a # v2.5.0.73 diff --git a/gradle.properties b/gradle.properties index f94be6a64..01f49b283 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,9 +1,9 @@ -mod_version=2.5.1.74 -minecraft_version=19w13a -yarn_version=19w13a.3 +mod_version=2.5.1.75 +minecraft_version=19w13b +yarn_version=19w13b.1 fabric_version=0.2.6.117 fabricloader_version=0.3.7.109 pluginloader_version=1.14-1.0.6-8 developermode_version=1.0.3 jankson_version=1.1.0 -cloth_version=0.1.4.14 +cloth_version=0.1.5.16 diff --git a/src/main/java/me/shedaniel/rei/api/TabGetter.java b/src/main/java/me/shedaniel/rei/api/TabGetter.java deleted file mode 100644 index 8afe43f30..000000000 --- a/src/main/java/me/shedaniel/rei/api/TabGetter.java +++ /dev/null @@ -1,5 +0,0 @@ -package me.shedaniel.rei.api; - -public interface TabGetter { - int rei_getSelectedTab(); -} diff --git a/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java b/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java index 539897376..52f5721a8 100644 --- a/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java +++ b/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java @@ -167,7 +167,7 @@ public class RecipeHelperImpl implements RecipeHelper { plugins.sort((first, second) -> { return second.getPriority() - first.getPriority(); }); - RoughlyEnoughItemsCore.LOGGER.info("Loading %d REI plugins: %s", plugins.size(), String.join(", ", plugins.stream().map(plugin -> { + RoughlyEnoughItemsCore.LOGGER.info("[REI] Loading %d plugins: %s", plugins.size(), String.join(", ", plugins.stream().map(plugin -> { return RoughlyEnoughItemsCore.getPluginIdentifier(plugin).map(Identifier::toString).orElseGet(() -> "null"); }).collect(Collectors.toList()))); Collections.reverse(plugins); @@ -184,8 +184,8 @@ public class RecipeHelperImpl implements RecipeHelper { if (pluginDisabler.isFunctionEnabled(identifier, PluginFunction.REGISTER_SPEED_CRAFT)) plugin.registerSpeedCraft(this); }); - RoughlyEnoughItemsCore.LOGGER.info("Registered REI Categories: " + String.join(", ", categories.stream().map(RecipeCategory::getCategoryName).collect(Collectors.toList()))); - RoughlyEnoughItemsCore.LOGGER.info("Registered %d recipes for REI.", recipeCount.get()); + RoughlyEnoughItemsCore.LOGGER.info("[REI] Registered Categories: " + String.join(", ", categories.stream().map(RecipeCategory::getCategoryName).collect(Collectors.toList()))); + RoughlyEnoughItemsCore.LOGGER.info("[REI] Registered %d recipes.", recipeCount.get()); } @Override diff --git a/src/main/java/me/shedaniel/rei/client/ScreenHelper.java b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java index fa109b98d..a0bb52ae4 100644 --- a/src/main/java/me/shedaniel/rei/client/ScreenHelper.java +++ b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java @@ -1,7 +1,6 @@ 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; @@ -9,9 +8,6 @@ import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.event.client.ClientTickCallback; import net.minecraft.client.MinecraftClient; 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.client.util.Window; import net.minecraft.item.ItemStack; import org.apache.logging.log4j.util.TriConsumer; @@ -47,16 +43,6 @@ public class ScreenHelper implements ClientModInitializer { return getLastOverlay(false, 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; } diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index ecbd9c481..1963f7f4c 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -10,10 +10,7 @@ import me.shedaniel.rei.client.Weather; import me.shedaniel.rei.gui.widget.*; import net.minecraft.client.MinecraftClient; import net.minecraft.client.audio.PositionedSoundInstance; -import net.minecraft.client.gui.ContainerScreen; -import net.minecraft.client.gui.InputListener; -import net.minecraft.client.gui.Screen; -import net.minecraft.client.gui.ScreenComponent; +import net.minecraft.client.gui.*; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.Window; @@ -32,7 +29,7 @@ import java.util.List; import java.util.Optional; import java.util.stream.Collectors; -public class ContainerScreenOverlay extends ScreenComponent { +public class ContainerScreenOverlay extends AbstractParentElement implements Drawable { private static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); private static final List QUEUED_TOOLTIPS = Lists.newArrayList(); @@ -189,10 +186,11 @@ public class ContainerScreenOverlay extends ScreenComponent { page = MathHelper.clamp(page, 0, getTotalPage()); this.text = String.format("%s/%s", page + 1, getTotalPage() + 1); super.render(mouseX, mouseY, partialTicks); - if (isHighlighted(mouseX, mouseY)) - addTooltip(QueuedTooltip.create(I18n.translate("text.rei.go_back_first_page").split("\n"))); - else if (focused) - ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(new Point(x, y), I18n.translate("text.rei.go_back_first_page").split("\n"))); + } + + @Override + public Optional getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.go_back_first_page")); } @Override @@ -311,7 +309,8 @@ public class ContainerScreenOverlay extends ScreenComponent { return rectangle; } - public void drawOverlay(int mouseX, int mouseY, float partialTicks) { + @Override + public void render(int mouseX, int mouseY, float partialTicks) { List currentStacks = ClientHelper.getInventoryItemsTypes(); if (getLeft() != lastLeft) onInitialized(true); @@ -321,7 +320,7 @@ public class ContainerScreenOverlay extends ScreenComponent { } GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GuiLighting.disable(); - this.draw(mouseX, mouseY, partialTicks); + this.renderWidgets(mouseX, mouseY, partialTicks); GuiLighting.disable(); Screen currentScreen = MinecraftClient.getInstance().currentScreen; if (!(currentScreen instanceof RecipeViewingScreen) || !((RecipeViewingScreen) currentScreen).choosePageActivated) @@ -353,11 +352,11 @@ public class ContainerScreenOverlay extends ScreenComponent { QUEUED_TOOLTIPS.add(queuedTooltip); } - public void draw(int int_1, int int_2, float float_1) { + public void renderWidgets(int int_1, int int_2, float float_1) { if (!ScreenHelper.isOverlayVisible()) return; - buttonLeft.enabled = itemListOverlay.getWidgets().size() > 0; - buttonRight.enabled = itemListOverlay.getWidgets().size() > 0; + buttonLeft.enabled = itemListOverlay.children().size() > 0; + buttonRight.enabled = itemListOverlay.children().size() > 0; widgets.forEach(widget -> { GuiLighting.disable(); widget.render(int_1, int_2, float_1); @@ -415,7 +414,7 @@ public class ContainerScreenOverlay extends ScreenComponent { @Override public boolean keyPressed(int int_1, int int_2, int int_3) { if (ScreenHelper.isOverlayVisible()) - for(InputListener listener : widgets) + for(Element listener : widgets) if (listener.keyPressed(int_1, int_2, int_3)) return true; if (ClientHelper.HIDE.matchesKey(int_1, int_2)) { @@ -442,14 +441,14 @@ public class ContainerScreenOverlay extends ScreenComponent { public boolean charTyped(char char_1, int int_1) { if (!ScreenHelper.isOverlayVisible()) return false; - for(InputListener listener : children()) + for(Element listener : children()) if (listener.charTyped(char_1, int_1)) return true; return super.charTyped(char_1, int_1); } @Override - public List children() { + public List children() { return widgets; } @@ -457,7 +456,15 @@ public class ContainerScreenOverlay extends ScreenComponent { public boolean mouseClicked(double double_1, double double_2, int int_1) { if (!ScreenHelper.isOverlayVisible()) return false; - return super.mouseClicked(double_1, double_2, int_1); + for(Element element : this.children()) { + if (element.mouseClicked(double_1, double_2, int_1)) { + this.method_20084(element); + if (int_1 == 0) + this.setDragging(true); + 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 876e6391e..06ed3f6ec 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -11,7 +11,7 @@ import me.shedaniel.rei.gui.widget.*; import net.minecraft.client.MinecraftClient; import net.minecraft.client.audio.PositionedSoundInstance; import net.minecraft.client.gui.ContainerScreen; -import net.minecraft.client.gui.InputListener; +import net.minecraft.client.gui.Element; import net.minecraft.client.gui.Screen; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; @@ -144,10 +144,11 @@ public class RecipeViewingScreen extends Screen { public void render(int mouseX, int mouseY, float partialTicks) { this.text = selectedCategory.getCategoryName(); super.render(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 Optional getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.view_all_categories")); } @Override @@ -196,10 +197,11 @@ public class RecipeViewingScreen extends Screen { public void render(int mouseX, int mouseY, float partialTicks) { this.text = String.format("%d/%d", page + 1, getTotalPages(selectedCategory)); super.render(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 + public Optional getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.choose_page")); } @Override @@ -331,7 +333,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.render(mouseX, mouseY, delta)); - ScreenHelper.getLastOverlay().drawOverlay(mouseX, mouseY, delta); + ScreenHelper.getLastOverlay().render(mouseX, mouseY, delta); if (choosePageActivated) { blitOffset = 500.0f; this.fillGradient(0, 0, this.width, this.height, -1072689136, -804253680); @@ -355,7 +357,7 @@ public class RecipeViewingScreen extends Screen { return true; return false; } - for(InputListener listener : children()) + for(Element listener : children()) if (listener.charTyped(char_1, int_1)) return true; return super.charTyped(char_1, int_1); @@ -383,7 +385,7 @@ public class RecipeViewingScreen extends Screen { @Override public boolean mouseScrolled(double i, double j, double amount) { - for(InputListener listener : children()) + for(Element listener : children()) if (listener.mouseScrolled(i, j, amount)) return true; if (getBounds().contains(ClientUtils.getMouseLocation())) { @@ -413,7 +415,7 @@ public class RecipeViewingScreen extends Screen { init(); return false; } - for(InputListener entry : children()) + for(Element entry : children()) if (entry.mouseClicked(double_1, double_2, int_1)) { method_20084(entry); if (int_1 == 0) @@ -424,7 +426,7 @@ public class RecipeViewingScreen extends Screen { } @Override - public InputListener getFocused() { + public Element getFocused() { if (choosePageActivated) return recipeChoosePageWidget; return super.getFocused(); diff --git a/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java b/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java index 11b6a344d..118668bb7 100644 --- a/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java +++ b/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java @@ -7,7 +7,7 @@ import me.shedaniel.cloth.gui.ClothConfigScreen.ListWidget; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.client.ItemListOrdering; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.InputListener; +import net.minecraft.client.gui.Element; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.Window; @@ -21,7 +21,7 @@ public class ItemListOrderingEntry extends ListEntry { private AtomicReference> value; private ButtonWidget buttonWidget; private ButtonWidget resetButton; - private List widgets; + private List widgets; public ItemListOrderingEntry(String fieldName, Pair val) { super(fieldName); @@ -53,7 +53,7 @@ public class ItemListOrderingEntry extends ListEntry { } @Override - public void draw(int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isSelected, float delta) { + public void render(int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isSelected, float delta) { Window window = MinecraftClient.getInstance().window; this.resetButton.active = this.getDefaultValue().isPresent() && (((Pair) this.getDefaultValue().get()).getKey() != this.value.get().getKey() || ((Pair) this.getDefaultValue().get()).getValue().booleanValue() != this.value.get().getValue().booleanValue()); this.resetButton.y = y; @@ -79,7 +79,7 @@ public class ItemListOrderingEntry extends ListEntry { } @Override - public List children() { + public List children() { return widgets; } @@ -90,11 +90,11 @@ public class ItemListOrderingEntry extends ListEntry { public void setDragging(boolean b) { } - public InputListener getFocused() { + public Element getFocused() { return null; } - public void setFocused(InputListener inputListener) { + public void setFocused(Element inputListener) { } public boolean mouseClicked(double double_1, double double_2, int int_1) { diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntry.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntry.java deleted file mode 100644 index 63ec352a5..000000000 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntry.java +++ /dev/null @@ -1,20 +0,0 @@ -package me.shedaniel.rei.gui.credits; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.widget.EntryListWidget; -import net.minecraft.text.TextComponent; - -public class CreditsEntry extends EntryListWidget.Entry { - - private TextComponent textComponent; - - public CreditsEntry(TextComponent textComponent) { - this.textComponent = textComponent; - } - - @Override - public void draw(int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isSelected, float delta) { - MinecraftClient.getInstance().textRenderer.drawWithShadow(textComponent.getFormattedText(), x + 5, y + 5, -1); - } - -} diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java index 4deac886b..2ef5e7a39 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java @@ -1,37 +1,35 @@ package me.shedaniel.rei.gui.credits; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.widget.EntryListWidget; +import net.minecraft.client.gui.widget.ItemListWidget; -public class CreditsEntryListWidget extends EntryListWidget { +public class CreditsEntryListWidget extends ItemListWidget { public CreditsEntryListWidget(MinecraftClient client, int width, int height, int startY, int endY, int entryHeight) { super(client, width, height, startY, endY, entryHeight); - field_19091 = false; // showSelection + visible = false; // showSelection } public void creditsClearEntries() { - clearEntries(); + clearItems(); } - private CreditsEntry getEntry(int int_1) { + private CreditsItem getEntry(int int_1) { return this.children().get(int_1); } - public void creditsAddEntry(CreditsEntry entry) { - addEntry(entry); + public void creditsAddEntry(CreditsItem entry) { + addItem(entry); } @Override - // getRowWidth - public int method_20053() { - return field_19083 - 80; // width + public int getItemWidth() { + return width - 80; } @Override - // getScrollbarPosition - protected int method_20078() { - return field_19083 - 40; // width + protected int getScrollbarPosition() { + return width - 40; } } diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsItem.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsItem.java new file mode 100644 index 000000000..0c7c1f8ce --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsItem.java @@ -0,0 +1,24 @@ +package me.shedaniel.rei.gui.credits; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.widget.ItemListWidget; +import net.minecraft.text.TextComponent; + +public class CreditsItem extends ItemListWidget.Item { + + private String text; + + public CreditsItem(TextComponent textComponent) { + this(textComponent.getFormattedText()); + } + + public CreditsItem(String text) { + this.text = text; + } + + @Override + public void render(int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isSelected, float delta) { + MinecraftClient.getInstance().textRenderer.drawWithShadow(text, x + 5, y + 5, -1); + } + +} 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 c8da3f5a2..56eeceb4e 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java @@ -34,8 +34,8 @@ public class CreditsScreen extends Screen { children.add(entryListWidget = new CreditsEntryListWidget(minecraft, width, height, 32, height - 32, 12)); entryListWidget.creditsClearEntries(); for(String line : I18n.translate("text.rei.credit.text").split("\n")) - entryListWidget.creditsAddEntry(new CreditsEntry(new StringTextComponent(line))); - entryListWidget.creditsAddEntry(new CreditsEntry(new StringTextComponent(""))); + entryListWidget.creditsAddEntry(new CreditsItem(new StringTextComponent(line))); + entryListWidget.creditsAddEntry(new CreditsItem(new StringTextComponent(""))); children.add(buttonDone = new ButtonWidget(width / 2 - 100, height - 26, 200, 20, I18n.translate("gui.done")) { @Override public void onPressed() { 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 b16e38187..0578e8bf6 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java @@ -2,10 +2,9 @@ package me.shedaniel.rei.gui.widget; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.client.ScreenHelper; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.audio.PositionedSoundInstance; import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.InputListener; +import net.minecraft.client.gui.Element; import net.minecraft.client.gui.widget.AbstractButtonWidget; import net.minecraft.sound.SoundEvents; import net.minecraft.text.TextComponent; @@ -20,7 +19,6 @@ public abstract class ButtonWidget extends HighlightableWidget { public String text; public boolean enabled; - public boolean visible; public boolean focused; private Rectangle bounds; @@ -31,7 +29,6 @@ public abstract class ButtonWidget extends HighlightableWidget { public ButtonWidget(Rectangle rectangle, String text) { this.bounds = rectangle; this.enabled = true; - this.visible = true; this.text = text; } @@ -60,72 +57,68 @@ public abstract class ButtonWidget extends HighlightableWidget { @Override public void render(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(AbstractButtonWidget.WIDGETS_LOCATION); - GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - 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); - //Four Corners - this.blit(x, y, 0, 46 + textureOffset * 20, 4, 4); - this.blit(x + width - 4, y, 196, 46 + textureOffset * 20, 4, 4); - this.blit(x, y + height - 4, 0, 62 + textureOffset * 20, 4, 4); - this.blit(x + width - 4, y + height - 4, 196, 62 + textureOffset * 20, 4, 4); - - //Sides - this.blit(x + 4, y, 4, 46 + textureOffset * 20, width - 8, 4); - this.blit(x + 4, y + height - 4, 4, 62 + textureOffset * 20, width - 8, 4); - - for(int i = y + 4; i < y + height - 4; i += 4) { - this.blit(x, i, 0, 50 + textureOffset * 20, width / 2, MathHelper.clamp(y + height - 4 - i, 0, 4)); - this.blit(x + width / 2, i, 200 - width / 2, 50 + textureOffset * 20, width / 2, MathHelper.clamp(y + height - 4 - i, 0, 4)); - } - - int colour = 14737632; - if (!this.enabled) { - colour = 10526880; - } else if (isHovered(mouseX, mouseY)) { - colour = 16777120; - } - - this.drawCenteredString(textRenderer, this.text, x + width / 2, y + (height - 8) / 2, colour); - - if (getTooltips().isPresent()) - if (isHighlighted(mouseX, mouseY)) - ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltips().get().split("\n"))); - else if (focused) - ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(new Point(x + width / 2, y + height / 2), getTooltips().get().split("\n"))); + int x = bounds.x, y = bounds.y, width = bounds.width, height = bounds.height; + TextRenderer textRenderer = minecraft.textRenderer; + minecraft.getTextureManager().bindTexture(AbstractButtonWidget.WIDGETS_LOCATION); + GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); + 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); + //Four Corners + this.blit(x, y, 0, 46 + textureOffset * 20, 4, 4); + this.blit(x + width - 4, y, 196, 46 + textureOffset * 20, 4, 4); + this.blit(x, y + height - 4, 0, 62 + textureOffset * 20, 4, 4); + this.blit(x + width - 4, y + height - 4, 196, 62 + textureOffset * 20, 4, 4); + + //Sides + this.blit(x + 4, y, 4, 46 + textureOffset * 20, width - 8, 4); + this.blit(x + 4, y + height - 4, 4, 62 + textureOffset * 20, width - 8, 4); + + for(int i = y + 4; i < y + height - 4; i += 4) { + this.blit(x, i, 0, 50 + textureOffset * 20, width / 2, MathHelper.clamp(y + height - 4 - i, 0, 4)); + this.blit(x + width / 2, i, 200 - width / 2, 50 + textureOffset * 20, width / 2, MathHelper.clamp(y + height - 4 - i, 0, 4)); } + + int colour = 14737632; + if (!this.enabled) { + colour = 10526880; + } else if (isHovered(mouseX, mouseY)) { + colour = 16777120; + } + + this.drawCenteredString(textRenderer, this.text, x + width / 2, y + (height - 8) / 2, colour); + + if (getTooltips().isPresent()) + if (!focused && isHighlighted(mouseX, mouseY)) + ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltips().get().split("\n"))); + else if (focused) + ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(new Point(x + width / 2, y + height / 2), getTooltips().get().split("\n"))); } public boolean isHovered(int mouseX, int mouseY) { - return bounds.contains(mouseX, mouseY) || focused; + return isMouseOver(mouseX, mouseY) || focused; } @Override public boolean isPartOfFocusCycle() { - return visible && enabled; + return enabled; } @Override public void onFocusChanged(boolean boolean_1, boolean boolean_2) { - if (boolean_2) - focused = boolean_1; + focused = boolean_2; } @Override - public List children() { + public List children() { return Collections.emptyList(); } @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { if (bounds.contains(mouseX, mouseY) && enabled && button == 0) { - MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); + minecraft.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); onPressed(); return true; } @@ -134,11 +127,11 @@ public abstract class ButtonWidget extends HighlightableWidget { @Override public boolean keyPressed(int int_1, int int_2, int int_3) { - if (this.enabled && this.visible) { + if (this.enabled) { if (int_1 != 257 && int_1 != 32 && int_1 != 335) { return false; } else { - MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); + minecraft.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); this.onPressed(); return true; } 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 5c3667adb..ed2df3c06 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java @@ -1,6 +1,9 @@ package me.shedaniel.rei.gui.widget; +import me.shedaniel.rei.client.ScreenHelper; + import java.awt.*; +import java.util.Optional; public abstract class ClickableLabelWidget extends LabelWidget { @@ -17,6 +20,11 @@ public abstract class ClickableLabelWidget extends LabelWidget { if (isHovered(mouseX, mouseY)) colour = hoveredColor; drawCenteredString(textRenderer, (isHovered(mouseX, mouseY) ? "§n" : "") + text, x, y, colour); + if (getTooltips().isPresent()) + if (!focused && isHighlighted(mouseX, mouseY)) + ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltips().get().split("\n"))); + else if (focused) + ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(new Point(x, y), getTooltips().get().split("\n"))); } @Override @@ -28,6 +36,10 @@ public abstract class ClickableLabelWidget extends LabelWidget { return false; } + public Optional getTooltips() { + return Optional.empty(); + } + @Override public boolean keyPressed(int int_1, int int_2, int int_3) { if (int_1 != 257 && int_1 != 32 && int_1 != 335) { @@ -49,8 +61,7 @@ public abstract class ClickableLabelWidget extends LabelWidget { @Override public void onFocusChanged(boolean boolean_1, boolean boolean_2) { - if (boolean_2) - focused = boolean_1; + focused = boolean_2; } public abstract void onLabelClicked(); 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 c6a8f79f0..52923df6f 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java @@ -2,7 +2,6 @@ package me.shedaniel.rei.gui.widget; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.RoughlyEnoughItemsCore; -import me.shedaniel.rei.client.ScreenHelper; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.GuiLighting; @@ -12,6 +11,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; import java.awt.*; +import java.util.Optional; public abstract class CraftableToggleButtonWidget extends ButtonWidget { @@ -20,7 +20,7 @@ public abstract class CraftableToggleButtonWidget extends ButtonWidget { public CraftableToggleButtonWidget(Rectangle rectangle) { super(rectangle, ""); - this.itemRenderer = MinecraftClient.getInstance().getItemRenderer(); + this.itemRenderer = minecraft.getItemRenderer(); } public CraftableToggleButtonWidget(int x, int y, int width, int height) { @@ -42,8 +42,15 @@ public abstract class CraftableToggleButtonWidget extends ButtonWidget { this.blitOffset = 100f; this.blit(getBounds().x, getBounds().y, (56 + (RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() ? 0 : 20)), 202, 20, 20); this.blitOffset = 0f; - if (getBounds().contains(mouseX, mouseY)) - ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate(RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() ? "text.rei.showing_craftable" : "text.rei.showing_all"))); } + @Override + public boolean isPartOfFocusCycle() { + return false; + } + + @Override + public Optional getTooltips() { + return Optional.ofNullable(I18n.translate(RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() ? "text.rei.showing_craftable" : "text.rei.showing_all")); + } } 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 8e96b81c7..65b07728d 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/DraggableWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/DraggableWidget.java @@ -2,7 +2,7 @@ package me.shedaniel.rei.gui.widget; import me.shedaniel.cloth.api.ClientUtils; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.InputListener; +import net.minecraft.client.gui.Element; import net.minecraft.client.util.Window; import java.awt.*; @@ -51,7 +51,7 @@ public abstract class DraggableWidget extends HighlightableWidget { } return true; } - for(InputListener listener : children()) + for(Element listener : children()) if (listener.mouseDragged(double_1, double_2, int_1, double_3, double_4)) return true; return false; @@ -67,7 +67,7 @@ public abstract class DraggableWidget extends HighlightableWidget { onMouseReleaseMidPoint(getMidPoint()); return true; } - for(InputListener listener : children()) + for(Element listener : children()) 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 382293a0a..82f97ab33 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/HighlightableWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/HighlightableWidget.java @@ -6,16 +6,21 @@ public abstract class HighlightableWidget extends Widget { abstract public Shape getBounds(); - public boolean isHighlighted(int mouseX, int mouseY) { - return getBounds().contains(mouseX, mouseY); + public final boolean isHighlighted(int mouseX, int mouseY) { + return isHighlighted((double) mouseX, (double) mouseY); } - public boolean isHighlighted(Point point) { - return this.isHighlighted(point.x, point.y); + public final boolean isHighlighted(Point point) { + return isHighlighted(point.x, point.y); } public boolean isHighlighted(double mouseX, double mouseY) { - return this.isHighlighted((int) mouseX, (int) mouseY); + return getBounds().contains(mouseX, mouseY); + } + + @Override + public boolean isMouseOver(double double_1, double double_2) { + return isHighlighted(double_1, double_2); } } 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 4bb90cd2e..4f4ee1280 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java @@ -73,15 +73,11 @@ public class ItemListOverlay extends Widget { @Override public void render(int int_1, int int_2, float float_1) { widgets.forEach(widget -> widget.render(int_1, int_2, float_1)); - ClientPlayerEntity player = MinecraftClient.getInstance().player; - if (rectangle.contains(ClientUtils.getMouseLocation()) && ClientHelper.isCheating() && !player.inventory.getCursorStack().isEmpty() && MinecraftClient.getInstance().isInSingleplayer()) + ClientPlayerEntity player = minecraft.player; + if (rectangle.contains(ClientUtils.getMouseLocation()) && ClientHelper.isCheating() && !player.inventory.getCursorStack().isEmpty() && minecraft.isInSingleplayer()) ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate("text.rei.delete_items"))); } - public List getWidgets() { - return widgets; - } - public void updateList(Rectangle bounds, int page, String searchTerm) { this.rectangle = bounds; this.widgets = Lists.newLinkedList(); @@ -98,7 +94,7 @@ public class ItemListOverlay extends Widget { ItemSlotWidget slotWidget = new ItemSlotWidget((int) (startX + (i % width) * 18), (int) (startY + MathHelper.floor(i / width) * 18), Collections.singletonList(currentDisplayed.get(j)), false, true, true) { @Override protected void drawToolTip(ItemStack itemStack, float delta) { - ClientPlayerEntity player = MinecraftClient.getInstance().player; + ClientPlayerEntity player = minecraft.player; if (!ClientHelper.isCheating() || player.inventory.getCursorStack().isEmpty()) super.drawToolTip(itemStack, delta); } @@ -245,12 +241,12 @@ public class ItemListOverlay extends Widget { @Override public boolean mouseClicked(double double_1, double double_2, int int_1) { if (rectangle.contains(double_1, double_2)) { - ClientPlayerEntity player = MinecraftClient.getInstance().player; - if (ClientHelper.isCheating() && !player.inventory.getCursorStack().isEmpty() && MinecraftClient.getInstance().isInSingleplayer()) { + ClientPlayerEntity player = minecraft.player; + if (ClientHelper.isCheating() && !player.inventory.getCursorStack().isEmpty() && minecraft.isInSingleplayer()) { ClientHelper.sendDeletePacket(); return true; } - if (!player.inventory.getCursorStack().isEmpty() && MinecraftClient.getInstance().isInSingleplayer()) + if (!player.inventory.getCursorStack().isEmpty() && minecraft.isInSingleplayer()) return false; for(Widget widget : children()) if (widget.mouseClicked(double_1, double_2, int_1)) 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 d12da64d0..ef01f2aa1 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java @@ -5,8 +5,7 @@ import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.cloth.api.ClientUtils; import me.shedaniel.rei.client.ClientHelper; import me.shedaniel.rei.client.ScreenHelper; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.InputListener; +import net.minecraft.client.gui.Element; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.item.ItemStack; @@ -46,7 +45,7 @@ public class ItemSlotWidget extends HighlightableWidget { } @Override - public List children() { + public List children() { return Collections.emptyList(); } @@ -62,7 +61,7 @@ public class ItemSlotWidget extends HighlightableWidget { public void render(int mouseX, int mouseY, float delta) { final ItemStack itemStack = getCurrentStack(); if (drawBackground) { - MinecraftClient.getInstance().getTextureManager().bindTexture(RECIPE_GUI); + minecraft.getTextureManager().bindTexture(RECIPE_GUI); blit(this.x - 1, this.y - 1, 0, 222, 18, 18); } if (drawHighlightedBackground && isHighlighted(mouseX, mouseY)) { @@ -76,10 +75,10 @@ public class ItemSlotWidget extends HighlightableWidget { } if (!itemStack.isEmpty()) { GuiLighting.enableForItems(); - ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); + ItemRenderer itemRenderer = minecraft.getItemRenderer(); itemRenderer.zOffset = 200.0F; itemRenderer.renderGuiItem(itemStack, x, y); - itemRenderer.renderGuiItemOverlay(MinecraftClient.getInstance().textRenderer, itemStack, x, y, getItemCountOverlay(itemStack)); + itemRenderer.renderGuiItemOverlay(minecraft.textRenderer, itemStack, x, y, getItemCountOverlay(itemStack)); itemRenderer.zOffset = 0.0F; } if (!itemStack.isEmpty() && isHighlighted(mouseX, mouseY) && showToolTips) @@ -92,7 +91,6 @@ public class ItemSlotWidget extends HighlightableWidget { protected List getTooltip(ItemStack itemStack) { final String modString = "§9§o" + ClientHelper.getModFromItemStack(itemStack); - MinecraftClient mc = MinecraftClient.getInstance(); List toolTip = Lists.newArrayList(ItemListOverlay.tryGetItemStackToolTip(itemStack)); toolTip.addAll(getExtraToolTips(itemStack)); for(String s : Lists.newArrayList(toolTip)) 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 8a67647c5..f5b498656 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java @@ -1,8 +1,7 @@ package me.shedaniel.rei.gui.widget; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.InputListener; +import net.minecraft.client.gui.Element; import java.awt.*; import java.util.Collections; @@ -19,7 +18,7 @@ public class LabelWidget extends HighlightableWidget { this.x = x; this.y = y; this.text = text; - this.textRenderer = MinecraftClient.getInstance().textRenderer; + this.textRenderer = minecraft.textRenderer; } @Override @@ -29,7 +28,7 @@ public class LabelWidget extends HighlightableWidget { } @Override - public List children() { + public List children() { return Collections.emptyList(); } 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 ee7567b88..3fec6a0f6 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeChoosePageWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeChoosePageWidget.java @@ -59,7 +59,7 @@ public class RecipeChoosePageWidget extends DraggableWidget { } @Override - public boolean isHighlighted(int mouseX, int mouseY) { + public boolean isHighlighted(double mouseX, double mouseY) { return getBounds().contains(mouseX, mouseY) || new Rectangle(bounds.x + bounds.width - 50, bounds.y + bounds.height - 3, 50, 36).contains(mouseX, mouseY); } @@ -90,14 +90,14 @@ public class RecipeChoosePageWidget extends DraggableWidget { @Override public void render(int i, int i1, float v) { - MinecraftClient.getInstance().textRenderer.draw(I18n.translate("text.rei.choose_page"), bounds.x + 5, bounds.y + 5, 4210752); + minecraft.textRenderer.draw(I18n.translate("text.rei.choose_page"), bounds.x + 5, bounds.y + 5, 4210752); String endString = String.format(" /%d", maxPage); - int width = MinecraftClient.getInstance().textRenderer.getStringWidth(endString); - MinecraftClient.getInstance().textRenderer.draw(endString, bounds.x + bounds.width - 5 - width, bounds.y + 22, 4210752); + int width = minecraft.textRenderer.getStringWidth(endString); + minecraft.textRenderer.draw(endString, bounds.x + bounds.width - 5 - width, bounds.y + 22, 4210752); } }); String endString = String.format(" /%d", maxPage); - int width = MinecraftClient.getInstance().textRenderer.getStringWidth(endString); + int width = minecraft.textRenderer.getStringWidth(endString); this.widgets.add(textFieldWidget = new TextFieldWidget(bounds.x + 7, bounds.y + 16, bounds.width - width - 12, 18)); textFieldWidget.stripInvaild = s -> { StringBuilder stringBuilder_1 = new StringBuilder(); @@ -177,7 +177,7 @@ public class RecipeChoosePageWidget extends DraggableWidget { @Override public void onMouseReleaseMidPoint(Point midPoint) { ConfigManager configManager = RoughlyEnoughItemsCore.getConfigManager(); - Window window = MinecraftClient.getInstance().window; + Window window = minecraft.window; configManager.getConfig().choosePageDialogPoint = new RelativePoint(midPoint.getX() / window.getScaledWidth(), midPoint.getY() / window.getScaledHeight()); try { configManager.saveConfig(); 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 8aaf46af9..163051989 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,6 @@ package me.shedaniel.rei.gui.widget; import me.shedaniel.rei.api.RecipeDisplay; import me.shedaniel.rei.api.SpeedCraftFunctional; import me.shedaniel.rei.client.ScreenHelper; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.resource.language.I18n; import java.awt.*; @@ -23,7 +22,7 @@ public class SpeedCraftingButtonWidget extends ButtonWidget { @Override public void onPressed() { - MinecraftClient.getInstance().openScreen(ScreenHelper.getLastContainerScreen()); + minecraft.openScreen(ScreenHelper.getLastContainerScreen()); ScreenHelper.getLastOverlay().onInitialized(); functional.performAutoCraft(ScreenHelper.getLastContainerScreen(), displaySupplier.get()); } 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 ac9d8e37f..451f3dac1 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,6 @@ package me.shedaniel.rei.gui.widget; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.gui.RecipeViewingScreen; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.item.ItemStack; @@ -29,7 +28,7 @@ public class TabWidget extends HighlightableWidget { this.id = id; this.recipeViewingWidget = recipeViewingWidget; this.bounds = bounds; - this.itemRenderer = MinecraftClient.getInstance().getItemRenderer(); + this.itemRenderer = minecraft.getItemRenderer(); } public void setItem(ItemStack item, String categoryName, boolean selected) { @@ -72,13 +71,13 @@ public class TabWidget extends HighlightableWidget { GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GuiLighting.disable(); - MinecraftClient.getInstance().getTextureManager().bindTexture(CHEST_GUI_TEXTURE); + minecraft.getTextureManager().bindTexture(CHEST_GUI_TEXTURE); this.blit(bounds.x, bounds.y + 2, selected ? 28 : 0, 192, 28, (selected ? 30 : 27)); this.blitOffset = 100.0F; this.itemRenderer.zOffset = 100.0F; GuiLighting.enableForItems(); this.itemRenderer.renderGuiItem(getItemStack(), l, i1); - this.itemRenderer.renderGuiItemOverlay(MinecraftClient.getInstance().textRenderer, getItemStack(), l, i1); + this.itemRenderer.renderGuiItemOverlay(minecraft.textRenderer, getItemStack(), l, i1); GlStateManager.disableLighting(); this.itemRenderer.zOffset = 0.0F; this.blitOffset = 0.0F; diff --git a/src/main/java/me/shedaniel/rei/gui/widget/TextFieldWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/TextFieldWidget.java index 9b4d29246..2d412609b 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/TextFieldWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/TextFieldWidget.java @@ -3,7 +3,6 @@ package me.shedaniel.rei.gui.widget; import com.google.common.base.Predicates; import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.SharedConstants; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.Screen; import net.minecraft.client.render.BufferBuilder; @@ -56,7 +55,7 @@ public class TextFieldWidget extends HighlightableWidget { this.renderTextProvider = (string_1, integer_1) -> { return string_1; }; - this.textRenderer = MinecraftClient.getInstance().textRenderer; + this.textRenderer = minecraft.textRenderer; this.bounds = rectangle; this.stripInvaild = s -> SharedConstants.stripInvalidChars(s); } @@ -270,16 +269,16 @@ public class TextFieldWidget extends HighlightableWidget { this.method_1884(0); return true; } else if (Screen.isCopy(int_1)) { - MinecraftClient.getInstance().keyboard.setClipboard(this.getSelectedText()); + minecraft.keyboard.setClipboard(this.getSelectedText()); return true; } else if (Screen.isPaste(int_1)) { if (this.editable) { - this.addText(MinecraftClient.getInstance().keyboard.getClipboard()); + this.addText(minecraft.keyboard.getClipboard()); } return true; } else if (Screen.isCut(int_1)) { - MinecraftClient.getInstance().keyboard.setClipboard(this.getSelectedText()); + minecraft.keyboard.setClipboard(this.getSelectedText()); if (this.editable) { this.addText(""); } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/Widget.java b/src/main/java/me/shedaniel/rei/gui/widget/Widget.java index d2e228921..58edfb070 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/Widget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/Widget.java @@ -1,8 +1,11 @@ package me.shedaniel.rei.gui.widget; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.AbstractParentElement; import net.minecraft.client.gui.Drawable; -import net.minecraft.client.gui.ScreenComponent; - -public abstract class Widget extends ScreenComponent implements Drawable { +public abstract class Widget extends AbstractParentElement implements Drawable { + + protected final MinecraftClient minecraft = MinecraftClient.getInstance(); + } diff --git a/src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java b/src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java new file mode 100644 index 000000000..209f442f0 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java @@ -0,0 +1,9 @@ +package me.shedaniel.rei.listeners; + +public interface CreativePlayerInventoryScreenHooks { + int rei_getSelectedTab(); + + boolean rei_doRenderScrollBar(); + + boolean rei_getField2888(); +} diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java index 269d54de2..002498a01 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java @@ -1,9 +1,8 @@ package me.shedaniel.rei.mixin; -import me.shedaniel.rei.api.TabGetter; +import me.shedaniel.rei.listeners.CreativePlayerInventoryScreenHooks; import me.shedaniel.rei.client.ScreenHelper; 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; @@ -59,11 +58,11 @@ public class MixinContainerScreen extends Screen implements ContainerScreenHooks return focusedSlot; } - @Inject(method = "keyPressed(III)Z", at = @At("HEAD"), cancellable = true, remap = false) + @Inject(method = "keyPressed(III)Z", at = @At("HEAD"), cancellable = true) public void keyPressed(int int_1, int int_2, int int_3, CallbackInfoReturnable ci) { - if (MinecraftClient.getInstance().currentScreen instanceof CreativePlayerInventoryScreen) { - TabGetter tabGetter = (TabGetter) MinecraftClient.getInstance().currentScreen; - if (tabGetter.rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex()) + if (minecraft.currentScreen instanceof CreativePlayerInventoryScreen) { + CreativePlayerInventoryScreenHooks creativePlayerInventoryScreenHooks = (CreativePlayerInventoryScreenHooks) minecraft.currentScreen; + if (creativePlayerInventoryScreenHooks.rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex()) return; } if (ScreenHelper.getLastOverlay().keyPressed(int_1, int_2, int_3)) { @@ -72,13 +71,4 @@ public class MixinContainerScreen extends Screen implements ContainerScreenHooks } } - // TODO: Make this use an event when Cloth mixin issues are fixed - @Override - public boolean charTyped(char char_1, int int_1) { - if (!(MinecraftClient.getInstance().currentScreen instanceof CreativePlayerInventoryScreen)) - if (ScreenHelper.getLastOverlay().charTyped(char_1, int_1)) - return true; - return super.charTyped(char_1, int_1); - } - } diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinCraftingTableScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinCraftingTableScreen.java index 6fdc72693..6933198c9 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinCraftingTableScreen.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinCraftingTableScreen.java @@ -1,7 +1,6 @@ package me.shedaniel.rei.mixin; import net.minecraft.client.gui.ContainerScreen; -import net.minecraft.client.gui.InputListener; import net.minecraft.client.gui.container.CraftingTableScreen; import net.minecraft.client.gui.recipebook.RecipeBookGui; import net.minecraft.container.Container; @@ -25,12 +24,7 @@ public abstract class MixinCraftingTableScreen extends ContainerScreen { super(container_1, playerInventory_1, textComponent_1); } - @Override - public InputListener getFocused() { - return super.getFocused(); - } - - @Inject(method = "mouseClicked", at = @At("HEAD"), cancellable = true, remap = false) + @Inject(method = "mouseClicked", at = @At("HEAD"), cancellable = true) public void mouseClicked(double mouseX, double mouseY, int button, CallbackInfoReturnable ci) { if (recipeBookGui.mouseClicked(mouseX, mouseY, button)) { method_20084(recipeBookGui); diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java index 853624736..1e45d019e 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.cloth.api.ClientUtils; import me.shedaniel.rei.client.ScreenHelper; +import me.shedaniel.rei.listeners.CreativePlayerInventoryScreenHooks; import net.minecraft.client.gui.ingame.AbstractPlayerInventoryScreen; import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen; import net.minecraft.entity.player.PlayerInventory; @@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(CreativePlayerInventoryScreen.class) -public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerInventoryScreen { +public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerInventoryScreen implements CreativePlayerInventoryScreenHooks { @Shadow private static int selectedTab; @@ -28,16 +28,22 @@ public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerI @Shadow protected abstract boolean doRenderScrollBar(); - @Inject(method = "mouseScrolled", at = @At("HEAD"), cancellable = true, remap = false) - public void mouseScrolled(double i, double j, double amount, CallbackInfoReturnable ci) { - if (!doRenderScrollBar() && selectedTab == ItemGroup.INVENTORY.getIndex()) - if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().getRectangle().contains(ClientUtils.getMouseLocation()) && ScreenHelper.getLastOverlay().mouseScrolled(i, j, amount)) { - ci.setReturnValue(true); - ci.cancel(); - } + @Override + public int rei_getSelectedTab() { + return selectedTab; + } + + @Override + public boolean rei_doRenderScrollBar() { + return doRenderScrollBar(); + } + + @Override + public boolean rei_getField2888() { + return field_2888; } - @Inject(method = "keyPressed", at = @At("HEAD"), cancellable = true, remap = false) + @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 (ScreenHelper.getLastOverlay().keyPressed(int_1, int_2, int_3)) { @@ -46,16 +52,7 @@ public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerI } } - @Inject(method = "charTyped", at = @At("HEAD"), cancellable = true, remap = false) - public void charTyped(char char_1, int int_1, CallbackInfoReturnable ci) { - if (!this.field_2888 && selectedTab == ItemGroup.INVENTORY.getIndex()) - if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().charTyped(char_1, int_1)) { - ci.setReturnValue(true); - ci.cancel(); - } - } - - @Inject(method = "mouseClicked", at = @At("HEAD"), cancellable = true, remap = false) + @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 (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().mouseClicked(i, j, k)) { diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinPlayerInventoryScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinPlayerInventorySc