Custom Art, Gumps & Themes¶
The New Dawn client can swap out selected item art and gump (UI) graphics with your own images. Drop a .png or .bmp into the right folder, name it after the graphic it replaces, and restart the client.
You can also make your own color themes for the Built-in Assistant window. See Custom assistant themes below.
Don't want to make your own?
Custom Packs has ready-made sets of reagents, gems, bags, spell icons and more. Download one, extract it into your client folder, and the files land in the right place for you.
Where the files go¶
Inside your client folder (the one containing ClassicUO.exe):
Data/
└── Custom/
├── Art/ <- item graphics (things you see in the world and in your backpack)
├── Gumps/ <- UI graphics (container backgrounds, spell icons, panels)
└── Assistant/ <- built-in assistant themes (.json files)
The client creates these folders the first time it starts, so if they are missing, launch the client once and close it.
Only the top level of each folder is scanned. Images in subfolders are ignored.
Naming your files¶
The file name must be the graphic ID of the image you are replacing. You can write the ID in hex or decimal:
| Format | Example | Replaces |
|---|---|---|
| Hex | 0x0E75.png |
Backpack (item) |
| Decimal | 3701.png |
Backpack (item) |
- Hex IDs must start with
0x(upper or lower case).0E75.pngwithout the prefix is read as decimal and will not work. - Leading zeros are optional:
0xE75.pngand0x0E75.pngare the same. - Supported formats:
.pngand.bmp. Anything else is ignored. - If two files point at the same ID (for example
0xE75.pngand3701.png), only one of them is used.
For Art, use the item ID as shown in tools like UOFiddler or the [props gump, not the raw art.mul index. The client adds the 0x4000 offset itself.
Making the image¶
- Transparency: use a 32-bit PNG with an alpha channel. Soft edges and partial transparency are supported.
- Size: keep the image the same size as the original graphic. Items are positioned relative to the size of their image, so a larger or smaller image will sit differently in the world and in containers. Gumps are drawn from their top-left corner, so a larger gump will spill past the area the original filled.
- Hued items: if the server colors an item (dyed, magic, etc.), the client recolors your image the same way it does the original: it reads the brightness of each pixel and ignores its color. Items that are only partially hued (such as clothing trim) recolor only the pure gray pixels. For art that is often hued, draw it in grayscale so the hue comes out correctly.
What can be replaced¶
Only graphics on the shard's allow list can be replaced. Files for any other ID are skipped. This stops a stray file from changing something important to gameplay.
Art (Data/Custom/Art)
| Category | IDs |
|---|---|
| Empty bottle | 0x0F0E |
| Reagents | 0x0F7A, 0x0F7B, 0x0F84, 0x0F85, 0x0F86, 0x0F88, 0x0F8C, 0x0F8D |
| Gems | 0x0F0F – 0x0F30 |
| Jewelry | 0x1085 – 0x108A |
| Containers | 0x0E75 (backpack), 0x0E79 (pouch) |
| Bandages | 0x0E21 |
| Arrows | 0x0F3F, 0x0F42 |
| Bolts | 0x1BFB, 0x1BFE |
| Daggers | 0x0F51, 0x0F52 |
| Scissors | 0x0F9E, 0x0F9F |
| Tongs | 0x0FBB, 0x0FBC |
| Smith's hammer | 0x13E3, 0x13E4 |
| Boat sails | 0x3E3F–0x3E42, 0x3E57–0x3E5C, 0x3E6A–0x3E6E, 0x3E70–0x3E74, 0x3EC8–0x3ED2, 0x3EDC–0x3EE7 |
Gumps (Data/Custom/Gumps)
| Category | IDs |
|---|---|
| Paperdoll backdrop | 0x082D |
| Container gumps | 0x0009 (coffin), 0x003C (backpack), 0x003D (bag), 0x003E (barrel), 0x003F (basket), 0x0040, 0x0049 (wooden chest), 0x0042 (brass-trimmed chest), 0x0043 (wooden box), 0x0044, 0x004C (crate), 0x004A (metal chest), 0x004B (gilded chest), 0x00A8 |
| Framed panel | 0x0866 |
| Spell icons | 0x08C0 – 0x08FF |
| Login & character select | 0xF100 – 0xF12A |
The shard maintains this list. If you want a graphic added, ask staff.
Applying your changes¶
Custom art and gump images are loaded once, when the client starts. After adding, changing, or removing a file, fully close and restart the client.
To go back to the original graphic, delete your file (or move it out of the folder) and restart.
To remove a pack, delete the files listed under Files and checksum on its card, then restart.
Troubleshooting¶
If an image does not show up, check the client log. Every skipped file is logged along with the reason:
| Log message | Cause | Fix |
|---|---|---|
is not a decimal or 0x-hex graphic id, skipping |
The file name isn't a valid ID | Rename to e.g. 0x0E75.png or 3701.png |
is not in the allow list, skipping |
That ID can't be replaced | Check the tables above |
declared more than once |
Two files map to the same ID | Remove one of them |
zero-sized image / other custom image errors |
The file is empty, corrupt, or not really a PNG/BMP | Re-export the image |
outside the range of this client's art/gump files |
The ID doesn't exist in your client's data files | Double-check the ID |
Note
A bad file never crashes the client or stops other custom images from loading. It is skipped.
Custom assistant themes¶
The Built-in Assistant comes with a set of themes: Classic, Dark, Midnight, Slate, Forge, Grove and Parchment. You can add your own with a small text file. No tools are needed, just a text editor.
Where the file goes¶
Put the file in Data/Custom/Assistant inside your client folder, and name it theme.<Name>.json:
- The file name must start with
theme.and end with.json. Anything else in the folder is ignored. - The part in the middle is the theme's name. It is shown in the list, unless the file gives a
nameof its own. - The assistant remembers your choice by the file name. If you rename the file, pick the theme again.
- Only the top level of the folder is read. Files in subfolders are ignored.
Picking your theme¶
Open the assistant and go to General, then Window, then Theme. Your themes are listed below a line, after the built-in ones. If the file names an author, it is shown next to the theme, for example Amethyst (by Quick).
The folder is read again every time the assistant window opens. You don't need to restart the client while you work on a theme:
- Save your changes to the file.
- Pick the theme again from the Theme list. The window reopens with your changes.
If the file is deleted, or no longer loads, the assistant goes back to the Classic theme.
The example: Amethyst¶
Amethyst is plum-black with dusky violet borders and pale lilac highlights. Copy it into Data/Custom/Assistant/theme.Amethyst.json to try it, or use it as a starting point for your own. It lists every setting a theme has:
{
"name": "Amethyst",
"author": "Quick",
"base": "Dark",
// text
"text": "0x0481",
"dim": "#A096B4",
"accent": "#C8A0F0",
"danger": "#DC5064",
"group": "#C8A0F0",
"textOutline": true,
// window
"windowFill": "#1A1224ED",
"headerFill": "#0F0A16AA",
"panelBorder": "#4A3866",
"divider": "#4A3866C8",
"groupBorder": "#4A3866",
// lists and text boxes
"listFill": "#0A061282",
"listBorder": "#4A3866",
"selectedFill": "#6A3CA096",
"hoverFill": "#FFFFFF12",
"textBoxFill": "#120C1AF0",
"textBoxBorder": "#66508A",
// buttons and tabs
"buttonFace": "transparent",
"buttonHoverFace": "transparent",
"buttonBorder": "#66508A",
"buttonHoverBorder": "#B48CE6",
"tabFace": "transparent",
"tabHoverFace": "transparent",
"selectedTabFace": "#6A3CA06E",
"tabBorder": "#66508A",
"tabHoverBorder": "#B48CE6",
"tileFace": "#0A061282",
"tileBorder": "#4A3866",
"tileHoverBorder": "#B48CE6",
// dropdowns
"comboFace": "#0A061282",
"comboHoverFace": "#0A061282",
"comboOpenFace": "#0A061282",
"comboBorder": "#4A3866",
"comboHoverBorder": "#B48CE6",
"comboOpenBorder": "#B48CE6",
"comboHoverOverlay": "#FFFFFF12",
"comboArrow": "#DCD2EB",
"dropdownFill": "#1A1224FA",
// scrollbars
"scrollTrack": "#0000003C",
"scrollThumb": "#66508A",
"scrollThumbHover": "#8268AA",
"scrollThumbPressed": "#A088C8",
"scrollArrow": "#DCD2EB",
"scrollArrowHover": "#FFFFFF1E",
// checkboxes, radio buttons and focus
"checkFill": "#120C1A",
"checkBorder": "#7A62A0",
"checkBorderHover": "#CDAAF5",
"checkMark": "#C8A0F0",
"squareMarks": false,
"focusBorder": "#CDAAF5"
}
You don't have to list every setting. Anything you leave out comes from the base theme, so a theme can be as short as this:
Comments (// like this) and a comma after the last setting are allowed. Setting names can be written as windowFill, WindowFill or window_fill.
Name, author and base¶
| Setting | What it does |
|---|---|
name |
The name shown in the Theme list. If you leave it out, the name from the file name is used. |
author |
Your name, shown in the list next to the theme's name. |
base |
The built-in theme to start from: Classic, Dark, Midnight, Slate, Forge, Grove or Parchment. Classic if you leave it out. |
Start from the built-in theme closest to what you want. A light theme is easier to make from Classic or Parchment, and a dark one from Dark.
Writing colors¶
Colors are written as hex codes, like the ones any color picker or image editor shows:
| Format | Example | Meaning |
|---|---|---|
"#RRGGBB" |
"#4A3866" |
A solid color |
"#RRGGBBAA" |
"#1A1224ED" |
A color with transparency: 00 is invisible, FF solid |
[r, g, b] or [r, g, b, a] |
[74, 56, 102] |
The same thing as numbers from 0 to 255 |
"transparent" |
"transparent" |
Nothing drawn at all |
Fills can be see-through, so the game shows through the window. The Opacity slider under the Theme fades the whole window on top of that.
Writing text colors¶
The game draws text in UO hues, not in any color, so the five text settings (text, dim, accent, danger, group) take a hue instead:
| Format | Example | Meaning |
|---|---|---|
| A hue number | 1153 |
Exactly this hue, as shown by the assistant's >hue command |
| A hex hue | "0x0481" |
The same, in hex |
| A color | "#C8A0F0" |
The hue that looks closest to this color |
Hue 0x0481 (1153) is the near-white most dark themes use for text. Text colors can't be see-through.
Every setting¶
Text
| Setting | What it colors |
|---|---|
text |
Normal text |
dim |
Help text, empty lists and other quieter text |
accent |
Highlights: search results and links |
danger |
Delete and Clear buttons, and Recording on the minimized bar |
group |
The title of each group box |
textOutline |
true draws a black outline around text. Light text needs it to read over the game; dark text on a light theme doesn't. |
Window
| Setting | What it colors |
|---|---|
windowFill |
Behind everything in the window |
headerFill |
Header bands: the minimized bar, dialog title bars, table headings |
panelBorder |
Window and panel frames, and slider handles |
divider |
Lines under the tabs and between sections |
groupBorder |
The frame around each group box |
Lists and text boxes
| Setting | What it colors |
|---|---|
listFill |
Behind lists, trees and the script editor |
listBorder |
The frame around them |
selectedFill |
The selected row in a list |
hoverFill |
The row under the mouse |
textBoxFill |
Behind text and number boxes |
textBoxBorder |
The frame around them |
Buttons and tabs
| Setting | What it colors |
|---|---|
buttonFace |
A button |
buttonHoverFace |
A button under the mouse |
buttonBorder |
A button's frame |
buttonHoverBorder |
A button's frame under the mouse |
tabFace |
A tab |
tabHoverFace |
A tab under the mouse |
selectedTabFace |
The open tab |
tabBorder |
A tab's frame |
tabHoverBorder |
A tab's frame under the mouse |
tileFace |
Big picture buttons, like the facings on the Doors page |
tileBorder |
Their frame |
tileHoverBorder |
Their frame under the mouse (hoverFill is drawn over them too) |
Dropdowns
| Setting | What it colors |
|---|---|
comboFace |
A dropdown box |
comboHoverFace |
A dropdown box under the mouse |
comboOpenFace |
A dropdown box while its list is open |
comboBorder |
A dropdown box's frame |
comboHoverBorder |
Its frame under the mouse |
comboOpenBorder |
Its frame while open |
comboHoverOverlay |
Drawn over the box while it's under the mouse or open |
comboArrow |
The arrow on the right of the box |
dropdownFill |
Behind the open list of choices |
Scrollbars
| Setting | What it colors |
|---|---|
scrollTrack |
The track the scrollbar slides in |
scrollThumb |
The part you drag |
scrollThumbHover |
That part under the mouse |
scrollThumbPressed |
That part while it's being dragged |
scrollArrow |
The arrows at each end |
scrollArrowHover |
Behind an arrow under the mouse |
Checkboxes, radio buttons and focus
| Setting | What it colors |
|---|---|
checkFill |
Inside a checkbox or radio button |
checkBorder |
Its frame |
checkBorderHover |
Its frame under the mouse |
checkMark |
The tick or dot |
squareMarks |
true draws square radio buttons and a filled square for a tick, like Classic; false a tick and round radio buttons |
focusBorder |
Around a hotkey box that's waiting for you to press a key |
Sharing a theme¶
A theme is one file. To share yours, send the .json file. Others save it into their own Data/Custom/Assistant folder and pick it from the list.
When a theme doesn't look right¶
A mistake in a theme file never stops the client or the assistant. The client log says what was skipped:
| Log message | Cause | Fix |
|---|---|---|
is not named theme.<Name>.json, skipping |
The file name doesn't start with theme. |
Rename it, for example to theme.Amethyst.json |
is not valid json |
A missing quote, comma or bracket | Check the line the message points to |
is not a theme setting, ignored |
A misspelled setting name | Check it against the tables above |
is not a color / is not a hue |
A value written the wrong way | See Writing colors; that setting comes from the base theme until it's fixed |
is not a built-in theme |
base names a theme that doesn't exist |
Use one of the built-in theme names; Classic is used until then |
another file is already named |
Two files have the same name in different upper/lower case | Remove one of them |