minecraft-data 3.50.0 → 3.52.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 (109) hide show
  1. package/data.js +51 -1
  2. package/doc/history.md +8 -0
  3. package/index.d.ts +398 -1
  4. package/minecraft-data/README.md +1 -1
  5. package/minecraft-data/data/bedrock/1.16.201/proto.yml +1 -0
  6. package/minecraft-data/data/bedrock/1.16.201/protocol.json +12 -5
  7. package/minecraft-data/data/bedrock/1.16.201/types.yml +2 -2
  8. package/minecraft-data/data/bedrock/1.16.210/proto.yml +1 -0
  9. package/minecraft-data/data/bedrock/1.16.210/protocol.json +12 -5
  10. package/minecraft-data/data/bedrock/1.16.210/types.yml +2 -2
  11. package/minecraft-data/data/bedrock/1.16.220/proto.yml +1 -0
  12. package/minecraft-data/data/bedrock/1.16.220/protocol.json +12 -5
  13. package/minecraft-data/data/bedrock/1.16.220/types.yml +2 -2
  14. package/minecraft-data/data/bedrock/1.17.0/proto.yml +1 -0
  15. package/minecraft-data/data/bedrock/1.17.0/protocol.json +12 -5
  16. package/minecraft-data/data/bedrock/1.17.0/types.yml +2 -2
  17. package/minecraft-data/data/bedrock/1.17.10/proto.yml +1 -0
  18. package/minecraft-data/data/bedrock/1.17.10/protocol.json +12 -5
  19. package/minecraft-data/data/bedrock/1.17.10/types.yml +2 -2
  20. package/minecraft-data/data/bedrock/1.17.30/proto.yml +1 -0
  21. package/minecraft-data/data/bedrock/1.17.30/protocol.json +12 -5
  22. package/minecraft-data/data/bedrock/1.17.30/types.yml +2 -2
  23. package/minecraft-data/data/bedrock/1.17.40/proto.yml +1 -0
  24. package/minecraft-data/data/bedrock/1.17.40/protocol.json +12 -5
  25. package/minecraft-data/data/bedrock/1.17.40/types.yml +2 -2
  26. package/minecraft-data/data/bedrock/1.18.0/proto.yml +1 -0
  27. package/minecraft-data/data/bedrock/1.18.0/protocol.json +12 -5
  28. package/minecraft-data/data/bedrock/1.18.0/types.yml +2 -2
  29. package/minecraft-data/data/bedrock/1.18.11/proto.yml +1 -0
  30. package/minecraft-data/data/bedrock/1.18.11/protocol.json +12 -5
  31. package/minecraft-data/data/bedrock/1.18.11/types.yml +2 -2
  32. package/minecraft-data/data/bedrock/1.18.30/proto.yml +1 -0
  33. package/minecraft-data/data/bedrock/1.18.30/protocol.json +12 -5
  34. package/minecraft-data/data/bedrock/1.18.30/types.yml +2 -2
  35. package/minecraft-data/data/bedrock/1.19.1/proto.yml +1 -0
  36. package/minecraft-data/data/bedrock/1.19.1/protocol.json +12 -5
  37. package/minecraft-data/data/bedrock/1.19.1/types.yml +2 -2
  38. package/minecraft-data/data/bedrock/1.19.10/proto.yml +1 -0
  39. package/minecraft-data/data/bedrock/1.19.10/protocol.json +12 -5
  40. package/minecraft-data/data/bedrock/1.19.10/types.yml +2 -2
  41. package/minecraft-data/data/bedrock/1.19.20/proto.yml +1 -0
  42. package/minecraft-data/data/bedrock/1.19.20/protocol.json +12 -5
  43. package/minecraft-data/data/bedrock/1.19.20/types.yml +2 -2
  44. package/minecraft-data/data/bedrock/1.19.21/proto.yml +1 -0
  45. package/minecraft-data/data/bedrock/1.19.21/protocol.json +12 -5
  46. package/minecraft-data/data/bedrock/1.19.21/types.yml +2 -2
  47. package/minecraft-data/data/bedrock/1.19.30/proto.yml +1 -0
  48. package/minecraft-data/data/bedrock/1.19.30/protocol.json +12 -5
  49. package/minecraft-data/data/bedrock/1.19.30/types.yml +2 -2
  50. package/minecraft-data/data/bedrock/1.19.40/proto.yml +1 -0
  51. package/minecraft-data/data/bedrock/1.19.40/protocol.json +12 -5
  52. package/minecraft-data/data/bedrock/1.19.40/types.yml +2 -2
  53. package/minecraft-data/data/bedrock/1.19.50/proto.yml +1 -0
  54. package/minecraft-data/data/bedrock/1.19.50/protocol.json +12 -5
  55. package/minecraft-data/data/bedrock/1.19.50/types.yml +2 -2
  56. package/minecraft-data/data/bedrock/1.19.60/proto.yml +1 -0
  57. package/minecraft-data/data/bedrock/1.19.60/protocol.json +13 -6
  58. package/minecraft-data/data/bedrock/1.19.60/types.yml +3 -3
  59. package/minecraft-data/data/bedrock/1.19.62/proto.yml +1 -0
  60. package/minecraft-data/data/bedrock/1.19.62/protocol.json +13 -6
  61. package/minecraft-data/data/bedrock/1.19.62/types.yml +3 -3
  62. package/minecraft-data/data/bedrock/1.19.70/proto.yml +1 -0
  63. package/minecraft-data/data/bedrock/1.19.70/protocol.json +13 -6
  64. package/minecraft-data/data/bedrock/1.19.70/types.yml +3 -3
  65. package/minecraft-data/data/bedrock/1.19.80/proto.yml +1 -0
  66. package/minecraft-data/data/bedrock/1.19.80/protocol.json +14 -7
  67. package/minecraft-data/data/bedrock/1.19.80/types.yml +4 -4
  68. package/minecraft-data/data/bedrock/1.20.0/proto.yml +1 -0
  69. package/minecraft-data/data/bedrock/1.20.0/protocol.json +14 -7
  70. package/minecraft-data/data/bedrock/1.20.0/types.yml +4 -4
  71. package/minecraft-data/data/bedrock/1.20.10/proto.yml +1 -0
  72. package/minecraft-data/data/bedrock/1.20.10/protocol.json +14 -7
  73. package/minecraft-data/data/bedrock/1.20.10/types.yml +4 -4
  74. package/minecraft-data/data/bedrock/1.20.30/proto.yml +1 -0
  75. package/minecraft-data/data/bedrock/1.20.30/protocol.json +14 -7
  76. package/minecraft-data/data/bedrock/1.20.30/types.yml +4 -4
  77. package/minecraft-data/data/bedrock/1.20.40/proto.yml +1 -0
  78. package/minecraft-data/data/bedrock/1.20.40/protocol.json +14 -7
  79. package/minecraft-data/data/bedrock/1.20.40/types.yml +4 -4
  80. package/minecraft-data/data/bedrock/1.20.50/protocol.json +14 -7
  81. package/minecraft-data/data/bedrock/latest/proto.yml +1 -0
  82. package/minecraft-data/data/bedrock/latest/types.yml +4 -4
  83. package/minecraft-data/data/dataPaths.json +53 -3
  84. package/minecraft-data/data/pc/1.20.2/loginPacket.json +8464 -0
  85. package/minecraft-data/data/pc/1.20.2/protocol.json +14 -14
  86. package/minecraft-data/data/pc/1.20.2/recipes.json +385 -409
  87. package/minecraft-data/data/pc/1.20.3/blockCollisionShapes.json +136951 -0
  88. package/minecraft-data/data/pc/1.20.3/blocks.json +39334 -0
  89. package/minecraft-data/data/pc/1.20.3/commands.json +18734 -0
  90. package/minecraft-data/data/pc/1.20.3/entities.json +1262 -0
  91. package/minecraft-data/data/pc/1.20.3/foods.json +402 -0
  92. package/minecraft-data/data/pc/1.20.3/items.json +8591 -0
  93. package/minecraft-data/data/pc/1.20.3/language.json +6542 -0
  94. package/minecraft-data/data/pc/1.20.3/materials.json +154 -0
  95. package/minecraft-data/data/pc/1.20.3/particles.json +406 -0
  96. package/minecraft-data/data/pc/1.20.3/recipes.json +15119 -0
  97. package/minecraft-data/data/pc/1.20.3/version.json +5 -0
  98. package/minecraft-data/data/pc/1.20.4/blocks.json +39334 -0
  99. package/minecraft-data/data/pc/1.20.4/version.json +5 -0
  100. package/minecraft-data/data/pc/1.8/items.json +1114 -90
  101. package/minecraft-data/data/pc/common/protocolVersions.json +16 -0
  102. package/minecraft-data/data/pc/common/versions.json +3 -1
  103. package/minecraft-data/doc/history.md +12 -0
  104. package/minecraft-data/tools/js/test/audit_recipes.js +27 -0
  105. package/minecraft-data/tools/js/test/test.js +1 -0
  106. package/package.json +2 -2
  107. package/typings/generate-typings.js +21 -0
  108. package/typings/index-template.d.ts +2 -0
  109. package/typings/test-typings.ts +5 -0
