aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/gui/widget/KeyBindButton.java
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-01-01 13:55:45 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-01-01 13:55:45 +0800
commita75a3562b2e36ef6e6463758c3640ad03aa5bac3 (patch)
treedf687173b054a83afb9d1c5488c5cb5e09c7629e /src/main/java/me/shedaniel/gui/widget/KeyBindButton.java
parent6b6176dff58866e461172606fafb842fa2ebfa6a (diff)
downloadRoughlyEnoughItems-a75a3562b2e36ef6e6463758c3640ad03aa5bac3.tar.gz
RoughlyEnoughItems-a75a3562b2e36ef6e6463758c3640ad03aa5bac3.tar.bz2
RoughlyEnoughItems-a75a3562b2e36ef6e6463758c3640ad03aa5bac3.zip
1.2 Custom Keybinds
Diffstat (limited to 'src/main/java/me/shedaniel/gui/widget/KeyBindButton.java')
-rw-r--r--src/main/java/me/shedaniel/gui/widget/KeyBindButton.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/main/java/me/shedaniel/gui/widget/KeyBindButton.java b/src/main/java/me/shedaniel/gui/widget/KeyBindButton.java
new file mode 100644
index 000000000..b3d2bde3c
--- /dev/null
+++ b/src/main/java/me/shedaniel/gui/widget/KeyBindButton.java
@@ -0,0 +1,59 @@
+package me.shedaniel.gui.widget;
+
+import me.shedaniel.ClientListener;
+import me.shedaniel.library.KeyBindFunction;
+import net.minecraft.client.gui.widget.ButtonWidget;
+import net.minecraft.client.resource.language.I18n;
+import net.minecraft.text.TextFormat;
+
+import java.awt.event.KeyEvent;
+import java.util.function.Consumer;
+
+public class KeyBindButton extends ButtonWidget {
+
+ private int currentKey;
+ private Consumer<Integer> onEditKeyBind;
+ private boolean editMode;
+
+ public KeyBindButton(int buttonId, int x, int y, int widthIn, int heightIn, int currentKey, Consumer<Integer> onEditKeyBind) {
+ super(buttonId, x, y, widthIn, heightIn, "");
+ this.currentKey = currentKey;
+ this.onEditKeyBind = onEditKeyBind;
+ }
+
+ @Override
+ public boolean charTyped(char p_charTyped_1_, int p_charTyped_2_) {
+ if (editMode) {
+ currentKey = KeyEvent.getExtendedKeyCodeForChar(p_charTyped_1_);
+ onEditKeyBind.accept(currentKey);
+ editMode = false;
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void draw(int mouseX, int mouseY, float partialTicks) {
+ this.text = editMode ? I18n.translate("text.rei.listeningkey") : KeyEvent.getKeyText(currentKey);
+ if (!editMode && ClientListener.keyBinds.stream().map(KeyBindFunction::getKey).filter(integer -> integer == currentKey).count() > 1)
+ this.text = TextFormat.RED + this.text;
+ super.draw(mouseX, mouseY, partialTicks);
+ }
+
+ @Override
+ public void setHasFocus(boolean boolean_1) {
+ if (boolean_1 == false)
+ editMode = boolean_1;
+ }
+
+ @Override
+ public boolean hasFocus() {
+ return true;
+ }
+
+ @Override
+ public void onPressed(double double_1, double double_2) {
+ editMode = !editMode;
+ }
+
+}