diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-02-16 17:52:40 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-02-16 17:52:40 +0800 |
| commit | 2e0e576b64545cb45a0ab3e0d0fe81cfb7a61307 (patch) | |
| tree | 33ab48fd72c49fa1b2a78c05b29de67da7ab6064 /src/main/java/me/shedaniel/rei/gui/config | |
| parent | 074a627663e0150e23d47a87486afb852dd2cfdd (diff) | |
| download | RoughlyEnoughItems-2.3.0.17.tar.gz RoughlyEnoughItems-2.3.0.17.tar.bz2 RoughlyEnoughItems-2.3.0.17.zip | |
Same as v2.3 in Fabricv2.3.0.17
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/config')
3 files changed, 319 insertions, 0 deletions
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..5637f2575 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java @@ -0,0 +1,77 @@ +package me.shedaniel.rei.gui.config; + +import me.shedaniel.rei.client.ClientHelper; +import me.shedaniel.rei.gui.widget.ButtonWidget; +import net.minecraft.client.MainWindow; +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.SimpleSound; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.GuiListExtended; +import net.minecraft.init.SoundEvents; +import net.minecraft.util.text.ITextComponent; + +import java.awt.*; + + +public class ConfigEntry extends GuiListExtended.IGuiListEntry<ConfigEntry> { + + private static final FontRenderer FONT_RENDERER = Minecraft.getInstance().fontRenderer; + private ITextComponent nameComponent; + private ConfigEntryButtonProvider buttonProvider; + private ButtonWidget buttonWidget; + + public ConfigEntry(ITextComponent 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)) { + Minecraft.getInstance().getSoundHandler().play(SimpleSound.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); + return true; + } + return false; + } + + @Override + public void onPressed(int button, double mouseX, double mouseY) {} + }; + } + + @Override + public void drawEntry(int entryWidth, int height, int i3, int i4, boolean isSelected, float delta) { + MainWindow window = Minecraft.getInstance().mainWindow; + Point mouse = ClientHelper.getMouseLocation(); + if (Minecraft.getInstance().fontRenderer.getBidiFlag()) { + Minecraft.getInstance().fontRenderer.drawStringWithShadow(nameComponent.getFormattedText(), window.getScaledWidth() - FONT_RENDERER.getStringWidth(nameComponent.getFormattedText()) - 40, getY() + 5, 16777215); + this.buttonWidget.text = buttonProvider.getText(); + this.buttonWidget.getBounds().setLocation(getX(), getY() + 2); + } else { + Minecraft.getInstance().fontRenderer.drawStringWithShadow(nameComponent.getFormattedText(), getX(), getY() + 5, 16777215); + this.buttonWidget.text = buttonProvider.getText(); + this.buttonWidget.getBounds().setLocation(window.getScaledWidth() - 190, getY() + 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..ef6d1cef1 --- /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.Minecraft; +import net.minecraft.client.gui.GuiListExtended; + +public class ConfigEntryListWidget extends GuiListExtended<ConfigEntry> { + + public ConfigEntryListWidget(Minecraft client, int width, int height, int startY, int endY, int entryHeight) { + super(client, width, height, startY, endY, entryHeight); + setShowSelectionBox(false); //toggleShowSelection + } + + public void configClearEntries() { + clearEntries(); + } + + private ConfigEntry getEntry(int int_1) { + return this.getChildren().get(int_1); + } + + public void configAddEntry(ConfigEntry entry) { + addEntry(entry); + } + + @Override + public int getListWidth() { + return width - 80; + } + + @Override + protected int getScrollBarX() { + return width - 40; + } + +} diff --git a/src/main/java/me/shedaniel/rei/gui/config/ConfigGui.java b/src/main/java/me/shedaniel/rei/gui/config/ConfigGui.java new file mode 100644 index 000000000..2511b0c21 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/config/ConfigGui.java @@ -0,0 +1,207 @@ +package me.shedaniel.rei.gui.config; + +import me.shedaniel.rei.client.ConfigHelper; +import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.client.REIItemListOrdering; +import me.shedaniel.rei.gui.widget.ButtonWidget; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.IGuiEventListener; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.resources.I18n; +import net.minecraft.util.text.TextComponentTranslation; + +import java.awt.*; +import java.io.IOException; +import java.util.Arrays; + +public class ConfigGui extends GuiScreen { + + private GuiScreen parent; + private ConfigEntryListWidget entryListWidget; + + public ConfigGui(GuiScreen parent) { + this.parent = parent; + } + + @Override + public boolean keyPressed(int int_1, int int_2, int int_3) { + if (int_1 == 256 && this.allowCloseWithEscape()) { + Minecraft.getInstance().displayGuiScreen(parent); + GuiHelper.getLastOverlay().onInitialized(); + return true; + } else { + return super.keyPressed(int_1, int_2, int_3); + } + } + + @Override + protected void initGui() { + children.add(entryListWidget = new ConfigEntryListWidget(mc, width, height, 32, height - 32, 24)); + entryListWidget.configClearEntries(); + entryListWidget.configAddEntry(new ConfigEntry(new TextComponentTranslation("text.rei.side_searchbox"), new ConfigEntry.ConfigEntryButtonProvider() { + @Override + public boolean onPressed(int button, double mouseX, double mouseY) { + if (button == 0) + ConfigHelper.getInstance().setSideSearchField(!ConfigHelper.getInstance().sideSearchField()); + try { + ConfigHelper.getInstance().saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + + @Override + public String getText() { + return getTrueFalseText(ConfigHelper.getInstance().sideSearchField()); + } + })); + entryListWidget.configAddEntry(new ConfigEntry(new TextComponentTranslation("text.rei.enable_craftable_only"), new ConfigEntry.ConfigEntryButtonProvider() { + @Override + public boolean onPressed(int button, double mouseX, double mouseY) { + if (button == 0) + ConfigHelper.getInstance().setShowCraftableOnlyButton(!ConfigHelper.getInstance().showCraftableOnlyButton()); + try { + ConfigHelper.getInstance().saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + + @Override + public String getText() { + return getTrueFalseText(ConfigHelper.getInstance().showCraftableOnlyButton()); + } + })); + entryListWidget.configAddEntry(new ConfigEntry(new TextComponentTranslation("text.rei.list_ordering"), new ConfigEntry.ConfigEntryButtonProvider() { + @Override + public boolean onPressed(int button, double mouseX, double mouseY) { + int index = Arrays.asList(REIItemListOrdering.values()).indexOf(ConfigHelper.getInstance().getItemListOrdering()) + 1; + if (index >= REIItemListOrdering.values().length) { + index = 0; + ConfigHelper.getInstance().setAscending(!ConfigHelper.getInstance().isAscending()); + } + ConfigHelper.getInstance().setItemListOrdering(REIItemListOrdering.values()[index]); + try { + ConfigHelper.getInstance().saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + + @Override + public String getText() { + return I18n.format("text.rei.list_ordering_button", I18n.format(ConfigHelper.getInstance().getItemListOrdering().getNameTranslationKey()), I18n.format(ConfigHelper.getInstance().isAscending() ? "ordering.rei.ascending" : "ordering.rei.descending")); + } + })); + entryListWidget.configAddEntry(new ConfigEntry(new TextComponentTranslation("text.rei.mirror_rei"), new ConfigEntry.ConfigEntryButtonProvider() { + @Override + public boolean onPressed(int button, double mouseX, double mouseY) { + if (button == 0) + ConfigHelper.getInstance().setMirrorItemPanel(!ConfigHelper.getInstance().isMirrorItemPanel()); + try { + ConfigHelper.getInstance().saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + + @Override + public String getText() { + return getTrueFalseText(ConfigHelper.getInstance().isMirrorItemPanel()); + } + })); + entryListWidget.configAddEntry(new ConfigEntry(new TextComponentTranslation("text.rei.check_updates"), new ConfigEntry.ConfigEntryButtonProvider() { + @Override + public boolean onPressed(int button, double mouseX, double mouseY) { + if (button == 0) + ConfigHelper.getInstance().setCheckUpdates(!ConfigHelper.getInstance().checkUpdates()); + try { + ConfigHelper.getInstance().saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + + @Override + public String getText() { + return getTrueFalseText(ConfigHelper.getInstance().checkUpdates()); + } + })); + entryListWidget.configAddEntry(new ConfigEntry(new TextComponentTranslation("text.rei.load_default_plugin"), new ConfigEntry.ConfigEntryButtonProvider() { + @Override + public boolean onPressed(int button, double mouseX, double mouseY) { + if (button == 0) + ConfigHelper.getInstance().setLoadingDefaultPlugin(!ConfigHelper.getInstance().isLoadingDefaultPlugin()); + try { + ConfigHelper.getInstance().saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + + @Override + public String getText() { + return getTrueFalseText(ConfigHelper.getInstance().isLoadingDefaultPlugin()); + } + + @Override + public void draw(ButtonWidget button, Point mouse, float delta) { + button.draw(mouse.x, mouse.y, delta); + if (button.getBounds().contains(mouse)) { + RenderHelper.disableStandardItemLighting(); + drawHoveringText(Arrays.asList(I18n.format("text.rei.load_default_plugin.restart_tooltip").split("\n")), mouse.x, mouse.y); + RenderHelper.disableStandardItemLighting(); + } + } + })); + addButton(new net.minecraft.client.gui.GuiButton(0, width / 2 - 100, height - 26, I18n.format("gui.done")) { + @Override + public void onClick(double double_1, double double_2) { + try { + ConfigHelper.getInstance().saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + } + ConfigGui.this.mc.displayGuiScreen(parent); + GuiHelper.getLastOverlay().onInitialized(); + } + }); + super.initGui(); + } + + private String getTrueFalseText(boolean showCraftableOnlyButton) { + return String.format("%s%b", showCraftableOnlyButton ? "§a" : "§c", showCraftableOnlyButton); + } + + @Override + public void render(int int_1, int int_2, float float_1) { + this.drawBackground(0); + this.entryListWidget.drawScreen(int_1, int_2, float_1); + this.drawCenteredString(this.fontRenderer, I18n.format("text.rei.config"), this.width / 2, 16, 16777215); + super.render(int_1, int_2, float_1); + } + + @Override + public boolean doesGuiPauseGame() { + return false; + } + + @Override + public IGuiEventListener getFocused() { + return entryListWidget; + } + +}
\ No newline at end of file |
