ghast-data 0.1.2

Static Minecraft Java Edition game data for the ghast client library: blocks, block states, collision shapes, items, entities, biomes, enchantments, foods (generated from PrismarineJS minecraft-data)
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
//! 1.8 block table: per-block info, per-state (`id << 4 | meta`) collision shape index.
//!
//! @generated by `cargo run -p ghast-codegen-data` from PrismarineJS minecraft-data 3.119.0 — do not edit.
//! Sources: pc/1.8/blocks.json, pc/1.8/blockCollisionShapes.json, codegen/data/src/facts.rs.

#![allow(clippy::all, clippy::pedantic, clippy::nursery, missing_docs)]

use crate::common::*;
use crate::v1_8::{Material, MaterialKind, VanillaProps};

pub(crate) static BLOCKS: [BlockInfo; 198] = [
    BlockInfo { id: 0, name: "air", display_name: "Air", hardness: Some(0.0), resistance: 0.0, stack_size: 0, diggable: false, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 1, name: "stone", display_name: "Stone", hardness: Some(1.5), resistance: 6.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 4, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 2, name: "grass", display_name: "Grass Block", hardness: Some(0.6), resistance: 0.6, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Dirt), harvest_tools: &[], drops: &[Drop { item: 3, meta: Some(0), min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 3, name: "dirt", display_name: "Dirt", hardness: Some(0.5), resistance: 0.5, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Dirt), harvest_tools: &[], drops: &[Drop { item: 3, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 4, name: "cobblestone", display_name: "Cobblestone", hardness: Some(2.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 4, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 5, name: "planks", display_name: "Wood Planks", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 5, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 6, name: "sapling", display_name: "Sapling", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 6, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 7, name: "bedrock", display_name: "Bedrock", hardness: None, resistance: 3600000.0, stack_size: 64, diggable: false, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 7, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 8, name: "flowing_water", display_name: "Water", hardness: Some(100.0), resistance: 100.0, stack_size: 64, diggable: false, transparent: true, emit_light: 0, filter_light: 2, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0002) } },
    BlockInfo { id: 9, name: "water", display_name: "Stationary Water", hardness: Some(100.0), resistance: 100.0, stack_size: 64, diggable: false, transparent: true, emit_light: 0, filter_light: 2, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0002) } },
    BlockInfo { id: 10, name: "flowing_lava", display_name: "Lava", hardness: Some(100.0), resistance: 100.0, stack_size: 64, diggable: false, transparent: true, emit_light: 15, filter_light: 0, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0004) } },
    BlockInfo { id: 11, name: "lava", display_name: "Stationary Lava", hardness: Some(100.0), resistance: 100.0, stack_size: 64, diggable: false, transparent: true, emit_light: 15, filter_light: 0, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0004) } },
    BlockInfo { id: 12, name: "sand", display_name: "Sand", hardness: Some(0.5), resistance: 0.5, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Dirt), harvest_tools: &[], drops: &[Drop { item: 12, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 13, name: "gravel", display_name: "Gravel", hardness: Some(0.6), resistance: 0.6, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Dirt), harvest_tools: &[], drops: &[Drop { item: 13, meta: None, min: 1, max: 1 }, Drop { item: 318, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 14, name: "gold_ore", display_name: "Gold Ore", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 278], drops: &[Drop { item: 14, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 15, name: "iron_ore", display_name: "Iron Ore", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 274, 278], drops: &[Drop { item: 15, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 16, name: "coal_ore", display_name: "Coal Ore", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 263, meta: Some(0), min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 17, name: "log", display_name: "Wood", hardness: Some(2.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 17, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 18, name: "leaves", display_name: "Leaves", hardness: Some(0.2), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Leaves), harvest_tools: &[], drops: &[Drop { item: 6, meta: None, min: 0, max: 1 }, Drop { item: 260, meta: None, min: 0, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 19, name: "sponge", display_name: "Sponge", hardness: Some(0.6), resistance: 0.6, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 19, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 20, name: "glass", display_name: "Glass", hardness: Some(0.3), resistance: 0.3, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 21, name: "lapis_ore", display_name: "Lapis Lazuli Ore", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 274, 278], drops: &[Drop { item: 351, meta: Some(4), min: 4, max: 8 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 22, name: "lapis_block", display_name: "Lapis Lazuli Block", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 274, 278], drops: &[Drop { item: 22, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 23, name: "dispenser", display_name: "Dispenser", hardness: Some(3.5), resistance: 3.5, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 23, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 24, name: "sandstone", display_name: "Sandstone", hardness: Some(0.8), resistance: 0.8, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 24, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 25, name: "noteblock", display_name: "Note Block", hardness: Some(0.8), resistance: 0.8, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 25, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 26, name: "bed", display_name: "Bed", hardness: Some(0.2), resistance: 0.2, stack_size: 1, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 26, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 27, name: "golden_rail", display_name: "Powered Rail", hardness: Some(0.7), resistance: 0.7, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Rock), harvest_tools: &[], drops: &[Drop { item: 27, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 28, name: "detector_rail", display_name: "Detector Rail", hardness: Some(0.7), resistance: 0.7, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Rock), harvest_tools: &[], drops: &[Drop { item: 28, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 29, name: "sticky_piston", display_name: "Sticky Piston", hardness: Some(0.5), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 29, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 30, name: "web", display_name: "Cobweb", hardness: Some(4.0), resistance: 4.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Web), harvest_tools: &[267, 268, 272, 276, 283, 359], drops: &[Drop { item: 287, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [0.25, 0.05000000074505806, 0.25], flags: PhysicsFlags(0x0008) } },
    BlockInfo { id: 31, name: "tallgrass", display_name: "Grass", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Dirt), harvest_tools: &[], drops: &[Drop { item: 295, meta: None, min: 0, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 32, name: "deadbush", display_name: "Dead Bush", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 32, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 33, name: "piston", display_name: "Piston", hardness: Some(0.5), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 33, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 34, name: "piston_head", display_name: "Piston Head", hardness: Some(0.5), resistance: 0.0, stack_size: 0, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 34, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 35, name: "wool", display_name: "Wool", hardness: Some(0.8), resistance: 0.8, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wool), harvest_tools: &[], drops: &[Drop { item: 35, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 36, name: "piston_extension", display_name: "Block moved by Piston", hardness: None, resistance: 0.0, stack_size: 0, diggable: false, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[Drop { item: 36, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 37, name: "yellow_flower", display_name: "Dandelion", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 37, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 38, name: "red_flower", display_name: "Poppy", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 38, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 39, name: "brown_mushroom", display_name: "Brown Mushroom", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: false, emit_light: 1, filter_light: 15, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 39, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 40, name: "red_mushroom", display_name: "Red Mushroom", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: false, emit_light: 1, filter_light: 15, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 40, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 41, name: "gold_block", display_name: "Block of Gold", hardness: Some(3.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 278], drops: &[Drop { item: 41, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 42, name: "iron_block", display_name: "Block of Iron", hardness: Some(5.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 274, 278], drops: &[Drop { item: 42, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 43, name: "double_stone_slab", display_name: "Double Stone Slab", hardness: Some(2.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 44, meta: Some(0), min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 44, name: "stone_slab", display_name: "Stone Slab", hardness: Some(2.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 44, meta: Some(0), min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 45, name: "brick_block", display_name: "Bricks", hardness: Some(2.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 45, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 46, name: "tnt", display_name: "TNT", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 46, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 47, name: "bookshelf", display_name: "Bookshelf", hardness: Some(1.5), resistance: 1.5, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 340, meta: None, min: 3, max: 3 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 48, name: "mossy_cobblestone", display_name: "Moss Stone", hardness: Some(2.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 48, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 49, name: "obsidian", display_name: "Obsidian", hardness: Some(50.0), resistance: 1200.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[278], drops: &[Drop { item: 49, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 50, name: "torch", display_name: "Torch", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 14, filter_light: 0, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[Drop { item: 50, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 51, name: "fire", display_name: "Fire", hardness: Some(0.0), resistance: 0.0, stack_size: 0, diggable: true, transparent: true, emit_light: 15, filter_light: 0, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 52, name: "mob_spawner", display_name: "Monster Spawner", hardness: Some(5.0), resistance: 5.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 52, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 53, name: "oak_stairs", display_name: "Oak Wood Stairs", hardness: Some(2.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 53, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 54, name: "chest", display_name: "Chest", hardness: Some(2.5), resistance: 2.5, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 54, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 55, name: "redstone_wire", display_name: "Redstone Wire", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[Drop { item: 55, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 56, name: "diamond_ore", display_name: "Diamond Ore", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 278], drops: &[Drop { item: 264, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 57, name: "diamond_block", display_name: "Block of Diamond", hardness: Some(5.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 278], drops: &[Drop { item: 57, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 58, name: "crafting_table", display_name: "Crafting Table", hardness: Some(2.5), resistance: 2.5, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 58, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 59, name: "wheat", display_name: "Wheat", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 296, meta: None, min: 1, max: 1 }, Drop { item: 295, meta: None, min: 0, max: 3 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 60, name: "farmland", display_name: "Farmland", hardness: Some(0.6), resistance: 0.6, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Dirt), harvest_tools: &[], drops: &[Drop { item: 3, meta: Some(0), min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 61, name: "furnace", display_name: "Furnace", hardness: Some(3.5), resistance: 3.5, stack_size: 64, diggable: true, transparent: true, emit_light: 13, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 61, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 62, name: "lit_furnace", display_name: "Burning Furnace", hardness: Some(3.5), resistance: 3.5, stack_size: 64, diggable: true, transparent: true, emit_light: 13, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 62, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 63, name: "standing_sign", display_name: "Standing Sign", hardness: Some(1.0), resistance: 1.0, stack_size: 16, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 63, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 64, name: "wooden_door", display_name: "Oak Door", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 64, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 65, name: "ladder", display_name: "Ladder", hardness: Some(0.4), resistance: 0.4, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 65, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0001) } },
    BlockInfo { id: 66, name: "rail", display_name: "Rail", hardness: Some(0.7), resistance: 0.7, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Rock), harvest_tools: &[], drops: &[Drop { item: 66, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 67, name: "stone_stairs", display_name: "Cobblestone Stairs", hardness: Some(2.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 67, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 68, name: "wall_sign", display_name: "Wall Sign", hardness: Some(1.0), resistance: 1.0, stack_size: 16, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 68, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 69, name: "lever", display_name: "Lever", hardness: Some(0.5), resistance: 0.5, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[Drop { item: 69, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 70, name: "stone_pressure_plate", display_name: "Stone Pressure Plate", hardness: Some(0.5), resistance: 0.5, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 70, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 71, name: "iron_door", display_name: "Iron Door", hardness: Some(5.0), resistance: 5.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 71, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 72, name: "wooden_pressure_plate", display_name: "Wooden Pressure Plate", hardness: Some(0.5), resistance: 0.5, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 72, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 73, name: "redstone_ore", display_name: "Redstone Ore", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 9, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 278], drops: &[Drop { item: 331, meta: None, min: 4, max: 5 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 74, name: "lit_redstone_ore", display_name: "Glowing Redstone Ore", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 9, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 278], drops: &[Drop { item: 331, meta: None, min: 4, max: 5 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 75, name: "unlit_redstone_torch", display_name: "Redstone Torch (inactive)", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 7, filter_light: 0, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[Drop { item: 75, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 76, name: "redstone_torch", display_name: "Redstone Torch (active)", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 7, filter_light: 0, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[Drop { item: 76, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 77, name: "stone_button", display_name: "Stone Button", hardness: Some(0.5), resistance: 0.5, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[Drop { item: 77, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 78, name: "snow_layer", display_name: "Snow (layer)", hardness: Some(0.2), resistance: 0.1, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Dirt), harvest_tools: &[256, 269, 273, 277, 284], drops: &[Drop { item: 332, meta: None, min: 2, max: 9 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 79, name: "ice", display_name: "Ice", hardness: Some(0.5), resistance: 0.5, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 2, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[], drops: &[], physics: BlockPhysics { slipperiness: 0.98, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0000) } },
    BlockInfo { id: 80, name: "snow", display_name: "Snow", hardness: Some(0.2), resistance: 0.2, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Dirt), harvest_tools: &[256, 269, 273, 277, 284], drops: &[Drop { item: 332, meta: None, min: 4, max: 4 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 81, name: "cactus", display_name: "Cactus", hardness: Some(0.4), resistance: 0.4, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 81, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 82, name: "clay", display_name: "Clay", hardness: Some(0.6), resistance: 0.6, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Dirt), harvest_tools: &[], drops: &[Drop { item: 337, meta: None, min: 4, max: 4 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 83, name: "reeds", display_name: "Sugar Cane", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 83, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 84, name: "jukebox", display_name: "Jukebox", hardness: Some(2.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 84, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 85, name: "fence", display_name: "Fence", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 85, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0200) } },
    BlockInfo { id: 86, name: "pumpkin", display_name: "Pumpkin", hardness: Some(1.0), resistance: 1.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 86, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 87, name: "netherrack", display_name: "Netherrack", hardness: Some(0.4), resistance: 0.4, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 87, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 88, name: "soul_sand", display_name: "Soul Sand", hardness: Some(0.5), resistance: 0.5, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Dirt), harvest_tools: &[], drops: &[Drop { item: 88, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 0.4, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0100) } },
    BlockInfo { id: 89, name: "glowstone", display_name: "Glowstone", hardness: Some(0.3), resistance: 0.3, stack_size: 64, diggable: true, transparent: true, emit_light: 15, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 348, meta: None, min: 2, max: 4 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 90, name: "portal", display_name: "Nether Portal", hardness: None, resistance: -1.0, stack_size: 0, diggable: false, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[Drop { item: 90, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 91, name: "lit_pumpkin", display_name: "Jack o'Lantern", hardness: Some(1.0), resistance: 1.0, stack_size: 64, diggable: true, transparent: true, emit_light: 15, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 91, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 92, name: "cake", display_name: "Cake", hardness: Some(0.5), resistance: 0.5, stack_size: 1, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 93, name: "unpowered_repeater", display_name: "Redstone Repeater (inactive)", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 93, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 94, name: "powered_repeater", display_name: "Redstone Repeater (active)", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 94, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 95, name: "stained_glass", display_name: "Stained Glass", hardness: Some(0.3), resistance: 0.3, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 96, name: "trapdoor", display_name: "Trapdoor", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 96, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x1000) } },
    BlockInfo { id: 97, name: "monster_egg", display_name: "Monster Egg", hardness: Some(0.75), resistance: 0.75, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 98, name: "stonebrick", display_name: "Stone Bricks", hardness: Some(1.5), resistance: 6.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 98, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 99, name: "brown_mushroom_block", display_name: "Brown Mushroom (block)", hardness: Some(0.0), resistance: 0.2, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 40, meta: None, min: 0, max: 2 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 100, name: "red_mushroom_block", display_name: "Red Mushroom (block)", hardness: Some(0.0), resistance: 0.2, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 40, meta: None, min: 0, max: 2 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 101, name: "iron_bars", display_name: "Iron Bars", hardness: Some(5.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 101, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 102, name: "glass_pane", display_name: "Glass Pane", hardness: Some(0.3), resistance: 0.3, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 103, name: "melon_block", display_name: "Melon", hardness: Some(1.0), resistance: 1.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 360, meta: None, min: 3, max: 7 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 104, name: "pumpkin_stem", display_name: "Pumpkin Stem", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 104, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 105, name: "melon_stem", display_name: "Melon Stem", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 105, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 106, name: "vine", display_name: "Vines", hardness: Some(0.2), resistance: 0.2, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 106, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0001) } },
    BlockInfo { id: 107, name: "fence_gate", display_name: "Fence Gate", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 107, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0800) } },
    BlockInfo { id: 108, name: "brick_stairs", display_name: "Brick Stairs", hardness: Some(2.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 108, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 109, name: "stone_brick_stairs", display_name: "Stone Brick Stairs", hardness: Some(1.5), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 109, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 110, name: "mycelium", display_name: "Mycelium", hardness: Some(0.6), resistance: 0.6, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Dirt), harvest_tools: &[], drops: &[Drop { item: 3, meta: Some(0), min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 111, name: "waterlily", display_name: "Lily Pad", hardness: Some(0.6), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 111, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 112, name: "nether_brick", display_name: "Nether Brick", hardness: Some(2.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 112, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 113, name: "nether_brick_fence", display_name: "Nether Brick Fence", hardness: Some(2.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 113, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0200) } },
    BlockInfo { id: 114, name: "nether_brick_stairs", display_name: "Nether Brick Stairs", hardness: Some(2.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 114, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 115, name: "nether_wart", display_name: "Nether Wart", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 372, meta: None, min: 1, max: 1 }, Drop { item: 372, meta: None, min: 2, max: 4 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 116, name: "enchanting_table", display_name: "Enchantment Table", hardness: Some(5.0), resistance: 1200.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 116, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 117, name: "brewing_stand", display_name: "Brewing Stand", hardness: Some(0.5), resistance: 0.5, stack_size: 64, diggable: true, transparent: true, emit_light: 1, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 117, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 118, name: "cauldron", display_name: "Cauldron", hardness: Some(2.0), resistance: 2.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 118, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 119, name: "end_portal", display_name: "End Portal", hardness: None, resistance: 3600000.0, stack_size: 0, diggable: false, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[Drop { item: 119, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 120, name: "end_portal_frame", display_name: "End Portal Block", hardness: None, resistance: 3600000.0, stack_size: 64, diggable: false, transparent: true, emit_light: 1, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 120, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 121, name: "end_stone", display_name: "End Stone", hardness: Some(3.0), resistance: 9.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 121, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 122, name: "dragon_egg", display_name: "Dragon Egg", hardness: Some(3.0), resistance: 9.0, stack_size: 64, diggable: true, transparent: true, emit_light: 1, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 122, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 123, name: "redstone_lamp", display_name: "Redstone Lamp (inactive)", hardness: Some(0.3), resistance: 0.3, stack_size: 64, diggable: true, transparent: true, emit_light: 15, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 123, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 124, name: "lit_redstone_lamp", display_name: "Redstone Lamp (active)", hardness: Some(0.3), resistance: 0.3, stack_size: 64, diggable: true, transparent: true, emit_light: 15, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 124, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 125, name: "double_wooden_slab", display_name: "Double Wooden Slab", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 44, meta: Some(0), min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 126, name: "wooden_slab", display_name: "Wooden Slab", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 44, meta: Some(0), min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 127, name: "cocoa", display_name: "Cocoa", hardness: Some(0.2), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 351, meta: Some(3), min: 1, max: 1 }, Drop { item: 351, meta: Some(3), min: 3, max: 3 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 128, name: "sandstone_stairs", display_name: "Sandstone Stairs", hardness: Some(0.8), resistance: 0.8, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 128, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 129, name: "emerald_ore", display_name: "Emerald Ore", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 278], drops: &[Drop { item: 388, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 130, name: "ender_chest", display_name: "Ender Chest", hardness: Some(22.5), resistance: 600.0, stack_size: 64, diggable: true, transparent: true, emit_light: 7, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 49, meta: None, min: 8, max: 8 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 131, name: "tripwire_hook", display_name: "Tripwire Hook", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[Drop { item: 131, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 132, name: "tripwire", display_name: "Tripwire", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[Drop { item: 132, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 133, name: "emerald_block", display_name: "Block of Emerald", hardness: Some(5.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 278], drops: &[Drop { item: 133, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 134, name: "spruce_stairs", display_name: "Spruce Wood Stairs", hardness: Some(2.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 134, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 135, name: "birch_stairs", display_name: "Birch Wood Stairs", hardness: Some(2.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 135, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 136, name: "jungle_stairs", display_name: "Jungle Wood Stairs", hardness: Some(2.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 136, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 137, name: "command_block", display_name: "Command Block", hardness: None, resistance: 3600000.0, stack_size: 64, diggable: false, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 137, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 138, name: "beacon", display_name: "Beacon", hardness: Some(3.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 15, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 138, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 139, name: "cobblestone_wall", display_name: "Cobblestone Wall", hardness: Some(2.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 139, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0400) } },
    BlockInfo { id: 140, name: "flower_pot", display_name: "Flower Pot", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 140, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 141, name: "carrots", display_name: "Carrot", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 141, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 142, name: "potatoes", display_name: "Potato", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 142, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 143, name: "wooden_button", display_name: "Wooden Button", hardness: Some(0.5), resistance: 0.5, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: None, harvest_tools: &[], drops: &[Drop { item: 143, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 144, name: "skull", display_name: "Mob head", hardness: Some(1.0), resistance: 1.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 144, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 145, name: "anvil", display_name: "Anvil", hardness: Some(5.0), resistance: 1200.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 145, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 146, name: "trapped_chest", display_name: "Trapped Chest", hardness: Some(2.5), resistance: 2.5, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 146, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 147, name: "light_weighted_pressure_plate", display_name: "Weighted Pressure Plate (Light)", hardness: Some(0.5), resistance: 0.5, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 147, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 148, name: "heavy_weighted_pressure_plate", display_name: "Weighted Pressure Plate (Heavy)", hardness: Some(0.5), resistance: 0.5, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 148, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 149, name: "unpowered_comparator", display_name: "Redstone Comparator", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 149, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 150, name: "powered_comparator", display_name: "Redstone Comparator (deprecated)", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 150, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 151, name: "daylight_detector", display_name: "Daylight Sensor", hardness: Some(0.2), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 151, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 152, name: "redstone_block", display_name: "Block of Redstone", hardness: Some(5.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 152, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 153, name: "quartz_ore", display_name: "Nether Quartz Ore", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 406, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 154, name: "hopper", display_name: "Hopper", hardness: Some(3.0), resistance: 4.8, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 154, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 155, name: "quartz_block", display_name: "Block of Quartz", hardness: Some(0.8), resistance: 0.8, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 155, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 156, name: "quartz_stairs", display_name: "Quartz Stairs", hardness: Some(0.8), resistance: 0.8, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 156, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 157, name: "activator_rail", display_name: "Activator Rail", hardness: Some(0.7), resistance: 0.7, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Rock), harvest_tools: &[], drops: &[Drop { item: 157, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 158, name: "dropper", display_name: "Dropper", hardness: Some(3.5), resistance: 3.5, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 158, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 159, name: "stained_hardened_clay", display_name: "Stained Clay", hardness: Some(1.25), resistance: 4.2, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 159, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 160, name: "stained_glass_pane", display_name: "Stained Glass Pane", hardness: Some(0.3), resistance: 0.3, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 161, name: "leaves2", display_name: "Leaves (Acacia/Dark Oak)", hardness: Some(0.2), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Leaves), harvest_tools: &[], drops: &[Drop { item: 6, meta: None, min: 0, max: 1 }, Drop { item: 260, meta: None, min: 0, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 162, name: "log2", display_name: "Wood (Acacia/Dark Oak)", hardness: Some(2.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 162, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 163, name: "acacia_stairs", display_name: "Acacia Wood Stairs", hardness: Some(2.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 163, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 164, name: "dark_oak_stairs", display_name: "Dark Oak Wood Stairs", hardness: Some(2.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 164, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 165, name: "slime", display_name: "Slime Block", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 165, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.8, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0010) } },
    BlockInfo { id: 166, name: "barrier", display_name: "Barrier", hardness: None, resistance: 0.0, stack_size: 64, diggable: false, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 167, name: "iron_trapdoor", display_name: "Iron Trapdoor", hardness: Some(5.0), resistance: 5.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 167, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x1000) } },
    BlockInfo { id: 168, name: "prismarine", display_name: "Prismarine", hardness: Some(1.5), resistance: 6.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 168, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 169, name: "sea_lantern", display_name: "Sea Lantern", hardness: Some(0.3), resistance: 0.3, stack_size: 64, diggable: true, transparent: true, emit_light: 15, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 410, meta: None, min: 2, max: 3 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 170, name: "hay_block", display_name: "Hay Bale", hardness: Some(0.5), resistance: 0.5, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 170, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 171, name: "carpet", display_name: "Carpet", hardness: Some(0.1), resistance: 0.1, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: None, harvest_tools: &[], drops: &[Drop { item: 171, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 172, name: "hardened_clay", display_name: "Hardened Clay", hardness: Some(1.25), resistance: 4.2, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 172, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 173, name: "coal_block", display_name: "Block of Coal", hardness: Some(5.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 173, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 174, name: "packed_ice", display_name: "Packed Ice", hardness: Some(0.5), resistance: 0.5, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[], drops: &[], physics: BlockPhysics { slipperiness: 0.98, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0000) } },
    BlockInfo { id: 175, name: "double_plant", display_name: "Large Flowers", hardness: Some(0.0), resistance: 0.0, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Plant), harvest_tools: &[], drops: &[Drop { item: 175, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 176, name: "standing_banner", display_name: "Standing Banner", hardness: Some(1.0), resistance: 1.0, stack_size: 16, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 176, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 177, name: "wall_banner", display_name: "Wall Banner", hardness: Some(1.0), resistance: 1.0, stack_size: 16, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Empty, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 177, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 178, name: "daylight_detector_inverted", display_name: "Inverted Daylight Sensor", hardness: Some(0.2), resistance: 0.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 178, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 179, name: "red_sandstone", display_name: "Red Sandstone", hardness: Some(0.8), resistance: 0.8, stack_size: 64, diggable: true, transparent: false, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 179, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 180, name: "red_sandstone_stairs", display_name: "Red Sandstone Stairs", hardness: Some(0.8), resistance: 0.8, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 15, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 180, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 181, name: "double_stone_slab2", display_name: "Double Red Sandstone Slab", hardness: Some(2.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 44, meta: Some(0), min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 182, name: "stone_slab2", display_name: "Red Sandstone Slab", hardness: Some(2.0), resistance: 6.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Rock), harvest_tools: &[257, 270, 274, 278, 285], drops: &[Drop { item: 44, meta: Some(0), min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 183, name: "spruce_fence_gate", display_name: "Spruce Fence Gate", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 183, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0800) } },
    BlockInfo { id: 184, name: "birch_fence_gate", display_name: "Birch Fence Gate", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 184, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0800) } },
    BlockInfo { id: 185, name: "jungle_fence_gate", display_name: "Jungle Fence Gate", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 185, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0800) } },
    BlockInfo { id: 186, name: "dark_oak_fence_gate", display_name: "Dark Oak Fence Gate", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 186, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0800) } },
    BlockInfo { id: 187, name: "acacia_fence_gate", display_name: "Acacia Fence Gate", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 187, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0800) } },
    BlockInfo { id: 188, name: "spruce_fence", display_name: "Spruce Fence", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 188, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0200) } },
    BlockInfo { id: 189, name: "birch_fence", display_name: "Birch Fence", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 189, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0200) } },
    BlockInfo { id: 190, name: "jungle_fence", display_name: "Jungle Fence", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 190, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0200) } },
    BlockInfo { id: 191, name: "dark_oak_fence", display_name: "Dark Oak Fence", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 191, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0200) } },
    BlockInfo { id: 192, name: "acacia_fence", display_name: "Acacia Fence", hardness: Some(2.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 192, meta: None, min: 1, max: 1 }], physics: BlockPhysics { slipperiness: 0.6, speed_factor: 1.0, jump_factor: 1.0, stuck_multiplier: [1.0, 1.0, 1.0], flags: PhysicsFlags(0x0200) } },
    BlockInfo { id: 193, name: "spruce_door", display_name: "Spruce Door", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 193, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 194, name: "birch_door", display_name: "Birch Door", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 194, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 195, name: "jungle_door", display_name: "Jungle Door", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 195, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 196, name: "acacia_door", display_name: "Acacia Door", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 196, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
    BlockInfo { id: 197, name: "dark_oak_door", display_name: "Dark Oak Door", hardness: Some(3.0), resistance: 3.0, stack_size: 64, diggable: true, transparent: true, emit_light: 0, filter_light: 0, bounding_box: BoundingBox::Block, material: Some(DigMaterial::Wood), harvest_tools: &[], drops: &[Drop { item: 197, meta: None, min: 1, max: 1 }], physics: BlockPhysics::DEFAULT },
];

pub(crate) static BLOCK_NAMES: [(&str, u8); 198] = [
    ("acacia_door", 196),
    ("acacia_fence", 192),
    ("acacia_fence_gate", 187),
    ("acacia_stairs", 163),
    ("activator_rail", 157),
    ("air", 0),
    ("anvil", 145),
    ("barrier", 166),
    ("beacon", 138),
    ("bed", 26),
    ("bedrock", 7),
    ("birch_door", 194),
    ("birch_fence", 189),
    ("birch_fence_gate", 184),
    ("birch_stairs", 135),
    ("bookshelf", 47),
    ("brewing_stand", 117),
    ("brick_block", 45),
    ("brick_stairs", 108),
    ("brown_mushroom", 39),
    ("brown_mushroom_block", 99),
    ("cactus", 81),
    ("cake", 92),
    ("carpet", 171),
    ("carrots", 141),
    ("cauldron", 118),
    ("chest", 54),
    ("clay", 82),
    ("coal_block", 173),
    ("coal_ore", 16),
    ("cobblestone", 4),
    ("cobblestone_wall", 139),
    ("cocoa", 127),
    ("command_block", 137),
    ("crafting_table", 58),
    ("dark_oak_door", 197),
    ("dark_oak_fence", 191),
    ("dark_oak_fence_gate", 186),
    ("dark_oak_stairs", 164),
    ("daylight_detector", 151),
    ("daylight_detector_inverted", 178),
    ("deadbush", 32),
    ("detector_rail", 28),
    ("diamond_block", 57),
    ("diamond_ore", 56),
    ("dirt", 3),
    ("dispenser", 23),
    ("double_plant", 175),
    ("double_stone_slab", 43),
    ("double_stone_slab2", 181),
    ("double_wooden_slab", 125),
    ("dragon_egg", 122),
    ("dropper", 158),
    ("emerald_block", 133),
    ("emerald_ore", 129),
    ("enchanting_table", 116),
    ("end_portal", 119),
    ("end_portal_frame", 120),
    ("end_stone", 121),
    ("ender_chest", 130),
    ("farmland", 60),
    ("fence", 85),
    ("fence_gate", 107),
    ("fire", 51),
    ("flower_pot", 140),
    ("flowing_lava", 10),
    ("flowing_water", 8),
    ("furnace", 61),
    ("glass", 20),
    ("glass_pane", 102),
    ("glowstone", 89),
    ("gold_block", 41),
    ("gold_ore", 14),
    ("golden_rail", 27),
    ("grass", 2),
    ("gravel", 13),
    ("hardened_clay", 172),
    ("hay_block", 170),
    ("heavy_weighted_pressure_plate", 148),
    ("hopper", 154),
    ("ice", 79),
    ("iron_bars", 101),
    ("iron_block", 42),
    ("iron_door", 71),
    ("iron_ore", 15),
    ("iron_trapdoor", 167),
    ("jukebox", 84),
    ("jungle_door", 195),
    ("jungle_fence", 190),
    ("jungle_fence_gate", 185),
    ("jungle_stairs", 136),
    ("ladder", 65),
    ("lapis_block", 22),
    ("lapis_ore", 21),
    ("lava", 11),
    ("leaves", 18),
    ("leaves2", 161),
    ("lever", 69),
    ("light_weighted_pressure_plate", 147),
    ("lit_furnace", 62),
    ("lit_pumpkin", 91),
    ("lit_redstone_lamp", 124),
    ("lit_redstone_ore", 74),
    ("log", 17),
    ("log2", 162),
    ("melon_block", 103),
    ("melon_stem", 105),
    ("mob_spawner", 52),
    ("monster_egg", 97),
    ("mossy_cobblestone", 48),
    ("mycelium", 110),
    ("nether_brick", 112),
    ("nether_brick_fence", 113),
    ("nether_brick_stairs", 114),
    ("nether_wart", 115),
    ("netherrack", 87),
    ("noteblock", 25),
    ("oak_stairs", 53),
    ("obsidian", 49),
    ("packed_ice", 174),
    ("piston", 33),
    ("piston_extension", 36),
    ("piston_head", 34),
    ("planks", 5),
    ("portal", 90),
    ("potatoes", 142),
    ("powered_comparator", 150),
    ("powered_repeater", 94),
    ("prismarine", 168),
    ("pumpkin", 86),
    ("pumpkin_stem", 104),
    ("quartz_block", 155),
    ("quartz_ore", 153),
    ("quartz_stairs", 156),
    ("rail", 66),
    ("red_flower", 38),
    ("red_mushroom", 40),
    ("red_mushroom_block", 100),
    ("red_sandstone", 179),
    ("red_sandstone_stairs", 180),
    ("redstone_block", 152),
    ("redstone_lamp", 123),
    ("redstone_ore", 73),
    ("redstone_torch", 76),
    ("redstone_wire", 55),
    ("reeds", 83),
    ("sand", 12),
    ("sandstone", 24),
    ("sandstone_stairs", 128),
    ("sapling", 6),
    ("sea_lantern", 169),
    ("skull", 144),
    ("slime", 165),
    ("snow", 80),
    ("snow_layer", 78),
    ("soul_sand", 88),
    ("sponge", 19),
    ("spruce_door", 193),
    ("spruce_fence", 188),
    ("spruce_fence_gate", 183),
    ("spruce_stairs", 134),
    ("stained_glass", 95),
    ("stained_glass_pane", 160),
    ("stained_hardened_clay", 159),
    ("standing_banner", 176),
    ("standing_sign", 63),
    ("sticky_piston", 29),
    ("stone", 1),
    ("stone_brick_stairs", 109),
    ("stone_button", 77),
    ("stone_pressure_plate", 70),
    ("stone_slab", 44),
    ("stone_slab2", 182),
    ("stone_stairs", 67),
    ("stonebrick", 98),
    ("tallgrass", 31),
    ("tnt", 46),
    ("torch", 50),
    ("trapdoor", 96),
    ("trapped_chest", 146),
    ("tripwire", 132),
    ("tripwire_hook", 131),
    ("unlit_redstone_torch", 75),
    ("unpowered_comparator", 149),
    ("unpowered_repeater", 93),
    ("vine", 106),
    ("wall_banner", 177),
    ("wall_sign", 68),
    ("water", 9),
    ("waterlily", 111),
    ("web", 30),
    ("wheat", 59),
    ("wooden_button", 143),
    ("wooden_door", 64),
    ("wooden_pressure_plate", 72),
    ("wooden_slab", 126),
    ("wool", 35),
    ("yellow_flower", 37),
];

/// Block constants.
impl crate::v1_8::Block {
    /// `air` (Air).
    pub const AIR: Self = Self(0);
    /// `stone` (Stone).
    pub const STONE: Self = Self(1);
    /// `grass` (Grass Block).
    pub const GRASS: Self = Self(2);
    /// `dirt` (Dirt).
    pub const DIRT: Self = Self(3);
    /// `cobblestone` (Cobblestone).
    pub const COBBLESTONE: Self = Self(4);
    /// `planks` (Wood Planks).
    pub const PLANKS: Self = Self(5);
    /// `sapling` (Sapling).
    pub const SAPLING: Self = Self(6);
    /// `bedrock` (Bedrock).
    pub const BEDROCK: Self = Self(7);
    /// `flowing_water` (Water).
    pub const FLOWING_WATER: Self = Self(8);
    /// `water` (Stationary Water).
    pub const WATER: Self = Self(9);
    /// `flowing_lava` (Lava).
    pub const FLOWING_LAVA: Self = Self(10);
    /// `lava` (Stationary Lava).
    pub const LAVA: Self = Self(11);
    /// `sand` (Sand).
    pub const SAND: Self = Self(12);
    /// `gravel` (Gravel).
    pub const GRAVEL: Self = Self(13);
    /// `gold_ore` (Gold Ore).
    pub const GOLD_ORE: Self = Self(14);
    /// `iron_ore` (Iron Ore).
    pub const IRON_ORE: Self = Self(15);
    /// `coal_ore` (Coal Ore).
    pub const COAL_ORE: Self = Self(16);
    /// `log` (Wood).
    pub const LOG: Self = Self(17);
    /// `leaves` (Leaves).
    pub const LEAVES: Self = Self(18);
    /// `sponge` (Sponge).
    pub const SPONGE: Self = Self(19);
    /// `glass` (Glass).
    pub const GLASS: Self = Self(20);
    /// `lapis_ore` (Lapis Lazuli Ore).
    pub const LAPIS_ORE: Self = Self(21);
    /// `lapis_block` (Lapis Lazuli Block).
    pub const LAPIS_BLOCK: Self = Self(22);
    /// `dispenser` (Dispenser).
    pub const DISPENSER: Self = Self(23);
    /// `sandstone` (Sandstone).
    pub const SANDSTONE: Self = Self(24);
    /// `noteblock` (Note Block).
    pub const NOTEBLOCK: Self = Self(25);
    /// `bed` (Bed).
    pub const BED: Self = Self(26);
    /// `golden_rail` (Powered Rail).
    pub const GOLDEN_RAIL: Self = Self(27);
    /// `detector_rail` (Detector Rail).
    pub const DETECTOR_RAIL: Self = Self(28);
    /// `sticky_piston` (Sticky Piston).
    pub const STICKY_PISTON: Self = Self(29);
    /// `web` (Cobweb).
    pub const WEB: Self = Self(30);
    /// `tallgrass` (Grass).
    pub const TALLGRASS: Self = Self(31);
    /// `deadbush` (Dead Bush).
    pub const DEADBUSH: Self = Self(32);
    /// `piston` (Piston).
    pub const PISTON: Self = Self(33);
    /// `piston_head` (Piston Head).
    pub const PISTON_HEAD: Self = Self(34);
    /// `wool` (Wool).
    pub const WOOL: Self = Self(35);
    /// `piston_extension` (Block moved by Piston).
    pub const PISTON_EXTENSION: Self = Self(36);
    /// `yellow_flower` (Dandelion).
    pub const YELLOW_FLOWER: Self = Self(37);
    /// `red_flower` (Poppy).
    pub const RED_FLOWER: Self = Self(38);
    /// `brown_mushroom` (Brown Mushroom).
    pub const BROWN_MUSHROOM: Self = Self(39);
    /// `red_mushroom` (Red Mushroom).
    pub const RED_MUSHROOM: Self = Self(40);
    /// `gold_block` (Block of Gold).
    pub const GOLD_BLOCK: Self = Self(41);
    /// `iron_block` (Block of Iron).
    pub const IRON_BLOCK: Self = Self(42);
    /// `double_stone_slab` (Double Stone Slab).
    pub const DOUBLE_STONE_SLAB: Self = Self(43);
    /// `stone_slab` (Stone Slab).
    pub const STONE_SLAB: Self = Self(44);
    /// `brick_block` (Bricks).
    pub const BRICK_BLOCK: Self = Self(45);
    /// `tnt` (TNT).
    pub const TNT: Self = Self(46);
    /// `bookshelf` (Bookshelf).
    pub const BOOKSHELF: Self = Self(47);
    /// `mossy_cobblestone` (Moss Stone).
    pub const MOSSY_COBBLESTONE: Self = Self(48);
    /// `obsidian` (Obsidian).
    pub const OBSIDIAN: Self = Self(49);
    /// `torch` (Torch).
    pub const TORCH: Self = Self(50);
    /// `fire` (Fire).
    pub const FIRE: Self = Self(51);
    /// `mob_spawner` (Monster Spawner).
    pub const MOB_SPAWNER: Self = Self(52);
    /// `oak_stairs` (Oak Wood Stairs).
    pub const OAK_STAIRS: Self = Self(53);
    /// `chest` (Chest).
    pub const CHEST: Self = Self(54);
    /// `redstone_wire` (Redstone Wire).
    pub const REDSTONE_WIRE: Self = Self(55);
    /// `diamond_ore` (Diamond Ore).
    pub const DIAMOND_ORE: Self = Self(56);
    /// `diamond_block` (Block of Diamond).
    pub const DIAMOND_BLOCK: Self = Self(57);
    /// `crafting_table` (Crafting Table).
    pub const CRAFTING_TABLE: Self = Self(58);
    /// `wheat` (Wheat).
    pub const WHEAT: Self = Self(59);
    /// `farmland` (Farmland).
    pub const FARMLAND: Self = Self(60);
    /// `furnace` (Furnace).
    pub const FURNACE: Self = Self(61);
    /// `lit_furnace` (Burning Furnace).
    pub const LIT_FURNACE: Self = Self(62);
    /// `standing_sign` (Standing Sign).
    pub const STANDING_SIGN: Self = Self(63);
    /// `wooden_door` (Oak Door).
    pub const WOODEN_DOOR: Self = Self(64);
    /// `ladder` (Ladder).
    pub const LADDER: Self = Self(65);
    /// `rail` (Rail).
    pub const RAIL: Self = Self(66);
    /// `stone_stairs` (Cobblestone Stairs).
    pub const STONE_STAIRS: Self = Self(67);
    /// `wall_sign` (Wall Sign).
    pub const WALL_SIGN: Self = Self(68);
    /// `lever` (Lever).
    pub const LEVER: Self = Self(69);
    /// `stone_pressure_plate` (Stone Pressure Plate).
    pub const STONE_PRESSURE_PLATE: Self = Self(70);
    /// `iron_door` (Iron Door).
    pub const IRON_DOOR: Self = Self(71);
    /// `wooden_pressure_plate` (Wooden Pressure Plate).
    pub const WOODEN_PRESSURE_PLATE: Self = Self(72);
    /// `redstone_ore` (Redstone Ore).
    pub const REDSTONE_ORE: Self = Self(73);
    /// `lit_redstone_ore` (Glowing Redstone Ore).
    pub const LIT_REDSTONE_ORE: Self = Self(74);
    /// `unlit_redstone_torch` (Redstone Torch (inactive)).
    pub const UNLIT_REDSTONE_TORCH: Self = Self(75);
    /// `redstone_torch` (Redstone Torch (active)).
    pub const REDSTONE_TORCH: Self = Self(76);
    /// `stone_button` (Stone Button).
    pub const STONE_BUTTON: Self = Self(77);
    /// `snow_layer` (Snow (layer)).
    pub const SNOW_LAYER: Self = Self(78);
    /// `ice` (Ice).
    pub const ICE: Self = Self(79);
    /// `snow` (Snow).
    pub const SNOW: Self = Self(80);
    /// `cactus` (Cactus).
    pub const CACTUS: Self = Self(81);
    /// `clay` (Clay).
    pub const CLAY: Self = Self(82);
    /// `reeds` (Sugar Cane).
    pub const REEDS: Self = Self(83);
    /// `jukebox` (Jukebox).
    pub const JUKEBOX: Self = Self(84);
    /// `fence` (Fence).
    pub const FENCE: Self = Self(85);
    /// `pumpkin` (Pumpkin).
    pub const PUMPKIN: Self = Self(86);
    /// `netherrack` (Netherrack).
    pub const NETHERRACK: Self = Self(87);
    /// `soul_sand` (Soul Sand).
    pub const SOUL_SAND: Self = Self(88);
    /// `glowstone` (Glowstone).
    pub const GLOWSTONE: Self = Self(89);
    /// `portal` (Nether Portal).
    pub const PORTAL: Self = Self(90);
    /// `lit_pumpkin` (Jack o'Lantern).
    pub const LIT_PUMPKIN: Self = Self(91);
    /// `cake` (Cake).
    pub const CAKE: Self = Self(92);
    /// `unpowered_repeater` (Redstone Repeater (inactive)).
    pub const UNPOWERED_REPEATER: Self = Self(93);
    /// `powered_repeater` (Redstone Repeater (active)).
    pub const POWERED_REPEATER: Self = Self(94);
    /// `stained_glass` (Stained Glass).
    pub const STAINED_GLASS: Self = Self(95);
    /// `trapdoor` (Trapdoor).
    pub const TRAPDOOR: Self = Self(96);
    /// `monster_egg` (Monster Egg).
    pub const MONSTER_EGG: Self = Self(97);
    /// `stonebrick` (Stone Bricks).
    pub const STONEBRICK: Self = Self(98);
    /// `brown_mushroom_block` (Brown Mushroom (block)).
    pub const BROWN_MUSHROOM_BLOCK: Self = Self(99);
    /// `red_mushroom_block` (Red Mushroom (block)).
    pub const RED_MUSHROOM_BLOCK: Self = Self(100);
    /// `iron_bars` (Iron Bars).
    pub const IRON_BARS: Self = Self(101);
    /// `glass_pane` (Glass Pane).
    pub const GLASS_PANE: Self = Self(102);
    /// `melon_block` (Melon).
    pub const MELON_BLOCK: Self = Self(103);
    /// `pumpkin_stem` (Pumpkin Stem).
    pub const PUMPKIN_STEM: Self = Self(104);
    /// `melon_stem` (Melon Stem).
    pub const MELON_STEM: Self = Self(105);
    /// `vine` (Vines).
    pub const VINE: Self = Self(106);
    /// `fence_gate` (Fence Gate).
    pub const FENCE_GATE: Self = Self(107);
    /// `brick_stairs` (Brick Stairs).
    pub const BRICK_STAIRS: Self = Self(108);
    /// `stone_brick_stairs` (Stone Brick Stairs).
    pub const STONE_BRICK_STAIRS: Self = Self(109);
    /// `mycelium` (Mycelium).
    pub const MYCELIUM: Self = Self(110);
    /// `waterlily` (Lily Pad).
    pub const WATERLILY: Self = Self(111);
    /// `nether_brick` (Nether Brick).
    pub const NETHER_BRICK: Self = Self(112);
    /// `nether_brick_fence` (Nether Brick Fence).
    pub const NETHER_BRICK_FENCE: Self = Self(113);
    /// `nether_brick_stairs` (Nether Brick Stairs).
    pub const NETHER_BRICK_STAIRS: Self = Self(114);
    /// `nether_wart` (Nether Wart).
    pub const NETHER_WART: Self = Self(115);
    /// `enchanting_table` (Enchantment Table).
    pub const ENCHANTING_TABLE: Self = Self(116);
    /// `brewing_stand` (Brewing Stand).
    pub const BREWING_STAND: Self = Self(117);
    /// `cauldron` (Cauldron).
    pub const CAULDRON: Self = Self(118);
    /// `end_portal` (End Portal).
    pub const END_PORTAL: Self = Self(119);
    /// `end_portal_frame` (End Portal Block).
    pub const END_PORTAL_FRAME: Self = Self(120);
    /// `end_stone` (End Stone).
    pub const END_STONE: Self = Self(121);
    /// `dragon_egg` (Dragon Egg).
    pub const DRAGON_EGG: Self = Self(122);
    /// `redstone_lamp` (Redstone Lamp (inactive)).
    pub const REDSTONE_LAMP: Self = Self(123);
    /// `lit_redstone_lamp` (Redstone Lamp (active)).
    pub const LIT_REDSTONE_LAMP: Self = Self(124);
    /// `double_wooden_slab` (Double Wooden Slab).
    pub const DOUBLE_WOODEN_SLAB: Self = Self(125);
    /// `wooden_slab` (Wooden Slab).
    pub const WOODEN_SLAB: Self = Self(126);
    /// `cocoa` (Cocoa).
    pub const COCOA: Self = Self(127);
    /// `sandstone_stairs` (Sandstone Stairs).
    pub const SANDSTONE_STAIRS: Self = Self(128);
    /// `emerald_ore` (Emerald Ore).
    pub const EMERALD_ORE: Self = Self(129);
    /// `ender_chest` (Ender Chest).
    pub const ENDER_CHEST: Self = Self(130);
    /// `tripwire_hook` (Tripwire Hook).
    pub const TRIPWIRE_HOOK: Self = Self(131);
    /// `tripwire` (Tripwire).
    pub const TRIPWIRE: Self = Self(132);
    /// `emerald_block` (Block of Emerald).
    pub const EMERALD_BLOCK: Self = Self(133);
    /// `spruce_stairs` (Spruce Wood Stairs).
    pub const SPRUCE_STAIRS: Self = Self(134);
    /// `birch_stairs` (Birch Wood Stairs).
    pub const BIRCH_STAIRS: Self = Self(135);
    /// `jungle_stairs` (Jungle Wood Stairs).
    pub const JUNGLE_STAIRS: Self = Self(136);
    /// `command_block` (Command Block).
    pub const COMMAND_BLOCK: Self = Self(137);
    /// `beacon` (Beacon).
    pub const BEACON: Self = Self(138);
    /// `cobblestone_wall` (Cobblestone Wall).
    pub const COBBLESTONE_WALL: Self = Self(139);
    /// `flower_pot` (Flower Pot).
    pub const FLOWER_POT: Self = Self(140);
    /// `carrots` (Carrot).
    pub const CARROTS: Self = Self(141);
    /// `potatoes` (Potato).
    pub const POTATOES: Self = Self(142);
    /// `wooden_button` (Wooden Button).
    pub const WOODEN_BUTTON: Self = Self(143);
    /// `skull` (Mob head).
    pub const SKULL: Self = Self(144);
    /// `anvil` (Anvil).
    pub const ANVIL: Self = Self(145);
    /// `trapped_chest` (Trapped Chest).
    pub const TRAPPED_CHEST: Self = Self(146);
    /// `light_weighted_pressure_plate` (Weighted Pressure Plate (Light)).
    pub const LIGHT_WEIGHTED_PRESSURE_PLATE: Self = Self(147);
    /// `heavy_weighted_pressure_plate` (Weighted Pressure Plate (Heavy)).
    pub const HEAVY_WEIGHTED_PRESSURE_PLATE: Self = Self(148);
    /// `unpowered_comparator` (Redstone Comparator).
    pub const UNPOWERED_COMPARATOR: Self = Self(149);
    /// `powered_comparator` (Redstone Comparator (deprecated)).
    pub const POWERED_COMPARATOR: Self = Self(150);
    /// `daylight_detector` (Daylight Sensor).
    pub const DAYLIGHT_DETECTOR: Self = Self(151);
    /// `redstone_block` (Block of Redstone).
    pub const REDSTONE_BLOCK: Self = Self(152);
    /// `quartz_ore` (Nether Quartz Ore).
    pub const QUARTZ_ORE: Self = Self(153);
    /// `hopper` (Hopper).
    pub const HOPPER: Self = Self(154);
    /// `quartz_block` (Block of Quartz).
    pub const QUARTZ_BLOCK: Self = Self(155);
    /// `quartz_stairs` (Quartz Stairs).
    pub const QUARTZ_STAIRS: Self = Self(156);
    /// `activator_rail` (Activator Rail).
    pub const ACTIVATOR_RAIL: Self = Self(157);
    /// `dropper` (Dropper).
    pub const DROPPER: Self = Self(158);
    /// `stained_hardened_clay` (Stained Clay).
    pub const STAINED_HARDENED_CLAY: Self = Self(159);
    /// `stained_glass_pane` (Stained Glass Pane).
    pub const STAINED_GLASS_PANE: Self = Self(160);
    /// `leaves2` (Leaves (Acacia/Dark Oak)).
    pub const LEAVES2: Self = Self(161);
    /// `log2` (Wood (Acacia/Dark Oak)).
    pub const LOG2: Self = Self(162);
    /// `acacia_stairs` (Acacia Wood Stairs).
    pub const ACACIA_STAIRS: Self = Self(163);
    /// `dark_oak_stairs` (Dark Oak Wood Stairs).
    pub const DARK_OAK_STAIRS: Self = Self(164);
    /// `slime` (Slime Block).
    pub const SLIME: Self = Self(165);
    /// `barrier` (Barrier).
    pub const BARRIER: Self = Self(166);
    /// `iron_trapdoor` (Iron Trapdoor).
    pub const IRON_TRAPDOOR: Self = Self(167);
    /// `prismarine` (Prismarine).
    pub const PRISMARINE: Self = Self(168);
    /// `sea_lantern` (Sea Lantern).
    pub const SEA_LANTERN: Self = Self(169);
    /// `hay_block` (Hay Bale).
    pub const HAY_BLOCK: Self = Self(170);
    /// `carpet` (Carpet).
    pub const CARPET: Self = Self(171);
    /// `hardened_clay` (Hardened Clay).
    pub const HARDENED_CLAY: Self = Self(172);
    /// `coal_block` (Block of Coal).
    pub const COAL_BLOCK: Self = Self(173);
    /// `packed_ice` (Packed Ice).
    pub const PACKED_ICE: Self = Self(174);
    /// `double_plant` (Large Flowers).
    pub const DOUBLE_PLANT: Self = Self(175);
    /// `standing_banner` (Standing Banner).
    pub const STANDING_BANNER: Self = Self(176);
    /// `wall_banner` (Wall Banner).
    pub const WALL_BANNER: Self = Self(177);
    /// `daylight_detector_inverted` (Inverted Daylight Sensor).
    pub const DAYLIGHT_DETECTOR_INVERTED: Self = Self(178);
    /// `red_sandstone` (Red Sandstone).
    pub const RED_SANDSTONE: Self = Self(179);
    /// `red_sandstone_stairs` (Red Sandstone Stairs).
    pub const RED_SANDSTONE_STAIRS: Self = Self(180);
    /// `double_stone_slab2` (Double Red Sandstone Slab).
    pub const DOUBLE_STONE_SLAB2: Self = Self(181);
    /// `stone_slab2` (Red Sandstone Slab).
    pub const STONE_SLAB2: Self = Self(182);
    /// `spruce_fence_gate` (Spruce Fence Gate).
    pub const SPRUCE_FENCE_GATE: Self = Self(183);
    /// `birch_fence_gate` (Birch Fence Gate).
    pub const BIRCH_FENCE_GATE: Self = Self(184);
    /// `jungle_fence_gate` (Jungle Fence Gate).
    pub const JUNGLE_FENCE_GATE: Self = Self(185);
    /// `dark_oak_fence_gate` (Dark Oak Fence Gate).
    pub const DARK_OAK_FENCE_GATE: Self = Self(186);
    /// `acacia_fence_gate` (Acacia Fence Gate).
    pub const ACACIA_FENCE_GATE: Self = Self(187);
    /// `spruce_fence` (Spruce Fence).
    pub const SPRUCE_FENCE: Self = Self(188);
    /// `birch_fence` (Birch Fence).
    pub const BIRCH_FENCE: Self = Self(189);
    /// `jungle_fence` (Jungle Fence).
    pub const JUNGLE_FENCE: Self = Self(190);
    /// `dark_oak_fence` (Dark Oak Fence).
    pub const DARK_OAK_FENCE: Self = Self(191);
    /// `acacia_fence` (Acacia Fence).
    pub const ACACIA_FENCE: Self = Self(192);
    /// `spruce_door` (Spruce Door).
    pub const SPRUCE_DOOR: Self = Self(193);
    /// `birch_door` (Birch Door).
    pub const BIRCH_DOOR: Self = Self(194);
    /// `jungle_door` (Jungle Door).
    pub const JUNGLE_DOOR: Self = Self(195);
    /// `acacia_door` (Acacia Door).
    pub const ACACIA_DOOR: Self = Self(196);
    /// `dark_oak_door` (Dark Oak Door).
    pub const DARK_OAK_DOOR: Self = Self(197);
}

pub(crate) static SHAPES: [&[Aabb]; 93] = [
    &[],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.5625, 1.0)],
    &[Aabb::new(0.0, 0.25, 0.0, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.75, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.25, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 1.0, 0.75)],
    &[Aabb::new(0.25, 0.0, 0.0, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 0.75, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.5, 1.0)],
    &[Aabb::new(0.0, 0.5, 0.0, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.5, 1.0), Aabb::new(0.0, 0.5, 0.0, 1.0, 1.0, 0.5)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.5, 1.0), Aabb::new(0.5, 0.5, 0.0, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.5, 1.0), Aabb::new(0.0, 0.5, 0.0, 0.5, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.5, 1.0), Aabb::new(0.0, 0.5, 0.5, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.5, 0.0, 1.0, 1.0, 1.0), Aabb::new(0.5, 0.0, 0.0, 1.0, 0.5, 1.0)],
    &[Aabb::new(0.0, 0.5, 0.0, 1.0, 1.0, 1.0), Aabb::new(0.0, 0.0, 0.0, 0.5, 0.5, 1.0)],
    &[Aabb::new(0.0, 0.5, 0.0, 1.0, 1.0, 1.0), Aabb::new(0.0, 0.0, 0.5, 1.0, 0.5, 1.0)],
    &[Aabb::new(0.0, 0.5, 0.0, 1.0, 1.0, 1.0), Aabb::new(0.0, 0.0, 0.0, 1.0, 0.5, 0.5)],
    &[Aabb::new(0.0625, 0.0, 0.0625, 0.9375, 0.875, 0.9375)],
    &[Aabb::new(0.0, 0.0, 0.8125, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 0.1875, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 1.0, 0.1875)],
    &[Aabb::new(0.8125, 0.0, 0.0, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.125, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.25, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.375, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.625, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.875, 1.0)],
    &[Aabb::new(0.0625, 0.0, 0.0625, 0.9375, 0.9375, 0.9375)],
    &[Aabb::new(0.375, 0.0, 0.375, 0.625, 1.5, 0.625)],
    &[Aabb::new(0.0625, 0.0, 0.0625, 0.9375, 0.5, 0.9375)],
    &[Aabb::new(0.1875, 0.0, 0.0625, 0.9375, 0.5, 0.9375)],
    &[Aabb::new(0.3125, 0.0, 0.0625, 0.9375, 0.5, 0.9375)],
    &[Aabb::new(0.4375, 0.0, 0.0625, 0.9375, 0.5, 0.9375)],
    &[Aabb::new(0.5625, 0.0, 0.0625, 0.9375, 0.5, 0.9375)],
    &[Aabb::new(0.6875, 0.0, 0.0625, 0.9375, 0.5, 0.9375)],
    &[Aabb::new(0.8125, 0.0, 0.0625, 0.9375, 0.5, 0.9375)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.1875, 1.0)],
    &[Aabb::new(0.0, 0.8125, 0.0, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.375, 1.0, 1.5, 0.625)],
    &[Aabb::new(0.375, 0.0, 0.0, 0.625, 1.5, 1.0)],
    &[Aabb::new(0.4375, 0.0, 0.4375, 0.5625, 0.875, 0.5625), Aabb::new(0.0, 0.0, 0.0, 1.0, 0.125, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.3125, 1.0), Aabb::new(0.0, 0.0, 0.0, 0.125, 1.0, 1.0), Aabb::new(0.0, 0.0, 0.0, 1.0, 1.0, 0.125), Aabb::new(0.875, 0.0, 0.0, 1.0, 1.0, 1.0), Aabb::new(0.0, 0.0, 0.875, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0625, 0.0, 0.0625, 0.9375, 1.0, 0.9375)],
    &[Aabb::new(0.375, 0.4375, 0.0625, 0.625, 0.75, 0.3125)],
    &[Aabb::new(0.375, 0.4375, 0.6875, 0.625, 0.75, 0.9375)],
    &[Aabb::new(0.0625, 0.4375, 0.375, 0.3125, 0.75, 0.625)],
    &[Aabb::new(0.6875, 0.4375, 0.375, 0.9375, 0.75, 0.625)],
    &[Aabb::new(0.3125, 0.3125, 0.5625, 0.6875, 0.75, 0.9375)],
    &[Aabb::new(0.0625, 0.3125, 0.3125, 0.4375, 0.75, 0.6875)],
    &[Aabb::new(0.3125, 0.3125, 0.0625, 0.6875, 0.75, 0.4375)],
    &[Aabb::new(0.5625, 0.3125, 0.3125, 0.9375, 0.75, 0.6875)],
    &[Aabb::new(0.25, 0.1875, 0.4375, 0.75, 0.75, 0.9375)],
    &[Aabb::new(0.0625, 0.1875, 0.25, 0.5625, 0.75, 0.75)],
    &[Aabb::new(0.25, 0.1875, 0.0625, 0.75, 0.75, 0.5625)],
    &[Aabb::new(0.4375, 0.1875, 0.25, 0.9375, 0.75, 0.75)],
    &[Aabb::new(0.25, 0.0, 0.25, 0.75, 1.5, 0.75)],
    &[Aabb::new(0.3125, 0.0, 0.3125, 0.6875, 0.375, 0.6875)],
    &[Aabb::new(0.25, 0.25, 0.5, 0.75, 0.75, 1.0)],
    &[Aabb::new(0.25, 0.0, 0.25, 0.75, 0.5, 0.75)],
    &[Aabb::new(0.25, 0.25, 0.0, 0.75, 0.75, 0.5)],
    &[Aabb::new(0.5, 0.25, 0.25, 1.0, 0.75, 0.75)],
    &[Aabb::new(0.0, 0.25, 0.25, 0.5, 0.75, 0.75)],
    &[Aabb::new(0.125, 0.0, 0.0, 0.875, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.125, 1.0, 1.0, 0.875)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.625, 1.0), Aabb::new(0.0, 0.0, 0.0, 0.125, 1.0, 1.0), Aabb::new(0.875, 0.0, 0.0, 1.0, 1.0, 1.0), Aabb::new(0.0, 0.0, 0.0, 1.0, 1.0, 0.125), Aabb::new(0.0, 0.0, 0.875, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.0625, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.8125, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.8125, 1.0), Aabb::new(0.3125, 0.8125, 0.3125, 0.6875, 1.0, 0.6875)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.875, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 1.0, 0.125)],
    &[Aabb::new(0.875, 0.0, 0.0, 1.0, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 0.125, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.015625, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 0.25, 1.0), Aabb::new(0.375, 0.25, 0.375, 0.625, 1.0, 0.625)],
    &[Aabb::new(0.0, 0.75, 0.0, 1.0, 1.0, 1.0), Aabb::new(0.375, 0.0, 0.375, 0.625, 0.75, 0.625)],
    &[Aabb::new(0.0, 0.0, 0.0, 1.0, 1.0, 0.25), Aabb::new(0.25, 0.375, 0.25, 0.75, 0.625, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.75, 1.0, 1.0, 1.0), Aabb::new(0.25, 0.375, 0.0, 0.75, 0.625, 0.75)],
    &[Aabb::new(0.0, 0.0, 0.0, 0.25, 1.0, 1.0), Aabb::new(0.375, 0.25, 0.25, 0.625, 0.75, 1.0)],
    &[Aabb::new(0.75, 0.0, 0.0, 1.0, 1.0, 1.0), Aabb::new(0.0, 0.375, 0.25, 0.75, 0.625, 0.75)],
    &[Aabb::new(0.0, 0.0, 0.4375, 1.0, 1.0, 0.5625), Aabb::new(0.4375, 0.0, 0.0, 0.5625, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.4375, 1.0, 1.0, 0.5625), Aabb::new(0.4375, 0.0, 0.0, 0.5625, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.4375, 1.0, 1.0, 0.5625), Aabb::new(0.4375, 0.0, 0.0, 0.5625, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 0.1875, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 0.1875, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 0.1875, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 0.1875, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 0.1875, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 0.1875, 1.0, 1.0)],
    &[Aabb::new(0.0, 0.0, 0.0, 0.1875, 1.0, 1.0)],
];

pub(crate) static BLOCK_SHAPE_DEPENDENCY: [ShapeDependency; 198] = [
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::BlockEntity,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Stairs),
    ShapeDependency::Neighbours(NeighbourShape::Chest),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Door),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Stairs),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Door),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Fence),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Pane),
    ShapeDependency::Neighbours(NeighbourShape::Pane),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Stairs),
    ShapeDependency::Neighbours(NeighbourShape::Stairs),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Fence),
    ShapeDependency::Neighbours(NeighbourShape::Stairs),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Stairs),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Stairs),
    ShapeDependency::Neighbours(NeighbourShape::Stairs),
    ShapeDependency::Neighbours(NeighbourShape::Stairs),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Wall),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Chest),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Stairs),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Pane),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Stairs),
    ShapeDependency::Neighbours(NeighbourShape::Stairs),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Stairs),
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::None,
    ShapeDependency::Neighbours(NeighbourShape::Fence),
    ShapeDependency::Neighbours(NeighbourShape::Fence),
    ShapeDependency::Neighbours(NeighbourShape::Fence),
    ShapeDependency::Neighbours(NeighbourShape::Fence),
    ShapeDependency::Neighbours(NeighbourShape::Fence),
    ShapeDependency::Neighbours(NeighbourShape::Door),
    ShapeDependency::Neighbours(NeighbourShape::Door),
    ShapeDependency::Neighbours(NeighbourShape::Door),
    ShapeDependency::Neighbours(NeighbourShape::Door),
    ShapeDependency::Neighbours(NeighbourShape::Door),
];

/// Shape index per raw state `id << 4 | meta`.
pub(crate) static STATE_SHAPE: [u8; 3168] = [
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0,
    1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 1, 1, 0, 0, 3, 4, 5, 6, 7, 8, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 1, 1, 0, 0, 3, 4, 5, 6, 7, 8, 0, 0,
    77, 78, 79, 80, 81, 82, 0, 0, 77, 78, 79, 80, 81, 82, 0, 0,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    12, 13, 14, 11, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 19, 19, 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    70, 70, 70, 70, 70, 70, 70, 70, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    21, 22, 23, 20, 22, 23, 20, 21, 21, 86, 86, 86, 0, 0, 0, 0,
    0, 0, 71, 72, 73, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    12, 13, 14, 11, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    21, 22, 23, 20, 22, 23, 20, 21, 21, 87, 87, 87, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    75, 24, 25, 26, 9, 27, 4, 28, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    31, 32, 33, 34, 35, 36, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    38, 38, 38, 38, 20, 22, 23, 21, 39, 39, 39, 39, 20, 22, 23, 21,
    1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,
    85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    40, 41, 40, 41, 0, 0, 0, 0, 40, 41, 40, 41, 0, 0, 0, 0,
    12, 13, 14, 11, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0,
    12, 13, 14, 11, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    12, 13, 14, 11, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, 0, 0, 0, 0, 0,
    43, 43, 43, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    68, 68, 68, 68, 69, 69, 69, 69, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    9, 9, 9, 9, 9, 9, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0,
    46, 47, 45, 48, 49, 50, 51, 52, 53, 54, 55, 56, 0, 0, 0, 0,
    12, 13, 14, 11, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 19, 19, 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    12, 13, 14, 11, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0,
    12, 13, 14, 11, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0,
    12, 13, 14, 11, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    57, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    60, 60, 59, 61, 62, 63, 0, 0, 60, 60, 59, 61, 62, 63, 0, 0,
    64, 65, 64, 65, 64, 65, 64, 65, 64, 65, 64, 65, 0, 0, 0, 0,
    0, 0, 19, 19, 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
    26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    66, 0, 66, 66, 66, 66, 0, 0, 66, 0, 66, 66, 66, 66, 0, 0,
    1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    12, 13, 14, 11, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
    1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,
    1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,
    12, 13, 14, 11, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0,
    12, 13, 14, 11, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    38, 38, 38, 38, 20, 22, 23, 21, 39, 39, 39, 39, 20, 22, 23, 21,
    1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
    67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
    1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    12, 13, 14, 11, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
    9, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0,
    40, 41, 40, 41, 0, 0, 0, 0, 40, 41, 40, 41, 0, 0, 0, 0,
    40, 41, 40, 41, 0, 0, 0, 0, 40, 41, 40, 41, 0, 0, 0, 0,
    40, 41, 40, 41, 0, 0, 0, 0, 40, 41, 40, 41, 0, 0, 0, 0,
    40, 41, 40, 41, 0, 0, 0, 0, 40, 41, 40, 41, 0, 0, 0, 0,
    40, 41, 40, 41, 0, 0, 0, 0, 40, 41, 40, 41, 0, 0, 0, 0,
    30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    21, 22, 23, 20, 22, 23, 20, 21, 21, 88, 88, 88, 0, 0, 0, 0,
    21, 22, 23, 20, 22, 23, 20, 21, 21, 89, 89, 89, 0, 0, 0, 0,
    21, 22, 23, 20, 22, 23, 20, 21, 21, 90, 90, 90, 0, 0, 0, 0,
    21, 22, 23, 20, 22, 23, 20, 21, 21, 91, 91, 91, 0, 0, 0, 0,
    21, 22, 23, 20, 22, 23, 20, 21, 21, 92, 92, 92, 0, 0, 0, 0,
];

/// Float world-coordinate rule sets (index 0 = none, plain double placement).
pub(crate) static WORLD_COORDS: [Option<&[WorldCoords]>; 20] = [
    None,
    Some(&[[WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.0 }, WorldCoord::Double]]),
    Some(&[[WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.125 }, WorldCoord::Double]]),
    Some(&[[WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.25 }, WorldCoord::Double]]),
    Some(&[[WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.375 }, WorldCoord::Double]]),
    Some(&[[WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.5 }, WorldCoord::Double]]),
    Some(&[[WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.625 }, WorldCoord::Double]]),
    Some(&[[WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.75 }, WorldCoord::Double]]),
    Some(&[[WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.875 }, WorldCoord::Double]]),
    Some(&[[WorldCoord::Float { int_offset: 0, term: 0.0625 }, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.0625 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }]]),
    Some(&[[WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Double, WorldCoord::Float { int_offset: 1, term: -0.125 }, WorldCoord::Double]]),
    Some(&[[WorldCoord::Float { int_offset: 0, term: 0.0625 }, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.0625 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }, WorldCoord::Float { int_offset: 0, term: 0.5 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }]]),
    Some(&[[WorldCoord::Float { int_offset: 0, term: 0.1875 }, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.0625 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }, WorldCoord::Float { int_offset: 0, term: 0.5 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }]]),
    Some(&[[WorldCoord::Float { int_offset: 0, term: 0.3125 }, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.0625 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }, WorldCoord::Float { int_offset: 0, term: 0.5 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }]]),
    Some(&[[WorldCoord::Float { int_offset: 0, term: 0.4375 }, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.0625 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }, WorldCoord::Float { int_offset: 0, term: 0.5 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }]]),
    Some(&[[WorldCoord::Float { int_offset: 0, term: 0.5625 }, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.0625 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }, WorldCoord::Float { int_offset: 0, term: 0.5 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }]]),
    Some(&[[WorldCoord::Float { int_offset: 0, term: 0.6875 }, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.0625 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }, WorldCoord::Float { int_offset: 0, term: 0.5 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }]]),
    Some(&[[WorldCoord::Float { int_offset: 0, term: 0.8125 }, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.0625 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }, WorldCoord::Float { int_offset: 0, term: 0.5 }, WorldCoord::Float { int_offset: 1, term: -0.0625 }]]),
    Some(&[[WorldCoord::Double, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.375 }, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 1.5 }, WorldCoord::Float { int_offset: 0, term: 0.625 }]]),
    Some(&[[WorldCoord::Float { int_offset: 0, term: 0.375 }, WorldCoord::Double, WorldCoord::Double, WorldCoord::Float { int_offset: 0, term: 0.625 }, WorldCoord::Float { int_offset: 0, term: 1.5 }, WorldCoord::Double]]),
];

/// Index into `WORLD_COORDS` per raw state.
pub(crate) static STATE_WORLD_COORDS: [u8; 3168] = [
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    11, 12, 13, 14, 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    18, 19, 18, 19, 0, 0, 0, 0, 18, 19, 18, 19, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    18, 19, 18, 19, 0, 0, 0, 0, 18, 19, 18, 19, 0, 0, 0, 0,
    18, 19, 18, 19, 0, 0, 0, 0, 18, 19, 18, 19, 0, 0, 0, 0,
    18, 19, 18, 19, 0, 0, 0, 0, 18, 19, 18, 19, 0, 0, 0, 0,
    18, 19, 18, 19, 0, 0, 0, 0, 18, 19, 18, 19, 0, 0, 0, 0,
    18, 19, 18, 19, 0, 0, 0, 0, 18, 19, 18, 19, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
];

/// Vanilla per-block flags (1.8.9 oracle `block` lines).
pub(crate) static VANILLA_PROPS: [VanillaProps; 198] = [
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Air, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: true } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Water, blocks_movement: false, solid: false, fluid: true, opaque: false, replaceable: true } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Water, blocks_movement: false, solid: false, fluid: true, opaque: false, replaceable: true } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Lava, blocks_movement: false, solid: false, fluid: true, opaque: false, replaceable: true } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Lava, blocks_movement: false, solid: false, fluid: true, opaque: false, replaceable: true } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: true, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: true } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: true } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: false, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: true } },
    VanillaProps { full_cube: true, normal_block: true, full_block: false, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: true } },
    VanillaProps { full_cube: false, normal_block: true, full_block: false, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Ice, blocks_movement: true, solid: true, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: true } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: false, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: false, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: false, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: false, solid: false, fluid: false, opaque: false, replaceable: true } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: true, normal_block: true, full_block: true, render_as_normal_block: true, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
    VanillaProps { full_cube: false, normal_block: false, full_block: false, render_as_normal_block: false, has_collision: true, material: Material { kind: MaterialKind::Other, blocks_movement: true, solid: true, fluid: false, opaque: true, replaceable: false } },
];

