Skip to content

Shirt Asset Reference

The shirt asset is the data definition for every torso-and-arms clothing item in Unturned™ - military tops, casual shirts, jackets, armor carriers worn on the torso, tactical vests that sit under the Vest slot, and any other item that occupies the Shirt slot on the character model. The Shirt slot is one of two clothing slots (alongside Pants) that the ItemShirtAsset class in the Unturned™ runtime supports with both armor protection and storage capacity inherited from the ItemBagAsset base class. A well-authored shirt asset with correctly tuned armor values, an appropriate storage grid dimension through Width and Height, and proper Ignore_Hand flag configuration for left-handed characters is the core functional clothing item in any modder's catalog.

This article is the 57 Studios™ canonical reference for the shirt asset subtype. It covers every .dat field specific to the ItemShirtAsset class - the Armor damage reduction multiplier (shared with Pants and Vests but configured independently per slot), the Width and Height storage grid fields inherited from ItemBagAsset, the Ignore_Hand flag that controls whether the shirt respects left-handed mode, the character skeleton bones that a shirt prefab binds to, and the optional character mesh replacement system documented in the SDG chapter. The shared identity fields common to every clothing type (ID, GUID, Type, Name, Rarity, Useable Clothing, Size_X, Size_Y) are documented in the base Clothing Asset Reference and are not repeated here except where shirt-specific configuration departs from the norm.

A custom military shirt item displayed in the Unturned inventory alongside its equipped variant

Documentation source: This article references the official Smartly Dressed Games modding documentation chapter 59 (Shirt Assets) for the ItemShirtAsset class definition and the parent ItemBagAsset class. Game-file evidence is drawn from the shipped shirts under Bundles/Items/Shirts/ in the vanilla Unturned™ asset set, including the Biohazard_Top, Chef_Top, Coalition_Top_Captain, Construction_Top, Engineer_Top, Cargo_Shorts, Jersey_America, and Rain_Jacket families.

Who this article is for

This article is written for Unturned™ mod authors who have completed at least one clothing mod or have read the Clothing Asset Reference and want to focus specifically on the Shirt slot. You should already be familiar with the master bundle pipeline, the SkinnedMeshRenderer bone binding workflow, and the .dat authoring format. If you are new to Unturned™ clothing modding, start with Project Folder Structure and GUIDs and How to Install Unity Editor before returning here.

What you will learn

  • The complete field surface of the ItemShirtAsset class: Armor, Width, Height, Ignore_Hand, and the optional character mesh replacement fields.
  • Why shirts inherit from ItemBagAsset and what that means for storage capability.
  • How the Armor field works as a damage reduction multiplier and the armor stacking math across Shirt, Pants, and Vest slots.
  • The Width and Height storage grid that shirts can provide - unique among clothing slots and frequently overlooked by mod authors.
  • The Ignore_Hand flag that controls left-handed character shirt rendering.
  • The character skeleton bones that a shirt prefab binds to.
  • Inventory footprint guidelines by shirt type.
  • The complete diagnostic table for shirt-specific authoring errors.
  • The character mesh replacement system for shirts that replace the character body mesh.

How the shirt slot works

The Shirt slot covers the player's torso and both arms. When a player equips a shirt item, the runtime binds the item's prefab to the character skeleton torso and arm bones, applies the Armor multiplier to incoming damage calculations, creates a wearable storage grid from Width and Height (if both are set to non-zero values), and checks the Ignore_Hand flag to determine whether the shirt should mirror for left-handed characters.

The Shirt slot is distinct from the Vest slot. Shirts and Vests can be worn simultaneously - the shirt renders under the vest in the visual layer order. The shirt's Armor value stacks multiplicatively with the vest's Armor value when calculating total damage reduction.

The two storage system inheritance paths

Shirts are unique among the visible clothing slots (Hat, Shirt, Pants, Mask, Glasses) in that they inherit from ItemBagAsset, which is the same base class that provides storage grids for backpack items. This inheritance means shirts can define a storage grid through Width and Height fields - a capability that hat, mask, and glasses items do not share. The storage grid created by a shirt functions identically to a backpack grid, providing additional inventory slots while the shirt is equipped.

