@cobbled-creators/cobblemon-schemas 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +68 -0
  3. package/bin/cobblemon-schemas.mjs +51 -0
  4. package/dist/bundle.json +1 -0
  5. package/dist/validators.mjs +3 -0
  6. package/package.json +66 -0
  7. package/schemas/_shared/common.schema.json +89 -0
  8. package/schemas/_shared/defs/collections.schema.json +32 -0
  9. package/schemas/_shared/defs/drops.schema.json +89 -0
  10. package/schemas/_shared/defs/expressions.schema.json +82 -0
  11. package/schemas/_shared/defs/identifiers.schema.json +24 -0
  12. package/schemas/_shared/defs/npc.schema.json +76 -0
  13. package/schemas/_shared/defs/pokemon.schema.json +41 -0
  14. package/schemas/_shared/defs/ranges.schema.json +70 -0
  15. package/schemas/_shared/defs/ride.schema.json +77 -0
  16. package/schemas/_shared/defs/spawning.schema.json +183 -0
  17. package/schemas/_shared/defs/vectors.schema.json +44 -0
  18. package/schemas/action_effects/schema.json +123 -0
  19. package/schemas/bedrock_pokemon_resolvers/schema.json +184 -0
  20. package/schemas/bedrock_posers/schema.json +367 -0
  21. package/schemas/behaviours/schema.json +145 -0
  22. package/schemas/berries/schema.json +178 -0
  23. package/schemas/cosmetic_items/schema.json +55 -0
  24. package/schemas/dex_additions/schema.json +22 -0
  25. package/schemas/dex_entries/schema.json +83 -0
  26. package/schemas/dex_entry_additions/schema.json +63 -0
  27. package/schemas/dexes/schema.json +89 -0
  28. package/schemas/dialogues/schema.json +260 -0
  29. package/schemas/fossils/schema.json +22 -0
  30. package/schemas/global_species_features/schema.json +6 -0
  31. package/schemas/index.json +244 -0
  32. package/schemas/marks/schema.json +49 -0
  33. package/schemas/mechanics/aprijuices.schema.json +25 -0
  34. package/schemas/mechanics/berries.schema.json +35 -0
  35. package/schemas/mechanics/potions.schema.json +23 -0
  36. package/schemas/mechanics/remedies.schema.json +31 -0
  37. package/schemas/mechanics/slowpoke_tails.schema.json +17 -0
  38. package/schemas/natural_materials/schema.json +40 -0
  39. package/schemas/npc_presets/schema.json +6 -0
  40. package/schemas/npcs/schema.json +443 -0
  41. package/schemas/pokemon_interactions/schema.json +169 -0
  42. package/schemas/pokerods/schema.json +19 -0
  43. package/schemas/ride_settings/bird.schema.json +48 -0
  44. package/schemas/ride_settings/boat.schema.json +45 -0
  45. package/schemas/ride_settings/burst.schema.json +11 -0
  46. package/schemas/ride_settings/dolphin.schema.json +45 -0
  47. package/schemas/ride_settings/glider.schema.json +18 -0
  48. package/schemas/ride_settings/helicopter.schema.json +21 -0
  49. package/schemas/ride_settings/horse.schema.json +36 -0
  50. package/schemas/ride_settings/hover.schema.json +33 -0
  51. package/schemas/ride_settings/jet.schema.json +42 -0
  52. package/schemas/ride_settings/minekart.schema.json +33 -0
  53. package/schemas/ride_settings/rocket.schema.json +36 -0
  54. package/schemas/ride_settings/submarine.schema.json +33 -0
  55. package/schemas/ride_settings/vehicle.schema.json +45 -0
  56. package/schemas/seasonings/schema.json +124 -0
  57. package/schemas/spawn_bait_effects/schema.json +42 -0
  58. package/schemas/spawn_detail_presets/schema.json +79 -0
  59. package/schemas/spawn_pool_world/schema.json +455 -0
  60. package/schemas/spawn_rules/schema.json +217 -0
  61. package/schemas/species/schema.json +1043 -0
  62. package/schemas/species_additions/schema.json +22 -0
  63. package/schemas/species_feature_assignments/schema.json +25 -0
  64. package/schemas/species_features/schema.json +139 -0
  65. package/schemas/starters/schema.json +28 -0
  66. package/schemas/unlockable_pc_box_wallpapers/schema.json +29 -0
  67. package/src/errors/format.mjs +46 -0
  68. package/src/errors/pointer.mjs +30 -0
  69. package/src/errors/simplify.mjs +58 -0
  70. package/src/errors/type-branches.mjs +65 -0
  71. package/src/errors/values.mjs +7 -0
  72. package/src/index.d.ts +74 -0
  73. package/src/index.mjs +6 -0
  74. package/src/json/line-index.mjs +21 -0
  75. package/src/json/parse-json.mjs +28 -0
  76. package/src/json/syntax-errors.mjs +56 -0
  77. package/src/node/load-engine.mjs +30 -0
  78. package/src/node/load-schemas.mjs +35 -0
  79. package/src/node/package-info.mjs +10 -0
  80. package/src/node/read-pack.mjs +18 -0
  81. package/src/node.d.ts +13 -0
  82. package/src/node.mjs +5 -0
  83. package/src/schema-engine.mjs +43 -0
  84. package/src/schema-index.mjs +54 -0
  85. package/src/validate-pack.mjs +28 -0
