[V3.0] Key Config XML Changes — A MOD Migration Guide from v2.6

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 XUi has been renamed to XUi_InGame. Your MOD’s patches must also move from Config/XUi/... to Config/XUi_InGame/.... If you leave the old paths, there is no merge target and your UI modifications are disabled entirely.
  • controls.xml has been renamed to templates.xml (root element <controls><templates>). Any xpath pointing to /controls/... must become /templates/....
  • The <ruleset> layer has been removed. Elements like window_group have moved directly under <xui>. Rewrite /xui/ruleset/... to /xui/....
  • Mass replacement of panel with rect. In windows.xml alone, roughly 260 lines of <panel> became <rect> — effectively abolishing panel entirely. Any xpath whose path includes panel will fail to match. The disableautobackground attribute has also disappeared in many places.
  • Consolidated naming for anchor values (unifying the vertical/horizontal order and dropping the word “Center”):
    • LeftBottomBottomLeft / RightBottomBottomRight / LeftTopTopLeft / RightTopTopRight
    • CenterTopTop / CenterBottomBottom / RightCenterRight / CenterCenterCenter
  • filledspritesprite type="filled" fillspritepad="true". Filled bars (status bars, etc.) are consolidated into the regular sprite.
  • 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 / scrollview have been added. The force_hide attribute has been abolished, and display control is unified into the regular visible. Where possible, rect is preferred over panel.

Note: with the panel → rect conversion, a same-named rect appended 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 contains LootList), locking = TEFeatureLockable, doors = TEFeatureDoor, signs = TEFeatureSignable, land protection = TEFeatureLandClaim, and newly added TEFeaturePickup / TEFeatureCombine (combine stations, etc.).
  • Dot-separated properties like DamageBonus.head have been restructured into nested <property class="..."> child elements. There are also renames such as Map.ColorMapColor.

MODs that touch container, land-protection, crop, or equipment-bonus blocks are broadly affected.

🟠 entityclasses.xml / progression.xml: loot and headshot damage

  • LootListAlive / LootListOnDeath have been consolidated into LootList. 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 is quality, 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 of Tags, and a new property PreviousTechItem has appeared (used to chain lower → higher tiers at combine stations). MODs that set/replace Tags should be careful not to clobber the new tags.
  • ToolCategory has 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_abundance has been removed from all containers and abundance_type added. 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,5 to 1,6, qualityItems was newly added, and some traders got is_vending. Selectors that assume the 1,5 string need review.

🟡 Localization: .txt → .csv plus a KeepLoaded column

  • The vanilla source of truth has been renamed from Localization.txt to Localization.csv.
  • A KeepLoaded column has been added to the header between NoTranslate and english, so all language columns from english onward 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 minimal Key,English,Japanese header) 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 .txt extension is still read by V3.0’s MOD loader (if not, converting to .csv will 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 from serverconfig.xml and are consolidated into <property name="SandboxCode" value="..."/>. Tools that replaced these one line at a time via regex will break.
  • The new sandbox_overrides.xml is a file that declares preset definitions <preset code="..."> and option locks <sandbox_override option="..."/> (it is not for directly overriding arbitrary values). The code is 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 ServerDescription remains 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)

  1. Bulk rewrite of XUi (top priority): patch paths XUiXUi_InGame, controls.xmltemplates.xml, /xui/ruleset/xui, panelrect, new anchor names, filledspritesprite, globalopacityglobalopacitymod, remove |once.
  2. Follow entitygroups‘ shift to proper XML elements.
  3. Redesign xpath to match blocks‘ CompositeTileEntity + TEFeature consolidation.
  4. Handle the LootList consolidation and the HeadshotDamageModifier rename.
  5. Verify magnitude × quality numeric interference (for MODs that touch equipment values).
  6. For Localization, verify on a live server whether .txt loads (convert to .csv if needed).
  7. Server settings: rebuild direct StormFreq/LootAbundance writes into the SandboxCode approach or setgamepref.
  8. 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

コメントする

お名前(ニックネーム)だけで投稿できます。ログイン・メール登録は不要です。お気軽にどうぞ。

※ AIの回答は管理者の確認後に表示されます。内容は不正確な場合があります。