From dd62d0654e1d422b720b64d8e47eb05c55ff111b Mon Sep 17 00:00:00 2001 From: Lee Marlow Date: Sun, 8 Dec 2024 19:16:02 -0800 Subject: [PATCH 1/5] add getDraw2DMask, setDraw2DMask, and getVarTransmitTrigger --- build.gradle | 2 +- .../client_wrapper/BaseClientWrapper.java | 10 ++++++++++ .../client_wrapper/BaseWidgetWrapper.java | 4 ++++ .../rsb/wrappers/client_wrapper/RSClient.java | 15 +++++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index e2ce63f3..43e1962f 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ repositories { } } -def lastSupportedVersion = "1.10.36" +def lastSupportedVersion = "1.10.45" def runeLiteVersion = getRuneLiteVersion() def supportedCheck = false if (supportedCheck) { diff --git a/src/main/java/net/runelite/rsb/wrappers/client_wrapper/BaseClientWrapper.java b/src/main/java/net/runelite/rsb/wrappers/client_wrapper/BaseClientWrapper.java index f48438e9..f83847b6 100644 --- a/src/main/java/net/runelite/rsb/wrappers/client_wrapper/BaseClientWrapper.java +++ b/src/main/java/net/runelite/rsb/wrappers/client_wrapper/BaseClientWrapper.java @@ -1620,4 +1620,14 @@ public WorldView getWorldView(int i) { public WorldView getTopLevelWorldView() { return wrappedClient.getTopLevelWorldView(); } + + @Override + public int getDraw2DMask() { + return wrappedClient.getDraw2DMask(); + } + + @Override + public void setDraw2DMask(int i) { + wrappedClient.setDraw2DMask(i); + } } diff --git a/src/main/java/net/runelite/rsb/wrappers/client_wrapper/BaseWidgetWrapper.java b/src/main/java/net/runelite/rsb/wrappers/client_wrapper/BaseWidgetWrapper.java index e45131cb..4dee60b3 100644 --- a/src/main/java/net/runelite/rsb/wrappers/client_wrapper/BaseWidgetWrapper.java +++ b/src/main/java/net/runelite/rsb/wrappers/client_wrapper/BaseWidgetWrapper.java @@ -779,4 +779,8 @@ public void setOnScrollWheelListener(Object... objects) { @Override public void clearActions() { wrappedWidget.clearActions(); } + @Override + public int[] getVarTransmitTrigger() { + return wrappedWidget.getVarTransmitTrigger(); + } } diff --git a/src/main/java/net/runelite/rsb/wrappers/client_wrapper/RSClient.java b/src/main/java/net/runelite/rsb/wrappers/client_wrapper/RSClient.java index e62dbda1..cdc02676 100644 --- a/src/main/java/net/runelite/rsb/wrappers/client_wrapper/RSClient.java +++ b/src/main/java/net/runelite/rsb/wrappers/client_wrapper/RSClient.java @@ -281,6 +281,16 @@ public WorldView getTopLevelWorldView() { return convertResult(super.getTopLevelWorldView()); } + @Override + public int getDraw2DMask() { + return super.getDraw2DMask(); + } + + @Override + public void setDraw2DMask(int i) { + super.setDraw2DMask(i); + } + @Nullable @Override public LocalPoint getLocalDestinationLocation() { // tested, causes freezes without runOnClientThread @@ -600,5 +610,10 @@ public Widget setDragParent(Widget dragParent) { public void clearActions() { super.clearActions(); } + + @Override + public int[] getVarTransmitTrigger() { + return super.getVarTransmitTrigger(); + } } } From d9145059ccc26dcf65a9d221cf83d810fa8007bc Mon Sep 17 00:00:00 2001 From: Lee Marlow Date: Mon, 9 Dec 2024 18:33:14 -0800 Subject: [PATCH 2/5] add invokeAtTickEnd and update invoke --- .../client/callback/ClientThread.java | 30 +++++++------------ 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/src/main/java/net/runelite/client/callback/ClientThread.java b/src/main/java/net/runelite/client/callback/ClientThread.java index b9033f65..e983bfa5 100644 --- a/src/main/java/net/runelite/client/callback/ClientThread.java +++ b/src/main/java/net/runelite/client/callback/ClientThread.java @@ -70,28 +70,20 @@ public void invokeLater(BooleanSupplier r) { invokes.add(r); } + public void invokeAtTickEnd(Runnable r) + { + invokesAtTickEnd.add(() -> + { + r.run(); + return true; + }); + } + /** * Invokes queued actions on the client thread */ void invoke() { - assert client.isClientThread(); - Iterator ir = invokes.iterator(); - while (ir.hasNext()) { - BooleanSupplier r = ir.next(); - boolean remove = true; - try { - remove = r.getAsBoolean(); - } catch (ThreadDeath d) { - throw d; - } catch (Throwable e) { - log.warn("Exception in invoke", e); - } - if (remove) { - ir.remove(); - } else { - log.trace("Deferring task {}", r); - } - } + invokeList(invokes); } void invokeTickEnd() { @@ -118,4 +110,4 @@ private void invokeList(ConcurrentLinkedQueue invokes) { } } } -} \ No newline at end of file +} From cbf6699c82b3c8deeec095d7884cfedf2341d9b1 Mon Sep 17 00:00:00 2001 From: Lee Marlow Date: Mon, 9 Dec 2024 18:53:25 -0800 Subject: [PATCH 3/5] update lastSupportedVersion to 1.10.46-SNAPSHOT --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 43e1962f..989471d3 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ repositories { } } -def lastSupportedVersion = "1.10.45" +def lastSupportedVersion = "1.10.46-SNAPSHOT" def runeLiteVersion = getRuneLiteVersion() def supportedCheck = false if (supportedCheck) { From b72e8434b3f724e445f3f9a7d064caee5fa29e88 Mon Sep 17 00:00:00 2001 From: Lee Marlow Date: Tue, 10 Dec 2024 15:23:54 -0800 Subject: [PATCH 4/5] update lastSupportedVersion to 1.10.46.1 --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 989471d3..5b4cadef 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ repositories { } } -def lastSupportedVersion = "1.10.46-SNAPSHOT" +def lastSupportedVersion = "1.10.46.1" def runeLiteVersion = getRuneLiteVersion() def supportedCheck = false if (supportedCheck) { @@ -26,7 +26,7 @@ if (supportedCheck) { } static def getRuneLiteVersion() { - URL url = new URL("http://repo.runelite.net/net/runelite/client/maven-metadata.xml") + URL url = new URL("https://repo.runelite.net/net/runelite/client/maven-metadata.xml") URLConnection urlConnection = url.openConnection() BufferedReader bufferedReader = new BufferedReader(new InputStreamReader( urlConnection.getInputStream())) From 215414caa4da5d75f8936d6c3a4622a14d853be0 Mon Sep 17 00:00:00 2001 From: NubeBuster Date: Thu, 24 Apr 2025 22:11:27 +0200 Subject: [PATCH 5/5] Compatibility with 1.11.7 --- build.gradle | 3 +- .../runelite/client/modified/BotModule.java | 7 +++-- .../runelite/client/modified/RuneLite.java | 16 +--------- .../client_wrapper/BaseClientWrapper.java | 31 ++++++++++++++++--- .../rsb/wrappers/client_wrapper/RSClient.java | 30 ++++++++++++++++++ 5 files changed, 63 insertions(+), 24 deletions(-) diff --git a/build.gradle b/build.gradle index 5b4cadef..276c4607 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ repositories { } } -def lastSupportedVersion = "1.10.46.1" +def lastSupportedVersion = "1.11.7" def runeLiteVersion = getRuneLiteVersion() def supportedCheck = false if (supportedCheck) { @@ -24,7 +24,6 @@ if (supportedCheck) { throw new Exception("Out of date (last supported: " + lastSupportedVersion + " current client: " + runeLiteVersion + ")") } } - static def getRuneLiteVersion() { URL url = new URL("https://repo.runelite.net/net/runelite/client/maven-metadata.xml") URLConnection urlConnection = url.openConnection() diff --git a/src/main/java/net/runelite/client/modified/BotModule.java b/src/main/java/net/runelite/client/modified/BotModule.java index 1e5e75e7..43a70421 100644 --- a/src/main/java/net/runelite/client/modified/BotModule.java +++ b/src/main/java/net/runelite/client/modified/BotModule.java @@ -34,6 +34,7 @@ import net.runelite.client.game.NPCManager; import net.runelite.client.menus.MenuManager; import net.runelite.client.plugins.PluginManager; +import net.runelite.client.rs.ClientLoader; import net.runelite.client.task.Scheduler; import net.runelite.client.util.DeferredEventBus; import net.runelite.client.util.ExecutorServiceExceptionLogger; @@ -47,7 +48,7 @@ public class BotModule extends AbstractModule { private final OkHttpClient okHttpClient; - private final Supplier clientLoader; + private final ClientLoader clientLoader; private final RuntimeConfigLoader configSupplier; private final boolean developerMode; private final boolean safeMode; @@ -60,7 +61,7 @@ public class BotModule extends AbstractModule { private final boolean noupdate = false; - public BotModule(OkHttpClient okHttpClient, Supplier clientLoader, RuntimeConfigLoader configSupplier, boolean developerMode, boolean safeMode, File sessionfile, File config) { + public BotModule(OkHttpClient okHttpClient, ClientLoader clientLoader, RuntimeConfigLoader configSupplier, boolean developerMode, boolean safeMode, File sessionfile, File config) { this.okHttpClient = okHttpClient; this.clientLoader = clientLoader; this.configSupplier = configSupplier; @@ -144,7 +145,7 @@ else if (entry.getValue() instanceof Double) @Singleton Applet provideApplet() { - return clientLoader.get(); + return (Applet) clientLoader.get(); } @Provides diff --git a/src/main/java/net/runelite/client/modified/RuneLite.java b/src/main/java/net/runelite/client/modified/RuneLite.java index 369ef2bd..b7138393 100644 --- a/src/main/java/net/runelite/client/modified/RuneLite.java +++ b/src/main/java/net/runelite/client/modified/RuneLite.java @@ -49,7 +49,6 @@ import net.runelite.client.game.WorldService; import net.runelite.client.plugins.PluginManager; import net.runelite.client.rs.ClientLoader; -import net.runelite.client.rs.ClientUpdateCheckMode; import net.runelite.client.ui.FontManager; import net.runelite.client.ui.overlay.WidgetOverlay; import net.runelite.rsb.botLauncher.BotLite; @@ -175,23 +174,11 @@ public static ArgumentAcceptingOptionSpec[] handleParsing(OptionParser parser .withValuesConvertedBy(new ConfigFileConverter()) .defaultsTo(DEFAULT_CONFIG_FILE); - final ArgumentAcceptingOptionSpec updateMode = parser - .accepts("rs", "Select client type") - .withRequiredArg() - .ofType(ClientUpdateCheckMode.class) - .defaultsTo(ClientUpdateCheckMode.AUTO) - .withValuesConvertedBy(new EnumConverter<>(ClientUpdateCheckMode.class) { - @Override - public ClientUpdateCheckMode convert(String v) { - return super.convert(v.toUpperCase()); - } - }); - final ArgumentAcceptingOptionSpec proxyInfo = parser .accepts("proxy", "Designates a proxy ip address to be used to make the bot server connections") .withRequiredArg().ofType(String.class); - return (ArgumentAcceptingOptionSpec[]) new ArgumentAcceptingOptionSpec[]{sessionfile, configfile, updateMode, proxyInfo}; + return (ArgumentAcceptingOptionSpec[]) new ArgumentAcceptingOptionSpec[]{sessionfile, configfile, proxyInfo}; } /** @@ -260,7 +247,6 @@ public static void initializeClient(ArgumentAcceptingOptionSpec[] optionSpecs { final RuntimeConfigLoader runtimeConfigLoader = new RuntimeConfigLoader(okHttpClient); final ClientLoader clientLoader = new ClientLoader(okHttpClient, - options.valueOf(optionSpecs[Options.UPDATE_MODE.getIndex()].ofType(ClientUpdateCheckMode.class)), runtimeConfigLoader, (String) options.valueOf("jav_config")); diff --git a/src/main/java/net/runelite/rsb/wrappers/client_wrapper/BaseClientWrapper.java b/src/main/java/net/runelite/rsb/wrappers/client_wrapper/BaseClientWrapper.java index f83847b6..bd0abe5a 100644 --- a/src/main/java/net/runelite/rsb/wrappers/client_wrapper/BaseClientWrapper.java +++ b/src/main/java/net/runelite/rsb/wrappers/client_wrapper/BaseClientWrapper.java @@ -73,14 +73,12 @@ public List getNpcs() { return wrappedClient.getNpcs(); } - @Override public NPC[] getCachedNPCs() { - return wrappedClient.getCachedNPCs(); + return (NPC[]) wrappedClient.getTopLevelWorldView().npcs().stream().toArray(); } - @Override public Player[] getCachedPlayers() { - return wrappedClient.getCachedPlayers(); + return (Player[]) wrappedClient.getTopLevelWorldView().players().stream().toArray(); } @Override @@ -227,6 +225,11 @@ public int getWorld() { return wrappedClient.getWorld(); } + @Override + public String getWorldHost() { + return wrappedClient.getWorldHost(); + } + @Override public int getCanvasHeight() { return wrappedClient.getCanvasHeight(); @@ -776,6 +779,26 @@ public LocalPoint getLocalDestinationLocation() { return wrappedClient.getLocalDestinationLocation(); } + @Override + public void registerRuneLiteObject(RuneLiteObjectController controller) { + wrappedClient.registerRuneLiteObject(controller); + } + + @Override + public void removeRuneLiteObject(RuneLiteObjectController controller) { + wrappedClient.removeRuneLiteObject(controller); + } + + @Override + public boolean isRuneLiteObjectRegistered(RuneLiteObjectController controller) { + return wrappedClient.isRuneLiteObjectRegistered(controller); + } + + @Override + public List getActiveMidiRequests() { + return wrappedClient.getActiveMidiRequests(); + } + @Override public Projectile createProjectile(int id, int plane, int startX, int startY, int startZ, int startCycle, int endCycle, int slope, int startHeight, int endHeight, @Nullable Actor target, int targetX, int targetY) { return wrappedClient.createProjectile(id, plane, startX, startY, startZ, startCycle, endCycle, slope, startHeight, endHeight, target, targetX, targetY); diff --git a/src/main/java/net/runelite/rsb/wrappers/client_wrapper/RSClient.java b/src/main/java/net/runelite/rsb/wrappers/client_wrapper/RSClient.java index cdc02676..e52e9005 100644 --- a/src/main/java/net/runelite/rsb/wrappers/client_wrapper/RSClient.java +++ b/src/main/java/net/runelite/rsb/wrappers/client_wrapper/RSClient.java @@ -172,6 +172,11 @@ public void setAnimationInterpolationFilter(IntPredicate intPredicate) { super.setAnimationInterpolationFilter(intPredicate); } + @Override + public String getWorldHost() { + return super.getWorldHost(); + } + @Override public int getCameraMode() { return super.getCameraMode(); @@ -297,6 +302,26 @@ public LocalPoint getLocalDestinationLocation() { // tested, causes freezes with return runOnClientThread(super::getLocalDestinationLocation); } + @Override + public void registerRuneLiteObject(RuneLiteObjectController controller) { + super.registerRuneLiteObject(controller); + } + + @Override + public void removeRuneLiteObject(RuneLiteObjectController controller) { + super.removeRuneLiteObject(controller); + } + + @Override + public boolean isRuneLiteObjectRegistered(RuneLiteObjectController controller) { + return super.isRuneLiteObjectRegistered(controller); + } + + @Override + public List getActiveMidiRequests() { + return super.getActiveMidiRequests(); + } + @Override public int getArraySizes(int i) { return super.getArraySizes(i); @@ -324,6 +349,11 @@ public CollisionData[] getCollisionMaps() { // tested, causes freezes without ru return runOnClientThread(super::getCollisionMaps); } + @Override + public Model applyTransformations(Model model, @Nullable Animation animA, int frameA, @Nullable Animation animB, int frameB) { + return null; + } + private class WidgetWrapper extends BaseWidgetWrapper { WidgetWrapper(Widget widget) {