Overlays And Config
This page documents the committed source. Treat revision-sensitive RuneLite UI, packet, or in-game outcomes as pending live-client verification unless the page records direct evidence.
Config keys:
copyIssuedActionsToClipboard: disabled by default; copies dispatched SDK/RuneLite actions to the system clipboard without changing action acceptance or Logger retention. Walker NPC output includes NPC ID and live scene index.logClientTelemetry: disabled by default; records observational mouse, keyboard, focus, canvas-size, game-state, widget-drag, and non-spammy client events in the existing bounded action trace.logSpammyTelemetry: disabled by default and subordinate tologClientTelemetry; additionally records mouse movement, mouse dragging, and client ticks.
You access the Developer Tools tab via Packet Utils without duplicating its controls in Main Settings. The tab renders DevToolsConfig settings for the Swing inspector hotkey and notifications, followed by the developer utilities. Overlay buttons like Animation IDs render through RuneLite's canvas overlay manager. ID Menu Option remains a right-click menu helper.
The distributed fat JARs must contain FlatInspector and FlatUIDefaultsInspector from FlatLaf Extras while leaving FlatLaf core to RuneLite. Packaging coverage enforces this boundary. The Swing Inspector and Swing Defaults controls were live-confirmed functional with the rebuilt normal fat JAR on 2026-08-16.
The Developer Tools tab provides opt-in mouse recording, analysis, derived profile saving, selected-widget path preview, and cancellation. The plugin stores raw sessions below n3/mouse/recordings/<profile-id>/ and derived statistics-only profiles below n3/mouse/profiles/. The synthetic-mouse overlay renders a bounded planned/traversed path, target bounds, landing point, and recorder indicator through the normal overlay lifecycle. It starts no animation thread. Record mouse menu metadata is disabled by default; the plugin never records keyboard and n3 synthetic events, and it emits menu context as a separate semantic recording row rather than attaching it to physical input.
Logger visibility and filtering are session-only utilities rather than persisted Packet Utils config items. Use its tab controls to select the displayed Logback level and source streams; you toggle the same Logger state via the client title-bar button. Packet trace, native-action, and menu capture are enabled for the Packet Utils runtime session. The persisted telemetry settings only control whether observational client callbacks join the existing action trace. Toggling Logger changes console visibility, not capture lifetime.
Overlay utility:
OverlayUtils.drawTile(...) centralizes scene tile drawing.
Example:
OverlayUtils.drawTile(client, graphics, point, Color.MAGENTA, 25, "1", new BasicStroke(1));
Guidelines:
- Keep overlay utilities rendering-only.
- Keep plugin state in the plugin or action layer.
- Add new overlay helpers only when a concrete overlay needs them.
Shared panel UI:
Use com.n3plugins.ui for shared n3 plugin panel styling:
N3Themedefines the amber suite accent#F59E0B, shared foreground colors, borders, and dark card backgrounds.Sectionrenders rounded dark cards and supports an optional description line under the amber section title.N3PluginPanel.addAction(...)creates styledN3Buttonpill buttons. The first panel action is primary and uses amber text.HeaderPilldraws the bundled n3 brand icon before the plugin name, while preserving the amber pill, status dot, and status string behavior.
Brand image resource:
src/main/resources/com/n3plugins/ui/brand/n3.png is the packaged n3 brand asset. Runtime code must load it from the jar through com.n3plugins.ui.brand.N3Branding. Do not depend on any machine-local image after build.
Plugin-list branding:
The pinned RuneLite 1.12.38 API still does not expose an icon field on @PluginDescriptor. The plugin list uses a small Swing decorator:
PacketUtilsPluginownsN3PluginListBrandingas shared runtime setup.- The decorator runs on the Swing EDT with a timer, scans visible windows for
net.runelite.client.plugins.config.PluginListItemlabels, detects the[n3]marker, applies the scaled bundled icon, strips the visible marker, and marks decorated labels with client properties. - Shutdown stops the timer and restores any still-visible decorated labels to their original text/icon state.
Validation notes:
- Automated tests cover image loading/scaling and Swing component-tree decoration, double-decoration avoidance, and restore behavior.
- Manual RuneLite validation is required for plugin-list refresh/search, tooltips, pinned plugin behavior, and in-panel visual quality.