/// Distinct 1.8.9 selection (ray-test) bounds, block-local (oracle).
pub(crate) static SELECTION_BOUNDS: [Aabb; 112] = [
    Aabb::new(0.0, 0.0, 0.0, 1.0, 1.0, 1.0),
    Aabb::new(0.09999999403953552, 0.0, 0.09999999403953552, 0.8999999761581421, 0.800000011920929, 0.8999999761581421),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 0.5625, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 0.125, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 0.625, 1.0),
    Aabb::new(0.0, 0.25, 0.0, 1.0, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 0.75, 1.0),
    Aabb::new(0.0, 0.0, 0.25, 1.0, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 1.0, 0.75),
    Aabb::new(0.25, 0.0, 0.0, 1.0, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 0.75, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 0.25, 1.0),
    Aabb::new(0.0, 0.75, 0.0, 1.0, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 1.0, 0.25),
    Aabb::new(0.0, 0.0, 0.75, 1.0, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 0.25, 1.0, 1.0),
    Aabb::new(0.75, 0.0, 0.0, 1.0, 1.0, 1.0),
    Aabb::new(0.30000001192092896, 0.0, 0.30000001192092896, 0.699999988079071, 0.6000000238418579, 0.699999988079071),
    Aabb::new(0.30000001192092896, 0.0, 0.30000001192092896, 0.699999988079071, 0.4000000059604645, 0.699999988079071),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 0.5, 1.0),
    Aabb::new(0.0, 0.5, 0.0, 1.0, 1.0, 1.0),
    Aabb::new(0.0625, 0.0, 0.0625, 0.9375, 0.875, 0.9375),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 0.0625, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 0.9375, 1.0),
    Aabb::new(0.25, 0.0, 0.25, 0.75, 1.0, 0.75),
    Aabb::new(0.0, 0.0, 0.0, 0.1875, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 1.0, 0.1875),
    Aabb::new(0.8125, 0.0, 0.0, 1.0, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.8125, 1.0, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.875, 1.0, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 1.0, 0.125),
    Aabb::new(0.875, 0.0, 0.0, 1.0, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 0.125, 1.0, 1.0),
    Aabb::new(0.0, 0.28125, 0.875, 1.0, 0.78125, 1.0),
    Aabb::new(0.0, 0.28125, 0.0, 1.0, 0.78125, 0.125),
    Aabb::new(0.875, 0.28125, 0.0, 1.0, 0.78125, 1.0),
    Aabb::new(0.0, 0.28125, 0.0, 0.125, 0.78125, 1.0),
    Aabb::new(0.25, 0.4000000059604645, 0.25, 0.75, 1.0, 0.75),
    Aabb::new(0.0, 0.20000000298023224, 0.3125, 0.375, 0.800000011920929, 0.6875),
    Aabb::new(0.625, 0.20000000298023224, 0.3125, 1.0, 0.800000011920929, 0.6875),
    Aabb::new(0.3125, 0.20000000298023224, 0.0, 0.6875, 0.800000011920929, 0.375),
    Aabb::new(0.3125, 0.20000000298023224, 0.625, 0.6875, 0.800000011920929, 1.0),
    Aabb::new(0.25, 0.0, 0.25, 0.75, 0.6000000238418579, 0.75),
    Aabb::new(0.0625, 0.0, 0.0625, 0.9375, 0.0625, 0.9375),
    Aabb::new(0.0625, 0.0, 0.0625, 0.9375, 0.03125, 0.9375),
    Aabb::new(0.3125, 0.875, 0.375, 0.6875, 1.0, 0.625),
    Aabb::new(0.0, 0.375, 0.3125, 0.125, 0.625, 0.6875),
    Aabb::new(0.875, 0.375, 0.3125, 1.0, 0.625, 0.6875),
    Aabb::new(0.3125, 0.375, 0.0, 0.6875, 0.625, 0.125),
    Aabb::new(0.3125, 0.375, 0.875, 0.6875, 0.625, 1.0),
    Aabb::new(0.3125, 0.0, 0.375, 0.6875, 0.125, 0.625),
    Aabb::new(0.3125, 0.9375, 0.375, 0.6875, 1.0, 0.625),
    Aabb::new(0.0, 0.375, 0.3125, 0.0625, 0.625, 0.6875),
    Aabb::new(0.9375, 0.375, 0.3125, 1.0, 0.625, 0.6875),
    Aabb::new(0.3125, 0.375, 0.0, 0.6875, 0.625, 0.0625),
    Aabb::new(0.3125, 0.375, 0.9375, 0.6875, 0.625, 1.0),
    Aabb::new(0.3125, 0.0, 0.375, 0.6875, 0.0625, 0.625),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 0.375, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 0.875, 1.0),
    Aabb::new(0.125, 0.0, 0.125, 0.875, 1.0, 0.875),
    Aabb::new(0.375, 0.0, 0.375, 0.625, 1.0, 0.625),
    Aabb::new(0.0, 0.0, 0.375, 1.0, 1.0, 0.625),
    Aabb::new(0.375, 0.0, 0.0, 0.625, 1.0, 1.0),
    Aabb::new(0.0625, 0.0, 0.0625, 0.9375, 0.5, 0.9375),
    Aabb::new(0.1875, 0.0, 0.0625, 0.9375, 0.5, 0.9375),
    Aabb::new(0.3125, 0.0, 0.0625, 0.9375, 0.5, 0.9375),
    Aabb::new(0.4375, 0.0, 0.0625, 0.9375, 0.5, 0.9375),
    Aabb::new(0.5625, 0.0, 0.0625, 0.9375, 0.5, 0.9375),
    Aabb::new(0.6875, 0.0, 0.0625, 0.9375, 0.5, 0.9375),
    Aabb::new(0.8125, 0.0, 0.0625, 0.9375, 0.5, 0.9375),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 0.1875, 1.0),
    Aabb::new(0.0, 0.8125, 0.0, 1.0, 1.0, 1.0),
    Aabb::new(0.375, 0.0, 0.375, 0.625, 0.125, 0.625),
    Aabb::new(0.375, 0.0, 0.375, 0.625, 0.25, 0.625),
    Aabb::new(0.375, 0.0, 0.375, 0.625, 0.375, 0.625),
    Aabb::new(0.375, 0.0, 0.375, 0.625, 0.5, 0.625),
    Aabb::new(0.375, 0.0, 0.375, 0.625, 0.625, 0.625),
    Aabb::new(0.375, 0.0, 0.375, 0.625, 0.75, 0.625),
    Aabb::new(0.375, 0.0, 0.375, 0.625, 0.875, 0.625),
    Aabb::new(1.0, 1.0, 1.0, 0.0, 0.0, 0.0),
    Aabb::new(0.0, 0.0, 0.9375, 1.0, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 0.0625, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 1.0, 0.0625),
    Aabb::new(0.9375, 0.0, 0.0, 1.0, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 0.015625, 1.0),
    Aabb::new(0.0625, 0.0, 0.0625, 0.9375, 1.0, 0.9375),
    Aabb::new(0.375, 0.4375, 0.6875, 0.625, 0.75, 0.9375),
    Aabb::new(0.0625, 0.4375, 0.375, 0.3125, 0.75, 0.625),
    Aabb::new(0.375, 0.4375, 0.0625, 0.625, 0.75, 0.3125),
    Aabb::new(0.6875, 0.4375, 0.375, 0.9375, 0.75, 0.625),
    Aabb::new(0.3125, 0.3125, 0.5625, 0.6875, 0.75, 0.9375),
    Aabb::new(0.0625, 0.3125, 0.3125, 0.4375, 0.75, 0.6875),
    Aabb::new(0.3125, 0.3125, 0.0625, 0.6875, 0.75, 0.4375),
    Aabb::new(0.5625, 0.3125, 0.3125, 0.9375, 0.75, 0.6875),
    Aabb::new(0.25, 0.1875, 0.4375, 0.75, 0.75, 0.9375),
    Aabb::new(0.0625, 0.1875, 0.25, 0.5625, 0.75, 0.75),
    Aabb::new(0.25, 0.1875, 0.0625, 0.75, 0.75, 0.5625),
    Aabb::new(0.4375, 0.1875, 0.25, 0.9375, 0.75, 0.75),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 0.09375, 1.0),
    Aabb::new(0.0, 0.0625, 0.0, 1.0, 0.15625, 1.0),
    Aabb::new(0.3125, 0.0, 0.3125, 0.6875, 0.375, 0.6875),
    Aabb::new(0.25, 0.0, 0.25, 0.75, 0.5, 0.75),
    Aabb::new(0.25, 0.25, 0.5, 0.75, 0.75, 1.0),
    Aabb::new(0.25, 0.25, 0.0, 0.75, 0.75, 0.5),
    Aabb::new(0.5, 0.25, 0.25, 1.0, 0.75, 0.75),
    Aabb::new(0.0, 0.25, 0.25, 0.5, 0.75, 0.75),
    Aabb::new(0.125, 0.0, 0.0, 0.875, 1.0, 1.0),
    Aabb::new(0.0, 0.0, 0.125, 1.0, 1.0, 0.875),
    Aabb::new(0.0, 0.0, 0.875, 1.0, 0.78125, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 1.0, 0.78125, 0.125),
    Aabb::new(0.875, 0.0, 0.0, 1.0, 0.78125, 1.0),
    Aabb::new(0.0, 0.0, 0.0, 0.125, 0.78125, 1.0),
];

