{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/xivdev/Penumbra/master/schemas/container.json", "type": "object", "properties": { "Name": { "description": "Name of the container/option/sub-mod.", "type": ["string", "null"] }, "Files": { "description": "File redirections in this container. Keys are game paths, values are relative file paths.", "type": "object", "patternProperties": { "^[^/\\\\][^\\\\]*$": { "type": "string", "pattern": "^[^/\\\\][^/]*$" } }, "additionalProperties": false }, "FileSwaps": { "description": "File swaps in this container. Keys are original game paths, values are actual game paths.", "type": "object", "patternProperties": { "^[^/\\\\][^\\\\]*$": { "type": "string", "pattern": "^[^/\\\\][^/]*$" } }, "additionalProperties": false }, "Manipulations": { "type": "array", "items": { "$ref": "#/$defs/Manipulation" } } }, "$defs": { "Manipulation": { "type": "object", "properties": { "Type": { "enum": ["Unknown", "Imc", "Eqdp", "Eqp", "Est", "Gmp", "Rsp", "GlobalEqp", "Atch"] }, "Manipulation": { "type": ["object", "null"] } }, "required": ["Type", "Manipulation"], "oneOf": [ { "properties": { "Type": { "const": "Unknown" }, "Manipulation": { "type": "null" } } }, { "properties": { "Type": { "const": "Imc" }, "Manipulation": { "$ref": "#/$defs/ImcManipulation" } } }, { "properties": { "Type": { "const": "Eqdp" }, "Manipulation": { "$ref": "#/$defs/EqdpManipulation" } } }, { "properties": { "Type": { "const": "Eqp" }, "Manipulation": { "$ref": "#/$defs/EqpManipulation" } } }, { "properties": { "Type": { "const": "Est" }, "Manipulation": { "$ref": "#/$defs/EstManipulation" } } }, { "properties": { "Type": { "const": "Gmp" }, "Manipulation": { "$ref": "#/$defs/GmpManipulation" } } }, { "properties": { "Type": { "const": "Rsp" }, "Manipulation": { "$ref": "#/$defs/RspManipulation" } } }, { "properties": { "Type": { "const": "GlobalEqp" }, "Manipulation": { "$ref": "#/$defs/GlobalEqpManipulation" } } }, { "properties": { "Type": { "const": "Atch" }, "Manipulation": { "$ref": "#/$defs/AtchManipulation" } } } ], "additionalProperties": false }, "ImcManipulation": { "type": "object", "properties": { "Entry": { "$ref": "#/$defs/ImcEntry" }, "Valid": { "type": "boolean" } }, "required": [ "Entry" ], "allOf": [ { "$ref": "#/$defs/ImcIdentifier" } ], "unevaluatedProperties": false }, "ImcIdentifier": { "type": "object", "properties": { "PrimaryId": { "type": "integer" }, "SecondaryId": { "type": "integer" }, "Variant": { "type": "integer" }, "ObjectType": { "$ref": "#/$defs/ObjectType" }, "EquipSlot": { "$ref": "#/$defs/EquipSlot" }, "BodySlot": { "$ref": "#/$defs/BodySlot" } }, "required": [ "PrimaryId", "SecondaryId", "Variant", "ObjectType", "EquipSlot", "BodySlot" ] }, "ImcEntry": { "type": "object", "properties": { "AttributeAndSound": { "type": "integer" }, "MaterialId": { "type": "integer" }, "DecalId": { "type": "integer" }, "VfxId": { "type": "integer" }, "MaterialAnimationId": { "type": "integer" }, "AttributeMask": { "type": "integer" }, "SoundId": { "type": "integer" } }, "required": [ "MaterialId", "DecalId", "VfxId", "MaterialAnimationId", "AttributeMask", "SoundId" ], "additionalProperties": false }, "EqdpManipulation": { "type": "object", "properties": { "Entry": { "type": "integer" }, "Gender": { "$ref": "#/$defs/Gender" }, "Race": { "$ref": "#/$defs/ModelRace" }, "SetId": { "$ref": "#/$defs/LaxInteger" }, "Slot": { "$ref": "#/$defs/EquipSlot" }, "ShiftedEntry": { "type": "integer" } }, "required": [ "Entry", "Gender", "Race", "SetId", "Slot" ], "additionalProperties": false }, "EqpManipulation": { "type": "object", "properties": { "Entry": { "type": "integer" }, "SetId": { "$ref": "#/$defs/LaxInteger" }, "Slot": { "$ref": "#/$defs/EquipSlot" } }, "required": [ "Entry", "SetId", "Slot" ], "additionalProperties": false }, "EstManipulation": { "type": "object", "properties": { "Entry": { "type": "integer" }, "Gender": { "$ref": "#/$defs/Gender" }, "Race": { "$ref": "#/$defs/ModelRace" }, "SetId": { "$ref": "#/$defs/LaxInteger" }, "Slot": { "enum": ["Hair", "Face", "Body", "Head"] } }, "required": [ "Entry", "Gender", "Race", "SetId", "Slot" ], "additionalProperties": false }, "GmpManipulation": { "type": "object", "properties": { "Entry": { "type": "object", "properties": { "Enabled": { "type": "boolean" }, "Animated": { "type": "boolean" }, "RotationA": { "type": "number" }, "RotationB": { "type": "number" }, "RotationC": { "type": "number" }, "UnknownA": { "type": "number" }, "UnknownB": { "type": "number" }, "UnknownTotal": { "type": "number" }, "Value": { "type": "number" } }, "required": [ "Enabled", "Animated", "RotationA", "RotationB", "RotationC", "UnknownA", "UnknownB", "UnknownTotal", "Value" ], "additionalProperties": false }, "SetId": { "$ref": "#/$defs/LaxInteger" } }, "required": [ "Entry", "SetId" ], "additionalProperties": false }, "RspManipulation": { "type": "object", "properties": { "Entry": { "type": "number" }, "SubRace": { "$ref": "#/$defs/SubRace" }, "Attribute": { "$ref": "#/$defs/RspAttribute" } }, "additionalProperties": false }, "GlobalEqpManipulation": { "type": "object", "properties": { "Condition": { "type": "integer" }, "Type": { "enum": ["DoNotHideEarrings", "DoNotHideNecklace", "DoNotHideBracelets", "DoNotHideRingR", "DoNotHideRingL", "DoNotHideHrothgarHats", "DoNotHideVieraHats"] } }, "additionalProperties": false }, "AtchManipulation": { "type": "object", "properties": { "Entry": { "type": "object", "properties": { "Bone": { "type": "string", "maxLength": 34 }, "Scale": { "type": "number" }, "OffsetX": { "type": "number" }, "OffsetY": { "type": "number" }, "OffsetZ": { "type": "number" }, "RotationX": { "type": "number" }, "RotationY": { "type": "number" }, "RotationZ": { "type": "number" } }, "required": [ "Bone", "Scale", "OffsetX", "OffsetY", "OffsetZ", "RotationX", "RotationY", "RotationZ" ], "additionalProperties": false }, "Gender": { "$ref": "#/$defs/Gender" }, "Race": { "$ref": "#/$defs/ModelRace" }, "Type": { "type": "string", "minLength": 3, "maxLength": 3 }, "Index": { "type": "integer" } }, "required": [ "Entry", "Gender", "Race", "Type", "Index" ], "additionalProperties": false }, "LaxInteger": { "oneOf": [ { "type": "integer" }, { "type": "string", "pattern": "^\\d+$" } ] }, "EquipSlot": { "enum": ["Unknown", "MainHand", "OffHand", "Head", "Body", "Hands", "Belt", "Legs", "Feet", "Ears", "Neck", "Wrists", "RFinger", "BothHand", "LFinger", "HeadBody", "BodyHandsLegsFeet", "SoulCrystal", "LegsFeet", "FullBody", "BodyHands", "BodyLegsFeet", "ChestHands", "Nothing", "All"] }, "Gender": { "enum": ["Unknown", "Male", "Female", "MaleNpc", "FemaleNpc"] }, "ModelRace": { "enum": ["Unknown", "Midlander", "Highlander", "Elezen", "Lalafell", "Miqote", "Roegadyn", "AuRa", "Hrothgar", "Viera"] }, "ObjectType": { "enum": ["Unknown", "Vfx", "DemiHuman", "Accessory", "World", "Housing", "Monster", "Icon", "LoadingScreen", "Map", "Interface", "Equipment", "Character", "Weapon", "Font"] }, "BodySlot": { "enum": ["Unknown", "Hair", "Face", "Tail", "Body", "Zear"] }, "SubRace": { "enum": ["Unknown", "Midlander", "Highlander", "Wildwood", "Duskwight", "Plainsfolk", "Dunesfolk", "SeekerOfTheSun", "KeeperOfTheMoon", "Seawolf", "Hellsguard", "Raen", "Xaela", "Helion", "Lost", "Rava", "Veena"] }, "RspAttribute": { "enum": ["MaleMinSize", "MaleMaxSize", "MaleMinTail", "MaleMaxTail", "FemaleMinSize", "FemaleMaxSize", "FemaleMinTail", "FemaleMaxTail", "BustMinX", "BustMinY", "BustMinZ", "BustMaxX", "BustMaxY", "BustMaxZ"] } } }