diff --git a/README.md b/README.md index f4ecaf4..eb0d7a7 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ A gophertunnel protocol interface implementation to support older Minecraft Bedr ## Supported Versions | Protocol ID | Version | Support | |-------------|---------|---------| +| 776 | 1.21.60 | ✅ | | 766 | 1.21.50 | ✅ | | 748 | 1.21.40 | ✅ | | 729 | 1.21.30 | ✅ | diff --git a/example-proxy.go b/example-proxy.go index f623a35..f167f65 100644 --- a/example-proxy.go +++ b/example-proxy.go @@ -10,6 +10,7 @@ import ( "log" "os" "sync" + "time" ) // The following program implements a proxy that forwards players from one local address to a remote address. @@ -28,6 +29,7 @@ func main() { listener, err := minecraft.ListenConfig{ StatusProvider: p, AcceptedProtocols: []minecraft.Protocol{ + legacyver.New766(), legacyver.New748(), legacyver.New729(), legacyver.New712(), @@ -54,7 +56,7 @@ func handleConn(conn *minecraft.Conn, listener *minecraft.Listener, config confi serverConn, err := minecraft.Dialer{ TokenSource: src, ClientData: conn.ClientData(), - }.Dial("raknet", config.Connection.RemoteAddress) + }.DialTimeout("raknet", config.Connection.RemoteAddress, time.Second*100) if err != nil { panic(err) } diff --git a/go.mod b/go.mod index e4a39a5..6556e20 100644 --- a/go.mod +++ b/go.mod @@ -10,11 +10,11 @@ require ( github.com/pelletier/go-toml v1.9.5 github.com/rogpeppe/go-internal v1.13.1 github.com/samber/lo v1.47.0 - github.com/sandertv/gophertunnel v1.43.1 + github.com/sandertv/gophertunnel v1.44.1-0.20250211173944-b0dbda19ad6a github.com/segmentio/fasthash v1.0.3 golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 golang.org/x/image v0.21.0 - golang.org/x/oauth2 v0.24.0 + golang.org/x/oauth2 v0.26.0 ) require ( @@ -27,8 +27,8 @@ require ( github.com/klauspost/compress v1.17.11 // indirect github.com/muhammadmuzzammil1998/jsonc v1.0.0 // indirect github.com/sandertv/go-raknet v1.14.2 // indirect - golang.org/x/crypto v0.31.0 // indirect + golang.org/x/crypto v0.33.0 // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.33.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/net v0.35.0 // indirect + golang.org/x/text v0.22.0 // indirect ) diff --git a/go.sum b/go.sum index 91b058f..acaa0ff 100644 --- a/go.sum +++ b/go.sum @@ -49,6 +49,10 @@ github.com/sandertv/gophertunnel v1.43.1-0.20241229203958-5af8736ae319 h1:yxDqIv github.com/sandertv/gophertunnel v1.43.1-0.20241229203958-5af8736ae319/go.mod h1:XuEJo+ARim+NKiD90Z56sQRcDtCOErz26e2bt3LEd9I= github.com/sandertv/gophertunnel v1.43.1 h1:wY6Fy8dRMKtpZUQzCR35o9k05135vOJZhrz0GF6OXFI= github.com/sandertv/gophertunnel v1.43.1/go.mod h1:XuEJo+ARim+NKiD90Z56sQRcDtCOErz26e2bt3LEd9I= +github.com/sandertv/gophertunnel v1.43.2-0.20250207144337-b2857453171d h1:JK3btKqp1QUPWLfgXyTUaKa8wUHJnO0Z3jqdKebbNq0= +github.com/sandertv/gophertunnel v1.43.2-0.20250207144337-b2857453171d/go.mod h1:XuEJo+ARim+NKiD90Z56sQRcDtCOErz26e2bt3LEd9I= +github.com/sandertv/gophertunnel v1.44.1-0.20250211173944-b0dbda19ad6a h1:1dFrVCwemoApT79gWY0PMjMTjZooS553YNRvml6IA2Y= +github.com/sandertv/gophertunnel v1.44.1-0.20250211173944-b0dbda19ad6a/go.mod h1:XuEJo+ARim+NKiD90Z56sQRcDtCOErz26e2bt3LEd9I= github.com/segmentio/fasthash v1.0.3 h1:EI9+KE1EwvMLBWwjpRDc+fEM+prwxDYbslddQGtrmhM= github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -61,6 +65,8 @@ golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= golang.org/x/image v0.0.0-20190321063152-3fc05d484e9f/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= @@ -80,10 +86,16 @@ golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.26.0 h1:afQXWNNaeC4nvZ0Ed9XvCCzXM6UHJG7iCg0W4fPqSBE= +golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -112,6 +124,8 @@ golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= diff --git a/internal/item/schemas/0231_1.21.40.25_to_1.21.50.29_beta.json b/internal/item/schemas/0231_1.21.40.25_to_1.21.50.29_beta.json new file mode 100644 index 0000000..18674d1 --- /dev/null +++ b/internal/item/schemas/0231_1.21.40.25_to_1.21.50.29_beta.json @@ -0,0 +1,13 @@ +{ + "remappedMetas": { + "minecraft:boat": { + "9": "minecraft:pale_oak_boat" + }, + "minecraft:chest_boat": { + "9": "minecraft:pale_oak_chest_boat" + }, + "minecraft:spawn_egg": { + "146": "minecraft:creaking_spawn_egg" + } + } +} \ No newline at end of file diff --git a/legacyver/data/block_states_776.nbt b/legacyver/data/block_states_776.nbt new file mode 100644 index 0000000..7a34a25 Binary files /dev/null and b/legacyver/data/block_states_776.nbt differ diff --git a/legacyver/data/item_runtime_ids_776.nbt b/legacyver/data/item_runtime_ids_776.nbt new file mode 100644 index 0000000..d840a59 Binary files /dev/null and b/legacyver/data/item_runtime_ids_776.nbt differ diff --git a/legacyver/data/required_item_list_776.json b/legacyver/data/required_item_list_776.json new file mode 100644 index 0000000..687e532 --- /dev/null +++ b/legacyver/data/required_item_list_776.json @@ -0,0 +1,8947 @@ +{ + "minecraft:acacia_boat": { + "runtime_id": 405, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_button": { + "runtime_id": -140, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_chest_boat": { + "runtime_id": 680, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_door": { + "runtime_id": 589, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_double_slab": { + "runtime_id": -812, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_fence": { + "runtime_id": -575, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_fence_gate": { + "runtime_id": 187, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_hanging_sign": { + "runtime_id": -504, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_leaves": { + "runtime_id": 161, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_log": { + "runtime_id": 162, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_planks": { + "runtime_id": -742, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_pressure_plate": { + "runtime_id": -150, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_sapling": { + "runtime_id": -828, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_sign": { + "runtime_id": 612, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_slab": { + "runtime_id": -807, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_stairs": { + "runtime_id": 163, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_standing_sign": { + "runtime_id": -190, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_trapdoor": { + "runtime_id": -145, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_wall_sign": { + "runtime_id": -191, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_wood": { + "runtime_id": -817, + "component_based": false, + "version": 2 + }, + "minecraft:activator_rail": { + "runtime_id": 126, + "component_based": false, + "version": 2 + }, + "minecraft:agent_spawn_egg": { + "runtime_id": 515, + "component_based": false, + "version": 2 + }, + "minecraft:air": { + "runtime_id": -158, + "component_based": false, + "version": 2 + }, + "minecraft:allay_spawn_egg": { + "runtime_id": 669, + "component_based": false, + "version": 2 + }, + "minecraft:allium": { + "runtime_id": -831, + "component_based": false, + "version": 2 + }, + "minecraft:allow": { + "runtime_id": 210, + "component_based": false, + "version": 2 + }, + "minecraft:amethyst_block": { + "runtime_id": -327, + "component_based": false, + "version": 2 + }, + "minecraft:amethyst_cluster": { + "runtime_id": -329, + "component_based": false, + "version": 2 + }, + "minecraft:amethyst_shard": { + "runtime_id": 662, + "component_based": false, + "version": 2 + }, + "minecraft:ancient_debris": { + "runtime_id": -271, + "component_based": false, + "version": 2 + }, + "minecraft:andesite": { + "runtime_id": -594, + "component_based": false, + "version": 2 + }, + "minecraft:andesite_double_slab": { + "runtime_id": -920, + "component_based": false, + "version": 2 + }, + "minecraft:andesite_slab": { + "runtime_id": -893, + "component_based": false, + "version": 2 + }, + "minecraft:andesite_stairs": { + "runtime_id": -171, + "component_based": false, + "version": 2 + }, + "minecraft:andesite_wall": { + "runtime_id": -974, + "component_based": false, + "version": 2 + }, + "minecraft:angler_pottery_sherd": { + "runtime_id": 694, + "component_based": false, + "version": 2 + }, + "minecraft:anvil": { + "runtime_id": 145, + "component_based": false, + "version": 2 + }, + "minecraft:apple": { + "runtime_id": 278, + "component_based": true, + "version": 1 + }, + "minecraft:archer_pottery_sherd": { + "runtime_id": 695, + "component_based": false, + "version": 2 + }, + "minecraft:armadillo_scute": { + "runtime_id": 741, + "component_based": false, + "version": 2 + }, + "minecraft:armadillo_spawn_egg": { + "runtime_id": 740, + "component_based": false, + "version": 2 + }, + "minecraft:armor_stand": { + "runtime_id": 585, + "component_based": false, + "version": 2 + }, + "minecraft:arms_up_pottery_sherd": { + "runtime_id": 696, + "component_based": false, + "version": 2 + }, + "minecraft:arrow": { + "runtime_id": 325, + "component_based": true, + "version": 2 + }, + "minecraft:axolotl_bucket": { + "runtime_id": 394, + "component_based": false, + "version": 2 + }, + "minecraft:axolotl_spawn_egg": { + "runtime_id": 530, + "component_based": false, + "version": 2 + }, + "minecraft:azalea": { + "runtime_id": -337, + "component_based": false, + "version": 2 + }, + "minecraft:azalea_leaves": { + "runtime_id": -324, + "component_based": false, + "version": 2 + }, + "minecraft:azalea_leaves_flowered": { + "runtime_id": -325, + "component_based": false, + "version": 2 + }, + "minecraft:azure_bluet": { + "runtime_id": -832, + "component_based": false, + "version": 2 + }, + "minecraft:baked_potato": { + "runtime_id": 303, + "component_based": false, + "version": 0 + }, + "minecraft:balloon": { + "runtime_id": 636, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo": { + "runtime_id": -163, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_block": { + "runtime_id": -527, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_button": { + "runtime_id": -511, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_chest_raft": { + "runtime_id": 692, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_door": { + "runtime_id": -517, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_double_slab": { + "runtime_id": -521, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_fence": { + "runtime_id": -515, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_fence_gate": { + "runtime_id": -516, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_hanging_sign": { + "runtime_id": -522, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_mosaic": { + "runtime_id": -509, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_mosaic_double_slab": { + "runtime_id": -525, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_mosaic_slab": { + "runtime_id": -524, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_mosaic_stairs": { + "runtime_id": -523, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_planks": { + "runtime_id": -510, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_pressure_plate": { + "runtime_id": -514, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_raft": { + "runtime_id": 691, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_sapling": { + "runtime_id": -164, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_sign": { + "runtime_id": 690, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_slab": { + "runtime_id": -513, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_stairs": { + "runtime_id": -512, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_standing_sign": { + "runtime_id": -518, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_trapdoor": { + "runtime_id": -520, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_wall_sign": { + "runtime_id": -519, + "component_based": false, + "version": 2 + }, + "minecraft:banner": { + "runtime_id": 600, + "component_based": false, + "version": 2 + }, + "minecraft:banner_pattern": { + "runtime_id": 794, + "component_based": false, + "version": 2 + }, + "minecraft:barrel": { + "runtime_id": -203, + "component_based": false, + "version": 2 + }, + "minecraft:barrier": { + "runtime_id": -161, + "component_based": false, + "version": 2 + }, + "minecraft:basalt": { + "runtime_id": -234, + "component_based": false, + "version": 2 + }, + "minecraft:bat_spawn_egg": { + "runtime_id": 480, + "component_based": false, + "version": 2 + }, + "minecraft:beacon": { + "runtime_id": 138, + "component_based": false, + "version": 2 + }, + "minecraft:bed": { + "runtime_id": 444, + "component_based": false, + "version": 2 + }, + "minecraft:bedrock": { + "runtime_id": 7, + "component_based": false, + "version": 2 + }, + "minecraft:bee_nest": { + "runtime_id": -218, + "component_based": false, + "version": 2 + }, + "minecraft:bee_spawn_egg": { + "runtime_id": 522, + "component_based": false, + "version": 2 + }, + "minecraft:beef": { + "runtime_id": 295, + "component_based": false, + "version": 0 + }, + "minecraft:beehive": { + "runtime_id": -219, + "component_based": false, + "version": 2 + }, + "minecraft:beetroot": { + "runtime_id": 307, + "component_based": false, + "version": 0 + }, + "minecraft:beetroot_seeds": { + "runtime_id": 317, + "component_based": false, + "version": 0 + }, + "minecraft:beetroot_soup": { + "runtime_id": 308, + "component_based": false, + "version": 0 + }, + "minecraft:bell": { + "runtime_id": -206, + "component_based": false, + "version": 2 + }, + "minecraft:big_dripleaf": { + "runtime_id": -323, + "component_based": false, + "version": 2 + }, + "minecraft:birch_boat": { + "runtime_id": 402, + "component_based": false, + "version": 2 + }, + "minecraft:birch_button": { + "runtime_id": -141, + "component_based": false, + "version": 2 + }, + "minecraft:birch_chest_boat": { + "runtime_id": 677, + "component_based": false, + "version": 2 + }, + "minecraft:birch_door": { + "runtime_id": 587, + "component_based": false, + "version": 2 + }, + "minecraft:birch_double_slab": { + "runtime_id": -810, + "component_based": false, + "version": 2 + }, + "minecraft:birch_fence": { + "runtime_id": -576, + "component_based": false, + "version": 2 + }, + "minecraft:birch_fence_gate": { + "runtime_id": 184, + "component_based": false, + "version": 2 + }, + "minecraft:birch_hanging_sign": { + "runtime_id": -502, + "component_based": false, + "version": 2 + }, + "minecraft:birch_leaves": { + "runtime_id": -801, + "component_based": false, + "version": 2 + }, + "minecraft:birch_log": { + "runtime_id": -570, + "component_based": false, + "version": 2 + }, + "minecraft:birch_planks": { + "runtime_id": -740, + "component_based": false, + "version": 2 + }, + "minecraft:birch_pressure_plate": { + "runtime_id": -151, + "component_based": false, + "version": 2 + }, + "minecraft:birch_sapling": { + "runtime_id": -826, + "component_based": false, + "version": 2 + }, + "minecraft:birch_sign": { + "runtime_id": 610, + "component_based": false, + "version": 2 + }, + "minecraft:birch_slab": { + "runtime_id": -805, + "component_based": false, + "version": 2 + }, + "minecraft:birch_stairs": { + "runtime_id": 135, + "component_based": false, + "version": 2 + }, + "minecraft:birch_standing_sign": { + "runtime_id": -186, + "component_based": false, + "version": 2 + }, + "minecraft:birch_trapdoor": { + "runtime_id": -146, + "component_based": false, + "version": 2 + }, + "minecraft:birch_wall_sign": { + "runtime_id": -187, + "component_based": false, + "version": 2 + }, + "minecraft:birch_wood": { + "runtime_id": -815, + "component_based": false, + "version": 2 + }, + "minecraft:black_bundle": { + "runtime_id": 264, + "component_based": true, + "version": 1 + }, + "minecraft:black_candle": { + "runtime_id": -428, + "component_based": false, + "version": 2 + }, + "minecraft:black_candle_cake": { + "runtime_id": -445, + "component_based": false, + "version": 2 + }, + "minecraft:black_carpet": { + "runtime_id": -611, + "component_based": false, + "version": 2 + }, + "minecraft:black_concrete": { + "runtime_id": -642, + "component_based": false, + "version": 2 + }, + "minecraft:black_concrete_powder": { + "runtime_id": -723, + "component_based": false, + "version": 2 + }, + "minecraft:black_dye": { + "runtime_id": 421, + "component_based": false, + "version": 2 + }, + "minecraft:black_glazed_terracotta": { + "runtime_id": 235, + "component_based": false, + "version": 2 + }, + "minecraft:black_shulker_box": { + "runtime_id": -627, + "component_based": false, + "version": 2 + }, + "minecraft:black_stained_glass": { + "runtime_id": -687, + "component_based": false, + "version": 2 + }, + "minecraft:black_stained_glass_pane": { + "runtime_id": -657, + "component_based": false, + "version": 2 + }, + "minecraft:black_terracotta": { + "runtime_id": -738, + "component_based": false, + "version": 2 + }, + "minecraft:black_wool": { + "runtime_id": -554, + "component_based": false, + "version": 2 + }, + "minecraft:blackstone": { + "runtime_id": -273, + "component_based": false, + "version": 2 + }, + "minecraft:blackstone_double_slab": { + "runtime_id": -283, + "component_based": false, + "version": 2 + }, + "minecraft:blackstone_slab": { + "runtime_id": -282, + "component_based": false, + "version": 2 + }, + "minecraft:blackstone_stairs": { + "runtime_id": -276, + "component_based": false, + "version": 2 + }, + "minecraft:blackstone_wall": { + "runtime_id": -277, + "component_based": false, + "version": 2 + }, + "minecraft:blade_pottery_sherd": { + "runtime_id": 697, + "component_based": false, + "version": 2 + }, + "minecraft:blast_furnace": { + "runtime_id": -196, + "component_based": false, + "version": 2 + }, + "minecraft:blaze_powder": { + "runtime_id": 456, + "component_based": false, + "version": 2 + }, + "minecraft:blaze_rod": { + "runtime_id": 449, + "component_based": false, + "version": 2 + }, + "minecraft:blaze_spawn_egg": { + "runtime_id": 483, + "component_based": false, + "version": 2 + }, + "minecraft:bleach": { + "runtime_id": 634, + "component_based": false, + "version": 2 + }, + "minecraft:blue_bundle": { + "runtime_id": 259, + "component_based": true, + "version": 1 + }, + "minecraft:blue_candle": { + "runtime_id": -424, + "component_based": false, + "version": 2 + }, + "minecraft:blue_candle_cake": { + "runtime_id": -441, + "component_based": false, + "version": 2 + }, + "minecraft:blue_carpet": { + "runtime_id": -607, + "component_based": false, + "version": 2 + }, + "minecraft:blue_concrete": { + "runtime_id": -638, + "component_based": false, + "version": 2 + }, + "minecraft:blue_concrete_powder": { + "runtime_id": -719, + "component_based": false, + "version": 2 + }, + "minecraft:blue_dye": { + "runtime_id": 425, + "component_based": false, + "version": 2 + }, + "minecraft:blue_glazed_terracotta": { + "runtime_id": 231, + "component_based": false, + "version": 2 + }, + "minecraft:blue_ice": { + "runtime_id": -11, + "component_based": false, + "version": 2 + }, + "minecraft:blue_orchid": { + "runtime_id": -830, + "component_based": false, + "version": 2 + }, + "minecraft:blue_shulker_box": { + "runtime_id": -623, + "component_based": false, + "version": 2 + }, + "minecraft:blue_stained_glass": { + "runtime_id": -683, + "component_based": false, + "version": 2 + }, + "minecraft:blue_stained_glass_pane": { + "runtime_id": -653, + "component_based": false, + "version": 2 + }, + "minecraft:blue_terracotta": { + "runtime_id": -734, + "component_based": false, + "version": 2 + }, + "minecraft:blue_wool": { + "runtime_id": -563, + "component_based": false, + "version": 2 + }, + "minecraft:board": { + "runtime_id": 630, + "component_based": false, + "version": 2 + }, + "minecraft:boat": { + "runtime_id": 792, + "component_based": false, + "version": 2 + }, + "minecraft:bogged_spawn_egg": { + "runtime_id": 490, + "component_based": false, + "version": 2 + }, + "minecraft:bolt_armor_trim_smithing_template": { + "runtime_id": 736, + "component_based": false, + "version": 2 + }, + "minecraft:bone": { + "runtime_id": 441, + "component_based": false, + "version": 2 + }, + "minecraft:bone_block": { + "runtime_id": 216, + "component_based": false, + "version": 2 + }, + "minecraft:bone_meal": { + "runtime_id": 437, + "component_based": false, + "version": 2 + }, + "minecraft:book": { + "runtime_id": 413, + "component_based": false, + "version": 2 + }, + "minecraft:bookshelf": { + "runtime_id": 47, + "component_based": false, + "version": 2 + }, + "minecraft:border_block": { + "runtime_id": 212, + "component_based": false, + "version": 2 + }, + "minecraft:bordure_indented_banner_pattern": { + "runtime_id": 619, + "component_based": false, + "version": 2 + }, + "minecraft:bow": { + "runtime_id": 324, + "component_based": false, + "version": 2 + }, + "minecraft:bowl": { + "runtime_id": 346, + "component_based": false, + "version": 2 + }, + "minecraft:brain_coral": { + "runtime_id": -581, + "component_based": false, + "version": 2 + }, + "minecraft:brain_coral_block": { + "runtime_id": -849, + "component_based": false, + "version": 2 + }, + "minecraft:brain_coral_fan": { + "runtime_id": -840, + "component_based": false, + "version": 2 + }, + "minecraft:brain_coral_wall_fan": { + "runtime_id": -904, + "component_based": false, + "version": 2 + }, + "minecraft:bread": { + "runtime_id": 283, + "component_based": false, + "version": 0 + }, + "minecraft:breeze_rod": { + "runtime_id": 274, + "component_based": true, + "version": 1 + }, + "minecraft:breeze_spawn_egg": { + "runtime_id": 529, + "component_based": false, + "version": 2 + }, + "minecraft:brewer_pottery_sherd": { + "runtime_id": 698, + "component_based": false, + "version": 2 + }, + "minecraft:brewing_stand": { + "runtime_id": 458, + "component_based": true, + "version": 2 + }, + "minecraft:brick": { + "runtime_id": 409, + "component_based": false, + "version": 2 + }, + "minecraft:brick_block": { + "runtime_id": 45, + "component_based": false, + "version": 2 + }, + "minecraft:brick_double_slab": { + "runtime_id": -880, + "component_based": false, + "version": 2 + }, + "minecraft:brick_slab": { + "runtime_id": -874, + "component_based": false, + "version": 2 + }, + "minecraft:brick_stairs": { + "runtime_id": 108, + "component_based": false, + "version": 2 + }, + "minecraft:brick_wall": { + "runtime_id": -976, + "component_based": false, + "version": 2 + }, + "minecraft:brown_bundle": { + "runtime_id": 258, + "component_based": true, + "version": 1 + }, + "minecraft:brown_candle": { + "runtime_id": -425, + "component_based": false, + "version": 2 + }, + "minecraft:brown_candle_cake": { + "runtime_id": -442, + "component_based": false, + "version": 2 + }, + "minecraft:brown_carpet": { + "runtime_id": -608, + "component_based": false, + "version": 2 + }, + "minecraft:brown_concrete": { + "runtime_id": -639, + "component_based": false, + "version": 2 + }, + "minecraft:brown_concrete_powder": { + "runtime_id": -720, + "component_based": false, + "version": 2 + }, + "minecraft:brown_dye": { + "runtime_id": 424, + "component_based": false, + "version": 2 + }, + "minecraft:brown_glazed_terracotta": { + "runtime_id": 232, + "component_based": false, + "version": 2 + }, + "minecraft:brown_mushroom": { + "runtime_id": 39, + "component_based": false, + "version": 2 + }, + "minecraft:brown_mushroom_block": { + "runtime_id": 99, + "component_based": false, + "version": 2 + }, + "minecraft:brown_shulker_box": { + "runtime_id": -624, + "component_based": false, + "version": 2 + }, + "minecraft:brown_stained_glass": { + "runtime_id": -684, + "component_based": false, + "version": 2 + }, + "minecraft:brown_stained_glass_pane": { + "runtime_id": -654, + "component_based": false, + "version": 2 + }, + "minecraft:brown_terracotta": { + "runtime_id": -735, + "component_based": false, + "version": 2 + }, + "minecraft:brown_wool": { + "runtime_id": -555, + "component_based": false, + "version": 2 + }, + "minecraft:brush": { + "runtime_id": 717, + "component_based": false, + "version": 2 + }, + "minecraft:bubble_column": { + "runtime_id": -160, + "component_based": false, + "version": 2 + }, + "minecraft:bubble_coral": { + "runtime_id": -582, + "component_based": false, + "version": 2 + }, + "minecraft:bubble_coral_block": { + "runtime_id": -850, + "component_based": false, + "version": 2 + }, + "minecraft:bubble_coral_fan": { + "runtime_id": -841, + "component_based": false, + "version": 2 + }, + "minecraft:bubble_coral_wall_fan": { + "runtime_id": -136, + "component_based": false, + "version": 2 + }, + "minecraft:bucket": { + "runtime_id": 385, + "component_based": false, + "version": 2 + }, + "minecraft:budding_amethyst": { + "runtime_id": -328, + "component_based": false, + "version": 2 + }, + "minecraft:bundle": { + "runtime_id": 271, + "component_based": true, + "version": 1 + }, + "minecraft:burn_pottery_sherd": { + "runtime_id": 699, + "component_based": false, + "version": 2 + }, + "minecraft:cactus": { + "runtime_id": 81, + "component_based": false, + "version": 2 + }, + "minecraft:cake": { + "runtime_id": 443, + "component_based": true, + "version": 2 + }, + "minecraft:calcite": { + "runtime_id": -326, + "component_based": false, + "version": 2 + }, + "minecraft:calibrated_sculk_sensor": { + "runtime_id": -580, + "component_based": false, + "version": 2 + }, + "minecraft:camel_spawn_egg": { + "runtime_id": 693, + "component_based": false, + "version": 2 + }, + "minecraft:camera": { + "runtime_id": 631, + "component_based": false, + "version": 0 + }, + "minecraft:campfire": { + "runtime_id": 624, + "component_based": true, + "version": 2 + }, + "minecraft:candle": { + "runtime_id": -412, + "component_based": false, + "version": 2 + }, + "minecraft:candle_cake": { + "runtime_id": -429, + "component_based": false, + "version": 2 + }, + "minecraft:carpet": { + "runtime_id": 751, + "component_based": false, + "version": 2 + }, + "minecraft:carrot": { + "runtime_id": 301, + "component_based": false, + "version": 0 + }, + "minecraft:carrot_on_a_stick": { + "runtime_id": 550, + "component_based": false, + "version": 2 + }, + "minecraft:carrots": { + "runtime_id": 141, + "component_based": false, + "version": 2 + }, + "minecraft:cartography_table": { + "runtime_id": -200, + "component_based": false, + "version": 2 + }, + "minecraft:carved_pumpkin": { + "runtime_id": -155, + "component_based": false, + "version": 2 + }, + "minecraft:cat_spawn_egg": { + "runtime_id": 516, + "component_based": false, + "version": 2 + }, + "minecraft:cauldron": { + "runtime_id": 459, + "component_based": true, + "version": 2 + }, + "minecraft:cave_spider_spawn_egg": { + "runtime_id": 484, + "component_based": false, + "version": 2 + }, + "minecraft:cave_vines": { + "runtime_id": -322, + "component_based": false, + "version": 2 + }, + "minecraft:cave_vines_body_with_berries": { + "runtime_id": -375, + "component_based": false, + "version": 2 + }, + "minecraft:cave_vines_head_with_berries": { + "runtime_id": -376, + "component_based": false, + "version": 2 + }, + "minecraft:chain": { + "runtime_id": 657, + "component_based": true, + "version": 2 + }, + "minecraft:chain_command_block": { + "runtime_id": 189, + "component_based": false, + "version": 2 + }, + "minecraft:chainmail_boots": { + "runtime_id": 367, + "component_based": false, + "version": 2 + }, + "minecraft:chainmail_chestplate": { + "runtime_id": 365, + "component_based": false, + "version": 2 + }, + "minecraft:chainmail_helmet": { + "runtime_id": 364, + "component_based": false, + "version": 2 + }, + "minecraft:chainmail_leggings": { + "runtime_id": 366, + "component_based": false, + "version": 2 + }, + "minecraft:chalkboard": { + "runtime_id": 230, + "component_based": false, + "version": 2 + }, + "minecraft:charcoal": { + "runtime_id": 327, + "component_based": true, + "version": 2 + }, + "minecraft:chemical_heat": { + "runtime_id": 192, + "component_based": false, + "version": 2 + }, + "minecraft:chemistry_table": { + "runtime_id": 786, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_boat": { + "runtime_id": 687, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_button": { + "runtime_id": -530, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_chest_boat": { + "runtime_id": 688, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_door": { + "runtime_id": -531, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_double_slab": { + "runtime_id": -540, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_fence": { + "runtime_id": -532, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_fence_gate": { + "runtime_id": -533, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_hanging_sign": { + "runtime_id": -534, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_leaves": { + "runtime_id": -548, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_log": { + "runtime_id": -536, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_planks": { + "runtime_id": -537, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_pressure_plate": { + "runtime_id": -538, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_sapling": { + "runtime_id": -547, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_sign": { + "runtime_id": 689, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_slab": { + "runtime_id": -539, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_stairs": { + "runtime_id": -541, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_standing_sign": { + "runtime_id": -542, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_trapdoor": { + "runtime_id": -543, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_wall_sign": { + "runtime_id": -544, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_wood": { + "runtime_id": -546, + "component_based": false, + "version": 2 + }, + "minecraft:chest": { + "runtime_id": 54, + "component_based": false, + "version": 2 + }, + "minecraft:chest_boat": { + "runtime_id": 683, + "component_based": false, + "version": 2 + }, + "minecraft:chest_minecart": { + "runtime_id": 415, + "component_based": false, + "version": 2 + }, + "minecraft:chicken": { + "runtime_id": 297, + "component_based": false, + "version": 0 + }, + "minecraft:chicken_spawn_egg": { + "runtime_id": 462, + "component_based": false, + "version": 2 + }, + "minecraft:chipped_anvil": { + "runtime_id": -959, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_bookshelf": { + "runtime_id": -526, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_copper": { + "runtime_id": -760, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_deepslate": { + "runtime_id": -395, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_nether_bricks": { + "runtime_id": -302, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_polished_blackstone": { + "runtime_id": -279, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_quartz_block": { + "runtime_id": -953, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_red_sandstone": { + "runtime_id": -956, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_resin_bricks": { + "runtime_id": -1020, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_sandstone": { + "runtime_id": -944, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_stone_bricks": { + "runtime_id": -870, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_tuff": { + "runtime_id": -753, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_tuff_bricks": { + "runtime_id": -759, + "component_based": false, + "version": 2 + }, + "minecraft:chorus_flower": { + "runtime_id": 200, + "component_based": false, + "version": 2 + }, + "minecraft:chorus_fruit": { + "runtime_id": 591, + "component_based": false, + "version": 0 + }, + "minecraft:chorus_plant": { + "runtime_id": 240, + "component_based": false, + "version": 2 + }, + "minecraft:clay": { + "runtime_id": 82, + "component_based": false, + "version": 2 + }, + "minecraft:clay_ball": { + "runtime_id": 410, + "component_based": false, + "version": 2 + }, + "minecraft:client_request_placeholder_block": { + "runtime_id": -465, + "component_based": false, + "version": 2 + }, + "minecraft:clock": { + "runtime_id": 419, + "component_based": false, + "version": 2 + }, + "minecraft:closed_eyeblossom": { + "runtime_id": -1019, + "component_based": false, + "version": 2 + }, + "minecraft:coal": { + "runtime_id": 326, + "component_based": true, + "version": 2 + }, + "minecraft:coal_block": { + "runtime_id": 173, + "component_based": false, + "version": 2 + }, + "minecraft:coal_ore": { + "runtime_id": 16, + "component_based": false, + "version": 2 + }, + "minecraft:coarse_dirt": { + "runtime_id": -962, + "component_based": false, + "version": 2 + }, + "minecraft:coast_armor_trim_smithing_template": { + "runtime_id": 721, + "component_based": false, + "version": 2 + }, + "minecraft:cobbled_deepslate": { + "runtime_id": -379, + "component_based": false, + "version": 2 + }, + "minecraft:cobbled_deepslate_double_slab": { + "runtime_id": -396, + "component_based": false, + "version": 2 + }, + "minecraft:cobbled_deepslate_slab": { + "runtime_id": -380, + "component_based": false, + "version": 2 + }, + "minecraft:cobbled_deepslate_stairs": { + "runtime_id": -381, + "component_based": false, + "version": 2 + }, + "minecraft:cobbled_deepslate_wall": { + "runtime_id": -382, + "component_based": false, + "version": 2 + }, + "minecraft:cobblestone": { + "runtime_id": 4, + "component_based": false, + "version": 2 + }, + "minecraft:cobblestone_double_slab": { + "runtime_id": -879, + "component_based": false, + "version": 2 + }, + "minecraft:cobblestone_slab": { + "runtime_id": -873, + "component_based": false, + "version": 2 + }, + "minecraft:cobblestone_wall": { + "runtime_id": 139, + "component_based": false, + "version": 2 + }, + "minecraft:cocoa": { + "runtime_id": 127, + "component_based": false, + "version": 2 + }, + "minecraft:cocoa_beans": { + "runtime_id": 438, + "component_based": false, + "version": 2 + }, + "minecraft:cod": { + "runtime_id": 286, + "component_based": false, + "version": 0 + }, + "minecraft:cod_bucket": { + "runtime_id": 389, + "component_based": false, + "version": 2 + }, + "minecraft:cod_spawn_egg": { + "runtime_id": 508, + "component_based": false, + "version": 2 + }, + "minecraft:colored_torch_blue": { + "runtime_id": 204, + "component_based": false, + "version": 2 + }, + "minecraft:colored_torch_bp": { + "runtime_id": 790, + "component_based": false, + "version": 2 + }, + "minecraft:colored_torch_green": { + "runtime_id": -963, + "component_based": false, + "version": 2 + }, + "minecraft:colored_torch_purple": { + "runtime_id": -964, + "component_based": false, + "version": 2 + }, + "minecraft:colored_torch_red": { + "runtime_id": 202, + "component_based": false, + "version": 2 + }, + "minecraft:colored_torch_rg": { + "runtime_id": 789, + "component_based": false, + "version": 2 + }, + "minecraft:command_block": { + "runtime_id": 137, + "component_based": false, + "version": 2 + }, + "minecraft:command_block_minecart": { + "runtime_id": 596, + "component_based": false, + "version": 2 + }, + "minecraft:comparator": { + "runtime_id": 555, + "component_based": true, + "version": 2 + }, + "minecraft:compass": { + "runtime_id": 417, + "component_based": false, + "version": 2 + }, + "minecraft:composter": { + "runtime_id": -213, + "component_based": false, + "version": 2 + }, + "minecraft:compound": { + "runtime_id": 632, + "component_based": false, + "version": 2 + }, + "minecraft:compound_creator": { + "runtime_id": 238, + "component_based": false, + "version": 2 + }, + "minecraft:concrete": { + "runtime_id": 777, + "component_based": false, + "version": 2 + }, + "minecraft:concrete_powder": { + "runtime_id": 778, + "component_based": false, + "version": 2 + }, + "minecraft:conduit": { + "runtime_id": -157, + "component_based": false, + "version": 2 + }, + "minecraft:cooked_beef": { + "runtime_id": 296, + "component_based": false, + "version": 0 + }, + "minecraft:cooked_chicken": { + "runtime_id": 298, + "component_based": false, + "version": 0 + }, + "minecraft:cooked_cod": { + "runtime_id": 290, + "component_based": false, + "version": 0 + }, + "minecraft:cooked_mutton": { + "runtime_id": 584, + "component_based": false, + "version": 0 + }, + "minecraft:cooked_porkchop": { + "runtime_id": 285, + "component_based": false, + "version": 0 + }, + "minecraft:cooked_rabbit": { + "runtime_id": 311, + "component_based": false, + "version": 0 + }, + "minecraft:cooked_salmon": { + "runtime_id": 291, + "component_based": false, + "version": 0 + }, + "minecraft:cookie": { + "runtime_id": 293, + "component_based": false, + "version": 0 + }, + "minecraft:copper_block": { + "runtime_id": -340, + "component_based": false, + "version": 2 + }, + "minecraft:copper_bulb": { + "runtime_id": -776, + "component_based": false, + "version": 2 + }, + "minecraft:copper_door": { + "runtime_id": -784, + "component_based": false, + "version": 2 + }, + "minecraft:copper_grate": { + "runtime_id": -768, + "component_based": false, + "version": 2 + }, + "minecraft:copper_ingot": { + "runtime_id": 538, + "component_based": false, + "version": 2 + }, + "minecraft:copper_ore": { + "runtime_id": -311, + "component_based": false, + "version": 2 + }, + "minecraft:copper_trapdoor": { + "runtime_id": -792, + "component_based": false, + "version": 2 + }, + "minecraft:coral": { + "runtime_id": 773, + "component_based": false, + "version": 2 + }, + "minecraft:coral_block": { + "runtime_id": 755, + "component_based": false, + "version": 2 + }, + "minecraft:coral_fan": { + "runtime_id": 764, + "component_based": false, + "version": 2 + }, + "minecraft:coral_fan_dead": { + "runtime_id": 765, + "component_based": false, + "version": 2 + }, + "minecraft:cornflower": { + "runtime_id": -838, + "component_based": false, + "version": 2 + }, + "minecraft:cow_spawn_egg": { + "runtime_id": 463, + "component_based": false, + "version": 2 + }, + "minecraft:cracked_deepslate_bricks": { + "runtime_id": -410, + "component_based": false, + "version": 2 + }, + "minecraft:cracked_deepslate_tiles": { + "runtime_id": -409, + "component_based": false, + "version": 2 + }, + "minecraft:cracked_nether_bricks": { + "runtime_id": -303, + "component_based": false, + "version": 2 + }, + "minecraft:cracked_polished_blackstone_bricks": { + "runtime_id": -280, + "component_based": false, + "version": 2 + }, + "minecraft:cracked_stone_bricks": { + "runtime_id": -869, + "component_based": false, + "version": 2 + }, + "minecraft:crafter": { + "runtime_id": -313, + "component_based": false, + "version": 2 + }, + "minecraft:crafting_table": { + "runtime_id": 58, + "component_based": false, + "version": 2 + }, + "minecraft:creaking_heart": { + "runtime_id": -1012, + "component_based": false, + "version": 2 + }, + "minecraft:creaking_spawn_egg": { + "runtime_id": 748, + "component_based": false, + "version": 2 + }, + "minecraft:creeper_banner_pattern": { + "runtime_id": 615, + "component_based": false, + "version": 2 + }, + "minecraft:creeper_head": { + "runtime_id": -968, + "component_based": false, + "version": 2 + }, + "minecraft:creeper_spawn_egg": { + "runtime_id": 468, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_button": { + "runtime_id": -260, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_door": { + "runtime_id": 654, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_double_slab": { + "runtime_id": -266, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_fence": { + "runtime_id": -256, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_fence_gate": { + "runtime_id": -258, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_fungus": { + "runtime_id": -228, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_hanging_sign": { + "runtime_id": -506, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_hyphae": { + "runtime_id": -299, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_nylium": { + "runtime_id": -232, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_planks": { + "runtime_id": -242, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_pressure_plate": { + "runtime_id": -262, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_roots": { + "runtime_id": -223, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_sign": { + "runtime_id": 652, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_slab": { + "runtime_id": -264, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_stairs": { + "runtime_id": -254, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_standing_sign": { + "runtime_id": -250, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_stem": { + "runtime_id": -225, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_trapdoor": { + "runtime_id": -246, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_wall_sign": { + "runtime_id": -252, + "component_based": false, + "version": 2 + }, + "minecraft:crossbow": { + "runtime_id": 608, + "component_based": false, + "version": 2 + }, + "minecraft:crying_obsidian": { + "runtime_id": -289, + "component_based": false, + "version": 2 + }, + "minecraft:cut_copper": { + "runtime_id": -347, + "component_based": false, + "version": 2 + }, + "minecraft:cut_copper_slab": { + "runtime_id": -361, + "component_based": false, + "version": 2 + }, + "minecraft:cut_copper_stairs": { + "runtime_id": -354, + "component_based": false, + "version": 2 + }, + "minecraft:cut_red_sandstone": { + "runtime_id": -957, + "component_based": false, + "version": 2 + }, + "minecraft:cut_red_sandstone_double_slab": { + "runtime_id": -928, + "component_based": false, + "version": 2 + }, + "minecraft:cut_red_sandstone_slab": { + "runtime_id": -901, + "component_based": false, + "version": 2 + }, + "minecraft:cut_sandstone": { + "runtime_id": -945, + "component_based": false, + "version": 2 + }, + "minecraft:cut_sandstone_double_slab": { + "runtime_id": -927, + "component_based": false, + "version": 2 + }, + "minecraft:cut_sandstone_slab": { + "runtime_id": -900, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_bundle": { + "runtime_id": 263, + "component_based": true, + "version": 1 + }, + "minecraft:cyan_candle": { + "runtime_id": -422, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_candle_cake": { + "runtime_id": -439, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_carpet": { + "runtime_id": -605, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_concrete": { + "runtime_id": -636, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_concrete_powder": { + "runtime_id": -717, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_dye": { + "runtime_id": 427, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_glazed_terracotta": { + "runtime_id": 229, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_shulker_box": { + "runtime_id": -621, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_stained_glass": { + "runtime_id": -681, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_stained_glass_pane": { + "runtime_id": -651, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_terracotta": { + "runtime_id": -732, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_wool": { + "runtime_id": -561, + "component_based": false, + "version": 2 + }, + "minecraft:damaged_anvil": { + "runtime_id": -960, + "component_based": false, + "version": 2 + }, + "minecraft:dandelion": { + "runtime_id": 37, + "component_based": false, + "version": 2 + }, + "minecraft:danger_pottery_sherd": { + "runtime_id": 700, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_boat": { + "runtime_id": 406, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_button": { + "runtime_id": -142, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_chest_boat": { + "runtime_id": 681, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_door": { + "runtime_id": 590, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_double_slab": { + "runtime_id": -813, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_fence": { + "runtime_id": -577, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_fence_gate": { + "runtime_id": 186, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_hanging_sign": { + "runtime_id": -505, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_leaves": { + "runtime_id": -803, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_log": { + "runtime_id": -572, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_planks": { + "runtime_id": -743, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_pressure_plate": { + "runtime_id": -152, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_sapling": { + "runtime_id": -829, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_sign": { + "runtime_id": 613, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_slab": { + "runtime_id": -808, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_stairs": { + "runtime_id": 164, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_trapdoor": { + "runtime_id": -147, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_wood": { + "runtime_id": -818, + "component_based": false, + "version": 2 + }, + "minecraft:dark_prismarine": { + "runtime_id": -947, + "component_based": false, + "version": 2 + }, + "minecraft:dark_prismarine_double_slab": { + "runtime_id": -913, + "component_based": false, + "version": 2 + }, + "minecraft:dark_prismarine_slab": { + "runtime_id": -886, + "component_based": false, + "version": 2 + }, + "minecraft:dark_prismarine_stairs": { + "runtime_id": -3, + "component_based": false, + "version": 2 + }, + "minecraft:darkoak_standing_sign": { + "runtime_id": -192, + "component_based": false, + "version": 2 + }, + "minecraft:darkoak_wall_sign": { + "runtime_id": -193, + "component_based": false, + "version": 2 + }, + "minecraft:daylight_detector": { + "runtime_id": 151, + "component_based": false, + "version": 2 + }, + "minecraft:daylight_detector_inverted": { + "runtime_id": 178, + "component_based": false, + "version": 2 + }, + "minecraft:dead_brain_coral": { + "runtime_id": -586, + "component_based": false, + "version": 2 + }, + "minecraft:dead_brain_coral_block": { + "runtime_id": -854, + "component_based": false, + "version": 2 + }, + "minecraft:dead_brain_coral_fan": { + "runtime_id": -844, + "component_based": false, + "version": 2 + }, + "minecraft:dead_brain_coral_wall_fan": { + "runtime_id": -906, + "component_based": false, + "version": 2 + }, + "minecraft:dead_bubble_coral": { + "runtime_id": -587, + "component_based": false, + "version": 2 + }, + "minecraft:dead_bubble_coral_block": { + "runtime_id": -855, + "component_based": false, + "version": 2 + }, + "minecraft:dead_bubble_coral_fan": { + "runtime_id": -845, + "component_based": false, + "version": 2 + }, + "minecraft:dead_bubble_coral_wall_fan": { + "runtime_id": -908, + "component_based": false, + "version": 2 + }, + "minecraft:dead_fire_coral": { + "runtime_id": -588, + "component_based": false, + "version": 2 + }, + "minecraft:dead_fire_coral_block": { + "runtime_id": -856, + "component_based": false, + "version": 2 + }, + "minecraft:dead_fire_coral_fan": { + "runtime_id": -846, + "component_based": false, + "version": 2 + }, + "minecraft:dead_fire_coral_wall_fan": { + "runtime_id": -909, + "component_based": false, + "version": 2 + }, + "minecraft:dead_horn_coral": { + "runtime_id": -589, + "component_based": false, + "version": 2 + }, + "minecraft:dead_horn_coral_block": { + "runtime_id": -857, + "component_based": false, + "version": 2 + }, + "minecraft:dead_horn_coral_fan": { + "runtime_id": -847, + "component_based": false, + "version": 2 + }, + "minecraft:dead_horn_coral_wall_fan": { + "runtime_id": -910, + "component_based": false, + "version": 2 + }, + "minecraft:dead_tube_coral": { + "runtime_id": -585, + "component_based": false, + "version": 2 + }, + "minecraft:dead_tube_coral_block": { + "runtime_id": -853, + "component_based": false, + "version": 2 + }, + "minecraft:dead_tube_coral_fan": { + "runtime_id": -134, + "component_based": false, + "version": 2 + }, + "minecraft:dead_tube_coral_wall_fan": { + "runtime_id": -905, + "component_based": false, + "version": 2 + }, + "minecraft:deadbush": { + "runtime_id": 32, + "component_based": false, + "version": 2 + }, + "minecraft:debug_stick": { + "runtime_id": 626, + "component_based": false, + "version": 2 + }, + "minecraft:decorated_pot": { + "runtime_id": -551, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate": { + "runtime_id": -378, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_brick_double_slab": { + "runtime_id": -399, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_brick_slab": { + "runtime_id": -392, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_brick_stairs": { + "runtime_id": -393, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_brick_wall": { + "runtime_id": -394, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_bricks": { + "runtime_id": -391, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_coal_ore": { + "runtime_id": -406, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_copper_ore": { + "runtime_id": -408, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_diamond_ore": { + "runtime_id": -405, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_emerald_ore": { + "runtime_id": -407, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_gold_ore": { + "runtime_id": -402, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_iron_ore": { + "runtime_id": -401, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_lapis_ore": { + "runtime_id": -400, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_redstone_ore": { + "runtime_id": -403, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_tile_double_slab": { + "runtime_id": -398, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_tile_slab": { + "runtime_id": -388, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_tile_stairs": { + "runtime_id": -389, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_tile_wall": { + "runtime_id": -390, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_tiles": { + "runtime_id": -387, + "component_based": false, + "version": 2 + }, + "minecraft:deny": { + "runtime_id": 211, + "component_based": false, + "version": 2 + }, + "minecraft:deprecated_anvil": { + "runtime_id": -961, + "component_based": false, + "version": 2 + }, + "minecraft:deprecated_purpur_block_1": { + "runtime_id": -950, + "component_based": false, + "version": 2 + }, + "minecraft:deprecated_purpur_block_2": { + "runtime_id": -952, + "component_based": false, + "version": 2 + }, + "minecraft:detector_rail": { + "runtime_id": 28, + "component_based": false, + "version": 2 + }, + "minecraft:diamond": { + "runtime_id": 328, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_axe": { + "runtime_id": 343, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_block": { + "runtime_id": 57, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_boots": { + "runtime_id": 375, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_chestplate": { + "runtime_id": 373, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_helmet": { + "runtime_id": 372, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_hoe": { + "runtime_id": 357, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_horse_armor": { + "runtime_id": 566, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_leggings": { + "runtime_id": 374, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_ore": { + "runtime_id": 56, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_pickaxe": { + "runtime_id": 342, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_shovel": { + "runtime_id": 341, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_sword": { + "runtime_id": 340, + "component_based": false, + "version": 2 + }, + "minecraft:diorite": { + "runtime_id": -592, + "component_based": false, + "version": 2 + }, + "minecraft:diorite_double_slab": { + "runtime_id": -921, + "component_based": false, + "version": 2 + }, + "minecraft:diorite_slab": { + "runtime_id": -894, + "component_based": false, + "version": 2 + }, + "minecraft:diorite_stairs": { + "runtime_id": -170, + "component_based": false, + "version": 2 + }, + "minecraft:diorite_wall": { + "runtime_id": -973, + "component_based": false, + "version": 2 + }, + "minecraft:dirt": { + "runtime_id": 3, + "component_based": false, + "version": 2 + }, + "minecraft:dirt_with_roots": { + "runtime_id": -318, + "component_based": false, + "version": 2 + }, + "minecraft:disc_fragment_5": { + "runtime_id": 675, + "component_based": false, + "version": 2 + }, + "minecraft:dispenser": { + "runtime_id": 23, + "component_based": false, + "version": 2 + }, + "minecraft:dolphin_spawn_egg": { + "runtime_id": 512, + "component_based": false, + "version": 2 + }, + "minecraft:donkey_spawn_egg": { + "runtime_id": 493, + "component_based": false, + "version": 2 + }, + "minecraft:double_cut_copper_slab": { + "runtime_id": -368, + "component_based": false, + "version": 2 + }, + "minecraft:double_plant": { + "runtime_id": 771, + "component_based": false, + "version": 2 + }, + "minecraft:double_stone_block_slab": { + "runtime_id": 760, + "component_based": false, + "version": 2 + }, + "minecraft:double_stone_block_slab2": { + "runtime_id": 761, + "component_based": false, + "version": 2 + }, + "minecraft:double_stone_block_slab3": { + "runtime_id": 762, + "component_based": false, + "version": 2 + }, + "minecraft:double_stone_block_slab4": { + "runtime_id": 763, + "component_based": false, + "version": 2 + }, + "minecraft:dragon_breath": { + "runtime_id": 593, + "component_based": false, + "version": 2 + }, + "minecraft:dragon_egg": { + "runtime_id": 122, + "component_based": false, + "version": 2 + }, + "minecraft:dragon_head": { + "runtime_id": -969, + "component_based": false, + "version": 2 + }, + "minecraft:dried_kelp": { + "runtime_id": 292, + "component_based": false, + "version": 0 + }, + "minecraft:dried_kelp_block": { + "runtime_id": -139, + "component_based": false, + "version": 2 + }, + "minecraft:dripstone_block": { + "runtime_id": -317, + "component_based": false, + "version": 2 + }, + "minecraft:dropper": { + "runtime_id": 125, + "component_based": false, + "version": 2 + }, + "minecraft:drowned_spawn_egg": { + "runtime_id": 511, + "component_based": false, + "version": 2 + }, + "minecraft:dune_armor_trim_smithing_template": { + "runtime_id": 720, + "component_based": false, + "version": 2 + }, + "minecraft:dye": { + "runtime_id": 793, + "component_based": false, + "version": 2 + }, + "minecraft:echo_shard": { + "runtime_id": 685, + "component_based": false, + "version": 2 + }, + "minecraft:egg": { + "runtime_id": 416, + "component_based": false, + "version": 2 + }, + "minecraft:elder_guardian_spawn_egg": { + "runtime_id": 499, + "component_based": false, + "version": 2 + }, + "minecraft:element_0": { + "runtime_id": 36, + "component_based": false, + "version": 2 + }, + "minecraft:element_1": { + "runtime_id": -12, + "component_based": false, + "version": 2 + }, + "minecraft:element_10": { + "runtime_id": -21, + "component_based": false, + "version": 2 + }, + "minecraft:element_100": { + "runtime_id": -111, + "component_based": false, + "version": 2 + }, + "minecraft:element_101": { + "runtime_id": -112, + "component_based": false, + "version": 2 + }, + "minecraft:element_102": { + "runtime_id": -113, + "component_based": false, + "version": 2 + }, + "minecraft:element_103": { + "runtime_id": -114, + "component_based": false, + "version": 2 + }, + "minecraft:element_104": { + "runtime_id": -115, + "component_based": false, + "version": 2 + }, + "minecraft:element_105": { + "runtime_id": -116, + "component_based": false, + "version": 2 + }, + "minecraft:element_106": { + "runtime_id": -117, + "component_based": false, + "version": 2 + }, + "minecraft:element_107": { + "runtime_id": -118, + "component_based": false, + "version": 2 + }, + "minecraft:element_108": { + "runtime_id": -119, + "component_based": false, + "version": 2 + }, + "minecraft:element_109": { + "runtime_id": -120, + "component_based": false, + "version": 2 + }, + "minecraft:element_11": { + "runtime_id": -22, + "component_based": false, + "version": 2 + }, + "minecraft:element_110": { + "runtime_id": -121, + "component_based": false, + "version": 2 + }, + "minecraft:element_111": { + "runtime_id": -122, + "component_based": false, + "version": 2 + }, + "minecraft:element_112": { + "runtime_id": -123, + "component_based": false, + "version": 2 + }, + "minecraft:element_113": { + "runtime_id": -124, + "component_based": false, + "version": 2 + }, + "minecraft:element_114": { + "runtime_id": -125, + "component_based": false, + "version": 2 + }, + "minecraft:element_115": { + "runtime_id": -126, + "component_based": false, + "version": 2 + }, + "minecraft:element_116": { + "runtime_id": -127, + "component_based": false, + "version": 2 + }, + "minecraft:element_117": { + "runtime_id": -128, + "component_based": false, + "version": 2 + }, + "minecraft:element_118": { + "runtime_id": -129, + "component_based": false, + "version": 2 + }, + "minecraft:element_12": { + "runtime_id": -23, + "component_based": false, + "version": 2 + }, + "minecraft:element_13": { + "runtime_id": -24, + "component_based": false, + "version": 2 + }, + "minecraft:element_14": { + "runtime_id": -25, + "component_based": false, + "version": 2 + }, + "minecraft:element_15": { + "runtime_id": -26, + "component_based": false, + "version": 2 + }, + "minecraft:element_16": { + "runtime_id": -27, + "component_based": false, + "version": 2 + }, + "minecraft:element_17": { + "runtime_id": -28, + "component_based": false, + "version": 2 + }, + "minecraft:element_18": { + "runtime_id": -29, + "component_based": false, + "version": 2 + }, + "minecraft:element_19": { + "runtime_id": -30, + "component_based": false, + "version": 2 + }, + "minecraft:element_2": { + "runtime_id": -13, + "component_based": false, + "version": 2 + }, + "minecraft:element_20": { + "runtime_id": -31, + "component_based": false, + "version": 2 + }, + "minecraft:element_21": { + "runtime_id": -32, + "component_based": false, + "version": 2 + }, + "minecraft:element_22": { + "runtime_id": -33, + "component_based": false, + "version": 2 + }, + "minecraft:element_23": { + "runtime_id": -34, + "component_based": false, + "version": 2 + }, + "minecraft:element_24": { + "runtime_id": -35, + "component_based": false, + "version": 2 + }, + "minecraft:element_25": { + "runtime_id": -36, + "component_based": false, + "version": 2 + }, + "minecraft:element_26": { + "runtime_id": -37, + "component_based": false, + "version": 2 + }, + "minecraft:element_27": { + "runtime_id": -38, + "component_based": false, + "version": 2 + }, + "minecraft:element_28": { + "runtime_id": -39, + "component_based": false, + "version": 2 + }, + "minecraft:element_29": { + "runtime_id": -40, + "component_based": false, + "version": 2 + }, + "minecraft:element_3": { + "runtime_id": -14, + "component_based": false, + "version": 2 + }, + "minecraft:element_30": { + "runtime_id": -41, + "component_based": false, + "version": 2 + }, + "minecraft:element_31": { + "runtime_id": -42, + "component_based": false, + "version": 2 + }, + "minecraft:element_32": { + "runtime_id": -43, + "component_based": false, + "version": 2 + }, + "minecraft:element_33": { + "runtime_id": -44, + "component_based": false, + "version": 2 + }, + "minecraft:element_34": { + "runtime_id": -45, + "component_based": false, + "version": 2 + }, + "minecraft:element_35": { + "runtime_id": -46, + "component_based": false, + "version": 2 + }, + "minecraft:element_36": { + "runtime_id": -47, + "component_based": false, + "version": 2 + }, + "minecraft:element_37": { + "runtime_id": -48, + "component_based": false, + "version": 2 + }, + "minecraft:element_38": { + "runtime_id": -49, + "component_based": false, + "version": 2 + }, + "minecraft:element_39": { + "runtime_id": -50, + "component_based": false, + "version": 2 + }, + "minecraft:element_4": { + "runtime_id": -15, + "component_based": false, + "version": 2 + }, + "minecraft:element_40": { + "runtime_id": -51, + "component_based": false, + "version": 2 + }, + "minecraft:element_41": { + "runtime_id": -52, + "component_based": false, + "version": 2 + }, + "minecraft:element_42": { + "runtime_id": -53, + "component_based": false, + "version": 2 + }, + "minecraft:element_43": { + "runtime_id": -54, + "component_based": false, + "version": 2 + }, + "minecraft:element_44": { + "runtime_id": -55, + "component_based": false, + "version": 2 + }, + "minecraft:element_45": { + "runtime_id": -56, + "component_based": false, + "version": 2 + }, + "minecraft:element_46": { + "runtime_id": -57, + "component_based": false, + "version": 2 + }, + "minecraft:element_47": { + "runtime_id": -58, + "component_based": false, + "version": 2 + }, + "minecraft:element_48": { + "runtime_id": -59, + "component_based": false, + "version": 2 + }, + "minecraft:element_49": { + "runtime_id": -60, + "component_based": false, + "version": 2 + }, + "minecraft:element_5": { + "runtime_id": -16, + "component_based": false, + "version": 2 + }, + "minecraft:element_50": { + "runtime_id": -61, + "component_based": false, + "version": 2 + }, + "minecraft:element_51": { + "runtime_id": -62, + "component_based": false, + "version": 2 + }, + "minecraft:element_52": { + "runtime_id": -63, + "component_based": false, + "version": 2 + }, + "minecraft:element_53": { + "runtime_id": -64, + "component_based": false, + "version": 2 + }, + "minecraft:element_54": { + "runtime_id": -65, + "component_based": false, + "version": 2 + }, + "minecraft:element_55": { + "runtime_id": -66, + "component_based": false, + "version": 2 + }, + "minecraft:element_56": { + "runtime_id": -67, + "component_based": false, + "version": 2 + }, + "minecraft:element_57": { + "runtime_id": -68, + "component_based": false, + "version": 2 + }, + "minecraft:element_58": { + "runtime_id": -69, + "component_based": false, + "version": 2 + }, + "minecraft:element_59": { + "runtime_id": -70, + "component_based": false, + "version": 2 + }, + "minecraft:element_6": { + "runtime_id": -17, + "component_based": false, + "version": 2 + }, + "minecraft:element_60": { + "runtime_id": -71, + "component_based": false, + "version": 2 + }, + "minecraft:element_61": { + "runtime_id": -72, + "component_based": false, + "version": 2 + }, + "minecraft:element_62": { + "runtime_id": -73, + "component_based": false, + "version": 2 + }, + "minecraft:element_63": { + "runtime_id": -74, + "component_based": false, + "version": 2 + }, + "minecraft:element_64": { + "runtime_id": -75, + "component_based": false, + "version": 2 + }, + "minecraft:element_65": { + "runtime_id": -76, + "component_based": false, + "version": 2 + }, + "minecraft:element_66": { + "runtime_id": -77, + "component_based": false, + "version": 2 + }, + "minecraft:element_67": { + "runtime_id": -78, + "component_based": false, + "version": 2 + }, + "minecraft:element_68": { + "runtime_id": -79, + "component_based": false, + "version": 2 + }, + "minecraft:element_69": { + "runtime_id": -80, + "component_based": false, + "version": 2 + }, + "minecraft:element_7": { + "runtime_id": -18, + "component_based": false, + "version": 2 + }, + "minecraft:element_70": { + "runtime_id": -81, + "component_based": false, + "version": 2 + }, + "minecraft:element_71": { + "runtime_id": -82, + "component_based": false, + "version": 2 + }, + "minecraft:element_72": { + "runtime_id": -83, + "component_based": false, + "version": 2 + }, + "minecraft:element_73": { + "runtime_id": -84, + "component_based": false, + "version": 2 + }, + "minecraft:element_74": { + "runtime_id": -85, + "component_based": false, + "version": 2 + }, + "minecraft:element_75": { + "runtime_id": -86, + "component_based": false, + "version": 2 + }, + "minecraft:element_76": { + "runtime_id": -87, + "component_based": false, + "version": 2 + }, + "minecraft:element_77": { + "runtime_id": -88, + "component_based": false, + "version": 2 + }, + "minecraft:element_78": { + "runtime_id": -89, + "component_based": false, + "version": 2 + }, + "minecraft:element_79": { + "runtime_id": -90, + "component_based": false, + "version": 2 + }, + "minecraft:element_8": { + "runtime_id": -19, + "component_based": false, + "version": 2 + }, + "minecraft:element_80": { + "runtime_id": -91, + "component_based": false, + "version": 2 + }, + "minecraft:element_81": { + "runtime_id": -92, + "component_based": false, + "version": 2 + }, + "minecraft:element_82": { + "runtime_id": -93, + "component_based": false, + "version": 2 + }, + "minecraft:element_83": { + "runtime_id": -94, + "component_based": false, + "version": 2 + }, + "minecraft:element_84": { + "runtime_id": -95, + "component_based": false, + "version": 2 + }, + "minecraft:element_85": { + "runtime_id": -96, + "component_based": false, + "version": 2 + }, + "minecraft:element_86": { + "runtime_id": -97, + "component_based": false, + "version": 2 + }, + "minecraft:element_87": { + "runtime_id": -98, + "component_based": false, + "version": 2 + }, + "minecraft:element_88": { + "runtime_id": -99, + "component_based": false, + "version": 2 + }, + "minecraft:element_89": { + "runtime_id": -100, + "component_based": false, + "version": 2 + }, + "minecraft:element_9": { + "runtime_id": -20, + "component_based": false, + "version": 2 + }, + "minecraft:element_90": { + "runtime_id": -101, + "component_based": false, + "version": 2 + }, + "minecraft:element_91": { + "runtime_id": -102, + "component_based": false, + "version": 2 + }, + "minecraft:element_92": { + "runtime_id": -103, + "component_based": false, + "version": 2 + }, + "minecraft:element_93": { + "runtime_id": -104, + "component_based": false, + "version": 2 + }, + "minecraft:element_94": { + "runtime_id": -105, + "component_based": false, + "version": 2 + }, + "minecraft:element_95": { + "runtime_id": -106, + "component_based": false, + "version": 2 + }, + "minecraft:element_96": { + "runtime_id": -107, + "component_based": false, + "version": 2 + }, + "minecraft:element_97": { + "runtime_id": -108, + "component_based": false, + "version": 2 + }, + "minecraft:element_98": { + "runtime_id": -109, + "component_based": false, + "version": 2 + }, + "minecraft:element_99": { + "runtime_id": -110, + "component_based": false, + "version": 2 + }, + "minecraft:element_constructor": { + "runtime_id": -987, + "component_based": false, + "version": 2 + }, + "minecraft:elytra": { + "runtime_id": 597, + "component_based": false, + "version": 2 + }, + "minecraft:emerald": { + "runtime_id": 546, + "component_based": false, + "version": 2 + }, + "minecraft:emerald_block": { + "runtime_id": 133, + "component_based": false, + "version": 2 + }, + "minecraft:emerald_ore": { + "runtime_id": 129, + "component_based": false, + "version": 2 + }, + "minecraft:empty_map": { + "runtime_id": 549, + "component_based": false, + "version": 2 + }, + "minecraft:enchanted_book": { + "runtime_id": 554, + "component_based": false, + "version": 2 + }, + "minecraft:enchanted_golden_apple": { + "runtime_id": 281, + "component_based": false, + "version": 0 + }, + "minecraft:enchanting_table": { + "runtime_id": 116, + "component_based": false, + "version": 2 + }, + "minecraft:end_brick_stairs": { + "runtime_id": -178, + "component_based": false, + "version": 2 + }, + "minecraft:end_bricks": { + "runtime_id": 206, + "component_based": false, + "version": 2 + }, + "minecraft:end_crystal": { + "runtime_id": 796, + "component_based": false, + "version": 2 + }, + "minecraft:end_gateway": { + "runtime_id": 209, + "component_based": false, + "version": 2 + }, + "minecraft:end_portal": { + "runtime_id": 119, + "component_based": false, + "version": 2 + }, + "minecraft:end_portal_frame": { + "runtime_id": 120, + "component_based": false, + "version": 2 + }, + "minecraft:end_rod": { + "runtime_id": 208, + "component_based": false, + "version": 2 + }, + "minecraft:end_stone": { + "runtime_id": 121, + "component_based": false, + "version": 2 + }, + "minecraft:end_stone_brick_double_slab": { + "runtime_id": -167, + "component_based": false, + "version": 2 + }, + "minecraft:end_stone_brick_slab": { + "runtime_id": -162, + "component_based": false, + "version": 2 + }, + "minecraft:end_stone_brick_wall": { + "runtime_id": -980, + "component_based": false, + "version": 2 + }, + "minecraft:ender_chest": { + "runtime_id": 130, + "component_based": false, + "version": 2 + }, + "minecraft:ender_dragon_spawn_egg": { + "runtime_id": 535, + "component_based": false, + "version": 2 + }, + "minecraft:ender_eye": { + "runtime_id": 460, + "component_based": false, + "version": 2 + }, + "minecraft:ender_pearl": { + "runtime_id": 448, + "component_based": false, + "version": 2 + }, + "minecraft:enderman_spawn_egg": { + "runtime_id": 469, + "component_based": false, + "version": 2 + }, + "minecraft:endermite_spawn_egg": { + "runtime_id": 487, + "component_based": false, + "version": 2 + }, + "minecraft:evoker_spawn_egg": { + "runtime_id": 503, + "component_based": false, + "version": 2 + }, + "minecraft:experience_bottle": { + "runtime_id": 542, + "component_based": false, + "version": 2 + }, + "minecraft:explorer_pottery_sherd": { + "runtime_id": 701, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_chiseled_copper": { + "runtime_id": -761, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_copper": { + "runtime_id": -341, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_copper_bulb": { + "runtime_id": -777, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_copper_door": { + "runtime_id": -785, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_copper_grate": { + "runtime_id": -769, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_copper_trapdoor": { + "runtime_id": -793, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_cut_copper": { + "runtime_id": -348, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_cut_copper_slab": { + "runtime_id": -362, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_cut_copper_stairs": { + "runtime_id": -355, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_double_cut_copper_slab": { + "runtime_id": -369, + "component_based": false, + "version": 2 + }, + "minecraft:eye_armor_trim_smithing_template": { + "runtime_id": 724, + "component_based": false, + "version": 2 + }, + "minecraft:farmland": { + "runtime_id": 60, + "component_based": false, + "version": 2 + }, + "minecraft:feather": { + "runtime_id": 352, + "component_based": false, + "version": 2 + }, + "minecraft:fence": { + "runtime_id": 753, + "component_based": false, + "version": 2 + }, + "minecraft:fence_gate": { + "runtime_id": 107, + "component_based": false, + "version": 2 + }, + "minecraft:fermented_spider_eye": { + "runtime_id": 455, + "component_based": false, + "version": 2 + }, + "minecraft:fern": { + "runtime_id": -848, + "component_based": false, + "version": 2 + }, + "minecraft:field_masoned_banner_pattern": { + "runtime_id": 618, + "component_based": false, + "version": 2 + }, + "minecraft:filled_map": { + "runtime_id": 446, + "component_based": false, + "version": 2 + }, + "minecraft:fire": { + "runtime_id": 51, + "component_based": false, + "version": 2 + }, + "minecraft:fire_charge": { + "runtime_id": 543, + "component_based": false, + "version": 2 + }, + "minecraft:fire_coral": { + "runtime_id": -583, + "component_based": false, + "version": 2 + }, + "minecraft:fire_coral_block": { + "runtime_id": -851, + "component_based": false, + "version": 2 + }, + "minecraft:fire_coral_fan": { + "runtime_id": -842, + "component_based": false, + "version": 2 + }, + "minecraft:fire_coral_wall_fan": { + "runtime_id": -907, + "component_based": false, + "version": 2 + }, + "minecraft:firework_rocket": { + "runtime_id": 552, + "component_based": false, + "version": 2 + }, + "minecraft:firework_star": { + "runtime_id": 553, + "component_based": false, + "version": 2 + }, + "minecraft:fishing_rod": { + "runtime_id": 418, + "component_based": true, + "version": 2 + }, + "minecraft:fletching_table": { + "runtime_id": -201, + "component_based": false, + "version": 2 + }, + "minecraft:flint": { + "runtime_id": 381, + "component_based": false, + "version": 2 + }, + "minecraft:flint_and_steel": { + "runtime_id": 323, + "component_based": false, + "version": 2 + }, + "minecraft:flow_armor_trim_smithing_template": { + "runtime_id": 735, + "component_based": false, + "version": 2 + }, + "minecraft:flow_banner_pattern": { + "runtime_id": 622, + "component_based": false, + "version": 2 + }, + "minecraft:flow_pottery_sherd": { + "runtime_id": 702, + "component_based": false, + "version": 2 + }, + "minecraft:flower_banner_pattern": { + "runtime_id": 614, + "component_based": false, + "version": 2 + }, + "minecraft:flower_pot": { + "runtime_id": 548, + "component_based": true, + "version": 2 + }, + "minecraft:flowering_azalea": { + "runtime_id": -338, + "component_based": false, + "version": 2 + }, + "minecraft:flowing_lava": { + "runtime_id": 10, + "component_based": false, + "version": 2 + }, + "minecraft:flowing_water": { + "runtime_id": 8, + "component_based": false, + "version": 2 + }, + "minecraft:fox_spawn_egg": { + "runtime_id": 518, + "component_based": false, + "version": 2 + }, + "minecraft:frame": { + "runtime_id": 547, + "component_based": true, + "version": 2 + }, + "minecraft:friend_pottery_sherd": { + "runtime_id": 703, + "component_based": false, + "version": 2 + }, + "minecraft:frog_spawn": { + "runtime_id": -468, + "component_based": false, + "version": 2 + }, + "minecraft:frog_spawn_egg": { + "runtime_id": 666, + "component_based": false, + "version": 2 + }, + "minecraft:frosted_ice": { + "runtime_id": 207, + "component_based": false, + "version": 2 + }, + "minecraft:furnace": { + "runtime_id": 61, + "component_based": false, + "version": 2 + }, + "minecraft:ghast_spawn_egg": { + "runtime_id": 481, + "component_based": false, + "version": 2 + }, + "minecraft:ghast_tear": { + "runtime_id": 451, + "component_based": false, + "version": 2 + }, + "minecraft:gilded_blackstone": { + "runtime_id": -281, + "component_based": false, + "version": 2 + }, + "minecraft:glass": { + "runtime_id": 20, + "component_based": false, + "version": 2 + }, + "minecraft:glass_bottle": { + "runtime_id": 454, + "component_based": false, + "version": 2 + }, + "minecraft:glass_pane": { + "runtime_id": 102, + "component_based": false, + "version": 2 + }, + "minecraft:glistering_melon_slice": { + "runtime_id": 461, + "component_based": false, + "version": 2 + }, + "minecraft:globe_banner_pattern": { + "runtime_id": 621, + "component_based": false, + "version": 2 + }, + "minecraft:glow_berries": { + "runtime_id": 797, + "component_based": false, + "version": 0 + }, + "minecraft:glow_frame": { + "runtime_id": 661, + "component_based": true, + "version": 2 + }, + "minecraft:glow_ink_sac": { + "runtime_id": 537, + "component_based": false, + "version": 2 + }, + "minecraft:glow_lichen": { + "runtime_id": -411, + "component_based": false, + "version": 2 + }, + "minecraft:glow_squid_spawn_egg": { + "runtime_id": 532, + "component_based": false, + "version": 2 + }, + "minecraft:glow_stick": { + "runtime_id": 639, + "component_based": false, + "version": 2 + }, + "minecraft:glowingobsidian": { + "runtime_id": 246, + "component_based": false, + "version": 2 + }, + "minecraft:glowstone": { + "runtime_id": 89, + "component_based": false, + "version": 2 + }, + "minecraft:glowstone_dust": { + "runtime_id": 420, + "component_based": false, + "version": 2 + }, + "minecraft:goat_horn": { + "runtime_id": 665, + "component_based": false, + "version": 2 + }, + "minecraft:goat_spawn_egg": { + "runtime_id": 531, + "component_based": false, + "version": 2 + }, + "minecraft:gold_block": { + "runtime_id": 41, + "component_based": false, + "version": 2 + }, + "minecraft:gold_ingot": { + "runtime_id": 330, + "component_based": false, + "version": 2 + }, + "minecraft:gold_nugget": { + "runtime_id": 452, + "component_based": false, + "version": 2 + }, + "minecraft:gold_ore": { + "runtime_id": 14, + "component_based": false, + "version": 2 + }, + "minecraft:golden_apple": { + "runtime_id": 280, + "component_based": false, + "version": 0 + }, + "minecraft:golden_axe": { + "runtime_id": 350, + "component_based": false, + "version": 2 + }, + "minecraft:golden_boots": { + "runtime_id": 379, + "component_based": false, + "version": 2 + }, + "minecraft:golden_carrot": { + "runtime_id": 305, + "component_based": false, + "version": 0 + }, + "minecraft:golden_chestplate": { + "runtime_id": 377, + "component_based": false, + "version": 2 + }, + "minecraft:golden_helmet": { + "runtime_id": 376, + "component_based": false, + "version": 2 + }, + "minecraft:golden_hoe": { + "runtime_id": 358, + "component_based": false, + "version": 2 + }, + "minecraft:golden_horse_armor": { + "runtime_id": 565, + "component_based": false, + "version": 2 + }, + "minecraft:golden_leggings": { + "runtime_id": 378, + "component_based": false, + "version": 2 + }, + "minecraft:golden_pickaxe": { + "runtime_id": 349, + "component_based": false, + "version": 2 + }, + "minecraft:golden_rail": { + "runtime_id": 27, + "component_based": false, + "version": 2 + }, + "minecraft:golden_shovel": { + "runtime_id": 348, + "component_based": false, + "version": 2 + }, + "minecraft:golden_sword": { + "runtime_id": 347, + "component_based": false, + "version": 2 + }, + "minecraft:granite": { + "runtime_id": -590, + "component_based": false, + "version": 2 + }, + "minecraft:granite_double_slab": { + "runtime_id": -923, + "component_based": false, + "version": 2 + }, + "minecraft:granite_slab": { + "runtime_id": -896, + "component_based": false, + "version": 2 + }, + "minecraft:granite_stairs": { + "runtime_id": -169, + "component_based": false, + "version": 2 + }, + "minecraft:granite_wall": { + "runtime_id": -972, + "component_based": false, + "version": 2 + }, + "minecraft:grass_block": { + "runtime_id": 2, + "component_based": false, + "version": 2 + }, + "minecraft:grass_path": { + "runtime_id": 198, + "component_based": false, + "version": 2 + }, + "minecraft:gravel": { + "runtime_id": 13, + "component_based": false, + "version": 2 + }, + "minecraft:gray_bundle": { + "runtime_id": 266, + "component_based": true, + "version": 1 + }, + "minecraft:gray_candle": { + "runtime_id": -420, + "component_based": false, + "version": 2 + }, + "minecraft:gray_candle_cake": { + "runtime_id": -437, + "component_based": false, + "version": 2 + }, + "minecraft:gray_carpet": { + "runtime_id": -603, + "component_based": false, + "version": 2 + }, + "minecraft:gray_concrete": { + "runtime_id": -634, + "component_based": false, + "version": 2 + }, + "minecraft:gray_concrete_powder": { + "runtime_id": -715, + "component_based": false, + "version": 2 + }, + "minecraft:gray_dye": { + "runtime_id": 429, + "component_based": false, + "version": 2 + }, + "minecraft:gray_glazed_terracotta": { + "runtime_id": 227, + "component_based": false, + "version": 2 + }, + "minecraft:gray_shulker_box": { + "runtime_id": -619, + "component_based": false, + "version": 2 + }, + "minecraft:gray_stained_glass": { + "runtime_id": -679, + "component_based": false, + "version": 2 + }, + "minecraft:gray_stained_glass_pane": { + "runtime_id": -649, + "component_based": false, + "version": 2 + }, + "minecraft:gray_terracotta": { + "runtime_id": -730, + "component_based": false, + "version": 2 + }, + "minecraft:gray_wool": { + "runtime_id": -553, + "component_based": false, + "version": 2 + }, + "minecraft:green_bundle": { + "runtime_id": 257, + "component_based": true, + "version": 1 + }, + "minecraft:green_candle": { + "runtime_id": -426, + "component_based": false, + "version": 2 + }, + "minecraft:green_candle_cake": { + "runtime_id": -443, + "component_based": false, + "version": 2 + }, + "minecraft:green_carpet": { + "runtime_id": -609, + "component_based": false, + "version": 2 + }, + "minecraft:green_concrete": { + "runtime_id": -640, + "component_based": false, + "version": 2 + }, + "minecraft:green_concrete_powder": { + "runtime_id": -721, + "component_based": false, + "version": 2 + }, + "minecraft:green_dye": { + "runtime_id": 423, + "component_based": false, + "version": 2 + }, + "minecraft:green_glazed_terracotta": { + "runtime_id": 233, + "component_based": false, + "version": 2 + }, + "minecraft:green_shulker_box": { + "runtime_id": -625, + "component_based": false, + "version": 2 + }, + "minecraft:green_stained_glass": { + "runtime_id": -685, + "component_based": false, + "version": 2 + }, + "minecraft:green_stained_glass_pane": { + "runtime_id": -655, + "component_based": false, + "version": 2 + }, + "minecraft:green_terracotta": { + "runtime_id": -736, + "component_based": false, + "version": 2 + }, + "minecraft:green_wool": { + "runtime_id": -560, + "component_based": false, + "version": 2 + }, + "minecraft:grindstone": { + "runtime_id": -195, + "component_based": false, + "version": 2 + }, + "minecraft:guardian_spawn_egg": { + "runtime_id": 488, + "component_based": false, + "version": 2 + }, + "minecraft:gunpowder": { + "runtime_id": 353, + "component_based": false, + "version": 2 + }, + "minecraft:guster_banner_pattern": { + "runtime_id": 623, + "component_based": false, + "version": 2 + }, + "minecraft:guster_pottery_sherd": { + "runtime_id": 704, + "component_based": false, + "version": 2 + }, + "minecraft:hanging_roots": { + "runtime_id": -319, + "component_based": false, + "version": 2 + }, + "minecraft:hard_black_stained_glass": { + "runtime_id": -702, + "component_based": false, + "version": 2 + }, + "minecraft:hard_black_stained_glass_pane": { + "runtime_id": -672, + "component_based": false, + "version": 2 + }, + "minecraft:hard_blue_stained_glass": { + "runtime_id": -698, + "component_based": false, + "version": 2 + }, + "minecraft:hard_blue_stained_glass_pane": { + "runtime_id": -668, + "component_based": false, + "version": 2 + }, + "minecraft:hard_brown_stained_glass": { + "runtime_id": -699, + "component_based": false, + "version": 2 + }, + "minecraft:hard_brown_stained_glass_pane": { + "runtime_id": -669, + "component_based": false, + "version": 2 + }, + "minecraft:hard_cyan_stained_glass": { + "runtime_id": -696, + "component_based": false, + "version": 2 + }, + "minecraft:hard_cyan_stained_glass_pane": { + "runtime_id": -666, + "component_based": false, + "version": 2 + }, + "minecraft:hard_glass": { + "runtime_id": 253, + "component_based": false, + "version": 2 + }, + "minecraft:hard_glass_pane": { + "runtime_id": 190, + "component_based": false, + "version": 2 + }, + "minecraft:hard_gray_stained_glass": { + "runtime_id": -694, + "component_based": false, + "version": 2 + }, + "minecraft:hard_gray_stained_glass_pane": { + "runtime_id": -664, + "component_based": false, + "version": 2 + }, + "minecraft:hard_green_stained_glass": { + "runtime_id": -700, + "component_based": false, + "version": 2 + }, + "minecraft:hard_green_stained_glass_pane": { + "runtime_id": -670, + "component_based": false, + "version": 2 + }, + "minecraft:hard_light_blue_stained_glass": { + "runtime_id": -690, + "component_based": false, + "version": 2 + }, + "minecraft:hard_light_blue_stained_glass_pane": { + "runtime_id": -660, + "component_based": false, + "version": 2 + }, + "minecraft:hard_light_gray_stained_glass": { + "runtime_id": -695, + "component_based": false, + "version": 2 + }, + "minecraft:hard_light_gray_stained_glass_pane": { + "runtime_id": -665, + "component_based": false, + "version": 2 + }, + "minecraft:hard_lime_stained_glass": { + "runtime_id": -692, + "component_based": false, + "version": 2 + }, + "minecraft:hard_lime_stained_glass_pane": { + "runtime_id": -662, + "component_based": false, + "version": 2 + }, + "minecraft:hard_magenta_stained_glass": { + "runtime_id": -689, + "component_based": false, + "version": 2 + }, + "minecraft:hard_magenta_stained_glass_pane": { + "runtime_id": -659, + "component_based": false, + "version": 2 + }, + "minecraft:hard_orange_stained_glass": { + "runtime_id": -688, + "component_based": false, + "version": 2 + }, + "minecraft:hard_orange_stained_glass_pane": { + "runtime_id": -658, + "component_based": false, + "version": 2 + }, + "minecraft:hard_pink_stained_glass": { + "runtime_id": -693, + "component_based": false, + "version": 2 + }, + "minecraft:hard_pink_stained_glass_pane": { + "runtime_id": -663, + "component_based": false, + "version": 2 + }, + "minecraft:hard_purple_stained_glass": { + "runtime_id": -697, + "component_based": false, + "version": 2 + }, + "minecraft:hard_purple_stained_glass_pane": { + "runtime_id": -667, + "component_based": false, + "version": 2 + }, + "minecraft:hard_red_stained_glass": { + "runtime_id": -701, + "component_based": false, + "version": 2 + }, + "minecraft:hard_red_stained_glass_pane": { + "runtime_id": -671, + "component_based": false, + "version": 2 + }, + "minecraft:hard_stained_glass": { + "runtime_id": 787, + "component_based": false, + "version": 2 + }, + "minecraft:hard_stained_glass_pane": { + "runtime_id": 788, + "component_based": false, + "version": 2 + }, + "minecraft:hard_white_stained_glass": { + "runtime_id": 254, + "component_based": false, + "version": 2 + }, + "minecraft:hard_white_stained_glass_pane": { + "runtime_id": 191, + "component_based": false, + "version": 2 + }, + "minecraft:hard_yellow_stained_glass": { + "runtime_id": -691, + "component_based": false, + "version": 2 + }, + "minecraft:hard_yellow_stained_glass_pane": { + "runtime_id": -661, + "component_based": false, + "version": 2 + }, + "minecraft:hardened_clay": { + "runtime_id": 172, + "component_based": false, + "version": 2 + }, + "minecraft:hay_block": { + "runtime_id": 170, + "component_based": false, + "version": 2 + }, + "minecraft:heart_of_the_sea": { + "runtime_id": 604, + "component_based": false, + "version": 2 + }, + "minecraft:heart_pottery_sherd": { + "runtime_id": 705, + "component_based": false, + "version": 2 + }, + "minecraft:heartbreak_pottery_sherd": { + "runtime_id": 706, + "component_based": false, + "version": 2 + }, + "minecraft:heavy_core": { + "runtime_id": -316, + "component_based": false, + "version": 2 + }, + "minecraft:heavy_weighted_pressure_plate": { + "runtime_id": 148, + "component_based": false, + "version": 2 + }, + "minecraft:hoglin_spawn_egg": { + "runtime_id": 524, + "component_based": false, + "version": 2 + }, + "minecraft:honey_block": { + "runtime_id": -220, + "component_based": false, + "version": 2 + }, + "minecraft:honey_bottle": { + "runtime_id": 628, + "component_based": false, + "version": 0 + }, + "minecraft:honeycomb": { + "runtime_id": 627, + "component_based": false, + "version": 0 + }, + "minecraft:honeycomb_block": { + "runtime_id": -221, + "component_based": false, + "version": 2 + }, + "minecraft:hopper": { + "runtime_id": 560, + "component_based": true, + "version": 2 + }, + "minecraft:hopper_minecart": { + "runtime_id": 559, + "component_based": false, + "version": 2 + }, + "minecraft:horn_coral": { + "runtime_id": -584, + "component_based": false, + "version": 2 + }, + "minecraft:horn_coral_block": { + "runtime_id": -852, + "component_based": false, + "version": 2 + }, + "minecraft:horn_coral_fan": { + "runtime_id": -843, + "component_based": false, + "version": 2 + }, + "minecraft:horn_coral_wall_fan": { + "runtime_id": -137, + "component_based": false, + "version": 2 + }, + "minecraft:horse_spawn_egg": { + "runtime_id": 485, + "component_based": false, + "version": 2 + }, + "minecraft:host_armor_trim_smithing_template": { + "runtime_id": 734, + "component_based": false, + "version": 2 + }, + "minecraft:howl_pottery_sherd": { + "runtime_id": 707, + "component_based": false, + "version": 2 + }, + "minecraft:husk_spawn_egg": { + "runtime_id": 491, + "component_based": false, + "version": 2 + }, + "minecraft:ice": { + "runtime_id": 79, + "component_based": false, + "version": 2 + }, + "minecraft:ice_bomb": { + "runtime_id": 633, + "component_based": false, + "version": 2 + }, + "minecraft:infested_chiseled_stone_bricks": { + "runtime_id": -862, + "component_based": false, + "version": 2 + }, + "minecraft:infested_cobblestone": { + "runtime_id": -858, + "component_based": false, + "version": 2 + }, + "minecraft:infested_cracked_stone_bricks": { + "runtime_id": -861, + "component_based": false, + "version": 2 + }, + "minecraft:infested_deepslate": { + "runtime_id": -454, + "component_based": false, + "version": 2 + }, + "minecraft:infested_mossy_stone_bricks": { + "runtime_id": -860, + "component_based": false, + "version": 2 + }, + "minecraft:infested_stone": { + "runtime_id": 97, + "component_based": false, + "version": 2 + }, + "minecraft:infested_stone_bricks": { + "runtime_id": -859, + "component_based": false, + "version": 2 + }, + "minecraft:info_update": { + "runtime_id": 248, + "component_based": false, + "version": 2 + }, + "minecraft:info_update2": { + "runtime_id": 249, + "component_based": false, + "version": 2 + }, + "minecraft:ink_sac": { + "runtime_id": 439, + "component_based": false, + "version": 2 + }, + "minecraft:invisible_bedrock": { + "runtime_id": 95, + "component_based": false, + "version": 2 + }, + "minecraft:iron_axe": { + "runtime_id": 322, + "component_based": false, + "version": 2 + }, + "minecraft:iron_bars": { + "runtime_id": 101, + "component_based": false, + "version": 2 + }, + "minecraft:iron_block": { + "runtime_id": 42, + "component_based": false, + "version": 2 + }, + "minecraft:iron_boots": { + "runtime_id": 371, + "component_based": false, + "version": 2 + }, + "minecraft:iron_chestplate": { + "runtime_id": 369, + "component_based": false, + "version": 2 + }, + "minecraft:iron_door": { + "runtime_id": 397, + "component_based": false, + "version": 2 + }, + "minecraft:iron_golem_spawn_egg": { + "runtime_id": 533, + "component_based": false, + "version": 2 + }, + "minecraft:iron_helmet": { + "runtime_id": 368, + "component_based": false, + "version": 2 + }, + "minecraft:iron_hoe": { + "runtime_id": 356, + "component_based": false, + "version": 2 + }, + "minecraft:iron_horse_armor": { + "runtime_id": 564, + "component_based": false, + "version": 2 + }, + "minecraft:iron_ingot": { + "runtime_id": 329, + "component_based": false, + "version": 2 + }, + "minecraft:iron_leggings": { + "runtime_id": 370, + "component_based": false, + "version": 2 + }, + "minecraft:iron_nugget": { + "runtime_id": 602, + "component_based": false, + "version": 2 + }, + "minecraft:iron_ore": { + "runtime_id": 15, + "component_based": false, + "version": 2 + }, + "minecraft:iron_pickaxe": { + "runtime_id": 321, + "component_based": false, + "version": 2 + }, + "minecraft:iron_shovel": { + "runtime_id": 320, + "component_based": false, + "version": 2 + }, + "minecraft:iron_sword": { + "runtime_id": 331, + "component_based": false, + "version": 2 + }, + "minecraft:iron_trapdoor": { + "runtime_id": 167, + "component_based": false, + "version": 2 + }, + "minecraft:item.acacia_door": { + "runtime_id": 196, + "component_based": false, + "version": 2 + }, + "minecraft:item.bed": { + "runtime_id": 26, + "component_based": false, + "version": 2 + }, + "minecraft:item.beetroot": { + "runtime_id": 244, + "component_based": false, + "version": 2 + }, + "minecraft:item.birch_door": { + "runtime_id": 194, + "component_based": false, + "version": 2 + }, + "minecraft:item.brewing_stand": { + "runtime_id": 117, + "component_based": false, + "version": 2 + }, + "minecraft:item.cake": { + "runtime_id": 92, + "component_based": false, + "version": 2 + }, + "minecraft:item.camera": { + "runtime_id": 242, + "component_based": false, + "version": 2 + }, + "minecraft:item.campfire": { + "runtime_id": -209, + "component_based": false, + "version": 2 + }, + "minecraft:item.cauldron": { + "runtime_id": 118, + "component_based": false, + "version": 2 + }, + "minecraft:item.chain": { + "runtime_id": -286, + "component_based": false, + "version": 2 + }, + "minecraft:item.crimson_door": { + "runtime_id": -244, + "component_based": false, + "version": 2 + }, + "minecraft:item.dark_oak_door": { + "runtime_id": 197, + "component_based": false, + "version": 2 + }, + "minecraft:item.flower_pot": { + "runtime_id": 140, + "component_based": false, + "version": 2 + }, + "minecraft:item.frame": { + "runtime_id": 199, + "component_based": false, + "version": 2 + }, + "minecraft:item.glow_frame": { + "runtime_id": -339, + "component_based": false, + "version": 2 + }, + "minecraft:item.hopper": { + "runtime_id": 154, + "component_based": false, + "version": 2 + }, + "minecraft:item.iron_door": { + "runtime_id": 71, + "component_based": false, + "version": 2 + }, + "minecraft:item.jungle_door": { + "runtime_id": 195, + "component_based": false, + "version": 2 + }, + "minecraft:item.kelp": { + "runtime_id": -138, + "component_based": false, + "version": 2 + }, + "minecraft:item.mangrove_door": { + "runtime_id": -493, + "component_based": false, + "version": 2 + }, + "minecraft:item.nether_sprouts": { + "runtime_id": -238, + "component_based": false, + "version": 2 + }, + "minecraft:item.nether_wart": { + "runtime_id": 115, + "component_based": false, + "version": 2 + }, + "minecraft:item.reeds": { + "runtime_id": 83, + "component_based": false, + "version": 2 + }, + "minecraft:item.soul_campfire": { + "runtime_id": -290, + "component_based": false, + "version": 2 + }, + "minecraft:item.spruce_door": { + "runtime_id": 193, + "component_based": false, + "version": 2 + }, + "minecraft:item.warped_door": { + "runtime_id": -245, + "component_based": false, + "version": 2 + }, + "minecraft:item.wheat": { + "runtime_id": 59, + "component_based": false, + "version": 2 + }, + "minecraft:item.wooden_door": { + "runtime_id": 64, + "component_based": false, + "version": 2 + }, + "minecraft:jigsaw": { + "runtime_id": -211, + "component_based": false, + "version": 2 + }, + "minecraft:jukebox": { + "runtime_id": 84, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_boat": { + "runtime_id": 403, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_button": { + "runtime_id": -143, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_chest_boat": { + "runtime_id": 678, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_door": { + "runtime_id": 588, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_double_slab": { + "runtime_id": -811, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_fence": { + "runtime_id": -578, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_fence_gate": { + "runtime_id": 185, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_hanging_sign": { + "runtime_id": -503, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_leaves": { + "runtime_id": -802, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_log": { + "runtime_id": -571, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_planks": { + "runtime_id": -741, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_pressure_plate": { + "runtime_id": -153, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_sapling": { + "runtime_id": -827, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_sign": { + "runtime_id": 611, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_slab": { + "runtime_id": -806, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_stairs": { + "runtime_id": 136, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_standing_sign": { + "runtime_id": -188, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_trapdoor": { + "runtime_id": -148, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_wall_sign": { + "runtime_id": -189, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_wood": { + "runtime_id": -816, + "component_based": false, + "version": 2 + }, + "minecraft:kelp": { + "runtime_id": 408, + "component_based": true, + "version": 2 + }, + "minecraft:lab_table": { + "runtime_id": -988, + "component_based": false, + "version": 2 + }, + "minecraft:ladder": { + "runtime_id": 65, + "component_based": false, + "version": 2 + }, + "minecraft:lantern": { + "runtime_id": -208, + "component_based": false, + "version": 2 + }, + "minecraft:lapis_block": { + "runtime_id": 22, + "component_based": false, + "version": 2 + }, + "minecraft:lapis_lazuli": { + "runtime_id": 440, + "component_based": false, + "version": 2 + }, + "minecraft:lapis_ore": { + "runtime_id": 21, + "component_based": false, + "version": 2 + }, + "minecraft:large_amethyst_bud": { + "runtime_id": -330, + "component_based": false, + "version": 2 + }, + "minecraft:large_fern": { + "runtime_id": -865, + "component_based": false, + "version": 2 + }, + "minecraft:lava": { + "runtime_id": 11, + "component_based": false, + "version": 2 + }, + "minecraft:lava_bucket": { + "runtime_id": 388, + "component_based": false, + "version": 2 + }, + "minecraft:lead": { + "runtime_id": 580, + "component_based": false, + "version": 2 + }, + "minecraft:leather": { + "runtime_id": 407, + "component_based": false, + "version": 2 + }, + "minecraft:leather_boots": { + "runtime_id": 363, + "component_based": false, + "version": 2 + }, + "minecraft:leather_chestplate": { + "runtime_id": 361, + "component_based": false, + "version": 2 + }, + "minecraft:leather_helmet": { + "runtime_id": 360, + "component_based": false, + "version": 2 + }, + "minecraft:leather_horse_armor": { + "runtime_id": 563, + "component_based": false, + "version": 2 + }, + "minecraft:leather_leggings": { + "runtime_id": 362, + "component_based": false, + "version": 2 + }, + "minecraft:leaves": { + "runtime_id": 767, + "component_based": false, + "version": 2 + }, + "minecraft:leaves2": { + "runtime_id": 768, + "component_based": false, + "version": 2 + }, + "minecraft:lectern": { + "runtime_id": -194, + "component_based": false, + "version": 2 + }, + "minecraft:lever": { + "runtime_id": 69, + "component_based": false, + "version": 2 + }, + "minecraft:light_block": { + "runtime_id": 791, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_0": { + "runtime_id": -215, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_1": { + "runtime_id": -929, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_10": { + "runtime_id": -938, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_11": { + "runtime_id": -939, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_12": { + "runtime_id": -940, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_13": { + "runtime_id": -941, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_14": { + "runtime_id": -942, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_15": { + "runtime_id": -943, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_2": { + "runtime_id": -930, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_3": { + "runtime_id": -931, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_4": { + "runtime_id": -932, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_5": { + "runtime_id": -933, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_6": { + "runtime_id": -934, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_7": { + "runtime_id": -935, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_8": { + "runtime_id": -936, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_9": { + "runtime_id": -937, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_bundle": { + "runtime_id": 272, + "component_based": true, + "version": 1 + }, + "minecraft:light_blue_candle": { + "runtime_id": -416, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_candle_cake": { + "runtime_id": -433, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_carpet": { + "runtime_id": -599, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_concrete": { + "runtime_id": -630, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_concrete_powder": { + "runtime_id": -711, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_dye": { + "runtime_id": 433, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_glazed_terracotta": { + "runtime_id": 223, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_shulker_box": { + "runtime_id": -615, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_stained_glass": { + "runtime_id": -675, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_stained_glass_pane": { + "runtime_id": -645, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_terracotta": { + "runtime_id": -726, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_wool": { + "runtime_id": -562, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_bundle": { + "runtime_id": 273, + "component_based": true, + "version": 1 + }, + "minecraft:light_gray_candle": { + "runtime_id": -421, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_candle_cake": { + "runtime_id": -438, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_carpet": { + "runtime_id": -604, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_concrete": { + "runtime_id": -635, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_concrete_powder": { + "runtime_id": -716, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_dye": { + "runtime_id": 428, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_shulker_box": { + "runtime_id": -620, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_stained_glass": { + "runtime_id": -680, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_stained_glass_pane": { + "runtime_id": -650, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_terracotta": { + "runtime_id": -731, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_wool": { + "runtime_id": -552, + "component_based": false, + "version": 2 + }, + "minecraft:light_weighted_pressure_plate": { + "runtime_id": 147, + "component_based": false, + "version": 2 + }, + "minecraft:lightning_rod": { + "runtime_id": -312, + "component_based": false, + "version": 2 + }, + "minecraft:lilac": { + "runtime_id": -863, + "component_based": false, + "version": 2 + }, + "minecraft:lily_of_the_valley": { + "runtime_id": -839, + "component_based": false, + "version": 2 + }, + "minecraft:lime_bundle": { + "runtime_id": 268, + "component_based": true, + "version": 1 + }, + "minecraft:lime_candle": { + "runtime_id": -418, + "component_based": false, + "version": 2 + }, + "minecraft:lime_candle_cake": { + "runtime_id": -435, + "component_based": false, + "version": 2 + }, + "minecraft:lime_carpet": { + "runtime_id": -601, + "component_based": false, + "version": 2 + }, + "minecraft:lime_concrete": { + "runtime_id": -632, + "component_based": false, + "version": 2 + }, + "minecraft:lime_concrete_powder": { + "runtime_id": -713, + "component_based": false, + "version": 2 + }, + "minecraft:lime_dye": { + "runtime_id": 431, + "component_based": false, + "version": 2 + }, + "minecraft:lime_glazed_terracotta": { + "runtime_id": 225, + "component_based": false, + "version": 2 + }, + "minecraft:lime_shulker_box": { + "runtime_id": -617, + "component_based": false, + "version": 2 + }, + "minecraft:lime_stained_glass": { + "runtime_id": -677, + "component_based": false, + "version": 2 + }, + "minecraft:lime_stained_glass_pane": { + "runtime_id": -647, + "component_based": false, + "version": 2 + }, + "minecraft:lime_terracotta": { + "runtime_id": -728, + "component_based": false, + "version": 2 + }, + "minecraft:lime_wool": { + "runtime_id": -559, + "component_based": false, + "version": 2 + }, + "minecraft:lingering_potion": { + "runtime_id": 595, + "component_based": false, + "version": 2 + }, + "minecraft:lit_blast_furnace": { + "runtime_id": -214, + "component_based": false, + "version": 2 + }, + "minecraft:lit_deepslate_redstone_ore": { + "runtime_id": -404, + "component_based": false, + "version": 2 + }, + "minecraft:lit_furnace": { + "runtime_id": 62, + "component_based": false, + "version": 2 + }, + "minecraft:lit_pumpkin": { + "runtime_id": 91, + "component_based": false, + "version": 2 + }, + "minecraft:lit_redstone_lamp": { + "runtime_id": 124, + "component_based": false, + "version": 2 + }, + "minecraft:lit_redstone_ore": { + "runtime_id": 74, + "component_based": false, + "version": 2 + }, + "minecraft:lit_smoker": { + "runtime_id": -199, + "component_based": false, + "version": 2 + }, + "minecraft:llama_spawn_egg": { + "runtime_id": 501, + "component_based": false, + "version": 2 + }, + "minecraft:lodestone": { + "runtime_id": -222, + "component_based": false, + "version": 2 + }, + "minecraft:lodestone_compass": { + "runtime_id": 640, + "component_based": false, + "version": 2 + }, + "minecraft:log": { + "runtime_id": 752, + "component_based": false, + "version": 2 + }, + "minecraft:log2": { + "runtime_id": 775, + "component_based": false, + "version": 2 + }, + "minecraft:loom": { + "runtime_id": -204, + "component_based": false, + "version": 2 + }, + "minecraft:mace": { + "runtime_id": 344, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_bundle": { + "runtime_id": 261, + "component_based": true, + "version": 1 + }, + "minecraft:magenta_candle": { + "runtime_id": -415, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_candle_cake": { + "runtime_id": -432, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_carpet": { + "runtime_id": -598, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_concrete": { + "runtime_id": -629, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_concrete_powder": { + "runtime_id": -710, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_dye": { + "runtime_id": 434, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_glazed_terracotta": { + "runtime_id": 222, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_shulker_box": { + "runtime_id": -614, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_stained_glass": { + "runtime_id": -674, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_stained_glass_pane": { + "runtime_id": -644, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_terracotta": { + "runtime_id": -725, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_wool": { + "runtime_id": -565, + "component_based": false, + "version": 2 + }, + "minecraft:magma": { + "runtime_id": 213, + "component_based": false, + "version": 2 + }, + "minecraft:magma_cream": { + "runtime_id": 457, + "component_based": false, + "version": 2 + }, + "minecraft:magma_cube_spawn_egg": { + "runtime_id": 482, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_boat": { + "runtime_id": 673, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_button": { + "runtime_id": -487, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_chest_boat": { + "runtime_id": 682, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_door": { + "runtime_id": 671, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_double_slab": { + "runtime_id": -499, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_fence": { + "runtime_id": -491, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_fence_gate": { + "runtime_id": -492, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_hanging_sign": { + "runtime_id": -508, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_leaves": { + "runtime_id": -472, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_log": { + "runtime_id": -484, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_planks": { + "runtime_id": -486, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_pressure_plate": { + "runtime_id": -490, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_propagule": { + "runtime_id": -474, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_roots": { + "runtime_id": -482, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_sign": { + "runtime_id": 672, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_slab": { + "runtime_id": -489, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_stairs": { + "runtime_id": -488, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_standing_sign": { + "runtime_id": -494, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_trapdoor": { + "runtime_id": -496, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_wall_sign": { + "runtime_id": -495, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_wood": { + "runtime_id": -497, + "component_based": false, + "version": 2 + }, + "minecraft:material_reducer": { + "runtime_id": -986, + "component_based": false, + "version": 2 + }, + "minecraft:medicine": { + "runtime_id": 637, + "component_based": false, + "version": 2 + }, + "minecraft:medium_amethyst_bud": { + "runtime_id": -331, + "component_based": false, + "version": 2 + }, + "minecraft:melon_block": { + "runtime_id": 103, + "component_based": false, + "version": 2 + }, + "minecraft:melon_seeds": { + "runtime_id": 315, + "component_based": false, + "version": 0 + }, + "minecraft:melon_slice": { + "runtime_id": 294, + "component_based": false, + "version": 0 + }, + "minecraft:melon_stem": { + "runtime_id": 105, + "component_based": false, + "version": 2 + }, + "minecraft:milk_bucket": { + "runtime_id": 386, + "component_based": false, + "version": 2 + }, + "minecraft:minecart": { + "runtime_id": 395, + "component_based": false, + "version": 2 + }, + "minecraft:miner_pottery_sherd": { + "runtime_id": 708, + "component_based": false, + "version": 2 + }, + "minecraft:mob_spawner": { + "runtime_id": 52, + "component_based": false, + "version": 2 + }, + "minecraft:mojang_banner_pattern": { + "runtime_id": 617, + "component_based": false, + "version": 2 + }, + "minecraft:monster_egg": { + "runtime_id": 776, + "component_based": false, + "version": 2 + }, + "minecraft:mooshroom_spawn_egg": { + "runtime_id": 467, + "component_based": false, + "version": 2 + }, + "minecraft:moss_block": { + "runtime_id": -320, + "component_based": false, + "version": 2 + }, + "minecraft:moss_carpet": { + "runtime_id": -335, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_cobblestone": { + "runtime_id": 48, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_cobblestone_double_slab": { + "runtime_id": -915, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_cobblestone_slab": { + "runtime_id": -888, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_cobblestone_stairs": { + "runtime_id": -179, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_cobblestone_wall": { + "runtime_id": -971, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_stone_brick_double_slab": { + "runtime_id": -168, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_stone_brick_slab": { + "runtime_id": -166, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_stone_brick_stairs": { + "runtime_id": -175, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_stone_brick_wall": { + "runtime_id": -978, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_stone_bricks": { + "runtime_id": -868, + "component_based": false, + "version": 2 + }, + "minecraft:mourner_pottery_sherd": { + "runtime_id": 709, + "component_based": false, + "version": 2 + }, + "minecraft:moving_block": { + "runtime_id": 250, + "component_based": false, + "version": 2 + }, + "minecraft:mud": { + "runtime_id": -473, + "component_based": false, + "version": 2 + }, + "minecraft:mud_brick_double_slab": { + "runtime_id": -479, + "component_based": false, + "version": 2 + }, + "minecraft:mud_brick_slab": { + "runtime_id": -478, + "component_based": false, + "version": 2 + }, + "minecraft:mud_brick_stairs": { + "runtime_id": -480, + "component_based": false, + "version": 2 + }, + "minecraft:mud_brick_wall": { + "runtime_id": -481, + "component_based": false, + "version": 2 + }, + "minecraft:mud_bricks": { + "runtime_id": -475, + "component_based": false, + "version": 2 + }, + "minecraft:muddy_mangrove_roots": { + "runtime_id": -483, + "component_based": false, + "version": 2 + }, + "minecraft:mule_spawn_egg": { + "runtime_id": 494, + "component_based": false, + "version": 2 + }, + "minecraft:mushroom_stem": { + "runtime_id": -1008, + "component_based": false, + "version": 2 + }, + "minecraft:mushroom_stew": { + "runtime_id": 282, + "component_based": false, + "version": 0 + }, + "minecraft:music_disc_11": { + "runtime_id": 577, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_13": { + "runtime_id": 567, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_5": { + "runtime_id": 674, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_blocks": { + "runtime_id": 569, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_cat": { + "runtime_id": 568, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_chirp": { + "runtime_id": 570, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_creator": { + "runtime_id": 783, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_creator_music_box": { + "runtime_id": 784, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_far": { + "runtime_id": 571, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_mall": { + "runtime_id": 572, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_mellohi": { + "runtime_id": 573, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_otherside": { + "runtime_id": 664, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_pigstep": { + "runtime_id": 658, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_precipice": { + "runtime_id": 785, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_relic": { + "runtime_id": 737, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_stal": { + "runtime_id": 574, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_strad": { + "runtime_id": 575, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_wait": { + "runtime_id": 578, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_ward": { + "runtime_id": 576, + "component_based": true, + "version": 2 + }, + "minecraft:mutton": { + "runtime_id": 583, + "component_based": false, + "version": 0 + }, + "minecraft:mycelium": { + "runtime_id": 110, + "component_based": false, + "version": 2 + }, + "minecraft:name_tag": { + "runtime_id": 581, + "component_based": false, + "version": 2 + }, + "minecraft:nautilus_shell": { + "runtime_id": 603, + "component_based": false, + "version": 2 + }, + "minecraft:nether_brick": { + "runtime_id": 112, + "component_based": false, + "version": 2 + }, + "minecraft:nether_brick_double_slab": { + "runtime_id": -883, + "component_based": false, + "version": 2 + }, + "minecraft:nether_brick_fence": { + "runtime_id": 113, + "component_based": false, + "version": 2 + }, + "minecraft:nether_brick_slab": { + "runtime_id": -877, + "component_based": false, + "version": 2 + }, + "minecraft:nether_brick_stairs": { + "runtime_id": 114, + "component_based": false, + "version": 2 + }, + "minecraft:nether_brick_wall": { + "runtime_id": -979, + "component_based": false, + "version": 2 + }, + "minecraft:nether_gold_ore": { + "runtime_id": -288, + "component_based": false, + "version": 2 + }, + "minecraft:nether_sprouts": { + "runtime_id": 659, + "component_based": true, + "version": 2 + }, + "minecraft:nether_star": { + "runtime_id": 551, + "component_based": false, + "version": 2 + }, + "minecraft:nether_wart": { + "runtime_id": 316, + "component_based": false, + "version": 0 + }, + "minecraft:nether_wart_block": { + "runtime_id": 214, + "component_based": false, + "version": 2 + }, + "minecraft:netherbrick": { + "runtime_id": 556, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_axe": { + "runtime_id": 644, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_block": { + "runtime_id": -270, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_boots": { + "runtime_id": 650, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_chestplate": { + "runtime_id": 648, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_helmet": { + "runtime_id": 647, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_hoe": { + "runtime_id": 645, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_ingot": { + "runtime_id": 646, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_leggings": { + "runtime_id": 649, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_pickaxe": { + "runtime_id": 643, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_scrap": { + "runtime_id": 651, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_shovel": { + "runtime_id": 642, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_sword": { + "runtime_id": 641, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_upgrade_smithing_template": { + "runtime_id": 718, + "component_based": false, + "version": 2 + }, + "minecraft:netherrack": { + "runtime_id": 87, + "component_based": false, + "version": 2 + }, + "minecraft:netherreactor": { + "runtime_id": 247, + "component_based": false, + "version": 2 + }, + "minecraft:normal_stone_double_slab": { + "runtime_id": -926, + "component_based": false, + "version": 2 + }, + "minecraft:normal_stone_slab": { + "runtime_id": -899, + "component_based": false, + "version": 2 + }, + "minecraft:normal_stone_stairs": { + "runtime_id": -180, + "component_based": false, + "version": 2 + }, + "minecraft:noteblock": { + "runtime_id": 25, + "component_based": false, + "version": 2 + }, + "minecraft:npc_spawn_egg": { + "runtime_id": 498, + "component_based": false, + "version": 2 + }, + "minecraft:oak_boat": { + "runtime_id": 401, + "component_based": false, + "version": 2 + }, + "minecraft:oak_chest_boat": { + "runtime_id": 676, + "component_based": false, + "version": 2 + }, + "minecraft:oak_double_slab": { + "runtime_id": 157, + "component_based": false, + "version": 2 + }, + "minecraft:oak_fence": { + "runtime_id": 85, + "component_based": false, + "version": 2 + }, + "minecraft:oak_hanging_sign": { + "runtime_id": -500, + "component_based": false, + "version": 2 + }, + "minecraft:oak_leaves": { + "runtime_id": 18, + "component_based": false, + "version": 2 + }, + "minecraft:oak_log": { + "runtime_id": 17, + "component_based": false, + "version": 2 + }, + "minecraft:oak_planks": { + "runtime_id": 5, + "component_based": false, + "version": 2 + }, + "minecraft:oak_sapling": { + "runtime_id": 6, + "component_based": false, + "version": 2 + }, + "minecraft:oak_sign": { + "runtime_id": 383, + "component_based": false, + "version": 2 + }, + "minecraft:oak_slab": { + "runtime_id": 158, + "component_based": false, + "version": 2 + }, + "minecraft:oak_stairs": { + "runtime_id": 53, + "component_based": false, + "version": 2 + }, + "minecraft:oak_wood": { + "runtime_id": -212, + "component_based": false, + "version": 2 + }, + "minecraft:observer": { + "runtime_id": 251, + "component_based": false, + "version": 2 + }, + "minecraft:obsidian": { + "runtime_id": 49, + "component_based": false, + "version": 2 + }, + "minecraft:ocelot_spawn_egg": { + "runtime_id": 478, + "component_based": false, + "version": 2 + }, + "minecraft:ochre_froglight": { + "runtime_id": -471, + "component_based": false, + "version": 2 + }, + "minecraft:ominous_bottle": { + "runtime_id": 629, + "component_based": false, + "version": 2 + }, + "minecraft:ominous_trial_key": { + "runtime_id": 276, + "component_based": true, + "version": 1 + }, + "minecraft:open_eyeblossom": { + "runtime_id": -1018, + "component_based": false, + "version": 2 + }, + "minecraft:orange_bundle": { + "runtime_id": 267, + "component_based": true, + "version": 1 + }, + "minecraft:orange_candle": { + "runtime_id": -414, + "component_based": false, + "version": 2 + }, + "minecraft:orange_candle_cake": { + "runtime_id": -431, + "component_based": false, + "version": 2 + }, + "minecraft:orange_carpet": { + "runtime_id": -597, + "component_based": false, + "version": 2 + }, + "minecraft:orange_concrete": { + "runtime_id": -628, + "component_based": false, + "version": 2 + }, + "minecraft:orange_concrete_powder": { + "runtime_id": -709, + "component_based": false, + "version": 2 + }, + "minecraft:orange_dye": { + "runtime_id": 435, + "component_based": false, + "version": 2 + }, + "minecraft:orange_glazed_terracotta": { + "runtime_id": 221, + "component_based": false, + "version": 2 + }, + "minecraft:orange_shulker_box": { + "runtime_id": -613, + "component_based": false, + "version": 2 + }, + "minecraft:orange_stained_glass": { + "runtime_id": -673, + "component_based": false, + "version": 2 + }, + "minecraft:orange_stained_glass_pane": { + "runtime_id": -643, + "component_based": false, + "version": 2 + }, + "minecraft:orange_terracotta": { + "runtime_id": -724, + "component_based": false, + "version": 2 + }, + "minecraft:orange_tulip": { + "runtime_id": -834, + "component_based": false, + "version": 2 + }, + "minecraft:orange_wool": { + "runtime_id": -557, + "component_based": false, + "version": 2 + }, + "minecraft:oxeye_daisy": { + "runtime_id": -837, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_chiseled_copper": { + "runtime_id": -763, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_copper": { + "runtime_id": -343, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_copper_bulb": { + "runtime_id": -779, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_copper_door": { + "runtime_id": -787, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_copper_grate": { + "runtime_id": -771, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_copper_trapdoor": { + "runtime_id": -795, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_cut_copper": { + "runtime_id": -350, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_cut_copper_slab": { + "runtime_id": -364, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_cut_copper_stairs": { + "runtime_id": -357, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_double_cut_copper_slab": { + "runtime_id": -371, + "component_based": false, + "version": 2 + }, + "minecraft:packed_ice": { + "runtime_id": 174, + "component_based": false, + "version": 2 + }, + "minecraft:packed_mud": { + "runtime_id": -477, + "component_based": false, + "version": 2 + }, + "minecraft:painting": { + "runtime_id": 382, + "component_based": false, + "version": 2 + }, + "minecraft:pale_hanging_moss": { + "runtime_id": -1011, + "component_based": false, + "version": 2 + }, + "minecraft:pale_moss_block": { + "runtime_id": -1009, + "component_based": false, + "version": 2 + }, + "minecraft:pale_moss_carpet": { + "runtime_id": -1010, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_boat": { + "runtime_id": 745, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_button": { + "runtime_id": -989, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_chest_boat": { + "runtime_id": 746, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_door": { + "runtime_id": -990, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_double_slab": { + "runtime_id": -999, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_fence": { + "runtime_id": -991, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_fence_gate": { + "runtime_id": -992, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_hanging_sign": { + "runtime_id": -993, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_leaves": { + "runtime_id": -1007, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_log": { + "runtime_id": -995, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_planks": { + "runtime_id": -996, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_pressure_plate": { + "runtime_id": -997, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_sapling": { + "runtime_id": -1006, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_sign": { + "runtime_id": 747, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_slab": { + "runtime_id": -998, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_stairs": { + "runtime_id": -1000, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_standing_sign": { + "runtime_id": -1001, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_trapdoor": { + "runtime_id": -1002, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_wall_sign": { + "runtime_id": -1003, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_wood": { + "runtime_id": -1005, + "component_based": false, + "version": 2 + }, + "minecraft:panda_spawn_egg": { + "runtime_id": 517, + "component_based": false, + "version": 2 + }, + "minecraft:paper": { + "runtime_id": 412, + "component_based": false, + "version": 2 + }, + "minecraft:parrot_spawn_egg": { + "runtime_id": 506, + "component_based": false, + "version": 2 + }, + "minecraft:pearlescent_froglight": { + "runtime_id": -469, + "component_based": false, + "version": 2 + }, + "minecraft:peony": { + "runtime_id": -867, + "component_based": false, + "version": 2 + }, + "minecraft:petrified_oak_double_slab": { + "runtime_id": -903, + "component_based": false, + "version": 2 + }, + "minecraft:petrified_oak_slab": { + "runtime_id": -902, + "component_based": false, + "version": 2 + }, + "minecraft:phantom_membrane": { + "runtime_id": 607, + "component_based": false, + "version": 2 + }, + "minecraft:phantom_spawn_egg": { + "runtime_id": 514, + "component_based": false, + "version": 2 + }, + "minecraft:pig_spawn_egg": { + "runtime_id": 464, + "component_based": false, + "version": 2 + }, + "minecraft:piglin_banner_pattern": { + "runtime_id": 620, + "component_based": false, + "version": 2 + }, + "minecraft:piglin_brute_spawn_egg": { + "runtime_id": 527, + "component_based": false, + "version": 2 + }, + "minecraft:piglin_head": { + "runtime_id": -970, + "component_based": false, + "version": 2 + }, + "minecraft:piglin_spawn_egg": { + "runtime_id": 525, + "component_based": false, + "version": 2 + }, + "minecraft:pillager_spawn_egg": { + "runtime_id": 519, + "component_based": false, + "version": 2 + }, + "minecraft:pink_bundle": { + "runtime_id": 270, + "component_based": true, + "version": 1 + }, + "minecraft:pink_candle": { + "runtime_id": -419, + "component_based": false, + "version": 2 + }, + "minecraft:pink_candle_cake": { + "runtime_id": -436, + "component_based": false, + "version": 2 + }, + "minecraft:pink_carpet": { + "runtime_id": -602, + "component_based": false, + "version": 2 + }, + "minecraft:pink_concrete": { + "runtime_id": -633, + "component_based": false, + "version": 2 + }, + "minecraft:pink_concrete_powder": { + "runtime_id": -714, + "component_based": false, + "version": 2 + }, + "minecraft:pink_dye": { + "runtime_id": 430, + "component_based": false, + "version": 2 + }, + "minecraft:pink_glazed_terracotta": { + "runtime_id": 226, + "component_based": false, + "version": 2 + }, + "minecraft:pink_petals": { + "runtime_id": -549, + "component_based": false, + "version": 2 + }, + "minecraft:pink_shulker_box": { + "runtime_id": -618, + "component_based": false, + "version": 2 + }, + "minecraft:pink_stained_glass": { + "runtime_id": -678, + "component_based": false, + "version": 2 + }, + "minecraft:pink_stained_glass_pane": { + "runtime_id": -648, + "component_based": false, + "version": 2 + }, + "minecraft:pink_terracotta": { + "runtime_id": -729, + "component_based": false, + "version": 2 + }, + "minecraft:pink_tulip": { + "runtime_id": -836, + "component_based": false, + "version": 2 + }, + "minecraft:pink_wool": { + "runtime_id": -566, + "component_based": false, + "version": 2 + }, + "minecraft:piston": { + "runtime_id": 33, + "component_based": false, + "version": 2 + }, + "minecraft:piston_arm_collision": { + "runtime_id": 34, + "component_based": false, + "version": 2 + }, + "minecraft:pitcher_crop": { + "runtime_id": -574, + "component_based": false, + "version": 2 + }, + "minecraft:pitcher_plant": { + "runtime_id": -612, + "component_based": false, + "version": 2 + }, + "minecraft:pitcher_pod": { + "runtime_id": 319, + "component_based": false, + "version": 0 + }, + "minecraft:planks": { + "runtime_id": 772, + "component_based": false, + "version": 2 + }, + "minecraft:player_head": { + "runtime_id": -967, + "component_based": false, + "version": 2 + }, + "minecraft:plenty_pottery_sherd": { + "runtime_id": 710, + "component_based": false, + "version": 2 + }, + "minecraft:podzol": { + "runtime_id": 243, + "component_based": false, + "version": 2 + }, + "minecraft:pointed_dripstone": { + "runtime_id": -308, + "component_based": false, + "version": 2 + }, + "minecraft:poisonous_potato": { + "runtime_id": 304, + "component_based": false, + "version": 0 + }, + "minecraft:polar_bear_spawn_egg": { + "runtime_id": 500, + "component_based": false, + "version": 2 + }, + "minecraft:polished_andesite": { + "runtime_id": -595, + "component_based": false, + "version": 2 + }, + "minecraft:polished_andesite_double_slab": { + "runtime_id": -919, + "component_based": false, + "version": 2 + }, + "minecraft:polished_andesite_slab": { + "runtime_id": -892, + "component_based": false, + "version": 2 + }, + "minecraft:polished_andesite_stairs": { + "runtime_id": -174, + "component_based": false, + "version": 2 + }, + "minecraft:polished_basalt": { + "runtime_id": -235, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone": { + "runtime_id": -291, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_brick_double_slab": { + "runtime_id": -285, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_brick_slab": { + "runtime_id": -284, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_brick_stairs": { + "runtime_id": -275, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_brick_wall": { + "runtime_id": -278, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_bricks": { + "runtime_id": -274, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_button": { + "runtime_id": -296, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_double_slab": { + "runtime_id": -294, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_pressure_plate": { + "runtime_id": -295, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_slab": { + "runtime_id": -293, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_stairs": { + "runtime_id": -292, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_wall": { + "runtime_id": -297, + "component_based": false, + "version": 2 + }, + "minecraft:polished_deepslate": { + "runtime_id": -383, + "component_based": false, + "version": 2 + }, + "minecraft:polished_deepslate_double_slab": { + "runtime_id": -397, + "component_based": false, + "version": 2 + }, + "minecraft:polished_deepslate_slab": { + "runtime_id": -384, + "component_based": false, + "version": 2 + }, + "minecraft:polished_deepslate_stairs": { + "runtime_id": -385, + "component_based": false, + "version": 2 + }, + "minecraft:polished_deepslate_wall": { + "runtime_id": -386, + "component_based": false, + "version": 2 + }, + "minecraft:polished_diorite": { + "runtime_id": -593, + "component_based": false, + "version": 2 + }, + "minecraft:polished_diorite_double_slab": { + "runtime_id": -922, + "component_based": false, + "version": 2 + }, + "minecraft:polished_diorite_slab": { + "runtime_id": -895, + "component_based": false, + "version": 2 + }, + "minecraft:polished_diorite_stairs": { + "runtime_id": -173, + "component_based": false, + "version": 2 + }, + "minecraft:polished_granite": { + "runtime_id": -591, + "component_based": false, + "version": 2 + }, + "minecraft:polished_granite_double_slab": { + "runtime_id": -924, + "component_based": false, + "version": 2 + }, + "minecraft:polished_granite_slab": { + "runtime_id": -897, + "component_based": false, + "version": 2 + }, + "minecraft:polished_granite_stairs": { + "runtime_id": -172, + "component_based": false, + "version": 2 + }, + "minecraft:polished_tuff": { + "runtime_id": -748, + "component_based": false, + "version": 2 + }, + "minecraft:polished_tuff_double_slab": { + "runtime_id": -750, + "component_based": false, + "version": 2 + }, + "minecraft:polished_tuff_slab": { + "runtime_id": -749, + "component_based": false, + "version": 2 + }, + "minecraft:polished_tuff_stairs": { + "runtime_id": -751, + "component_based": false, + "version": 2 + }, + "minecraft:polished_tuff_wall": { + "runtime_id": -752, + "component_based": false, + "version": 2 + }, + "minecraft:popped_chorus_fruit": { + "runtime_id": 592, + "component_based": false, + "version": 2 + }, + "minecraft:poppy": { + "runtime_id": 38, + "component_based": false, + "version": 2 + }, + "minecraft:porkchop": { + "runtime_id": 284, + "component_based": false, + "version": 0 + }, + "minecraft:portal": { + "runtime_id": 90, + "component_based": false, + "version": 2 + }, + "minecraft:potato": { + "runtime_id": 302, + "component_based": false, + "version": 0 + }, + "minecraft:potatoes": { + "runtime_id": 142, + "component_based": false, + "version": 2 + }, + "minecraft:potion": { + "runtime_id": 453, + "component_based": false, + "version": 2 + }, + "minecraft:powder_snow": { + "runtime_id": -306, + "component_based": false, + "version": 2 + }, + "minecraft:powder_snow_bucket": { + "runtime_id": 393, + "component_based": false, + "version": 2 + }, + "minecraft:powered_comparator": { + "runtime_id": 150, + "component_based": false, + "version": 2 + }, + "minecraft:powered_repeater": { + "runtime_id": 94, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine": { + "runtime_id": 168, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_brick_double_slab": { + "runtime_id": -914, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_brick_slab": { + "runtime_id": -887, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_bricks": { + "runtime_id": -948, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_bricks_stairs": { + "runtime_id": -4, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_crystals": { + "runtime_id": 582, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_double_slab": { + "runtime_id": -912, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_shard": { + "runtime_id": 598, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_slab": { + "runtime_id": -885, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_stairs": { + "runtime_id": -2, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_wall": { + "runtime_id": -981, + "component_based": false, + "version": 2 + }, + "minecraft:prize_pottery_sherd": { + "runtime_id": 711, + "component_based": false, + "version": 2 + }, + "minecraft:pufferfish": { + "runtime_id": 289, + "component_based": false, + "version": 0 + }, + "minecraft:pufferfish_bucket": { + "runtime_id": 392, + "component_based": false, + "version": 2 + }, + "minecraft:pufferfish_spawn_egg": { + "runtime_id": 509, + "component_based": false, + "version": 2 + }, + "minecraft:pumpkin": { + "runtime_id": 86, + "component_based": false, + "version": 2 + }, + "minecraft:pumpkin_pie": { + "runtime_id": 306, + "component_based": false, + "version": 0 + }, + "minecraft:pumpkin_seeds": { + "runtime_id": 314, + "component_based": false, + "version": 0 + }, + "minecraft:pumpkin_stem": { + "runtime_id": 104, + "component_based": false, + "version": 2 + }, + "minecraft:purple_bundle": { + "runtime_id": 260, + "component_based": true, + "version": 1 + }, + "minecraft:purple_candle": { + "runtime_id": -423, + "component_based": false, + "version": 2 + }, + "minecraft:purple_candle_cake": { + "runtime_id": -440, + "component_based": false, + "version": 2 + }, + "minecraft:purple_carpet": { + "runtime_id": -606, + "component_based": false, + "version": 2 + }, + "minecraft:purple_concrete": { + "runtime_id": -637, + "component_based": false, + "version": 2 + }, + "minecraft:purple_concrete_powder": { + "runtime_id": -718, + "component_based": false, + "version": 2 + }, + "minecraft:purple_dye": { + "runtime_id": 426, + "component_based": false, + "version": 2 + }, + "minecraft:purple_glazed_terracotta": { + "runtime_id": 219, + "component_based": false, + "version": 2 + }, + "minecraft:purple_shulker_box": { + "runtime_id": -622, + "component_based": false, + "version": 2 + }, + "minecraft:purple_stained_glass": { + "runtime_id": -682, + "component_based": false, + "version": 2 + }, + "minecraft:purple_stained_glass_pane": { + "runtime_id": -652, + "component_based": false, + "version": 2 + }, + "minecraft:purple_terracotta": { + "runtime_id": -733, + "component_based": false, + "version": 2 + }, + "minecraft:purple_wool": { + "runtime_id": -564, + "component_based": false, + "version": 2 + }, + "minecraft:purpur_block": { + "runtime_id": 201, + "component_based": false, + "version": 2 + }, + "minecraft:purpur_double_slab": { + "runtime_id": -911, + "component_based": false, + "version": 2 + }, + "minecraft:purpur_pillar": { + "runtime_id": -951, + "component_based": false, + "version": 2 + }, + "minecraft:purpur_slab": { + "runtime_id": -884, + "component_based": false, + "version": 2 + }, + "minecraft:purpur_stairs": { + "runtime_id": 203, + "component_based": false, + "version": 2 + }, + "minecraft:quartz": { + "runtime_id": 557, + "component_based": false, + "version": 2 + }, + "minecraft:quartz_block": { + "runtime_id": 155, + "component_based": false, + "version": 2 + }, + "minecraft:quartz_bricks": { + "runtime_id": -304, + "component_based": false, + "version": 2 + }, + "minecraft:quartz_double_slab": { + "runtime_id": -882, + "component_based": false, + "version": 2 + }, + "minecraft:quartz_ore": { + "runtime_id": 153, + "component_based": false, + "version": 2 + }, + "minecraft:quartz_pillar": { + "runtime_id": -954, + "component_based": false, + "version": 2 + }, + "minecraft:quartz_slab": { + "runtime_id": -876, + "component_based": false, + "version": 2 + }, + "minecraft:quartz_stairs": { + "runtime_id": 156, + "component_based": false, + "version": 2 + }, + "minecraft:rabbit": { + "runtime_id": 310, + "component_based": false, + "version": 0 + }, + "minecraft:rabbit_foot": { + "runtime_id": 561, + "component_based": false, + "version": 2 + }, + "minecraft:rabbit_hide": { + "runtime_id": 562, + "component_based": false, + "version": 2 + }, + "minecraft:rabbit_spawn_egg": { + "runtime_id": 486, + "component_based": false, + "version": 2 + }, + "minecraft:rabbit_stew": { + "runtime_id": 312, + "component_based": false, + "version": 0 + }, + "minecraft:rail": { + "runtime_id": 66, + "component_based": false, + "version": 2 + }, + "minecraft:raiser_armor_trim_smithing_template": { + "runtime_id": 732, + "component_based": false, + "version": 2 + }, + "minecraft:rapid_fertilizer": { + "runtime_id": 635, + "component_based": false, + "version": 2 + }, + "minecraft:ravager_spawn_egg": { + "runtime_id": 521, + "component_based": false, + "version": 2 + }, + "minecraft:raw_copper": { + "runtime_id": 541, + "component_based": false, + "version": 2 + }, + "minecraft:raw_copper_block": { + "runtime_id": -452, + "component_based": false, + "version": 2 + }, + "minecraft:raw_gold": { + "runtime_id": 540, + "component_based": false, + "version": 2 + }, + "minecraft:raw_gold_block": { + "runtime_id": -453, + "component_based": false, + "version": 2 + }, + "minecraft:raw_iron": { + "runtime_id": 539, + "component_based": false, + "version": 2 + }, + "minecraft:raw_iron_block": { + "runtime_id": -451, + "component_based": false, + "version": 2 + }, + "minecraft:recovery_compass": { + "runtime_id": 684, + "component_based": false, + "version": 2 + }, + "minecraft:red_bundle": { + "runtime_id": 265, + "component_based": true, + "version": 1 + }, + "minecraft:red_candle": { + "runtime_id": -427, + "component_based": false, + "version": 2 + }, + "minecraft:red_candle_cake": { + "runtime_id": -444, + "component_based": false, + "version": 2 + }, + "minecraft:red_carpet": { + "runtime_id": -610, + "component_based": false, + "version": 2 + }, + "minecraft:red_concrete": { + "runtime_id": -641, + "component_based": false, + "version": 2 + }, + "minecraft:red_concrete_powder": { + "runtime_id": -722, + "component_based": false, + "version": 2 + }, + "minecraft:red_dye": { + "runtime_id": 422, + "component_based": false, + "version": 2 + }, + "minecraft:red_flower": { + "runtime_id": 770, + "component_based": false, + "version": 2 + }, + "minecraft:red_glazed_terracotta": { + "runtime_id": 234, + "component_based": false, + "version": 2 + }, + "minecraft:red_mushroom": { + "runtime_id": 40, + "component_based": false, + "version": 2 + }, + "minecraft:red_mushroom_block": { + "runtime_id": 100, + "component_based": false, + "version": 2 + }, + "minecraft:red_nether_brick": { + "runtime_id": 215, + "component_based": false, + "version": 2 + }, + "minecraft:red_nether_brick_double_slab": { + "runtime_id": -917, + "component_based": false, + "version": 2 + }, + "minecraft:red_nether_brick_slab": { + "runtime_id": -890, + "component_based": false, + "version": 2 + }, + "minecraft:red_nether_brick_stairs": { + "runtime_id": -184, + "component_based": false, + "version": 2 + }, + "minecraft:red_nether_brick_wall": { + "runtime_id": -983, + "component_based": false, + "version": 2 + }, + "minecraft:red_sand": { + "runtime_id": -949, + "component_based": false, + "version": 2 + }, + "minecraft:red_sandstone": { + "runtime_id": 179, + "component_based": false, + "version": 2 + }, + "minecraft:red_sandstone_double_slab": { + "runtime_id": 181, + "component_based": false, + "version": 2 + }, + "minecraft:red_sandstone_slab": { + "runtime_id": 182, + "component_based": false, + "version": 2 + }, + "minecraft:red_sandstone_stairs": { + "runtime_id": 180, + "component_based": false, + "version": 2 + }, + "minecraft:red_sandstone_wall": { + "runtime_id": -982, + "component_based": false, + "version": 2 + }, + "minecraft:red_shulker_box": { + "runtime_id": -626, + "component_based": false, + "version": 2 + }, + "minecraft:red_stained_glass": { + "runtime_id": -686, + "component_based": false, + "version": 2 + }, + "minecraft:red_stained_glass_pane": { + "runtime_id": -656, + "component_based": false, + "version": 2 + }, + "minecraft:red_terracotta": { + "runtime_id": -737, + "component_based": false, + "version": 2 + }, + "minecraft:red_tulip": { + "runtime_id": -833, + "component_based": false, + "version": 2 + }, + "minecraft:red_wool": { + "runtime_id": -556, + "component_based": false, + "version": 2 + }, + "minecraft:redstone": { + "runtime_id": 398, + "component_based": false, + "version": 2 + }, + "minecraft:redstone_block": { + "runtime_id": 152, + "component_based": false, + "version": 2 + }, + "minecraft:redstone_lamp": { + "runtime_id": 123, + "component_based": false, + "version": 2 + }, + "minecraft:redstone_ore": { + "runtime_id": 73, + "component_based": false, + "version": 2 + }, + "minecraft:redstone_torch": { + "runtime_id": 76, + "component_based": false, + "version": 2 + }, + "minecraft:redstone_wire": { + "runtime_id": 55, + "component_based": false, + "version": 2 + }, + "minecraft:reinforced_deepslate": { + "runtime_id": -466, + "component_based": false, + "version": 2 + }, + "minecraft:repeater": { + "runtime_id": 445, + "component_based": true, + "version": 2 + }, + "minecraft:repeating_command_block": { + "runtime_id": 188, + "component_based": false, + "version": 2 + }, + "minecraft:reserved6": { + "runtime_id": 255, + "component_based": false, + "version": 2 + }, + "minecraft:resin_block": { + "runtime_id": -1021, + "component_based": false, + "version": 2 + }, + "minecraft:resin_brick": { + "runtime_id": 749, + "component_based": false, + "version": 2 + }, + "minecraft:resin_brick_double_slab": { + "runtime_id": -1015, + "component_based": false, + "version": 2 + }, + "minecraft:resin_brick_slab": { + "runtime_id": -1014, + "component_based": false, + "version": 2 + }, + "minecraft:resin_brick_stairs": { + "runtime_id": -1016, + "component_based": false, + "version": 2 + }, + "minecraft:resin_brick_wall": { + "runtime_id": -1017, + "component_based": false, + "version": 2 + }, + "minecraft:resin_bricks": { + "runtime_id": -1013, + "component_based": false, + "version": 2 + }, + "minecraft:resin_clump": { + "runtime_id": -1022, + "component_based": false, + "version": 2 + }, + "minecraft:respawn_anchor": { + "runtime_id": -272, + "component_based": false, + "version": 2 + }, + "minecraft:rib_armor_trim_smithing_template": { + "runtime_id": 728, + "component_based": false, + "version": 2 + }, + "minecraft:rose_bush": { + "runtime_id": -866, + "component_based": false, + "version": 2 + }, + "minecraft:rotten_flesh": { + "runtime_id": 299, + "component_based": false, + "version": 0 + }, + "minecraft:saddle": { + "runtime_id": 396, + "component_based": false, + "version": 2 + }, + "minecraft:salmon": { + "runtime_id": 287, + "component_based": false, + "version": 0 + }, + "minecraft:salmon_bucket": { + "runtime_id": 390, + "component_based": false, + "version": 2 + }, + "minecraft:salmon_spawn_egg": { + "runtime_id": 510, + "component_based": false, + "version": 2 + }, + "minecraft:sand": { + "runtime_id": 12, + "component_based": false, + "version": 2 + }, + "minecraft:sandstone": { + "runtime_id": 24, + "component_based": false, + "version": 2 + }, + "minecraft:sandstone_double_slab": { + "runtime_id": -878, + "component_based": false, + "version": 2 + }, + "minecraft:sandstone_slab": { + "runtime_id": -872, + "component_based": false, + "version": 2 + }, + "minecraft:sandstone_stairs": { + "runtime_id": 128, + "component_based": false, + "version": 2 + }, + "minecraft:sandstone_wall": { + "runtime_id": -975, + "component_based": false, + "version": 2 + }, + "minecraft:sapling": { + "runtime_id": 766, + "component_based": false, + "version": 2 + }, + "minecraft:scaffolding": { + "runtime_id": -165, + "component_based": false, + "version": 2 + }, + "minecraft:scrape_pottery_sherd": { + "runtime_id": 712, + "component_based": false, + "version": 2 + }, + "minecraft:sculk": { + "runtime_id": -458, + "component_based": false, + "version": 2 + }, + "minecraft:sculk_catalyst": { + "runtime_id": -460, + "component_based": false, + "version": 2 + }, + "minecraft:sculk_sensor": { + "runtime_id": -307, + "component_based": false, + "version": 2 + }, + "minecraft:sculk_shrieker": { + "runtime_id": -461, + "component_based": false, + "version": 2 + }, + "minecraft:sculk_vein": { + "runtime_id": -459, + "component_based": false, + "version": 2 + }, + "minecraft:sea_lantern": { + "runtime_id": 169, + "component_based": false, + "version": 2 + }, + "minecraft:sea_pickle": { + "runtime_id": -156, + "component_based": false, + "version": 2 + }, + "minecraft:seagrass": { + "runtime_id": -130, + "component_based": false, + "version": 2 + }, + "minecraft:sentry_armor_trim_smithing_template": { + "runtime_id": 719, + "component_based": false, + "version": 2 + }, + "minecraft:shaper_armor_trim_smithing_template": { + "runtime_id": 733, + "component_based": false, + "version": 2 + }, + "minecraft:sheaf_pottery_sherd": { + "runtime_id": 713, + "component_based": false, + "version": 2 + }, + "minecraft:shears": { + "runtime_id": 447, + "component_based": false, + "version": 2 + }, + "minecraft:sheep_spawn_egg": { + "runtime_id": 465, + "component_based": false, + "version": 2 + }, + "minecraft:shelter_pottery_sherd": { + "runtime_id": 714, + "component_based": false, + "version": 2 + }, + "minecraft:shield": { + "runtime_id": 380, + "component_based": false, + "version": 2 + }, + "minecraft:short_grass": { + "runtime_id": 31, + "component_based": false, + "version": 2 + }, + "minecraft:shroomlight": { + "runtime_id": -230, + "component_based": false, + "version": 2 + }, + "minecraft:shulker_box": { + "runtime_id": 781, + "component_based": false, + "version": 2 + }, + "minecraft:shulker_shell": { + "runtime_id": 599, + "component_based": false, + "version": 2 + }, + "minecraft:shulker_spawn_egg": { + "runtime_id": 497, + "component_based": false, + "version": 2 + }, + "minecraft:silence_armor_trim_smithing_template": { + "runtime_id": 730, + "component_based": false, + "version": 2 + }, + "minecraft:silver_glazed_terracotta": { + "runtime_id": 228, + "component_based": false, + "version": 2 + }, + "minecraft:silverfish_spawn_egg": { + "runtime_id": 470, + "component_based": false, + "version": 2 + }, + "minecraft:skeleton_horse_spawn_egg": { + "runtime_id": 495, + "component_based": false, + "version": 2 + }, + "minecraft:skeleton_skull": { + "runtime_id": 144, + "component_based": false, + "version": 2 + }, + "minecraft:skeleton_spawn_egg": { + "runtime_id": 471, + "component_based": false, + "version": 2 + }, + "minecraft:skull": { + "runtime_id": 738, + "component_based": false, + "version": 2 + }, + "minecraft:skull_banner_pattern": { + "runtime_id": 616, + "component_based": false, + "version": 2 + }, + "minecraft:skull_pottery_sherd": { + "runtime_id": 715, + "component_based": false, + "version": 2 + }, + "minecraft:slime": { + "runtime_id": 165, + "component_based": false, + "version": 2 + }, + "minecraft:slime_ball": { + "runtime_id": 414, + "component_based": false, + "version": 2 + }, + "minecraft:slime_spawn_egg": { + "runtime_id": 472, + "component_based": false, + "version": 2 + }, + "minecraft:small_amethyst_bud": { + "runtime_id": -332, + "component_based": false, + "version": 2 + }, + "minecraft:small_dripleaf_block": { + "runtime_id": -336, + "component_based": false, + "version": 2 + }, + "minecraft:smithing_table": { + "runtime_id": -202, + "component_based": false, + "version": 2 + }, + "minecraft:smoker": { + "runtime_id": -198, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_basalt": { + "runtime_id": -377, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_quartz": { + "runtime_id": -955, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_quartz_double_slab": { + "runtime_id": -925, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_quartz_slab": { + "runtime_id": -898, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_quartz_stairs": { + "runtime_id": -185, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_red_sandstone": { + "runtime_id": -958, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_red_sandstone_double_slab": { + "runtime_id": -918, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_red_sandstone_slab": { + "runtime_id": -891, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_red_sandstone_stairs": { + "runtime_id": -176, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_sandstone": { + "runtime_id": -946, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_sandstone_double_slab": { + "runtime_id": -916, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_sandstone_slab": { + "runtime_id": -889, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_sandstone_stairs": { + "runtime_id": -177, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_stone": { + "runtime_id": -183, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_stone_double_slab": { + "runtime_id": 43, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_stone_slab": { + "runtime_id": 44, + "component_based": false, + "version": 2 + }, + "minecraft:sniffer_egg": { + "runtime_id": -596, + "component_based": false, + "version": 2 + }, + "minecraft:sniffer_spawn_egg": { + "runtime_id": 528, + "component_based": false, + "version": 2 + }, + "minecraft:snort_pottery_sherd": { + "runtime_id": 716, + "component_based": false, + "version": 2 + }, + "minecraft:snout_armor_trim_smithing_template": { + "runtime_id": 727, + "component_based": false, + "version": 2 + }, + "minecraft:snow": { + "runtime_id": 80, + "component_based": false, + "version": 2 + }, + "minecraft:snow_golem_spawn_egg": { + "runtime_id": 534, + "component_based": false, + "version": 2 + }, + "minecraft:snow_layer": { + "runtime_id": 78, + "component_based": false, + "version": 2 + }, + "minecraft:snowball": { + "runtime_id": 399, + "component_based": true, + "version": 2 + }, + "minecraft:soul_campfire": { + "runtime_id": 660, + "component_based": true, + "version": 2 + }, + "minecraft:soul_fire": { + "runtime_id": -237, + "component_based": false, + "version": 2 + }, + "minecraft:soul_lantern": { + "runtime_id": -269, + "component_based": false, + "version": 2 + }, + "minecraft:soul_sand": { + "runtime_id": 88, + "component_based": false, + "version": 2 + }, + "minecraft:soul_soil": { + "runtime_id": -236, + "component_based": false, + "version": 2 + }, + "minecraft:soul_torch": { + "runtime_id": -268, + "component_based": false, + "version": 2 + }, + "minecraft:sparkler": { + "runtime_id": 638, + "component_based": false, + "version": 2 + }, + "minecraft:spawn_egg": { + "runtime_id": 795, + "component_based": false, + "version": 2 + }, + "minecraft:spider_eye": { + "runtime_id": 300, + "component_based": false, + "version": 0 + }, + "minecraft:spider_spawn_egg": { + "runtime_id": 473, + "component_based": false, + "version": 2 + }, + "minecraft:spire_armor_trim_smithing_template": { + "runtime_id": 729, + "component_based": false, + "version": 2 + }, + "minecraft:splash_potion": { + "runtime_id": 594, + "component_based": false, + "version": 2 + }, + "minecraft:sponge": { + "runtime_id": 19, + "component_based": false, + "version": 2 + }, + "minecraft:spore_blossom": { + "runtime_id": -321, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_boat": { + "runtime_id": 404, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_button": { + "runtime_id": -144, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_chest_boat": { + "runtime_id": 679, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_door": { + "runtime_id": 586, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_double_slab": { + "runtime_id": -809, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_fence": { + "runtime_id": -579, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_fence_gate": { + "runtime_id": 183, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_hanging_sign": { + "runtime_id": -501, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_leaves": { + "runtime_id": -800, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_log": { + "runtime_id": -569, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_planks": { + "runtime_id": -739, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_pressure_plate": { + "runtime_id": -154, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_sapling": { + "runtime_id": -825, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_sign": { + "runtime_id": 609, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_slab": { + "runtime_id": -804, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_stairs": { + "runtime_id": 134, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_standing_sign": { + "runtime_id": -181, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_trapdoor": { + "runtime_id": -149, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_wall_sign": { + "runtime_id": -182, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_wood": { + "runtime_id": -814, + "component_based": false, + "version": 2 + }, + "minecraft:spyglass": { + "runtime_id": 663, + "component_based": false, + "version": 2 + }, + "minecraft:squid_spawn_egg": { + "runtime_id": 477, + "component_based": false, + "version": 2 + }, + "minecraft:stained_glass": { + "runtime_id": 779, + "component_based": false, + "version": 2 + }, + "minecraft:stained_glass_pane": { + "runtime_id": 780, + "component_based": false, + "version": 2 + }, + "minecraft:stained_hardened_clay": { + "runtime_id": 739, + "component_based": false, + "version": 2 + }, + "minecraft:standing_banner": { + "runtime_id": 176, + "component_based": false, + "version": 2 + }, + "minecraft:standing_sign": { + "runtime_id": 63, + "component_based": false, + "version": 2 + }, + "minecraft:stick": { + "runtime_id": 345, + "component_based": false, + "version": 2 + }, + "minecraft:sticky_piston": { + "runtime_id": 29, + "component_based": false, + "version": 2 + }, + "minecraft:sticky_piston_arm_collision": { + "runtime_id": -217, + "component_based": false, + "version": 2 + }, + "minecraft:stone": { + "runtime_id": 1, + "component_based": false, + "version": 2 + }, + "minecraft:stone_axe": { + "runtime_id": 339, + "component_based": false, + "version": 2 + }, + "minecraft:stone_block_slab": { + "runtime_id": 756, + "component_based": false, + "version": 2 + }, + "minecraft:stone_block_slab2": { + "runtime_id": 757, + "component_based": false, + "version": 2 + }, + "minecraft:stone_block_slab3": { + "runtime_id": 758, + "component_based": false, + "version": 2 + }, + "minecraft:stone_block_slab4": { + "runtime_id": 759, + "component_based": false, + "version": 2 + }, + "minecraft:stone_brick_double_slab": { + "runtime_id": -881, + "component_based": false, + "version": 2 + }, + "minecraft:stone_brick_slab": { + "runtime_id": -875, + "component_based": false, + "version": 2 + }, + "minecraft:stone_brick_stairs": { + "runtime_id": 109, + "component_based": false, + "version": 2 + }, + "minecraft:stone_brick_wall": { + "runtime_id": -977, + "component_based": false, + "version": 2 + }, + "minecraft:stone_bricks": { + "runtime_id": 98, + "component_based": false, + "version": 2 + }, + "minecraft:stone_button": { + "runtime_id": 77, + "component_based": false, + "version": 2 + }, + "minecraft:stone_hoe": { + "runtime_id": 355, + "component_based": false, + "version": 2 + }, + "minecraft:stone_pickaxe": { + "runtime_id": 338, + "component_based": false, + "version": 2 + }, + "minecraft:stone_pressure_plate": { + "runtime_id": 70, + "component_based": false, + "version": 2 + }, + "minecraft:stone_shovel": { + "runtime_id": 337, + "component_based": false, + "version": 2 + }, + "minecraft:stone_stairs": { + "runtime_id": 67, + "component_based": false, + "version": 2 + }, + "minecraft:stone_sword": { + "runtime_id": 336, + "component_based": false, + "version": 2 + }, + "minecraft:stonebrick": { + "runtime_id": 754, + "component_based": false, + "version": 2 + }, + "minecraft:stonecutter": { + "runtime_id": 245, + "component_based": false, + "version": 2 + }, + "minecraft:stonecutter_block": { + "runtime_id": -197, + "component_based": false, + "version": 2 + }, + "minecraft:stray_spawn_egg": { + "runtime_id": 489, + "component_based": false, + "version": 2 + }, + "minecraft:strider_spawn_egg": { + "runtime_id": 523, + "component_based": false, + "version": 2 + }, + "minecraft:string": { + "runtime_id": 351, + "component_based": true, + "version": 2 + }, + "minecraft:stripped_acacia_log": { + "runtime_id": -8, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_acacia_wood": { + "runtime_id": -823, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_bamboo_block": { + "runtime_id": -528, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_birch_log": { + "runtime_id": -6, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_birch_wood": { + "runtime_id": -821, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_cherry_log": { + "runtime_id": -535, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_cherry_wood": { + "runtime_id": -545, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_crimson_hyphae": { + "runtime_id": -300, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_crimson_stem": { + "runtime_id": -240, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_dark_oak_log": { + "runtime_id": -9, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_dark_oak_wood": { + "runtime_id": -824, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_jungle_log": { + "runtime_id": -7, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_jungle_wood": { + "runtime_id": -822, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_mangrove_log": { + "runtime_id": -485, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_mangrove_wood": { + "runtime_id": -498, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_oak_log": { + "runtime_id": -10, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_oak_wood": { + "runtime_id": -819, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_pale_oak_log": { + "runtime_id": -994, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_pale_oak_wood": { + "runtime_id": -1004, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_spruce_log": { + "runtime_id": -5, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_spruce_wood": { + "runtime_id": -820, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_warped_hyphae": { + "runtime_id": -301, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_warped_stem": { + "runtime_id": -241, + "component_based": false, + "version": 2 + }, + "minecraft:structure_block": { + "runtime_id": 252, + "component_based": false, + "version": 2 + }, + "minecraft:structure_void": { + "runtime_id": 217, + "component_based": false, + "version": 2 + }, + "minecraft:sugar": { + "runtime_id": 442, + "component_based": false, + "version": 2 + }, + "minecraft:sugar_cane": { + "runtime_id": 411, + "component_based": true, + "version": 2 + }, + "minecraft:sunflower": { + "runtime_id": 175, + "component_based": false, + "version": 2 + }, + "minecraft:suspicious_gravel": { + "runtime_id": -573, + "component_based": false, + "version": 2 + }, + "minecraft:suspicious_sand": { + "runtime_id": -529, + "component_based": false, + "version": 2 + }, + "minecraft:suspicious_stew": { + "runtime_id": 625, + "component_based": false, + "version": 0 + }, + "minecraft:sweet_berries": { + "runtime_id": 309, + "component_based": false, + "version": 0 + }, + "minecraft:sweet_berry_bush": { + "runtime_id": -207, + "component_based": false, + "version": 2 + }, + "minecraft:tadpole_bucket": { + "runtime_id": 668, + "component_based": false, + "version": 2 + }, + "minecraft:tadpole_spawn_egg": { + "runtime_id": 667, + "component_based": false, + "version": 2 + }, + "minecraft:tall_grass": { + "runtime_id": -864, + "component_based": false, + "version": 2 + }, + "minecraft:tallgrass": { + "runtime_id": 774, + "component_based": false, + "version": 2 + }, + "minecraft:target": { + "runtime_id": -239, + "component_based": false, + "version": 2 + }, + "minecraft:tide_armor_trim_smithing_template": { + "runtime_id": 726, + "component_based": false, + "version": 2 + }, + "minecraft:tinted_glass": { + "runtime_id": -334, + "component_based": false, + "version": 2 + }, + "minecraft:tnt": { + "runtime_id": 46, + "component_based": false, + "version": 2 + }, + "minecraft:tnt_minecart": { + "runtime_id": 558, + "component_based": false, + "version": 2 + }, + "minecraft:torch": { + "runtime_id": 50, + "component_based": false, + "version": 2 + }, + "minecraft:torchflower": { + "runtime_id": -568, + "component_based": false, + "version": 2 + }, + "minecraft:torchflower_crop": { + "runtime_id": -567, + "component_based": false, + "version": 2 + }, + "minecraft:torchflower_seeds": { + "runtime_id": 318, + "component_based": false, + "version": 0 + }, + "minecraft:totem_of_undying": { + "runtime_id": 601, + "component_based": false, + "version": 2 + }, + "minecraft:trader_llama_spawn_egg": { + "runtime_id": 686, + "component_based": false, + "version": 2 + }, + "minecraft:trapdoor": { + "runtime_id": 96, + "component_based": false, + "version": 2 + }, + "minecraft:trapped_chest": { + "runtime_id": 146, + "component_based": false, + "version": 2 + }, + "minecraft:trial_key": { + "runtime_id": 275, + "component_based": true, + "version": 1 + }, + "minecraft:trial_spawner": { + "runtime_id": -315, + "component_based": false, + "version": 2 + }, + "minecraft:trident": { + "runtime_id": 579, + "component_based": false, + "version": 2 + }, + "minecraft:trip_wire": { + "runtime_id": 132, + "component_based": false, + "version": 2 + }, + "minecraft:tripwire_hook": { + "runtime_id": 131, + "component_based": false, + "version": 2 + }, + "minecraft:tropical_fish": { + "runtime_id": 288, + "component_based": false, + "version": 0 + }, + "minecraft:tropical_fish_bucket": { + "runtime_id": 391, + "component_based": false, + "version": 2 + }, + "minecraft:tropical_fish_spawn_egg": { + "runtime_id": 507, + "component_based": false, + "version": 2 + }, + "minecraft:tube_coral": { + "runtime_id": -131, + "component_based": false, + "version": 2 + }, + "minecraft:tube_coral_block": { + "runtime_id": -132, + "component_based": false, + "version": 2 + }, + "minecraft:tube_coral_fan": { + "runtime_id": -133, + "component_based": false, + "version": 2 + }, + "minecraft:tube_coral_wall_fan": { + "runtime_id": -135, + "component_based": false, + "version": 2 + }, + "minecraft:tuff": { + "runtime_id": -333, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_brick_double_slab": { + "runtime_id": -756, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_brick_slab": { + "runtime_id": -755, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_brick_stairs": { + "runtime_id": -757, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_brick_wall": { + "runtime_id": -758, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_bricks": { + "runtime_id": -754, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_double_slab": { + "runtime_id": -745, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_slab": { + "runtime_id": -744, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_stairs": { + "runtime_id": -746, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_wall": { + "runtime_id": -747, + "component_based": false, + "version": 2 + }, + "minecraft:turtle_egg": { + "runtime_id": -159, + "component_based": false, + "version": 2 + }, + "minecraft:turtle_helmet": { + "runtime_id": 606, + "component_based": false, + "version": 2 + }, + "minecraft:turtle_scute": { + "runtime_id": 605, + "component_based": false, + "version": 2 + }, + "minecraft:turtle_spawn_egg": { + "runtime_id": 513, + "component_based": false, + "version": 2 + }, + "minecraft:twisting_vines": { + "runtime_id": -287, + "component_based": false, + "version": 2 + }, + "minecraft:underwater_tnt": { + "runtime_id": -985, + "component_based": false, + "version": 2 + }, + "minecraft:underwater_torch": { + "runtime_id": 239, + "component_based": false, + "version": 2 + }, + "minecraft:undyed_shulker_box": { + "runtime_id": 205, + "component_based": false, + "version": 2 + }, + "minecraft:unknown": { + "runtime_id": -305, + "component_based": false, + "version": 2 + }, + "minecraft:unlit_redstone_torch": { + "runtime_id": 75, + "component_based": false, + "version": 2 + }, + "minecraft:unpowered_comparator": { + "runtime_id": 149, + "component_based": false, + "version": 2 + }, + "minecraft:unpowered_repeater": { + "runtime_id": 93, + "component_based": false, + "version": 2 + }, + "minecraft:vault": { + "runtime_id": -314, + "component_based": false, + "version": 2 + }, + "minecraft:verdant_froglight": { + "runtime_id": -470, + "component_based": false, + "version": 2 + }, + "minecraft:vex_armor_trim_smithing_template": { + "runtime_id": 725, + "component_based": false, + "version": 2 + }, + "minecraft:vex_spawn_egg": { + "runtime_id": 504, + "component_based": false, + "version": 2 + }, + "minecraft:villager_spawn_egg": { + "runtime_id": 476, + "component_based": false, + "version": 2 + }, + "minecraft:vindicator_spawn_egg": { + "runtime_id": 502, + "component_based": false, + "version": 2 + }, + "minecraft:vine": { + "runtime_id": 106, + "component_based": false, + "version": 2 + }, + "minecraft:wall_banner": { + "runtime_id": 177, + "component_based": false, + "version": 2 + }, + "minecraft:wall_sign": { + "runtime_id": 68, + "component_based": false, + "version": 2 + }, + "minecraft:wandering_trader_spawn_egg": { + "runtime_id": 520, + "component_based": false, + "version": 2 + }, + "minecraft:ward_armor_trim_smithing_template": { + "runtime_id": 723, + "component_based": false, + "version": 2 + }, + "minecraft:warden_spawn_egg": { + "runtime_id": 670, + "component_based": false, + "version": 2 + }, + "minecraft:warped_button": { + "runtime_id": -261, + "component_based": false, + "version": 2 + }, + "minecraft:warped_door": { + "runtime_id": 655, + "component_based": false, + "version": 2 + }, + "minecraft:warped_double_slab": { + "runtime_id": -267, + "component_based": false, + "version": 2 + }, + "minecraft:warped_fence": { + "runtime_id": -257, + "component_based": false, + "version": 2 + }, + "minecraft:warped_fence_gate": { + "runtime_id": -259, + "component_based": false, + "version": 2 + }, + "minecraft:warped_fungus": { + "runtime_id": -229, + "component_based": false, + "version": 2 + }, + "minecraft:warped_fungus_on_a_stick": { + "runtime_id": 656, + "component_based": true, + "version": 2 + }, + "minecraft:warped_hanging_sign": { + "runtime_id": -507, + "component_based": false, + "version": 2 + }, + "minecraft:warped_hyphae": { + "runtime_id": -298, + "component_based": false, + "version": 2 + }, + "minecraft:warped_nylium": { + "runtime_id": -233, + "component_based": false, + "version": 2 + }, + "minecraft:warped_planks": { + "runtime_id": -243, + "component_based": false, + "version": 2 + }, + "minecraft:warped_pressure_plate": { + "runtime_id": -263, + "component_based": false, + "version": 2 + }, + "minecraft:warped_roots": { + "runtime_id": -224, + "component_based": false, + "version": 2 + }, + "minecraft:warped_sign": { + "runtime_id": 653, + "component_based": false, + "version": 2 + }, + "minecraft:warped_slab": { + "runtime_id": -265, + "component_based": false, + "version": 2 + }, + "minecraft:warped_stairs": { + "runtime_id": -255, + "component_based": false, + "version": 2 + }, + "minecraft:warped_standing_sign": { + "runtime_id": -251, + "component_based": false, + "version": 2 + }, + "minecraft:warped_stem": { + "runtime_id": -226, + "component_based": false, + "version": 2 + }, + "minecraft:warped_trapdoor": { + "runtime_id": -247, + "component_based": false, + "version": 2 + }, + "minecraft:warped_wall_sign": { + "runtime_id": -253, + "component_based": false, + "version": 2 + }, + "minecraft:warped_wart_block": { + "runtime_id": -227, + "component_based": false, + "version": 2 + }, + "minecraft:water": { + "runtime_id": 9, + "component_based": false, + "version": 2 + }, + "minecraft:water_bucket": { + "runtime_id": 387, + "component_based": false, + "version": 2 + }, + "minecraft:waterlily": { + "runtime_id": 111, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_chiseled_copper": { + "runtime_id": -764, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_copper": { + "runtime_id": -344, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_copper_bulb": { + "runtime_id": -780, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_copper_door": { + "runtime_id": -788, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_copper_grate": { + "runtime_id": -772, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_copper_trapdoor": { + "runtime_id": -796, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_cut_copper": { + "runtime_id": -351, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_cut_copper_slab": { + "runtime_id": -365, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_cut_copper_stairs": { + "runtime_id": -358, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_double_cut_copper_slab": { + "runtime_id": -372, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_chiseled_copper": { + "runtime_id": -765, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_copper": { + "runtime_id": -345, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_copper_bulb": { + "runtime_id": -781, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_copper_door": { + "runtime_id": -789, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_copper_grate": { + "runtime_id": -773, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_copper_trapdoor": { + "runtime_id": -797, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_cut_copper": { + "runtime_id": -352, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_cut_copper_slab": { + "runtime_id": -366, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_cut_copper_stairs": { + "runtime_id": -359, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_double_cut_copper_slab": { + "runtime_id": -373, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_chiseled_copper": { + "runtime_id": -766, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_copper": { + "runtime_id": -446, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_copper_bulb": { + "runtime_id": -783, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_copper_door": { + "runtime_id": -791, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_copper_grate": { + "runtime_id": -775, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_copper_trapdoor": { + "runtime_id": -799, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_cut_copper": { + "runtime_id": -447, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_cut_copper_slab": { + "runtime_id": -449, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_cut_copper_stairs": { + "runtime_id": -448, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_double_cut_copper_slab": { + "runtime_id": -450, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_chiseled_copper": { + "runtime_id": -767, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_copper": { + "runtime_id": -346, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_copper_bulb": { + "runtime_id": -782, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_copper_door": { + "runtime_id": -790, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_copper_grate": { + "runtime_id": -774, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_copper_trapdoor": { + "runtime_id": -798, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_cut_copper": { + "runtime_id": -353, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_cut_copper_slab": { + "runtime_id": -367, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_cut_copper_stairs": { + "runtime_id": -360, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_double_cut_copper_slab": { + "runtime_id": -374, + "component_based": false, + "version": 2 + }, + "minecraft:wayfinder_armor_trim_smithing_template": { + "runtime_id": 731, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_chiseled_copper": { + "runtime_id": -762, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_copper": { + "runtime_id": -342, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_copper_bulb": { + "runtime_id": -778, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_copper_door": { + "runtime_id": -786, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_copper_grate": { + "runtime_id": -770, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_copper_trapdoor": { + "runtime_id": -794, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_cut_copper": { + "runtime_id": -349, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_cut_copper_slab": { + "runtime_id": -363, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_cut_copper_stairs": { + "runtime_id": -356, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_double_cut_copper_slab": { + "runtime_id": -370, + "component_based": false, + "version": 2 + }, + "minecraft:web": { + "runtime_id": 30, + "component_based": false, + "version": 2 + }, + "minecraft:weeping_vines": { + "runtime_id": -231, + "component_based": false, + "version": 2 + }, + "minecraft:wet_sponge": { + "runtime_id": -984, + "component_based": false, + "version": 2 + }, + "minecraft:wheat": { + "runtime_id": 359, + "component_based": false, + "version": 2 + }, + "minecraft:wheat_seeds": { + "runtime_id": 313, + "component_based": false, + "version": 0 + }, + "minecraft:white_bundle": { + "runtime_id": 262, + "component_based": true, + "version": 1 + }, + "minecraft:white_candle": { + "runtime_id": -413, + "component_based": false, + "version": 2 + }, + "minecraft:white_candle_cake": { + "runtime_id": -430, + "component_based": false, + "version": 2 + }, + "minecraft:white_carpet": { + "runtime_id": 171, + "component_based": false, + "version": 2 + }, + "minecraft:white_concrete": { + "runtime_id": 236, + "component_based": false, + "version": 2 + }, + "minecraft:white_concrete_powder": { + "runtime_id": 237, + "component_based": false, + "version": 2 + }, + "minecraft:white_dye": { + "runtime_id": 436, + "component_based": false, + "version": 2 + }, + "minecraft:white_glazed_terracotta": { + "runtime_id": 220, + "component_based": false, + "version": 2 + }, + "minecraft:white_shulker_box": { + "runtime_id": 218, + "component_based": false, + "version": 2 + }, + "minecraft:white_stained_glass": { + "runtime_id": 241, + "component_based": false, + "version": 2 + }, + "minecraft:white_stained_glass_pane": { + "runtime_id": 160, + "component_based": false, + "version": 2 + }, + "minecraft:white_terracotta": { + "runtime_id": 159, + "component_based": false, + "version": 2 + }, + "minecraft:white_tulip": { + "runtime_id": -835, + "component_based": false, + "version": 2 + }, + "minecraft:white_wool": { + "runtime_id": 35, + "component_based": false, + "version": 2 + }, + "minecraft:wild_armor_trim_smithing_template": { + "runtime_id": 722, + "component_based": false, + "version": 2 + }, + "minecraft:wind_charge": { + "runtime_id": 277, + "component_based": true, + "version": 1 + }, + "minecraft:witch_spawn_egg": { + "runtime_id": 479, + "component_based": false, + "version": 2 + }, + "minecraft:wither_rose": { + "runtime_id": -216, + "component_based": false, + "version": 2 + }, + "minecraft:wither_skeleton_skull": { + "runtime_id": -965, + "component_based": false, + "version": 2 + }, + "minecraft:wither_skeleton_spawn_egg": { + "runtime_id": 492, + "component_based": false, + "version": 2 + }, + "minecraft:wither_spawn_egg": { + "runtime_id": 536, + "component_based": false, + "version": 2 + }, + "minecraft:wolf_armor": { + "runtime_id": 742, + "component_based": true, + "version": 2 + }, + "minecraft:wolf_spawn_egg": { + "runtime_id": 466, + "component_based": false, + "version": 2 + }, + "minecraft:wood": { + "runtime_id": 782, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_axe": { + "runtime_id": 335, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_button": { + "runtime_id": 143, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_door": { + "runtime_id": 384, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_hoe": { + "runtime_id": 354, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_pickaxe": { + "runtime_id": 334, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_pressure_plate": { + "runtime_id": 72, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_shovel": { + "runtime_id": 333, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_slab": { + "runtime_id": 769, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_sword": { + "runtime_id": 332, + "component_based": false, + "version": 2 + }, + "minecraft:wool": { + "runtime_id": 750, + "component_based": false, + "version": 2 + }, + "minecraft:writable_book": { + "runtime_id": 544, + "component_based": false, + "version": 2 + }, + "minecraft:written_book": { + "runtime_id": 545, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_bundle": { + "runtime_id": 269, + "component_based": true, + "version": 1 + }, + "minecraft:yellow_candle": { + "runtime_id": -417, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_candle_cake": { + "runtime_id": -434, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_carpet": { + "runtime_id": -600, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_concrete": { + "runtime_id": -631, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_concrete_powder": { + "runtime_id": -712, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_dye": { + "runtime_id": 432, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_glazed_terracotta": { + "runtime_id": 224, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_shulker_box": { + "runtime_id": -616, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_stained_glass": { + "runtime_id": -676, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_stained_glass_pane": { + "runtime_id": -646, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_terracotta": { + "runtime_id": -727, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_wool": { + "runtime_id": -558, + "component_based": false, + "version": 2 + }, + "minecraft:zoglin_spawn_egg": { + "runtime_id": 526, + "component_based": false, + "version": 2 + }, + "minecraft:zombie_head": { + "runtime_id": -966, + "component_based": false, + "version": 2 + }, + "minecraft:zombie_horse_spawn_egg": { + "runtime_id": 496, + "component_based": false, + "version": 2 + }, + "minecraft:zombie_pigman_spawn_egg": { + "runtime_id": 475, + "component_based": false, + "version": 2 + }, + "minecraft:zombie_spawn_egg": { + "runtime_id": 474, + "component_based": false, + "version": 2 + }, + "minecraft:zombie_villager_spawn_egg": { + "runtime_id": 505, + "component_based": false, + "version": 2 + } +} \ No newline at end of file diff --git a/legacyver/item_translator.go b/legacyver/item_translator.go index 03aef62..2d63066 100644 --- a/legacyver/item_translator.go +++ b/legacyver/item_translator.go @@ -3,8 +3,8 @@ package legacyver import ( "fmt" "github.com/akmalfairuz/legacy-version/internal/item" + "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" - "github.com/akmalfairuz/legacy-version/packbuilder" "github.com/df-mc/dragonfly/server/world" "github.com/samber/lo" "github.com/sandertv/gophertunnel/minecraft" @@ -39,6 +39,10 @@ type ItemTranslator interface { Register(item world.CustomItem, replacement string) // CustomItems lists all custom items used as substitutes, with the runtime id as the key CustomItems() map[int32]world.CustomItem + // DowngradeLegacyItemRegistry ... + DowngradeLegacyItemRegistry(entries []proto.LegacyItemRegistryEntry) []proto.LegacyItemRegistryEntry + // UpgradeLegacyItemRegistry ... + UpgradeLegacyItemRegistry(entries []proto.LegacyItemRegistryEntry) []proto.LegacyItemRegistryEntry } type DefaultItemTranslator struct { @@ -480,51 +484,84 @@ func (t *DefaultItemTranslator) DowngradeItemPackets(pks []packet.Packet, _ *min }) pk.EventData = (itemType.NetworkID << 16) | int32(itemType.MetadataValue) } - case *packet.StartGame: - for i, entry := range pk.Items { - if !entry.ComponentBased { - itemType := t.DowngradeItemType(protocol.ItemType{ - NetworkID: int32(entry.RuntimeID), - MetadataValue: 0, - }) - if itemType.NetworkID == t.mapping.Air() { - removeIndex(pk.Items, i) - continue - } - entry.RuntimeID = int16(itemType.NetworkID) - - var ok bool - if entry.Name, ok = t.mapping.ItemRuntimeIDToName(itemType.NetworkID); !ok { - panic(itemType) - } - } else { - t.latest.RegisterEntryRID(entry.Name, int32(entry.RuntimeID)) - entry.RuntimeID = int16(t.mapping.RegisterEntry(entry.Name)) - } - pk.Items[i] = entry - } - for rid, i := range t.CustomItems() { - name, _ := i.EncodeItem() - pk.Items = append(pk.Items, protocol.ItemEntry{ - Name: name, - RuntimeID: int16(rid), - ComponentBased: true, - }) - } - case *packet.ItemComponent: - for _, i := range t.CustomItems() { - name, _ := i.EncodeItem() - pk.Items = append(pk.Items, protocol.ItemComponentEntry{ - Name: name, - Data: packbuilder.Components(i), - }) - } + //case *packet.ItemRegistry: + // for _, i := range t.CustomItems() { + // name, _ := i.EncodeItem() + // pk.Items = append(pk.Items, protocol.ItemEntry{ + // Name: name, + // Data: packbuilder.Components(i), + // }) + // } } result = append(result, pk) } return result } +func (t *DefaultItemTranslator) DowngradeLegacyItemRegistry(entries []proto.LegacyItemRegistryEntry) []proto.LegacyItemRegistryEntry { + for i, entry := range entries { + if !entry.ComponentBased { + itemType := t.DowngradeItemType(protocol.ItemType{ + NetworkID: int32(entry.RuntimeID), + MetadataValue: 0, + }) + if itemType.NetworkID == t.mapping.Air() { + removeIndex(entries, i) + continue + } + entry.RuntimeID = int16(itemType.NetworkID) + + var ok bool + if entry.Name, ok = t.mapping.ItemRuntimeIDToName(itemType.NetworkID); !ok { + panic(itemType) + } + } else { + t.latest.RegisterEntryRID(entry.Name, int32(entry.RuntimeID), 2) + entry.RuntimeID = int16(t.mapping.RegisterEntry(entry.Name)) + } + entries[i] = entry + } + for rid, i := range t.CustomItems() { + name, _ := i.EncodeItem() + entries = append(entries, proto.LegacyItemRegistryEntry{ + Name: name, + RuntimeID: int16(rid), + ComponentBased: true, + }) + } + return entries +} + +func (t *DefaultItemTranslator) UpgradeLegacyItemRegistry(entries []proto.LegacyItemRegistryEntry) []proto.LegacyItemRegistryEntry { + for i, entry := range entries { + if !entry.ComponentBased { + itemType := t.UpgradeItemType(protocol.ItemType{ + NetworkID: int32(entry.RuntimeID), + MetadataValue: 0, + }) + entry.RuntimeID = int16(itemType.NetworkID) + + var ok bool + if entry.Name, ok = t.latest.ItemRuntimeIDToName(itemType.NetworkID); !ok { + panic(itemType) + } + } else { + t.latest.RegisterEntryRID(entry.Name, int32(entry.RuntimeID), 2) + entry.RuntimeID = int16(t.mapping.RegisterEntry(entry.Name)) + } + entries[i] = entry + } + for rid, i := range t.CustomItems() { + name, _ := i.EncodeItem() + entries = append(entries, proto.LegacyItemRegistryEntry{ + Name: name, + RuntimeID: int16(rid), + ComponentBased: true, + }) + } + return entries +} + func (t *DefaultItemTranslator) UpgradeItemPackets(pks []packet.Packet, _ *minecraft.Conn) (result []packet.Packet) { for _, pk := range pks { switch pk := pk.(type) { @@ -703,41 +740,14 @@ func (t *DefaultItemTranslator) UpgradeItemPackets(pks []packet.Packet, _ *minec }) pk.EventData = (itemType.NetworkID << 16) | int32(itemType.MetadataValue) } - case *packet.StartGame: - for i, entry := range pk.Items { - if !entry.ComponentBased { - itemType := t.UpgradeItemType(protocol.ItemType{ - NetworkID: int32(entry.RuntimeID), - MetadataValue: 0, - }) - entry.RuntimeID = int16(itemType.NetworkID) - - var ok bool - if entry.Name, ok = t.latest.ItemRuntimeIDToName(itemType.NetworkID); !ok { - panic(itemType) - } - } else { - t.latest.RegisterEntryRID(entry.Name, int32(entry.RuntimeID)) - entry.RuntimeID = int16(t.mapping.RegisterEntry(entry.Name)) - } - pk.Items[i] = entry - } - for rid, i := range t.CustomItems() { - name, _ := i.EncodeItem() - pk.Items = append(pk.Items, protocol.ItemEntry{ - Name: name, - RuntimeID: int16(rid), - ComponentBased: true, - }) - } - case *packet.ItemComponent: - for _, i := range t.CustomItems() { - name, _ := i.EncodeItem() - pk.Items = append(pk.Items, protocol.ItemComponentEntry{ - Name: name, - Data: packbuilder.Components(i), - }) - } + //case *packet.ItemRegistry: + // for _, i := range t.CustomItems() { + // name, _ := i.EncodeItem() + // pk.Items = append(pk.Items, protocol.ItemEntry{ + // Name: name, + // Data: packbuilder.Components(i), + // }) + // } } result = append(result, pk) } diff --git a/legacyver/legacypacket/add_player.go b/legacyver/legacypacket/add_player.go index c14875c..0dcbf90 100644 --- a/legacyver/legacypacket/add_player.go +++ b/legacyver/legacypacket/add_player.go @@ -53,7 +53,7 @@ type AddPlayer struct { // attributes of the entity. EntityProperties protocol.EntityProperties // AbilityData represents various data about the abilities of a player, such as ability layers or permissions. - AbilityData protocol.AbilityData + AbilityData proto.AbilityData // EntityLinks is a list of entity links that are currently active on the player. These links alter the // way the player shows up when first spawned in terms of it shown as riding an entity. Setting these // links is important for new viewers to see the player is riding another entity. diff --git a/legacyver/legacypacket/boss_event.go b/legacyver/legacypacket/boss_event.go new file mode 100644 index 0000000..3a6dd6c --- /dev/null +++ b/legacyver/legacypacket/boss_event.go @@ -0,0 +1,115 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +const ( + BossEventShow = iota + BossEventRegisterPlayer + BossEventHide + BossEventUnregisterPlayer + BossEventHealthPercentage + BossEventTitle + BossEventAppearanceProperties + BossEventTexture + BossEventRequest +) + +const ( + BossEventColourGrey = iota + BossEventColourBlue + BossEventColourRed + BossEventColourGreen + BossEventColourYellow + BossEventColourPurple + BossEventColourWhite +) + +// BossEvent is sent by the server to make a specific 'boss event' occur in the +// world. It includes features such as showing a boss bar to the player and +// turning the sky dark. +type BossEvent struct { + // BossEntityUniqueID is the unique ID of the boss entity that the boss + // event sent involves. By default, the health percentage and title of the + // boss bar depend on the health and name tag of this entity. If + // BossEntityUniqueID is the same as the client's entity unique ID, its + // HealthPercentage and BossBarTitle can be freely altered. + BossEntityUniqueID int64 + // EventType is the type of the event. The fields written depend on the + // event type set, and some event types are sent by the client, whereas + // others are sent by the server. The event type is one of the constants + // above. + EventType uint32 + // PlayerUniqueID is the unique ID of the player that is registered to or + // unregistered from the boss fight. It is set if EventType is either + // BossEventRegisterPlayer or BossEventUnregisterPlayer. + PlayerUniqueID int64 + // BossBarTitle is the title shown above the boss bar. It may be set to set + // a different title if the BossEntityUniqueID matches the client's entity + // unique ID. + BossBarTitle string + // FilteredBossBarTitle is a filtered version of BossBarTitle with all the + // profanity removed. The client will use this over BossBarTitle if this + // field is not empty and they have the "Filter Profanity" setting enabled. + FilteredBossBarTitle string + // HealthPercentage is the percentage of health that is shown in the boss + // bar (0.0-1.0). The HealthPercentage may be set to a specific value if the + // BossEntityUniqueID matches the client's entity unique ID. + HealthPercentage float32 + // ScreenDarkening currently seems not to do anything. + ScreenDarkening uint16 + // Colour is the colour of the boss bar that is shown when a player is + // subscribed. It is only set if the EventType is BossEventShow, + // BossEventAppearanceProperties or BossEventTexture. This is functional as + // of 1.18 and can be any of the BossEventColour constants listed above. + Colour uint32 + // Overlay is the overlay of the boss bar that is shown on top of the boss + // bar when a player is subscribed. It currently does not function. It is + // only set if the EventType is BossEventShow, BossEventAppearanceProperties + // or BossEventTexture. + Overlay uint32 +} + +// ID ... +func (*BossEvent) ID() uint32 { + return packet.IDBossEvent +} + +func (pk *BossEvent) Marshal(io protocol.IO) { + io.Varint64(&pk.BossEntityUniqueID) + io.Varuint32(&pk.EventType) + switch pk.EventType { + case BossEventShow: + io.String(&pk.BossBarTitle) + if proto.IsProtoGTE(io, proto.ID776) { + io.String(&pk.FilteredBossBarTitle) + } + io.Float32(&pk.HealthPercentage) + io.Uint16(&pk.ScreenDarkening) + io.Varuint32(&pk.Colour) + io.Varuint32(&pk.Overlay) + case BossEventRegisterPlayer, BossEventUnregisterPlayer, BossEventRequest: + io.Varint64(&pk.PlayerUniqueID) + case BossEventHide: + // No extra payload for this boss event type. + case BossEventHealthPercentage: + io.Float32(&pk.HealthPercentage) + case BossEventTitle: + io.String(&pk.BossBarTitle) + if proto.IsProtoGTE(io, proto.ID776) { + io.String(&pk.FilteredBossBarTitle) + } + case BossEventAppearanceProperties: + io.Uint16(&pk.ScreenDarkening) + io.Varuint32(&pk.Colour) + io.Varuint32(&pk.Overlay) + case BossEventTexture: + io.Varuint32(&pk.Colour) + io.Varuint32(&pk.Overlay) + default: + io.UnknownEnumOption(pk.EventType, "boss event type") + } +} diff --git a/legacyver/legacypacket/camera_aim_assist_presets.go b/legacyver/legacypacket/camera_aim_assist_presets.go new file mode 100644 index 0000000..c0cabb6 --- /dev/null +++ b/legacyver/legacypacket/camera_aim_assist_presets.go @@ -0,0 +1,36 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +const ( + CameraAunAssistPresetOperationSet = iota + CameraAunAssistPresetOperationAddToExisting +) + +// CameraAimAssistPresets is sent by the server to the client to provide a list of categories and presets +// that can be used when sending a CameraAimAssist packet or a CameraInstruction including aim assist. +type CameraAimAssistPresets struct { + // CategoryGroups is a list of groups of categories which can be referenced by one of the Presets. + CategoryGroups []protocol.CameraAimAssistCategoryGroup + // Presets is a list of presets which define a base for how aim assist should behave + Presets []protocol.CameraAimAssistPreset + // Operation is the operation to perform with the presets. It is one of the constants above. + Operation byte +} + +// ID ... +func (*CameraAimAssistPresets) ID() uint32 { + return packet.IDCameraAimAssistPresets +} + +func (pk *CameraAimAssistPresets) Marshal(io protocol.IO) { + protocol.Slice(io, &pk.CategoryGroups) + protocol.Slice(io, &pk.Presets) + if proto.IsProtoGTE(io, proto.ID776) { + io.Uint8(&pk.Operation) + } +} diff --git a/legacyver/legacypacket/client_cheat_ability.go b/legacyver/legacypacket/client_cheat_ability.go new file mode 100644 index 0000000..66e2149 --- /dev/null +++ b/legacyver/legacypacket/client_cheat_ability.go @@ -0,0 +1,24 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +// ClientCheatAbility functions the same as UpdateAbilities. It is unclear why these two were separated. +// +// Deprecated: ClientCheatAbility is deprecated as of 1.20.10. +type ClientCheatAbility struct { + // AbilityData represents various data about the abilities of a player, such as ability layers or permissions. + AbilityData proto.AbilityData +} + +// ID ... +func (*ClientCheatAbility) ID() uint32 { + return packet.IDClientCheatAbility +} + +func (pk *ClientCheatAbility) Marshal(io protocol.IO) { + protocol.Single(io, &pk.AbilityData) +} diff --git a/legacyver/legacypacket/command_block_update.go b/legacyver/legacypacket/command_block_update.go new file mode 100644 index 0000000..ad09c5d --- /dev/null +++ b/legacyver/legacypacket/command_block_update.go @@ -0,0 +1,88 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +const ( + CommandBlockImpulse = iota + CommandBlockRepeating + CommandBlockChain +) + +// CommandBlockUpdate is sent by the client to update a command block at a specific position. The command +// block may be either a physical block or an entity. +type CommandBlockUpdate struct { + // Block specifies if the command block updated was an actual physical block. If false, the command block + // is in a minecart and has an entity runtime ID instead. + Block bool + + // Position is the position of the command block updated. It is only set if Block is set to true. Nothing + // happens if no command block is set at this position. + Position protocol.BlockPos + // Mode is the mode of the command block. It is either CommandBlockImpulse, CommandBlockChain or + // CommandBlockRepeat. It is only set if Block is set to true. + Mode uint32 + // NeedsRedstone specifies if the command block needs to be powered by redstone to be activated. If false, + // the command block is always active. The field is only set if Block is set to true. + NeedsRedstone bool + // Conditional specifies the behaviour of the command block if the command block before it (the opposite + // side of the direction the arrow if facing) fails to execute. If set to false, it will activate at all + // times, whereas if set to true, it will activate only if the previous command block executed + // successfully. The field is only set if Block is set to true. + Conditional bool + + // MinecartEntityRuntimeID is the runtime ID of the minecart entity carrying the command block that is + // updated. It is set only if Block is set to false. + MinecartEntityRuntimeID uint64 + + // Command is the command currently entered in the command block. This is the command that is executed + // when the command block is activated. + Command string + // LastOutput is the output of the last command executed by the command block. It may be left empty to + // show simply no output at all, in combination with setting ShouldTrackOutput to false. + LastOutput string + // Name is the name of the command block updated. If not empty, it will show this name hovering above the + // command block when hovering over the block with the cursor. + Name string + // FilteredName is a filtered version of Name with all the profanity removed. The client will use this + // over Name if this field is not empty and they have the "Filter Profanity" setting enabled. + FilteredName string + // ShouldTrackOutput specifies if the command block tracks output. If set to false, the output box won't + // be shown within the command block. + ShouldTrackOutput bool + // TickDelay is the delay in ticks between executions of a command block, if it is a repeating command + // block. + TickDelay int32 + // ExecuteOnFirstTick specifies if the command block should execute on the first tick, AKA as soon as the + // command block is enabled. + ExecuteOnFirstTick bool +} + +// ID ... +func (*CommandBlockUpdate) ID() uint32 { + return packet.IDCommandBlockUpdate +} + +func (pk *CommandBlockUpdate) Marshal(io protocol.IO) { + io.Bool(&pk.Block) + if pk.Block { + io.UBlockPos(&pk.Position) + io.Varuint32(&pk.Mode) + io.Bool(&pk.NeedsRedstone) + io.Bool(&pk.Conditional) + } else { + io.Varuint64(&pk.MinecartEntityRuntimeID) + } + io.String(&pk.Command) + io.String(&pk.LastOutput) + io.String(&pk.Name) + if proto.IsProtoGTE(io, proto.ID776) { + io.String(&pk.FilteredName) + } + io.Bool(&pk.ShouldTrackOutput) + io.Int32(&pk.TickDelay) + io.Bool(&pk.ExecuteOnFirstTick) +} diff --git a/legacyver/legacypacket/creative_content.go b/legacyver/legacypacket/creative_content.go new file mode 100644 index 0000000..349719e --- /dev/null +++ b/legacyver/legacypacket/creative_content.go @@ -0,0 +1,53 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +// CreativeContent is a packet sent by the server to set the creative inventory's content for a player. +// Introduced in 1.16, this packet replaces the previous method - sending an InventoryContent packet with +// creative inventory window ID. +// As of v1.21.60, this packet is no longer required to be sent as part of the login sequence however the +// client will crash if they try to open their creative inventory before receiving this packet. Every item +// must be part of a group, any items that are not part of a group will need to reference an "anonymous group" +// which has an empty name OR no icon. The order of Groups and Items is how the client will render items +// in the creative inventory compared to the previous, hard coded order. +// +// Below is an example of defining 2 ungrouped items, 2 grouped items and then another 2 ungrouped items, all +// in the nature category. +// +// CreativeContent{ +// Groups: []protocol.CreativeGroup{ +// {Category: 1}, // No name or icon, this is the "anonymous group" +// {Category: 1, Name: "itemGroup.name.planks", Icon: protocol.ItemStack{...}}, // A "planks" group +// {Category: 1}, // Another "anonymous group" +// }, +// Items: []protocol.CreativeItem{ +// {CreativeItemNetworkID: 0, Item: protocol.ItemStack{...}, GroupIndex: 0}, // Ungrouped before "planks" +// {CreativeItemNetworkID: 1, Item: protocol.ItemStack{...}, GroupIndex: 0}, // Ungrouped before "planks" +// {CreativeItemNetworkID: 2, Item: protocol.ItemStack{...}, GroupIndex: 1}, // Grouped under the "planks" group +// {CreativeItemNetworkID: 3, Item: protocol.ItemStack{...}, GroupIndex: 1}, // Grouped under the "planks" group +// {CreativeItemNetworkID: 4, Item: protocol.ItemStack{...}, GroupIndex: 2}, // Ungrouped after "planks" +// {CreativeItemNetworkID: 5, Item: protocol.ItemStack{...}, GroupIndex: 2}, // Ungrouped after "planks" +// } +// } +type CreativeContent struct { + // Groups is a list of the groups that should be added to the creative inventory. + Groups []protocol.CreativeGroup + // Items is a list of the items that should be added to the creative inventory. + Items []proto.CreativeItem +} + +// ID ... +func (*CreativeContent) ID() uint32 { + return packet.IDCreativeContent +} + +func (pk *CreativeContent) Marshal(io protocol.IO) { + if proto.IsProtoGTE(io, proto.ID776) { + protocol.Slice(io, &pk.Groups) + } + protocol.Slice(io, &pk.Items) +} diff --git a/legacyver/legacypacket/item_registry.go b/legacyver/legacypacket/item_registry.go new file mode 100644 index 0000000..e34e033 --- /dev/null +++ b/legacyver/legacypacket/item_registry.go @@ -0,0 +1,25 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +// ItemRegistry is sent by the server to send the client a list of available items and attach client-side +// components to a custom item. This packet was formerly known as the ItemComponent packet before 1.21.60, +// which did not include item definitions but only the components. +type ItemRegistry struct { + // Items is a list of all items with their legacy IDs which are available in the game. Failing to send any + // of the items that are in the game will crash mobile clients. Any custom components are also attached to + // the items in this list. + Items []proto.ItemEntry +} + +// ID ... +func (*ItemRegistry) ID() uint32 { + return packet.IDItemRegistry +} +func (pk *ItemRegistry) Marshal(io protocol.IO) { + protocol.Slice(io, &pk.Items) +} diff --git a/legacyver/legacypacket/start_game.go b/legacyver/legacypacket/start_game.go index 5e66b54..fe6bdc2 100644 --- a/legacyver/legacypacket/start_game.go +++ b/legacyver/legacypacket/start_game.go @@ -200,7 +200,7 @@ type StartGame struct { Blocks []protocol.BlockEntry // Items is a list of all items with their legacy IDs which are available in the game. Failing to send any // of the items that are in the game will crash mobile clients. - Items []protocol.ItemEntry + Items []proto.LegacyItemRegistryEntry // MultiPlayerCorrelationID is a unique ID specifying the multi-player session of the player. A random // UUID should be filled out for this field. MultiPlayerCorrelationID string @@ -316,7 +316,11 @@ func (pk *StartGame) Marshal(io protocol.IO) { io.Int64(&pk.Time) io.Varint32(&pk.EnchantmentSeed) protocol.Slice(io, &pk.Blocks) - protocol.Slice(io, &pk.Items) + if proto.IsProtoLT(io, proto.ID776) { + protocol.Slice(io, &pk.Items) + } else { + proto.EmptySlice(io, &pk.Items) + } io.String(&pk.MultiPlayerCorrelationID) io.Bool(&pk.ServerAuthoritativeInventory) io.String(&pk.GameVersion) diff --git a/legacyver/legacypacket/structure_block_update.go b/legacyver/legacypacket/structure_block_update.go new file mode 100644 index 0000000..43c535f --- /dev/null +++ b/legacyver/legacypacket/structure_block_update.go @@ -0,0 +1,82 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +const ( + StructureBlockData = iota + StructureBlockSave + StructureBlockLoad + StructureBlockCorner + StructureBlockInvalid + StructureBlockExport +) + +const ( + StructureRedstoneSaveModeMemory = iota + StructureRedstoneSaveModeDisk +) + +// StructureBlockUpdate is sent by the client when it updates a structure block using the in-game UI. The +// data it contains depends on the type of structure block that it is. In Minecraft Bedrock Edition v1.11, +// there is only the Export structure block type, but in v1.13 the ones present in Java Edition will, +// according to the wiki, be added too. +type StructureBlockUpdate struct { + // Position is the position of the structure block that is updated. + Position protocol.BlockPos + // StructureName is the name of the structure that was set in the structure block's UI. This is the name + // used to export the structure to a file. + StructureName string + // FilteredStructureName is a filtered version of StructureName with all the profanity removed. The client + // will use this over StructureName if this field is not empty and they have the "Filter Profanity" + // setting enabled. + FilteredStructureName string + // DataField is the name of a function to run, usually used during natural generation. A description can + // be found here: https://minecraft.wiki/w/Structure_Block#Data. + DataField string + // IncludePlayers specifies if the 'Include Players' toggle has been enabled, meaning players are also + // exported by the structure block. + IncludePlayers bool + // ShowBoundingBox specifies if the structure block should have its bounds outlined. A thin line will + // encapsulate the bounds of the structure if set to true. + ShowBoundingBox bool + // StructureBlockType is the type of the structure block updated. A list of structure block types that + // will be used can be found in the constants above. + StructureBlockType int32 + // Settings is a struct of settings that should be used for exporting the structure. These settings are + // identical to the last sent in the StructureBlockUpdate packet by the client. + Settings protocol.StructureSettings + // RedstoneSaveMode is the mode that should be used to save the structure when used with redstone. In + // Java Edition, this is always stored in memory, but in Bedrock Edition it can be stored either to disk + // or memory. See the constants above for the options. + RedstoneSaveMode int32 + // ShouldTrigger specifies if the structure block should be triggered immediately after this packet + // reaches the server. + ShouldTrigger bool + // Waterlogged specifies if non-air blocks replace water or combine with water. + Waterlogged bool +} + +// ID ... +func (*StructureBlockUpdate) ID() uint32 { + return packet.IDStructureBlockUpdate +} + +func (pk *StructureBlockUpdate) Marshal(io protocol.IO) { + io.UBlockPos(&pk.Position) + io.String(&pk.StructureName) + if proto.IsProtoGTE(io, proto.ID776) { + io.String(&pk.FilteredStructureName) + } + io.String(&pk.DataField) + io.Bool(&pk.IncludePlayers) + io.Bool(&pk.ShowBoundingBox) + io.Varint32(&pk.StructureBlockType) + protocol.Single(io, &pk.Settings) + io.Varint32(&pk.RedstoneSaveMode) + io.Bool(&pk.ShouldTrigger) + io.Bool(&pk.Waterlogged) +} diff --git a/legacyver/legacypacket/update_abilities.go b/legacyver/legacypacket/update_abilities.go new file mode 100644 index 0000000..10a5dc4 --- /dev/null +++ b/legacyver/legacypacket/update_abilities.go @@ -0,0 +1,23 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +// UpdateAbilities is a packet sent from the server to the client to update the abilities of the player. It, along with +// the UpdateAdventureSettings packet, are replacements of the AdventureSettings packet since v1.19.10. +type UpdateAbilities struct { + // AbilityData represents various data about the abilities of a player, such as ability layers or permissions. + AbilityData proto.AbilityData +} + +// ID ... +func (*UpdateAbilities) ID() uint32 { + return packet.IDUpdateAbilities +} + +func (pk *UpdateAbilities) Marshal(io protocol.IO) { + protocol.Single(io, &pk.AbilityData) +} diff --git a/legacyver/proto/ability.go b/legacyver/proto/ability.go new file mode 100644 index 0000000..d8312a7 --- /dev/null +++ b/legacyver/proto/ability.go @@ -0,0 +1,108 @@ +package proto + +import ( + "github.com/sandertv/gophertunnel/minecraft/protocol" +) + +// AbilityData represents various data about the abilities of a player, such as ability layers or permissions. +type AbilityData struct { + // EntityUniqueID is a unique identifier of the player. It appears it is not required to fill this field + // out with a correct value. Simply writing 0 seems to work. + EntityUniqueID int64 + // PlayerPermissions is the permission level of the player as it shows up in the player list built up using + // the PlayerList packet. + PlayerPermissions byte + // CommandPermissions is a set of permissions that specify what commands a player is allowed to execute. + CommandPermissions byte + // Layers contains all ability layers and their potential values. This should at least have one entry, being the + // base layer. + Layers []AbilityLayer +} + +// Marshal encodes/decodes an AbilityData. +func (x *AbilityData) Marshal(r protocol.IO) { + r.Int64(&x.EntityUniqueID) + r.Uint8(&x.PlayerPermissions) + r.Uint8(&x.CommandPermissions) + protocol.SliceUint8Length(r, &x.Layers) +} + +// ToLatest ... +func (x *AbilityData) ToLatest() protocol.AbilityData { + layers := make([]protocol.AbilityLayer, len(x.Layers)) + for i, layer := range x.Layers { + layers[i] = layer.ToLatest() + } + return protocol.AbilityData{ + EntityUniqueID: x.EntityUniqueID, + PlayerPermissions: x.PlayerPermissions, + CommandPermissions: x.CommandPermissions, + Layers: layers, + } +} + +// FromLatest ... +func (x *AbilityData) FromLatest(y protocol.AbilityData) AbilityData { + layers := make([]AbilityLayer, len(y.Layers)) + for i, layer := range y.Layers { + layers[i] = (&AbilityLayer{}).FromLatest(layer) + } + x.EntityUniqueID = y.EntityUniqueID + x.PlayerPermissions = y.PlayerPermissions + x.CommandPermissions = y.CommandPermissions + x.Layers = layers + return *x +} + +// AbilityLayer represents the abilities of a specific layer, such as the base layer or the spectator layer. +type AbilityLayer struct { + // Type represents the type of the layer. This is one of the AbilityLayerType constants defined above. + Type uint16 + // Abilities is a set of abilities that are enabled for the layer. This is one of the Ability constants defined + // above. + Abilities uint32 + // Values is a set of values that are associated with the enabled abilities, representing the values of the + // abilities. + Values uint32 + // FlySpeed is the default horizontal fly speed of the layer. + FlySpeed float32 + // VerticalFlySpeed is the default vertical fly speed of the layer. + VerticalFlySpeed float32 + // WalkSpeed is the default walk speed of the layer. + WalkSpeed float32 +} + +// Marshal encodes/decodes an AbilityLayer. +func (x *AbilityLayer) Marshal(r protocol.IO) { + r.Uint16(&x.Type) + r.Uint32(&x.Abilities) + r.Uint32(&x.Values) + r.Float32(&x.FlySpeed) + if IsProtoGTE(r, ID776) { + r.Float32(&x.VerticalFlySpeed) + } + r.Float32(&x.WalkSpeed) +} + +// ToLatest ... +func (x *AbilityLayer) ToLatest() protocol.AbilityLayer { + return protocol.AbilityLayer{ + Type: x.Type, + Abilities: x.Abilities, + Values: x.Values, + FlySpeed: x.FlySpeed, + VerticalFlySpeed: x.VerticalFlySpeed, + WalkSpeed: x.WalkSpeed, + } +} + +// FromLatest ... +func (x *AbilityLayer) FromLatest(y protocol.AbilityLayer) AbilityLayer { + x.Type = y.Type + x.Abilities = y.Abilities + x.Values = y.Values + x.FlySpeed = y.FlySpeed + x.VerticalFlySpeed = y.VerticalFlySpeed + x.WalkSpeed = y.WalkSpeed + return *x +} diff --git a/legacyver/proto/camera.go b/legacyver/proto/camera.go index 0eec059..e0b7e6c 100644 --- a/legacyver/proto/camera.go +++ b/legacyver/proto/camera.go @@ -41,6 +41,10 @@ type CameraPreset struct { // Radius is only used in a follow_orbit camera and controls how far away from the player the camera should // be rendered. Radius protocol.Optional[float32] + // MinYawLimit is the minimum yaw limit of the camera. + MinYawLimit protocol.Optional[float32] + // MaxYawLimit is the maximum yaw limit of the camera. + MaxYawLimit protocol.Optional[float32] // AudioListener defines where the audio should be played from when using this preset. This is one of the // constants above. AudioListener protocol.Optional[byte] @@ -95,6 +99,8 @@ func (x *CameraPreset) ToLatest() protocol.CameraPreset { ViewOffset: x.ViewOffset, EntityOffset: x.EntityOffset, Radius: x.Radius, + MinYawLimit: x.MinYawLimit, + MaxYawLimit: x.MaxYawLimit, AudioListener: x.AudioListener, PlayerEffects: x.PlayerEffects, AlignTargetAndCameraForward: x.AlignTargetAndCameraForward, @@ -123,6 +129,10 @@ func (x *CameraPreset) Marshal(r protocol.IO) { if IsProtoGTE(r, ID766) { protocol.OptionalFunc(r, &x.TrackingRadius, r.Float32) } + if IsProtoGTE(r, ID776) { + protocol.OptionalFunc(r, &x.MinYawLimit, r.Float32) + protocol.OptionalFunc(r, &x.MaxYawLimit, r.Float32) + } protocol.OptionalFunc(r, &x.ViewOffset, r.Vec2) if IsProtoGTE(r, ID729) { protocol.OptionalFunc(r, &x.EntityOffset, r.Vec3) diff --git a/legacyver/proto/creative.go b/legacyver/proto/creative.go new file mode 100644 index 0000000..5b80c3d --- /dev/null +++ b/legacyver/proto/creative.go @@ -0,0 +1,41 @@ +package proto + +import "github.com/sandertv/gophertunnel/minecraft/protocol" + +// CreativeItem represents a creative item present in the creative inventory. +type CreativeItem struct { + // CreativeItemNetworkID is a unique ID for the creative item. It has to be unique for each creative item + // sent to the client. An incrementing ID per creative item does the job. + CreativeItemNetworkID uint32 + // Item is the item that should be added to the creative inventory. + Item protocol.ItemStack + // GroupIndex is the index of the group that the item should be placed in. It is the index of the group in + // the CreativeContent packet previously sent to the client. + GroupIndex uint32 +} + +// ToLatest ... +func (x *CreativeItem) ToLatest() protocol.CreativeItem { + return protocol.CreativeItem{ + CreativeItemNetworkID: x.CreativeItemNetworkID, + Item: x.Item, + GroupIndex: x.GroupIndex, + } +} + +// FromLatest ... +func (x *CreativeItem) FromLatest(y protocol.CreativeItem) CreativeItem { + x.CreativeItemNetworkID = y.CreativeItemNetworkID + x.Item = y.Item + x.GroupIndex = y.GroupIndex + return *x +} + +// Marshal encodes/decodes a CreativeItem. +func (x *CreativeItem) Marshal(r protocol.IO) { + r.Varuint32(&x.CreativeItemNetworkID) + r.Item(&x.Item) + if IsProtoGTE(r, ID776) { + r.Varuint32(&x.GroupIndex) + } +} diff --git a/legacyver/proto/id.go b/legacyver/proto/id.go index 920d08d..9ef8cb4 100644 --- a/legacyver/proto/id.go +++ b/legacyver/proto/id.go @@ -3,6 +3,7 @@ package proto import "github.com/sandertv/gophertunnel/minecraft/protocol" const ( + ID776 = 776 // v1.21.60 ID766 = 766 // v1.21.50 ID748 = 748 // v1.21.40 ID729 = 729 // v1.21.30 diff --git a/legacyver/proto/item.go b/legacyver/proto/item.go new file mode 100644 index 0000000..4ddcbce --- /dev/null +++ b/legacyver/proto/item.go @@ -0,0 +1,92 @@ +package proto + +import ( + "github.com/sandertv/gophertunnel/minecraft/nbt" + "github.com/sandertv/gophertunnel/minecraft/protocol" +) + +// LegacyItemRegistryEntry is an item sent in the StartGame item table. It holds a name and a legacy ID, which is used to +// point back to that name. +type LegacyItemRegistryEntry struct { + // Name if the name of the item, which is a name like 'minecraft:stick'. + Name string + // RuntimeID is the ID that is used to identify the item over network. After sending all items in the + // StartGame packet, items will then be identified using these numerical IDs. + RuntimeID int16 + // ComponentBased specifies if the item was created using components, meaning the item is a custom item. + ComponentBased bool +} + +// Marshal encodes/decodes an LegacyItemRegistryEntry. +func (x *LegacyItemRegistryEntry) Marshal(r protocol.IO) { + r.String(&x.Name) + r.Int16(&x.RuntimeID) + r.Bool(&x.ComponentBased) +} + +// FromLatest ... +func (x *LegacyItemRegistryEntry) FromLatest(y protocol.ItemEntry) LegacyItemRegistryEntry { + x.Name = y.Name + x.RuntimeID = y.RuntimeID + x.ComponentBased = y.ComponentBased + return *x +} + +// ToLatest ... +func (x *LegacyItemRegistryEntry) ToLatest() protocol.ItemEntry { + return protocol.ItemEntry{ + Name: x.Name, + RuntimeID: x.RuntimeID, + ComponentBased: x.ComponentBased, + Version: 2, + } +} + +// ItemEntry is an item sent in the StartGame item table. It holds a name and a legacy ID, which is used to +// point back to that name. +type ItemEntry struct { + // Name if the name of the item, which is a name like 'minecraft:stick'. + Name string + // RuntimeID is the ID that is used to identify the item over network. After sending all items in the + // StartGame packet, items will then be identified using these numerical IDs. + RuntimeID int16 + // ComponentBased specifies if the item was created using components, meaning the item is a custom item. + ComponentBased bool + // Version is the version of the item entry which is used by the client to determine how to handle the + // item entry. It is one of the constants above. + Version int32 + // Data is a map containing the components and properties of the item, if the item is component based. + Data map[string]any +} + +// ToLatest ... +func (x *ItemEntry) ToLatest() protocol.ItemEntry { + return protocol.ItemEntry{ + Name: x.Name, + RuntimeID: x.RuntimeID, + ComponentBased: x.ComponentBased, + Version: x.Version, + Data: x.Data, + } +} + +// FromLatest ... +func (x *ItemEntry) FromLatest(y protocol.ItemEntry) ItemEntry { + x.Name = y.Name + x.RuntimeID = y.RuntimeID + x.ComponentBased = y.ComponentBased + x.Version = y.Version + x.Data = y.Data + return *x +} + +// Marshal encodes/decodes an ItemEntry. +func (x *ItemEntry) Marshal(r protocol.IO) { + r.String(&x.Name) + if IsProtoGTE(r, ID776) { + r.Int16(&x.RuntimeID) + r.Bool(&x.ComponentBased) + r.Varint32(&x.Version) + } + r.NBT(&x.Data, nbt.NetworkLittleEndian) +} diff --git a/legacyver/protocol.go b/legacyver/protocol.go index d1fd5fc..b49b260 100644 --- a/legacyver/protocol.go +++ b/legacyver/protocol.go @@ -90,6 +90,22 @@ func convertPacketFunc(pid uint32, cur func() packet.Packet) func() packet.Packe return func() packet.Packet { return &legacypacket.StartGame{} } case packet.IDCodeBuilderSource: return func() packet.Packet { return &legacypacket.CodeBuilderSource{} } + case packet.IDItemRegistry: + return func() packet.Packet { return &legacypacket.ItemRegistry{} } + case packet.IDStructureBlockUpdate: + return func() packet.Packet { return &legacypacket.StructureBlockUpdate{} } + case packet.IDBossEvent: + return func() packet.Packet { return &legacypacket.BossEvent{} } + case packet.IDCameraAimAssistPresets: + return func() packet.Packet { return &legacypacket.CameraAimAssistPresets{} } + case packet.IDCommandBlockUpdate: + return func() packet.Packet { return &legacypacket.CommandBlockUpdate{} } + case packet.IDCreativeContent: + return func() packet.Packet { return &legacypacket.CreativeContent{} } + case packet.IDUpdateAbilities: + return func() packet.Packet { return &legacypacket.UpdateAbilities{} } + case packet.IDClientCheatAbility: + return func() packet.Packet { return &legacypacket.ClientCheatAbility{} } default: return cur } @@ -313,7 +329,7 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [ GameType: pk.GameType, EntityMetadata: pk.EntityMetadata, EntityProperties: pk.EntityProperties, - AbilityData: pk.AbilityData, + AbilityData: (&proto.AbilityData{}).FromLatest(pk.AbilityData), EntityLinks: links, DeviceID: pk.DeviceID, BuildPlatform: pk.BuildPlatform, @@ -445,7 +461,15 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [ pk.GameVersion = p.ver pk.BaseGameVersion = p.ver + items := make([]proto.LegacyItemRegistryEntry, len(conn.GameData().Items)) + for i, it := range conn.GameData().Items { + items[i] = (&proto.LegacyItemRegistryEntry{}).FromLatest(it) + } + + items = p.itemTranslator.DowngradeLegacyItemRegistry(items) + pks[pkIndex] = &legacypacket.StartGame{ + Items: items, EntityUniqueID: pk.EntityUniqueID, EntityRuntimeID: pk.EntityRuntimeID, PlayerGameMode: pk.PlayerGameMode, @@ -509,7 +533,6 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [ Time: pk.Time, EnchantmentSeed: pk.EnchantmentSeed, Blocks: pk.Blocks, - Items: pk.Items, MultiPlayerCorrelationID: pk.MultiPlayerCorrelationID, ServerAuthoritativeInventory: pk.ServerAuthoritativeInventory, GameVersion: pk.GameVersion, @@ -531,6 +554,75 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [ Category: pk.Category, CodeStatus: pk.CodeStatus, } + case *packet.ItemRegistry: + items := make([]proto.ItemEntry, len(pk.Items)) + for i, it := range pk.Items { + items[i] = (&proto.ItemEntry{}).FromLatest(it) + } + pks[pkIndex] = &legacypacket.ItemRegistry{ + Items: items, + } + case *packet.StructureBlockUpdate: + pks[pkIndex] = &legacypacket.StructureBlockUpdate{ + Position: pk.Position, + StructureName: pk.StructureName, + FilteredStructureName: pk.FilteredStructureName, + DataField: pk.DataField, + IncludePlayers: pk.IncludePlayers, + ShowBoundingBox: pk.ShowBoundingBox, + StructureBlockType: pk.StructureBlockType, + Settings: pk.Settings, + RedstoneSaveMode: pk.RedstoneSaveMode, + ShouldTrigger: pk.ShouldTrigger, + Waterlogged: pk.Waterlogged, + } + case *packet.BossEvent: + pks[pkIndex] = &legacypacket.BossEvent{ + BossEntityUniqueID: pk.BossEntityUniqueID, + EventType: pk.EventType, + PlayerUniqueID: pk.PlayerUniqueID, + BossBarTitle: pk.BossBarTitle, + FilteredBossBarTitle: pk.FilteredBossBarTitle, + HealthPercentage: pk.HealthPercentage, + ScreenDarkening: pk.ScreenDarkening, + Colour: pk.Colour, + Overlay: pk.Overlay, + } + case *packet.CameraAimAssistPresets: + pks[pkIndex] = &legacypacket.CameraAimAssistPresets{ + CategoryGroups: pk.CategoryGroups, + Presets: pk.Presets, + Operation: pk.Operation, + } + case *packet.CommandBlockUpdate: + pks[pkIndex] = &legacypacket.CommandBlockUpdate{ + Block: pk.Block, + Position: pk.Position, + Mode: pk.Mode, + NeedsRedstone: pk.NeedsRedstone, + Conditional: pk.Conditional, + MinecartEntityRuntimeID: pk.MinecartEntityRuntimeID, + Command: pk.Command, + LastOutput: pk.LastOutput, + Name: pk.Name, + FilteredName: pk.FilteredName, + ShouldTrackOutput: pk.ShouldTrackOutput, + TickDelay: pk.TickDelay, + ExecuteOnFirstTick: pk.ExecuteOnFirstTick, + } + case *packet.CreativeContent: + items := make([]proto.CreativeItem, len(pk.Items)) + for i, it := range pk.Items { + items[i] = (&proto.CreativeItem{}).FromLatest(it) + } + pks[pkIndex] = &legacypacket.CreativeContent{ + Groups: pk.Groups, + Items: items, + } + case *packet.UpdateAbilities: + pks[pkIndex] = &legacypacket.UpdateAbilities{ + AbilityData: (&proto.AbilityData{}).FromLatest(pk.AbilityData), + } } } @@ -709,7 +801,7 @@ func (p *Protocol) upgradePackets(pks []packet.Packet, conn *minecraft.Conn) []p GameType: pk.GameType, EntityMetadata: pk.EntityMetadata, EntityProperties: pk.EntityProperties, - AbilityData: pk.AbilityData, + AbilityData: pk.AbilityData.ToLatest(), EntityLinks: links, DeviceID: pk.DeviceID, BuildPlatform: pk.BuildPlatform, @@ -901,7 +993,6 @@ func (p *Protocol) upgradePackets(pks []packet.Packet, conn *minecraft.Conn) []p Time: pk.Time, EnchantmentSeed: pk.EnchantmentSeed, Blocks: pk.Blocks, - Items: pk.Items, MultiPlayerCorrelationID: pk.MultiPlayerCorrelationID, ServerAuthoritativeInventory: pk.ServerAuthoritativeInventory, GameVersion: pk.GameVersion, @@ -923,6 +1014,65 @@ func (p *Protocol) upgradePackets(pks []packet.Packet, conn *minecraft.Conn) []p Category: pk.Category, CodeStatus: pk.CodeStatus, } + case *legacypacket.BossEvent: + pks[pkIndex] = &packet.BossEvent{ + BossEntityUniqueID: pk.BossEntityUniqueID, + EventType: pk.EventType, + PlayerUniqueID: pk.PlayerUniqueID, + BossBarTitle: pk.BossBarTitle, + FilteredBossBarTitle: pk.FilteredBossBarTitle, + HealthPercentage: pk.HealthPercentage, + ScreenDarkening: pk.ScreenDarkening, + Colour: pk.Colour, + Overlay: pk.Overlay, + } + case *legacypacket.CommandBlockUpdate: + pks[pkIndex] = &packet.CommandBlockUpdate{ + Block: pk.Block, + Position: pk.Position, + Mode: pk.Mode, + NeedsRedstone: pk.NeedsRedstone, + Conditional: pk.Conditional, + MinecartEntityRuntimeID: pk.MinecartEntityRuntimeID, + Command: pk.Command, + LastOutput: pk.LastOutput, + Name: pk.Name, + FilteredName: pk.FilteredName, + ShouldTrackOutput: pk.ShouldTrackOutput, + TickDelay: pk.TickDelay, + ExecuteOnFirstTick: pk.ExecuteOnFirstTick, + } + case *legacypacket.CreativeContent: + items := make([]protocol.CreativeItem, len(pk.Items)) + for i, it := range pk.Items { + items[i] = it.ToLatest() + } + pks[pkIndex] = &packet.CreativeContent{ + Groups: pk.Groups, + Items: items, + } + case *legacypacket.ItemRegistry: + items := make([]protocol.ItemEntry, len(pk.Items)) + for i, it := range pk.Items { + items[i] = it.ToLatest() + } + pks[pkIndex] = &packet.ItemRegistry{Items: items} + case *legacypacket.StructureBlockUpdate: + pks[pkIndex] = &packet.StructureBlockUpdate{ + Position: pk.Position, + StructureName: pk.StructureName, + FilteredStructureName: pk.FilteredStructureName, + DataField: pk.DataField, + IncludePlayers: pk.IncludePlayers, + ShowBoundingBox: pk.ShowBoundingBox, + StructureBlockType: pk.StructureBlockType, + Settings: pk.Settings, + RedstoneSaveMode: pk.RedstoneSaveMode, + ShouldTrigger: pk.ShouldTrigger, + Waterlogged: pk.Waterlogged, + } + case *legacypacket.UpdateAbilities: + pks[pkIndex] = &packet.UpdateAbilities{AbilityData: pk.AbilityData.ToLatest()} } } return pks diff --git a/legacyver/v766.go b/legacyver/v766.go index 4ca2308..99aae65 100644 --- a/legacyver/v766.go +++ b/legacyver/v766.go @@ -2,12 +2,14 @@ package legacyver import ( _ "embed" + "github.com/akmalfairuz/legacy-version/internal/chunk" + "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) const ( // ItemVersion766 ... - ItemVersion766 = 231 + ItemVersion766 = 221 // BlockVersion766 ... BlockVersion766 int32 = (1 << 24) | (21 << 16) | (50 << 8) ) @@ -20,6 +22,15 @@ var ( //go:embed data/block_states_766.nbt blockStateData766 []byte - itemMappingLatest = mapping.NewItemMapping(itemRuntimeIDData766, requiredItemList766, ItemVersion766, false) - blockMappingLatest = mapping.NewBlockMapping(blockStateData766) + itemMapping766 = mapping.NewItemMapping(itemRuntimeIDData766, requiredItemList766, ItemVersion766, false) + blockMapping766 = mapping.NewBlockMapping(blockStateData766) ) + +func New766() *Protocol { + return &Protocol{ + ver: "1.21.50", + id: proto.ID766, + blockTranslator: NewBlockTranslator(blockMapping766, latestBlockMapping, chunk.NewNetworkPersistentEncoding(blockMapping766, BlockVersion766), chunk.NewBlockPaletteEncoding(blockMapping766, BlockVersion766), false), + itemTranslator: NewItemTranslator(itemMapping766, itemMappingLatest, blockMapping766, blockMappingLatest), + } +} diff --git a/legacyver/v776.go b/legacyver/v776.go new file mode 100644 index 0000000..6c8365d --- /dev/null +++ b/legacyver/v776.go @@ -0,0 +1,25 @@ +package legacyver + +import ( + _ "embed" + "github.com/akmalfairuz/legacy-version/mapping" +) + +const ( + // ItemVersion776 ... + ItemVersion776 = 241 + // BlockVersion776 ... + BlockVersion776 int32 = (1 << 24) | (21 << 16) | (60 << 8) +) + +var ( + //go:embed data/item_runtime_ids_776.nbt + itemRuntimeIDData776 []byte + //go:embed data/required_item_list_776.json + requiredItemList776 []byte + //go:embed data/block_states_776.nbt + blockStateData776 []byte + + itemMappingLatest = mapping.NewItemMapping(itemRuntimeIDData776, requiredItemList776, ItemVersion776, false) + blockMappingLatest = mapping.NewBlockMapping(blockStateData776) +) diff --git a/mapping/item.go b/mapping/item.go index 4ec7d86..1dc34d0 100644 --- a/mapping/item.go +++ b/mapping/item.go @@ -12,7 +12,7 @@ type Item interface { // ItemNameToRuntimeID converts a string ID to an item runtime ID. ItemNameToRuntimeID(string) (int32, bool) RegisterEntry(string) int32 - RegisterEntryRID(string, int32) + RegisterEntryRID(string, int32, uint8) Air() int32 ItemVersion() uint16 } @@ -23,13 +23,16 @@ type DefaultItemMapping struct { itemRuntimeIDsToNames map[int32]string // itemNamesToRuntimeIDs holds a map to translate item string IDs to runtime IDs. itemNamesToRuntimeIDs map[string]int32 - airRID int32 - itemVersion uint16 + // itemRuntimeIDToVersion holds a map to translate item runtime IDs to versions. + itemRuntimeIDToVersion map[int32]uint8 + airRID int32 + itemVersion uint16 } func NewItemMapping(itemRuntimeIDData []byte, requiredItemList []byte, itemVersion uint16, direct bool) *DefaultItemMapping { itemRuntimeIDsToNames := make(map[int32]string) itemNamesToRuntimeIDs := make(map[string]int32) + itemRuntimeIDToVersion := make(map[int32]uint8) var airRID *int32 if direct { @@ -47,8 +50,9 @@ func NewItemMapping(itemRuntimeIDData []byte, requiredItemList []byte, itemVersi } } else { var m map[string]struct { - RuntimeID int16 `json:"runtime_id"` - ComponentBased bool `json:"component_based"` + RuntimeID int16 `json:"runtime_id"` + ComponentBased bool `json:"component_based"` + Version *uint8 `json:"version"` } if err := json.Unmarshal(requiredItemList, &m); err != nil { panic(err) @@ -61,6 +65,9 @@ func NewItemMapping(itemRuntimeIDData []byte, requiredItemList []byte, itemVersi itemNamesToRuntimeIDs[name] = rid itemRuntimeIDsToNames[rid] = name + if data.Version != nil { + itemRuntimeIDToVersion[rid] = *data.Version + } } } @@ -68,7 +75,7 @@ func NewItemMapping(itemRuntimeIDData []byte, requiredItemList []byte, itemVersi panic("couldn't find air") } - return &DefaultItemMapping{itemRuntimeIDsToNames: itemRuntimeIDsToNames, itemNamesToRuntimeIDs: itemNamesToRuntimeIDs, itemVersion: itemVersion} + return &DefaultItemMapping{itemRuntimeIDsToNames: itemRuntimeIDsToNames, itemNamesToRuntimeIDs: itemNamesToRuntimeIDs, itemRuntimeIDToVersion: itemRuntimeIDToVersion, airRID: *airRID, itemVersion: itemVersion} } func (m *DefaultItemMapping) ItemRuntimeIDToName(runtimeID int32) (name string, found bool) { @@ -85,6 +92,13 @@ func (m *DefaultItemMapping) ItemNameToRuntimeID(name string) (runtimeID int32, return rid, ok } +func (m *DefaultItemMapping) ItemRuntimeIDToVersion(runtimeID int32) (version uint8, found bool) { + defer m.mu.Unlock() + m.mu.Lock() + v, ok := m.itemRuntimeIDToVersion[runtimeID] + return v, ok +} + func (m *DefaultItemMapping) RegisterEntry(name string) int32 { defer m.mu.Unlock() m.mu.Lock() @@ -97,12 +111,13 @@ func (m *DefaultItemMapping) RegisterEntry(name string) int32 { return nextRID } -func (m *DefaultItemMapping) RegisterEntryRID(name string, rid int32) { +func (m *DefaultItemMapping) RegisterEntryRID(name string, rid int32, version uint8) { defer m.mu.Unlock() m.mu.Lock() if _, ok := m.itemNamesToRuntimeIDs[name]; !ok { m.itemNamesToRuntimeIDs[name] = rid m.itemRuntimeIDsToNames[rid] = name + m.itemRuntimeIDToVersion[rid] = version } }