blocks.xml は V3.0「Dead Hot Summer」で最も大きく作り直されたファイルです(diff 約13万行)。コンテナや土地保護などを xpath で触っているMODは広範に影響を受けます。
クラス統合(最重要)
多数の専用C#ブロッククラスが廃止され、*Class="CompositeTileEntity" +入れ子の `<property class=”TEFeature“>`** で表現する方式に統合されました。
- 廃止されたクラス値:
Loot/SecureLoot/QuestLoot/LandClaim/PlayerSign/DoorSecure/DrawBridge/CarExplode/CarExplodeLoot - 新クラス値は実質
CompositeTileEntity(Infoのみ別途) - ふるまいは入れ子フィーチャで表現:
- ストレージ/ルート →
TEFeatureStorage(LootListを内包) - 施錠 →
TEFeatureLockable/TEFeatureLockPickable - ドア →
TEFeatureDoor - 看板/キャンバス →
TEFeatureSignable/TEFeatureCanvas - 土地保護 →
TEFeatureLandClaim/TEFeatureAreaRepair - 車の爆発 →
TEFeatureExplodable - 新規 →
TEFeaturePickup/TEFeatureCombine(コンバインステーション等)
- ストレージ/ルート →
→ //block/property[@name='Class'][@value='Loot'] のような Class値を狙う xpath は一切マッチしなくなります。LootList も TEFeatureStorage の子になったため、/block/property[@name='LootList'] の直下指定は空振りします(//property[@name='LootList'] のような深さ非依存指定へ)。
プロパティのドット区切り → 入れ子化
DamageBonus.headなどのDamageBonus.<material>→<property class="DamageBonus">の子プロパティExplosion.*/PlantGrowing.*も同様に<property class="...">入れ子へMap.Color→ フラットな単一プロパティMapColor(例value="100,100,100")
注意:blocks はドット→入れ子化です(materials.xml の DamageBonus はパイプ化なので別物)。
その他
- XML宣言(
encoding="UTF-8")が追加 - ブロック定義の大量「丸ごと再出力」(追加1055/削除703)。
cntLockers*・ladderWood/Metal/Steel・metalCatwalk*などは再構成、combineStation/m60Turret/ 新TVファミリなどが新規 Buff/BuffsWhenWalkedOn/ActiveRadiusEffects/TriggeredEvent系はフラット文字列のまま形式変化なし
参考:差分例
土地保護ブロック(旧 Class=LandClaim/SecureLoot → 合成フィーチャ):
<property name="Class" value="CompositeTileEntity" />
<property class="CompositeFeatures">
<property class="TEFeatureLandClaim" />
<property class="TEFeatureAreaRepair" />
<property class="TEFeatureStorage">
<property name="LootList" value="playerLandClaimStorage" />
</property>
</property>
DamageBonus のドット → 入れ子化:
- <property name="DamageBonus.head" value="3"/>
- <property name="DamageBonus.glass" value="1"/>
+ <property class="DamageBonus">
+ <property name="head" value="3" />
+ <property name="glass" value="1" />
+ </property>
※実験版(B252相当)適用直後の調査に基づきます。