mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 10:17:22 +01:00
update schema organization anf change some things.
This commit is contained in:
parent
5f8377acaa
commit
ec3ec7db4e
22 changed files with 796 additions and 676 deletions
32
Penumbra.sln
32
Penumbra.sln
|
|
@ -24,6 +24,34 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Penumbra.String", "Penumbra
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Penumbra.CrashHandler", "Penumbra.CrashHandler\Penumbra.CrashHandler.csproj", "{EE834491-A98F-4395-BE0D-6861AE5AD953}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Penumbra.CrashHandler", "Penumbra.CrashHandler\Penumbra.CrashHandler.csproj", "{EE834491-A98F-4395-BE0D-6861AE5AD953}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Schemas", "Schemas", "{BFEA7504-1210-4F79-A7FE-BF03B6567E33}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
schemas\files\default_mod.json = schemas\files\default_mod.json
|
||||||
|
schemas\files\group.json = schemas\files\group.json
|
||||||
|
schemas\files\local_mod_data-v3.json = schemas\files\local_mod_data-v3.json
|
||||||
|
schemas\files\mod_meta-v3.json = schemas\files\mod_meta-v3.json
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "structs", "structs", "{B03F276A-0572-4F62-AF86-EF62F6B80463}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
schemas\structs\container.json = schemas\structs\container.json
|
||||||
|
schemas\structs\group_combining.json = schemas\structs\group_combining.json
|
||||||
|
schemas\structs\group_imc.json = schemas\structs\group_imc.json
|
||||||
|
schemas\structs\group_multi.json = schemas\structs\group_multi.json
|
||||||
|
schemas\structs\group_single.json = schemas\structs\group_single.json
|
||||||
|
schemas\structs\manipulation.json = schemas\structs\manipulation.json
|
||||||
|
schemas\structs\meta_atch.json = schemas\structs\meta_atch.json
|
||||||
|
schemas\structs\meta_enums.json = schemas\structs\meta_enums.json
|
||||||
|
schemas\structs\meta_eqdp.json = schemas\structs\meta_eqdp.json
|
||||||
|
schemas\structs\meta_eqp.json = schemas\structs\meta_eqp.json
|
||||||
|
schemas\structs\meta_est.json = schemas\structs\meta_est.json
|
||||||
|
schemas\structs\meta_geqp.json = schemas\structs\meta_geqp.json
|
||||||
|
schemas\structs\meta_gmp.json = schemas\structs\meta_gmp.json
|
||||||
|
schemas\structs\meta_imc.json = schemas\structs\meta_imc.json
|
||||||
|
schemas\structs\meta_rsp.json = schemas\structs\meta_rsp.json
|
||||||
|
schemas\structs\option.json = schemas\structs\option.json
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
|
@ -58,6 +86,10 @@ Global
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
|
GlobalSection(NestedProjects) = preSolution
|
||||||
|
{BFEA7504-1210-4F79-A7FE-BF03B6567E33} = {F89C9EAE-25C8-43BE-8108-5921E5A93502}
|
||||||
|
{B03F276A-0572-4F62-AF86-EF62F6B80463} = {BFEA7504-1210-4F79-A7FE-BF03B6567E33}
|
||||||
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {B17E85B1-5F60-4440-9F9A-3DDE877E8CDF}
|
SolutionGuid = {B17E85B1-5F60-4440-9F9A-3DDE877E8CDF}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
|
|
|
||||||
|
|
@ -1,486 +0,0 @@
|
||||||
{
|
|
||||||
"$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"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,25 +1,19 @@
|
||||||
{
|
{
|
||||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
"$id": "https://raw.githubusercontent.com/xivdev/Penumbra/master/schemas/container.json",
|
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"Version": {
|
"Version": {
|
||||||
"description": "???",
|
"description": "Mod Container version, currently unused.",
|
||||||
"type": ["integer", "null"]
|
"type": "integer",
|
||||||
},
|
"minimum": 0,
|
||||||
"Description": {
|
"maximum": 0
|
||||||
"description": "Description of the sub-mod.",
|
|
||||||
"type": ["string", "null"]
|
|
||||||
},
|
|
||||||
"Image": {
|
|
||||||
"description": "Unused by Penumbra.",
|
|
||||||
"type": ["string", "null"]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, {
|
},
|
||||||
"$ref": "https://raw.githubusercontent.com/xivdev/Penumbra/master/schemas/container.json"
|
{
|
||||||
|
"$ref": "structs/container.json"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,35 +1,35 @@
|
||||||
{
|
{
|
||||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
"$id": "https://raw.githubusercontent.com/xivdev/Penumbra/master/schemas/group.json",
|
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"Version": {
|
"Version": {
|
||||||
"description": "???",
|
"description": "Mod Container version, currently unused.",
|
||||||
"type": ["integer", "null"]
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"Name": {
|
"Name": {
|
||||||
"description": "Name of the group.",
|
"description": "Name of the group.",
|
||||||
"type": "string"
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
},
|
},
|
||||||
"Description": {
|
"Description": {
|
||||||
"description": "Description of the group.",
|
"description": "Description of the group.",
|
||||||
"type": ["string", "null"]
|
"type": [ "string", "null" ]
|
||||||
},
|
},
|
||||||
"Image": {
|
"Image": {
|
||||||
"description": "Relative path to a preview image for the group. Unused by Penumbra, present for round-trip import/export of TexTools-generated mods.",
|
"description": "Relative path to a preview image for the group. Unused by Penumbra, present for round-trip import/export of TexTools-generated mods.",
|
||||||
"type": ["string", "null"]
|
"type": ["string", "null" ]
|
||||||
},
|
},
|
||||||
"Page": {
|
"Page": {
|
||||||
"description": "TexTools page of the group. Unused by Penumbra, present for round-trip import/export of TexTools-generated mods.",
|
"description": "TexTools page of the group. Unused by Penumbra, present for round-trip import/export of TexTools-generated mods.",
|
||||||
"type": ["integer", "null"]
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"Priority": {
|
"Priority": {
|
||||||
"description": "Priority of the group. If several groups define conflicting files or manipulations, the highest priority wins.",
|
"description": "Priority of the group. If several groups define conflicting files or manipulations, the highest priority wins.",
|
||||||
"type": ["integer", "null"]
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"Type": {
|
"Type": {
|
||||||
"description": "Group type. Single groups have one and only one of their options active at any point. Multi groups can have zero, one or many of their options active. Combining groups have n options, 2^n containers, and will have one and only one container active depending on the selected options.",
|
"description": "Group type. Single groups have one and only one of their options active at any point. Multi groups can have zero, one or many of their options active. Combining groups have n options, 2^n containers, and will have one and only one container active depending on the selected options.",
|
||||||
"enum": ["Single", "Multi", "Imc", "Combining"]
|
"enum": [ "Single", "Multi", "Imc", "Combining" ]
|
||||||
},
|
},
|
||||||
"DefaultSettings": {
|
"DefaultSettings": {
|
||||||
"description": "Default configuration for the group.",
|
"description": "Default configuration for the group.",
|
||||||
|
|
@ -42,165 +42,16 @@
|
||||||
],
|
],
|
||||||
"oneOf": [
|
"oneOf": [
|
||||||
{
|
{
|
||||||
"properties": {
|
"$ref": "structs/group_combining.json"
|
||||||
"Type": {
|
|
||||||
"const": "Single"
|
|
||||||
},
|
},
|
||||||
"Options": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"allOf": [
|
|
||||||
{
|
{
|
||||||
"type": "object",
|
"$ref": "structs/group_imc.json"
|
||||||
"properties": {
|
|
||||||
"Description": {
|
|
||||||
"description": "Description of the option.",
|
|
||||||
"type": ["string", "null"]
|
|
||||||
},
|
},
|
||||||
"Image": {
|
|
||||||
"description": "Unused by Penumbra.",
|
|
||||||
"type": ["string", "null"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
"$ref": "https://raw.githubusercontent.com/xivdev/Penumbra/master/schemas/container.json"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
"properties": {
|
|
||||||
"Type": {
|
|
||||||
"const": "Multi"
|
|
||||||
},
|
|
||||||
"Options": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"allOf": [
|
|
||||||
{
|
{
|
||||||
"type": "object",
|
"$ref": "structs/group_multi.json"
|
||||||
"properties": {
|
|
||||||
"Description": {
|
|
||||||
"description": "Description of the option.",
|
|
||||||
"type": ["string", "null"]
|
|
||||||
},
|
},
|
||||||
"Priority": {
|
|
||||||
"description": "Priority of the option. If several enabled options within the group define conflicting files or manipulations, the highest priority wins.",
|
|
||||||
"type": ["integer", "null"]
|
|
||||||
},
|
|
||||||
"Image": {
|
|
||||||
"description": "Unused by Penumbra.",
|
|
||||||
"type": ["string", "null"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
"$ref": "https://raw.githubusercontent.com/xivdev/Penumbra/master/schemas/container.json"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
"properties": {
|
|
||||||
"Type": {
|
|
||||||
"const": "Imc"
|
|
||||||
},
|
|
||||||
"AllVariants": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"OnlyAttributes": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"Identifier": {
|
|
||||||
"$ref": "https://raw.githubusercontent.com/xivdev/Penumbra/master/schemas/container.json#/$defs/ImcIdentifier"
|
|
||||||
},
|
|
||||||
"DefaultEntry": {
|
|
||||||
"$ref": "https://raw.githubusercontent.com/xivdev/Penumbra/master/schemas/container.json#/$defs/ImcEntry"
|
|
||||||
},
|
|
||||||
"Options": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"Name": {
|
|
||||||
"description": "Name of the option.",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"Description": {
|
|
||||||
"description": "Description of the option.",
|
|
||||||
"type": ["string", "null"]
|
|
||||||
},
|
|
||||||
"Image": {
|
|
||||||
"description": "Unused by Penumbra.",
|
|
||||||
"type": ["string", "null"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"Name"
|
|
||||||
],
|
|
||||||
"oneOf": [
|
|
||||||
{
|
{
|
||||||
"properties": {
|
"$ref": "structs/group_single.json"
|
||||||
"AttributeMask": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"AttributeMask"
|
|
||||||
]
|
]
|
||||||
}, {
|
|
||||||
"properties": {
|
|
||||||
"IsDisableSubMod": {
|
|
||||||
"const": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"IsDisableSubMod"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"unevaluatedProperties": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
"properties": {
|
|
||||||
"Type": {
|
|
||||||
"const": "Combining"
|
|
||||||
},
|
|
||||||
"Options": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"Name": {
|
|
||||||
"description": "Name of the option.",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"Description": {
|
|
||||||
"description": "Description of the option.",
|
|
||||||
"type": ["string", "null"]
|
|
||||||
},
|
|
||||||
"Image": {
|
|
||||||
"description": "Unused by Penumbra.",
|
|
||||||
"type": ["string", "null"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"Name"
|
|
||||||
],
|
|
||||||
"additionalProperties": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Containers": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"$ref": "https://raw.githubusercontent.com/xivdev/Penumbra/master/schemas/container.json"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"unevaluatedProperties": false
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
32
schemas/local_mod_data-v3.json
Normal file
32
schemas/local_mod_data-v3.json
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"title": "Local Penumbra Mod Data",
|
||||||
|
"description": "The locally stored data for an installed mod in Penumbra",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"FileVersion": {
|
||||||
|
"description": "Major version of the local data schema used.",
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 3,
|
||||||
|
"maximum": 3
|
||||||
|
},
|
||||||
|
"ImportDate": {
|
||||||
|
"description": "The date and time of the installation of the mod as a Unix Epoch millisecond timestamp.",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"LocalTags": {
|
||||||
|
"description": "User-defined local tags for the mod.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
|
"uniqueItems": true
|
||||||
|
},
|
||||||
|
"Favorite": {
|
||||||
|
"description": "Whether the mod is favourited by the user.",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [ "FileVersion" ]
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
{
|
{
|
||||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
"$id": "https://raw.githubusercontent.com/xivdev/Penumbra/master/schemas/meta-v3.json",
|
|
||||||
"title": "Penumbra Mod Metadata",
|
"title": "Penumbra Mod Metadata",
|
||||||
"description": "Metadata of a Penumbra mod.",
|
"description": "Metadata of a Penumbra mod.",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
|
@ -13,33 +12,35 @@
|
||||||
},
|
},
|
||||||
"Name": {
|
"Name": {
|
||||||
"description": "Name of the mod.",
|
"description": "Name of the mod.",
|
||||||
"type": "string"
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
},
|
},
|
||||||
"Author": {
|
"Author": {
|
||||||
"description": "Author of the mod.",
|
"description": "Author of the mod.",
|
||||||
"type": ["string", "null"]
|
"type": [ "string", "null" ]
|
||||||
},
|
},
|
||||||
"Description": {
|
"Description": {
|
||||||
"description": "Description of the mod. Can span multiple paragraphs.",
|
"description": "Description of the mod. Can span multiple paragraphs.",
|
||||||
"type": ["string", "null"]
|
"type": [ "string", "null" ]
|
||||||
},
|
},
|
||||||
"Image": {
|
"Image": {
|
||||||
"description": "Relative path to a preview image for the mod. Unused by Penumbra, present for round-trip import/export of TexTools-generated mods.",
|
"description": "Relative path to a preview image for the mod. Unused by Penumbra, present for round-trip import/export of TexTools-generated mods.",
|
||||||
"type": ["string", "null"]
|
"type": [ "string", "null" ]
|
||||||
},
|
},
|
||||||
"Version": {
|
"Version": {
|
||||||
"description": "Version of the mod. Can be an arbitrary string.",
|
"description": "Version of the mod. Can be an arbitrary string.",
|
||||||
"type": ["string", "null"]
|
"type": [ "string", "null" ]
|
||||||
},
|
},
|
||||||
"Website": {
|
"Website": {
|
||||||
"description": "URL of the web page of the mod.",
|
"description": "URL of the web page of the mod.",
|
||||||
"type": ["string", "null"]
|
"type": [ "string", "null" ]
|
||||||
},
|
},
|
||||||
"ModTags": {
|
"ModTags": {
|
||||||
"description": "Author-defined tags for the mod.",
|
"description": "Author-defined tags for the mod.",
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"type": "string"
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
},
|
},
|
||||||
"uniqueItems": true
|
"uniqueItems": true
|
||||||
}
|
}
|
||||||
34
schemas/structs/container.json
Normal file
34
schemas/structs/container.json
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Files": {
|
||||||
|
"description": "File redirections in this container. Keys are game paths, values are relative file paths.",
|
||||||
|
"type": [ "object", "null" ],
|
||||||
|
"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", "null" ],
|
||||||
|
"patternProperties": {
|
||||||
|
"^[^/\\\\.?:][^\\\\?:]+$": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^[^/\\\\.:?][^?:]+$"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"Manipulations": {
|
||||||
|
"type": [ "array", "null" ],
|
||||||
|
"items": {
|
||||||
|
"$ref": "manipulation.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
31
schemas/structs/group_combining.json
Normal file
31
schemas/structs/group_combining.json
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": "Combining"
|
||||||
|
},
|
||||||
|
"Options": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "option.json"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Containers": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "container.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Name": {
|
||||||
|
"type": [ "string", "null" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
50
schemas/structs/group_imc.json
Normal file
50
schemas/structs/group_imc.json
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": "Imc"
|
||||||
|
},
|
||||||
|
"AllVariants": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"OnlyAttributes": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"Identifier": {
|
||||||
|
"$ref": "meta_imc.json#ImcIdentifier"
|
||||||
|
},
|
||||||
|
"DefaultEntry": {
|
||||||
|
"$ref": "meta_imc.json#ImcEntry"
|
||||||
|
},
|
||||||
|
"Options": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "option.json",
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"AttributeMask": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 1023
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"AttributeMask"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"IsDisableSubMod": {
|
||||||
|
"const": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"IsDisableSubMod"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
32
schemas/structs/group_multi.json
Normal file
32
schemas/structs/group_multi.json
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": "Multi"
|
||||||
|
},
|
||||||
|
"Options": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "option.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "container.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Priority": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
22
schemas/structs/group_single.json
Normal file
22
schemas/structs/group_single.json
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": "Single"
|
||||||
|
},
|
||||||
|
"Options": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "option.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "container.json"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
95
schemas/structs/manipulation.json
Normal file
95
schemas/structs/manipulation.json
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"enum": [ "Unknown", "Imc", "Eqdp", "Eqp", "Est", "Gmp", "Rsp", "GlobalEqp", "Atch" ]
|
||||||
|
},
|
||||||
|
"Manipulation": {
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [ "Type", "Manipulation" ],
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": "Imc"
|
||||||
|
},
|
||||||
|
"Manipulation": {
|
||||||
|
"$ref": "meta_imc.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": "Eqdp"
|
||||||
|
},
|
||||||
|
"Manipulation": {
|
||||||
|
"$ref": "meta_eqdp.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": "Eqp"
|
||||||
|
},
|
||||||
|
"Manipulation": {
|
||||||
|
"$ref": "meta_eqp.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": "Est"
|
||||||
|
},
|
||||||
|
"Manipulation": {
|
||||||
|
"$ref": "meta_est.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": "Gmp"
|
||||||
|
},
|
||||||
|
"Manipulation": {
|
||||||
|
"$ref": "meta_gmp.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": "Rsp"
|
||||||
|
},
|
||||||
|
"Manipulation": {
|
||||||
|
"$ref": "meta_rsp.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": "GlobalEqp"
|
||||||
|
},
|
||||||
|
"Manipulation": {
|
||||||
|
"$ref": "meta_geqp.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": "Atch"
|
||||||
|
},
|
||||||
|
"Manipulation": {
|
||||||
|
"$ref": "meta_atch.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
67
schemas/structs/meta_atch.json
Normal file
67
schemas/structs/meta_atch.json
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"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"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Gender": {
|
||||||
|
"$ref": "meta_enums.json#Gender"
|
||||||
|
},
|
||||||
|
"Race": {
|
||||||
|
"$ref": "meta_enums.json#ModelRace"
|
||||||
|
},
|
||||||
|
"Type": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 4
|
||||||
|
},
|
||||||
|
"Index": {
|
||||||
|
"$ref": "meta_enums.json#U16"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"Entry",
|
||||||
|
"Gender",
|
||||||
|
"Race",
|
||||||
|
"Type",
|
||||||
|
"Index"
|
||||||
|
]
|
||||||
|
}
|
||||||
57
schemas/structs/meta_enums.json
Normal file
57
schemas/structs/meta_enums.json
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"$defs": {
|
||||||
|
"EquipSlot": {
|
||||||
|
"$anchor": "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": {
|
||||||
|
"$anchor": "Gender",
|
||||||
|
"enum": [ "Unknown", "Male", "Female", "MaleNpc", "FemaleNpc" ]
|
||||||
|
},
|
||||||
|
"ModelRace": {
|
||||||
|
"$anchor": "ModelRace",
|
||||||
|
"enum": [ "Unknown", "Midlander", "Highlander", "Elezen", "Lalafell", "Miqote", "Roegadyn", "AuRa", "Hrothgar", "Viera" ]
|
||||||
|
},
|
||||||
|
"ObjectType": {
|
||||||
|
"$anchor": "ObjectType",
|
||||||
|
"enum": [ "Unknown", "Vfx", "DemiHuman", "Accessory", "World", "Housing", "Monster", "Icon", "LoadingScreen", "Map", "Interface", "Equipment", "Character", "Weapon", "Font" ]
|
||||||
|
},
|
||||||
|
"BodySlot": {
|
||||||
|
"$anchor": "BodySlot",
|
||||||
|
"enum": [ "Unknown", "Hair", "Face", "Tail", "Body", "Zear" ]
|
||||||
|
},
|
||||||
|
"SubRace": {
|
||||||
|
"$anchor": "SubRace",
|
||||||
|
"enum": [ "Unknown", "Midlander", "Highlander", "Wildwood", "Duskwight", "Plainsfolk", "Dunesfolk", "SeekerOfTheSun", "KeeperOfTheMoon", "Seawolf", "Hellsguard", "Raen", "Xaela", "Helion", "Lost", "Rava", "Veena" ]
|
||||||
|
},
|
||||||
|
"U8": {
|
||||||
|
"$anchor": "U8",
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 255
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^0*(1[0-9][0-9]|[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"U16": {
|
||||||
|
"$anchor": "U16",
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 65535
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^0*([1-5][0-9]{4}|[0-9]{0,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
30
schemas/structs/meta_eqdp.json
Normal file
30
schemas/structs/meta_eqdp.json
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Entry": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 1023
|
||||||
|
},
|
||||||
|
"Gender": {
|
||||||
|
"$ref": "meta_enums.json#Gender"
|
||||||
|
},
|
||||||
|
"Race": {
|
||||||
|
"$ref": "meta_enums.json#ModelRace"
|
||||||
|
},
|
||||||
|
"SetId": {
|
||||||
|
"$ref": "meta_enums.json#U16"
|
||||||
|
},
|
||||||
|
"Slot": {
|
||||||
|
"$ref": "meta_enums.json#EquipSlot"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"Entry",
|
||||||
|
"Gender",
|
||||||
|
"Race",
|
||||||
|
"SetId",
|
||||||
|
"Slot"
|
||||||
|
]
|
||||||
|
}
|
||||||
20
schemas/structs/meta_eqp.json
Normal file
20
schemas/structs/meta_eqp.json
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Entry": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"SetId": {
|
||||||
|
"$ref": "meta_enums.json#U16"
|
||||||
|
},
|
||||||
|
"Slot": {
|
||||||
|
"$ref": "meta_enums.json#EquipSlot"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"Entry",
|
||||||
|
"SetId",
|
||||||
|
"Slot"
|
||||||
|
]
|
||||||
|
}
|
||||||
28
schemas/structs/meta_est.json
Normal file
28
schemas/structs/meta_est.json
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Entry": {
|
||||||
|
"$ref": "meta_enums.json#U16"
|
||||||
|
},
|
||||||
|
"Gender": {
|
||||||
|
"$ref": "meta_enums.json#Gender"
|
||||||
|
},
|
||||||
|
"Race": {
|
||||||
|
"$ref": "meta_enums.json#ModelRace"
|
||||||
|
},
|
||||||
|
"SetId": {
|
||||||
|
"$ref": "meta_enums.json#U16"
|
||||||
|
},
|
||||||
|
"Slot": {
|
||||||
|
"enum": [ "Hair", "Face", "Body", "Head" ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"Entry",
|
||||||
|
"Gender",
|
||||||
|
"Race",
|
||||||
|
"SetId",
|
||||||
|
"Slot"
|
||||||
|
]
|
||||||
|
}
|
||||||
40
schemas/structs/meta_geqp.json
Normal file
40
schemas/structs/meta_geqp.json
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Condition": {
|
||||||
|
"$ref": "meta_enums.json#U16"
|
||||||
|
},
|
||||||
|
"Type": {
|
||||||
|
"enum": [ "DoNotHideEarrings", "DoNotHideNecklace", "DoNotHideBracelets", "DoNotHideRingR", "DoNotHideRingL", "DoNotHideHrothgarHats", "DoNotHideVieraHats" ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [ "Type" ],
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": [ "DoNotHideHrothgarHats", "DoNotHideVieraHats" ]
|
||||||
|
},
|
||||||
|
"Condition": {
|
||||||
|
"const": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": [ "DoNotHideHrothgarHats", "DoNotHideVieraHats" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Type": {
|
||||||
|
"const": [ "DoNotHideEarrings", "DoNotHideNecklace", "DoNotHideBracelets", "DoNotHideRingR", "DoNotHideRingL" ]
|
||||||
|
},
|
||||||
|
"Condition": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
59
schemas/structs/meta_gmp.json
Normal file
59
schemas/structs/meta_gmp.json
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Entry": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Enabled": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"Animated": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"RotationA": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 1023
|
||||||
|
},
|
||||||
|
"RotationB": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 1023
|
||||||
|
},
|
||||||
|
"RotationC": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 1023
|
||||||
|
},
|
||||||
|
"UnknownA": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 15
|
||||||
|
},
|
||||||
|
"UnknownB": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 15
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"Enabled",
|
||||||
|
"Animated",
|
||||||
|
"RotationA",
|
||||||
|
"RotationB",
|
||||||
|
"RotationC",
|
||||||
|
"UnknownA",
|
||||||
|
"UnknownB"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"SetId": {
|
||||||
|
"$ref": "meta_enums.json#U16"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"Entry",
|
||||||
|
"SetId"
|
||||||
|
]
|
||||||
|
}
|
||||||
87
schemas/structs/meta_imc.json
Normal file
87
schemas/structs/meta_imc.json
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Entry": {
|
||||||
|
"$ref": "#ImcEntry"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"Entry"
|
||||||
|
],
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#ImcIdentifier"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"$defs": {
|
||||||
|
"ImcIdentifier": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"PrimaryId": {
|
||||||
|
"$ref": "meta_enums.json#U16"
|
||||||
|
},
|
||||||
|
"SecondaryId": {
|
||||||
|
"$ref": "meta_enums.json#U16"
|
||||||
|
},
|
||||||
|
"Variant": {
|
||||||
|
"$ref": "meta_enums.json#U8"
|
||||||
|
},
|
||||||
|
"ObjectType": {
|
||||||
|
"$ref": "meta_enums.json#ObjectType"
|
||||||
|
},
|
||||||
|
"EquipSlot": {
|
||||||
|
"$ref": "meta_enums.json#EquipSlot"
|
||||||
|
},
|
||||||
|
"BodySlot": {
|
||||||
|
"$ref": "meta_enums.json#BodySlot"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$anchor": "ImcIdentifier",
|
||||||
|
"required": [
|
||||||
|
"PrimaryId",
|
||||||
|
"SecondaryId",
|
||||||
|
"Variant",
|
||||||
|
"ObjectType",
|
||||||
|
"EquipSlot",
|
||||||
|
"BodySlot"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ImcEntry": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"MaterialId": {
|
||||||
|
"$ref": "meta_enums.json#U8"
|
||||||
|
},
|
||||||
|
"DecalId": {
|
||||||
|
"$ref": "meta_enums.json#U8"
|
||||||
|
},
|
||||||
|
"VfxId": {
|
||||||
|
"$ref": "meta_enums.json#U8"
|
||||||
|
},
|
||||||
|
"MaterialAnimationId": {
|
||||||
|
"$ref": "meta_enums.json#U8"
|
||||||
|
},
|
||||||
|
"AttributeMask": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 1023
|
||||||
|
},
|
||||||
|
"SoundId": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 63
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$anchor": "ImcEntry",
|
||||||
|
"required": [
|
||||||
|
"MaterialId",
|
||||||
|
"DecalId",
|
||||||
|
"VfxId",
|
||||||
|
"MaterialAnimationId",
|
||||||
|
"AttributeMask",
|
||||||
|
"SoundId"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
20
schemas/structs/meta_rsp.json
Normal file
20
schemas/structs/meta_rsp.json
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Entry": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"SubRace": {
|
||||||
|
"$ref": "meta_enums.json#SubRace"
|
||||||
|
},
|
||||||
|
"Attribute": {
|
||||||
|
"enum": [ "MaleMinSize", "MaleMaxSize", "MaleMinTail", "MaleMaxTail", "FemaleMinSize", "FemaleMaxSize", "FemaleMinTail", "FemaleMaxTail", "BustMinX", "BustMinY", "BustMinZ", "BustMaxX", "BustMaxY", "BustMaxZ" ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"Entry",
|
||||||
|
"SubRace",
|
||||||
|
"Attribute"
|
||||||
|
]
|
||||||
|
}
|
||||||
24
schemas/structs/option.json
Normal file
24
schemas/structs/option.json
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Name": {
|
||||||
|
"description": "Name of the option.",
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
|
"Description": {
|
||||||
|
"description": "Description of the option.",
|
||||||
|
"type": [ "string", "null" ]
|
||||||
|
},
|
||||||
|
"Priority": {
|
||||||
|
"description": "Priority of the option. If several enabled options within the group define conflicting files or manipulations, the highest priority wins.",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"Image": {
|
||||||
|
"description": "Unused by Penumbra.",
|
||||||
|
"type": [ "string", "null" ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [ "Name" ]
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue