Skip to main content

n3Plugins Installer

The n3Plugins-<version>-all.jar acts as both the plugin suite and its Windows installer. Close RuneLite, run the jar, select Enable, and wait for every status row to report ready. The installer copies itself to .runelite\sideloaded-plugins\n3Plugins.jar. The next RuneLite launch loads the suite.

The installer manages these version-pinned resources:

  • EthanVannInstaller.jar beside the RuneLite launcher (downloaded from Ethan-Vann/Installer);
  • collision-map.zip, destination data, and transport data under .runelite\n3Plugins\shortestpath;
  • the launcher mainClass and ordered classpath (EthanVannInstaller.jar, then RuneLite.jar) required for sideloading.

Both distributed plugin jars bundle FlatLaf Extras non-transitively so the Developer Tools Swing Inspector and UI Defaults Inspector are available directly from the sideloaded suite without external launcher dependency injection. The plugin manifest intentionally has no dependency Class-Path; the launcher classpath remains exactly EthanVannInstaller.jar, then RuneLite.jar. Repair migrates older launcher configurations to that two-entry launcher classpath. Obsolete jars previously placed beside the launcher remain untouched.

The installer SHA-256 checks every download before replacing a managed file. It extracts shortest path data into a staging directory, validates it, and only then swaps it into the active cache. Repair repeats the same checks and replaces missing, corrupt, or version-mismatched dependency jars before committing the plugin jar or launcher configuration.

Disable and recovery

Disable restores the launcher mainClass and classPath captured before the first n3-managed enable. It preserves unrelated config.json fields and leaves downloaded resources in place for a later re-enable.

The installer saves launcher state at .runelite\n3Plugins\installer-state.json. It avoids silently replacing an unknown custom launcher. Instead, it displays the main class and classpath and requires confirmation.

Caution

Close RuneLite before enabling, repairing, or disabling. Third-party launcher code provides sideloading outside RuneLite's Plugin Hub installation model.

Runtime fallback

Packet Utils retains the asynchronous shortest-path downloader. It validates the pinned cache before use, so a complete installer-prepared cache requires no download or rewrite. If a user removes or damages the cache, the runtime fallback downloads, stages, validates, and installs it again.

Verification boundary

Build and packaging tests verify artifact layout, checksums, deterministic configuration behavior, and cache validation. On 2026-08-16, the rebuilt normal fat JAR was loaded in RuneLite and both Developer Tools Swing inspection functions were confirmed operational. Fresh live verification remains necessary after later dependency or packaging changes and for unrelated in-game behavior such as walking.