minecraft-data 2.108.0 → 2.112.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 (47) hide show
  1. package/data.js +26 -15
  2. package/doc/api.md +4 -0
  3. package/doc/history.md +12 -0
  4. package/index.d.ts +6 -5
  5. package/index.js +4 -1
  6. package/minecraft-data/data/bedrock/1.16.201/proto.yml +58 -3
  7. package/minecraft-data/data/bedrock/1.16.201/protocol.json +123 -2
  8. package/minecraft-data/data/bedrock/1.16.201/version.json +6 -0
  9. package/minecraft-data/data/bedrock/1.16.210/proto.yml +58 -1
  10. package/minecraft-data/data/bedrock/1.16.210/protocol.json +122 -1
  11. package/minecraft-data/data/bedrock/1.16.210/version.json +6 -0
  12. package/minecraft-data/data/bedrock/1.16.220/proto.yml +6 -3
  13. package/minecraft-data/data/bedrock/1.16.220/protocol.json +42 -11
  14. package/minecraft-data/data/bedrock/1.16.220/version.json +6 -0
  15. package/minecraft-data/data/bedrock/1.17.0/proto.yml +6 -3
  16. package/minecraft-data/data/bedrock/1.17.0/protocol.json +42 -11
  17. package/minecraft-data/data/bedrock/1.17.0/version.json +6 -0
  18. package/minecraft-data/data/bedrock/1.17.10/proto.yml +6 -3
  19. package/minecraft-data/data/bedrock/1.17.10/protocol.json +42 -11
  20. package/minecraft-data/data/bedrock/1.17.10/version.json +6 -0
  21. package/minecraft-data/data/bedrock/1.17.30/proto.yml +6 -3
  22. package/minecraft-data/data/bedrock/1.17.30/protocol.json +42 -11
  23. package/minecraft-data/data/bedrock/1.17.30/version.json +6 -0
  24. package/minecraft-data/data/bedrock/{1.18.0 → 1.17.40}/blockCollisionShapes.json +0 -0
  25. package/minecraft-data/data/bedrock/{1.18.0 → 1.17.40}/blockStates.json +1228 -0
  26. package/minecraft-data/data/bedrock/{1.18.0 → 1.17.40}/blocks.json +5113 -5001
  27. package/minecraft-data/data/bedrock/1.17.40/proto.yml +1 -1
  28. package/minecraft-data/data/bedrock/1.17.40/protocol.json +10 -9
  29. package/minecraft-data/data/bedrock/1.17.40/version.json +6 -0
  30. package/minecraft-data/data/bedrock/1.18.0/protocol.json +42 -11
  31. package/minecraft-data/data/bedrock/1.18.0/version.json +6 -0
  32. package/minecraft-data/data/bedrock/latest/proto.yml +6 -3
  33. package/minecraft-data/data/dataPaths.json +26 -15
  34. package/minecraft-data/data/pc/1.13/recipes.json +18 -1
  35. package/minecraft-data/data/pc/1.13.2/recipes.json +18 -1
  36. package/minecraft-data/data/pc/1.14/recipes.json +18 -1
  37. package/minecraft-data/data/pc/1.14.4/recipes.json +18 -1
  38. package/minecraft-data/data/pc/1.15.2/recipes.json +18 -1
  39. package/minecraft-data/data/pc/1.16.1/recipes.json +18 -1
  40. package/minecraft-data/data/pc/1.16.2/recipes.json +18 -1
  41. package/minecraft-data/data/pc/1.17/recipes.json +18 -1
  42. package/minecraft-data/data/pc/1.18/recipes.json +18 -1
  43. package/minecraft-data/doc/history.md +12 -0
  44. package/minecraft-data/schemas/version_schema.json +5 -1
  45. package/minecraft-data/tools/js/test/audit_datapaths.js +33 -0
  46. package/package.json +1 -1
  47. package/typings/index-template.d.ts +5 -5
package/data.js CHANGED
@@ -1035,6 +1035,7 @@ module.exports =
1035
1035
  get mapIcons () { return require("./minecraft-data/data/pc/1.16/mapIcons.json") }
1036
1036
  },
