動作確認バージョン

7 Days to Die v2.6(2026年4月時点)

注意

7 Days to Die はアップデートにより Mod が動作しなくなる場合があります。制作・導入前に必ず対応バージョンを確認してください。

前回の記事「Modlet制作入門|XMLの基礎とModInfo.xmlの書き方」では、Modlet の基本構成と ModInfo.xml の書き方を解説しました。

今回は Modlet 制作の核心である xpath(エックスパス) を掘り下げます。
xpath さえ使えるようになれば、アイテムの攻撃力・耐久値から、ゾンビのHP・パークの解放条件まで、ゲーム内のほぼあらゆるパラメーターを自由に書き換えられます。

xpath とは

xpath
XML ファイルの中の特定の場所を指定するための「住所」のような記法です。
7 Days to Die の Modlet では、バニラ(改造なしの元のゲーム)の XML ファイルを直接書き換える代わりに、「バニラの items.xml の、この場所の値を、この内容に変えてください」という命令を xpath で記述します。
これにより、バニラのファイルはそのまま保たれます。

configs タグと xpath 命令の基本構造

Modlet の改造ファイルはすべて以下の形式で始まります。

TEXT
<?xml version="1.0" encoding="UTF-8"?>
<configs>

  <!-- xpath 命令をここに書く -->

</configs>

<configs> タグの中に、4種類の命令を組み合わせて書いていきます。

💡 Mod制作によく出る用語集(これだけは覚えよう)

Modlet制作を始める前に、XMLファイルによく出てくる言葉の意味を整理しておきましょう。

