Penumbra/schemas/container.json
2025-01-17 01:45:37 +01:00

486 lines
16 KiB
JSON

{
"$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"]
}
}
}