diff --git a/cache/cache.gradle.kts b/cache/cache.gradle.kts index cb2879ed36..722b569e2f 100644 --- a/cache/cache.gradle.kts +++ b/cache/cache.gradle.kts @@ -42,7 +42,7 @@ dependencies { implementation(group = "com.google.guava", name = "guava", version = "29.0-jre") implementation(group = "commons-cli", name = "commons-cli", version = "1.4") implementation(group = "io.netty", name = "netty-buffer", version = "4.1.51.Final") - implementation(group = "com.squareup.okhttp3", name = "okhttp", version = "4.8.0") + implementation(group = "com.squareup.okhttp3", name = "okhttp", version = "4.8.1") implementation(group = "org.antlr", name = "antlr4-runtime", version = "4.8-1") implementation(group = "org.apache.commons", name = "commons-compress", version = "1.20") implementation(group = "org.slf4j", name = "slf4j-api", version = "1.7.30") diff --git a/deobfuscator/deobfuscator.gradle.kts b/deobfuscator/deobfuscator.gradle.kts index 956c74662f..a1eab920b7 100644 --- a/deobfuscator/deobfuscator.gradle.kts +++ b/deobfuscator/deobfuscator.gradle.kts @@ -51,7 +51,7 @@ dependencies { testImplementation(deobjars) testImplementation(group = "junit", name = "junit", version = "4.13") - testImplementation(group = "org.mockito", name = "mockito-core", version = "3.4.6") + testImplementation(group = "org.mockito", name = "mockito-core", version = "3.5.7") } tasks { diff --git a/http-api/http-api.gradle.kts b/http-api/http-api.gradle.kts index 31afceac61..1b0a97e993 100644 --- a/http-api/http-api.gradle.kts +++ b/http-api/http-api.gradle.kts @@ -34,13 +34,13 @@ dependencies { implementation(group = "com.google.code.gson", name = "gson", version = "2.8.6") implementation(group = "com.google.guava", name = "guava", version = "29.0-jre") - implementation(group = "com.squareup.okhttp3", name = "okhttp", version = "4.8.0") - implementation(group = "io.reactivex.rxjava3", name = "rxjava", version = "3.0.5") + implementation(group = "com.squareup.okhttp3", name = "okhttp", version = "4.8.1") + implementation(group = "io.reactivex.rxjava3", name = "rxjava", version = "3.0.6") implementation(group = "org.apache.commons", name = "commons-csv", version = "1.8") implementation(group = "org.slf4j", name = "slf4j-api", version = "1.7.30") implementation(project(":runelite-api")) - testImplementation(group = "com.squareup.okhttp3", name = "mockwebserver", version = "4.8.0") + testImplementation(group = "com.squareup.okhttp3", name = "mockwebserver", version = "4.8.1") testImplementation(group = "junit", name = "junit", version = "4.13") testImplementation(group = "org.slf4j", name = "slf4j-simple", version = "1.7.30") } diff --git a/runelite-api/runelite-api.gradle.kts b/runelite-api/runelite-api.gradle.kts index 8f6c16f9da..033d518808 100644 --- a/runelite-api/runelite-api.gradle.kts +++ b/runelite-api/runelite-api.gradle.kts @@ -32,7 +32,7 @@ dependencies { implementation(group = "com.google.code.findbugs", name = "jsr305", version = "3.0.2") implementation(group = "com.google.guava", name = "guava", version = "29.0-jre") - implementation(group = "org.apache.commons", name = "commons-text", version = "1.8") + implementation(group = "org.apache.commons", name = "commons-text", version = "1.9") implementation(group = "org.slf4j", name = "slf4j-api", version = "1.7.30") testImplementation(group = "junit", name = "junit", version = "4.13") diff --git a/runelite-client/runelite-client.gradle.kts b/runelite-client/runelite-client.gradle.kts index 5c1eead694..67bfa98af5 100644 --- a/runelite-client/runelite-client.gradle.kts +++ b/runelite-client/runelite-client.gradle.kts @@ -39,7 +39,7 @@ description = "RuneLite Client" dependencies { annotationProcessor(group = "org.projectlombok", name = "lombok", version = "1.18.12") - annotationProcessor(group = "org.pf4j", name = "pf4j", version = "3.3.1") + annotationProcessor(group = "org.pf4j", name = "pf4j", version = "3.4.1") api(project(":runelite-api")) @@ -53,23 +53,23 @@ dependencies { implementation(group = "com.google.inject", name = "guice", version = "4.2.3", classifier = "no_aop") implementation(group = "com.h2database", name = "h2", version = "1.4.200") implementation(group = "com.jakewharton.rxrelay3", name = "rxrelay", version = "3.0.0") - implementation(group = "com.squareup.okhttp3", name = "okhttp", version = "4.8.0") - implementation(group = "io.reactivex.rxjava3", name = "rxjava", version = "3.0.5") + implementation(group = "com.squareup.okhttp3", name = "okhttp", version = "4.8.1") + implementation(group = "io.reactivex.rxjava3", name = "rxjava", version = "3.0.6") implementation(group = "net.java.dev.jna", name = "jna", version = "5.6.0") - implementation(group = "org.jgroups", name = "jgroups", version = "4.2.4.Final") + implementation(group = "org.jgroups", name = "jgroups", version = "5.0.0.Final") implementation(group = "net.java.dev.jna", name = "jna-platform", version = "5.6.0") implementation(group = "net.runelite", name = "discord", version = "1.2") implementation(group = "org.pushing-pixels", name = "radiance-substance", version = "2.5.1") implementation(group = "net.sf.jopt-simple", name = "jopt-simple", version = "5.0.4") - implementation(group = "org.apache.commons", name = "commons-text", version = "1.8") + implementation(group = "org.apache.commons", name = "commons-text", version = "1.9") implementation(group = "org.jetbrains", name = "annotations", version = "20.0.0") - implementation(group = "org.jooq", name = "jooq", version = "3.13.3") - implementation(group = "org.jooq", name = "jooq-codegen", version = "3.13.3") - implementation(group = "org.jooq", name = "jooq-meta", version = "3.13.3") + implementation(group = "org.jooq", name = "jooq", version = "3.13.4") + implementation(group = "org.jooq", name = "jooq-codegen", version = "3.13.4") + implementation(group = "org.jooq", name = "jooq-meta", version = "3.13.4") implementation(group = "io.sentry", name = "sentry-logback", version = "1.7.30") implementation(group = "com.github.zafarkhaja", name = "java-semver", version = "0.9.0") implementation(group = "org.slf4j", name = "slf4j-api", version = "1.7.30") - implementation(group = "org.pf4j", name = "pf4j", version = "3.3.1") { + implementation(group = "org.pf4j", name = "pf4j", version = "3.4.1") { exclude(group = "org.slf4j") } implementation(group = "org.pf4j", name = "pf4j-update", version = "2.3.0") @@ -87,9 +87,9 @@ dependencies { testImplementation(group = "com.google.inject.extensions", name = "guice-testlib", version = "4.2.3") testImplementation(group = "org.hamcrest", name = "hamcrest-library", version = "2.2") testImplementation(group = "junit", name = "junit", version = "4.13") - testImplementation(group = "org.mockito", name = "mockito-core", version = "3.4.6") - testImplementation(group = "org.mockito", name = "mockito-inline", version = "3.4.6") - testImplementation(group = "com.squareup.okhttp3", name = "mockwebserver", version = "4.8.0") + testImplementation(group = "org.mockito", name = "mockito-core", version = "3.5.7") + testImplementation(group = "org.mockito", name = "mockito-inline", version = "3.5.7") + testImplementation(group = "com.squareup.okhttp3", name = "mockwebserver", version = "4.8.1") testImplementation(group = "org.slf4j", name = "slf4j-api", version = "1.7.30") } diff --git a/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java b/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java index a9eec5da37..3643bb392a 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java +++ b/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java @@ -864,7 +864,7 @@ public class ConfigManager try { - ConfigChanged configChanged = Util.objectFromByteBuffer(message.getBuffer()); + ConfigChanged configChanged = Util.objectFromByteBuffer(message.getObject()); if (!configChanged.getPath().equals(settingsFileInput.getAbsolutePath())) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java index e9cdf90415..3386965652 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java @@ -80,6 +80,7 @@ import net.runelite.client.task.Scheduler; import net.runelite.client.ui.RuneLiteSplashScreen; import net.runelite.client.util.GameEventManager; import net.runelite.client.util.Groups; +import net.runelite.client.util.SwingUtil; import org.jgroups.Message; import org.pf4j.Extension; @@ -291,6 +292,7 @@ public class PluginManager log.warn("Unable to reset plugin configuration", ex); } } + public void loadCorePlugins() throws IOException { plugins.addAll(scanAndInstantiate(getClass().getClassLoader(), PLUGIN_PACKAGE, false)); @@ -416,44 +418,44 @@ public class PluginManager final long start = System.currentTimeMillis(); - List scannedPlugins = new CopyOnWriteArrayList<>(); - sortedPlugins.forEach(group -> - { - List> curGroup = new ArrayList<>(); - group.forEach(pluginClazz -> - curGroup.add(executorService.submit(() -> - { - Plugin plugin; - try - { - plugin = instantiate(scannedPlugins, (Class) pluginClazz); - scannedPlugins.add(plugin); - } - catch (PluginInstantiationException e) - { - log.warn("Error instantiating plugin!", e); - return; - } - - loaded.getAndIncrement(); - - RuneLiteSplashScreen.stage(.60, .65, "Loading internal plugins", loaded.get(), scannedPlugins.size()); - }))); - curGroup.forEach(future -> + List scannedPlugins = new CopyOnWriteArrayList<>(); + sortedPlugins.forEach(group -> + { + List> curGroup = new ArrayList<>(); + group.forEach(pluginClazz -> + curGroup.add(executorService.submit(() -> { + Plugin plugin; try { - future.get(); + plugin = instantiate(scannedPlugins, (Class) pluginClazz); + scannedPlugins.add(plugin); } - catch (InterruptedException | ExecutionException e) + catch (PluginInstantiationException e) { - e.printStackTrace(); + log.warn("Error instantiating plugin!", e); + return; } - }); - }); - log.info("Plugin instantiation took {}ms", System.currentTimeMillis() - start); - return scannedPlugins; + loaded.getAndIncrement(); + + RuneLiteSplashScreen.stage(.60, .65, "Loading internal plugins", loaded.get(), scannedPlugins.size()); + }))); + curGroup.forEach(future -> + { + try + { + future.get(); + } + catch (InterruptedException | ExecutionException e) + { + e.printStackTrace(); + } + }); + }); + + log.info("Plugin instantiation took {}ms", System.currentTimeMillis() - start); + return scannedPlugins; } public boolean startPlugin(Plugin plugin) throws PluginInstantiationException @@ -764,29 +766,47 @@ public class PluginManager switch (command) { case "STARTPLUGIN": - try { - startPlugin(finalPlugin); + SwingUtil.syncExec(() -> + { + try + { + startPlugin(finalPlugin); + } + catch (PluginInstantiationException e) + { + log.warn("unable to start plugin", e); + throw new RuntimeException(e); + } + }); } - catch (PluginInstantiationException e) + catch (InvocationTargetException | InterruptedException e) { - log.warn("unable to start plugin", e); - throw new RuntimeException(e); + log.error("eh?"); } break; case "STOPPLUGIN": - try { - stopPlugin(finalPlugin); + SwingUtil.syncExec(() -> + { + try + { + stopPlugin(finalPlugin); + } + catch (PluginInstantiationException e) + { + log.warn("unable to stop plugin", e); + throw new RuntimeException(e); + } + }); } - catch (PluginInstantiationException e) + catch (InvocationTargetException | InterruptedException e) { - log.warn("unable to stop plugin", e); - throw new RuntimeException(e); + log.error("eh?"); } break; diff --git a/runelite-client/src/main/java/net/runelite/client/util/Groups.java b/runelite-client/src/main/java/net/runelite/client/util/Groups.java index c820a276ef..d6e603f79f 100644 --- a/runelite-client/src/main/java/net/runelite/client/util/Groups.java +++ b/runelite-client/src/main/java/net/runelite/client/util/Groups.java @@ -22,13 +22,14 @@ import net.runelite.client.ui.RuneLiteSplashScreen; import org.jgroups.Address; import org.jgroups.JChannel; import org.jgroups.Message; -import org.jgroups.ReceiverAdapter; +import org.jgroups.ObjectMessage; +import org.jgroups.Receiver; import org.jgroups.View; import org.jgroups.util.Util; @Slf4j @Singleton -public class Groups extends ReceiverAdapter +public class Groups implements Receiver { private final OpenOSRSConfig openOSRSConfig; private final JChannel channel; @@ -38,7 +39,7 @@ public class Groups extends ReceiverAdapter @Getter(AccessLevel.PUBLIC) private List
members; @Getter(AccessLevel.PUBLIC) - private Map> messageMap = new HashMap<>(); + private final Map> messageMap = new HashMap<>(); @Getter(AccessLevel.PUBLIC) private final PublishSubject messageStringSubject = PublishSubject.create(); @Getter(AccessLevel.PUBLIC) @@ -79,9 +80,9 @@ public class Groups extends ReceiverAdapter try { byte[] buffer = Util.objectToByteBuffer(configChanged); - Message message = new Message() + Message message = new ObjectMessage() .setDest(destination) - .setBuffer(buffer); + .setObject(buffer); channel.send(message); } @@ -119,7 +120,7 @@ public class Groups extends ReceiverAdapter try { - channel.send(new Message(destination, command)); + channel.send(new ObjectMessage(destination, command)); } catch (Exception e) { diff --git a/runelite-client/src/main/resources/udp-openosrs.xml b/runelite-client/src/main/resources/udp-openosrs.xml index 2dad4551c8..5010d78591 100644 --- a/runelite-client/src/main/resources/udp-openosrs.xml +++ b/runelite-client/src/main/resources/udp-openosrs.xml @@ -7,7 +7,7 @@ + version="5.0.0">