動作確認バージョン

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

注意

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

今回はいよいよゲームに存在しない新しいアイテムを追加するという、Mod 制作の醍醐味ともいえる実践に挑戦します。

完成イメージは「強化版ベースボールバット」です。バニラのベースボールバットをベースに、攻撃力・耐久値をカスタマイズした新しい武器を、レシピ付きで追加します。この手法を応用すれば、どんな新アイテムも作れるようになります。

新アイテム追加の仕組み:Extends(継承)

7 Days to Die では、新しいアイテムをゼロから定義するのではなく、既存アイテムをベースにして差分だけを書く「継承(Extends)」方式が推奨されています。

TEXT
<item name="myCustomClub">
  <property name="Extends" value="meleeWpnClubT1BaseballBat"/>
  <property name="EconomicValue" value="500"/>
</item>

Extends を使うことで、書いていない属性はすべてベースアイテムのものが適用されます。アイコン・モデル・アニメーションも含めて引き継がれるため、見た目はそのままでパラメーターだけ変えた新アイテムを簡単に作れます。

v2.x の重要なポイント

攻撃力・耐久値などの能力値は property タグではなく、effect_group 内の passive_effect タグで管理されています。Extends で継承した場合、能力値の変更は set xpath で行います

v2.x の重要なポイント

Extends を使わずにすべての属性をゼロから書くことも可能ですが、アイテムの定義は数十〜数百行に及ぶため、初心者のうちは Extends を使うのが現実的です。

今回作るもの:強化版ベースボールバット

項目バニラのベースボールバット今回作る強化版
アイテムIDmeleeWpnClubT1BaseballBatmyBaseballBatPlus
表示名Baseball Bat強化ベースボールバット
攻撃力2040
ブロックダメージ1836
最大耐久値8001600
販売価格200400
レシピ錬鉄×20・木材×10 など錬鉄×15・木材×8・ダクトテープ×2
バニラ実測値について

上記の数値はバニラの Data/Config/items.xml および recipes.xml を実際に確認した実測値です(v2.6)。

フォルダ構成

TEXT
Mods/
└── myBaseballBatPlus/        ← Modletフォルダ
    ├── ModInfo.xml            ← Modlet情報(必須)
    └── Config/
        ├── items.xml          ← 新アイテムの定義
        ├── recipes.xml        ← 作成レシピの追加
        └── Localization.txt   ← 日本語名の設定

今回は3ファイルを作成します。順番に作っていきます。

STEP 1:ModInfo.xml を作成する

v2.x の正しい形式(<ModInfo> タグなし・DisplayName 必須)で作成します。

TEXT
<?xml version="1.0" encoding="UTF-8"?>
<xml>
  <Name value="myBaseballBatPlus" />
  <DisplayName value="強化ベースボールバット" />
  <Description value="強化版ベースボールバットを追加するModlet" />
  <Author value="YourName" />
  <Version value="1.0.0" />
  <Website value="" />
</xml>

各プロパティの役割

プロパティ内容日本語
Name内部ID。フォルダ名と一致させる。英数字のみ不可
DisplayNameゲーム内の Mod 一覧に表示される名前
DescriptionMod の説明文
Author作者名
Versionバージョン番号
注意

<ModInfo> タグで囲まないでください。 v2.x では <xml> 直下に各プロパティを直接書く形式が正しい書き方です。<ModInfo> タグで囲むとゲームに認識されません。

注意

Name は英数字のみにしてください。DisplayName は日本語が使えますが、Name に日本語を入れるとゲームに認識されない場合があります。

STEP 2:新アイテムを定義する(items.xml)

Config フォルダの中に items.xml を作成します。

新アイテムの追加は 2段階 で行います。

  1. append で新しいアイテム定義を追加する
  2. set で能力値を変更する
TEXT
<?xml version="1.0" encoding="UTF-8"?>
<configs>

  <append xpath="/items">
    <item name="myBaseballBatPlus">
      <property name="Extends" value="meleeWpnClubT1BaseballBat"/>
      <property name="EconomicValue" value="400"/>
    </item>
  </append>

  <set xpath="/items/item[@name='myBaseballBatPlus']/effect_group/passive_effect[@name='EntityDamage'][@operation='base_set']/@value">40</set>

  <set xpath="/items/item[@name='myBaseballBatPlus']/effect_group/passive_effect[@name='BlockDamage'][@operation='base_set']/@value">36</set>

  <set xpath="/items/item[@name='myBaseballBatPlus']/effect_group/passive_effect[@name='DegradationMax'][@operation='base_set']/@value">1600</set>

</configs>

ポイント解説

<append xpath="/items">

/items タグの末尾に新しい item 要素を追加しています。set ではなく append を使うのは、新しい要素を追加する操作だからです。

<property name="Extends" value="meleeWpnClubT1BaseballBat"/>

この1行があることで、書いていないすべての属性(アイコン・サウンド・アニメーション・ダメージタイプなど)が meleeWpnClubT1BaseballBat から引き継がれます。

能力値は set xpath で変更する

v2.x の items.xml では、攻撃力・耐久値などの能力値は effect_group 内の passive_effect タグで管理されています。Extends で継承した後、set xpath で値を上書きします。[@operation='base_set'] を必ず付けることで確実に基本値を変更できます。

EconomicValueproperty タグで変更できる

販売価格などの一部パラメーターは effect_group 構造ではなく、通常の property タグで管理されているため append 内で直接書けます。

