V3.0 “Dead Hot Summer” is, beyond its new visual features, an update with major implications for MOD creators. The vanilla XML under Data/Config has been extensively reworked, and many of the xpath patches you wrote for v2.6 will now silently miss (fail to apply). Rather than crashing, they often “quietly stop working,” so we recommend testing early on the experimental build when migrating.
This article investigates the Data/Config diff between v2.6 and V3.0 immediately after applying it on a live server, and organizes the changes you need to watch for during MOD migration, file by file.
The big picture: v2.6’s 57 files → V3.0’s 60 files. 7 renamed, 3 new, 45 with content changes. Below is a selection of the most impactful ones.
🔴 Top priority: Major overhaul of the XUi framework
UI (XUi) MODs will almost certainly require rewriting. Since this directly affects clients joining, address it first.
- The folder
XUihas been renamed toXUi_InGame. Your MOD’s patches must also move fromConfig/XUi/...toConfig/XUi_InGame/.... If you leave the old paths, there is no merge target and your UI modifications are disabled entirely. controls.xmlhas been renamed totemplates.xml(root element<controls>→<templates>). Any xpath pointing to/controls/...must become/templates/....- The
<ruleset>layer has been removed. Elements likewindow_grouphave moved directly under<xui>. Rewrite/xui/ruleset/...to/xui/.... - Mass replacement of
panelwithrect. In windows.xml alone, roughly 260 lines of<panel>became<rect>— effectively abolishing panel entirely. Any xpath whose path includespanelwill fail to match. Thedisableautobackgroundattribute has also disappeared in many places. - Consolidated naming for
anchorvalues (unifying the vertical/horizontal order and dropping the word “Center”):LeftBottom→BottomLeft/RightBottom→BottomRight/LeftTop→TopLeft/RightTop→TopRightCenterTop→Top/CenterBottom→Bottom/RightCenter→Right/CenterCenter→Center
filledsprite→sprite type="filled" fillspritepad="true". Filled bars (status bars, etc.) are consolidated into the regularsprite.globalopacity="true/false"→globalopacitymod="0"(the meaning has changed too).- Removal of the
{value|once}suffix in bindings (e.g.,{staticonatlas|once}→{staticonatlas}; a new binding system). - New views
video/scrollbar/scrollviewhave been added. Theforce_hideattribute has been abolished, and display control is unified into the regularvisible. Where possible,rectis preferred overpanel.
Note: with the panel → rect conversion, a same-named
rectappended by another file/another MOD is more likely to collide with a vanilla rect. Duplicate same-named elements can cause problems when joining, so do a cross-check after migrating.
🔴 entitygroups.xml is now proper XML elements
The old text format zombieBiker, .3 has reverted to proper XML elements <e n="zombieBiker" p=".3" /> (the legacy format is still supported for backward compatibility for now). Any xpath that assumes the text-format structure will break, so rewrite it to handle the contents of <entitygroup> element by element.
🔴 blocks.xml: dedicated classes → CompositeTileEntity consolidation
The file with the largest structural change in V3.0. Many dedicated C# block classes have been consolidated into a composite-feature approach of Class="CompositeTileEntity" plus nested <property class="TEFeature*">.
- Abolished class values:
Loot/SecureLoot/QuestLoot/LandClaim/PlayerSign/DoorSecure/DrawBridge/CarExplode(and variants), etc. - Behavior is expressed via nested features: storage/loot =
TEFeatureStorage(which containsLootList), locking =TEFeatureLockable, doors =TEFeatureDoor, signs =TEFeatureSignable, land protection =TEFeatureLandClaim, and newly addedTEFeaturePickup/TEFeatureCombine(combine stations, etc.). - Dot-separated properties like
DamageBonus.headhave been restructured into nested<property class="...">child elements. There are also renames such asMap.Color→MapColor.
MODs that touch container, land-protection, crop, or equipment-bonus blocks are broadly affected.
🟠 entityclasses.xml / progression.xml: loot and headshot damage
LootListAlive/LootListOnDeathhave been consolidated intoLootList. MODs that specified separate loot for death/alive states need review.- Renamed headshot damage passive_effect:
DamageModifier(with head specified) →HeadshotDamageModifier. This affects both entityclasses and progression. - progression: the cap for the traps skill went from max 75 → 100.
🟠 items.xml / item_modifiers.xml: magnitudes and tech tiers
- Item magnitudes (orange stars) have been added to many weapons/tools as a new
<stats><stat>block. The format isquality, lootstage, random chance, min, max(e.g.,<stat name="EntityDamage" value="6,16,.3,.1,.5"/>). Because they scale with quality on top of MOD quality 1–6 — a double quality dependency, MODs that modify equipment values should watch for overlapping effects. - Tech tier tags
T0/T1… have been added at the start ofTags, and a new propertyPreviousTechItemhas appeared (used to chain lower → higher tiers at combine stations). MODs that set/replaceTagsshould be careful not to clobber the new tags. ToolCategoryhas moved from dot notation to nested classes:ToolCategory.Butcher→<property class="ToolCategory"><property name="Butcher" .../></property>. Any xpath targeting the old dot notation will miss.
🟠 loot.xml / recipes.xml / traders.xml
- loot:
ignore_loot_abundancehas been removed from all containers andabundance_typeadded. Quality template names (q6Template, etc.) have been consolidated and renamed. Xpath that depends on specific names should be checked. - recipes: forge smelting has been made sandbox-driven (
use_smelter/replace_smelter), and there are cases where same-named recipes are duplicated. Watch for split matching in xpath targeting same-named recipes and for side effects of tags overwrites. - traders: quality specification went from
1,5to1,6,qualityItemswas newly added, and some traders gotis_vending. Selectors that assume the1,5string need review.
🟡 Localization: .txt → .csv plus a KeepLoaded column
- The vanilla source of truth has been renamed from
Localization.txttoLocalization.csv. - A
KeepLoadedcolumn has been added to the header betweenNoTranslateandenglish, so all language columns fromenglishonward have shifted one column to the right. - The CSV delimiter/quoting spec (comma-separated, values containing
,wrapped in", color markup[DECEA3]...[-]) is unchanged from before. - A MOD’s own
Localization.txt(e.g., a minimalKey,English,Japaneseheader) is read column-name-driven, so it should not be directly affected by the added column. However, we recommend verifying on a live server whether the.txtextension is still read by V3.0’s MOD loader (if not, converting to.csvwill be necessary).
🟡 Server settings: consolidation into SandboxCode
With V3.0’s flagship system Sandbox Options, roughly 150 game rules (GameDifficulty / BloodMoon* / AirDrop* / LootAbundance / StormFreq / XPMultiplier, etc.) are consolidated into a single screen on the new-game menu, and the result is encoded into a single string called SandboxCode.
- Individual properties (
StormFreq/LootAbundance, etc.) have disappeared fromserverconfig.xmland are consolidated into<property name="SandboxCode" value="..."/>. Tools that replaced these one line at a time via regex will break. - The new
sandbox_overrides.xmlis a file that declares preset definitions<preset code="...">and option locks<sandbox_override option="..."/>(it is not for directly overriding arbitrary values). Thecodeis an opaque code obtained via “Copy Code” in the Sandbox Options window. - If you want to change values dynamically, either (a) tabulate SandboxCodes per stage and swap them, or (b) use
setgamepref-style console commands if they still work for the setting in question. Which one works needs to be verified on a live server first. - Note that
ServerDescriptionremains in V3.0 as an independent property.
🟢 New frameworks you can use
- SignTech (a complete overhaul of sign POIs): you can use custom sign text via
<sign>elements. - taskboards (a new task board mechanism).
- Files that only saw formatting or folder moves, with little real impact:
shapes/materials/painting/npc/utilityai/archetypes/biomes/rwgmixer/vehicles/gamestages, and many more.
Migration checklist (key points)
- Bulk rewrite of XUi (top priority): patch paths
XUi→XUi_InGame,controls.xml→templates.xml,/xui/ruleset→/xui,panel→rect, new anchor names,filledsprite→sprite,globalopacity→globalopacitymod, remove|once. - Follow entitygroups‘ shift to proper XML elements.
- Redesign xpath to match blocks‘ CompositeTileEntity + TEFeature consolidation.
- Handle the LootList consolidation and the HeadshotDamageModifier rename.
- Verify magnitude × quality numeric interference (for MODs that touch equipment values).
- For Localization, verify on a live server whether
.txtloads (convert to.csvif needed). - Server settings: rebuild direct
StormFreq/LootAbundancewrites into the SandboxCode approach orsetgamepref. - Check startup from the first error in the log (an interrupted blocks.xml load chains “config not found”-style false positives).
For more overview-oriented changes (WebDashboard core integration, XUi design philosophy, a list of file renames), also see [V3.0] Changes for MOD Creators.
* This article is based on an investigation immediately after applying the experimental build (equivalent to B252). Some behaviors may change in the official release, so always verify migration work on a live server.
Related: MOD creation article list