full function keybinds
This commit is contained in:
		
							parent
							
								
									dc1e189d38
								
							
						
					
					
						commit
						d70d0dc0d0
					
				
					 8 changed files with 451 additions and 63 deletions
				
			
		|  | @ -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; | ||||
|  |  | |||
|  | @ -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; | ||||
|  |  | |||
|  | @ -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; | ||||
|  |  | |||
|  | @ -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(); | ||||
|             } | ||||
|         } | ||||
|  |  | |||
|  | @ -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; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -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; | ||||
| 	} | ||||
| } | ||||
|  | @ -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)  | ||||
|     { | ||||
|  |  | |||
							
								
								
									
										357
									
								
								src/main/java/me/kawaiizenbo/moonlight/util/KeycodeUtils.java
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										357
									
								
								src/main/java/me/kawaiizenbo/moonlight/util/KeycodeUtils.java
									
										
									
									
									
										Normal 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", | ||||
|     }; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 kawaiizenbo
						kawaiizenbo