1037
1037
  '1.18': {
1038
+ get attributes () { return require("./minecraft-data/data/pc/1.17/attributes.json") },
1038
1039
  get blocks () { return require("./minecraft-data/data/pc/1.18/blocks.json") },
1039
1040
  get blockCollisionShapes () { return require("./minecraft-data/data/pc/1.17/blockCollisionShapes.json") },
1040
1041
  get biomes () { return require("./minecraft-data/data/pc/1.18/biomes.json") },
@@ -1058,6 +1059,7 @@ module.exports =
1058
1059
  get mapIcons () { return require("./minecraft-data/data/pc/1.16/mapIcons.json") }
1059
1060
  },
1060
1061
  '1.18.1': {
1062
+ get attributes () { return require("./minecraft-data/data/pc/1.17/attributes.json") },
1061
1063
  get blocks () { return require("./minecraft-data/data/pc/1.18/blocks.json") },
1062
1064
  get blockCollisionShapes () { return require("./minecraft-data/data/pc/1.17/blockCollisionShapes.json") },
1063
1065
  get biomes () { return require("./minecraft-data/data/pc/1.18/biomes.json") },
@@ -1071,7 +1073,7 @@ module.exports =
1071
1073
  get entities () { return require("./minecraft-data/data/pc/1.18/entities.json") },
1072
1074
  get protocol () { return require("./minecraft-data/data/pc/1.18/protocol.json") },
1073
1075
  get windows () { return require("./minecraft-data/data/pc/1.16.1/windows.json") },
1074
- get version () { return require("./minecraft-data/data/pc/1.18/version.json") },
1076
+ get version () { return require("./minecraft-data/data/pc/1.18.1/version.json") },
1075
1077
  get foods () { return require("./minecraft-data/data/pc/1.17/foods.json") },
1076
1078
  get particles () { return require("./minecraft-data/data/pc/1.18/particles.json") },
1077
1079
  get blockLoot () { return require("./minecraft-data/data/pc/1.18/blockLoot.json") },
@@ -1106,13 +1108,16 @@ module.exports =
1106
1108
  get protocol () { return require("./minecraft-data/data/bedrock/1.16.201/protocol.json") },
1107
1109
  get steve () { return require("./minecraft-data/data/bedrock/1.16.201/steve.json") },
1108
1110
  proto: __dirname + '/minecraft-data/data/bedrock/1.17.0/proto.yml',
1109
- types: __dirname + '/minecraft-data/data/bedrock/1.17.0/types.yml'
1111
+ types: __dirname + '/minecraft-data/data/bedrock/1.17.0/types.yml',
1112
+ get windows () { return require("./minecraft-data/data/bedrock/1.16.201/windows.json") },
1113
+ get version () { return require("./minecraft-data/data/bedrock/1.16.201/version.json") }
1110
1114
  },
1111
1115
  '1.16.210': {
1112
1116
  get protocol () { return require("./minecraft-data/data/bedrock/1.16.210/protocol.json") },
1113
1117
  get steve () { return require("./minecraft-data/data/bedrock/1.16.201/steve.json") },
1114
1118
  proto: __dirname + '/minecraft-data/data/bedrock/1.17.0/proto.yml',
1115
- types: __dirname + '/minecraft-data/data/bedrock/1.17.0/types.yml'
1119
+ types: __dirname + '/minecraft-data/data/bedrock/1.17.0/types.yml',
1120
+ get version () { return require("./minecraft-data/data/bedrock/1.16.210/version.json") }
1116
1121
  },
1117
1122
  '1.16.220': {
1118
1123
  get blocks () { return require("./minecraft-data/data/bedrock/1.16.220/blocks.json") },
@@ -1121,7 +1126,8 @@ module.exports =
1121
1126
  get steve () { return require("./minecraft-data/data/bedrock/1.16.201/steve.json") },
1122
1127
  get protocol () { return require("./minecraft-data/data/bedrock/1.16.220/protocol.json") },
1123
1128
  proto: __dirname + '/minecraft-data/data/bedrock/1.17.0/proto.yml',
1124
- types: __dirname + '/minecraft-data/data/bedrock/1.17.0/types.yml'
1129
+ types: __dirname + '/minecraft-data/data/bedrock/1.17.0/types.yml',
1130
+ get version () { return require("./minecraft-data/data/bedrock/1.16.220/version.json") }
1125
1131
  },