package/data.js CHANGED
@@ -1270,10 +1270,60 @@ module.exports =
1270
1270
  get particles () { return require("./minecraft-data/data/pc/1.20/particles.json") },
1271
1271
  get blockLoot () { return require("./minecraft-data/data/pc/1.20/blockLoot.json") },
1272
1272
  get entityLoot () { return require("./minecraft-data/data/pc/1.20/entityLoot.json") },
1273
- get loginPacket () { return require("./minecraft-data/data/pc/1.19.2/loginPacket.json") },
1273
+ get loginPacket () { return require("./minecraft-data/data/pc/1.20.2/loginPacket.json") },
1274
1274
  get tints () { return require("./minecraft-data/data/pc/1.20.2/tints.json") },
1275
1275
  get mapIcons () { return require("./minecraft-data/data/pc/1.20.2/mapIcons.json") },
1276
1276
  get commands () { return require("./minecraft-data/data/pc/1.20.2/commands.json") }
1277
+ },
1278
+ '1.20.3': {
1279
+ get attributes () { return require("./minecraft-data/data/pc/1.17/attributes.json") },
1280
+ get blocks () { return require("./minecraft-data/data/pc/1.20.3/blocks.json") },
1281
+ get blockCollisionShapes () { return require("./minecraft-data/data/pc/1.20.3/blockCollisionShapes.json") },
1282
+ get biomes () { return require("./minecraft-data/data/pc/1.20.2/biomes.json") },
1283
+ get effects () { return require("./minecraft-data/data/pc/1.20.2/effects.json") },
1284
+ get items () { return require("./minecraft-data/data/pc/1.20.3/items.json") },
1285
+ get enchantments () { return require("./minecraft-data/data/pc/1.20.2/enchantments.json") },
1286
+ get recipes () { return require("./minecraft-data/data/pc/1.20.3/recipes.json") },
1287
+ get instruments () { return require("./minecraft-data/data/pc/1.20.2/instruments.json") },
1288
+ get materials () { return require("./minecraft-data/data/pc/1.20.3/materials.json") },
1289
+ get language () { return require("./minecraft-data/data/pc/1.20.3/language.json") },
1290
+ get entities () { return require("./minecraft-data/data/pc/1.20.3/entities.json") },
1291
+ get protocol () { return require("./minecraft-data/data/pc/1.20.2/protocol.json") },
1292
+ get windows () { return require("./minecraft-data/data/pc/1.16.1/windows.json") },
1293
+ get version () { return require("./minecraft-data/data/pc/1.20.3/version.json") },
1294
+ get foods () { return require("./minecraft-data/data/pc/1.20.3/foods.json") },
1295
+ get particles () { return require("./minecraft-data/data/pc/1.20.3/particles.json") },
1296
+ get blockLoot () { return require("./minecraft-data/data/pc/1.20/blockLoot.json") },
1297
+ get entityLoot () { return require("./minecraft-data/data/pc/1.20/entityLoot.json") },
1298
+ get loginPacket () { return require("./minecraft-data/data/pc/1.19.2/loginPacket.json") },
1299
+ get tints () { return require("./minecraft-data/data/pc/1.20.2/tints.json") },
1300
+ get mapIcons () { return require("./minecraft-data/data/pc/1.20.2/mapIcons.json") },
1301
+ get commands () { return require("./minecraft-data/data/pc/1.20.3/commands.json") }
1302
+ },
1303
+ '1.20.4': {
1304
+ get attributes () { return require("./minecraft-data/data/pc/1.17/attributes.json") },
1305
+ get blocks () { return require("./minecraft-data/data/pc/1.20.4/blocks.json") },
1306
+ get blockCollisionShapes () { return require("./minecraft-data/data/pc/1.20.3/blockCollisionShapes.json") },
1307
+ get biomes () { return require("./minecraft-data/data/pc/1.20.2/biomes.json") },
1308
+ get effects () { return require("./minecraft-data/data/pc/1.20.2/effects.json") },
1309
+ get items () { return require("./minecraft-data/data/pc/1.20.3/items.json") },
1310
+ get enchantments () { return require("./minecraft-data/data/pc/1.20.2/enchantments.json") },
1311
+ get recipes () { return require("./minecraft-data/data/pc/1.20.3/recipes.json") },
1312
+ get instruments () { return require("./minecraft-data/data/pc/1.20.2/instruments.json") },
1313
+ get materials () { return require("./minecraft-data/data/pc/1.20.3/materials.json") },
1314
+ get language () { return require("./minecraft-data/data/pc/1.20.3/language.json") },
1315
+ get entities () { return require("./minecraft-data/data/pc/1.20.3/entities.json") },
1316
+ get protocol () { return require("./minecraft-data/data/pc/1.20.2/protocol.json") },
1317
+ get windows () { return require("./minecraft-data/data/pc/1.16.1/windows.json") },
1318
+ get version () { return require("./minecraft-data/data/pc/1.20.4/version.json") },
1319
+ get foods () { return require("./minecraft-data/data/pc/1.20.3/foods.json") },
1320
+ get particles () { return require("./minecraft-data/data/pc/1.20.3/particles.json") },
1321
+ get blockLoot () { return require("./minecraft-data/data/pc/1.20/blockLoot.json") },
1322
+ get entityLoot () { return require("./minecraft-data/data/pc/1.20/entityLoot.json") },
1323
+ get loginPacket () { return require("./minecraft-data/data/pc/1.19.2/loginPacket.json") },
1324
+ get tints () { return require("./minecraft-data/data/pc/1.20.2/tints.json") },
1325
+ get mapIcons () { return require("./minecraft-data/data/pc/1.20.2/mapIcons.json") },
1326
+ get commands () { return require("./minecraft-data/data/pc/1.20.3/commands.json") }
1277
1327
  }
