minecraft-data 3.95.1 → 3.96.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.
@@ -895,5 +895,10 @@
895
895
  "name": "chatGlobalIndexAndChecksum",
896
896
  "description": "chatGlobalIndexAndChecksum",
897
897
  "versions": ["1.21.5", "latest"]
898
+ },
899
+ {
900
+ "name": "entityActionUsesStringMapper",
901
+ "description": "entity_action packet uses string mappings instead of numeric actionId",
902
+ "versions": ["1.21.6", "latest"]
898
903
  }
899
904
  ]
@@ -1,4 +1,12 @@
1
1
  [
2
+ {
3
+ "minecraftVersion": "25w33a",
4
+ "version": 1073742086,
5
+ "dataVersion": 4538,
6
+ "usesNetty": true,
7
+ "majorVersion": "1.21",
8
+ "releaseType": "snapshot"
9
+ },
2
10
  {
3
11
  "minecraftVersion": "25w32a",
4
12
  "version": 1073742085,
@@ -1,4 +1,4 @@
1
- !version: 1.21.5
1
+ !version: 1.21.6
2
2
  !StartDocs: true
3
3
 
4
4
  ^types:
@@ -164,7 +164,7 @@
164
164
  type: SlotComponentType
165
165
  ## Ref: client/net/minecraft/core/component/DataComponents.java
166
166
  data: type ?
167
- ## TODO: look into how nbt works here
167
+ ## 'Unit' MC type is functionally void
168
168
  if custom_data: anonymousNbt
169
169
  if max_stack_size: varint
170
170
  if max_damage: varint
@@ -173,13 +173,13 @@
173
173
  if custom_name: anonymousNbt
174
174
  if item_name: anonymousNbt
175
175
  if item_model: string
176
- if lore: anonOptionalNbt[]varint
176
+ if lore: anonymousNbt[]varint
177
177
  if rarity: varint =>
178
178
  - common
179
179
  - uncommon
180
180
  - rare
181
181
  - epic
182
- if enchantments:
182
+ if enchantments or stored_enchantments:
183
183
  enchantments: []varint
184
184
  id: varint
185
185
  level: varint
@@ -206,7 +206,13 @@
206
206
  - armor
207
207
  - body
208
208
  - saddle
209
- showTooltip: bool
209
+ display:
210
+ type: varint =>
211
+ - default
212
+ - hidden
213
+ - override
214
+ component: type ?
215
+ if override: anonymousNbt
210
216
  if custom_model_data:
211
217
  floats: f32[]varint
212
218
  flags: bool[]varint
@@ -296,17 +302,14 @@
296
302
  swappable: bool
297
303
  damageable: bool
298
304
  equipOnInteract: bool
305
+ shearable: bool
306
+ shearingSound: ItemSoundHolder
299
307
  if repairable:
300
308
  items: IDSet
301
309
  if glider: void
302
310
  if tooltip_style: string
303
311
  if death_protection:
304
312
  effects: ItemConsumeEffect[]varint
305
- if stored_enchantments:
306
- enchantments: []varint
307
- # The ID of the enchantment in the enchantment registry.
308
- id: varint
309
- level: varint
310
313
  if dyed_color: i32
311
314
  if map_color: i32
312
315
  if map_id: varint
@@ -347,7 +350,11 @@
347
350
  if entity_data: anonymousNbt
348
351
  if bucket_entity_data: anonymousNbt
349
352
  if block_entity_data: anonymousNbt
350
- if instrument: ["registryEntryHolder", { "baseName": "instrumentId", "otherwise": { "name": "data", "type": "InstrumentData" } }]
353
+ if instrument:
354
+ hasHolder: bool
355
+ data: hasHolder ?
356
+ if true: ["registryEntryHolder", { "baseName": "instrumentId", "otherwise": { "name": "data", "type": "InstrumentData" } }]
357
+ if false: string
351
358
  if provides_trim_material:
352
359
  hasHolder: bool
353
360
  material: hasHolder ?
@@ -791,6 +798,7 @@
791
798
  7: player
792
799
  8: ambient
793
800
  9: voice
801
+ 10: ui
794
802
  packedChunkPos:
795
803
  z: i32
796
804
  x: i32
@@ -944,7 +952,12 @@
944
952
  [
945
953
  {
946
954
  "name": "unused",
947
- "size": 3,
955
+ "size": 2,
956
+ "signed": false
957
+ },
958
+ {
959
+ "name": "allows_restricted",
960
+ "size": 1,
948
961
  "signed": false
949
962
  },
950
963
  {
@@ -997,6 +1010,7 @@
997
1010
  - minecraft:item_stack
998
1011
  - minecraft:item_predicate
999
1012
  - minecraft:color
1013
+ - minecraft:hex_color # 1.21.6
1000
1014
  - minecraft:component
1001
1015
  - minecraft:style
1002
1016
  - minecraft:message
@@ -1034,6 +1048,7 @@
1034
1048
  - minecraft:loot_table # 1.20.5
1035
1049
  - minecraft:loot_predicate # 1.20.5
1036
1050
  - minecraft:loot_modifier # 1.20.5
1051
+ - minecraft:dialog # 1.21.6
1037
1052
  - minecraft:uuid
1038
1053
  properties: parser ?
1039
1054
  if brigadier:bool: void
@@ -1179,6 +1194,7 @@
1179
1194
  if minecraft:item_stack: void
1180
1195
  if minecraft:item_predicate: void
1181
1196
  if minecraft:color: void
1197
+ if minecraft:hex_color: void
1182
1198
  if minecraft:component: void
1183
1199
  if minecraft:message: void
1184
1200
  if minecraft:nbt: void
@@ -1222,6 +1238,7 @@
1222
1238
  if minecraft:template_mirror: void
1223
1239
  if minecraft:template_rotation: void
1224
1240
  if minecraft:heightmap: void
1241
+ if minecraft:dialog: void
1225
1242
  if minecraft:uuid: void
1226
1243
  suggestionType: ../flags/has_custom_suggestions ?
1227
1244
  if 1: string
@@ -1304,6 +1321,13 @@
1304
1321
  unknownType: hasKnownType ?
1305
1322
  if false: anonymousNbt
1306
1323
  link: string
1324
+ # MC: ClientboundClearDialogPacket
1325
+ packet_common_clear_dialog:
1326
+ # empty
1327
+ # MC: ServerboundCustomClickActionPacket
1328
+ packet_common_custom_click_action:
1329
+ id: string
1330
+ nbt?: anonymousNbt
1307
1331
 
1308
1332
  ^handshaking.toClient.types:
1309
1333
  packet:
@@ -1482,6 +1506,9 @@
1482
1506
  tagType: string
1483
1507
  tags: tags
1484
1508
  ## (Select known packs is common)
1509
+ # MC: ClientboundShowDialogConfigurationPacket
1510
+ packet_show_dialog:
1511
+ dialog: anonymousNbt
1485
1512
  packet:
1486
1513
  name: varint =>
1487
1514
  - cookie_request
@@ -1501,6 +1528,8 @@
1501
1528
  - select_known_packs
1502
1529
  - custom_report_details
1503
1530
  - server_links
1531
+ - clear_dialog
1532
+ - show_dialog
1504
1533
  params: name ?
1505
1534
  if cookie_request: packet_common_cookie_request
1506
1535
  if custom_payload: packet_custom_payload
@@ -1519,6 +1548,8 @@
1519
1548
  if select_known_packs: packet_common_select_known_packs
1520
1549
  if custom_report_details: packet_common_custom_report_details
1521
1550
  if server_links: packet_common_server_links
1551
+ if clear_dialog: packet_common_clear_dialog
1552
+ if show_dialog: packet_show_dialog
1522
1553
  ^configuration.toServer.types:
1523
1554
  ## (Settings is Common) ##
1524
1555
  ## (Cookie Response is Common) ##
@@ -1549,8 +1580,7 @@
1549
1580
  - pong
1550
1581
  - resource_pack_receive
1551
1582
  - select_known_packs
1552
- - custom_report_details
1553
- - server_links
1583
+ - custom_click_action
1554
1584
  params: name ?
1555
1585
  if settings: packet_common_settings
1556
1586
  if cookie_response: packet_common_cookie_response
@@ -1560,8 +1590,7 @@
1560
1590
  if pong: packet_pong
1561
1591
  if resource_pack_receive: packet_resource_pack_receive
1562
1592
  if select_known_packs: packet_common_select_known_packs
1563
- if custom_report_details: packet_common_custom_report_details
1564
- if server_links: packet_common_server_links
1593
+ if custom_click_action: packet_common_custom_click_action
1565
1594
  ^play.toClient.types:
1566
1595
  SlotDisplay:
1567
1596
  type: varint =>
@@ -1570,7 +1599,7 @@
1570
1599
  - item
1571
1600
  - item_stack
1572
1601
  - tag
1573
- - smithing_trim #TODO: Old versions have typo
1602
+ - smithing_trim
1574
1603
  - with_remainder
1575
1604
  - composite
1576
1605
  data: type ?
@@ -1714,7 +1743,11 @@
1714
1743
  default: void
1715
1744
  # MC: ClientboundChangeDifficultyPacket
1716
1745
  packet_difficulty:
1717
- difficulty: u8
1746
+ difficulty: varint =>
1747
+ 0: peaceful
1748
+ 1: easy
1749
+ 2: normal
1750
+ 3: hard
1718
1751
  difficultyLocked: bool
1719
1752
  # MC: ClientboundChunkBatchFinishedPacket
1720
1753
  packet_chunk_batch_finished:
@@ -1853,8 +1886,21 @@
1853
1886
  chunkX: i32
1854
1887
  # MC: ClientboundGameEventPacket
1855
1888
  packet_game_state_change:
1856
- #TODO: Should be a mapper
1857
- reason: u8
1889
+ reason: u8 =>
1890
+ 0: no_respawn_block_available
1891
+ 1: start_raining
1892
+ 2: stop_raining
1893
+ 3: change_game_mode
1894
+ 4: win_game
1895
+ 5: demo_event
1896
+ 6: play_arrow_hit_sound
1897
+ 7: rain_level_change
1898
+ 8: thunder_level_change
1899
+ 9: puffer_fish_sting
1900
+ 10: guardian_elder_effect
1901
+ 11: immediate_respawn
1902
+ 12: limited_crafting
1903
+ 13: level_chunks_load_start
1858
1904
  gameMode: f32
1859
1905
  # MC: ClientboundHorseScreenOpenPacket
1860
1906
  packet_open_horse_window:
@@ -1883,7 +1929,13 @@
1883
1929
  x: i32
1884
1930
  z: i32
1885
1931
  heightmaps: []varint
1886
- type: varint
1932
+ type: varint =>
1933
+ 0: world_surface_wg
1934
+ 1: world_surface
1935
+ 2: ocean_floor_wg
1936
+ 3: ocean_floor
1937
+ 4: motion_blocking
1938
+ 5: motion_blocking_no_leaves
1887
1939
  data: i64[]varint
1888
1940
  chunkData: ByteArray
1889
1941
  blockEntities: chunkBlockEntity[]varint
@@ -2206,15 +2258,14 @@
2206
2258
  packet_recipe_book_remove:
2207
2259
  recipeIds: varint[]varint
2208
2260
  # MC: ClientboundRecipeBookSettingsPacket
2261
+ RecipeBookSetting:
2262
+ open: bool
2263
+ filtering: bool
2209
2264
  packet_recipe_book_settings:
2210
- craftingGuiOpen: bool
2211
- craftingFilteringCraftable: bool
2212
- smeltingGuiOpen: bool
2213
- smeltingFilteringCraftable: bool
2214
- blastGuiOpen: bool
2215
- blastFilteringCraftable: bool
2216
- smokerGuiOpen: bool
2217
- smokerFilteringCraftable: bool
2265
+ crafting: RecipeBookSetting
2266
+ furnace: RecipeBookSetting
2267
+ blast: RecipeBookSetting
2268
+ smoker: RecipeBookSetting
2218
2269
  # MC: ClientboundRemoveEntitiesPacket
2219
2270
  packet_entity_destroy:
2220
2271
  entityIds: varint[]varint
@@ -2383,41 +2434,36 @@
2383
2434
  contents: Slot
2384
2435
  # MC: ClientboundSetPlayerTeamPacket
2385
2436
  packet_teams:
2386
- #TODO: this should be using a switch
2387
2437
  team: string
2388
- mode: i8
2389
- name: mode ?
2390
- if 0: anonymousNbt
2391
- if 2: anonymousNbt
2392
- default: void
2393
- friendlyFire: mode ?
2394
- if 0: i8
2395
- if 2: i8
2396
- default: void
2397
- nameTagVisibility: mode ?
2398
- if 0: varint
2399
- if 2: varint
2400
- default: void
2401
- collisionRule: mode ?
2402
- if 0: varint
2403
- if 2: varint
2404
- default: void
2405
- formatting: mode ?
2406
- if 0: varint
2407
- if 2: varint
2408
- default: void
2409
- prefix: mode ?
2410
- if 0: anonymousNbt
2411
- if 2: anonymousNbt
2412
- default: void
2413
- suffix: mode ?
2414
- if 0: anonymousNbt
2415
- if 2: anonymousNbt
2438
+ mode: i8 =>
2439
+ - add
2440
+ - remove
2441
+ - change
2442
+ - join
2443
+ - leave
2444
+ _: mode ?
2445
+ if add or change:
2446
+ name: anonymousNbt
2447
+ flags: ["bitflags", {
2448
+ "type": "u8",
2449
+ "flags": ["friendly_fire", "see_friendly_invisible"]
2450
+ }]
2451
+ nameTagVisibility: varint =>
2452
+ - always
2453
+ - never
2454
+ - hide_for_other_teams
2455
+ - hide_for_own_team
2456
+ collisionRule: varint =>
2457
+ - always
2458
+ - never
2459
+ - push_other_teams
2460
+ - push_own_team
2461
+ formatting: varint
2462
+ prefix: anonymousNbt
2463
+ suffix: anonymousNbt
2416
2464
  default: void
2417
2465
  players: mode ?
2418
- if 0: string[]varint
2419
- if 3: string[]varint
2420
- if 4: string[]varint
2466
+ if add or join or leave: string[]varint
2421
2467
  default: void
2422
2468
  # MC: ClientboundSetScorePacket
2423
2469
  packet_scoreboard_score:
@@ -2565,6 +2611,9 @@
2565
2611
  - generic.attack_speed
2566
2612
  - player.block_break_speed
2567
2613
  - player.block_interaction_range
2614
+ - burning_time
2615
+ - camera_distance
2616
+ - explosion_knockback_resistance
2568
2617
  - player.entity_interaction_range
2569
2618
  - generic.fall_damage_multiplier
2570
2619
  - generic.flying_speed
@@ -2580,6 +2629,12 @@
2580
2629
  - generic.scale
2581
2630
  - zombie.spawn_reinforcements
2582
2631
  - generic.step_height
2632
+ - submerged_mining_speed
2633
+ - sweeping_damage_ratio
2634
+ - tempt_range
2635
+ - water_movement_efficiency
2636
+ - waypoint_transmit_range
2637
+ - waypoint_receive_range
2583
2638
  value: f64
2584
2639
  modifiers: []varint
2585
2640
  uuid: string
@@ -2619,7 +2674,37 @@
2619
2674
  id: varint
2620
2675
  accelerationPower: f64
2621
2676
  ## (ClientboundCustomReportDetailsPacket, ClientboundServerLinksPacket is common)
2622
-
2677
+ # MC: ClientboundTrackedWaypointPacket
2678
+ packet_tracked_waypoint:
2679
+ operation: varint =>
2680
+ 0: track
2681
+ 1: untrack
2682
+ 2: update
2683
+ waypoint:
2684
+ hasUUID: bool
2685
+ _: hasUUID ?
2686
+ if true:
2687
+ uuid: UUID
2688
+ if false:
2689
+ id: string
2690
+ icon:
2691
+ style: string
2692
+ color?: i32 # RGB color with alpha fixed at FF
2693
+ type: varint =>
2694
+ 0: empty
2695
+ 1: vec3i
2696
+ 2: chunk
2697
+ 3: azimuth
2698
+ data: type ?
2699
+ if vec3i: vec3i
2700
+ if chunk:
2701
+ chunkX: varint
2702
+ chunkZ: varint
2703
+ if azimuth: f32
2704
+ ## (clear_dialog is common)
2705
+ # MC: ClientboundShowDialogGamePacket
2706
+ packet_show_dialog:
2707
+ dialog: ["registryEntryHolder", { "baseName": "dialog", "otherwise": { "name": "data", "type": "anonymousNbt" } }]
2623
2708
  packet:
2624
2709
  name: varint =>
2625
2710
  - bundle_delimiter
@@ -2753,6 +2838,9 @@
2753
2838
  - set_projectile_power
2754
2839
  - custom_report_details
2755
2840
  - server_links
2841
+ - tracked_waypoint
2842
+ - clear_dialog
2843
+ - show_dialog
2756
2844
  params: name ?
2757
2845
  if bundle_delimiter: void
2758
2846
  if spawn_entity: packet_spawn_entity
@@ -2885,6 +2973,9 @@
2885
2973
  if set_projectile_power: packet_set_projectile_power
2886
2974
  if custom_report_details: packet_common_custom_report_details
2887
2975
  if server_links: packet_common_server_links
2976
+ if tracked_waypoint: packet_tracked_waypoint
2977
+ if clear_dialog: packet_common_clear_dialog
2978
+ if show_dialog: packet_show_dialog
2888
2979
 
2889
2980
  ^play.toServer.types:
2890
2981
  # MC: ServerboundAcceptTeleportationPacket
@@ -2900,7 +2991,18 @@
2900
2991
  selectedItemIndex: varint
2901
2992
  # MC: ServerboundChangeDifficultyPacket
2902
2993
  packet_set_difficulty:
2903
- newDifficulty: u8
2994
+ newDifficulty: varint =>
2995
+ 0: peaceful
2996
+ 1: easy
2997
+ 2: normal
2998
+ 3: hard
2999
+ # MC: ServerboundChangeGameModePacket
3000
+ packet_change_gamemode:
3001
+ mode: varint =>
3002
+ 0: survival
3003
+ 1: creative
3004
+ 2: adventure
3005
+ 3: spectator
2904
3006
  # MC: ServerboundChatAckPacket
2905
3007
  packet_message_acknowledgement:
2906
3008
  count: varint
@@ -3105,7 +3207,14 @@
3105
3207
  # MC: ServerboundPlayerCommandPacket
3106
3208
  packet_entity_action:
3107
3209
  entityId: varint
3108
- actionId: varint
3210
+ actionId: varint =>
3211
+ - leave_bed
3212
+ - start_sprinting
3213
+ - stop_sprinting
3214
+ - start_horse_jump
3215
+ - stop_horse_jump
3216
+ - open_vehicle_inventory
3217
+ - start_elytra_flying
3109
3218
  jumpBoost: varint
3110
3219
  # MC: ServerboundPlayerInputPacket
3111
3220
  # previously: packet_steer_vehicle
@@ -3194,6 +3303,7 @@
3194
3303
  metadata: string
3195
3304
  integrity: f32
3196
3305
  seed: varint
3306
+ # New `strict` flag
3197
3307
  flags: u8 =>
3198
3308
  - ignore_entities
3199
3309
  - show_air
@@ -3252,6 +3362,7 @@
3252
3362
  - query_block_nbt
3253
3363
  - select_bundle_item
3254
3364
  - set_difficulty
3365
+ - change_gamemode
3255
3366
  - message_acknowledgement
3256
3367
  - chat_command
3257
3368
  - chat_command_signed
@@ -3309,15 +3420,17 @@
3309
3420
  - set_test_block
3310
3421
  - update_sign
3311
3422
  - arm_animation
3312
- - test_instance_block_action
3313
3423
  - spectate
3424
+ - test_instance_block_action
3314
3425
  - block_place
3315
3426
  - use_item
3427
+ - custom_click_action
3316
3428
  params: name ?
3317
3429
  if teleport_confirm: packet_teleport_confirm
3318
3430
  if query_block_nbt: packet_query_block_nbt
3319
3431
  if select_bundle_item: packet_select_bundle_item
3320
3432
  if set_difficulty: packet_set_difficulty
3433
+ if change_gamemode: packet_change_gamemode
3321
3434
  if message_acknowledgement: packet_message_acknowledgement
3322
3435
  if chat_command: packet_chat_command
3323
3436
  if chat_command_signed: packet_chat_command_signed
@@ -3335,6 +3448,7 @@
3335
3448
  if set_slot_state: packet_set_slot_state
3336
3449
  if cookie_response: packet_common_cookie_response
3337
3450
  if custom_payload: packet_custom_payload
3451
+ if debug_sample_subscription: packet_debug_sample_subscription
3338
3452
  if edit_book: packet_edit_book
3339
3453
  if query_entity_nbt: packet_query_entity_nbt
3340
3454
  if use_entity: packet_use_entity
@@ -3373,7 +3487,8 @@
3373
3487
  if set_test_block: packet_set_test_block
3374
3488
  if update_sign: packet_update_sign
3375
3489
  if arm_animation: packet_arm_animation
3376
- if test_instance_block_action: packet_test_instance_block_action
3377
3490
  if spectate: packet_spectate
3491
+ if test_instance_block_action: packet_test_instance_block_action
3378
3492
  if block_place: packet_block_place
3379
3493
  if use_item: packet_use_item
3494
+ if custom_click_action: packet_common_custom_click_action
@@ -1,3 +1,10 @@
1
+ ## 3.96.0
2
+ * [Update proto.yml for Minecraft 1.21.6 (#1039)](https://github.com/PrismarineJS/minecraft-data/commit/09821c14cc7ced37ac2e2554bc6bc0f84c4390c7) (thanks @rom1504)
3
+ * [Enforce no additional properties for enchantments (#1053)](https://github.com/PrismarineJS/minecraft-data/commit/c7509e277a28753663e5f48433f146eb17773f0d) (thanks @ItsDrike)
4
+ * [Add 25w33a to pc protocolVersions.json](https://github.com/PrismarineJS/minecraft-data/commit/a30c6c4732864d4c30b14e73f7732ce0f15406a3) (thanks @github-actions[bot])
5
+ * [Fix biomes schema validation issues (#1049)](https://github.com/PrismarineJS/minecraft-data/commit/31e0a3f2e7df3ae932fa39159028e52be402937b) (thanks @ItsDrike)
6
+ * [Make items schema strict and document missing fields (#1052)](https://github.com/PrismarineJS/minecraft-data/commit/db4139e7812e998220178d010cda73053e40f75c) (thanks @ItsDrike)
7
+
1
8
  ## 3.95.1
2
9
  * [Fix features schema inconsistencies and validation issues (#1047)](https://github.com/PrismarineJS/minecraft-data/commit/c949824c7a34c0f8a5ed2b3d0d3240a964eeadd5) (thanks @rom1504)
3
10
  * [Fix bedrock 1.21.100 packet_correct_player_move_prediction (#1044)](https://github.com/PrismarineJS/minecraft-data/commit/b6a81e62cf37e0eb9fdfb3477782219ff6b85adb) (thanks @TSL534)
@@ -2,9 +2,10 @@
2
2
  "title": "biomes",
3
3
  "type": "array",
4
4
  "uniqueItems": true,
5
- "items" : {
5
+ "items": {
6
6
  "title": "biome",
7
7
  "type": "object",
8
+ "additionalProperties": false,
8
9
  "properties": {
9
10
  "id": {
10
11
  "description": "The unique identifier for a biome",
@@ -27,14 +28,15 @@
27
28
  },
28
29
  "precipitation": {
29
30
  "description": "The type of precipitation: none, rain or snow [before 1.19.4]",
30
- "type": "string"
31
+ "type": "string",
32
+ "enum": ["none", "rain", "snow"]
31
33
  },
32
34
  "has_precipitation": {
33
35
  "description": "True if a biome has any precipitation (rain or snow) [1.19.4+]",
34
36
  "type": "boolean"
35
37
  },
36
38
  "dimension": {
37
- "description": "The dimension of a biome: overworld, nether or end",
39
+ "description": "The dimension of a biome: overworld, nether, end, or the_end (bedrock)",
38
40
  "type": "string"
39
41
  },
40
42
  "displayName": {
@@ -52,6 +54,61 @@
52
54
  "type": "number",
53
55
  "minimum": 0,
54
56
  "maximum": 1
57
+ },
58
+ "depth": {
59
+ "description": "The depth/height variation of the biome terrain",
60
+ "type": "number"
61
+ },
62
+ "climates": {
63
+ "description": "Climate data for the biome",
64
+ "type": "array",
65
+ "minItems": 1,
66
+ "items": {
67
+ "type": "object",
68
+ "additionalProperties": false,
69
+ "properties": {
70
+ "temperature": {
71
+ "description": "Climate temperature value",
72
+ "type": "number"
73
+ },
74
+ "humidity": {
75
+ "description": "Climate humidity value",
76
+ "type": "number"
77
+ },
78
+ "altitude": {
79
+ "description": "Climate altitude value",
80
+ "type": "number"
81
+ },
82
+ "weirdness": {
83
+ "description": "Climate weirdness value",
84
+ "type": "number"
85
+ },
86
+ "offset": {
87
+ "description": "Climate offset value",
88
+ "type": "number"
89
+ }
90
+ },
91
+ "required": [
92
+ "temperature",
93
+ "humidity",
94
+ "altitude",
95
+ "weirdness",
96
+ "offset"
97
+ ]
98
+ }
99
+ },
100
+ "name_legacy": {
101
+ "description": "Legacy name of the biome used in older versions",
102
+ "type": "string"
103
+ },
104
+ "parent": {
105
+ "description": "Parent biome name for variant biomes",
106
+ "type": "string"
107
+ },
108
+ "child": {
109
+ "description": "Child biome ID for variant biomes",
110
+ "type": "integer",
111
+ "minimum": 0
55
112
  }
56
113
  },
57
114
  "required": [
@@ -2,7 +2,7 @@
2
2
  "title": "enchantments",
3
3
  "type": "array",
4
4
  "uniqueItems": true,
5
- "items" : {
5
+ "items": {
6
6
  "title": "enchantment",
7
7
  "type": "object",
8
8
  "properties": {
@@ -99,6 +99,7 @@
99
99
  "curse",
100
100
  "tradeable",
101
101
  "discoverable"
102
- ]
102
+ ],
103
+ "additionalProperties": false
103
104
  }
104
105
  }