1126
1132
  '1.17.0': {
1127
1133
  get blocks () { return require("./minecraft-data/data/bedrock/1.17.0/blocks.json") },
@@ -1138,7 +1144,8 @@ module.exports =
1138
1144
  get blocksB2J () { return require("./minecraft-data/data/bedrock/1.17.0/blocksB2J.json") },
1139
1145
  get blocksJ2B () { return require("./minecraft-data/data/bedrock/1.17.0/blocksJ2B.json") },
1140
1146
  proto: __dirname + '/minecraft-data/data/bedrock/1.17.0/proto.yml',
1141
- types: __dirname + '/minecraft-data/data/bedrock/1.17.0/types.yml'
1147
+ types: __dirname + '/minecraft-data/data/bedrock/1.17.0/types.yml',
1148
+ get version () { return require("./minecraft-data/data/bedrock/1.17.0/version.json") }
1142
1149
  },
1143
1150
  '1.17.10': {
1144
1151
  get blocks () { return require("./minecraft-data/data/bedrock/1.17.10/blocks.json") },
@@ -1157,7 +1164,8 @@ module.exports =
1157
1164
  get blocksB2J () { return require("./minecraft-data/data/bedrock/1.17.10/blocksB2J.json") },
1158
1165
  get blocksJ2B () { return require("./minecraft-data/data/bedrock/1.17.10/blocksJ2B.json") },
1159
1166
  proto: __dirname + '/minecraft-data/data/bedrock/1.17.10/proto.yml',
1160
- types: __dirname + '/minecraft-data/data/bedrock/1.17.10/types.yml'
1167
+ types: __dirname + '/minecraft-data/data/bedrock/1.17.10/types.yml',
1168
+ get version () { return require("./minecraft-data/data/bedrock/1.17.10/version.json") }
1161
1169
  },
1162
1170
  '1.17.30': {
1163
1171
  get blocks () { return require("./minecraft-data/data/bedrock/1.17.10/blocks.json") },
@@ -1176,12 +1184,13 @@ module.exports =
1176
1184
  get blocksB2J () { return require("./minecraft-data/data/bedrock/1.17.10/blocksB2J.json") },
1177
1185
  get blocksJ2B () { return require("./minecraft-data/data/bedrock/1.17.10/blocksJ2B.json") },
1178
1186
  proto: __dirname + '/minecraft-data/data/bedrock/1.17.30/proto.yml',
1179
- types: __dirname + '/minecraft-data/data/bedrock/1.17.30/types.yml'
1187
+ types: __dirname + '/minecraft-data/data/bedrock/1.17.30/types.yml',
1188
+ get version () { return require("./minecraft-data/data/bedrock/1.17.30/version.json") }
1180
1189
  },
1181
1190
  '1.17.40': {
1182
- get blocks () { return require("./minecraft-data/data/bedrock/1.17.10/blocks.json") },
1183
- get blockStates () { return require("./minecraft-data/data/bedrock/1.17.10/blockStates.json") },
1184
- get blockCollisionShapes () { return require("./minecraft-data/data/bedrock/1.17.10/blockCollisionShapes.json") },
1191
+ get blocks () { return require("./minecraft-data/data/bedrock/1.17.40/blocks.json") },
1192
+ get blockStates () { return require("./minecraft-data/data/bedrock/1.17.40/blockStates.json") },
1193
+ get blockCollisionShapes () { return require("./minecraft-data/data/bedrock/1.17.40/blockCollisionShapes.json") },
1185
1194
  get biomes () { return require("./minecraft-data/data/bedrock/1.17.0/biomes.json") },
1186
1195
  get items () { return require("./minecraft-data/data/bedrock/1.17.10/items.json") },
1187
1196
  get recipes () { return require("./minecraft-data/data/bedrock/1.17.10/recipes.json") },
@@ -1195,12 +1204,13 @@ module.exports =
1195
1204
  get blocksB2J () { return require("./minecraft-data/data/bedrock/1.17.10/blocksB2J.json") },
1196
1205
  get blocksJ2B () { return require("./minecraft-data/data/bedrock/1.17.10/blocksJ2B.json") },
1197
1206
  proto: __dirname + '/minecraft-data/data/bedrock/1.17.40/proto.yml',
1198
- types: __dirname + '/minecraft-data/data/bedrock/1.17.40/types.yml'
1207
+ types: __dirname + '/minecraft-data/data/bedrock/1.17.40/types.yml',
1208
+ get version () { return require("./minecraft-data/data/bedrock/1.17.40/version.json") }
1199
1209
  },
