diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/settings/BooleanSetting.java b/src/main/java/me/kawaiizenbo/moonlight/module/settings/BooleanSetting.java index b8f1a70..3232061 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/settings/BooleanSetting.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/settings/BooleanSetting.java @@ -19,9 +19,9 @@ public class BooleanSetting extends Setting { super.render(drawContext, x, y, mouseX, mouseY, textRenderer); drawContext.drawTextWithShadow(textRenderer, Text.literal(name), x+2, y+8, 0xFFFFFF); - drawContext.fill(x+175, y+7, x+185, y+17, 0xFFFFFFFF); - drawContext.fill(x+176, y+8, x+184, y+16, 0xFF222222); - drawContext.fill(x+177, y+9, x+183, y+15, value ? 0xFF55FFFF : 0xFF222222); + drawContext.fill(x+180, y+7, x+190, y+17, 0xFFFFFFFF); + drawContext.fill(x+181, y+8, x+189, y+16, 0xFF222222); + drawContext.fill(x+182, y+9, x+188, y+15, value ? 0xFF55FFFF : 0xFF222222); } @Override diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/settings/DoubleSetting.java b/src/main/java/me/kawaiizenbo/moonlight/module/settings/DoubleSetting.java index 7ba51e5..b1d1b6b 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/settings/DoubleSetting.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/settings/DoubleSetting.java @@ -26,7 +26,7 @@ public class DoubleSetting extends Setting public void render(DrawContext drawContext, int x, int y, int mouseX, int mouseY, TextRenderer textRenderer) { super.render(drawContext, x, y, mouseX, mouseY, textRenderer); - drawContext.drawTextWithShadow(textRenderer, Text.literal(name), x+2, y+2, 0xFFFFFF); + drawContext.drawTextWithShadow(textRenderer, Text.literal(name), x+2, y+4, 0xFFFFFF); double diff = Math.min(100, Math.max(0, (mouseX - x)/1.9)); if (sliding) @@ -43,7 +43,7 @@ public class DoubleSetting extends Setting } String valueString = ""+MathUtils.round(value, roundingPlace); - drawContext.drawTextWithShadow(textRenderer, Text.literal(valueString), (x+190)-textRenderer.getWidth(valueString), y+2, 0xFFFFFF); + drawContext.drawTextWithShadow(textRenderer, Text.literal(valueString), (x+190)-textRenderer.getWidth(valueString), y+4, 0xFFFFFF); drawContext.fill(x+2, y+16, x+190, y+18, 0xFF666666); int scaledValue = (int)((value/max)*190); drawContext.fill(x+2, y+16, (x+2)+scaledValue, y+18, 0xFF55FFFF); diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/settings/StringSetting.java b/src/main/java/me/kawaiizenbo/moonlight/module/settings/StringSetting.java index 54fef65..e76a87f 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/settings/StringSetting.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/settings/StringSetting.java @@ -1,5 +1,6 @@ package me.kawaiizenbo.moonlight.module.settings; +import me.kawaiizenbo.moonlight.util.KeycodeUtils; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; @@ -7,6 +8,7 @@ import net.minecraft.text.Text; public class StringSetting extends Setting { public String value; + private boolean focused = false; public StringSetting(String name, String value) { @@ -18,9 +20,52 @@ public class StringSetting extends Setting public void render(DrawContext drawContext, int x, int y, int mouseX, int mouseY, TextRenderer textRenderer) { super.render(drawContext, x, y, mouseX, mouseY, textRenderer); - drawContext.drawTextWithShadow(textRenderer, Text.literal(name), x+2, y+4, 0xFFFFFF); + drawContext.drawTextWithShadow(textRenderer, Text.literal(name), x+2, y+8, 0xFFFFFF); int twidth = textRenderer.getWidth(value); - drawContext.drawTextWithShadow(textRenderer, value, x+190-twidth, y+4, 0xFFFFFF); - drawContext.drawTextWithShadow(textRenderer, "WIP, please use the .setting command", x+2, y+14, 0xFFFFFF); + drawContext.fill(x+96, y+5, x+190, y+19, 0xFFFFFFFF); + drawContext.fill(x+97, y+6, x+189, y+18, 0xFF222222); + int cursorPos = x+98+twidth; + if (focused) drawContext.fill(cursorPos, y+7, cursorPos+1, y+17, 0xFF55FFFF); + drawContext.drawTextWithShadow(textRenderer, value, x+98, y+8, 0xFFFFFF); + } + + @Override + public void mouseClicked(double mouseX, double mouseY, int button) + { + if (focused) + { + focused = false; + return; + } + if (hovered((int)mouseX, (int)mouseY) && button == 0) + { + focused = true; + } + } + + @Override + public void keyPressed(int keyCode, int scanCode, int modifiers) + { + if (focused) + { + if (keyCode == 256 || keyCode == 257) + { + // escape or enter was pressed, exit safely + focused = false; + return; + } + if (keyCode == 259) + { + // backspace, remove a character + if (value.length() > 0) value = value.substring(0, value.length() - 1); + return; + } + if (keyCode > 96) return; // not a typing key + String append = KeycodeUtils.keyTable[keyCode]; + if (modifiers == 1) append = KeycodeUtils.shiftedKeyTable[keyCode]; + if (append == "Unknown") return; + if (append == "Space") append = " "; + value += append; + } } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/util/KeycodeUtils.java b/src/main/java/me/kawaiizenbo/moonlight/util/KeycodeUtils.java index fccb953..c3e1b04 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/util/KeycodeUtils.java +++ b/src/main/java/me/kawaiizenbo/moonlight/util/KeycodeUtils.java @@ -68,32 +68,32 @@ public class KeycodeUtils "Unknown", "Unknown", "Unknown", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", "[", "\\", "]", @@ -354,4 +354,357 @@ public class KeycodeUtils "Menu", "Last", }; + + public static String[] shiftedKeyTable = { + "", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Space", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "\"", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "<", + "_", + ">", + "?", + ")", + "!", + "@", + "#", + "$", + "%", + "^", + "&", + "*", + "(", + "Unknown", + ":", + "Unknown", + "+", + "Unknown", + "Unknown", + "Unknown", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "{", + "|", + "}", + "Unknown", + "Unknown", + "~", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "World 1", + "World 2", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Escape", + "Enter", + "Tab", + "Backspace", + "Insert", + "Delete", + "Right", + "Left", + "Down", + "Up", + "Page Up", + "Page Down", + "Home", + "End", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Caps Lock", + "Scroll Lock", + "Num Lock", + "Print Screen", + "Pause", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "F1", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "F10", + "F11", + "F12", + "F13", + "F14", + "F15", + "F16", + "F17", + "F18", + "F19", + "F20", + "F21", + "F22", + "F23", + "F24", + "F25", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Num 0", + "Num 1", + "Num 2", + "Num 3", + "Num 4", + "Num 5", + "Num 6", + "Num 7", + "Num 8", + "Num 9", + "Num .", + "Num /", + "Num *", + "Num -", + "Num +", + "Num Enter", + "Num =", + "Unknown", + "Unknown", + "Unknown", + "Left Shift", + "Left Control", + "Left Alt", + "Left Command", + "Right Shift", + "Right Control", + "Right Alt", + "Right Command", + "Menu", + "Last", + }; }