The two clothing slots that inherit from ItemBagAsset are Shirt and Pants. Both can have storage. The Vest slot inherits directly from ItemClothingAsset and uses a different field pair (Storage_X and Storage_Y) for its storage. Hat, Mask, and Glasses inherit from ItemGearAsset and cannot have storage at all.

Shirt .dat field reference

Identity and shared fields

Shirt items require the same shared identity fields as every other item type, documented in full in Item Asset Anatomy and Clothing Asset Reference.

FieldTypeExampleNotes
IDuint1642201Unique item ID. Use 42200+ range per 57 Studios™ allocation or 50000+ for open community range.
GUIDuint128 hexd4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9128-bit globally unique identifier. Generate fresh per item.
TypeenumShirtMust be Shirt for shirt slot items.
NamestringMyMilitaryShirtInternal name. Used in console commands and cross-reference.
RarityenumUncommonCommon, Uncommon, Rare, Epic, Legendary, Mythical.
UseableenumClothingMust be Clothing for all wearable items.
Size_Xuint82Inventory grid width un-equipped.
Size_Yuint82Inventory grid height un-equipped.
Size_Zfloat0.6Visual depth scaling for the item icon.

Armor field

FieldTypeRangeDefaultPurpose
Armorfloat0.0 to 1.01.0Damage multiplier when equipped. Lower values = more protection. 1.0 = no protection. 0.9 = 10% damage reduction. 0.8 = 20% reduction.

The Armor field is a damage multiplier, not a flat reduction or a percentage point. The engine multiplies incoming damage by the Armor value before applying any other modifiers. An Armor value of 0.9 means the wearer takes 90% of incoming damage (10% reduction). An Armor value of 0.5 means the wearer takes 50% of incoming damage (50% reduction). An Armor value of 1.0 means the wearer takes full damage (0% reduction).

The armor calculation for the Shirt slot is the first step in a multi-step chain. Pants armor and Vest armor apply independently in sequence. See the Armor stacking section below for the combined calculation.

Storage fields (inherited from ItemBagAsset)

FieldTypeRangeDefaultPurpose
Widthuint80-255 (practical 0-10)0Number of columns in the shirt's storage grid. A value of 0 means no horizontal storage.
Heightuint80-255 (practical 0-8)0Number of rows in the shirt's storage grid. A value of 0 means no vertical storage.

The Width and Height fields are inherited from ItemBagAsset, the same class that provides storage grid fields for backpack items. When both Width and Height are set to non-zero values, equipping the shirt adds a storage grid of Width x Height slots to the player's inventory. This is separate from the backpack storage grid and the vest storage grid - a player can benefit from all three simultaneously.

Storage on shirts is a vanilla mechanic

The shipped Unturned™ asset set includes many shirts with storage capacity. The Biohazard_Top (ID 1015) provides a 5x2 grid (10 slots). The Chef_Top (ID 230) provides a 5x3 grid (15 slots). The Coalition_Top_Captain (ID 1424) provides a 6x3 grid (18 slots). The Construction_Top (ID 232) provides a 4x3 grid (12 slots). Shirt storage is not a mod extension; it is a fully supported vanilla feature.

The default value for both Width and Height is 0. When both are 0 (or both are absent from the .dat file), the shirt provides zero storage slots. This is the correct configuration for cosmetic-only shirts that should not expand inventory capacity. Setting Width without Height (or vice versa) also produces zero storage because the grid area calculation 0 x N = 0 applies.

Ignore_Hand flag

FieldTypeDefaultPurpose
Ignore_Handflagnot set (shirt respects left-handed mode)When present, the shirt mesh is not mirrored when the player character is configured as left-handed.

Unturned™ supports a left-handed character mode that mirrors weapon models and character skeleton orientation. Clothing items are also mirrored in left-handed mode by default - the shirt mesh flips horizontally to match the left-handed skeleton. The Ignore_Hand flag stops this mirroring, keeping the shirt in its original orientation regardless of the handedness setting.