1200
1210
  '1.18.0': {
1201
- get blocks () { return require("./minecraft-data/data/bedrock/1.18.0/blocks.json") },
1202
- get blockStates () { return require("./minecraft-data/data/bedrock/1.18.0/blockStates.json") },
1203
- get blockCollisionShapes () { return require("./minecraft-data/data/bedrock/1.18.0/blockCollisionShapes.json") },
1211
+ get blocks () { return require("./minecraft-data/data/bedrock/1.17.40/blocks.json") },
1212
+ get blockStates () { return require("./minecraft-data/data/bedrock/1.17.40/blockStates.json") },
1213
+ get blockCollisionShapes () { return require("./minecraft-data/data/bedrock/1.17.40/blockCollisionShapes.json") },
1204
1214
  get biomes () { return require("./minecraft-data/data/bedrock/1.18.0/biomes.json") },
1205
1215
  get items () { return require("./minecraft-data/data/bedrock/1.18.0/items.json") },
1206
1216
  get recipes () { return require("./minecraft-data/data/bedrock/1.18.0/recipes.json") },
@@ -1214,7 +1224,8 @@ module.exports =
1214
1224
  get blocksB2J () { return require("./minecraft-data/data/bedrock/1.18.0/blocksB2J.json") },
1215
1225
  get blocksJ2B () { return require("./minecraft-data/data/bedrock/1.18.0/blocksJ2B.json") },
1216
1226
  proto: __dirname + '/minecraft-data/data/bedrock/latest/proto.yml',
1217
- types: __dirname + '/minecraft-data/data/bedrock/latest/types.yml'
1227
+ types: __dirname + '/minecraft-data/data/bedrock/latest/types.yml',
1228
+ get version () { return require("./minecraft-data/data/bedrock/1.18.0/version.json") }
1218
1229
  }
1219
1230
  }
1220
1231
  }
package/doc/api.md CHANGED
@@ -180,6 +180,10 @@ the version type, currently 'pc' or 'bedrock'
180
180
 
181
181
  the major version (example : 1.8), also the name of the minecraft-data version
182
182
 
183
+ ### minecraft-data.version.dataVersion
184
+
185
+ "Data version" for this Minecraft version, used for example when writing chunks to disk
186
+
183
187
  ### minecraft-data.version.< (other)
184
188
  Returns true if the current version is less than than the `other` version's dataVersion
185
189
 
package/doc/history.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## 2.112.0
2
+ * update mcdata
3
+
4
+ ## 2.111.0
5
+ * update mcdata
6
+
7
+ ## 2.110.0
8
+ * update mcdata
9
+
10
+ ## 2.109.0
11
+ * update mcdata
12
+
1
13
  ## 2.108.0
2
14
  * update mcdata
3
15
 
package/index.d.ts CHANGED
@@ -756,6 +756,7 @@ declare namespace MinecraftData {
756
756
  version?: number;
757
757
  minecraftVersion?: string;
758
758
  majorVersion?: string;
759
+ releaseType?: string;
759
760
  }
760
761
 
761
762
 
