aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/gui/config
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-02-16 17:52:40 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-02-16 17:52:40 +0800
commit2e0e576b64545cb45a0ab3e0d0fe81cfb7a61307 (patch)
tree33ab48fd72c49fa1b2a78c05b29de67da7ab6064 /src/main/java/me/shedaniel/rei/gui/config
parent074a627663e0150e23d47a87486afb852dd2cfdd (diff)
downloadRoughlyEnoughItems-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')
-rw-r--r--src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java77
-rw-r--r--src/main/java/me/shedaniel/rei/gui/config/ConfigEntryListWidget.java35
-rw-r--r--src/main/java/me/shedaniel/rei/gui/config/ConfigGui.java207
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