swazrgb e23c6a0c46 Support loading external plugins from sources enabling hotswapping
Enables the pf4j [development mode](https://pf4j.org/doc/development-mode.html)
to support loading external plugins from sources, which enables java's
hotswap functionality.

To use this feature set the `plugin.development.path` property or
`PLUGIN_DEVELOPMENT_PATH` environment variable to the directories
containing your plugins, e.g. `../plugins;../my-custom-plugins`

Once set the `ExternalPluginManager` will ignore the configured
repositories and externalmanager directory, and instead load all
the built plugins from the specified directories.

Utilizing this feature does require some additional configuration
of the build of the plugins `build.gradle.kts`. Within the `subprojects`
section add:

```
tasks.register<Copy>("copyDeps") {
    into("./build/deps/")
    from(configurations["runtimeClasspath"])
}
```

See https://github.com/open-osrs/plugins/pull/260 for the `openosrs/plugins` change

This enables the following workflow:

0. Optional tip: Set the `external.system.substitute.library.dependencies` registry value to `true` to force classpath resolution within the project

1. Open the `runelite-client` project in IntelliJ

2. Add the `plugins` repository as a module (Gradle -> Plus symbol ->
`plugins/build.gradle.kts`)

3. Gradle build the client with: `build publishToMavenLocal :runelite-client:publishToMavenLocal :runelite-api:publishToMavenLocal :http-api:publishToMavenLocal`

4. Gradle build the plugins with: `build copyDeps`

5. Add the `PLUGIN_DEVELOPMENT_PATH` environment variable to the run
configuration

Once the above is done the edit -> reload -> edit cycle can begin:

1. Start the client in debug mode using the run goal

2. Edit the external plugin

3. Perform Build > Build Module

4. Observe hotswapping in action!

5. If hotswapping failed, or your change requires a plugin restart,
click the hotswap button in the plugin list to instantly restart it
2020-05-24 08:27:37 +02:00
2020-05-03 04:19:10 +02:00
2020-05-21 11:43:06 +00:00
2020-05-01 11:08:22 +02:00
2020-05-21 11:43:06 +00:00
2020-05-05 15:03:55 +01:00
2019-08-25 09:00:11 -04:00
2020-02-02 16:13:31 +00:00
2020-05-07 00:02:38 +00:00
2020-05-07 00:02:38 +00:00
2019-06-07 23:54:32 -04:00
2020-04-08 15:16:38 +02:00

OpenOSRS

Build Status HitCount
OpenOSRS is a fully open-source client with no restrictions. We are not affiliated with Jagex or RuneLite.

Discord

Discord

Project Layout

Building

We have migrated the project to Gradle. Information on how to setup and build the project can be found at https://github.com/open-osrs/runelite/wiki/Building-with-IntelliJ-IDEA

Install from Pre-built Binaries

Installers for Windows, Mac and Linux can be found at https://github.com/open-osrs/launcher/releases

License

OpenOSRS is licensed under the BSD 2-clause license. See the license header in the respective file to be sure.

Contribute and Develop

We've set up a separate document for our contribution guidelines.

Supported By

OpenOSRS uses profiling tools provided by YourKit

Thanks JetBrains for providing our developers with IntelliJ IDEA Ultimate Edition.

Wiki

Check out the OpenOSRS wiki to learn more

Description
No description provided
Readme BSD-2-Clause 107 MiB
Languages
Java 98.9%
GLSL 0.7%
C 0.3%