@@ -815,15 +816,15 @@ declare namespace MinecraftData {
815
816
  // This will interface will merge with the generated one
816
817
  export interface Version {
817
818
  // Returns true if the current version is greater than or equal to the `other` version's dataVersion
818
- ['>='](other)
819
+ ['>='](other: string): boolean
819
820
  // Returns true if the current version is greater than the `other` version's dataVersion
820
- ['>'](other)
821
+ ['>'](other: string): boolean
821
822
  // Returns true if the current version is less than the `other` version's dataVersion
822
- ['<'](other)
823
+ ['<'](other: string): boolean
823
824
  // Returns true if the current version is less than than or equal to the `other` version's dataVersion
824
- ['<='](other)
825
+ ['<='](other: string): boolean
825
826
  // Returns true if the current version is equal to the `other` version's dataVersion
826
- ['=='](other)
827
+ ['=='](other: string): boolean
827
828
  type: 'pc' | 'bedrock'
828
829
  }
829
830
 
package/index.js CHANGED
@@ -30,8 +30,11 @@ function Version (type, version, majorVersion) {
30
30
  const ver = versions[version]
31
31
  versions[ver.majorVersion] = versions[ver.majorVersion] || ver
32
32
  }
33
+
34
+ this.dataVersion = versions[version]?.dataVersion
35
+
33
36
  // TODO: Data for Minecraft classic is missing in protocolVersions.json, move this to its own type ?
34
- const v1 = versions[version]?.dataVersion ?? 0
37
+ const v1 = this.dataVersion ?? 0
35
38
  const raise = other => { throw new RangeError(`Version '${other}' not found in [${Object.keys(versions).join(' ; ')}] for ${type}`) }
36
39
  this['>='] = other => versions[other] ? v1 >= versions[other].dataVersion : raise(other)
37
40
  this['>'] = other => versions[other] ? v1 > versions[other].dataVersion : raise(other)
@@ -867,8 +867,19 @@ packet_set_spawn_position:
867
867
  packet_animate:
868
868
  !id: 0x2c
869
869
  !bound: both
870
- action_id: zigzag32
871
- runtime_entity_id: varint
870
+ action_id: zigzag32 =>
871
+ 0: none
872
+ 1: swing_arm
873
+ 2: unknown
874
+ 3: wake_up
875
+ 4: critical_hit
876
+ 5: magic_critical_hit
877
+ 128: row_right
878
+ 129: row_left
879
+ runtime_entity_id: varint64
880
+ _: action_id ?
881
+ if row_right or row_left:
882
+ boat_rowing_time: lf32
872
883
 
873
884
  packet_respawn:
874
885
  !id: 0x2d
@@ -1381,11 +1392,55 @@ packet_command_request:
1381
1392
  # this field is not known.
1382
1393
  interval: bool
1383
1394
 
1384
-
1395
+ # CommandBlockUpdate is sent by the client to update a command block at a specific position. The command
1396
+ # block may be either a physical block or an entity.
1385
1397
  packet_command_block_update:
1386
1398
  !id: 0x4e
1387
1399
  !bound: server
1400
+ # Block specifies if the command block updated was an actual physical block. If false, the command block
1401
+ # is in a minecart and has an entity runtime ID instead.
1388
1402
  is_block: bool
1403
+ # Position is the position of the command block updated. It is only set if Block is set to true. Nothing
1404
+ # happens if no command block is set at this position.
1405
+ _: is_block ?
1406
+ if true:
1407
+ # Position is the position of the command block updated. It is only set if Block is set to true. Nothing
1408
+ # happens if no command block is set at this position.
1409
+ position: BlockCoordinates
1410
+ # Mode is the mode of the command block. It is either CommandBlockImpulse, CommandBlockChain or
1411
+ # CommandBlockRepeat. It is only set if Block is set to true.
1412
+ mode: varint =>
1413
+ 0: impulse
1414
+ 1: repeat
1415
+ 2: chain
1416
+ # NeedsRedstone specifies if the command block needs to be powered by redstone to be activated. If false,
1417
+ # the command block is always active. The field is only set if Block is set to true.
1418
+ needs_redstone: bool
1419
+ # Conditional specifies the behaviour of the command block if the command block before it (the opposite
1420
+ # side of the direction the arrow if facing) fails to execute. If set to false, it will activate at all
1421
+ # times, whereas if set to true, it will activate only if the previous command block executed
1422
+ # successfully. The field is only set if Block is set to true.
1423
+ conditional: bool
1424
+ if false:
1425
+ minecart_entity_runtime_id: varint64
1426
+ # Command is the command currently entered in the command block. This is the command that is executed
1427
+ # when the command block is activated.
1428
+ command: string
1429
+ # LastOutput is the output of the last command executed by the command block. It may be left empty to
1430
+ # show simply no output at all, in combination with setting ShouldTrackOutput to false.
1431
+ last_output: string
1432
+ # Name is the name of the command block updated. If not empty, it will show this name hovering above the
1433
+ # command block when hovering over the block with the cursor.
1434
+ name: string
1435
+ # ShouldTrackOutput specifies if the command block tracks output. If set to false, the output box won't
1436
+ # be shown within the command block.
1437
+ should_track_output: bool
1438
+ # TickDelay is the delay in ticks between executions of a command block, if it is a repeating command
1439
+ # block.
1440
+ tick_delay: li32
1441
+ # ExecuteOnFirstTick specifies if the command block should execute on the first tick, AKA as soon as the
1442
+ # command block is enabled.
1443
+ execute_on_first_tick: bool
1389
1444
 
1390
1445
  packet_command_output:
1391
1446
  !id: 0x4f
@@ -4548,11 +4548,56 @@
4548
4548
  [
4549
4549
  {
4550
4550
  "name": "action_id",
4551
- "type": "zigzag32"
4551
+ "type": [
4552
+ "mapper",
4553
+ {
4554
+ "type": "zigzag32",
4555
+ "mappings": {
4556
+ "0": "none",
4557
+ "1": "swing_arm",
4558
+ "2": "unknown",
4559
+ "3": "wake_up",
4560
+ "4": "critical_hit",
4561
+ "5": "magic_critical_hit",
4562
+ "128": "row_right",
4563
+ "129": "row_left"
4564
+ }
4565
+ }
4566
+ ]
4552
4567
  },
4553
4568
  {
4554
4569
  "name": "runtime_entity_id",
4555
- "type": "varint"
4570
+ "type": "varint64"
4571
+ },
4572
+ {
4573
+ "anon": true,
4574
+ "type": [
4575
+ "switch",
4576
+ {
4577
+ "compareTo": "action_id",
4578
+ "fields": {
4579
+ "row_right": [
4580
+ "container",
4581
+ [
4582
+ {
4583
+ "name": "boat_rowing_time",
4584
+ "type": "lf32"
4585
+ }
4586
+ ]
4587
+ ],
4588
+ "row_left": [
4589
+ "container",
4590
+ [
4591
+ {
4592
+ "name": "boat_rowing_time",
4593
+ "type": "lf32"
4594
+ }
4595
+ ]
4596
+ ]
4597
+ },
4598
+ "default": "void"
4599
+ }
4600
+ ]
4556
4601
  }
4557
4602
  ]
4558
4603
  ],