1278
1328
  },
1279
1329
  'bedrock': {
package/doc/history.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # History
2
2
 
3
+ ## 3.52.0
4
+
5
+ * update `minecraft-data`
6
+
7
+ ## 3.51.0
8
+
9
+ * update `minecraft-data`
10
+
3
11
  ## 3.50.0
4
12
 
5
13
  * update `minecraft-data`
package/index.d.ts CHANGED
@@ -914,7 +914,402 @@ declare namespace MinecraftData {
914
914
  id: number;
915
915
  }[];
916
916
  }
917
- export interface Version {
917
+
918
+
919
+ export interface SupportsFeature {
920
+ /** `1.9 - latest`
921
+ * the chunk format uses local palettes */
922
+ "usesPalettedChunks": boolean;
923
+ /** `1.8 - 1.12.2`
924
+ * spawner is called mob_spawner */
925
+ "mobSpawner": boolean;
926
+ /** `1.13 - latest`
927
+ * spawner is called spawner */
928
+ "spawner": boolean;
929
+ /** `1.9 - latest`
930
+ * the elytra exists and players can fly with it */
931
+ "hasElytraFlying": boolean;
932
+ /** `1.11 - 1.13.2`
933
+ * firework attached entity metadata is at index 7 and is varint */
934
+ "fireworkMetadataVarInt7": boolean;
935
+ /** `1.14 - 1.16.5`
936
+ * firework attached entity metadata is at index 8 and is optvarint */
937
+ "fireworkMetadataOptVarInt8": boolean;
938
+ /** `1.17 - latest`
939
+ * firework attached entity metadata is at index 9 and is optvarint */
940
+ "fireworkMetadataOptVarInt9": boolean;
941
+ /** `1.11 - 1.12.2`
942
+ * the firework entity used for elytra boosting is named fireworks_rocket */
943
+ "fireworkNamePlural": boolean;
944
+ /** `1.13 - latest`
945
+ * the firework entity used for elytra boosting is named firework_rocket */
946
+ "fireworkNameSingular": boolean;
947
+ /** `1.8 - 1.12.2`
948
+ * block metadata is encoded in a separate metadata */
949
+ "blockMetadata": boolean;
950
+ /** `1.13 - latest`
951
+ * block metadata is encoded as state id */
952
+ "blockStateId": boolean;
953
+ /** `1.13 - latest`
954
+ * can sleep near mobs in creative */
955
+ "creativeSleepNearMobs": boolean;
956
+ /** `1.8 - 1.8.9`
957
+ * Entity positions are represented with fixed point numbers */
958
+ "fixedPointPosition": boolean;
959
+ /** `1.9 - latest`
960
+ * Entity positions are represented with double */
961
+ "doublePosition": boolean;
962
+ /** `1.8 - 1.8.9`
963
+ * Delta of position are represented with fixed point numbers */
964
+ "fixedPointDelta": boolean;
965
+ /** `1.9 - latest`
966
+ * Delta of position are represented with fixed point numbers times 128 */
967
+ "fixedPointDelta128": boolean;
968
+ /** `1.8 - 1.12.2`
969
+ * custom channel are prefixed by MC| */
970
+ "customChannelMCPrefixed": boolean;
971
+ /** `1.13 - latest`
972
+ * custom channel is an identifier starting in minecraft namespace */
973
+ "customChannelIdentifier": boolean;
974
+ /** `1.19 - latest`
975
+ * dimensionData like world height is exclusively in the codec in login packet */
976
+ "dimensionDataInCodec": boolean;
977
+ /** `1.8 - 1.8.9`
978
+ * use item is done with block place packet */
979
+ "useItemWithBlockPlace": boolean;
980
+ /** `1.9 - latest`
981
+ * use item is done with its own packet */
982
+ "useItemWithOwnPacket": boolean;
983
+ /** `1.8 - 1.8.9`
984
+ * block_place packet has heldItem */
985
+ "blockPlaceHasHeldItem": boolean;
986
+ /** `1.9 - 1.10.2`
987
+ * block_place packet has hand and int cursor */
988
+ "blockPlaceHasHandAndIntCursor": boolean;
989
+ /** `1.11 - 1.13.2`
990
+ * block_place packet has hand and float cursor */
991
+ "blockPlaceHasHandAndFloatCursor": boolean;
992
+ /** `1.14 - latest`
993
+ * block_place packet has inside block */
994
+ "blockPlaceHasInsideBlock": boolean;
995
+ /** `1.8 - 1.8.9`
996
+ * teleport is done using position packet */
997
+ "teleportUsesPositionPacket": boolean;
998
+ /** `1.8 - 1.11.2`
999
+ * the position is sent every tick */
1000
+ "positionUpdateSentEveryTick": boolean;
1001
+ /** `1.9 - latest`
1002
+ * teleport is done using its own packet */
1003
+ "teleportUsesOwnPacket": boolean;
1004
+ /** `1.8 - 1.12.2`
1005
+ * one block of several variations */
1006
+ "oneBlockForSeveralVariations": boolean;
1007
+ /** `1.13 - latest`
1008
+ * all variations of a packet have their own id */
1009
+ "blockSchemeIsFlat": boolean;
1010
+ /** `1.8 - 1.12.2`
1011
+ * tab complete doesn't have a tool tip */
1012
+ "tabCompleteHasNoToolTip": boolean;
1013
+ /** `1.13 - latest`
1014
+ * tab complete has a tool tip */
1015
+ "tabCompleteHasAToolTip": boolean;
1016
+ /** `1.8 - 1.12.2`
1017
+ * effect are prefixed by minecraft: */
1018
+ "effectAreMinecraftPrefixed": boolean;
1019
+ /** `1.13 - latest`
1020
+ * effect are not prefixed */
1021
+ "effectAreNotPrefixed": boolean;
1022
+ /** `1.8 - 1.12.2`
1023
+ * items are also blocks */
1024
+ "itemsAreAlsoBlocks": boolean;
1025
+ /** `1.13 - latest`
1026
+ * items are not block */
1027
+ "itemsAreNotBlocks": boolean;
1028
+ /** `1.14 - latest`
1029
+ * the fishing hook entity is named fishing_bobber */
1030
+ "fishingBobberCorrectlyNamed": boolean;
1031
+ /** `1.8 - 1.12.2`
1032
+ * book editing is handled through plugin channels */
1033
+ "editBookIsPluginChannel": boolean;
1034
+ /** `1.13 - latest`
1035
+ * book editing is handled through a packet */
1036
+ "hasEditBookPacket": boolean;
1037
+ /** `1.8 - 1.8.9`
1038
+ * when sending MC|BSign, item type should be written_book */
1039
+ "clientUpdateBookIdWhenSign": boolean;
1040
+ /** `1.8 - 1.12.2`
1041
+ * select trade through plugin channel MC|TrSel */
1042
+ "useMCTrSel": boolean;
1043
+ /** `1.8 - 1.12.2`
1044
+ * receive trade list through plugin channel MC|TrList */
1045
+ "useMCTrList": boolean;
1046
+ /** `1.13 - 1.13.2`
1047
+ * receive trade list through plugin channel usetrader_list */
1048
+ "usetraderlist": boolean;
1049
+ /** `1.8 - 1.8.9`
1050
+ * doesn't have an off-hand slot */
1051
+ "doesntHaveOffHandSlot": boolean;
1052
+ /** `1.8 - 1.15.2`
1053
+ * dimension is an int (the index of an enum) */
1054
+ "dimensionIsAnInt": boolean;
1055
+ /** `1.16 - 1.16.1`
1056
+ * dimension is a string (the dimension is the same as the world name) */
1057
+ "dimensionIsAString": boolean;
1058
+ /** `1.16.2 - latest`
1059
+ * dimension is an nbt compound */
1060
+ "dimensionIsAWorld": boolean;
1061
+ /** `1.17 - latest`
1062
+ * dimensionData is available, describing additional dimension information */
1063
+ "dimensionDataIsAvailable": boolean;
1064
+ /** `1.8 - 1.12.2`
1065
+ * chests don't have a type property */
1066
+ "doesntHaveChestType": boolean;
1067
+ /** `1.8 - 1.8.9`
1068
+ * packet MC|AdvCmd was incorrectly spelled in 1.8 as MC|AdvCdm */
1069
+ "usesAdvCdm": boolean;
1070
+ /** `1.9 - 1.12.2`
1071
+ * uses MC|AdvCmd to set command block information */
1072
+ "usesAdvCmd": boolean;
1073
+ /** `1.8 - 1.11.2`
1074
+ * gives a index for each trade in a villagers metadata */
1075
+ "indexesVillagerRecipes": boolean;
1076
+ /** `1.9 - latest`
1077
+ * if there is a cooldown after attacks to deal full damage */
1078
+ "hasAttackCooldown": boolean;
1079
+ /** `1.16 - latest`
1080
+ * uses the login packet as defined in mcData */
1081
+ "usesLoginPacket": boolean;
1082
+ /** `1.16.2 - latest`
1083
+ * in the multi_block_change packet is stored as a single number */
1084
+ "usesMultiblockSingleLong": boolean;
1085
+ /** `1.16.2 - latest`
1086
+ * in the multi_block_change packet, all 3 axis coords are defined */
1087
+ "usesMultiblock3DChunkCoords": boolean;
1088
+ /** `1.8 - 1.12.2`
1089
+ * the parameter metadata of the setblock command is a number */
1090
+ "setBlockUsesMetadataNumber": boolean;
1091
+ /** `1.8 - 1.12.2`
1092
+ * send item name for anvil using plugin channel MC|TrList */
1093
+ "useMCItemName": boolean;
1094
+ /** `1.14 - latest`
1095
+ * selecting a trade automatically puts the required items into trading slots */
1096
+ "selectingTradeMovesItems": boolean;
1097
+ /** `1.8 - 1.9.4`
1098
+ * resource pack uses hash validation */
1099
+ "resourcePackUsesHash": boolean;
1100
+ /** `1.8 - 1.10.2`
1101
+ * max chars in chat */
1102
+ "lessCharsInChat": boolean;
1103
+ /** `1.13 - latest`
1104
+ * teams use chatcomponents for formatting */
1105
+ "teamUsesChatComponents": boolean;
1106
+ /** `1.8 - 1.8.9`
1107
+ * teams use scoreboard_team packet */
1108
+ "teamUsesScoreboard": boolean;
1109
+ /** `1.11 - 1.12.2`
1110
+ * this is when the end_crystal's entity name is ender_crystal */
1111
+ "enderCrystalNameEndsInErNoCaps": boolean;
1112
+ /** `1.14 - latest`
1113
+ * this is when the end_crystal's entity name is end_crystal */
1114
+ "enderCrystalNameNoCapsWithUnderscore": boolean;
1115
+ /** `1.8 - 1.10.2`
1116
+ * this is when some entities names would be captialized and appended without underscores like 'Boat' or 'ArmorStand' */
1117
+ "entityNameUpperCaseNoUnderscore": boolean;
1118
+ /** `1.13 - 1.13.2`
1119
+ * this is when some entity names are lowercase and appended without underscores like 'armorstand' or 'endercrystal' */
1120
+ "entityNameLowerCaseNoUnderscore": boolean;
1121
+ /** `1.8 - 1.16.5`
1122
+ * this is when the description packet existed */
1123
+ "transactionPacketExists": boolean;
1124
+ /** `1.17.1 - latest`
1125
+ * starting in 1.17.1, actionId has been replaced with stateId */
1126
+ "stateIdUsed": boolean;
1127
+ /** `1.8 - 1.16.5`
1128
+ * pre 1.17, actionId is used */
1129
+ "actionIdUsed": boolean;
1130
+ /** `1.17 - latest`
1131
+ * use setslot as transaction instead of just hoping it'll work */
1132
+ "setSlotAsTransaction": boolean;
1133
+ /** `1.8 - 1.8.9`
1134
+ * arm animation packet sent before use entity packet */
1135
+ "armAnimationBeforeUse": boolean;
1136
+ /** `1.18 - latest`
1137
+ * world y defaults to starts at -64 and ends at 384 */
1138
+ "tallWorld": boolean;
1139
+ /** `1.8 - 1.8.9`
1140
+ * sign text send when updating signs is send as stringified strings */
1141
+ "sendStringifiedSignText": boolean;
1142
+ /** `1.13 - latest`
1143
+ * undefined */
1144
+ "usesBlockStates": boolean;
1145
+ /** `1.17 - latest`
1146
+ * undefined */
1147
+ "effectNamesMatchRegistryName": boolean;
1148
+ /** `1.9 - latest`
1149
+ * undefined */
1150
+ "shieldSlot": boolean;
1151
+ /** `1.14 - latest`
1152
+ * undefined */
1153
+ "village&pillageInventoryWindows": boolean;
1154
+ /** `1.16 - latest`
1155
+ * undefined */
1156
+ "netherUpdateInventoryWindows": boolean;
1157
+ /** `1.8 - 1.8`
1158
+ * Chunk unloading is done by sending an empty chunk */
1159
+ "unloadChunkByEmptyChunk": boolean;
1160
+ /** `1.9 - 1.16`
1161
+ * Chunk unloading is done by sending directly an unload chunk packet */
1162
+ "unloadChunkDirect": boolean;
1163
+ /** `1.8 - 1.10`
1164
+ * entity names are in camel case */
1165
+ "entityCamelCase": boolean;
1166
+ /** `1.11 - 1.16`
1167
+ * entity name are in snake case */
1168
+ "entitySnakeCase": boolean;
1169
+ /** `1.8 - 1.8`
1170
+ * respawn field is payload */
1171
+ "respawnIsPayload": boolean;
1172
+ /** `1.9 - 1.16`
1173
+ * respawn field is action id */
1174
+ "respawnIsActionId": boolean;
1175
+ /** `1.8 - 1.8`
1176
+ * attach is used to stack entities */
1177
+ "attachStackEntity": boolean;
1178
+ /** `1.9 - 1.16`
1179
+ * set passengers is used to stack entities */
1180
+ "setPassengerStackEntity": boolean;
1181
+ /** `1.13 - 1.16`
1182
+ * many items got merged, separated or renamed */
1183
+ "theFlattening": boolean;
1184
+ /** `1.8 - 1.10`
1185
+ * block_place packet has int cursor */
1186
+ "blockPlaceHasIntCursor": boolean;
1187
+ /** `1.14 - 1.16`
1188
+ * the client's chunk position must be updated to render chunks correctly */
1189
+ "updateViewPosition": boolean;
1190
+ /** `1.14 - latest`
1191
+ * chunk light data is sent in a separate packet */
1192
+ "lightSentSeparately": boolean;
1193
+ /** `1.14 - 1.16`
1194
+ * game difficulty is sent separately from the login packet */
1195
+ "difficultySentSeparately": boolean;
1196
+ /** `1.15 - 1.17_major`
1197
+ * biomes sent in own packet */
1198
+ "biomesSentSeparately": boolean;
1199
+ /** `1.14 - 1.16`
1200
+ * player digging packets should be responded to */
1201
+ "acknowledgePlayerDigging": boolean;
1202
+ /** `1.14 - 1.16`
1203
+ * there are 6 types of signs based on the different trees */
1204
+ "multiTypeSigns": boolean;
1205
+ /** `1.15 - 1.16`
1206
+ * entity metadata is sent separately from the spawn packets */
1207
+ "entityMetadataSentSeparately": boolean;
1208
+ /** `1.16 - 1.16`
1209
+ * entity attributes are in snake case */
1210
+ "attributeSnakeCase": boolean;
1211
+ /** `1.16 - 1.16`
1212
+ * entity equipment packet contains all equipment slots instead of just one */
1213
+ "allEntityEquipmentInOne": boolean;
1214
+ /** `1.12 - 1.16`
1215
+ * entity prefixed with minecraft: on this versions */
1216
+ "entityMCPrefixed": boolean;
1217
+ /** `1.8 - 1.8`
1218
+ * in never versions its nbt but in 1.8 its on metadata */
1219
+ "nbtOnMetadata": boolean;
1220
+ /** `1.13 - 1.16`
1221
+ * added shulker boxes to the game */
1222
+ "theShulkerBoxes": boolean;
1223
+ /**
1224
+ * item.metadata[this_ix] will be the item that was dropped on the ground */
1225
+ "metadataIxOfItem": 8 | 7 | 6 | 5 | 8;
1226
+ /** `1.14_major - latest`
1227
+ * item serialization in [even] newer versions uses present field [exclusively] to show nullability rather than sending blockId as -1 */
1228
+ "itemSerializationWillOnlyUsePresent": boolean;
1229
+ /** `1.13_major - latest`
1230
+ * item serialization in newer versions uses present field to show nullability rather or sending blockId as -1 can be used */
1231
+ "itemSerializationAllowsPresent": boolean;
1232
+ /** `1.8_major - 1.12_major`
1233
+ * item serialization in older versions uses blockId field to show nullability by setting blockId to -1 */
1234
+ "itemSerializationUsesBlockId": boolean;
1235
+ /** `1.13_major - latest`
1236
+ * in newer versions, an nbt key called 'Damage' is used to store durability */
1237
+ "saveDurabilityAsDamage": boolean;
1238
+ /**
1239
+ * what the nbt key for enchants is */
1240
+ "nbtNameForEnchant": "Enchantments" | "ench";
1241
+ /** `1.8_major - latest`
1242
+ * Enchanted books store enchantment data in a separate NBT tag called StoredEnchantments */
1243
+ "booksUseStoredEnchantments": boolean;
1244
+ /**
1245
+ * type of value that stores enchant lvl in the nbt */
1246
+ "typeOfValueForEnchantLevel": "string" | "short";
1247
+ /**
1248
+ * where the durability is saved in nbt */
1249
+ "whereDurabilityIsSerialized": "Damage" | "metadata";
1250
+ /** `1.14_major - latest`
1251
+ * An item's custom Lore is stored as a string in NBT, in older versions it's a list of strings */
1252
+ "itemLoreIsAString": boolean;
1253
+ /** `1.8_major - 1.8_major`
1254
+ * in older versions, spawn eggs have a field in their nbt called 'internalId' which tells what entity they will spawn */
1255
+ "spawnEggsUseInternalIdInNbt": boolean;
1256
+ /** `1.9_major - 1.12_major`
1257
+ * in older versions, spawn eggs have a key in their nbt called EntityTag which is an object with a field called id, which is an identifier like 'minecraft:cow' that tells the client what mob this egg will spawn */
1258
+ "spawnEggsUseEntityTagInNbt": boolean;
1259
+ /** `1.13_major - latest`
1260
+ * in newer versions, spawn eggs have the entity they spawn in their name, ex: 'squid_spawn_egg' */
1261
+ "spawnEggsHaveSpawnedEntityInName": boolean;
1262
+ /** `1.19_major - latest`
1263
+ * starting in 1.19 chat messages generally carry a cryptographic signature, `packet_chat` has been replaced clientbound by `packet_player_chat` and `packet_system_chat` and serverbound by `packet_chat_message` */
1264
+ "signedChat": boolean;
1265
+ /** `1.19 - 1.19.2`
1266
+ * allows for usage of `signature` instead of verifyToken in serverbound packet_encryption_begin */
1267
+ "signatureEncryption": boolean;
1268
+ /** `1.19.2 - latest`
1269
+ * uses `signatureV2` public key signature */
1270
+ "profileKeySignatureV2": boolean;
1271
+ /** `1.16_major - latest`
1272
+ * clientbound chat packet contains message sender's UUID */
1273
+ "clientboundChatHasSender": boolean;
1274
+ /** `1.19 - latest`
1275
+ * One packet to add living and non-living entities */
1276
+ "consolidatedEntitySpawnPacket": boolean;
1277
+ /** `1.19.2`
1278
+ * Signed messages are ordered and depend on previous messages, and message payloads are hashed before generating a signature */
1279
+ "chainedChatWithHashing": boolean;
1280
+ /** `1.19.3 - latest`
1281
+ * Users generate a session with a unique ID upon login. Chat messages are signed using this ID and an index that is increased with each message */
1282
+ "useChatSessions": boolean;
1283
+ /** `1.19.3 - latest`
1284
+ * The player_info packet may contain multiple actions in one packet. The actions field is a bitfield signifying what actions are included */
1285
+ "playerInfoActionIsBitfield": boolean;
1286
+ /** `1.19_major - latest`
1287
+ * Chat messages are formatted on the client side */
1288
+ "clientsideChatFormatting": boolean;
1289
+ /** `1.19.3 - latest`
1290
+ * There exists a serializer of type long for entity metadata */
1291
+ "entityMetadataHasLong": boolean;
1292
+ /** `1.19.4 - latest`
1293
+ * Has a Bundle Packet to group packets for processing at once */
1294
+ "hasBundlePacket": boolean;
1295
+ /** `1.19.4 - latest`
1296
+ * Entity Metadata is defined in mcdata */
1297
+ "mcDataHasEntityMetadata": boolean;
1298
+ /** `1.20 - latest`
1299
+ * Signs can have text on the front and back */
1300
+ "multiSidedSigns": boolean;
1301
+ /** `1.15_major - latest`
1302
+ * Items with maximum durability have explicit NBT data Damage:0 */
1303
+ "explicitMaxDurability": boolean;
1304
+ /** `1.17 - latest`
1305
+ * in 1.17, light encoding changed to handle new world height */
1306
+ "newLightingDataFormat": boolean;
1307
+ /** `1.20.2 - latest`
1308
+ * in 1.20.2, a new configuration state was added to allow configuration after login */
1309
+ "hasConfigurationState": boolean;
1310
+ }
1311
+
1312
+ export interface Version {
918
1313
  // Returns true if the current version is greater than or equal to the `other` version's dataVersion
919
1314
  ['>='](other: string): boolean
920
1315
  // Returns true if the current version is greater than the `other` version's dataVersion
@@ -1105,6 +1500,8 @@ declare namespace MinecraftData {
1105
1500
  mapIconsArray: MapIcon[]
1106
1501
 
1107
1502
  tints: Tints
1503
+
1504
+ supportFeature: <T extends keyof SupportsFeature>(key: T) => SupportsFeature[T]
1108
1505
  }
1109
1506
 
1110
1507
  const versions: {
@@ -9,7 +9,7 @@ Language independent module providing minecraft data for minecraft clients, serv
9
9
 
10
10
  Supports
11
11
  * Minecraft PC version 0.30c (classic), 1.7.10, 1.8.8, 1.9 (15w40b, 1.9, 1.9.1-pre2, 1.9.2, 1.9.4),
12
- 1.10 (16w20a, 1.10-pre1, 1.10, 1.10.1, 1.10.2), 1.11 (16w35a, 1.11, 1.11.2), 1.12 (17w15a, 17w18b, 1.12-pre4, 1.12, 1.12.1, 1.12.2), 1.13 (17w50a, 1.13, 1.13.1, 1.13.2-pre1, 1.13.2-pre2, 1.13.2), 1.14 (1.14, 1.14.1, 1.14.3, 1.14.4), 1.15 (1.15, 1.15.1, 1.15.2), 1.16 (20w13b, 20w14a, 1.16-rc1, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5), 1.17, 1.17.1, 1.18 (1.18, 1.18.1, 1.18.2), 1.19 (1.19, 1.19.2, 1.19.3, 1.19.4), 1.20 (1.20, 1.20.1, 1.20.2)
12
+ 1.10 (16w20a, 1.10-pre1, 1.10, 1.10.1, 1.10.2), 1.11 (16w35a, 1.11, 1.11.2), 1.12 (17w15a, 17w18b, 1.12-pre4, 1.12, 1.12.1, 1.12.2), 1.13 (17w50a, 1.13, 1.13.1, 1.13.2-pre1, 1.13.2-pre2, 1.13.2), 1.14 (1.14, 1.14.1, 1.14.3, 1.14.4), 1.15 (1.15, 1.15.1, 1.15.2), 1.16 (20w13b, 20w14a, 1.16-rc1, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5), 1.17, 1.17.1, 1.18 (1.18, 1.18.1, 1.18.2), 1.19 (1.19, 1.19.2, 1.19.3, 1.19.4), 1.20 (1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4)
13
13
  * Minecraft bedrock version 0.14, 0.15, 1.0, 1.16.201, 1.16.210, 1.16.220, 1.17.0, 1.17.10, 1.17.30, 1.17.40, 1.18.0, 1.18.11, 1.18.30, 1.19.1, 1.19.10, 1.19.20, 1.19.21, 1.19.30, 1.19.40, 1.19.50, 1.19.60, 1.19.62, 1.19.63, 1.19.70, 1.19.80, 1.20.0, 1.20.10, 1.20.30, 1.20.40, 1.20.50
14
14
 
15
15
 
@@ -8,6 +8,7 @@ string: ["pstring",{"countType":"varint"}]
8
8
  ByteArray: ["buffer",{"countType":"varint"}]
9
9
  SignedByteArray: ["buffer",{"countType":"zigzag32"}]
10
10
  LittleString: ["pstring",{"countType":"li32"}]
11
+ LatinString: ["pstring",{"countType":"varint", "encoding": "latin1"}]
11
12
  varint64: native # Some primitives
12
13
  zigzag32: native
13
14
  zigzag64: native
@@ -1203,7 +1203,7 @@
1203
1203
  [
1204
1204
  {
1205
1205
  "name": "recipe_id",
1206
- "type": "string"
1206
+ "type": "LatinString"
1207
1207
  },
1208
1208
  {
1209
1209
  "name": "input",
@@ -1248,7 +1248,7 @@
1248
1248
  [
1249
1249
  {
1250
1250
  "name": "recipe_id",
1251
- "type": "string"
1251
+ "type": "LatinString"
1252
1252
  },
1253
1253
  {
1254
1254
  "name": "input",
@@ -1293,7 +1293,7 @@
1293
1293
  [
1294
1294
  {
1295
1295
  "name": "recipe_id",
1296
- "type": "string"
1296
+ "type": "LatinString"
1297
1297
  },
1298
1298
  {
1299
1299
  "name": "input",
@@ -1338,7 +1338,7 @@
1338
1338
  [
1339
1339
  {
1340
1340
  "name": "recipe_id",
1341
- "type": "string"
1341
+ "type": "LatinString"
1342
1342
  },
1343
1343
  {
1344
1344
  "name": "width",
@@ -1397,7 +1397,7 @@
1397
1397
  [
1398
1398
  {
1399
1399
  "name": "recipe_id",
1400
- "type": "string"
1400
+ "type": "LatinString"
1401
1401
  },
1402
1402
  {
1403
1403
  "name": "width",
@@ -7341,6 +7341,13 @@
7341
7341
  "countType": "li32"
7342
7342
  }
7343
7343
  ],
7344
+ "LatinString": [
7345
+ "pstring",
7346
+ {
7347
+ "countType": "varint",
7348
+ "encoding": "latin1"
7349
+ }
7350
+ ],
7344
7351
  "AdventureFlags": [
7345
7352
  "bitflags",
7346
7353
  {
@@ -455,7 +455,7 @@ Recipes: []varint
455
455
  '7': 'shaped_chemistry' #'ENTRY_SHAPED_CHEMISTRY', //TODO
456
456
  recipe: type?
457
457
  if shapeless or shulker_box or shapeless_chemistry:
458
- recipe_id: string
458
+ recipe_id: LatinString
459
459
  input: RecipeIngredient[]varint
460
460
  output: Item[]varint
461
461
  uuid: uuid
@@ -463,7 +463,7 @@ Recipes: []varint
463
463
  priority: zigzag32
464
464
  network_id: zigzag32
465
465
  if shaped or shaped_chemistry:
466
- recipe_id: string
466
+ recipe_id: LatinString
467
467
  width: zigzag32
468
468
  height: zigzag32
469
469
  # todo: can this become
@@ -8,6 +8,7 @@ string: ["pstring",{"countType":"varint"}]
8
8
  ByteArray: ["buffer",{"countType":"varint"}]
9
9
  SignedByteArray: ["buffer",{"countType":"zigzag32"}]
10
10
  LittleString: ["pstring",{"countType":"li32"}]
11
+ LatinString: ["pstring",{"countType":"varint", "encoding": "latin1"}]
11
12
  varint64: native # Some primitives
12
13
  zigzag32: native
13
14
  zigzag64: native
@@ -1225,7 +1225,7 @@
1225
1225
  [
1226
1226
  {
1227
1227
  "name": "recipe_id",
1228
- "type": "string"
1228
+ "type": "LatinString"
1229
1229
  },
1230
1230
  {
1231
1231
  "name": "input",
@@ -1270,7 +1270,7 @@
1270
1270
  [
1271
1271
  {
1272
1272
  "name": "recipe_id",
1273
- "type": "string"
1273
+ "type": "LatinString"
1274
1274
  },
1275
1275
  {
1276
1276
  "name": "input",
@@ -1315,7 +1315,7 @@
1315
1315
  [
1316
1316
  {
1317
1317
  "name": "recipe_id",
1318
- "type": "string"
1318
+ "type": "LatinString"
1319
1319
  },
1320
1320
  {
1321
1321
  "name": "input",
@@ -1360,7 +1360,7 @@
1360
1360
  [
1361
1361
  {
1362
1362
  "name": "recipe_id",
1363
- "type": "string"
1363
+ "type": "LatinString"
1364
1364
  },
1365
1365
  {
1366
1366
  "name": "width",
@@ -1419,7 +1419,7 @@
1419
1419
  [
1420
1420
  {
1421
1421
  "name": "recipe_id",
1422
- "type": "string"
1422
+ "type": "LatinString"
1423
1423
  },
1424
1424
  {
1425
1425
  "name": "width",
@@ -7792,6 +7792,13 @@
7792
7792
  "countType": "li32"
7793
7793
  }
7794
7794
  ],
7795
+ "LatinString": [
7796
+ "pstring",
7797
+ {
7798
+ "countType": "varint",
7799
+ "encoding": "latin1"
7800
+ }
7801
+ ],
7795
7802
  "MetadataFlags1": [
7796
7803
  "bitflags",
7797
7804
  {