The Ignore_Hand flag is used on shirts whose visual design is asymmetrical in a way that would look incorrect when mirrored. A shirt with a left-chest patch reads as natural - the patch stays on the left side in right-handed mode and moves to the right side in left-handed mode. A shirt with a design that explicitly depends on orientation (a text that must read forward, a diagonal zipper that must run in a specific direction) should have the Ignore_Hand flag so the design is not flipped.

Shipped shirts that use Ignore_Hand include the Jersey_America (ID 624), the Jersey_Russia (ID 633), and all other national jersey shirts. These shirts have country-specific designs that should not be mirrored in left-handed mode because the text and graphics would appear backward.

Character mesh replacement fields

The ItemShirtAsset class supports an optional character mesh replacement system. These fields allow a shirt to replace the character's body mesh (torso and arms) entirely rather than simply adding a clothing mesh on top.

FieldTypeDefaultPurpose
Has_1P_Character_Mesh_OverrideboolFalseWhen True, the engine loads a prefab named Character_Mesh_1P_Override_0 from the bundle to replace the first-person character mesh.
Character_Mesh_3P_Override_LODsuint160Number of prefabs to load for third-person LOD (Level of Detail) mesh replacement. Each LOD level has a numbered prefab.
Has_Character_Material_OverrideboolFalseWhen True, a material named Character_Material_Override is loaded to replace the first-person and third-person mesh materials.

The character mesh replacement system is an advanced feature used when the shirt fundamentally changes the character body shape - a shirt that replaces the torso with a robotic shell, a shirt that bulks up the arm geometry, or a shirt that adds geometry that the standard shirt mesh cannot achieve on top of the body. The system requires custom character body meshes authored in Blender and packaged in the master bundle.

The CharacterMeshReplacementTest (ID 1522) is the shipped test item for this system. It enables all three fields (Has_1P_Character_Mesh_Override True, Character_Mesh_3P_Override_LODs 1, Has_Character_Material_Override True) and provides the replacement meshes in its bundle.

Character mesh replacement workflow

The character mesh replacement system is documented in the SDG chapter on Character Mesh Replacement. The cohort recommendation is to use this system only when the shirt design fundamentally changes the character body shape. For standard clothing that sits on top of the body, a regular SkinnedMeshRenderer shirt prefab is sufficient. The character mesh replacement adds significant bundle size and authoring complexity.

File and folder structure

A complete shirt mod requires the following files organized in the standard item folder layout:

Workshop/Content/304930/<modID>/
├── Bundles/
│   └── <BundleName>.unity3d              ← master bundle containing the shirt prefab
└── Items/
    └── MyShirt/
        ├── MyShirt.dat                    ← primary configuration (fields documented here)
        └── English.dat                    ← display name and description

Armor value balance reference

Armor valueEffective damage reductionVanilla equivalent example
1.00% (no protection)Aprix_Top, Astronaut_Top, Blueknight_Top - cosmetic shirts
0.955%Biohazard_Top, Chef_Top, Construction_Top, Engineer_Top, Rain_Jacket - light utility tops
0.910%Coalition_Top_Captain, Coastguard_Top, Military_Top - standard military tops
0.8515%SpecOps_Top - special operations top
0.820%Heavy tactical armor carrier

The armor values above are cohort-validated balance levels. The vanilla Unturned™ shirt set uses 0.95 as the most common non-cosmetic armor value, with 0.9 reserved for military-grade items and 0.85 and below for specialized tactical gear.

Storage grid dimension reference

Shirt typeWidthHeightTotal slotsVanilla examples
No storage (cosmetic only)0 or absent0 or absent0Aprix_Top, Astronaut_Top, Detective_Top, Elf_Top
Light duty top4312Construction_Top
Utility top5210Biohazard_Top, Diving_Top
Standard duty top5315Chef_Top, Engineer_Top, Farmer_Top
Patrol top6318Coalition_Top_Captain, Coastguard_Top, Rain_Jacket
Light duty (shorts)5315Cargo_Shorts

Armor stacking across Shirt, Pants, and Vest

The Shirt slot's Armor value is one part of a three-way multiplicative stack. When a player wears Shirt, Pants, and Vest items simultaneously, the total damage reduction is calculated as:

Total multiplier = Shirt Armor x Pants Armor x Vest Armor

Example stacking scenarios

ScenarioShirt ArmorPants ArmorVest ArmorTotal multiplierEffective reduction
Cosmetic only (no armor)1.01.01.01.00%
Light armor set0.950.950.95~0.857~14.3%
Standard armor set0.90.90.90.729~27.1%
Tactical set0.850.850.85~0.614~38.6%
Max practical protection0.80.80.80.512~48.8%
Mix (shirt light, vest heavy)0.950.950.85~0.767~23.3%

The chart above traces a 100 HP damage event through a standard armor set (Shirt 0.9, Pants 0.9, Vest 0.85). Each slot applies its multiplier sequentially. The final damage of approximately 68.9 HP represents a 31.1% effective reduction from the combination, not from any single piece.

Character skeleton binding for shirts

A shirt prefab binds to the character skeleton torso and arm bones. The SkinnedMeshRenderer on the shirt prefab must reference these bones by their exact names.

Required bones for shirt binding

Bone nameRegionRequired
Character_SpineLower spine / torso baseYes
Character_Spine1Upper spine / chestYes
Character_LeftUpperArmLeft upper armYes
Character_LeftForeArmLeft forearmYes
Character_RightUpperArmRight upper armYes
Character_RightForeArmRight forearmYes

Optional bones for extended coverage

Bone nameRegionWhen needed
Character_NeckNeck baseFor shirts with a high collar that extends to the neck
Character_HipsPelvisFor shirt meshes that extend below the waist (tunic, long shirt, jacket tail)

The shirt mesh should be weighted to the spine and arm bones with smooth transition weights across the shoulder joints. Weight bleeding between the upper arm bones and the spine bones at the shoulder joint is correct - it produces a natural deformation when the player raises their arms.

Shirt prefab hierarchy

The minimum structure for a shirt prefab:

MyShirtPrefab (root)
└── Body (SkinnedMeshRenderer - shirt mesh)
    └── Material (assigned to the SkinnedMeshRenderer)

Shirt inventory footprint guidelines

Shirt typeSize_XSize_YRationale
Tank top, undershirt21Minimal fabric, small footprint
T-shirt, light shirt22Standard shirt bulk
Heavy jacket, armor carrier22Medium footprint
Long coat, trench coat23Extensive fabric, large footprint

Complete .dat example: light utility shirt with storage

ID 42201
GUID d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9
Type Shirt
Name MyUtilityShirt
Rarity Uncommon
Size_X 2
Size_Y 2
Size_Z 0.6
Useable Clothing

Armor 0.95
Width 5
Height 3

Companion English.dat:

Name Utility Shirt
Description Light utility shirt with 15 storage slots and light ballistic protection. Standard-issue patrol top.

Complete .dat example: cosmetic shirt (no armor, no storage)

ID 42202
GUID e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
Type Shirt
Name MyCasualShirt
Rarity Common
Size_X 2
Size_Y 2
Size_Z 0.6
Useable Clothing

Armor 1.0

Companion English.dat:

Name Casual Shirt
Description A comfortable civilian shirt. Provides no storage or ballistic protection.

Complete .dat example: tactical shirt with Ignore_Hand

ID 42203
GUID f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1
Type Shirt
Name MyTacticalShirt
Rarity Rare
Size_X 2
Size_Y 2
Size_Z 0.6
Useable Clothing

Ignore_Hand
Armor 0.85
Width 6
Height 3

Companion English.dat:

Name Tactical Shirt
Description Heavy-duty tactical shirt with 18 storage slots and enhanced ballistic protection. Left-hand stable design.

Complete .dat example: light utility top (no storage)

ID 42204
GUID a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2
Type Shirt
Name MyLightTop
Rarity Common
Size_X 2
Size_Y 1
Size_Z 0.5
Useable Clothing

Armor 1.0

Companion English.dat:

Name Light Top
Description A lightweight tank top. Provides no storage or protection.

Diagnostic table