@@ -5479,6 +5524,82 @@
5479
5524
  {
5480
5525
  "name": "is_block",
5481
5526
  "type": "bool"
5527
+ },
5528
+ {
5529
+ "anon": true,
5530
+ "type": [
5531
+ "switch",
5532
+ {
5533
+ "compareTo": "is_block",
5534
+ "fields": {
5535
+ "true": [
5536
+ "container",
5537
+ [
5538
+ {
5539
+ "name": "position",
5540
+ "type": "BlockCoordinates"
5541
+ },
5542
+ {
5543
+ "name": "mode",
5544
+ "type": [
5545
+ "mapper",
5546
+ {
5547
+ "type": "varint",
5548
+ "mappings": {
5549
+ "0": "impulse",
5550
+ "1": "repeat",
5551
+ "2": "chain"
5552
+ }
5553
+ }
5554
+ ]
5555
+ },
5556
+ {
5557
+ "name": "needs_redstone",
5558
+ "type": "bool"
5559
+ },
5560
+ {
5561
+ "name": "conditional",
5562
+ "type": "bool"
5563
+ }
5564
+ ]
5565
+ ],
5566
+ "false": [
5567
+ "container",
5568
+ [
5569
+ {
5570
+ "name": "minecart_entity_runtime_id",
5571
+ "type": "varint64"
5572
+ }
5573
+ ]
5574
+ ]
5575
+ },
5576
+ "default": "void"
5577
+ }
5578
+ ]
5579
+ },
5580
+ {
5581
+ "name": "command",
5582
+ "type": "string"
5583
+ },
5584
+ {
5585
+ "name": "last_output",
5586
+ "type": "string"
5587
+ },
5588
+ {
5589
+ "name": "name",
5590
+ "type": "string"
5591
+ },
5592
+ {
5593
+ "name": "should_track_output",
5594
+ "type": "bool"
5595
+ },
5596
+ {
5597
+ "name": "tick_delay",
5598
+ "type": "li32"
5599
+ },
5600
+ {
5601
+ "name": "execute_on_first_tick",
5602
+ "type": "bool"
5482
5603
  }
5483
5604
  ]
5484
5605
  ],
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 422,
3
+ "minecraftVersion": "1.16.201",
4
+ "majorVersion": "1.16",
5
+ "releaseType": "release"
6
+ }
@@ -888,8 +888,19 @@ packet_set_spawn_position:
888
888
  packet_animate:
889
889
  !id: 0x2c
890
890
  !bound: both
891
- action_id: zigzag32
891
+ action_id: zigzag32 =>
892
+ 0: none
893
+ 1: swing_arm
894
+ 2: unknown
895
+ 3: wake_up
896
+ 4: critical_hit
897
+ 5: magic_critical_hit
898
+ 128: row_right
899
+ 129: row_left
892
900
  runtime_entity_id: varint64
901
+ _: action_id ?
902
+ if row_right or row_left:
903
+ boat_rowing_time: lf32
893
904
 
894
905
  packet_respawn:
895
906
  !id: 0x2d
@@ -1421,10 +1432,56 @@ packet_command_request:
1421
1432
  interval: bool
1422
1433
 
1423
1434
 
1435
+ # CommandBlockUpdate is sent by the client to update a command block at a specific position. The command
1436
+ # block may be either a physical block or an entity.
1424
1437
  packet_command_block_update:
1425
1438
  !id: 0x4e
1426
1439
  !bound: server
1440
+ # Block specifies if the command block updated was an actual physical block. If false, the command block
1441
+ # is in a minecart and has an entity runtime ID instead.
1427
1442
  is_block: bool
1443
+ # Position is the position of the command block updated. It is only set if Block is set to true. Nothing
1444
+ # happens if no command block is set at this position.
1445
+ _: is_block ?
1446
+ if true:
1447
+ # Position is the position of the command block updated. It is only set if Block is set to true. Nothing
1448
+ # happens if no command block is set at this position.
1449
+ position: BlockCoordinates
1450
+ # Mode is the mode of the command block. It is either CommandBlockImpulse, CommandBlockChain or
1451
+ # CommandBlockRepeat. It is only set if Block is set to true.
1452
+ mode: varint =>
1453
+ 0: impulse
1454
+ 1: repeat
1455
+ 2: chain
1456
+ # NeedsRedstone specifies if the command block needs to be powered by redstone to be activated. If false,
1457
+ # the command block is always active. The field is only set if Block is set to true.
1458
+ needs_redstone: bool
1459
+ # Conditional specifies the behaviour of the command block if the command block before it (the opposite
1460
+ # side of the direction the arrow if facing) fails to execute. If set to false, it will activate at all
1461
+ # times, whereas if set to true, it will activate only if the previous command block executed
1462
+ # successfully. The field is only set if Block is set to true.
1463
+ conditional: bool
1464
+ if false:
1465
+ minecart_entity_runtime_id: varint64
1466
+ # Command is the command currently entered in the command block. This is the command that is executed
1467
+ # when the command block is activated.
1468
+ command: string
1469
+ # LastOutput is the output of the last command executed by the command block. It may be left empty to
1470
+ # show simply no output at all, in combination with setting ShouldTrackOutput to false.
1471
+ last_output: string
1472
+ # Name is the name of the command block updated. If not empty, it will show this name hovering above the
1473
+ # command block when hovering over the block with the cursor.
1474
+ name: string
1475
+ # ShouldTrackOutput specifies if the command block tracks output. If set to false, the output box won't
1476
+ # be shown within the command block.
1477
+ should_track_output: bool
1478
+ # TickDelay is the delay in ticks between executions of a command block, if it is a repeating command
1479
+ # block.
1480
+ tick_delay: li32
1481
+ # ExecuteOnFirstTick specifies if the command block should execute on the first tick, AKA as soon as the
1482
+ # command block is enabled.
1483
+ execute_on_first_tick: bool
1484
+
1428
1485
 
1429
1486
  packet_command_output:
1430
1487
  !id: 0x4f
