From 47df7bd3d3e779588e144706df9d142ea98a5715 Mon Sep 17 00:00:00 2001 From: ipkpjersi Date: Mon, 17 Jun 2024 20:46:48 -0400 Subject: [PATCH] Added toggle resizeable SD plugin This also fixes two CMEs, very cool. --- .../main/java/plugin/PluginRepository.java | 12 ++--- client/src/main/java/rt4/Cheat.java | 11 ---- .../main/kotlin/ToggleResizableSD/plugin.kt | 53 +++++++++++++++++++ 3 files changed, 59 insertions(+), 17 deletions(-) create mode 100644 plugin-playground/src/main/kotlin/ToggleResizableSD/plugin.kt diff --git a/client/src/main/java/plugin/PluginRepository.java b/client/src/main/java/plugin/PluginRepository.java index b04c2ea..88775c6 100644 --- a/client/src/main/java/plugin/PluginRepository.java +++ b/client/src/main/java/plugin/PluginRepository.java @@ -12,10 +12,7 @@ import java.awt.event.MouseWheelListener; import java.io.*; import java.net.URL; import java.net.URLClassLoader; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -133,7 +130,8 @@ public class PluginRepository { } public static void Draw() { - loadedPlugins.values().forEach(Plugin::_draw); + List pluginsSnapshot = new ArrayList<>(loadedPlugins.values()); + pluginsSnapshot.forEach(Plugin::_draw); } public static void NPCOverheadDraw(Npc npc, int screenX, int screenY) { @@ -147,7 +145,9 @@ public class PluginRepository { public static void ProcessCommand(JagString commandStr) { String[] tokens = commandStr.toString().split(" "); String[] args = Arrays.copyOfRange(tokens, 1, tokens.length); - loadedPlugins.values().forEach((plugin) -> plugin.ProcessCommand(tokens[0], args)); + List pluginsSnapshot = new ArrayList<>(loadedPlugins.values()); + + pluginsSnapshot.forEach((plugin) -> plugin.ProcessCommand(tokens[0], args)); } public static void ComponentDraw(int componentIndex, Component component, int screenX, int screenY) { diff --git a/client/src/main/java/rt4/Cheat.java b/client/src/main/java/rt4/Cheat.java index 23f5d9d..97affb5 100644 --- a/client/src/main/java/rt4/Cheat.java +++ b/client/src/main/java/rt4/Cheat.java @@ -99,7 +99,6 @@ public class Cheat { @OriginalMember(owner = "client!jg", name = "e", descriptor = "Z") public static boolean qaOpTest = false; public static final JagString RELOADPLUGINS = JagString.parse("::reloadplugins"); - public static final JagString USERESIZABLESD = JagString.parse("::resizablesd"); @OriginalMember(owner = "client!en", name = "a", descriptor = "(IIIB)V") public static void teleport(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2) { @@ -232,16 +231,6 @@ public class Cheat { shiftClick = true; } } - if(arg0.equalsIgnoreCase(USERESIZABLESD)){ - DisplayMode.resizableSD = !DisplayMode.resizableSD; - if(!DisplayMode.resizableSD){ - // Revert to fixed - DisplayMode.setWindowMode(true, 0, -1, -1); - } else { - // use resizable - DisplayMode.setWindowMode(true, 0, GameShell.frameWidth, GameShell.frameHeight); - } - } if (arg0.equalsIgnoreCase(RELOADPLUGINS)) { PluginRepository.reloadPlugins(); diff --git a/plugin-playground/src/main/kotlin/ToggleResizableSD/plugin.kt b/plugin-playground/src/main/kotlin/ToggleResizableSD/plugin.kt new file mode 100644 index 0000000..11048d7 --- /dev/null +++ b/plugin-playground/src/main/kotlin/ToggleResizableSD/plugin.kt @@ -0,0 +1,53 @@ +package ToggleResizableSD + +import plugin.Plugin +import plugin.annotations.PluginMeta +import plugin.api.API +import rt4.DisplayMode +import rt4.GameShell +import java.awt.event.KeyAdapter +import java.awt.event.KeyEvent + +@PluginMeta ( + author = "ipkpjersi", + description = "Allows you to use F12 to toggle resizable SD.", + version = 1.0 +) +class plugin : Plugin() { + var toggleResize = false + override fun Init() { + API.AddKeyboardListener(object : KeyAdapter() { + override fun keyPressed(e: KeyEvent) { + if (e.keyCode == KeyEvent.VK_F12) { + toggleResize = true + } + } + }) + } + + override fun ProcessCommand(commandStr: String, args: Array?) { + when(commandStr.toLowerCase()) { + "::resizablesd" -> { + toggleResize = true //We could call toggleResizableSd() directly here, but it's not necessary. + } + } + } + + fun toggleResizableSd() { + DisplayMode.resizableSD = !DisplayMode.resizableSD; + if(!DisplayMode.resizableSD){ + //Revert to fixed + DisplayMode.setWindowMode(true, 0, -1, -1) + } else { + //Use resizable + DisplayMode.setWindowMode(true, 0, GameShell.frameWidth, GameShell.frameHeight) + } + } + + override fun Draw(timeDelta: Long) { + if (toggleResize) { + toggleResizableSd() + toggleResize = false + } + } +} \ No newline at end of file