STEP 3:レシピを追加する(recipes.xml)

新アイテムはデフォルトではゲーム内で入手できません。クラフトで作れるようにするためにレシピを追加します。

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

  <append xpath="/recipes">
    <recipe name="myBaseballBatPlus" count="1" craft_time="25">
      <ingredient name="resourceForgedIron" count="15"/>
      <ingredient name="resourceWood" count="8"/>
      <ingredient name="resourceDuctTape" count="2"/>
    </recipe>
  </append>

</configs>

レシピの各属性

属性説明
nameクラフトで作られるアイテムのID(新アイテムIDと一致させる)
count1回のクラフトで作れる個数
craft_time作成にかかる時間(秒)
craft_area必要な作業台(省略するとどこでも作れる)

主な craft_area の値(バニラ実測値)

TEXT
workbench        → ワークベンチ
forge            → 鍛冶炉
chemistryStation → 化学ステーション
campfire         → 焚き火
cementMixer      → セメントミキサー

STEP 4:日本語名を設定する(Localization.txt)

このままだとゲーム内での表示名がアイテムID(myBaseballBatPlus)そのままになります。Localization.txt を追加して日本語名を設定します。

TEXT
Key,File,Type,UsedInMainMenu,NoTranslate,english,Context,japanese
myBaseballBatPlus,items,Item,,,Enhanced Baseball Bat,,強化ベースボールバット
myBaseballBatPlusDesc,items,Item,,,A reinforced baseball bat with improved durability and power.,,耐久性と攻撃力を高めた強化版のベースボールバット。

各列の意味

列名説明
KeyアイテムIDと一致させる(大文字・小文字も含む)
Fileアイテム名なら items
Typeアイテムなら Item
english英語での表示名
japanese日本語での表示名(この列が日本語版に表示される)

STEP 5:動作確認する

フォルダ構成が以下のようになっていることを確認してからゲームを起動します。

TEXT
7 Days to Die/
└── Mods/
    └── myBaseballBatPlus/
        ├── ModInfo.xml
        └── Config/
            ├── items.xml
            ├── recipes.xml
            └── Localization.txt

確認手順

  1. ゲームを完全に終了して再起動する
  2. 新規ゲームを開始する(既存セーブには反映されないことがある)
  3. F1キーでコンソールを開いて以下のコマンドを入力する
TEXT
giveself myBaseballBatPlus
  1. インベントリに「強化ベースボールバット」が追加されたことを確認する
  2. アイテムのステータス画面で攻撃力・耐久値が設定通りになっているか確認する
ポイント

攻撃力の表示は品質や装備スキルによって変わります。品質1の状態でバニラ(20)の2倍(40)になっていれば正常です。

応用:他のカテゴリのアイテムも同じ手法で作れる

今回は近接武器でしたが、他のカテゴリも同じ Extends の仕組みで追加できます。

銃器の場合

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

  <append xpath="/items">
    <item name="myPistolPlus">
      <property name="Extends" value="gunHandgunT1Pistol"/>
      <property name="EconomicValue" value="800"/>
    </item>
  </append>

  <set xpath="/items/item[@name='myPistolPlus']/effect_group/passive_effect[@name='EntityDamage'][@operation='base_set']/@value">50</set>

  <set xpath="/items/item[@name='myPistolPlus']/effect_group/passive_effect[@name='MagazineSize'][@operation='base_set']/@value">30</set>

</configs>

ツールの場合

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

  <append xpath="/items">
    <item name="mySteelPickaxePlus">
      <property name="Extends" value="meleeToolPickT2SteelPickaxe"/>
    </item>
  </append>

  <set xpath="/items/item[@name='mySteelPickaxePlus']/effect_group/passive_effect[@name='BlockDamage'][@operation='base_set']/@value">170</set>

  <set xpath="/items/item[@name='mySteelPickaxePlus']/effect_group/passive_effect[@name='DegradationMax'][@operation='base_set']/@value">2400</set>

</configs>

複数のアイテムを1つの Modlet にまとめる

<append xpath="/items"> の中に複数の item 要素を並べることで、1つの Modlet で複数のアイテムを一度に追加できます。

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

  <append xpath="/items">

    <item name="myBaseballBatPlus">
      <property name="Extends" value="meleeWpnClubT1BaseballBat"/>
    </item>

    <item name="mySteelClubPlus">
      <property name="Extends" value="meleeWpnClubT3SteelClub"/>
    </item>

  </append>

  <set xpath="/items/item[@name='myBaseballBatPlus']/effect_group/passive_effect[@name='EntityDamage'][@operation='base_set']/@value">40</set>
  <set xpath="/items/item[@name='mySteelClubPlus']/effect_group/passive_effect[@name='EntityDamage'][@operation='base_set']/@value">65</set>

</configs>

まとめ

  • 新アイテムは Extends で既存アイテムを継承して作るのが基本
  • <append xpath="/items"> で新しい item 定義を追加する
  • v2.x の能力値(攻撃力・耐久値など)は append 後に set xpath で変更する
  • set xpath には [@operation='base_set'] を必ず付ける
  • レシピは recipes.xml<append xpath="/recipes"> で追加する
  • craft_area の正しい値は workbenchforgecementMixer など(旧式の cement_mixer_player は使わない)
  • 日本語名は Localization.txt で設定する(UTF-8 BOMなしで保存)
  • ModInfo.xml は v2形式(<ModInfo> タグなし・DisplayName 必須)で作成する