@@ -4699,11 +4699,56 @@
4699
4699
  [
4700
4700
  {
4701
4701
  "name": "action_id",
4702
- "type": "zigzag32"
4702
+ "type": [
4703
+ "mapper",
4704
+ {
4705
+ "type": "zigzag32",
4706
+ "mappings": {
4707
+ "0": "none",
4708
+ "1": "swing_arm",
4709
+ "2": "unknown",
4710
+ "3": "wake_up",
4711
+ "4": "critical_hit",
4712
+ "5": "magic_critical_hit",
4713
+ "128": "row_right",
4714
+ "129": "row_left"
4715
+ }
4716
+ }
4717
+ ]
4703
4718
  },
4704
4719
  {
4705
4720
  "name": "runtime_entity_id",
4706
4721
  "type": "varint64"
4722
+ },
4723
+ {
4724
+ "anon": true,
4725
+ "type": [
4726
+ "switch",
4727
+ {
4728
+ "compareTo": "action_id",
4729
+ "fields": {
4730
+ "row_right": [
4731
+ "container",
4732
+ [
4733
+ {
4734
+ "name": "boat_rowing_time",
4735
+ "type": "lf32"
4736
+ }
4737
+ ]
4738
+ ],
4739
+ "row_left": [
4740
+ "container",
4741
+ [
4742
+ {
4743
+ "name": "boat_rowing_time",
4744
+ "type": "lf32"
4745
+ }
4746
+ ]
4747
+ ]
4748
+ },
4749
+ "default": "void"
4750
+ }
4751
+ ]
4707
4752
  }
4708
4753
  ]
4709
4754
  ],
@@ -5650,6 +5695,82 @@
5650
5695
  {
5651
5696
  "name": "is_block",
5652
5697
  "type": "bool"
5698
+ },
5699
+ {
5700
+ "anon": true,
5701
+ "type": [
5702
+ "switch",
5703
+ {
5704
+ "compareTo": "is_block",
5705
+ "fields": {
5706
+ "true": [
5707
+ "container",
5708
+ [
5709
+ {
5710
+ "name": "position",
5711
+ "type": "BlockCoordinates"
5712
+ },
5713
+ {
5714
+ "name": "mode",
5715
+ "type": [
5716
+ "mapper",
5717
+ {
5718
+ "type": "varint",
5719
+ "mappings": {
5720
+ "0": "impulse",
5721
+ "1": "repeat",
5722
+ "2": "chain"
5723
+ }
5724
+ }
5725
+ ]
5726
+ },
5727
+ {
5728
+ "name": "needs_redstone",
5729
+ "type": "bool"
5730
+ },
5731
+ {
5732
+ "name": "conditional",
5733
+ "type": "bool"
5734
+ }
5735
+ ]
5736
+ ],
5737
+ "false": [
5738
+ "container",
5739
+ [
5740
+ {
5741
+ "name": "minecart_entity_runtime_id",
5742
+ "type": "varint64"
5743
+ }
5744
+ ]
5745
+ ]
5746
+ },
5747
+ "default": "void"
5748
+ }
5749
+ ]
5750
+ },
5751
+ {
5752
+ "name": "command",
5753
+ "type": "string"
5754
+ },
5755
+ {
5756
+ "name": "last_output",
5757
+ "type": "string"
5758
+ },
5759
+ {
5760
+ "name": "name",
5761
+ "type": "string"
5762
+ },
5763
+ {
5764
+ "name": "should_track_output",
5765
+ "type": "bool"
5766
+ },
5767
+ {
5768
+ "name": "tick_delay",
5769
+ "type": "li32"
5770
+ },
5771
+ {
5772
+ "name": "execute_on_first_tick",
5773
+ "type": "bool"
5653
5774
  }
5654
5775
  ]
5655
5776
  ],
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 428,
3
+ "minecraftVersion": "1.16.210",
4
+ "majorVersion": "1.16",
5
+ "releaseType": "release"
6
+ }
@@ -924,9 +924,12 @@ packet_animate:
924
924
  3: wake_up
925
925
  4: critical_hit
926
926
  5: magic_critical_hit
927
- 6: row_right
928
- 7: row_left
927
+ 128: row_right
928
+ 129: row_left
929
929
  runtime_entity_id: varint64
930
+ _: action_id ?
931
+ if row_right or row_left:
932
+ boat_rowing_time: lf32
930
933
 
931
934
  packet_respawn:
932
935
  !id: 0x2d
@@ -1592,7 +1595,7 @@ packet_command_block_update:
1592
1595
  # times, whereas if set to true, it will activate only if the previous command block executed
1593
1596
  # successfully. The field is only set if Block is set to true.
1594
1597
  conditional: bool
1595
- default:
1598
+ if false:
1596
1599
  minecart_entity_runtime_id: varint64
1597
1600
  # Command is the command currently entered in the command block. This is the command that is executed
1598
1601
  # when the command block is activated.