SymptomMost likely causeResolution
Shirt equips to wrong slotType field is not ShirtSet Type Shirt
Pink material on shirtMaterial not assigned in UnityAssign material, rebuild bundle
Shirt is static, does not deform with characterMeshRenderer used instead of SkinnedMeshRendererReplace with SkinnedMeshRenderer, re-bind bones
Shirt deforms incorrectlyBone names misspelled in UnityVerify all six arm + spine bone names exactly against character skeleton reference
Armor has no effectArmor 1.0 means zero protectionLower Armor value below 1.0
Armor reduction is weaker than expectedMust combine with Pants and Vest for significant effectTune all three slots together
Shirt provides no storage despite having fieldsOnly Width or only Height set - one of the two is 0Set both Width and Height to positive values
Storage grid on shirt is wrong sizeWidth x Height calculation offCheck both field values; recalculate total
Shirt mirrored incorrectly for left-handed characterIgnore_Hand flag absent on asymmetrical designAdd Ignore_Hand if the shirt design should not mirror
Shirt invisible when equippedPrefab GUID mismatchConfirm GUID in .dat matches prefab GUID in Unity bundle
Character body disappears with shirt equippedCharacter mesh replacement fields enabled but replacement meshes missingDisable Has_1P_Character_Mesh_Override and related fields, or provide the replacement prefabs
Shirt clips through vest when both equippedShirt mesh extends above vest chest areaDesign shirt mesh to fit under the Vest slot mesh layer
Item cannot be picked upUseable Clothing field missingAdd Useable Clothing
Shirt has no storage despite Width and Height setWidth or Height field name misspelledConfirm field names match exactly: Width and Height

English.dat localization for shirts

The English.dat file should communicate the shirt's armor tier and storage capacity to the player. The cohort-recommended description pattern:

Shirt configurationDescription patternExample
Cosmetic (Armor 1.0, no storage)"A [adjective] [type]. Provides no protection.""A comfortable civilian shirt. Provides no storage or ballistic protection."
Armor only (no storage)"Provides [tier] protection.""Light utility shirt with basic ballistic protection."
Storage only (no armor)"Provides [N] storage slots.""Lightweight shirt with 10 pockets for tool storage."
Both armor and storage"Provides [tier] protection and [N] storage slots.""Heavy tactical shirt with 18 storage slots and enhanced protection."

Shirt authoring checklist

Before publishing a shirt mod to the Steam Workshop, confirm the following:

  • [ ] Type Shirt is set correctly.
  • [ ] Armor value is below 1.0 if protection is intended; Armor 1.0 for cosmetic-only shirts.
  • [ ] Width and Height are both set to positive values if storage is intended; both absent (or 0) for cosmetic-only.
  • [ ] The prefab uses a SkinnedMeshRenderer with correct bone references.
  • [ ] Bone references include Character_Spine, Character_Spine1, Character_LeftUpperArm, Character_LeftForeArm, Character_RightUpperArm, Character_RightForeArm.
  • [ ] Ignore_Hand is set for asymmetrically designed shirts that should not mirror in left-handed mode.
  • [ ] Character mesh replacement fields are used only when the shirt changes the character body shape.
  • [ ] English.dat communicates the armor tier and storage capacity accurately.
  • [ ] Tested in-game: shirt visible, deforms with arm movement, armor applies, storage grid appears (if configured).

Best practices

  • Tune Armor relative to the shirt's visual design and intended role. A civilian-looking shirt with high armor (0.8 or below) will confuse players who interpret visual appearance as a proxy for protection.
  • Use Width and Height storage on shirts intentionally - not every shirt needs pockets. Cosmetic shirts should omit storage entirely by leaving both fields at their defaults.
  • Set Ignore_Hand on shirts with directional graphics, text, or asymmetrical zippers. National jerseys use this pattern because flag designs should not mirror.
  • Design shirt prefab meshes to fit under the Vest slot. The shirt renders beneath the vest visually; a shirt mesh that extends above the vest chest area will clip through.
  • Test armor stacking across Shirt, Pants, and Vest in-game before publishing. The multiplicative stacking produces combined protection that may be higher or lower than individual piece tuning suggests.
  • Author cosmetic shirts with Armor 1.0 explicitly to confirm no accidental protection is applied. The default is 1.0 but setting it explicitly removes ambiguity.

