blocks.xml is the most heavily reworked file in V3.0 “Dead Hot Summer” (diff of roughly 130,000 lines). MODs that touch containers, land protection, and the like via xpath are broadly affected.
Class Consolidation (Most Important)
Many dedicated C# block classes have been retired and consolidated into a scheme expressed with *Class="CompositeTileEntity" plus nested `<property class=”TEFeature“>`**.
- Retired class values:
Loot/SecureLoot/QuestLoot/LandClaim/PlayerSign/DoorSecure/DrawBridge/CarExplode/CarExplodeLoot - The new class value is essentially
CompositeTileEntity(withInfobeing the only separate exception) - Behavior is expressed through nested features:
- Storage/loot →
TEFeatureStorage(which containsLootList) - Locking →
TEFeatureLockable/TEFeatureLockPickable - Doors →
TEFeatureDoor - Signs/canvas →
TEFeatureSignable/TEFeatureCanvas - Land protection →
TEFeatureLandClaim/TEFeatureAreaRepair - Car explosions →
TEFeatureExplodable - New →
TEFeaturePickup/TEFeatureCombine(combine station, etc.)
- Storage/loot →
→ Any xpath targeting a Class value, such as //block/property[@name='Class'][@value='Loot'], will no longer match at all. Since LootList is now a child of TEFeatureStorage, a direct specifier like /block/property[@name='LootList'] will come up empty (switch to a depth-independent specifier such as //property[@name='LootList']).
Dot-Separated Properties → Nested
DamageBonus.<material>such asDamageBonus.head→ child properties of<property class="DamageBonus">Explosion.*/PlantGrowing.*likewise become nested under<property class="...">Map.Color→ a flat single property,MapColor(e.g.value="100,100,100")
Note: in blocks, dots become nesting (the DamageBonus in materials.xml is pipe-delimited, so that’s a different matter).
Other Changes
- An XML declaration (
encoding="UTF-8") has been added - A large number of block definitions have been “re-emitted wholesale” (1,055 additions / 703 deletions). Items such as
cntLockers*,ladderWood/Metal/Steel, andmetalCatwalk*have been restructured, whilecombineStation,m60Turret, and the new TV family are new additions Buff/BuffsWhenWalkedOn/ActiveRadiusEffects/TriggeredEventand the like remain flat strings with no format change
Reference: Diff Examples
Land protection block (old Class=LandClaim/SecureLoot → composite features):
<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 dots → nested:
- <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>
* Based on investigation immediately after applying the experimental build (equivalent to B252).
Related: List of MOD-making articles