@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,443 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://cobblemon-schema.local/npcs/schema.json",
4
+ "title": "Cobblemon NPC Class",
5
+ "type": "object",
6
+ "properties": {
7
+ "presets": {
8
+ "type": "array",
9
+ "items": {
10
+ "$ref": "../_shared/defs/identifiers.schema.json#/$defs/identifier"
11
+ }
12
+ },
13
+ "resourceIdentifier": {
14
+ "$ref": "../_shared/defs/identifiers.schema.json#/$defs/identifier"
15
+ },
16
+ "name": {
17
+ "oneOf": [
18
+ {
19
+ "type": "string"
20
+ },
21
+ {
22
+ "type": "array",
23
+ "items": {
24
+ "type": "string"
25
+ }
26
+ }
27
+ ]
28
+ },
29
+ "names": {
30
+ "type": "array",
31
+ "items": {
32
+ "type": "string"
33
+ }
34
+ },
35
+ "aspects": {
36
+ "type": "array",
37
+ "items": {
38
+ "type": "string"
39
+ }
40
+ },
41
+ "variation": {
42
+ "type": "object",
43
+ "additionalProperties": {
44
+ "$ref": "#/$defs/variationProvider"
45
+ }
46
+ },
47
+ "variations": {
48
+ "type": "object",
49
+ "additionalProperties": {
50
+ "$ref": "#/$defs/variationProvider"
51
+ }
52
+ },
53
+ "hitbox": {
54
+ "oneOf": [
55
+ {
56
+ "type": "string"
57
+ },
58
+ {
59
+ "type": "object",
60
+ "properties": {
61
+ "width": {
62
+ "type": "number"
63
+ },
64
+ "height": {
65
+ "type": "number"
66
+ },
67
+ "fixed": {
68
+ "type": "boolean"
69
+ }
70
+ },
71
+ "required": [
72
+ "width",
73
+ "height"
74
+ ],
75
+ "additionalProperties": false
76
+ }
77
+ ]
78
+ },
79
+ "battleConfiguration": {
80
+ "type": "object",
81
+ "properties": {
82
+ "canChallenge": {
83
+ "type": "boolean"
84
+ },
85
+ "simultaneousBattles": {
86
+ "type": "boolean"
87
+ },
88
+ "healAfterwards": {
89
+ "type": "boolean"
90
+ }
91
+ },
92
+ "additionalProperties": false
93
+ },
94
+ "interaction": {
95
+ "$ref": "#/$defs/interactionConfig"
96
+ },
97
+ "canDespawn": {
98
+ "type": "boolean"
99
+ },
100
+ "config": {
101
+ "type": "array",
102
+ "items": {
103
+ "$ref": "../_shared/defs/npc.schema.json#/$defs/variableDefinition"
104
+ }
105
+ },
106
+ "party": {
107
+ "$ref": "#/$defs/partyProvider"
108
+ },
109
+ "skill": {
110
+ "type": "integer"
111
+ },
112
+ "autoHealParty": {
113
+ "type": "boolean"
114
+ },
115
+ "randomizePartyOrder": {
116
+ "type": "boolean"
117
+ },
118
+ "battleTheme": {
119
+ "$ref": "../_shared/defs/identifiers.schema.json#/$defs/identifier"
120
+ },
121
+ "behaviours": {
122
+ "type": "array",
123
+ "items": {
124
+ "$ref": "#/$defs/behaviourConfig"
125
+ }
126
+ },
127
+ "behaviors": {
128
+ "type": "array",
129
+ "items": {
130
+ "$ref": "#/$defs/behaviourConfig"
131
+ }
132
+ },
133
+ "ai": {
134
+ "type": "array",
135
+ "items": {
136
+ "$ref": "#/$defs/behaviourConfig"
137
+ }
138
+ },
139
+ "isMovable": {
140
+ "type": "boolean"
141
+ },
142
+ "isInvulnerable": {
143
+ "type": "boolean"
144
+ },
145
+ "isLeashable": {
146
+ "type": "boolean"
147
+ },
148
+ "allowProjectileHits": {
149
+ "type": "boolean"
150
+ },
151
+ "hideNameTag": {
152
+ "type": "boolean"
153
+ }
154
+ },
155
+ "additionalProperties": false,
156
+ "$defs": {
157
+ "behaviourConfig": {
158
+ "oneOf": [
159
+ {
160
+ "type": "string"
161
+ },
162
+ {
163
+ "type": "object",
164
+ "properties": {
165
+ "type": {
166
+ "type": "string"
167
+ }
168
+ },
169
+ "required": [
170
+ "type"
171
+ ],
172
+ "additionalProperties": true
173
+ }
174
+ ]
175
+ },
176
+ "interactionConfig": {
177
+ "oneOf": [
178
+ {
179
+ "type": "string"
180
+ },
181
+ {
182
+ "type": "object",
183
+ "properties": {
184
+ "type": {
185
+ "type": "string",
186
+ "enum": [
187
+ "script",
188
+ "custom_script",
189
+ "dialogue",
190
+ "none"
191
+ ]
192
+ },
193
+ "script": {
194
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
195
+ },
196
+ "dialogue": {
197
+ "$ref": "../_shared/defs/identifiers.schema.json#/$defs/identifier"
198
+ }
199
+ },
200
+ "required": [
201
+ "type"
202
+ ],
203
+ "additionalProperties": false
204
+ }
205
+ ]
206
+ },
207
+ "weightedAspect": {
208
+ "oneOf": [
209
+ {
210
+ "type": "string"
211
+ },
212
+ {
213
+ "type": "object",
214
+ "properties": {
215
+ "aspect": {
216
+ "oneOf": [
217
+ {
218
+ "type": "string"
219
+ },
220
+ {
221
+ "type": "array",
222
+ "items": {
223
+ "type": "string"
224
+ }
225
+ }
226
+ ]
227
+ },
228
+ "aspects": {
229
+ "oneOf": [
230
+ {
231
+ "type": "string"
232
+ },
233
+ {
234
+ "type": "array",
235
+ "items": {
236
+ "type": "string"
237
+ }
238
+ }
239
+ ]
240
+ },
241
+ "weight": {
242
+ "type": "number"
243
+ }
244
+ },
245
+ "additionalProperties": false,
246
+ "anyOf": [
247
+ {
248
+ "required": [
249
+ "aspect"
250
+ ]
251
+ },
252
+ {
253
+ "required": [
254
+ "aspects"
255
+ ]
256
+ }
257
+ ]
258
+ }
259
+ ]
260
+ },
261
+ "variationProvider": {
262
+ "oneOf": [
263
+ {
264
+ "type": "array",
265
+ "items": {
266
+ "$ref": "#/$defs/weightedAspect"
267
+ }
268
+ },
269
+ {
270
+ "type": "object",
271
+ "properties": {
272
+ "type": {
273
+ "type": "string",
274
+ "enum": [
275
+ "weighted",
276
+ "random"
277
+ ]
278
+ },
279
+ "aspects": {
280
+ "type": "array",
281
+ "items": {
282
+ "type": "string"
283
+ }
284
+ },
285
+ "options": {
286
+ "type": "array",
287
+ "items": {
288
+ "$ref": "#/$defs/weightedAspect"
289
+ }
290
+ }
291
+ },
292
+ "required": [
293
+ "type"
294
+ ],
295
+ "additionalProperties": true
296
+ }
297
+ ]
298
+ },
299
+ "partyProvider": {
300
+ "oneOf": [
301
+ {
302
+ "type": "string",
303
+ "enum": [
304
+ "simple",
305
+ "pool",
306
+ "script"
307
+ ]
308
+ },
309
+ {
310
+ "type": "object",
311
+ "properties": {
312
+ "type": {
313
+ "type": "string",
314
+ "enum": [
315
+ "simple",
316
+ "pool",
317
+ "script"
318
+ ]
319
+ },
320
+ "isStatic": {
321
+ "type": "boolean"
322
+ },
323
+ "pokemon": {
324
+ "type": "array",
325
+ "items": {
326
+ "$ref": "../_shared/defs/pokemon.schema.json#/$defs/pokemonProperties"
327
+ }
328
+ },
329
+ "minPokemon": {
330
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
331
+ },
332
+ "maxPokemon": {
333
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
334
+ },
335
+ "useFixedRandom": {
336
+ "type": "boolean"
337
+ },
338
+ "pool": {
339
+ "type": "array",
340
+ "items": {
341
+ "oneOf": [
342
+ {
343
+ "type": "string"
344
+ },
345
+ {
346
+ "type": "object",
347
+ "properties": {
348
+ "pokemon": {
349
+ "$ref": "../_shared/defs/pokemon.schema.json#/$defs/pokemonProperties"
350
+ },
351
+ "levelVariation": {
352
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
353
+ },
354
+ "level": {
355
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
356
+ },
357
+ "npcLevels": {
358
+ "$ref": "../_shared/defs/ranges.schema.json#/$defs/intRange"
359
+ },
360
+ "selectableTimes": {
361
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
362
+ },
363
+ "weight": {
364
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
365
+ }
366
+ },
367
+ "required": [
368
+ "pokemon"
369
+ ],
370
+ "additionalProperties": false
371
+ }
372
+ ]
373
+ }
374
+ },
375
+ "script": {
376
+ "$ref": "../_shared/defs/identifiers.schema.json#/$defs/identifier"
377
+ }
378
+ },
379
+ "required": [
380
+ "type"
381
+ ],
382
+ "additionalProperties": false,
383
+ "allOf": [
384
+ {
385
+ "if": {
386
+ "properties": {
387
+ "type": {
388
+ "const": "simple"
389
+ }
390
+ },
391
+ "required": [
392
+ "type"
393
+ ]
394
+ },
395
+ "then": {
396
+ "required": [
397
+ "pokemon"
398
+ ]
399
+ }
400
+ },
401
+ {
402
+ "if": {
403
+ "properties": {
404
+ "type": {
405
+ "const": "pool"
406
+ }
407
+ },
408
+ "required": [
409
+ "type"
410
+ ]
411
+ },
412
+ "then": {
413
+ "required": [
414
+ "minPokemon",
415
+ "maxPokemon",
416
+ "pool",
417
+ "isStatic"
418
+ ]
419
+ }
420
+ },
421
+ {
422
+ "if": {
423
+ "properties": {
424
+ "type": {
425
+ "const": "script"
426
+ }
427
+ },
428
+ "required": [
429
+ "type"
430
+ ]
431
+ },
432
+ "then": {
433
+ "required": [
434
+ "script"
435
+ ]
436
+ }
437
+ }
438
+ ]
439
+ }
440
+ ]
441
+ }
442
+ }
443
+ }
@@ -0,0 +1,169 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://cobblemon-schema.local/pokemon_interactions/schema.json",
4
+ "title": "Cobblemon Pokemon Interaction Set",
5
+ "type": "object",
6
+ "properties": {
7
+ "requirements": {
8
+ "type": "array",
9
+ "items": {
10
+ "$ref": "#/$defs/requirement"
11
+ }
12
+ },
13
+ "interactions": {
14
+ "type": "array",
15
+ "items": {
16
+ "$ref": "#/$defs/interaction"
17
+ }
18
+ }
19
+ },
20
+ "required": [
21
+ "requirements",
22
+ "interactions"
23
+ ],
24
+ "additionalProperties": false,
25
+ "$defs": {
26
+ "requirement": {
27
+ "type": "object",
28
+ "properties": {
29
+ "variant": {
30
+ "type": "string"
31
+ },
32
+ "target": {
33
+ "type": "string"
34
+ },
35
+ "itemCondition": {
36
+ "$ref": "../_shared/defs/pokemon.schema.json#/$defs/itemPredicate"
37
+ }
38
+ },
39
+ "required": [
40
+ "variant"
41
+ ],
42
+ "additionalProperties": true
43
+ },
44
+ "effect": {
45
+ "type": "object",
46
+ "properties": {
47
+ "variant": {
48
+ "type": "string",
49
+ "enum": [
50
+ "drop_item",
51
+ "give_item",
52
+ "play_sound",
53
+ "shrink_item",
54
+ "script"
55
+ ]
56
+ },
57
+ "item": {
58
+ "type": "string"
59
+ },
60
+ "sound": {
61
+ "type": "string"
62
+ },
63
+ "amount": {
64
+ "oneOf": [
65
+ {
66
+ "type": "integer"
67
+ },
68
+ {
69
+ "type": "string"
70
+ }
71
+ ]
72
+ },
73
+ "script": {
74
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
75
+ }
76
+ },
77
+ "required": [
78
+ "variant"
79
+ ],
80
+ "additionalProperties": false,
81
+ "allOf": [
82
+ {
83
+ "if": {
84
+ "properties": {
85
+ "variant": {
86
+ "enum": [
87
+ "drop_item",
88
+ "give_item"
89
+ ]
90
+ }
91
+ },
92
+ "required": [
93
+ "variant"
94
+ ]
95
+ },
96
+ "then": {
97
+ "required": [
98
+ "item"
99
+ ]
100
+ }
101
+ },
102
+ {
103
+ "if": {
104
+ "properties": {
105
+ "variant": {
106
+ "const": "play_sound"
107
+ }
108
+ },
109
+ "required": [
110
+ "variant"
111
+ ]
112
+ },
113
+ "then": {
114
+ "required": [
115
+ "sound"
116
+ ]
117
+ }
118
+ },
119
+ {
120
+ "if": {
121
+ "properties": {
122
+ "variant": {
123
+ "const": "script"
124
+ }
125
+ },
126
+ "required": [
127
+ "variant"
128
+ ]
129
+ },
130
+ "then": {
131
+ "required": [
132
+ "script"
133
+ ]
134
+ }
135
+ }
136
+ ]
137
+ },
138
+ "interaction": {
139
+ "type": "object",
140
+ "properties": {
141
+ "grouping": {
142
+ "type": "string"
143
+ },
144
+ "requirements": {
145
+ "type": "array",
146
+ "items": {
147
+ "$ref": "#/$defs/requirement"
148
+ }
149
+ },
150
+ "effects": {
151
+ "type": "array",
152
+ "items": {
153
+ "$ref": "#/$defs/effect"
154
+ }
155
+ },
156
+ "cooldown": {
157
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
158
+ }
159
+ },
160
+ "required": [
161
+ "grouping",
162
+ "requirements",
163
+ "effects",
164
+ "cooldown"
165
+ ],
166
+ "additionalProperties": false
167
+ }
168
+ }
169
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://cobblemon-schema.local/pokerods/schema.json",
4
+ "title": "Cobblemon Poke Rod",
5
+ "type": "object",
6
+ "properties": {
7
+ "pokeBallId": {
8
+ "$ref": "../_shared/defs/identifiers.schema.json#/$defs/identifier"
9
+ },
10
+ "lineColor": {
11
+ "type": "string"
12
+ }
13
+ },
14
+ "required": [
15
+ "pokeBallId",
16
+ "lineColor"
17
+ ],
18
+ "additionalProperties": false
19
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://cobblemon-schema.local/ride_settings/bird.schema.json",
4
+ "title": "Cobblemon Ride Settings: Bird",
5
+ "type": "object",
6
+ "properties": {
7
+ "infiniteAltitude": {
8
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
9
+ },
10
+ "infiniteStamina": {
11
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
12
+ },
13
+ "timeToRollCorrect": {
14
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
15
+ },
16
+ "handlingExpr": {
17
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
18
+ },
19
+ "horizontalPitchExpr": {
20
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
21
+ },
22
+ "mouseInputMult": {
23
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
24
+ },
25
+ "speedExpr": {
26
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
27
+ },
28
+ "accelerationExpr": {
29
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
30
+ },
31
+ "staminaExpr": {
32
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
33
+ },
34
+ "stamDrainHorzMod": {
35
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
36
+ },
37
+ "stamDrainPercRateGlide": {
38
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
39
+ },
40
+ "stamDrainPerRateDive": {
41
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
42
+ },
43
+ "glideSpeedExpr": {
44
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
45
+ }
46
+ },
47
+ "additionalProperties": false
48
+ }