full function keybinds

This commit is contained in:
kawaiizenbo 2023-10-11 10:55:20 -07:00
parent dc1e189d38
commit d70d0dc0d0
8 changed files with 451 additions and 63 deletions

View file

@ -7,9 +7,6 @@ import java.nio.file.Files;
import java.util.HashMap;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.gson.Gson;
import me.kawaiizenbo.moonlight.module.Category;

View file

@ -4,7 +4,6 @@ import net.fabricmc.api.ModInitializer;
import org.slf4j.Logger;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.slf4j.LoggerFactory;

View file

@ -48,22 +48,65 @@ public class SettingCommand extends Command
return 0;
}
// you can break this really easily and i dont feel like fixing it :3 have fun
if (setting instanceof BooleanSetting)
{
((BooleanSetting)setting).value = Boolean.parseBoolean(v);
try
{
((BooleanSetting)setting).value = Boolean.parseBoolean(v);
}
catch (Exception e)
{
ChatUtils.sendMsg(ColorUtils.red + "Invalid Value, expected boolean");
return 0;
}
}
else if (setting instanceof DoubleSetting)
{
((DoubleSetting)setting).value = Double.parseDouble(v);
try
{
((DoubleSetting)setting).value = Double.parseDouble(v);
}
catch (Exception e)
{
ChatUtils.sendMsg(ColorUtils.red + "Invalid Value, expected Double");
return 0;
}
}
if (setting instanceof StringSetting)
else if (setting instanceof StringSetting)
{
((StringSetting)setting).value = v;
try
{
((StringSetting)setting).value = v;
}
catch (Exception e)
{
ChatUtils.sendMsg(ColorUtils.red + "Invalid Value, expected String");
return 0;
}
}
else if (setting instanceof KeycodeSetting)
{
((KeycodeSetting)setting).value = Integer.parseInt(v);
try
{
int kv = Integer.parseInt(v);
if (kv > 348)
{
ChatUtils.sendMsg(ColorUtils.red + "Keycode Value is too high, maximum is 348 (Menu)");
return 0;
}
if (kv < 0)
{
ChatUtils.sendMsg(ColorUtils.red + "Keycode Value must be positive");
return 0;
}
((KeycodeSetting)setting).value = kv;
}
catch (Exception e)
{
ChatUtils.sendMsg(ColorUtils.red + "Invalid Value, expected Keycode (integer)");
return 0;
}
}
return SINGLE_SUCCESS;

View file

@ -15,20 +15,18 @@ import net.minecraft.client.Keyboard;
import net.minecraft.client.MinecraftClient;
@Mixin(Keyboard.class)
public abstract class KeyboardMixin {
public abstract class KeyboardMixin
{
@Shadow @Final private MinecraftClient client;
@Inject(method = "onKey", at = @At("HEAD"), cancellable = true)
public void onKey(long window, int key, int scancode, int action, int modifiers, CallbackInfo info)
{
System.out.println("Keyboard event occured: " + java.awt.event.KeyEvent.getKeyText(key) + " (keycode "+key+")");
if (key == GLFW.GLFW_KEY_RIGHT_ALT) MinecraftClient.getInstance().setScreen(ClickGUIScreen.INSTANCE);
for (Module m : ModuleManager.INSTANCE.modules)
{
System.out.println("checking against module:" + m.name);
if (key == m.keybind.value)
if (key == m.keybind.value && action == GLFW.GLFW_PRESS)
{
System.out.println("yup, we gotem :3");
m.toggle();
}
}

View file

@ -1,7 +1,8 @@
package me.kawaiizenbo.moonlight.module.settings;
import me.kawaiizenbo.moonlight.ui.clickgui.KeybindScreen;
import net.minecraft.client.MinecraftClient;
import org.lwjgl.glfw.GLFW;
import me.kawaiizenbo.moonlight.util.KeycodeUtils;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.text.Text;
@ -9,6 +10,7 @@ import net.minecraft.text.Text;
public class KeycodeSetting extends Setting
{
public int value;
private boolean isWaiting = false;
public KeycodeSetting(String name, int value)
{
@ -19,11 +21,14 @@ public class KeycodeSetting extends Setting
@Override
public void mouseClicked(double mouseX, double mouseY, int button)
{
if (isWaiting)
{
isWaiting = false;
return;
}
if (hovered((int)mouseX, (int)mouseY) && button == 0)
{
KeybindScreen kbs = new KeybindScreen();
MinecraftClient.getInstance().setScreen(kbs);
this.value = kbs.returnedKeycode;
isWaiting = true;
}
}
@ -32,9 +37,34 @@ public class KeycodeSetting extends Setting
{
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);
if (isWaiting)
{
String waiting = "Press any key.";
int twwidth = textRenderer.getWidth(waiting);
drawContext.drawTextWithShadow(textRenderer, waiting, x+190-twwidth, y+8, 0xFFFFFF);
}
else
{
String key = KeycodeUtils.keyTable[value];
if (value == GLFW.GLFW_KEY_UNKNOWN) key = "";
int twidth = textRenderer.getWidth(key);
drawContext.drawTextWithShadow(textRenderer, key, x+190-twidth, y+8, 0xFFFFFF);
}
}
@Override
public void keyPressed(int keyCode, int scanCode, int modifiers)
{
if (isWaiting)
{
if (keyCode == 256)
{
// escape was pressed, exit safely
isWaiting = false;
return;
}
value = keyCode;
isWaiting = false;
}
}
}

View file

@ -1,36 +0,0 @@
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 (may not work, use .setting instead)", 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;
}
}

View file

@ -14,7 +14,7 @@ public class SettingsScreen extends Screen
private TextButton backButton;
boolean dragging = false;
int startX, startY, x = 4, y = 4, windowWidth = 224, windowHeight = 192;
int startX, startY, x = (ClickGUIScreen.INSTANCE.width/2)-112, y = (ClickGUIScreen.INSTANCE.height/2)-96, windowWidth = 224, windowHeight = 192;
public SettingsScreen(Module module)
{

View file

@ -0,0 +1,357 @@
package me.kawaiizenbo.moonlight.util;
public class KeycodeUtils
{
public static String[] keyTable = {
"",
"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",
",",
"-",
".",
"/",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"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",
};
}