mirror of
https://github.com/xivdev/Penumbra.git
synced 2026-02-20 14:57:50 +01:00
Add drafts of JSON schemas
This commit is contained in:
parent
df148b556a
commit
a1931a93fb
4 changed files with 768 additions and 0 deletions
486
schemas/container.json
Normal file
486
schemas/container.json
Normal file
|
|
@ -0,0 +1,486 @@
|
|||
{
|
||||
"$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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue