aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java
diff options
context:
space:
mode:
authorDaniel She <shekwancheung0528@gmail.com>2019-02-25 21:18:26 +0800
committerGitHub <noreply@github.com>2019-02-25 21:18:26 +0800
commit9e55b44b710f38c63a4bfd17d0b07318d5c68535 (patch)
treea2cc0c519b4327028d7b8f544ba5171fff2d8dc1 /src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java
parentb7e018527db2e9cae2db4226f6af9fc34054c964 (diff)
downloadRoughlyEnoughItems-9e55b44b710f38c63a4bfd17d0b07318d5c68535.tar.gz
RoughlyEnoughItems-9e55b44b710f38c63a4bfd17d0b07318d5c68535.tar.bz2
RoughlyEnoughItems-9e55b44b710f38c63a4bfd17d0b07318d5c68535.zip
REI v2.3.1 (#40)
- API Changes - Updated Config Screen - Added Tipped Arrows Recipes - Updated Mappings - Added IRecipeHelper - Turning things to Optional - Removed Cheats button, now included with the new config button - Buttons for switching gamemodes / time / weather (default: off) [Maybe not in this update] - Clickable Labels - 3+ recipes at the same time - Fixed RecipeBaseWidget bad rendering when too big - Fixed #42 Patched up item deleting & cheating - Choose Page Dialog
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java')
-rw-r--r--src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java171
1 files changed, 126 insertions, 45 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
index 369ed3470..8e42c622a 100644
--- a/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java
+++ b/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java
@@ -2,73 +2,154 @@ package me.shedaniel.rei.gui.config;
import me.shedaniel.rei.client.ClientHelper;
import me.shedaniel.rei.gui.widget.ButtonWidget;
+import me.shedaniel.rei.gui.widget.TextFieldWidget;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.audio.PositionedSoundInstance;
+import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.widget.EntryListWidget;
import net.minecraft.client.util.Window;
import net.minecraft.sound.SoundEvents;
+import net.minecraft.text.Style;
import net.minecraft.text.TextComponent;
import java.awt.*;
-public class ConfigEntry extends EntryListWidget.Entry<ConfigEntry> {
+public abstract 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;
+ public static class ButtonConfigEntry extends ConfigEntry {
+ private TextComponent nameComponent;
+ private ConfigEntryButtonProvider buttonProvider;
+ private ButtonWidget buttonWidget;
+
+ public ButtonConfigEntry(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) {
+ Window window = MinecraftClient.getInstance().window;
+ Point mouse = ClientHelper.getMouseLocation();
+ if (MinecraftClient.getInstance().textRenderer.isRightToLeft()) {
+ MinecraftClient.getInstance().textRenderer.drawWithShadow(nameComponent.getFormattedText(), window.getScaledWidth() - MinecraftClient.getInstance().textRenderer.getStringWidth(nameComponent.getFormattedText()) - 40, getY() + 5, 16777215);
+ this.buttonWidget.text = buttonProvider.getText();
+ this.buttonWidget.getBounds().setLocation(getX(), getY() + 2);
+ } else {
+ MinecraftClient.getInstance().textRenderer.drawWithShadow(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);
}
- @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) {
- Window window = MinecraftClient.getInstance().window;
- Point mouse = ClientHelper.getMouseLocation();
- if (MinecraftClient.getInstance().textRenderer.isRightToLeft()) {
- MinecraftClient.getInstance().textRenderer.drawWithShadow(nameComponent.getFormattedText(), window.getScaledWidth() - MinecraftClient.getInstance().textRenderer.getStringWidth(nameComponent.getFormattedText()) - 40, getY() + 5, 16777215);
- this.buttonWidget.text = buttonProvider.getText();
- this.buttonWidget.getBounds().setLocation(getX(), getY() + 2);
- } else {
- MinecraftClient.getInstance().textRenderer.drawWithShadow(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;
+ public static class CategoryTitleConfigEntry extends ConfigEntry {
+ private TextComponent textComponent;
+
+ public CategoryTitleConfigEntry(TextComponent nameComponent) {
+ this.textComponent = nameComponent.setStyle(new Style().setBold(true));
+ }
+
+ @Override
+ public void draw(int i, int i1, int i2, int i3, boolean b, float v) {
+ Window window = MinecraftClient.getInstance().window;
+ TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
+ textRenderer.draw(textComponent.getFormattedText(), (window.getScaledWidth() - textRenderer.getStringWidth(textComponent.getFormattedText())) / 2, getY() + 10, -1);
+ }
}
- interface ConfigEntryButtonProvider {
+ public static class TextFieldConfigEntry extends ConfigEntry {
+ private TextComponent nameComponent;
+ private ConfigEntryTextFieldProvider textFieldProvider;
+ private TextFieldWidget textFieldWidget;
+
+ public TextFieldConfigEntry(TextComponent nameComponent, ConfigEntryTextFieldProvider textFieldProvider) {
+ this.nameComponent = nameComponent;
+ this.textFieldProvider = textFieldProvider;
+ this.textFieldWidget = new TextFieldWidget(0, 0, 148, 18);
+ this.textFieldWidget.setChangedListener(s -> textFieldProvider.onUpdateText(textFieldWidget, s));
+ this.textFieldProvider.onInitWidget(textFieldWidget);
+ }
- public boolean onPressed(int button, double mouseX, double mouseY);
+ @Override
+ public void draw(int entryWidth, int height, int i3, int i4, boolean isSelected, float delta) {
+ Window window = MinecraftClient.getInstance().window;
+ Point mouse = ClientHelper.getMouseLocation();
+ if (MinecraftClient.getInstance().textRenderer.isRightToLeft()) {
+ MinecraftClient.getInstance().textRenderer.drawWithShadow(nameComponent.getFormattedText(), window.getScaledWidth() - MinecraftClient.getInstance().textRenderer.getStringWidth(nameComponent.getFormattedText()) - 40, getY() + 5, 16777215);
+ this.textFieldWidget.getBounds().setLocation(getX() + 1, getY() + 2);
+ } else {
+ MinecraftClient.getInstance().textRenderer.drawWithShadow(nameComponent.getFormattedText(), getX(), getY() + 5, 16777215);
+ this.textFieldWidget.getBounds().setLocation(window.getScaledWidth() - 190 + 1, getY() + 2);
+ }
+ textFieldProvider.draw(textFieldWidget, mouse, delta);
+ }
- public String getText();
+ @Override
+ public boolean mouseClicked(double double_1, double double_2, int int_1) {
+ if (textFieldWidget.mouseClicked(double_1, double_2, int_1))
+ return true;
+ return false;
+ }
- default public void draw(ButtonWidget button, Point mouse, float delta) {
- button.draw(mouse.x, mouse.y, delta);
+ @Override
+ public boolean charTyped(char char_1, int int_1) {
+ if (textFieldWidget.charTyped(char_1, int_1))
+ return true;
+ return false;
}
+ @Override
+ public boolean keyPressed(int int_1, int int_2, int int_3) {
+ if (textFieldWidget.keyPressed(int_1, int_2, int_3))
+ return true;
+ return false;
+ }
+
+ interface ConfigEntryTextFieldProvider {
+
+ public void onInitWidget(TextFieldWidget widget);
+
+ public void onUpdateText(TextFieldWidget widget, String text);
+
+ default public void draw(TextFieldWidget widget, Point mouse, float delta) {
+ widget.draw(mouse.x, mouse.y, delta);
+ }
+
+ }
}
}