Frequently asked questions

Can a shirt have both Armor and Width/Height storage?

Yes. The Armor field and the Width/Height fields are independent and can be set simultaneously. A shirt with Armor 0.9 and Width 6 / Height 3 provides both 10% damage reduction and 18 storage slots. The shipped Coalition_Top_Captain (ID 1424) demonstrates this pattern with Armor 0.9, Width 6, Height 3.

What is the maximum storage grid a shirt can provide?

The Width and Height fields are uint8 with a theoretical maximum of 255 each, but the practical maximum is constrained by the inventory UI. Width values above 10 produce grids that clip outside the inventory panel bounds. Height values above 8 exceed the standard panel height. The cohort recommendation is to keep Width at or below 6 and Height at or below 4 for shirt storage, as the shirt storage grid appears alongside the main inventory and backpack panels.

Can I add Width and Height to a hat or glasses item?

No. The Width and Height fields are defined on ItemBagAsset, which is the inheritance base for shirts, pants, and backpacks. Hat, mask, and glasses items inherit from ItemGearAsset, which does not provide bag-level storage fields. Adding Width and Height to a hat .dat would cause the engine to silently ignore them.

How does the Ignore_Hand flag affect shirt prefab binding?

When Ignore_Hand is present, the shirt's SkinnedMeshRenderer bone bindings are not mirrored for left-handed characters. The shirt renders in its authored orientation regardless of the handedness setting. When Ignore_Hand is absent (default), the engine mirrors the bone bindings in left-handed mode, flipping the shirt horizontally. The prefab itself does not need a separate left-handed version - the engine handles the mirroring automatically through the skeleton.

Can a shirt provide more storage than a backpack?

A shirt with Width 6 and Height 4 provides 24 storage slots, which is comparable to a standard backpack. A backpack with Width 8 and Height 7 provides 56 slots. Shirts are not intended to replace backpacks as the primary storage expansion - the shirt grid is supplemental. The cohort recommendation is to keep shirt storage at or below 24 slots to maintain the backpack's role as the primary storage item.

What happens if I set Armor to 0.0?

An Armor value of 0.0 means incoming damage is multiplied by zero, resulting in complete immunity from all damage sources while the shirt is equipped. This is not a recommended value for player-facing items. The lowest the cohort recommends is Armor 0.8 (20% reduction), reserved for Legendary-tier tactical armor. Values below 0.5 effectively make the player invincible and will break server balance.

Do I need to set Armor on every shirt?

No. Cosmetic-only shirts can omit the Armor field entirely (which defaults to 1.0, zero protection) or set it explicitly to 1.0. Many shipped cosmetics shirts (Aprix_Top, Astronaut_Top, Detective_Top) omit the Armor field entirely. The engine applies the default of 1.0 when the field is absent.

How does the shirt storage grid interact with the backpack grid?

The shirt storage grid is independent of the backpack grid. A player with a shirt providing 18 storage slots and a backpack providing 56 storage slots has a total of 74 additional slots from both items combined. The shirt grid and backpack grid appear as separate inventory panel regions.

Can I author a shirt that changes the character model shape?

Yes, through the character mesh replacement system (Has_1P_Character_Mesh_Override, Character_Mesh_3P_Override_LODs, Has_Character_Material_Override). This system replaces the character's body mesh with a custom mesh defined in the bundle. The CharacterMeshReplacementTest (ID 1522) is the reference item for this system. Note that this is an advanced feature that significantly increases bundle size and authoring complexity.

What is the standard inventory size for a shirt?

The cohort-recommended default is Size_X 2, Size_Y 2. This matches the vanilla Biohazard_Top, Chef_Top, Construction_Top, Engineer_Top, Rain_Jacket, and most other shipped shirts. Light shirts (tank tops, muscle shirts) can use Size_X 2, Size_Y 1. Heavy coats can use Size_X 2, Size_Y 3.

Can I make a shirt that provides no visual mesh but applies armor?

