Custom profession and skill icons
RPUI loads custom PNG artwork into Rust's server image cache. Profession selection cards, profession Help details, the skill activation HUD, and Skills Help details resolve artwork by a stable asset ID. Files must be deployed to the server and assigned to the intended profession or skill. This uses the existing RPUI plugin and Rust CUI on both Oxide and Carbon; no ImageLibrary or Carbon-specific module is required.
Deploy artwork
Export each icon as a valid 512×512 PNG, at most 2 MiB. Transparent backgrounds are supported. Keep PNG files out of the plugins directory.
Copy your chosen PNG artwork into
RPUI/iconsunder the framework's data directory (Interface.Oxide.DataDirectory). A normal Oxide installation usesoxide/data/RPUI/icons; Carbon commonly usescarbon/data/RPUI/icons. Use the actual data directory of your installation. For example, deployprofessions/miner.pngandskills/counterfeiting.pngwithin that icons directory. Preserve filename case.Add or update CustomIcons in the existing RPUI configuration. Merge this property into the configuration; do not replace the other RPUI settings:
"CustomIcons": { "professions/miner": "professions/miner.png", "skills/counterfeiting": "skills/counterfeiting.png" }IDs are case-sensitive, at most 96 characters, and consist of lowercase letters, digits, underscores or hyphens in slash-separated segments. Each segment starts with a letter or digit. Paths use the same format followed by
.png; do not use absolute paths, URLs, spaces, traversal segments, or symlinks. Up to 256 IDs are loaded. These example names describe the deployment convention, not a guarantee that those example files are installed.Start the server or run
rpui.icons.reloadfrom the server console/RCON. An in-game administrator or player withrpui.admincan also run this console command. The command rereads only CustomIcons from disk. Check the server log forCustom icons readyand any rejected or unavailable asset messages.
Keep both the source PNGs and RPUI configuration in server deployment backups. After a
wipe or file-storage reset, RPUI rebuilds registrations from these files when the server
starts. If file storage is reset during a running server, run rpui.icons.reload afterwards.
Assign artwork
Professions: In Admin → Professions → Role, enter the asset ID in Custom PNG asset ID,
then use Save Config. Leave Icon item shortname configured as the fallback, such as
metal.ore. Configuration equivalents are IconAssetId and IconItemShortName on each
profession. Clear IconAssetId to use the item icon directly.
Skills: In Admin → Skills, select a skill and enter its ID in PNG asset ID in the
horizontal field strip (scroll right if needed). Keep Fallback symbol configured, such
as N or ★, and save/publish the catalog using the existing workflow. The equivalents
are IconAssetId for artwork and the existing Icon for the text fallback. Skills catalog
edits follow its existing MySQL-backed publishing flow; do not edit persisted catalogs by
changing the seed configuration. Old catalogs without IconAssetId continue using symbols.
The HUD represents actions. If several owned skills supply the same action, it chooses the first nonempty artwork ID in skill-ID order; the symbol is selected in the same deterministic order. Blank IDs use the symbol. An unavailable chosen ID also uses the symbol. Help shows the selected skill's own artwork. Icons do not grant skills or alter activation, eligibility, duration, cooldown or click behavior.
Reloads and troubleshooting
RPUI imports one image per server tick and publishes the complete new cache together. Existing artwork remains usable while a reload runs; after completion, deleted, invalid, or missing entries use the fallback. Open Help, profession selection screens/overlays and skill HUDs refresh after import. A newer reload or plugin unload cancels the earlier import.
Rendering only looks up cached PNG IDs: it performs no disk reads, downloads or image decodes. PNGs are size-checked before decoding, decoded once, and encoded to canonical PNG bytes before storage. Rust's FileStorage CRC identifies the content; unchanged content reuses that ID and changed content receives a new ID for client caching. RPUI rebuilds its in-memory mapping on startup rather than persisting wipe-sensitive CRCs.
RPUI does not delete FileStorage entries when an asset is removed or the plugin unloads: the same content ID can be shared by another provider or an already displayed interface. Old image bytes follow the server's normal file-storage lifecycle. Use reloads for artwork changes, rather than repeatedly changing artwork in a render loop.
If you see a fallback, check that the ID matches exactly, the manifest points to a deployed file, the image dimensions and file size meet the limits, and the startup/reload log reports successful registration. Enter the configured asset ID, rather than a file path or image URL.
Check your setup
Verify a profession card, profession Help, skill HUD and skill Help with an ordinary player. Check a missing-file fallback, replacement PNG under the same ID, reload with a screen open, and server restart. Confirm that activation and cooldown still work while artwork is displayed.