diff --git a/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java b/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java index 851cfb7..2dde983 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java +++ b/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java @@ -13,6 +13,7 @@ import me.kawaiizenbo.moonlight.module.Module_; import me.kawaiizenbo.moonlight.module.settings.BooleanSetting; import me.kawaiizenbo.moonlight.module.settings.DoubleSetting; import me.kawaiizenbo.moonlight.module.settings.Setting; +import me.kawaiizenbo.moonlight.module.settings.StringSetting; import me.kawaiizenbo.moonlight.ui.clickgui.CategoryPane; import me.kawaiizenbo.moonlight.ui.clickgui.ClickGUIScreen; import me.kawaiizenbo.moonlight.util.ColorUtils; @@ -60,7 +61,10 @@ public class Moonlight implements ModInitializer else if (s instanceof DoubleSetting) { ((DoubleSetting)s).value = (Double)((Map)((Map)((Map)CONFIG.config.get("modules")).get(m.name)).get("settings")).get(s.name); - + } + else if (s instanceof StringSetting) + { + ((StringSetting)s).value = (String)((Map)((Map)((Map)CONFIG.config.get("modules")).get(m.name)).get("settings")).get(s.name); } } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/Module_.java b/src/main/java/me/kawaiizenbo/moonlight/module/Module_.java index d6aba05..06bef78 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/Module_.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/Module_.java @@ -3,6 +3,7 @@ package me.kawaiizenbo.moonlight.module; import java.util.ArrayList; import me.kawaiizenbo.moonlight.module.settings.BooleanSetting; +import me.kawaiizenbo.moonlight.module.settings.KeycodeSetting; import me.kawaiizenbo.moonlight.module.settings.Setting; import me.kawaiizenbo.moonlight.ui.ModulesListOverlay; import net.minecraft.client.MinecraftClient; @@ -19,6 +20,7 @@ public abstract class Module_ public ArrayList settings; public BooleanSetting showInModulesList = new BooleanSetting("Show in Modules List", true); + public KeycodeSetting keybind = new KeycodeSetting("Keybind", 0); public Module_(String name, String description, Category category) { @@ -27,6 +29,7 @@ public abstract class Module_ this.category = category; settings = new ArrayList<>(); settings.add(showInModulesList); + settings.add(keybind); } public void onEnable() { ModulesListOverlay.INSTANCE.update(); } diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/settings/ColorSetting.java b/src/main/java/me/kawaiizenbo/moonlight/module/settings/ColorSetting.java index d7ab410..228f4b9 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/settings/ColorSetting.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/settings/ColorSetting.java @@ -7,6 +7,7 @@ import net.minecraft.text.Text; public class ColorSetting extends Setting { + // this is unfinished, please use 3 DoubleSettings instead public int value; public int r; public int g; diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/settings/KeycodeSetting.java b/src/main/java/me/kawaiizenbo/moonlight/module/settings/KeycodeSetting.java new file mode 100644 index 0000000..782552c --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/module/settings/KeycodeSetting.java @@ -0,0 +1,40 @@ +package me.kawaiizenbo.moonlight.module.settings; + +import me.kawaiizenbo.moonlight.ui.clickgui.KeybindScreen; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.text.Text; + +public class KeycodeSetting extends Setting +{ + public int value; + + public KeycodeSetting(String name, int value) + { + this.name = name; + this.value = value; + } + + @Override + public void mouseClicked(double mouseX, double mouseY, int button) + { + if (hovered((int)mouseX, (int)mouseY) && button == 0) + { + KeybindScreen kbs = new KeybindScreen(); + MinecraftClient.getInstance().setScreen(kbs); + this.value = kbs.returnedKeycode; + } + } + + @Override + 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+8, 0xFFFFFF); + String key = java.awt.event.KeyEvent.getKeyText(value); + if (value == 0) key = ""; + int twidth = textRenderer.getWidth(key); + drawContext.drawTextWithShadow(textRenderer, key, x+190-twidth, y+8, 0xFFFFFF); + } +} 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 79a23a1..d2ae60e 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/settings/StringSetting.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/settings/StringSetting.java @@ -2,5 +2,11 @@ package me.kawaiizenbo.moonlight.module.settings; public class StringSetting extends Setting { - + public String value; + + public StringSetting(String name, String value) + { + this.name = name; + this.value = value; + } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/KeybindScreen.java b/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/KeybindScreen.java new file mode 100644 index 0000000..acd5bd2 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/KeybindScreen.java @@ -0,0 +1,36 @@ +package me.kawaiizenbo.moonlight.ui.clickgui; + +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.text.Text; + +public class KeybindScreen extends Screen +{ + public int returnedKeycode = 0; + + public KeybindScreen() + { + super(Text.literal("Keybind Selector")); + } + + @Override + public void render(DrawContext drawContext, int mouseX, int mouseY, float delta) + { + this.renderBackground(drawContext, mouseX, mouseY, delta); + drawContext.drawCenteredTextWithShadow(textRenderer, "Press any key", width/2, height/2, 0xFFFFFFFF); + } + + @Override + public boolean keyPressed(int keyCode, int scanCode, int modifiers) + { + returnedKeycode = keyCode; + this.close(); + return true; + } + + @Override + public boolean shouldPause() + { + return false; + } +}