@@ -0,0 +1,367 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://cobblemon-schema.local/bedrock_posers/schema.json",
4
+ "title": "Cobblemon Bedrock Poser",
5
+ "type": "object",
6
+ "properties": {
7
+ "rootBone": {
8
+ "type": "string"
9
+ },
10
+ "portraitScale": {
11
+ "type": "number"
12
+ },
13
+ "portraitTranslation": {
14
+ "$ref": "#/$defs/vec3"
15
+ },
16
+ "profileScale": {
17
+ "type": "number"
18
+ },
19
+ "profileTranslation": {
20
+ "$ref": "#/$defs/vec3"
21
+ },
22
+ "maxScale": {
23
+ "type": "number"
24
+ },
25
+ "yTranslation": {
26
+ "type": "number"
27
+ },
28
+ "yGrowthPoint": {
29
+ "type": "number"
30
+ },
31
+ "firstPersonCameraOffset": {
32
+ "$ref": "#/$defs/cameraOffsetMap"
33
+ },
34
+ "thirdPersonCameraOffset": {
35
+ "$ref": "#/$defs/cameraOffsetMap"
36
+ },
37
+ "thirdPersonCameraOffsetNoViewBobbing": {
38
+ "$ref": "#/$defs/cameraOffsetMap"
39
+ },
40
+ "thirdPersonPivotOffset": {
41
+ "$ref": "#/$defs/cameraOffsetMap"
42
+ },
43
+ "properties": {
44
+ "type": "object",
45
+ "additionalProperties": {
46
+ "type": "string"
47
+ }
48
+ },
49
+ "animations": {
50
+ "type": "object",
51
+ "additionalProperties": {
52
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
53
+ }
54
+ },
55
+ "transformedParts": {
56
+ "type": "array",
57
+ "items": {
58
+ "$ref": "#/$defs/transformedPart"
59
+ }
60
+ },
61
+ "faint": {
62
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
63
+ },
64
+ "head": {
65
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
66
+ },
67
+ "poses": {
68
+ "type": "object",
69
+ "additionalProperties": {
70
+ "$ref": "#/$defs/pose"
71
+ },
72
+ "minProperties": 1
73
+ }
74
+ },
75
+ "required": [
76
+ "poses"
77
+ ],
78
+ "additionalProperties": true,
79
+ "$defs": {
80
+ "vec3": {
81
+ "type": "array",
82
+ "items": {
83
+ "type": "number"
84
+ },
85
+ "minItems": 3,
86
+ "maxItems": 3
87
+ },
88
+ "poseType": {
89
+ "type": "string",
90
+ "enum": [
91
+ "STAND",
92
+ "WALK",
93
+ "SLEEP",
94
+ "HOVER",
95
+ "FLY",
96
+ "FLOAT",
97
+ "SWIM",
98
+ "GLIDE",
99
+ "SHOULDER_LEFT",
100
+ "SHOULDER_RIGHT",
101
+ "PROFILE",
102
+ "PORTRAIT",
103
+ "OPEN",
104
+ "NONE"
105
+ ]
106
+ },
107
+ "cameraOffsetMap": {
108
+ "type": "object",
109
+ "additionalProperties": {
110
+ "$ref": "#/$defs/vec3"
111
+ }
112
+ },
113
+ "animationRef": {
114
+ "oneOf": [
115
+ {
116
+ "type": "string"
117
+ },
118
+ {
119
+ "type": "object",
120
+ "properties": {
121
+ "animation": {
122
+ "type": "string"
123
+ },
124
+ "condition": {
125
+ "type": "string"
126
+ },
127
+ "namedAnimations": {
128
+ "type": "object",
129
+ "additionalProperties": {
130
+ "type": "string"
131
+ }
132
+ }
133
+ },
134
+ "anyOf": [
135
+ {
136
+ "required": [
137
+ "animation"
138
+ ]
139
+ },
140
+ {
141
+ "required": [
142
+ "namedAnimations"
143
+ ]
144
+ }
145
+ ],
146
+ "additionalProperties": true
147
+ }
148
+ ]
149
+ },
150
+ "transformedPart": {
151
+ "type": "object",
152
+ "properties": {
153
+ "part": {
154
+ "type": "string",
155
+ "minLength": 1
156
+ },
157
+ "position": {
158
+ "$ref": "#/$defs/vec3"
159
+ },
160
+ "rotation": {
161
+ "$ref": "#/$defs/vec3"
162
+ },
163
+ "scale": {
164
+ "$ref": "#/$defs/vec3"
165
+ },
166
+ "isVisible": {
167
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
168
+ },
169
+ "visible": {
170
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
171
+ },
172
+ "comment": {
173
+ "type": "string"
174
+ }
175
+ },
176
+ "required": [
177
+ "part"
178
+ ],
179
+ "additionalProperties": true
180
+ },
181
+ "quirk": {
182
+ "oneOf": [
183
+ {
184
+ "type": "string"
185
+ },
186
+ {
187
+ "type": "object",
188
+ "properties": {
189
+ "animation": {
190
+ "type": "string"
191
+ },
192
+ "animations": {
193
+ "type": "array",
194
+ "items": {
195
+ "type": "string"
196
+ }
197
+ },
198
+ "name": {
199
+ "type": "string"
200
+ },
201
+ "condition": {
202
+ "type": "string"
203
+ },
204
+ "loopTimes": {
205
+ "type": "integer",
206
+ "minimum": 1
207
+ },
208
+ "minSecondsBetweenOccurrences": {
209
+ "type": "number",
210
+ "minimum": 0
211
+ },
212
+ "maxSecondsBetweenOccurrences": {
213
+ "type": "number",
214
+ "minimum": 0
215
+ }
216
+ },
217
+ "anyOf": [
218
+ {
219
+ "required": [
220
+ "animation"
221
+ ]
222
+ },
223
+ {
224
+ "required": [
225
+ "animations"
226
+ ]
227
+ }
228
+ ],
229
+ "additionalProperties": true
230
+ }
231
+ ]
232
+ },
233
+ "pose": {
234
+ "type": "object",
235
+ "properties": {
236
+ "poseName": {
237
+ "oneOf": [
238
+ {
239
+ "type": "string"
240
+ },
241
+ {
242
+ "type": "array",
243
+ "items": {
244
+ "type": "string"
245
+ },
246
+ "minItems": 1
247
+ }
248
+ ]
249
+ },
250
+ "poseTypes": {
251
+ "type": "array",
252
+ "items": {
253
+ "$ref": "#/$defs/poseType"
254
+ },
255
+ "minItems": 1
256
+ },
257
+ "allPoseTypes": {
258
+ "type": "boolean"
259
+ },
260
+ "condition": {
261
+ "oneOf": [
262
+ {
263
+ "type": "string"
264
+ },
265
+ {
266
+ "type": "array",
267
+ "items": {
268
+ "type": "string"
269
+ },
270
+ "minItems": 1
271
+ }
272
+ ]
273
+ },
274
+ "conditions": {
275
+ "type": "array",
276
+ "items": {
277
+ "type": "string"
278
+ },
279
+ "minItems": 1
280
+ },
281
+ "transformTicks": {
282
+ "type": "integer",
283
+ "minimum": 0
284
+ },
285
+ "transformToTicks": {
286
+ "type": "integer",
287
+ "minimum": 0
288
+ },
289
+ "animations": {
290
+ "type": "array",
291
+ "items": {
292
+ "$ref": "#/$defs/animationRef"
293
+ }
294
+ },
295
+ "namedAnimations": {
296
+ "type": "object",
297
+ "additionalProperties": {
298
+ "type": "string"
299
+ }
300
+ },
301
+ "transitions": {
302
+ "type": "object",
303
+ "additionalProperties": {
304
+ "type": "string"
305
+ }
306
+ },
307
+ "transformedParts": {
308
+ "type": "array",
309
+ "items": {
310
+ "$ref": "#/$defs/transformedPart"
311
+ }
312
+ },
313
+ "quirks": {
314
+ "type": "array",
315
+ "items": {
316
+ "$ref": "#/$defs/quirk"
317
+ }
318
+ },
319
+ "isBattle": {
320
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/booleanLike"
321
+ },
322
+ "isDusk": {
323
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/booleanLike"
324
+ },
325
+ "isWild": {
326
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/booleanLike"
327
+ },
328
+ "isTouchingWater": {
329
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/booleanLike"
330
+ },
331
+ "isInWaterOrRain": {
332
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/booleanLike"
333
+ },
334
+ "isUnderWater": {
335
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/booleanLike"
336
+ },
337
+ "isRideStyle": {
338
+ "oneOf": [
339
+ {
340
+ "type": "string"
341
+ },
342
+ {
343
+ "type": "array",
344
+ "items": {
345
+ "type": "string"
346
+ },
347
+ "minItems": 1
348
+ }
349
+ ]
350
+ }
351
+ },
352
+ "anyOf": [
353
+ {
354
+ "required": [
355
+ "allPoseTypes"
356
+ ]
357
+ },
358
+ {
359
+ "required": [
360
+ "poseTypes"
361
+ ]
362
+ }
363
+ ],
364
+ "additionalProperties": true
365
+ }
366
+ }
367
+ }
@@ -0,0 +1,145 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://cobblemon-schema.local/behaviours/schema.json",
4
+ "title": "Cobblemon Behaviours",
5
+ "type": "object",
6
+ "properties": {
7
+ "name": {
8
+ "type": "string"
9
+ },
10
+ "description": {
11
+ "type": "string"
12
+ },
13
+ "visible": {
14
+ "type": "boolean"
15
+ },
16
+ "entityType": {
17
+ "type": "string"
18
+ },
19
+ "onAdd": {
20
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/actionList"
21
+ },
22
+ "onRemove": {
23
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/actionList"
24
+ },
25
+ "undo": {
26
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/actionList"
27
+ },
28
+ "configurations": {
29
+ "type": "array",
30
+ "items": {
31
+ "$ref": "#/$defs/configuration"
32
+ }
33
+ }
34
+ },
35
+ "required": [
36
+ "configurations"
37
+ ],
38
+ "additionalProperties": false,
39
+ "$defs": {
40
+ "task": {
41
+ "oneOf": [
42
+ {
43
+ "type": "string"
44
+ },
45
+ {
46
+ "type": "object",
47
+ "properties": {
48
+ "type": {
49
+ "type": "string"
50
+ },
51
+ "condition": {
52
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
53
+ },
54
+ "activity": {
55
+ "type": "string"
56
+ },
57
+ "script": {
58
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/actionList"
59
+ },
60
+ "variables": {
61
+ "type": "array",
62
+ "items": {
63
+ "$ref": "../_shared/defs/npc.schema.json#/$defs/variableDefinition"
64
+ }
65
+ }
66
+ },
67
+ "additionalProperties": true
68
+ }
69
+ ]
70
+ },
71
+ "configuration": {
72
+ "type": "object",
73
+ "properties": {
74
+ "type": {
75
+ "type": "string"
76
+ },
77
+ "activity": {
78
+ "type": "string"
79
+ },
80
+ "condition": {
81
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
82
+ },
83
+ "executeEarly": {
84
+ "type": "boolean"
85
+ },
86
+ "script": {
87
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/actionList"
88
+ },
89
+ "behaviours": {
90
+ "type": "array",
91
+ "items": {
92
+ "type": "string"
93
+ }
94
+ },
95
+ "memories": {
96
+ "type": "array",
97
+ "items": {
98
+ "type": "string"
99
+ }
100
+ },
101
+ "variables": {
102
+ "type": "array",
103
+ "items": {
104
+ "$ref": "../_shared/defs/npc.schema.json#/$defs/variableDefinition"
105
+ }
106
+ },
107
+ "variableValues": {
108
+ "type": "object",
109
+ "additionalProperties": {
110
+ "oneOf": [
111
+ {
112
+ "type": "string"
113
+ },
114
+ {
115
+ "type": "number"
116
+ },
117
+ {
118
+ "type": "integer"
119
+ },
120
+ {
121
+ "type": "boolean"
122
+ }
123
+ ]
124
+ }
125
+ },
126
+ "tasksByPriority": {
127
+ "type": "object",
128
+ "patternProperties": {
129
+ "^[0-9]+$": {
130
+ "type": "array",
131
+ "items": {
132
+ "$ref": "#/$defs/task"
133
+ }
134
+ }
135
+ },
136
+ "additionalProperties": false
137
+ }
138
+ },
139
+ "required": [
140
+ "type"
141
+ ],
142
+ "additionalProperties": true
143
+ }
144
+ }
145
+ }
@@ -0,0 +1,178 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://cobblemon-schema.local/berries/schema.json",
4
+ "title": "Cobblemon Berry",
5
+ "type": "object",
6
+ "properties": {
7
+ "baseYield": {
8
+ "$ref": "../_shared/defs/ranges.schema.json#/$defs/intMinMax"
9
+ },
10
+ "preferredBiomeTags": {
11
+ "type": "array",
12
+ "items": {
13
+ "type": "string"
14
+ }
15
+ },
16
+ "growthTime": {
17
+ "$ref": "../_shared/defs/ranges.schema.json#/$defs/intMinMax"
18
+ },
19
+ "refreshRate": {
20
+ "$ref": "../_shared/defs/ranges.schema.json#/$defs/intMinMax"
21
+ },
22
+ "favoriteMulches": {
23
+ "type": "array",
24
+ "items": {
25
+ "type": "string"
26
+ }
27
+ },
28
+ "growthFactors": {
29
+ "type": "array",
30
+ "items": {
31
+ "type": "object",
32
+ "properties": {
33
+ "variant": {
34
+ "type": "string",
35
+ "enum": [
36
+ "cobblemon:preferred_biome",
37
+ "cobblemon:biome_downfall",
38
+ "cobblemon:biome_temperature"
39
+ ]
40
+ },
41
+ "bonusYield": {
42
+ "$ref": "../_shared/defs/ranges.schema.json#/$defs/intMinMax"
43
+ }
44
+ },
45
+ "required": [
46
+ "variant",
47
+ "bonusYield"
48
+ ],
49
+ "additionalProperties": true
50
+ }
51
+ },
52
+ "spawnConditions": {
53
+ "type": "array",
54
+ "items": {
55
+ "type": "object",
56
+ "properties": {
57
+ "variant": {
58
+ "type": "string",
59
+ "enum": [
60
+ "cobblemon:preferred_biome",
61
+ "cobblemon:all_biome",
62
+ "cobblemon:specific_biome"
63
+ ]
64
+ },
65
+ "biome": {
66
+ "type": "string"
67
+ },
68
+ "minGroveSize": {
69
+ "type": "integer",
70
+ "minimum": 1
71
+ },
72
+ "maxGroveSize": {
73
+ "type": "integer",
74
+ "minimum": 1
75
+ }
76
+ },
77
+ "required": [
78
+ "variant",
79
+ "minGroveSize",
80
+ "maxGroveSize"
81
+ ],
82
+ "additionalProperties": false
83
+ }
84
+ },
85
+ "growthPoints": {
86
+ "type": "array",
87
+ "items": {
88
+ "$ref": "../_shared/defs/vectors.schema.json#/$defs/positioning"
89
+ }
90
+ },
91
+ "randomizedGrowthPoints": {
92
+ "type": "boolean"
93
+ },
94
+ "mutations": {
95
+ "type": "object",
96
+ "additionalProperties": {
97
+ "type": "string"
98
+ }
99
+ },
100
+ "sproutShape": {
101
+ "type": "string"
102
+ },
103
+ "matureShape": {
104
+ "type": "string"
105
+ },
106
+ "flavours": {
107
+ "type": "object",
108
+ "additionalProperties": {
109
+ "type": "integer"
110
+ }
111
+ },
112
+ "colour": {
113
+ "type": "string"
114
+ },
115
+ "tintIndexes": {
116
+ "type": "array",
117
+ "items": {
118
+ "type": "integer"
119
+ }
120
+ },
121
+ "flowerModel": {
122
+ "type": "string"
123
+ },
124
+ "flowerTexture": {
125
+ "type": "string"
126
+ },
127
+ "fruitModel": {
128
+ "type": "string"
129
+ },
130
+ "fruitTexture": {
131
+ "type": "string"
132
+ },
133
+ "stageOnePositioning": {
134
+ "$ref": "../_shared/defs/vectors.schema.json#/$defs/positioning"
135
+ },
136
+ "pokeSnackPositionings": {
137
+ "type": "array",
138
+ "items": {
139
+ "$ref": "../_shared/defs/vectors.schema.json#/$defs/positioning"
140
+ }
141
+ },
142
+ "weight": {
143
+ "type": "integer",
144
+ "minimum": 0
145
+ },
146
+ "boneMealChance": {
147
+ "type": "number",
148
+ "minimum": 0,
149
+ "maximum": 1
150
+ }
151
+ },
152
+ "required": [
153
+ "baseYield",
154
+ "preferredBiomeTags",
155
+ "growthTime",
156
+ "refreshRate",
157
+ "favoriteMulches",
158
+ "growthFactors",
159
+ "spawnConditions",
160
+ "growthPoints",
161
+ "randomizedGrowthPoints",
162
+ "mutations",
163
+ "sproutShape",
164
+ "matureShape",
165
+ "flavours",
166
+ "colour",
167
+ "tintIndexes",
168
+ "flowerModel",
169
+ "flowerTexture",
170
+ "fruitModel",
171
+ "fruitTexture",
172
+ "stageOnePositioning",
173
+ "pokeSnackPositionings",
174
+ "weight",
175
+ "boneMealChance"
176
+ ],
177
+ "additionalProperties": false
178
+ }