Skip to content

FreeArcanes/Plugin-Doctor

Repository files navigation

Plugin Doctor for RuneLite

Plugin Doctor is a local RuneLite performance diagnostic tool for investigating FPS drops, client stalls, client-thread CPU pressure, JVM heap behavior, and garbage-collection activity.

It combines live whole-client measurements with controlled plugin ON/OFF trials. The comparison workflow helps users identify a likely contributor by repeating the same test with one selected plugin enabled and disabled. Results are correlations to verify, not claims of direct per-plugin profiling.

Plugin Doctor live diagnostics

Highlights

  • Live FPS, client-thread CPU, heap, worst client cycle, GameTick interval, active-plugin count, recent garbage-collection time, and stall count.
  • Timed diagnostic captures with pause and resume support.
  • Matched plugin ON/OFF comparisons with contamination checks.
  • Optional, explicitly authorized assisted switching for only the selected plugin.
  • Automatic restoration of the selected plugin's original state when possible.
  • Ranked comparison results with plain-language conclusions, evidence scores, and confidence labels.
  • Basic reports for ordinary users and advanced reports for detailed troubleshooting.
  • Responsive RuneLite-native panel designed for the standard 225-pixel sidebar.
  • Local-only operation with no telemetry, server, account data, chat data, inventory data, or network capture.

Documentation

Recommended comparison workflow

  1. Open Plugin Doctor and select Compare.
  2. Choose one suspect plugin under Plugin under test.
  3. Keep the same location, camera, activity, client size, FPS limit, and client focus for both segments.
  4. Capture the plugin ON.
  5. Capture the same plugin OFF without changing anything else.
  6. Review the ON/OFF values and conclusion.
  7. Repeat the matched trial at least three times before drawing a strong conclusion.
  8. Use Copy basic for a readable summary or Copy advanced for every retained field.

Plugin Doctor rejects a pair if another plugin changes during either segment, the selected plugin is in the wrong state, or the remaining enabled-plugin sets do not match.

For a faster but less controlled check, use Start quick capture, wait at least five seconds, change exactly one plugin, wait at least five more seconds, and analyze the resulting before/after correlation.

Screenshots

Live diagnostics Plugin comparison
Live performance measurements Plugin comparison controls
Assisted-switching consent Settings
Assisted switching warning Plugin Doctor settings
Mixed GPU result No clear Metronome slowdown
GPU mixed comparison result Metronome comparison result
World Hopper result
World Hopper comparison result

What the conclusions mean

Conclusion Meaning
Strong likely contributor Multiple measured signals improved enough with the plugin OFF to produce an evidence score of at least 60/100. Repeatability is still required.
Possible contributor The averaged evidence score is at least 30/100, but the measured effect is not strong enough for the higher label.
Mixed result Meaningful metrics moved in opposing directions. The environment changed, the plugin has a tradeoff, or the trial was noisy. Repeat under stable conditions.
Performance favored the plugin ON At least two meaningful signals became worse with the plugin OFF.
No clear slowdown detected The measurements did not cross the plugin-impact thresholds. This does not prove the plugin has zero cost.

The evidence score is a normalized comparison indicator, not a probability, benchmark grade, or percentage of total client lag. See the metric reference for the exact formula.

Accuracy and scope

RuneLite's public plugin API does not expose per-plugin allocation counters or event-handler timings. Directly instrumenting every plugin would require forbidden reflection or RuneLite core changes, which would make this unsuitable as a standalone Plugin Hub plugin.

Plugin Doctor therefore measures the whole client and uses controlled ON/OFF comparisons for attribution. Background applications, location changes, camera changes, FPS caps, GPU/117 HD renderer changes, client focus, game updates, network conditions, and normal JVM garbage collection can affect results. Repeat comparable trials before identifying a plugin as the likely cause.

GameTick interval is client-observed event timing. It is not network ping or server latency. Plugin Doctor does not inspect RuneScape network traffic.

Privacy and safety

All samples, pending pairs, and rankings remain in memory until cleared, the plugin stops, or RuneLite closes. Reports are placed on the clipboard only when the user presses a copy button.

Reports exclude RuneScape account names, chat, inventory, equipment, friends, clan members, and network data. Advanced reports can optionally include enabled plugin names; disable Include plugin list if that inventory should not be copied.

Assisted switching is disabled by default. When authorized, it uses RuneLite's public plugin-management API and acts only on the selected comparison plugin. It refuses to enable a plugin automatically if doing so would disable an enabled conflicting plugin. An unexpected client or JVM exit can prevent restoration, which is why a warning is shown before consent.

Development

This standalone external-plugin repository targets Java 11.

./gradlew clean test shadowJar
./gradlew run

On Windows, use gradlew.bat. The run task launches a RuneLite development client with assertions enabled. Jagex Account users should follow RuneLite's Using Jagex Accounts instructions.

Build output is generated under build/ and is intentionally excluded from version control.

License

Plugin Doctor is licensed under the BSD 2-Clause License. See LICENSE.

About

RuneLite performance diagnostics with controlled plugin ON/OFF comparisons

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages