Skip to content
Contractsv1.9.0

UI

Lets you re-theme the Contracts UI. Every named palette color can be replaced, and every icon the plugin ships can get its own image and color, from objective types down to the countdown clock. All of it is optional: a value of null means “use the built-in look”, and a fresh config ships with everything set to null. The section also holds behavior settings for the contracts menu under Menu.

{
"UI": {
"Colors": {
"Accent Primary": "#4dc1ff",
"Accent Muted": "#285278",
"Accent Background": "#001221",
"Accent Border": "#284b5a",
"Text": null,
"Danger": null
},
"Icons": {
"Objectives": {
"Kill": { "Icon": "https://example.com/skull.png", "Color": "#ff4d4d", "Raw": false }
},
"Conditions": {
"Weapon": { "Icon": null, "Color": "rgb(255, 200, 120)", "Raw": false }
},
"Rewards": {
"Command": { "Icon": "https://example.com/vip.png", "Color": null, "Raw": true }
},
"Chips": {
"Preset": { "Icon": "https://example.com/crate.png", "Color": null, "Raw": true },
"Npc": { "Icon": null, "Color": "#ff4d4d", "Raw": false }
},
"Ui": {
"Clock": { "Icon": null, "Color": "#4dc1ff", "Raw": false },
"ItemFallback": { "Icon": "https://example.com/crate.png", "Color": null, "Raw": true }
},
"Monuments": {
"launch_site_1": { "Icon": "https://example.com/rocket.png", "Color": null, "Raw": true }
}
},
"Menu": {
"Contracts Per Page": 10
}
}
}

The example above is trimmed for readability. The real file lists every color token and every type key, so you never have to guess a name: set the ones you want and leave the rest null.

Every entry accepts the same color formats used elsewhere in the UI: #rrggbb, #rrggbbaa, rgb(r, g, b), rgba(r, g, b, a), hsl(h, s%, l%) and hsla(h, s%, l%, a). A color that fails to parse prints a warning at load and falls back to white, the plugin never refuses to start over a color.

Overriding a color carries through everywhere it appears, including the translucent variants the UI derives from it (hover states, progress fills, dimmed text and so on).

The dark base coat of the UI: window backgrounds, panels and text.

Setting Default
Surface Backdrop rgba(0, 0, 0, 0.95)
Surface Base rgb(10, 10, 10)
Surface Raised rgb(18, 18, 18)
Surface Elevated rgb(28, 28, 28)
Surface Active rgba(40, 40, 40, 1)
Border rgba(255, 255, 255, 0.1)
Text rgb(220, 220, 220)
Text Contrast rgb(10, 10, 10)
Text Muted rgba(229, 229, 229, 0.2)
Text Disabled rgba(150, 150, 150, 0.35)
Transparent rgba(0, 0, 0, 0)

The gold highlight family: primary buttons, the selected category, progress accents. Swapping these four is the quickest way to make the UI match your server’s branding.

Setting Default
Accent Primary #ffc14d
Accent Muted #785f28
Accent Background #211200
Accent Border #5a4b28

Status colors for confirmations, warnings and errors.

Setting Default
Danger #cc272e
Success #4aa651
Info #238ea9
Warning #d09945

General-purpose colors used across icons, chips and highlights, in a bright, base and dark shade each.

Setting Default Setting Default Setting Default
Bright Red #ea7467 Red #db3830 Dark Red #540502
Bright Green #60d768 Green #22bc1f Dark Green #024501
Bright Blue #67c5ea Blue #3082db Dark Blue #011f41
Bright Yellow #eaea67 Yellow #c9c928 Dark Yellow #393901
Bright Orange #e5a854 Orange #d2961d Dark Orange #3c2302
Bright Purple #ab60d7 Purple #a825c6 Dark Purple #48044a

Text colors used on top of the matching semantic or accent background. By default each one follows another token (Danger Foreground and Info Foreground follow Text, the other three follow Text Contrast), and they keep following it: override Text and Danger Foreground moves with it, unless you override Danger Foreground itself.

Setting Default
Danger Foreground Text
Success Foreground Text Contrast
Info Foreground Text
Warning Foreground Text Contrast
Accent Foreground Text Contrast

Six categories of icons: Objectives, Conditions, Rewards, Chips, Ui and Monuments. In the first three, keys are the type names you already use in data files (Kill, CardSwipe, TimeOfDay, Economics, …). Chips is keyed by chip kind, Ui covers the other uncategorized icons and Monuments is keyed by monument short name, each has its own section below.

Each entry has the same three fields:

Field Type Default Description
Icon string null Direct URL to an image. null keeps the built-in icon.
Color string null Color, same formats as above. null keeps the built-in color.
Raw boolean false Render the image in its own true colors instead of the solid color.

A chip is the small pill in the requirement display: an icon plus a short label, one per value.

Key Where Built-in icon
Preset Any @preset reference that doesn’t have an icon Boxes
Npc Scientists, tunnel dwellers and other human NPCs Person
Animal Bears, wolves, boars and the rest of the wildlife Paw print
Mount Vehicles and anything else a player rides Car
World Map objects that are neither built nor deployed Box
Structure Building blocks, walls, doors Brick wall
Deployable Player-placed deployables Armchair
Monument Monument chips The monument’s own
Unknown An entity name that has no built-in display name Diamond

Other uncategorized icons, the ones that don’t belong to any objective, condition or reward type.

Key Where Built-in icon
Clock Category timers on contract and category cards and in the menu header Clock
Cooldown Objective cooldown rows and the HUD cooldown budget counter Clock
Burst The burst window indicator on the HUD and the objective row Lightning bolt
Lock The overlay on a locked objective’s icon Lock
Secret Hidden objectives in Progressive contracts Question mark
ItemFallback Item chips, item rewards and turn-in rows when an item name fails to resolve Box
Mixed The contract card icon when the contract mixes objective types Asterisk
⭐ Premium

Per-monument overrides for monument chips. Keys are the monument short names you already type in Monument conditions, like launch_site_1 or oilrig_1 (case-insensitive). The config ships with every curated monument listed, all set to null.

Keys that aren’t in the shipped list work too, so you can give an icon to a custom map monument or a monument newer than the plugin’s curated list. Those render with a prettified name and the landmark icon by default.

Behavior settings for the contracts menu.

Setting Type Default Description
Contracts Per Page int 10 How many contract cards a single list page can hold.

The contract list (a category’s contracts, and the Active Contracts view) is split into pages of this size. When everything fits on one page, the pager bar at the bottom of the list is hidden entirely, so small categories look the same as if there were no pagination at all.

Every card on a page is sent and rendered at once, so a large value on a large category brings back the problem pagination solves. Rendering hundreds of cards in one go can freeze the player’s game for a moment when the menu opens, and can make the list render incorrectly. I don’t recommend going above 20 for this setting.

That being said, you should ideally avoid having a category that may trigger pagination at all (i.e. a category that allows more than 10 active contracts at a time). Having too many contracts active in one category defeats the purpose of Contracts’ fundamental design to have time-rotating quests and may cause a poor player experience, not a better one. See why