passive_effect(パッシブ・エフェクト

アイテムの「能力値」そのものです。
攻撃力・耐久値・リロード速度など、プレイヤーが何もしなくても(受動的に)適用される効果なので「パッシブ」と呼ばれます。

set(セット)

「上書きする」という命令です。すでに決まっている攻撃力「20」を「100」に書き換えるときに使います。

append(アペンド)

「末尾に付け足す」という命令です。
レシピに新しい材料を追加したり、ゲームに存在しない新しいアイテムを登録したりするときに使います。

value(バリュー)

設定されている「数字」や「中身」のことです。value="40" なら、40という数字がその項目の設定値になります。

operation(オペレーション)

「計算方法」の指定です。base_set は「基本値をこの数字にする」、base_add は「基本値にこの数字を足す」という意味になります。
基本値を変えたいときは base_set を探します。

4つの基本命令

① set — 値を変更する

最もよく使う命令です。既存の属性値や要素の内容を上書きします。

TEXT
<set xpath="対象の xpath">新しい値</set>

実例①:ベースボールバットの攻撃力を変更

TEXT
<configs>
  <set xpath="/items/item[@name='meleeWpnClubT1BaseballBat']/effect_group/passive_effect[@name='EntityDamage'][@operation='base_set']/@value">100</set>
</configs>

実例②:鉄鋼つるはし(Steel Pickaxe)の耐久値を変更

TEXT
<configs>
  <set xpath="/items/item[@name='meleeToolPickT2SteelPickaxe']/effect_group/passive_effect[@name='DegradationMax'][@operation='base_set']/@value">3000</set>
</configs>

② append — 要素を追加する

既存の要素の末尾に、新しい要素を追加します。
新しいアイテムやレシピを追加するときに使います。

TEXT
<append xpath="追加先の親要素の xpath">
  <追加する要素 />
</append>

実例③:ベースボールバットのレシピに材料を追加

TEXT
<configs>
  <append xpath="/recipes/recipe[@name='meleeWpnClubT1BaseballBat']">
    <ingredient name="resourceDuctTape" count="2"/>
  </append>
</configs>

実例④:items.xml に新しいアイテム定義を追加

TEXT
<configs>
  <append xpath="/items">
    <item name="myCustomClub">
      <property name="Extends" value="meleeWpnClubT1BaseballBat"/>
      <property name="EconomicValue" value="1000"/>
    </item>
  </append>
</configs>

③ remove — 要素または属性を削除する

指定した要素や属性を削除します。

TEXT
<remove xpath="削除したい要素または属性の xpath"/>

実例⑤:ベースボールバットのレシピから作業台の制限を削除

TEXT
<configs>
  <!-- craft_area 属性を削除することで作業台なしで作れるようになる -->
  <remove xpath="/recipes/recipe[@name='meleeWpnClubT1BaseballBat']/@craft_area"/>
</configs>

実例⑥:特定のアイテムを丸ごと削除

TEXT
<configs>
  <!-- 木製棍棒をゲームから削除する -->
  <remove xpath="/items/item[@name='meleeWpnClubT0WoodenClub']"/>
</configs>
注意

remove で要素を削除すると、そのアイテムを参照している他の要素(レシピや loot テーブルなど)でエラーが発生する場合があります。削除よりも set で値を変更する方が安全なケースが多いです。

④ insertAfter / insertBefore — 指定位置に挿入する

append が末尾追加なのに対し、特定の要素の直後または直前に挿入します

TEXT
<insertAfter xpath="基準になる要素の xpath">
  <挿入する要素 />
</insertAfter>

実例⑦:既存の passive_effect の直後に新しい効果を追加

TEXT
<configs>
  <!-- EntityDamage の直後に StaminaCost を追加する(ネスト構造を維持) -->
  <insertAfter xpath="/items/item[@name='meleeWpnClubT1BaseballBat']/effect_group/passive_effect[@name='EntityDamage'][@operation='base_set']">
    <passive_effect name="StaminaCost" operation="base_set" value="10"/>
  </insertAfter>
</configs>
情報

insertAfter は同じ effect_group の中にある passive_effect の直後に、別の passive_effect を挿入するときに使います。
入れ子(ネスト)の階層を変えず、兄弟要素として追加されます。

xpath の記法詳解

v2.x のアイテム xpath 構造

v2.x ではアイテムのパラメーターは effect_group の中の passive_effect に格納されています。

TEXT
/items/item[@name='meleeWpnClubT1BaseballBat']/effect_group/passive_effect[@name='EntityDamage'][@operation='base_set']/@value

バニラの items.xml を開いて確認すると、以下のような構造になっています。

TEXT
<!-- バニラ items.xml の実際の構造(v2.x) -->
<item name="meleeWpnClubT1BaseballBat">
  <effect_group name="meleeWpnClubT1BaseballBat">
    <passive_effect name="EntityDamage" operation="base_set" value="20" tags="perkPummelPete"/>
    <passive_effect name="BlockDamage"  operation="base_set" value="18" tags="perkPummelPete"/>
  </effect_group>
</item>

[@name='xxx'] は絞り込み条件

[@name='meleeWpnClubT1BaseballBat']name 属性が meleeWpnClubT1BaseballBat である要素」という絞り込みです。
複数ある同名タグの中から対象を特定します。

[@operation='base_set'] で絞り込む

同じ passive_effect[@name='EntityDamage'] が複数存在する場合は、[@operation='base_set'] を別の角括弧で追加して基本値だけを対象にします。

TEXT
<!-- 角括弧を分けて複数条件を指定する -->
<set xpath="/items/item[@name='meleeWpnClubT1BaseballBat']/effect_group/passive_effect[@name='EntityDamage'][@operation='base_set']/@value">100</set>

[@value='現在値'] で値を条件に絞り込む

同名の passive_effect が複数あり @operation でも区別できない場合は、現在の値そのものを条件に指定できます。車両・乗り物系でよく使われる書き方です。

TEXT
<!-- 現在値が '2000' の DegradationMax だけを対象にする -->
<set xpath="/items/item[@name='vehicleMinibikePlaceable']/effect_group/passive_effect[@name='DegradationMax'][@value='2000']/@value">6000</set>

/@value は属性を指す

最後の /@value は、要素そのものではなく value 属性 を対象にすることを意味します。

TEXT
<!-- 属性の値を変更 -->
<set xpath="/some/path/@attributeName">新しい値</set>

// 再帰xpathで深い階層を省略する

通常の / は1階層ずつたどりますが、// を使うとファイル内のどこにあっても検索できます。

TEXT
<!-- 通常の絶対パス -->
<append xpath="/progression/crafting_skills/crafting_skill[@name='craftingFood']/display_entry">

<!-- // を使った再帰パス(短く書ける) -->
<append xpath="//crafting_skill[@name='craftingFood']/display_entry">
注意

// は同名の要素が複数ある場合に意図しない場所にも適用されることがあります。

よく使うパラメーターと xpath 一覧

ポイント

このセクションの使い方ItemID の部分を変更したいアイテムのIDに置き換えてコピペするだけで使えます。
バニラの Data/Config/items.xml で構造を確認してから使うと確実です。

近接武器系

passive_effect(パッシブ・エフェクト) はアイテムの「能力値」を定義するタグです。
攻撃力・耐久値・攻撃速度など、装備しているだけで発揮される効果がここに入っています。[@operation='base_set'] は「元の数値をそのまま置き換える」という意味で、基本値を変えたいときは必ずこれを指定します。

TEXT
<!-- 攻撃力(エンティティへのダメージ)
     passive_effect = アイテムの能力値タグ
     EntityDamage   = 攻撃力の項目名
     base_set       = 「元の値をこの数字に置き換える」という計算方法 -->
<set xpath="/items/item[@name='ItemID']/effect_group/passive_effect[@name='EntityDamage'][@operation='base_set']/@value">値</set>

<!-- ブロック破壊ダメージ -->
<set xpath="/items/item[@name='ItemID']/effect_group/passive_effect[@name='BlockDamage'][@operation='base_set']/@value">値</set>

<!-- 最大耐久値(DegradationMax)
     数字が大きいほど壊れにくくなる -->
<set xpath="/items/item[@name='ItemID']/effect_group/passive_effect[@name='DegradationMax'][@operation='base_set']/@value">値</set>

<!-- 攻撃速度(1分間の攻撃回数) -->
<set xpath="/items/item[@name='ItemID']/effect_group/passive_effect[@name='AttacksPerMinute'][@operation='base_set']/@value">値</set>

銃器系

銃器も近接武器と同じく passive_effect でパラメーターが管理されています。[@operation='base_set'] で「基本値をこの数字に設定する」という意味になります。

TEXT
<!-- 弾倉サイズ(一度に装填できる弾数) -->
<set xpath="/items/item[@name='ItemID']/effect_group/passive_effect[@name='MagazineSize'][@operation='base_set']/@value">値</set>

<!-- 連射速度(1分間の発射回数:rpm)
     数字が大きいほど連射が速くなる -->
<set xpath="/items/item[@name='ItemID']/effect_group/passive_effect[@name='RoundsPerMinute'][@operation='base_set']/@value">値</set>

<!-- リロード時間(秒)
     数字が小さいほど素早くリロードできる -->
<set xpath="/items/item[@name='ItemID']/effect_group/passive_effect[@name='ReloadTime'][@operation='base_set']/@value">値</set>

乗り物(車両)系

車両の耐久値は DegradationMax という passive_effect で管理されています。
車両系では [@operation='base_set'] の代わりに [@value='現在の数値'] を使います。

ポイント

なぜ [@value='1500'] と書くのか? 「現在の値が 1500 であること」を条件に加えることで、同名の passive_effect が複数あっても確実に狙った1箇所だけを書き換えられます。[@operation='base_set'] だけでは絞り込めないケースへの「安全装置」のような書き方です。

TEXT
<!-- 自転車の耐久値(バニラ: 1500)を3倍に
     [@value='1500'] = 現在値が1500の箇所だけを対象にする安全装置 -->
<set xpath="/items/item[@name='vehicleBicyclePlaceable']/effect_group/passive_effect[@name='DegradationMax'][@value='1500']/@value">4500</set>

<!-- ミニバイクの耐久値(バニラ: 2000)を3倍に -->
<set xpath="/items/item[@name='vehicleMinibikePlaceable']/effect_group/passive_effect[@name='DegradationMax'][@value='2000']/@value">6000</set>

<!-- バイクの耐久値(バニラ: 4000)を3倍に -->
<set xpath="/items/item[@name='vehicleMotorcyclePlaceable']/effect_group/passive_effect[@name='DegradationMax'][@value='4000']/@value">12000</set>

<!-- 4x4トラックの耐久値(バニラ: 8000)を3倍に -->
<set xpath="/items/item[@name='vehicleTruck4x4Placeable']/effect_group/passive_effect[@name='DegradationMax'][@value='8000']/@value">24000</set>

<!-- ジャイロコプターの耐久値(バニラ: 3500)を3倍に -->
<set xpath="/items/item[@name='vehicleGyrocopterPlaceable']/effect_group/passive_effect[@name='DegradationMax'][@value='3500']/@value">10500</set>

ブロック系

ブロックのHP変更は変更対象によってファイルが異なります
ドア・罠など個別のブロックは blocks.xml、木材・コンクリートなど建築ブロック全体は materials.xml を使います。

ドア・罠・コンテナなど(blocks.xml)

property[@name='MaxDamage'] が直接書かれているブロックはこちらで変更できます。

TEXT
<!-- 木製スパイクトラップのHP -->
<set xpath="/blocks/block[@name='trapSpikesWoodMaster']/property[@name='MaxDamage']/@value">300</set>

建築ブロック全体(materials.xml)

木材・コンクリート・スチールなどの建築ブロックは素材タイプ(Material)でHPが一括管理されています。ここを変えるとその素材を使う全ブロックに効果が及びます。

TEXT
<!-- 木材ブロック全体のHP(バニラ: 225)
     Mwood_regular = 木材ブロックの素材タイプID -->
<set xpath="/materials/material[@id='Mwood_regular']/property[@name='MaxDamage']/@value">500</set>

<!-- コンクリートブロック全体のHP(バニラ: 2500) -->
<set xpath="/materials/material[@id='Mconcrete']/property[@name='MaxDamage']/@value">5000</set>

<!-- スチールブロック全体のHP(バニラ: 7000) -->
<set xpath="/materials/material[@id='Msteel']/property[@name='MaxDamage']/@value">10500</set>

主要建築素材のバニラHP一覧

Material ID使用ブロックバニラHP
Mwood_weak木製フレーム系100
Mwood_regular木材ブロック225
Mcobblestone石畳1,500
Mconcreteコンクリート2,500
Msteelスチール7,000

エンティティ(ゾンビ・動物)系

TEXT
<!-- スリム系ゾンビのHP一括変更(バニラ: 125) -->
<set xpath="/entity_classes/globals/property[@name='healthSlim']/@value">200</set>

<!-- 標準ゾンビのHP一括変更(バニラ: 200) -->
<set xpath="/entity_classes/globals/property[@name='healthNormal']/@value">300</set>

<!-- 個別ゾンビのHPだけを変更 -->
<set xpath="/entity_classes/entity_class[@name='zombieArlene']/effect_group[@name='Base Effects']/passive_effect[@name='HealthMax']/@value">200</set>

<!-- ゾンビの移動速度変更(min,max 形式) -->
<set xpath="/entity_classes/entity_class[@name='zombieArlene']/property[@name='MoveSpeedAggro']/@value">0.5, 1.5</set>

主要HPグローバル変数のバニラ値

変数名対象通常フェラル放射線
healthSlimアーリーン等125500800
healthNormal標準ゾンビ200550900
healthSturdyランバージャック等6009001,600
healthToughデブ警官等9001,2002,000

パーク・スキル系

v2.x ではパークの最大レベルは5固定です。変更できるのは各レベルの解放に必要なアトリビュートレベルです。

TEXT
<!-- Pummel Pete のLv5解放条件を Strength Lv5 に緩和 -->
<set xpath="/progression/perks/perk[@name='perkPummelPete']/level_requirements[@level='5']/requirement[1]/@value">5</set>

<!-- Miner 69r の全レベルを Lv1 で解放できるようにする -->
<set xpath="/progression/perks/perk[@name='perkMiner69r']/level_requirements[@level='1']/requirement[1]/@value">1</set>
<set xpath="/progression/perks/perk[@name='perkMiner69r']/level_requirements[@level='2']/requirement[1]/@value">1</set>
<set xpath="/progression/perks/perk[@name='perkMiner69r']/level_requirements[@level='3']/requirement[1]/@value">1</set>
<set xpath="/progression/perks/perk[@name='perkMiner69r']/level_requirements[@level='4']/requirement[1]/@value">1</set>
<set xpath="/progression/perks/perk[@name='perkMiner69r']/level_requirements[@level='5']/requirement[1]/@value">1</set>

レシピ系

TEXT
<!-- ベースボールバットを「どこでも・木材5個だけ」で作れるように簡略化 -->
<remove xpath="/recipes/recipe[@name='meleeWpnClubT1BaseballBat']"/>
<append xpath="/recipes">
  <recipe name="meleeWpnClubT1BaseballBat" count="1" craft_time="10">
    <ingredient name="resourceWood" count="5"/>
  </recipe>
</append>

食料レシピでは craft_tool で調理器具を指定します。

TEXT
<!-- 焼肉レシピを調理器具(グリル)で作れるように変更 -->
<remove xpath="/recipes/recipe[@name='foodGrilledMeat']"/>
<append xpath="/recipes">
  <recipe name="foodGrilledMeat" count="1" craft_time="15" craft_area="campfire" craft_tool="toolCookingGrill">
    <ingredient name="foodRawMeat" count="1"/>
  </recipe>
</append>
情報

craft_area="campfire" のとき craft_tool で調理器具を指定できます。
toolCookingPot(鍋)や toolCookingGrill(グリル)など。

複数の変更をまとめて書く

一つの改造ファイルに複数の xpath 命令をまとめて書けます。

TEXT
<?xml version="1.0" encoding="UTF-8"?>
<configs>

  <!-- 木製棍棒 T0(バニラ EntityDamage: 12) -->
  <set xpath="/items/item[@name='meleeWpnClubT0WoodenClub']/effect_group/passive_effect[@name='EntityDamage'][@operation='base_set']/@value">20</set>

  <!-- ベースボールバット T1(バニラ EntityDamage: 20) -->
  <set xpath="/items/item[@name='meleeWpnClubT1BaseballBat']/effect_group/passive_effect[@name='EntityDamage'][@operation='base_set']/@value">35</set>
  <set xpath="/items/item[@name='meleeWpnClubT1BaseballBat']/effect_group/passive_effect[@name='BlockDamage'][@operation='base_set']/@value">28</set>

  <!-- 鉄鋼製棍棒 T3(バニラ EntityDamage: 32.5) -->
  <set xpath="/items/item[@name='meleeWpnClubT3SteelClub']/effect_group/passive_effect[@name='EntityDamage'][@operation='base_set']/@value">50</set>
  <set xpath="/items/item[@name='meleeWpnClubT3SteelClub']/effect_group/passive_effect[@name='BlockDamage'][@operation='base_set']/@value">45</set>

</configs>

アイテムIDの調べ方

方法1:ゲーム内コンソールで検索する(F1キー)

キーワードでアイテムIDを検索

TEXT
listitems club

直接入手して動作確認する

TEXT
giveself meleeWpnClubT1BaseballBat

方法2:バニラの Config ファイルを直接確認する

TEXT
7 Days to Die/
└── Data/
    └── Config/
        ├── items.xml         ← アイテム・武器・ツール・食料
        ├── blocks.xml        ← ドア・罠・コンテナ等のブロック個別HP
        ├── materials.xml     ← 建築ブロック(木材・コンクリート等)の素材HP
        ├── recipes.xml       ← レシピ定義
        ├── entityclasses.xml ← ゾンビ・動物のHP・速度
        ├── progression.xml   ← スキル・パーク解放条件
        └── loot.xml          ← ドロップ・ルートテーブル
情報

バニラの Config ファイルは絶対に直接編集しないでください。読む用途に限って参照してください。

方法3:このサイト管理者コマンド記事から確認

当サイトの管理者向けコマンド一覧に一部アイテムコマンドを表記していますのでご確認ください。

よくあるエラーと対処法

変更が反映されない

  • xpath の文字列が正確かどうか確認する(大文字・小文字も一致している必要があります)
  • アイテムIDにタイポ(入力ミス)がないか確認する
  • [@operation='base_set'] の条件が付いているか確認する

ゲームが起動しなくなった

  • XML の構文エラーが原因の場合がほとんどです
  • タグの閉じ忘れ(</set> の書き忘れなど)が最も多いエラーです
  • Visual Studio Code を使うと XML の構文エラーをリアルタイムで検出してくれます

append したはずの要素が追加されない

  • 追加先の親要素の xpath が正しいか確認する
  • 追加先の要素が実際に存在するか、バニラの XML で確認する

まとめ

  • set:既存の値を上書きする(最もよく使う)
  • append:末尾に新しい要素を追加する
  • remove:要素または属性を削除する
  • insertAfter:指定要素の直後に挿入する
  • v2.x のアイテム xpath は effect_group/passive_effect[@name='パラメーター'][@operation='base_set'] の構造
  • [@operation='base_set'] は別の角括弧で指定する(and ではなく ][ で区切る)
  • [@value='現在値'] で現在の値を条件に加えてさらに確実に絞り込める
  • ブロックHPは ドア・罠 → blocks.xml建築ブロック → materials.xml と変更先が異なる
  • ゾンビHPはグローバル変数(healthSlim 等)で一括管理されている
  • パークの最大レベルは5固定。変更できるのは解放条件(必要アトリビュートLv)
  • すべてのIDとxpath構造はバニラの Data/Config/ 以下の各XMLで必ず確認する
AI利用に関する表記

利用AIツール:ChatGPT, Claude, Gemini

情報収集・文章の補助・構成案の作成に利用しています。内容はすべて筆者が確認・編集しています。