- The root
pom.xmlcontrols the multi-module Maven build forcache,runelite-api,runelite-client,runelite-jshell, andrunelite-maven-plugin. - Gameplay automation lives in
runelite-client/src/main/java/net/runelite/client/plugins/microbot; keep new scripts and utilities inside this plugin. - Shared helpers sit under
.../microbot/util, while runnable examples live in.../microbot/example. - Tests mirror sources in
runelite-client/src/test/java, and project documentation and walkthroughs are kept indocs/. - CI helpers and custom Maven settings are in
ci/, and distributable jars land inrunelite-client/target/.
mvn -pl runelite-client -am packagebuilds the client and producestarget/microbot-<version>.jar../ci/build.shrecreates the CI pipeline, fetchingglslangValidatorand runningmvn verify --settings ci/settings.xml.mvn -pl runelite-client testruns the unit suite; add-DskipTestsonly when packaging binaries for distribution.java -jar runelite-client/target/microbot-<version>.jarlaunches a locally built client for manual validation.
- Target Java 11 (
maven-compiler-pluginuses<release>11</release>); rely on Lombok for boilerplate where already adopted. - Keep indentation with tabs, follow the brace placement already in
MicrobotPlugin.java, and prefer lines under 120 characters. - Use
UpperCamelCasefor types,lowerCamelCasefor members, and prefix configuration interfaces with the plugin name (e.g.,ExampleConfig). - Centralize shared logic in util classes rather than duplicating inside scripts; inject dependencies through RuneLite’s DI when needed.
- Write JUnit 4 tests (
junit:4.12) under matching package paths inrunelite-client/src/test/java. - Name test classes with the
*Testsuffix and break scenarios into focused@Testmethods that assert observable client state. - Use Mockito (
mockito-core:3.1.0) for client services; rely onguice-testlibwhen event bus wiring is involved. - Run
mvn test(ormvn verifybefore release) locally before opening a pull request and attach logs when failures require review.
- Follow the existing conventional commit style:
type(scope): summary(e.g.,refactor(Rs2Walker): expand teleport keywords). - Squash noisy work-in-progress commits before pushing and keep summaries under 72 characters.
- PRs should explain the gameplay scenario, note affected plugins, link related issues or scripts, and include screenshots or clips when UI overlays change.
- Confirm tests/builds in the PR description and mention any follow-up tasks or config changes reviewers must perform.
- Register new automation under
net.runelite.client.plugins.microbotand reuse the scheduler pattern shown inExampleScript. - Expose reusable behaviour through
microbot/utilpackages so scripts stay thin and composable. - When adding panel controls or overlays, update the Microbot navigation panel setup in
MicrobotPluginand provide default config values. - Document new APIs in
docs/api/and cross-link fromdocs/development.mdso contributors can discover capabilities quickly.