A shirt with a fully transparent material applies armor normally but has no visible presence on the character model. This is an unusual configuration but technically supported - the armor field is independent of the visual prefab. The cohort recommendation for this use case is to provide a minimal mesh (a small polygon inside the character body that is never visible) rather than a transparent material, because transparent materials have rendering order implications.

Advanced considerations

Shirt in the class inheritance chain

ItemAsset (base item properties)
  └── ItemClothingAsset (clothing properties: Useable Clothing, slot behavior)
      └── ItemBagAsset (Width, Height - storage grid fields)
          └── ItemShirtAsset (Type Shirt, Armor, Ignore_Hand, character mesh replacement)

The ItemShirtAsset class inherits from ItemBagAsset, which means shirts have access to the same storage grid system that backpacks use. This is distinct from the Vest slot, which uses Storage_X/Storage_Y from ItemClothingAsset directly. The storage field names are different (Width/Height for shirts vs. Storage_X/Storage_Y for vests), and the two storage systems are independent.

Shirt in RP server context

In RP servers, the Shirt slot carries the faction's uniform identity and is typically the armor-bearing item for the faction's combat role. The cohort recommendation for RP server shirt authoring is to define a consistent armor tier across the Shirt, Pants, and Vest set for each faction, then use the shirt's Width/Height storage to differentiate roles within the faction - a medic shirt might have less armor but more storage pockets; a frontline combat shirt has higher armor and minimal storage.

Shirt balance for survival servers

On survival-focused servers where inventory management is a core gameplay element, shirt storage becomes a meaningful balance lever. A shirt with Width 6 and Height 3 (18 slots) is approximately three extra inventory rows, which is substantial. The cohort recommendation for survival servers is to reserve shirts with storage for higher rarity tiers or later-game progression, keeping early-game shirts cosmetic-only or light-storage.

Appendix A: Complete shirt field quick reference

FieldTypeSource classRequiredDefaultNotes
IDuint16ItemAssetYes-Unique item ID
GUIDuint128 hexItemAssetYes-128-bit globally unique identifier
TypeenumItemClothingAssetYes-Must be Shirt
NamestringItemAssetYes-Internal name
RarityenumItemAssetNoCommonRarity tier
UseableenumItemClothingAssetYes-Must be Clothing
Size_Xuint8ItemAssetYes-Inventory width
Size_Yuint8ItemAssetYes-Inventory height
Size_ZfloatItemAssetNoEngine defaultVisual scaling
ArmorfloatItemClothingAssetRecommended1.0Damage multiplier
Widthuint8ItemBagAssetNo0Storage grid width - inherited from bag
Heightuint8ItemBagAssetNo0Storage grid height - inherited from bag
Ignore_HandflagItemShirtAssetNonot setShirt-specific - left-handed mirror control
Has_1P_Character_Mesh_OverrideboolItemShirtAssetNoFalseCharacter mesh replacement - advanced
Character_Mesh_3P_Override_LODsuint16ItemShirtAssetNo0LOD count for 3P mesh replacement
Has_Character_Material_OverrideboolItemShirtAssetNoFalseMaterial override for replacement mesh
ProboolItemAssetNoFalsePRO/Gold gating
Bypass_ID_LimitboolItemAssetNo-Bypass ID limit for high IDs
Proof_WaterboolItemClothingAssetNo-Water damage immunity
Proof_FireboolItemClothingAssetNo-Fire damage immunity
Proof_RadiationboolItemClothingAssetNo-Radiation damage immunity

Appendix B: Shirt storage grid comparison table

WidthHeightTotal slotsExample use case
000Cosmetic-only shirt
4312Light duty top - Construction_Top
5210Utility top - Biohazard_Top, Diving_Top
5315Standard duty top - Chef_Top, Engineer_Top
6318Patrol top - Coalition_Top_Captain, Rain_Jacket
5315Shorts - Cargo_Shorts

Appendix C: External references

Cross-references

Document history

VersionDateAuthorNotes
1.02026-07-2657 StudiosInitial publication. Complete shirt asset field reference, Armor mechanics, Width/Height storage grid, Ignore_Hand flag, character mesh replacement, diagnostic tables, worked examples.