/// Selection bounds index per raw state.
pub(crate) static STATE_SELECTION: [u8; 3168] = [
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2,
    3, 3, 4, 4, 4, 4, 0, 0, 3, 3, 4, 4, 4, 4, 0, 0,
    3, 3, 4, 4, 4, 4, 0, 0, 3, 3, 4, 4, 4, 4, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, 0, 0,
    11, 12, 13, 14, 15, 16, 0, 0, 11, 12, 13, 14, 15, 16, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0,
    18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 21, 21, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0,
    23, 23, 23, 23, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
    25, 26, 27, 28, 26, 27, 28, 25, 25, 25, 25, 25, 0, 0, 0, 0,
    0, 0, 29, 30, 31, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 33, 34, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    37, 38, 39, 40, 41, 42, 42, 37, 37, 38, 39, 40, 41, 42, 42, 37,
    43, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    25, 26, 27, 28, 26, 27, 28, 25, 25, 25, 25, 25, 0, 0, 0, 0,
    43, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    45, 46, 47, 48, 49, 50, 0, 0, 51, 52, 53, 54, 55, 56, 0, 0,
    3, 11, 57, 19, 4, 6, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    63, 64, 65, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    70, 70, 70, 70, 28, 26, 27, 25, 71, 71, 71, 71, 28, 26, 27, 25,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    72, 73, 74, 75, 76, 77, 78, 60, 0, 0, 0, 0, 0, 0, 0, 0,
    72, 73, 74, 75, 76, 77, 78, 60, 0, 0, 0, 0, 0, 0, 0, 0,
    79, 80, 81, 0, 82, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0,
    61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    19, 19, 19, 19, 19, 19, 0, 0, 20, 20, 20, 20, 20, 20, 0, 0,
    86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 21, 21, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    40, 39, 41, 38, 40, 39, 41, 38, 40, 39, 41, 38, 40, 39, 41, 38,
    98, 98, 19, 19, 98, 98, 99, 99, 98, 98, 19, 19, 98, 98, 99, 99,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
    11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0,
    11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0,
    45, 46, 47, 48, 49, 50, 0, 0, 51, 52, 53, 54, 55, 56, 0, 0,
    101, 101, 102, 103, 104, 105, 0, 0, 101, 101, 102, 103, 104, 105, 0, 0,
    106, 107, 106, 107, 106, 107, 106, 107, 106, 107, 106, 107, 0, 0, 0, 0,
    0, 0, 21, 21, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
    43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 4, 4, 4, 4, 0, 0, 3, 3, 4, 4, 4, 4, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    70, 70, 70, 70, 28, 26, 27, 25, 71, 71, 71, 71, 28, 26, 27, 25,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
    0, 0, 108, 109, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    19, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0,
    61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62,
    61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62,
    61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62,
    61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62,
    61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62,
    60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    25, 26, 27, 28, 26, 27, 28, 25, 25, 25, 25, 25, 0, 0, 0, 0,
    25, 26, 27, 28, 26, 27, 28, 25, 25, 25, 25, 25, 0, 0, 0, 0,
    25, 26, 27, 28, 26, 27, 28, 25, 25, 25, 25, 25, 0, 0, 0, 0,
    25, 26, 27, 28, 26, 27, 28, 25, 25, 25, 25, 25, 0, 0, 0, 0,
    25, 26, 27, 28, 26, 27, 28, 25, 25, 25, 25, 25, 0, 0, 0, 0,
];

