-
-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Developer Guide
Most development takes place on the Plugin Hub, where anyone can submit their own plugin. If you are new to RuneLite development, you likely want to do plugin hub development. Get started here with the example plugin guide: here. You can also contribute directly to existing hub plugins by sending pull requests to the plugin's repository (find those by clicking "Report an issue" on the plugin's page here).
You can also make contributions to the core client. These are less common and are typically reserved for bug fixes and smaller features. The core client development process is different from plugin hub development, and requires building the client first. If you want to make a new feature for the core client, particularly if it is large, start a discussion in #development
on Discord to be sure it is a feature we want, rather than doing all of the work up front without communicating any of it first.
There are some high level guides on this wiki under the "Developer's Guide" section in the side panel. These cover things like working with git, using the developer tools, and concepts like client vars.
Javadoc for the api and client are also available. However, the best way to get an idea of proper API usage is looking at existing plugins that already do something similar. Otherwise, pick one of the more simple plugins and just read through it, such as e.g. agility, woodcutting, or implings. Or just clone the repository into your IDE which will give you easy search capabilities. You can also look at existing plugin hub plugins, although we recommend this as only a secondary option to looking at core plugins, since their API usage is not always correct.
There are also several external resources for client information:
- abex's cache viewer - which views most of the data in the cache in a human-readable way
- mejrs's world map - for finding world map coordinates
- cs2 scripts - decompiled client scripts
- Runescape Wiki tools - e.g. MOID item/npc/object database
-
OSRS Wiki - after logging in, enable
Preferences
>Gadgets
>Display advanced data in infoboxes, such as item IDs.
to display item/npc/object ids
Most plugins are comprised of only a few components:
- The Plugin class, which extends Plugin and is annotated with
@PluginDescriptor
(e.g. example plugin Plugin class) - The plugin configuration (extending
Config
), which generates the plugin's configuration panel (e.g. example plugin Config interface). These settings are saved between client launches. You can also save data programatically by usingConfigManager
. - Overlays. Overlays all extend class Overlay, and have a
render()
method which you must override. Overlays must be registered with the overlay manager on plugin startUp, and unregistered on shutDown.Overlay
s can draw anything they want anywhere on the game e.g. AbyssOverlay, which draws clickboxes on game objects. Text boxes are made viaOverlayPanel
(e.g. AttackStylesOverlay).WidgetItemOverlay
draws on items. - Event subscribers. These are methods annotated with
@Subscribe
and must be located in the plugin class. Events power most plugins in RuneLite, and it is how plugins react to things happening in the game, such as objects or npcs spawning, players sending messages, etc. Here is an example of an event subscriber, checking to see if the spawned object is an abyssal rift. There are many events, and some plugins have their own events. Most events you can subscribe to can be found in the api documentation and also client documentation. - Plugin panels. These are Swing panels on the client sidebar, such as the loot tracker and farming tracker. Here is an example of a plugin panel.
Please join our Discord if you notice anything wrong or would like to discuss an addition to the wiki. Changes can be submitted to our wiki repository.
User Guide
- FAQ
- GPU FAQ
- RuneLite Launcher Configuration
- Verifying Launcher Authenticity
- Troubleshooting problems with the client
- Disable Hardware Acceleration
- Change DPI Scaling (Ubuntu 20 w/ Gnome)
- Information about the Plugin Hub
- General Features
-
Plugin Configuration
- Agility
- Ammo
- Animation Smoothing
- Anti Drag
- Attack Styles
- Bank
- Bank Tags
- Barbarian Assault
- Barrows Brothers
- Blast Furnace
- Blast Mine
- Boosts Information
- Boss Timers
- Camera
- Cannon
- Chambers of Xeric
- Chat Channels
- Chat Color
- Chat Commands
- Chat Filter
- Chat History
- Chat Notifications
- Chat Timestamps
- Clue Scroll
- Combat Level
- Cooking
- Corporeal Beast
- Custom Cursor
- Daily Task Indicator
- Default World
- Diary Requirements
- Discord
- DPS Counter
- Emojis
- Entity Hider
- Examine
- FPS Control
- Fairy Rings
- Fishing
- Friend List
- Friend Notes
- GPU
- Grand Exchange
- Ground Items
- Ground Markers
- Herbiboar
- HiScore
- Hunter
- Idle Notifier
- Implings
- Info Panel
- Instance Map
- Interface Styles
- Inventory Grid
- Inventory Tags
- Inventory Viewer
- Item Charges
- Item Identification
- Item Prices
- Item Stats
- Key Remapping
- Kingdom of Miscellania
- Kourend Library
- Login Screen
- Loot Tracker
- Low Detail
- Mage Training Arena
- Menu Entry Swapper
- Metronome
- Minimap
- Mining
- Motherlode Mine
- Mouse Tooltips
- Music
- NPC Aggression Timer
- NPC Indicators
- Nightmare Zone
- Notes
- Object Markers
- Opponent Information
- Party
- Pest Control
- Player Indicators
- Player-owned House
- Poison
- Prayer
- Puzzle Solver
- Pyramid Plunder
- Quest List
- Random Events
- Regeneration Meter
- Report Button
- Run Energy
- Rune Pouch
- RuneLite
- Runecraft
- Screen Markers
- Screenshot
- Skill Calculator
- Skybox
- Slayer
- Smelting
- Special Attack Counter
- Spellbook
- Status Bars
- Stretched Mode
- Team
- Tears Of Guthix
- Tile Indicators
- Time Tracking
- Timers & Buffs
- Tithe Farm
- Twitch
- Virtual Levels
- Wiki
- Wintertodt
- Woodcutting
- World Hopper
- World Map
- XP Drop
- XP Globes
- XP Tracker
- XP Updater
- Zalcano
Developer's Guide
- Plugin Development
- RuneLite Core Development
- Using Git with RuneLite
- Using Jagex Accounts
- Working with client scripts
- Using the client developer tools
- VarPlayers, VarBits, and VarClients
- Rejected or Rolled Back Features