KATA 6 OF 8 · UI LAYER
The good news: 7 Days to Die's entire interface - every window, the HUD, the toolbelt - is defined in XML, so you edit it with the exact XPath commands from Kata 2. The catch: it is its own dialect with its own file set, and V3.0 reworked it more than any other modding surface. This kata is the concept plus the V3.0 map, so your UI mods survive the jump.
A small, real HUD/window tweak driven by XPath into the XUi files - and a clear picture of the V3.0 changes that decide whether a UI mod ports in an afternoon or a week.
The UI definitions live in the game's Data/Config/XUi/ and XUi_Common/ folders - windows.xml (the windows and their contents), the controls/templates file (reusable widget definitions), and styles.xml. A UI modlet puts same-named files in its own Config/XUi/ and uses XPath to patch them, exactly like items.xml.
The honest method, because XUi node names are deep and version-specific: open the game's XUi files, find the window or control you want by name, and write the XPath against what is actually there. Do not trust a path copied from an old guide - the UI tree changes between versions. The shape of an edit is ordinary:
<!-- in Config/XUi/windows.xml - illustrative: confirm the exact names in the game's files -->
<set xpath="/windows/window[@name='<the window you found>']//<the control>/@<attribute>">newValue</set>
That is why the classic UI mods (bigger backpack, custom HUDs, quest trackers) are "just" XPath - they resize windows, retheme colours, add panels, and toggle visibility. They are also why UI mods break on big updates: the names they target move.
V3.0 "Dead Hot Summer" shipped a new XUi system. From the official release notes, the changes that matter for a UI mod:
controls.xml is renamed templates.xml, and the folder is renamed XUi_InGame. Mods targeting the old names stop matching.force_hide is removed in favour of visible - the standard way to hide/show an element changed.So a V2.6 UI mod is not a recompile-and-go on V3.0 - it is real porting work against renamed files and a new binding model. This is the single biggest reason UI-heavy mods lag a version jump, and it is documented in our V3.0 mod compatibility guide. Build against the file names that match your target build.
For UIs that vanilla XUi cannot express - new widget types, data-bound lists - the community framework Quartz adds XUi widgets and controllers. You ship it as a dependency (it loads as its own mod), then your UI references its widgets. It is the bridge between pure-XML UI and full code mods (Kata 7).
The UI is rendered on each player's machine, so UI mods are client mods - like assets, every player installs them, and EAC stays on (no code, no EAC-off). A server cannot push a HUD change to clients.
controls.xml → templates.xml, folder → XUi_InGame, force_hide → visible. Targeting the old names silently fails on 3.0.Next: Kata 7 - Code Mods with Harmony. XML and XUi can do an enormous amount, but some behaviour lives only in compiled code. Time to write C#.