/// Per raw state: bit 0 canCollide(state, false), 1 canCollide(state, true), 2 has a collision box.
pub(crate) static STATE_SELECTION_FLAGS: [u8; 3168] = [
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 0, 0,
    7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7,
    3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0,
    3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0,
    7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 0, 0,
    3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 0, 0,
    7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0,
    3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0,
    3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0,
    0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0,
    3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    7, 7, 7, 7, 3, 3, 3, 3, 7, 7, 7, 7, 3, 3, 3, 3,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0,
    7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0,
    0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 7, 7, 7, 7, 0, 0, 7, 0, 7, 7, 7, 7, 0, 0,
    7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0,
    7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0,
    7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 3, 3, 3, 3, 7, 7, 7, 7, 3, 3, 3, 3,
    7, 7, 7, 7, 3, 3, 3, 3, 7, 7, 7, 7, 3, 3, 3, 3,
    7, 7, 7, 7, 3, 3, 3, 3, 7, 7, 7, 7, 3, 3, 3, 3,
    7, 7, 7, 7, 3, 3, 3, 3, 7, 7, 7, 7, 3, 3, 3, 3,
    7, 7, 7, 7, 3, 3, 3, 3, 7, 7, 7, 7, 3, 3, 3, 3,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0,
];

/// Bit `m` set = meta `m` is a registered state of the block (from the 1.8.9 oracle).
pub(crate) static REGISTERED_METAS: [u16; 198] = [
    1, 127, 1, 7, 1, 63, 16191, 1, 65535, 65535, 65535, 65535, 3, 1, 1, 1,
    1, 65535, 65535, 3, 1, 1, 1, 16191, 7, 1, 65295, 16191, 16191, 16191, 1, 7,
    1, 16191, 16191, 65535, 16191, 1, 511, 1, 1, 1, 1, 65535, 65535, 1, 3, 1,
    1, 1, 62, 65535, 1, 255, 60, 65535, 1, 1, 1, 255, 255, 60, 60, 65535,
    4095, 60, 1023, 255, 60, 65535, 3, 4095, 3, 1, 1, 62, 62, 16191, 255, 1,
    1, 65535, 1, 65535, 3, 1, 15, 1, 1, 1, 6, 15, 127, 65535, 65535, 65535,
    65535, 63, 15, 51199, 51199, 1, 1, 1, 255, 255, 65535, 65535, 255, 255, 1, 1,
    1, 1, 255, 15, 1, 255, 15, 1, 255, 1, 1, 1, 1, 63, 16191, 4095,
    255, 1, 60, 65535, 65535, 1, 255, 255, 255, 3, 1, 3, 65535, 255, 255, 16191,
    16191, 4095, 60, 65535, 65535, 65535, 65535, 65535, 1, 1, 15677, 31, 255, 16191, 16191, 65535,
    65535, 13107, 13107, 255, 255, 1, 1, 65535, 7, 1, 273, 65535, 1, 1, 1, 3903,
    65535, 60, 65535, 7, 255, 257, 257, 65535, 65535, 65535, 65535, 65535, 1, 1, 1, 1,
    1, 4095, 4095, 4095, 4095, 4095,
];