diff options
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui')
14 files changed, 526 insertions, 267 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index eb1daa9a4..41700f7c1 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -5,11 +5,12 @@ import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.client.ClientHelper; import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.gui.credits.CreditsScreen; import me.shedaniel.rei.gui.widget.*; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.ContainerScreen; +import net.minecraft.client.gui.DrawableContainer; import net.minecraft.client.gui.GuiEventListener; -import net.minecraft.client.gui.Screen; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.Window; @@ -22,7 +23,7 @@ import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; -public class ContainerScreenOverlay extends Screen { +public class ContainerScreenOverlay extends DrawableContainer { private static final List<QueuedTooltip> QUEUED_TOOLTIPS = Lists.newArrayList(); public static String searchTerm = ""; @@ -80,7 +81,13 @@ public class ContainerScreenOverlay extends Screen { ClientHelper.openConfigWindow(GuiHelper.getLastContainerScreen()); } }); - this.widgets.add(new LabelWidget(rectangle.x + (rectangle.width / 2), rectangle.y + 10, "") { + widgets.add(new ButtonWidget(RoughlyEnoughItemsCore.getConfigHelper().isMirrorItemPanel() ? window.getScaledWidth() - 50 : 10, window.getScaledHeight() - 30, 40, 20, I18n.translate("text.rei.credits")) { + @Override + public void onPressed(int button, double mouseX, double mouseY) { + MinecraftClient.getInstance().openScreen(new CreditsScreen(GuiHelper.getLastContainerScreen())); + } + }); + widgets.add(new LabelWidget(rectangle.x + (rectangle.width / 2), rectangle.y + 10, "") { @Override public void draw(int mouseX, int mouseY, float partialTicks) { page = MathHelper.clamp(page, 0, getTotalPage()); @@ -101,7 +108,7 @@ public class ContainerScreenOverlay extends Screen { }; GuiHelper.searchField.setChangedListener(s -> { searchTerm = s; - itemListOverlay.updateList(page, searchTerm); + itemListOverlay.updateList(getItemListArea(), page, searchTerm); }); GuiHelper.searchField.setBounds(getTextFieldArea()); this.widgets.add(GuiHelper.searchField); @@ -111,12 +118,11 @@ public class ContainerScreenOverlay extends Screen { @Override public void onPressed(int button, double mouseX, double mouseY) { RoughlyEnoughItemsCore.getConfigHelper().toggleCraftableOnly(); - itemListOverlay.updateList(page, searchTerm); + itemListOverlay.updateList(getItemListArea(), page, searchTerm); } }); this.itemListOverlay.updateList(getItemListArea(), page, searchTerm); - this.listeners.addAll(widgets); } private Rectangle getTextFieldArea() { @@ -127,7 +133,7 @@ public class ContainerScreenOverlay extends Screen { RecipeViewingWidgetScreen widget = (RecipeViewingWidgetScreen) MinecraftClient.getInstance().currentScreen; return new Rectangle(widget.getBounds().x, window.getScaledHeight() - 22, widget.getBounds().width - widthRemoved, 18); } - return new Rectangle(GuiHelper.getLastMixinContainerScreen().getContainerLeft(), window.getScaledHeight() - 22, GuiHelper.getLastMixinContainerScreen().getContainerWidth() - widthRemoved, 18); + return new Rectangle(GuiHelper.getLastMixinContainerScreen().rei_getContainerLeft(), window.getScaledHeight() - 22, GuiHelper.getLastMixinContainerScreen().rei_getContainerWidth() - widthRemoved, 18); } private Rectangle getCraftableToggleArea() { @@ -149,13 +155,13 @@ public class ContainerScreenOverlay extends Screen { return rectangle; } - public void render(int mouseX, int mouseY, float partialTicks) { + public void drawOverlay(int mouseX, int mouseY, float partialTicks) { List<ItemStack> currentStacks = ClientHelper.getInventoryItemsTypes(); if (getLeft() != lastLeft) onInitialized(); else if (RoughlyEnoughItemsCore.getConfigHelper().craftableOnly() && (!hasSameListContent(new LinkedList<>(GuiHelper.inventoryStacks), currentStacks) || (currentStacks.size() != GuiHelper.inventoryStacks.size()))) { GuiHelper.inventoryStacks = ClientHelper.getInventoryItemsTypes(); - itemListOverlay.updateList(page, searchTerm); + itemListOverlay.updateList(getItemListArea(), page, searchTerm); } GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GuiLighting.disable(); @@ -185,7 +191,6 @@ public class ContainerScreenOverlay extends Screen { QUEUED_TOOLTIPS.add(queuedTooltip); } - @Override public void draw(int int_1, int int_2, float float_1) { if (!GuiHelper.isOverlayVisible()) return; @@ -194,14 +199,11 @@ public class ContainerScreenOverlay extends Screen { widget.draw(int_1, int_2, float_1); }); GuiLighting.disable(); - itemListOverlay.draw(int_1, int_2, float_1); - GuiLighting.disable(); - super.draw(int_1, int_2, float_1); } private Rectangle calculateBoundary() { if (!RoughlyEnoughItemsCore.getConfigHelper().isMirrorItemPanel()) { - int startX = GuiHelper.getLastMixinContainerScreen().getContainerLeft() + GuiHelper.getLastMixinContainerScreen().getContainerWidth() + 10; + int startX = GuiHelper.getLastMixinContainerScreen().rei_getContainerLeft() + GuiHelper.getLastMixinContainerScreen().rei_getContainerWidth() + 10; int width = window.getScaledWidth() - startX; if (MinecraftClient.getInstance().currentScreen instanceof RecipeViewingWidgetScreen) { RecipeViewingWidgetScreen widget = (RecipeViewingWidgetScreen) MinecraftClient.getInstance().currentScreen; @@ -210,12 +212,7 @@ public class ContainerScreenOverlay extends Screen { } return new Rectangle(startX, 0, width, window.getScaledHeight()); } - int width = GuiHelper.getLastMixinContainerScreen().getContainerLeft() - 6; - if (MinecraftClient.getInstance().currentScreen instanceof RecipeViewingWidgetScreen) { - RecipeViewingWidgetScreen widget = (RecipeViewingWidgetScreen) MinecraftClient.getInstance().currentScreen; - width = widget.getBounds().x - 6; - } - return new Rectangle(4, 0, width, window.getScaledHeight()); + return new Rectangle(4, 0, getLeft() - 6, window.getScaledHeight()); } private int getLeft() { @@ -223,7 +220,9 @@ public class ContainerScreenOverlay extends Screen { RecipeViewingWidgetScreen widget = (RecipeViewingWidgetScreen) MinecraftClient.getInstance().currentScreen; return widget.getBounds().x; } - return GuiHelper.getLastMixinContainerScreen().getContainerLeft(); + if (MinecraftClient.getInstance().player.getRecipeBook().isGuiOpen()) + return GuiHelper.getLastMixinContainerScreen().rei_getContainerLeft() - 147 - 30; + return GuiHelper.getLastMixinContainerScreen().rei_getContainerLeft(); } private int getTotalPage() { @@ -251,15 +250,15 @@ public class ContainerScreenOverlay extends Screen { @Override public boolean keyPressed(int int_1, int int_2, int int_3) { + for(GuiEventListener listener : widgets) + if (listener.keyPressed(int_1, int_2, int_3)) + return true; if (ClientHelper.HIDE.matchesKey(int_1, int_2)) { GuiHelper.toggleOverlayVisible(); return true; } if (!GuiHelper.isOverlayVisible()) return false; - for(GuiEventListener listener : listeners) - if (listener.keyPressed(int_1, int_2, int_3)) - return true; Point point = ClientHelper.getMouseLocation(); ItemStack itemStack = null; for(IWidget widget : itemListOverlay.getListeners()) @@ -276,8 +275,8 @@ public class ContainerScreenOverlay extends Screen { } } if (itemStack == null && MinecraftClient.getInstance().currentScreen instanceof ContainerScreen) - if (GuiHelper.getLastMixinContainerScreen().getHoveredSlot() != null) - itemStack = GuiHelper.getLastMixinContainerScreen().getHoveredSlot().getStack(); + if (GuiHelper.getLastMixinContainerScreen().rei_getHoveredSlot() != null) + itemStack = GuiHelper.getLastMixinContainerScreen().rei_getHoveredSlot().getStack(); if (itemStack != null && !itemStack.isEmpty()) { if (ClientHelper.RECIPE.matchesKey(int_1, int_2)) return ClientHelper.executeRecipeKeyBind(this, itemStack); @@ -291,13 +290,18 @@ public class ContainerScreenOverlay extends Screen { public boolean charTyped(char char_1, int int_1) { if (!GuiHelper.isOverlayVisible()) return false; - for(GuiEventListener listener : listeners) + for(GuiEventListener listener : getEntries()) if (listener.charTyped(char_1, int_1)) return true; return super.charTyped(char_1, int_1); } @Override + protected List<? extends GuiEventListener> getEntries() { + return widgets; + } + + @Override public boolean mouseClicked(double double_1, double double_2, int int_1) { if (!GuiHelper.isOverlayVisible()) return false; diff --git a/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java b/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java new file mode 100644 index 000000000..013dd9cbe --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java @@ -0,0 +1,70 @@ +package me.shedaniel.rei.gui.config; + +import me.shedaniel.rei.client.ClientHelper; +import me.shedaniel.rei.gui.widget.ButtonWidget; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.audio.PositionedSoundInstance; +import net.minecraft.client.gui.widget.EntryListWidget; +import net.minecraft.client.util.Window; +import net.minecraft.sound.SoundEvents; +import net.minecraft.text.TextComponent; + +import java.awt.*; + +public class ConfigEntry extends EntryListWidget.Entry<ConfigEntry> { + + private TextComponent nameComponent; + private ConfigEntryButtonProvider buttonProvider; + private ButtonWidget buttonWidget; + + public ConfigEntry(TextComponent nameComponent, ConfigEntryButtonProvider buttonProvider) { + this.nameComponent = nameComponent; + 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; + } + + @Override + public void onPressed(int button, double mouseX, double mouseY) {} + }; + } + + @Override + public void draw(int entryWidth, int height, int i3, int i4, boolean isSelected, float delta) { + int x = getX(); + int y = getY(); + Window window = MinecraftClient.getInstance().window; + Point mouse = ClientHelper.getMouseLocation(); + MinecraftClient.getInstance().fontRenderer.drawWithShadow(nameComponent.getFormattedText(), x + 5, y + 5, -1); + this.buttonWidget.text = buttonProvider.getText(); + this.buttonWidget.getBounds().setLocation(window.getScaledWidth() - 190, y + 2); + buttonProvider.draw(buttonWidget, mouse, delta); + } + + @Override + public boolean mouseClicked(double double_1, double double_2, int int_1) { + if (buttonWidget.mouseClicked(double_1, double_2, int_1)) + return true; + return false; + } + + interface ConfigEntryButtonProvider { + + public boolean onPressed(int button, double mouseX, double mouseY); + + public String getText(); + + default public void draw(ButtonWidget button, Point mouse, float delta) { + button.draw(mouse.x, mouse.y, delta); + } + + } + +} diff --git a/src/main/java/me/shedaniel/rei/gui/config/ConfigEntryListWidget.java b/src/main/java/me/shedaniel/rei/gui/config/ConfigEntryListWidget.java new file mode 100644 index 000000000..ee74cc568 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/config/ConfigEntryListWidget.java @@ -0,0 +1,35 @@ +package me.shedaniel.rei.gui.config; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.widget.EntryListWidget; + +public class ConfigEntryListWidget extends EntryListWidget<ConfigEntry> { + + public ConfigEntryListWidget(MinecraftClient client, int width, int height, int startY, int endY, int entryHeight) { + super(client, width, height, startY, endY, entryHeight); + method_1943(false); //toggleShowSelection + } + + public void configClearEntries() { + clearEntries(); + } + + private ConfigEntry getEntry(int int_1) { + return this.getEntries().get(int_1); + } + + public void configAddEntry(ConfigEntry entry) { + addEntry(entry); + } + + @Override + public int getEntryWidth() { + return width - 80; + } + + @Override + protected int getScrollbarPosition() { + return width - 40; + } + +} diff --git a/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java b/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java new file mode 100644 index 000000000..65007b2f5 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java @@ -0,0 +1,207 @@ +package me.shedaniel.rei.gui.config; + +import me.shedaniel.rei.RoughlyEnoughItemsCore; +import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.client.REIItemListOrdering; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.GuiEventListener; +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; + +import java.awt.*; +import java.io.IOException; +import java.util.Arrays; + +public class ConfigScreen extends Screen { + + private Screen parent; + private ConfigEntryListWidget entryListWidget; + + public ConfigScreen(Screen parent) { + this.parent = parent; + } + + @Override + public boolean keyPressed(int int_1, int int_2, int int_3) { + if (int_1 == 256 && this.doesEscapeKeyClose()) { + MinecraftClient.getInstance().openScreen(parent); + GuiHelper.getLastOverlay().onInitialized(); + return true; + } else { + return super.keyPressed(int_1, int_2, int_3); + } + } + + @Override + protected void onInitialized() { + listeners.add(entryListWidget = new ConfigEntryListWidget(client, width, height, 32, height - 32, 24)); + entryListWidget.configClearEntries(); + entryListWidget.configAddEntry(new ConfigEntry(new TranslatableTextComponent("text.rei.side_searchbox"), new ConfigEntry.ConfigEntryButtonProvider() { + @Override + public boolean onPressed(int button, double mouseX, double mouseY) { + if (button == 0) + RoughlyEnoughItemsCore.getConfigHelper().setSideSearchField(!RoughlyEnoughItemsCore.getConfigHelper().sideSearchField()); + try { + RoughlyEnoughItemsCore.getConfigHelper().saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + + @Override + public String getText() { + return getTrueFalseText(RoughlyEnoughItemsCore.getConfigHelper().sideSearchField()); + } + })); + entryListWidget.configAddEntry(new ConfigEntry(new TranslatableTextComponent("text.rei.enable_craftable_only"), new ConfigEntry.ConfigEntryButtonProvider() { + @Override + public boolean onPressed(int button, double mouseX, double mouseY) { + if (button == 0) + RoughlyEnoughItemsCore.getConfigHelper().setShowCraftableOnlyButton(!RoughlyEnoughItemsCore.getConfigHelper().showCraftableOnlyButton()); + try { + RoughlyEnoughItemsCore.getConfigHelper().saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + + @Override + public String getText() { + return getTrueFalseText(RoughlyEnoughItemsCore.getConfigHelper().showCraftableOnlyButton()); + } + })); + entryListWidget.configAddEntry(new ConfigEntry(new TranslatableTextComponent("text.rei.list_ordering"), new ConfigEntry.ConfigEntryButtonProvider() { + @Override + public boolean onPressed(int button, double mouseX, double mouseY) { + int index = Arrays.asList(REIItemListOrdering.values()).indexOf(RoughlyEnoughItemsCore.getConfigHelper().getItemListOrdering()) + 1; + if (index >= REIItemListOrdering.values().length) { + index = 0; + RoughlyEnoughItemsCore.getConfigHelper().setAscending(!RoughlyEnoughItemsCore.getConfigHelper().isAscending()); + } + RoughlyEnoughItemsCore.getConfigHelper().setItemListOrdering(REIItemListOrdering.values()[index]); + try { + RoughlyEnoughItemsCore.getConfigHelper().saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + + @Override + public String getText() { + return I18n.translate("text.rei.list_ordering_button", I18n.translate(RoughlyEnoughItemsCore.getConfigHelper().getItemListOrdering().getNameTranslationKey()), I18n.translate(RoughlyEnoughItemsCore.getConfigHelper().isAscending() ? "ordering.rei.ascending" : "ordering.rei.descending")); + } + })); + entryListWidget.configAddEntry(new ConfigEntry(new TranslatableTextComponent("text.rei.mirror_rei"), new ConfigEntry.ConfigEntryButtonProvider() { + @Override + public boolean onPressed(int button, double mouseX, double mouseY) { + if (button == 0) + RoughlyEnoughItemsCore.getConfigHelper().setMirrorItemPanel(!RoughlyEnoughItemsCore.getConfigHelper().isMirrorItemPanel()); + try { + RoughlyEnoughItemsCore.getConfigHelper().saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + + @Override + public String getText() { + return getTrueFalseText(RoughlyEnoughItemsCore.getConfigHelper().isMirrorItemPanel()); + } + })); + entryListWidget.configAddEntry(new ConfigEntry(new TranslatableTextComponent("text.rei.check_updates"), new ConfigEntry.ConfigEntryButtonProvider() { + @Override + public boolean onPressed(int button, double mouseX, double mouseY) { + if (button == 0) + RoughlyEnoughItemsCore.getConfigHelper().setCheckUpdates(!RoughlyEnoughItemsCore.getConfigHelper().checkUpdates()); + try { + RoughlyEnoughItemsCore.getConfigHelper().saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + + @Override + public String getText() { + return getTrueFalseText(RoughlyEnoughItemsCore.getConfigHelper().checkUpdates()); + } + })); + entryListWidget.configAddEntry(new ConfigEntry(new TranslatableTextComponent("text.rei.load_default_plugin"), new ConfigEntry.ConfigEntryButtonProvider() { + @Override + public boolean onPressed(int button, double mouseX, double mouseY) { + if (button == 0) + RoughlyEnoughItemsCore.getConfigHelper().setLoadingDefaultPlugin(!RoughlyEnoughItemsCore.getConfigHelper().isLoadingDefaultPlugin()); + try { + RoughlyEnoughItemsCore.getConfigHelper().saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + + @Override + public String getText() { + return getTrueFalseText(RoughlyEnoughItemsCore.getConfigHelper().isLoadingDefaultPlugin()); + } + + @Override + public void draw(me.shedaniel.rei.gui.widget.ButtonWidget button, Point mouse, float delta) { + button.draw(mouse.x, mouse.y, delta); + if (button.getBounds().contains(mouse)) { + GuiLighting.disable(); + drawTooltip(Arrays.asList(I18n.translate("text.rei.load_default_plugin.restart_tooltip").split("\n")), mouse.x, mouse.y); + GuiLighting.disable(); + } + } + })); + addButton(new ButtonWidget(0, width / 2 - 100, height - 26, I18n.translate("gui.done")) { + @Override + public void onPressed(double double_1, double double_2) { + try { + RoughlyEnoughItemsCore.getConfigHelper().saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + } + ConfigScreen.this.client.openScreen(parent); + GuiHelper.getLastOverlay().onInitialized(); + } + }); + super.onInitialized(); + } + + private String getTrueFalseText(boolean showCraftableOnlyButton) { + return String.format("%s%b", showCraftableOnlyButton ? "§a" : "§c", showCraftableOnlyButton); + } + + @Override + public void draw(int int_1, int int_2, float float_1) { + this.drawTextureBackground(0); + this.entryListWidget.draw(int_1, int_2, float_1); + this.drawStringCentered(this.fontRenderer, I18n.translate("text.rei.config"), this.width / 2, 16, 16777215); + super.draw(int_1, int_2, float_1); + } + + @Override + public boolean isPauseScreen() { + return false; + } + + @Override + public GuiEventListener getFocused() { + return entryListWidget; + } + +} diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntry.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntry.java new file mode 100644 index 000000000..65f7a3fd5 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntry.java @@ -0,0 +1,22 @@ +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<CreditsEntry> { + + private TextComponent textComponent; + + public CreditsEntry(TextComponent textComponent) { + this.textComponent = textComponent; + } + + @Override + public void draw(int entryWidth, int height, int i3, int i4, boolean isSelected, float delta) { + int x = getX(); + int y = getY(); + MinecraftClient.getInstance().fontRenderer.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 new file mode 100644 index 000000000..81f48c40c --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java @@ -0,0 +1,35 @@ +package me.shedaniel.rei.gui.credits; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.widget.EntryListWidget; + +public class CreditsEntryListWidget extends EntryListWidget<CreditsEntry> { + + public CreditsEntryListWidget(MinecraftClient client, int width, int height, int startY, int endY, int entryHeight) { + super(client, width, height, startY, endY, entryHeight); + method_1943(false); //toggleShowSelection + } + + public void creditsClearEntries() { + clearEntries(); + } + + private CreditsEntry getEntry(int int_1) { + return this.getEntries().get(int_1); + } + + public void creditsAddEntry(CreditsEntry entry) { + addEntry(entry); + } + + @Override + public int getEntryWidth() { + return width - 80; + } + + @Override + protected int getScrollbarPosition() { + return width - 40; + } + +} diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java new file mode 100644 index 000000000..ed0464e07 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java @@ -0,0 +1,64 @@ +package me.shedaniel.rei.gui.credits; + +import me.shedaniel.rei.client.GuiHelper; +import net.minecraft.client.gui.ContainerScreen; +import net.minecraft.client.gui.GuiEventListener; +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; + +public class CreditsScreen extends Screen { + + private ContainerScreen parent; + private CreditsEntryListWidget entryListWidget; + + public CreditsScreen(ContainerScreen parent) { + this.parent = parent; + } + + @Override + public boolean keyPressed(int int_1, int int_2, int int_3) { + if (int_1 == 256 && this.doesEscapeKeyClose()) { + this.client.openScreen(parent); + GuiHelper.getLastOverlay().onInitialized(); + return true; + } + return super.keyPressed(int_1, int_2, int_3); + } + + @Override + protected void onInitialized() { + listeners.add(entryListWidget = new CreditsEntryListWidget(client, 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(""))); + addButton(new ButtonWidget(0, width / 2 - 100, height - 26, I18n.translate("gui.done")) { + @Override + public void onPressed(double double_1, double double_2) { + CreditsScreen.this.client.openScreen(parent); + GuiHelper.getLastOverlay().onInitialized(); + } + }); + } + + @Override + public void draw(int int_1, int int_2, float float_1) { + this.drawTextureBackground(0); + this.entryListWidget.draw(int_1, int_2, float_1); + this.drawStringCentered(this.fontRenderer, I18n.translate("text.rei.credits"), this.width / 2, 16, 16777215); + super.draw(int_1, int_2, float_1); + } + + @Override + public boolean isPauseScreen() { + return false; + } + + @Override + public GuiEventListener getFocused() { + 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 96fbc54b3..eb6584798 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java @@ -16,32 +16,22 @@ import java.util.List; public abstract class ButtonWidget extends Drawable implements IWidget { protected static final Identifier WIDGET_TEX = new Identifier("textures/gui/widgets.png"); - public int x; - public int y; public String text; public boolean enabled; public boolean visible; - protected int width; - protected int height; protected boolean hovered; private boolean pressed; private Rectangle bounds; public ButtonWidget(Rectangle rectangle, String text) { - this(rectangle.x, rectangle.y, rectangle.width, rectangle.height, text); - } - - public ButtonWidget(int x, int y, int width, int height, String text) { - this.width = 200; - this.height = 20; + this.bounds = rectangle; this.enabled = true; this.visible = true; - this.x = x; - this.y = y; - this.width = width; - this.height = height; this.text = text; - this.bounds = new Rectangle(x, this.y, this.width, this.height); + } + + public ButtonWidget(int x, int y, int width, int height, String text) { + this(new Rectangle(x, y, width, height), text); } public Rectangle getBounds() { @@ -66,8 +56,8 @@ public abstract class ButtonWidget extends Drawable implements IWidget { @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 minecraftClient_1 = MinecraftClient.getInstance(); FontRenderer fontRenderer_1 = minecraftClient_1.fontRenderer; minecraftClient_1.getTextureManager().bindTexture(WIDGET_TEX); @@ -78,18 +68,18 @@ public abstract class ButtonWidget extends Drawable implements IWidget { 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.drawTexturedRect(this.x, this.y, 0, 46 + textureOffset * 20, 4, 4); - this.drawTexturedRect(this.x + this.width - 4, this.y, 196, 46 + textureOffset * 20, 4, 4); - this.drawTexturedRect(this.x, this.y + this.height - 4, 0, 62 + textureOffset * 20, 4, 4); - this.drawTexturedRect(this.x + this.width - 4, this.y + this.height - 4, 196, 62 + textureOffset * 20, 4, 4); + this.drawTexturedRect(x, y, 0, 46 + textureOffset * 20, 4, 4); + this.drawTexturedRect(x + width - 4, y, 196, 46 + textureOffset * 20, 4, 4); + this.drawTexturedRect(x, y + height - 4, 0, 62 + textureOffset * 20, 4, 4); + this.drawTexturedRect(x + width - 4, y + height - 4, 196, 62 + textureOffset * 20, 4, 4); //Sides - this.drawTexturedRect(this.x + 4, this.y, 4, 46 + textureOffset * 20, this.width - 8, 4); - this.drawTexturedRect(this.x + 4, this.y + this.height - 4, 4, 62 + textureOffset * 20, this.width - 8, 4); + this.drawTexturedRect(x + 4, y, 4, 46 + textureOffset * 20, width - 8, 4); + this.drawTexturedRect(x + 4, y + height - 4, 4, 62 + textureOffset * 20, width - 8, 4); - for(int i = this.y + 4; i < this.y + this.height - 4; i += 4) { - this.drawTexturedRect(this.x, i, 0, 50 + textureOffset * 20, this.width / 2, MathHelper.clamp(this.y + this.height - 4 - i, 0, 4)); - this.drawTexturedRect(this.x + this.width / 2, i, 200 - this.width / 2, 50 + textureOffset * 20, this.width / 2, MathHelper.clamp(this.y + this.height - 4 - i, 0, 4)); + for(int i = y + 4; i < y + height - 4; i += 4) { + this.drawTexturedRect(x, i, 0, 50 + textureOffset * 20, width / 2, MathHelper.clamp(y + height - 4 - i, 0, 4)); + this.drawTexturedRect(x + width / 2, i, 200 - width / 2, 50 + textureOffset * 20, width / 2, MathHelper.clamp(y + height - 4 - i, 0, 4)); } int colour = 14737632; @@ -99,7 +89,7 @@ public abstract class ButtonWidget extends Drawable implements IWidget { colour = 16777120; } - this.drawStringCentered(fontRenderer_1, this.text, this.x + this.width / 2, this.y + (this.height - 8) / 2, colour); + this.drawStringCentered(fontRenderer_1, this.text, x + width / 2, y + (height - 8) / 2, colour); } } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ConfigWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ConfigWidget.java deleted file mode |
