diff options
| author | Daniel She <shekwancheung0528@gmail.com> | 2019-02-25 21:18:26 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-25 21:18:26 +0800 |
| commit | 9e55b44b710f38c63a4bfd17d0b07318d5c68535 (patch) | |
| tree | a2cc0c519b4327028d7b8f544ba5171fff2d8dc1 /src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java | |
| parent | b7e018527db2e9cae2db4226f6af9fc34054c964 (diff) | |
| download | RoughlyEnoughItems-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.java | 171 |
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); + } + + } } } |
