From 861a4fe006d527b996f33fb98754c4b9d1ddc7fe Mon Sep 17 00:00:00 2001 From: Sweattypalms Date: Sat, 4 Jan 2025 17:37:06 +0900 Subject: [PATCH 1/8] Get registry entry --- assets/data/registries.json | 17880 ++++++++++++++++ src/lib/derive_macros/Cargo.toml | 3 +- src/lib/derive_macros/src/lib.rs | 8 + .../derive_macros/src/registry/get_entry.rs | 31 + src/lib/derive_macros/src/registry/mod.rs | 2 + .../net/src/packets/outgoing/spawn_entity.rs | 4 +- 6 files changed, 17925 insertions(+), 3 deletions(-) create mode 100644 assets/data/registries.json create mode 100644 src/lib/derive_macros/src/registry/get_entry.rs create mode 100644 src/lib/derive_macros/src/registry/mod.rs diff --git a/assets/data/registries.json b/assets/data/registries.json new file mode 100644 index 00000000..8456d1eb --- /dev/null +++ b/assets/data/registries.json @@ -0,0 +1,17880 @@ +{ + "minecraft:activity": { + "entries": { + "minecraft:admire_item": { + "protocol_id": 12 + }, + "minecraft:avoid": { + "protocol_id": 13 + }, + "minecraft:celebrate": { + "protocol_id": 11 + }, + "minecraft:core": { + "protocol_id": 0 + }, + "minecraft:dig": { + "protocol_id": 25 + }, + "minecraft:emerge": { + "protocol_id": 24 + }, + "minecraft:fight": { + "protocol_id": 10 + }, + "minecraft:hide": { + "protocol_id": 9 + }, + "minecraft:idle": { + "protocol_id": 1 + }, + "minecraft:investigate": { + "protocol_id": 22 + }, + "minecraft:lay_spawn": { + "protocol_id": 20 + }, + "minecraft:long_jump": { + "protocol_id": 16 + }, + "minecraft:meet": { + "protocol_id": 5 + }, + "minecraft:panic": { + "protocol_id": 6 + }, + "minecraft:play": { + "protocol_id": 3 + }, + "minecraft:play_dead": { + "protocol_id": 15 + }, + "minecraft:pre_raid": { + "protocol_id": 8 + }, + "minecraft:raid": { + "protocol_id": 7 + }, + "minecraft:ram": { + "protocol_id": 17 + }, + "minecraft:rest": { + "protocol_id": 4 + }, + "minecraft:ride": { + "protocol_id": 14 + }, + "minecraft:roar": { + "protocol_id": 23 + }, + "minecraft:sniff": { + "protocol_id": 21 + }, + "minecraft:swim": { + "protocol_id": 19 + }, + "minecraft:tongue": { + "protocol_id": 18 + }, + "minecraft:work": { + "protocol_id": 2 + } + }, + "protocol_id": 28 + }, + "minecraft:armor_material": { + "entries": { + "minecraft:armadillo": { + "protocol_id": 7 + }, + "minecraft:chainmail": { + "protocol_id": 1 + }, + "minecraft:diamond": { + "protocol_id": 4 + }, + "minecraft:gold": { + "protocol_id": 3 + }, + "minecraft:iron": { + "protocol_id": 2 + }, + "minecraft:leather": { + "protocol_id": 0 + }, + "minecraft:netherite": { + "protocol_id": 6 + }, + "minecraft:turtle": { + "protocol_id": 5 + } + }, + "protocol_id": 67 + }, + "minecraft:attribute": { + "entries": { + "minecraft:generic.armor": { + "protocol_id": 0 + }, + "minecraft:generic.armor_toughness": { + "protocol_id": 1 + }, + "minecraft:generic.attack_damage": { + "protocol_id": 2 + }, + "minecraft:generic.attack_knockback": { + "protocol_id": 3 + }, + "minecraft:generic.attack_speed": { + "protocol_id": 4 + }, + "minecraft:generic.burning_time": { + "protocol_id": 7 + }, + "minecraft:generic.explosion_knockback_resistance": { + "protocol_id": 8 + }, + "minecraft:generic.fall_damage_multiplier": { + "protocol_id": 10 + }, + "minecraft:generic.flying_speed": { + "protocol_id": 11 + }, + "minecraft:generic.follow_range": { + "protocol_id": 12 + }, + "minecraft:generic.gravity": { + "protocol_id": 13 + }, + "minecraft:generic.jump_strength": { + "protocol_id": 14 + }, + "minecraft:generic.knockback_resistance": { + "protocol_id": 15 + }, + "minecraft:generic.luck": { + "protocol_id": 16 + }, + "minecraft:generic.max_absorption": { + "protocol_id": 17 + }, + "minecraft:generic.max_health": { + "protocol_id": 18 + }, + "minecraft:generic.movement_efficiency": { + "protocol_id": 20 + }, + "minecraft:generic.movement_speed": { + "protocol_id": 21 + }, + "minecraft:generic.oxygen_bonus": { + "protocol_id": 22 + }, + "minecraft:generic.safe_fall_distance": { + "protocol_id": 23 + }, + "minecraft:generic.scale": { + "protocol_id": 24 + }, + "minecraft:generic.step_height": { + "protocol_id": 27 + }, + "minecraft:generic.water_movement_efficiency": { + "protocol_id": 30 + }, + "minecraft:player.block_break_speed": { + "protocol_id": 5 + }, + "minecraft:player.block_interaction_range": { + "protocol_id": 6 + }, + "minecraft:player.entity_interaction_range": { + "protocol_id": 9 + }, + "minecraft:player.mining_efficiency": { + "protocol_id": 19 + }, + "minecraft:player.sneaking_speed": { + "protocol_id": 25 + }, + "minecraft:player.submerged_mining_speed": { + "protocol_id": 28 + }, + "minecraft:player.sweeping_damage_ratio": { + "protocol_id": 29 + }, + "minecraft:zombie.spawn_reinforcements": { + "protocol_id": 26 + } + }, + "protocol_id": 18 + }, + "minecraft:block": { + "default": "minecraft:air", + "entries": { + "minecraft:acacia_button": { + "protocol_id": 389 + }, + "minecraft:acacia_door": { + "protocol_id": 586 + }, + "minecraft:acacia_fence": { + "protocol_id": 578 + }, + "minecraft:acacia_fence_gate": { + "protocol_id": 570 + }, + "minecraft:acacia_hanging_sign": { + "protocol_id": 211 + }, + "minecraft:acacia_leaves": { + "protocol_id": 86 + }, + "minecraft:acacia_log": { + "protocol_id": 50 + }, + "minecraft:acacia_planks": { + "protocol_id": 17 + }, + "minecraft:acacia_pressure_plate": { + "protocol_id": 237 + }, + "minecraft:acacia_sapling": { + "protocol_id": 27 + }, + "minecraft:acacia_sign": { + "protocol_id": 189 + }, + "minecraft:acacia_slab": { + "protocol_id": 543 + }, + "minecraft:acacia_stairs": { + "protocol_id": 457 + }, + "minecraft:acacia_trapdoor": { + "protocol_id": 288 + }, + "minecraft:acacia_wall_hanging_sign": { + "protocol_id": 222 + }, + "minecraft:acacia_wall_sign": { + "protocol_id": 202 + }, + "minecraft:acacia_wood": { + "protocol_id": 70 + }, + "minecraft:activator_rail": { + "protocol_id": 423 + }, + "minecraft:air": { + "protocol_id": 0 + }, + "minecraft:allium": { + "protocol_id": 151 + }, + "minecraft:amethyst_block": { + "protocol_id": 903 + }, + "minecraft:amethyst_cluster": { + "protocol_id": 905 + }, + "minecraft:ancient_debris": { + "protocol_id": 841 + }, + "minecraft:andesite": { + "protocol_id": 6 + }, + "minecraft:andesite_slab": { + "protocol_id": 755 + }, + "minecraft:andesite_stairs": { + "protocol_id": 742 + }, + "minecraft:andesite_wall": { + "protocol_id": 767 + }, + "minecraft:anvil": { + "protocol_id": 408 + }, + "minecraft:attached_melon_stem": { + "protocol_id": 314 + }, + "minecraft:attached_pumpkin_stem": { + "protocol_id": 313 + }, + "minecraft:azalea": { + "protocol_id": 1012 + }, + "minecraft:azalea_leaves": { + "protocol_id": 90 + }, + "minecraft:azure_bluet": { + "protocol_id": 152 + }, + "minecraft:bamboo": { + "protocol_id": 727 + }, + "minecraft:bamboo_block": { + "protocol_id": 56 + }, + "minecraft:bamboo_button": { + "protocol_id": 393 + }, + "minecraft:bamboo_door": { + "protocol_id": 590 + }, + "minecraft:bamboo_fence": { + "protocol_id": 582 + }, + "minecraft:bamboo_fence_gate": { + "protocol_id": 574 + }, + "minecraft:bamboo_hanging_sign": { + "protocol_id": 218 + }, + "minecraft:bamboo_mosaic": { + "protocol_id": 22 + }, + "minecraft:bamboo_mosaic_slab": { + "protocol_id": 548 + }, + "minecraft:bamboo_mosaic_stairs": { + "protocol_id": 462 + }, + "minecraft:bamboo_planks": { + "protocol_id": 21 + }, + "minecraft:bamboo_pressure_plate": { + "protocol_id": 241 + }, + "minecraft:bamboo_sapling": { + "protocol_id": 726 + }, + "minecraft:bamboo_sign": { + "protocol_id": 194 + }, + "minecraft:bamboo_slab": { + "protocol_id": 547 + }, + "minecraft:bamboo_stairs": { + "protocol_id": 461 + }, + "minecraft:bamboo_trapdoor": { + "protocol_id": 292 + }, + "minecraft:bamboo_wall_hanging_sign": { + "protocol_id": 229 + }, + "minecraft:bamboo_wall_sign": { + "protocol_id": 207 + }, + "minecraft:barrel": { + "protocol_id": 774 + }, + "minecraft:barrier": { + "protocol_id": 464 + }, + "minecraft:basalt": { + "protocol_id": 258 + }, + "minecraft:beacon": { + "protocol_id": 352 + }, + "minecraft:bedrock": { + "protocol_id": 31 + }, + "minecraft:bee_nest": { + "protocol_id": 836 + }, + "minecraft:beehive": { + "protocol_id": 837 + }, + "minecraft:beetroots": { + "protocol_id": 601 + }, + "minecraft:bell": { + "protocol_id": 783 + }, + "minecraft:big_dripleaf": { + "protocol_id": 1017 + }, + "minecraft:big_dripleaf_stem": { + "protocol_id": 1018 + }, + "minecraft:birch_button": { + "protocol_id": 387 + }, + "minecraft:birch_door": { + "protocol_id": 584 + }, + "minecraft:birch_fence": { + "protocol_id": 576 + }, + "minecraft:birch_fence_gate": { + "protocol_id": 568 + }, + "minecraft:birch_hanging_sign": { + "protocol_id": 210 + }, + "minecraft:birch_leaves": { + "protocol_id": 84 + }, + "minecraft:birch_log": { + "protocol_id": 48 + }, + "minecraft:birch_planks": { + "protocol_id": 15 + }, + "minecraft:birch_pressure_plate": { + "protocol_id": 235 + }, + "minecraft:birch_sapling": { + "protocol_id": 25 + }, + "minecraft:birch_sign": { + "protocol_id": 188 + }, + "minecraft:birch_slab": { + "protocol_id": 541 + }, + "minecraft:birch_stairs": { + "protocol_id": 349 + }, + "minecraft:birch_trapdoor": { + "protocol_id": 286 + }, + "minecraft:birch_wall_hanging_sign": { + "protocol_id": 221 + }, + "minecraft:birch_wall_sign": { + "protocol_id": 201 + }, + "minecraft:birch_wood": { + "protocol_id": 68 + }, + "minecraft:black_banner": { + "protocol_id": 518 + }, + "minecraft:black_bed": { + "protocol_id": 118 + }, + "minecraft:black_candle": { + "protocol_id": 885 + }, + "minecraft:black_candle_cake": { + "protocol_id": 902 + }, + "minecraft:black_carpet": { + "protocol_id": 493 + }, + "minecraft:black_concrete": { + "protocol_id": 661 + }, + "minecraft:black_concrete_powder": { + "protocol_id": 677 + }, + "minecraft:black_glazed_terracotta": { + "protocol_id": 645 + }, + "minecraft:black_shulker_box": { + "protocol_id": 629 + }, + "minecraft:black_stained_glass": { + "protocol_id": 283 + }, + "minecraft:black_stained_glass_pane": { + "protocol_id": 456 + }, + "minecraft:black_terracotta": { + "protocol_id": 440 + }, + "minecraft:black_wall_banner": { + "protocol_id": 534 + }, + "minecraft:black_wool": { + "protocol_id": 145 + }, + "minecraft:blackstone": { + "protocol_id": 849 + }, + "minecraft:blackstone_slab": { + "protocol_id": 852 + }, + "minecraft:blackstone_stairs": { + "protocol_id": 850 + }, + "minecraft:blackstone_wall": { + "protocol_id": 851 + }, + "minecraft:blast_furnace": { + "protocol_id": 776 + }, + "minecraft:blue_banner": { + "protocol_id": 514 + }, + "minecraft:blue_bed": { + "protocol_id": 114 + }, + "minecraft:blue_candle": { + "protocol_id": 881 + }, + "minecraft:blue_candle_cake": { + "protocol_id": 898 + }, + "minecraft:blue_carpet": { + "protocol_id": 489 + }, + "minecraft:blue_concrete": { + "protocol_id": 657 + }, + "minecraft:blue_concrete_powder": { + "protocol_id": 673 + }, + "minecraft:blue_glazed_terracotta": { + "protocol_id": 641 + }, + "minecraft:blue_ice": { + "protocol_id": 724 + }, + "minecraft:blue_orchid": { + "protocol_id": 150 + }, + "minecraft:blue_shulker_box": { + "protocol_id": 625 + }, + "minecraft:blue_stained_glass": { + "protocol_id": 279 + }, + "minecraft:blue_stained_glass_pane": { + "protocol_id": 452 + }, + "minecraft:blue_terracotta": { + "protocol_id": 436 + }, + "minecraft:blue_wall_banner": { + "protocol_id": 530 + }, + "minecraft:blue_wool": { + "protocol_id": 141 + }, + "minecraft:bone_block": { + "protocol_id": 610 + }, + "minecraft:bookshelf": { + "protocol_id": 167 + }, + "minecraft:brain_coral": { + "protocol_id": 699 + }, + "minecraft:brain_coral_block": { + "protocol_id": 689 + }, + "minecraft:brain_coral_fan": { + "protocol_id": 709 + }, + "minecraft:brain_coral_wall_fan": { + "protocol_id": 719 + }, + "minecraft:brewing_stand": { + "protocol_id": 330 + }, + "minecraft:brick_slab": { + "protocol_id": 555 + }, + "minecraft:brick_stairs": { + "protocol_id": 320 + }, + "minecraft:brick_wall": { + "protocol_id": 759 + }, + "minecraft:bricks": { + "protocol_id": 165 + }, + "minecraft:brown_banner": { + "protocol_id": 515 + }, + "minecraft:brown_bed": { + "protocol_id": 115 + }, + "minecraft:brown_candle": { + "protocol_id": 882 + }, + "minecraft:brown_candle_cake": { + "protocol_id": 899 + }, + "minecraft:brown_carpet": { + "protocol_id": 490 + }, + "minecraft:brown_concrete": { + "protocol_id": 658 + }, + "minecraft:brown_concrete_powder": { + "protocol_id": 674 + }, + "minecraft:brown_glazed_terracotta": { + "protocol_id": 642 + }, + "minecraft:brown_mushroom": { + "protocol_id": 161 + }, + "minecraft:brown_mushroom_block": { + "protocol_id": 305 + }, + "minecraft:brown_shulker_box": { + "protocol_id": 626 + }, + "minecraft:brown_stained_glass": { + "protocol_id": 280 + }, + "minecraft:brown_stained_glass_pane": { + "protocol_id": 453 + }, + "minecraft:brown_terracotta": { + "protocol_id": 437 + }, + "minecraft:brown_wall_banner": { + "protocol_id": 531 + }, + "minecraft:brown_wool": { + "protocol_id": 142 + }, + "minecraft:bubble_column": { + "protocol_id": 731 + }, + "minecraft:bubble_coral": { + "protocol_id": 700 + }, + "minecraft:bubble_coral_block": { + "protocol_id": 690 + }, + "minecraft:bubble_coral_fan": { + "protocol_id": 710 + }, + "minecraft:bubble_coral_wall_fan": { + "protocol_id": 720 + }, + "minecraft:budding_amethyst": { + "protocol_id": 904 + }, + "minecraft:cactus": { + "protocol_id": 250 + }, + "minecraft:cake": { + "protocol_id": 266 + }, + "minecraft:calcite": { + "protocol_id": 923 + }, + "minecraft:calibrated_sculk_sensor": { + "protocol_id": 927 + }, + "minecraft:campfire": { + "protocol_id": 786 + }, + "minecraft:candle": { + "protocol_id": 869 + }, + "minecraft:candle_cake": { + "protocol_id": 886 + }, + "minecraft:carrots": { + "protocol_id": 383 + }, + "minecraft:cartography_table": { + "protocol_id": 777 + }, + "minecraft:carved_pumpkin": { + "protocol_id": 264 + }, + "minecraft:cauldron": { + "protocol_id": 331 + }, + "minecraft:cave_air": { + "protocol_id": 730 + }, + "minecraft:cave_vines": { + "protocol_id": 1009 + }, + "minecraft:cave_vines_plant": { + "protocol_id": 1010 + }, + "minecraft:chain": { + "protocol_id": 309 + }, + "minecraft:chain_command_block": { + "protocol_id": 605 + }, + "minecraft:cherry_button": { + "protocol_id": 390 + }, + "minecraft:cherry_door": { + "protocol_id": 587 + }, + "minecraft:cherry_fence": { + "protocol_id": 579 + }, + "minecraft:cherry_fence_gate": { + "protocol_id": 571 + }, + "minecraft:cherry_hanging_sign": { + "protocol_id": 212 + }, + "minecraft:cherry_leaves": { + "protocol_id": 87 + }, + "minecraft:cherry_log": { + "protocol_id": 51 + }, + "minecraft:cherry_planks": { + "protocol_id": 18 + }, + "minecraft:cherry_pressure_plate": { + "protocol_id": 238 + }, + "minecraft:cherry_sapling": { + "protocol_id": 28 + }, + "minecraft:cherry_sign": { + "protocol_id": 190 + }, + "minecraft:cherry_slab": { + "protocol_id": 544 + }, + "minecraft:cherry_stairs": { + "protocol_id": 458 + }, + "minecraft:cherry_trapdoor": { + "protocol_id": 289 + }, + "minecraft:cherry_wall_hanging_sign": { + "protocol_id": 223 + }, + "minecraft:cherry_wall_sign": { + "protocol_id": 203 + }, + "minecraft:cherry_wood": { + "protocol_id": 71 + }, + "minecraft:chest": { + "protocol_id": 177 + }, + "minecraft:chipped_anvil": { + "protocol_id": 409 + }, + "minecraft:chiseled_bookshelf": { + "protocol_id": 168 + }, + "minecraft:chiseled_copper": { + "protocol_id": 945 + }, + "minecraft:chiseled_deepslate": { + "protocol_id": 1040 + }, + "minecraft:chiseled_nether_bricks": { + "protocol_id": 866 + }, + "minecraft:chiseled_polished_blackstone": { + "protocol_id": 856 + }, + "minecraft:chiseled_quartz_block": { + "protocol_id": 420 + }, + "minecraft:chiseled_red_sandstone": { + "protocol_id": 536 + }, + "minecraft:chiseled_sandstone": { + "protocol_id": 100 + }, + "minecraft:chiseled_stone_bricks": { + "protocol_id": 296 + }, + "minecraft:chiseled_tuff": { + "protocol_id": 917 + }, + "minecraft:chiseled_tuff_bricks": { + "protocol_id": 922 + }, + "minecraft:chorus_flower": { + "protocol_id": 593 + }, + "minecraft:chorus_plant": { + "protocol_id": 592 + }, + "minecraft:clay": { + "protocol_id": 251 + }, + "minecraft:coal_block": { + "protocol_id": 495 + }, + "minecraft:coal_ore": { + "protocol_id": 43 + }, + "minecraft:coarse_dirt": { + "protocol_id": 10 + }, + "minecraft:cobbled_deepslate": { + "protocol_id": 1024 + }, + "minecraft:cobbled_deepslate_slab": { + "protocol_id": 1026 + }, + "minecraft:cobbled_deepslate_stairs": { + "protocol_id": 1025 + }, + "minecraft:cobbled_deepslate_wall": { + "protocol_id": 1027 + }, + "minecraft:cobblestone": { + "protocol_id": 12 + }, + "minecraft:cobblestone_slab": { + "protocol_id": 554 + }, + "minecraft:cobblestone_stairs": { + "protocol_id": 198 + }, + "minecraft:cobblestone_wall": { + "protocol_id": 353 + }, + "minecraft:cobweb": { + "protocol_id": 122 + }, + "minecraft:cocoa": { + "protocol_id": 340 + }, + "minecraft:command_block": { + "protocol_id": 351 + }, + "minecraft:comparator": { + "protocol_id": 414 + }, + "minecraft:composter": { + "protocol_id": 834 + }, + "minecraft:conduit": { + "protocol_id": 725 + }, + "minecraft:copper_block": { + "protocol_id": 932 + }, + "minecraft:copper_bulb": { + "protocol_id": 998 + }, + "minecraft:copper_door": { + "protocol_id": 974 + }, + "minecraft:copper_grate": { + "protocol_id": 990 + }, + "minecraft:copper_ore": { + "protocol_id": 936 + }, + "minecraft:copper_trapdoor": { + "protocol_id": 982 + }, + "minecraft:cornflower": { + "protocol_id": 158 + }, + "minecraft:cracked_deepslate_bricks": { + "protocol_id": 1041 + }, + "minecraft:cracked_deepslate_tiles": { + "protocol_id": 1042 + }, + "minecraft:cracked_nether_bricks": { + "protocol_id": 867 + }, + "minecraft:cracked_polished_blackstone_bricks": { + "protocol_id": 855 + }, + "minecraft:cracked_stone_bricks": { + "protocol_id": 295 + }, + "minecraft:crafter": { + "protocol_id": 1056 + }, + "minecraft:crafting_table": { + "protocol_id": 182 + }, + "minecraft:creeper_head": { + "protocol_id": 402 + }, + "minecraft:creeper_wall_head": { + "protocol_id": 403 + }, + "minecraft:crimson_button": { + "protocol_id": 824 + }, + "minecraft:crimson_door": { + "protocol_id": 826 + }, + "minecraft:crimson_fence": { + "protocol_id": 816 + }, + "minecraft:crimson_fence_gate": { + "protocol_id": 820 + }, + "minecraft:crimson_fungus": { + "protocol_id": 803 + }, + "minecraft:crimson_hanging_sign": { + "protocol_id": 215 + }, + "minecraft:crimson_hyphae": { + "protocol_id": 800 + }, + "minecraft:crimson_nylium": { + "protocol_id": 802 + }, + "minecraft:crimson_planks": { + "protocol_id": 810 + }, + "minecraft:crimson_pressure_plate": { + "protocol_id": 814 + }, + "minecraft:crimson_roots": { + "protocol_id": 809 + }, + "minecraft:crimson_sign": { + "protocol_id": 828 + }, + "minecraft:crimson_slab": { + "protocol_id": 812 + }, + "minecraft:crimson_stairs": { + "protocol_id": 822 + }, + "minecraft:crimson_stem": { + "protocol_id": 798 + }, + "minecraft:crimson_trapdoor": { + "protocol_id": 818 + }, + "minecraft:crimson_wall_hanging_sign": { + "protocol_id": 227 + }, + "minecraft:crimson_wall_sign": { + "protocol_id": 830 + }, + "minecraft:crying_obsidian": { + "protocol_id": 842 + }, + "minecraft:cut_copper": { + "protocol_id": 941 + }, + "minecraft:cut_copper_slab": { + "protocol_id": 957 + }, + "minecraft:cut_copper_stairs": { + "protocol_id": 953 + }, + "minecraft:cut_red_sandstone": { + "protocol_id": 537 + }, + "minecraft:cut_red_sandstone_slab": { + "protocol_id": 561 + }, + "minecraft:cut_sandstone": { + "protocol_id": 101 + }, + "minecraft:cut_sandstone_slab": { + "protocol_id": 552 + }, + "minecraft:cyan_banner": { + "protocol_id": 512 + }, + "minecraft:cyan_bed": { + "protocol_id": 112 + }, + "minecraft:cyan_candle": { + "protocol_id": 879 + }, + "minecraft:cyan_candle_cake": { + "protocol_id": 896 + }, + "minecraft:cyan_carpet": { + "protocol_id": 487 + }, + "minecraft:cyan_concrete": { + "protocol_id": 655 + }, + "minecraft:cyan_concrete_powder": { + "protocol_id": 671 + }, + "minecraft:cyan_glazed_terracotta": { + "protocol_id": 639 + }, + "minecraft:cyan_shulker_box": { + "protocol_id": 623 + }, + "minecraft:cyan_stained_glass": { + "protocol_id": 277 + }, + "minecraft:cyan_stained_glass_pane": { + "protocol_id": 450 + }, + "minecraft:cyan_terracotta": { + "protocol_id": 434 + }, + "minecraft:cyan_wall_banner": { + "protocol_id": 528 + }, + "minecraft:cyan_wool": { + "protocol_id": 139 + }, + "minecraft:damaged_anvil": { + "protocol_id": 410 + }, + "minecraft:dandelion": { + "protocol_id": 147 + }, + "minecraft:dark_oak_button": { + "protocol_id": 391 + }, + "minecraft:dark_oak_door": { + "protocol_id": 588 + }, + "minecraft:dark_oak_fence": { + "protocol_id": 580 + }, + "minecraft:dark_oak_fence_gate": { + "protocol_id": 572 + }, + "minecraft:dark_oak_hanging_sign": { + "protocol_id": 214 + }, + "minecraft:dark_oak_leaves": { + "protocol_id": 88 + }, + "minecraft:dark_oak_log": { + "protocol_id": 52 + }, + "minecraft:dark_oak_planks": { + "protocol_id": 19 + }, + "minecraft:dark_oak_pressure_plate": { + "protocol_id": 239 + }, + "minecraft:dark_oak_sapling": { + "protocol_id": 29 + }, + "minecraft:dark_oak_sign": { + "protocol_id": 192 + }, + "minecraft:dark_oak_slab": { + "protocol_id": 545 + }, + "minecraft:dark_oak_stairs": { + "protocol_id": 459 + }, + "minecraft:dark_oak_trapdoor": { + "protocol_id": 290 + }, + "minecraft:dark_oak_wall_hanging_sign": { + "protocol_id": 225 + }, + "minecraft:dark_oak_wall_sign": { + "protocol_id": 205 + }, + "minecraft:dark_oak_wood": { + "protocol_id": 72 + }, + "minecraft:dark_prismarine": { + "protocol_id": 469 + }, + "minecraft:dark_prismarine_slab": { + "protocol_id": 475 + }, + "minecraft:dark_prismarine_stairs": { + "protocol_id": 472 + }, + "minecraft:daylight_detector": { + "protocol_id": 415 + }, + "minecraft:dead_brain_coral": { + "protocol_id": 694 + }, + "minecraft:dead_brain_coral_block": { + "protocol_id": 684 + }, + "minecraft:dead_brain_coral_fan": { + "protocol_id": 704 + }, + "minecraft:dead_brain_coral_wall_fan": { + "protocol_id": 714 + }, + "minecraft:dead_bubble_coral": { + "protocol_id": 695 + }, + "minecraft:dead_bubble_coral_block": { + "protocol_id": 685 + }, + "minecraft:dead_bubble_coral_fan": { + "protocol_id": 705 + }, + "minecraft:dead_bubble_coral_wall_fan": { + "protocol_id": 715 + }, + "minecraft:dead_bush": { + "protocol_id": 125 + }, + "minecraft:dead_fire_coral": { + "protocol_id": 696 + }, + "minecraft:dead_fire_coral_block": { + "protocol_id": 686 + }, + "minecraft:dead_fire_coral_fan": { + "protocol_id": 706 + }, + "minecraft:dead_fire_coral_wall_fan": { + "protocol_id": 716 + }, + "minecraft:dead_horn_coral": { + "protocol_id": 697 + }, + "minecraft:dead_horn_coral_block": { + "protocol_id": 687 + }, + "minecraft:dead_horn_coral_fan": { + "protocol_id": 707 + }, + "minecraft:dead_horn_coral_wall_fan": { + "protocol_id": 717 + }, + "minecraft:dead_tube_coral": { + "protocol_id": 693 + }, + "minecraft:dead_tube_coral_block": { + "protocol_id": 683 + }, + "minecraft:dead_tube_coral_fan": { + "protocol_id": 703 + }, + "minecraft:dead_tube_coral_wall_fan": { + "protocol_id": 713 + }, + "minecraft:decorated_pot": { + "protocol_id": 1055 + }, + "minecraft:deepslate": { + "protocol_id": 1023 + }, + "minecraft:deepslate_brick_slab": { + "protocol_id": 1038 + }, + "minecraft:deepslate_brick_stairs": { + "protocol_id": 1037 + }, + "minecraft:deepslate_brick_wall": { + "protocol_id": 1039 + }, + "minecraft:deepslate_bricks": { + "protocol_id": 1036 + }, + "minecraft:deepslate_coal_ore": { + "protocol_id": 44 + }, + "minecraft:deepslate_copper_ore": { + "protocol_id": 937 + }, + "minecraft:deepslate_diamond_ore": { + "protocol_id": 180 + }, + "minecraft:deepslate_emerald_ore": { + "protocol_id": 343 + }, + "minecraft:deepslate_gold_ore": { + "protocol_id": 40 + }, + "minecraft:deepslate_iron_ore": { + "protocol_id": 42 + }, + "minecraft:deepslate_lapis_ore": { + "protocol_id": 96 + }, + "minecraft:deepslate_redstone_ore": { + "protocol_id": 243 + }, + "minecraft:deepslate_tile_slab": { + "protocol_id": 1034 + }, + "minecraft:deepslate_tile_stairs": { + "protocol_id": 1033 + }, + "minecraft:deepslate_tile_wall": { + "protocol_id": 1035 + }, + "minecraft:deepslate_tiles": { + "protocol_id": 1032 + }, + "minecraft:detector_rail": { + "protocol_id": 120 + }, + "minecraft:diamond_block": { + "protocol_id": 181 + }, + "minecraft:diamond_ore": { + "protocol_id": 179 + }, + "minecraft:diorite": { + "protocol_id": 4 + }, + "minecraft:diorite_slab": { + "protocol_id": 758 + }, + "minecraft:diorite_stairs": { + "protocol_id": 745 + }, + "minecraft:diorite_wall": { + "protocol_id": 771 + }, + "minecraft:dirt": { + "protocol_id": 9 + }, + "minecraft:dirt_path": { + "protocol_id": 602 + }, + "minecraft:dispenser": { + "protocol_id": 98 + }, + "minecraft:dragon_egg": { + "protocol_id": 338 + }, + "minecraft:dragon_head": { + "protocol_id": 404 + }, + "minecraft:dragon_wall_head": { + "protocol_id": 405 + }, + "minecraft:dried_kelp_block": { + "protocol_id": 680 + }, + "minecraft:dripstone_block": { + "protocol_id": 1008 + }, + "minecraft:dropper": { + "protocol_id": 424 + }, + "minecraft:emerald_block": { + "protocol_id": 347 + }, + "minecraft:emerald_ore": { + "protocol_id": 342 + }, + "minecraft:enchanting_table": { + "protocol_id": 329 + }, + "minecraft:end_gateway": { + "protocol_id": 603 + }, + "minecraft:end_portal": { + "protocol_id": 335 + }, + "minecraft:end_portal_frame": { + "protocol_id": 336 + }, + "minecraft:end_rod": { + "protocol_id": 591 + }, + "minecraft:end_stone": { + "protocol_id": 337 + }, + "minecraft:end_stone_brick_slab": { + "protocol_id": 751 + }, + "minecraft:end_stone_brick_stairs": { + "protocol_id": 737 + }, + "minecraft:end_stone_brick_wall": { + "protocol_id": 770 + }, + "minecraft:end_stone_bricks": { + "protocol_id": 597 + }, + "minecraft:ender_chest": { + "protocol_id": 344 + }, + "minecraft:exposed_chiseled_copper": { + "protocol_id": 944 + }, + "minecraft:exposed_copper": { + "protocol_id": 933 + }, + "minecraft:exposed_copper_bulb": { + "protocol_id": 999 + }, + "minecraft:exposed_copper_door": { + "protocol_id": 975 + }, + "minecraft:exposed_copper_grate": { + "protocol_id": 991 + }, + "minecraft:exposed_copper_trapdoor": { + "protocol_id": 983 + }, + "minecraft:exposed_cut_copper": { + "protocol_id": 940 + }, + "minecraft:exposed_cut_copper_slab": { + "protocol_id": 956 + }, + "minecraft:exposed_cut_copper_stairs": { + "protocol_id": 952 + }, + "minecraft:farmland": { + "protocol_id": 184 + }, + "minecraft:fern": { + "protocol_id": 124 + }, + "minecraft:fire": { + "protocol_id": 173 + }, + "minecraft:fire_coral": { + "protocol_id": 701 + }, + "minecraft:fire_coral_block": { + "protocol_id": 691 + }, + "minecraft:fire_coral_fan": { + "protocol_id": 711 + }, + "minecraft:fire_coral_wall_fan": { + "protocol_id": 721 + }, + "minecraft:fletching_table": { + "protocol_id": 778 + }, + "minecraft:flower_pot": { + "protocol_id": 355 + }, + "minecraft:flowering_azalea": { + "protocol_id": 1013 + }, + "minecraft:flowering_azalea_leaves": { + "protocol_id": 91 + }, + "minecraft:frogspawn": { + "protocol_id": 1053 + }, + "minecraft:frosted_ice": { + "protocol_id": 606 + }, + "minecraft:furnace": { + "protocol_id": 185 + }, + "minecraft:gilded_blackstone": { + "protocol_id": 860 + }, + "minecraft:glass": { + "protocol_id": 94 + }, + "minecraft:glass_pane": { + "protocol_id": 310 + }, + "minecraft:glow_lichen": { + "protocol_id": 318 + }, + "minecraft:glowstone": { + "protocol_id": 262 + }, + "minecraft:gold_block": { + "protocol_id": 163 + }, + "minecraft:gold_ore": { + "protocol_id": 39 + }, + "minecraft:granite": { + "protocol_id": 2 + }, + "minecraft:granite_slab": { + "protocol_id": 754 + }, + "minecraft:granite_stairs": { + "protocol_id": 741 + }, + "minecraft:granite_wall": { + "protocol_id": 763 + }, + "minecraft:grass_block": { + "protocol_id": 8 + }, + "minecraft:gravel": { + "protocol_id": 37 + }, + "minecraft:gray_banner": { + "protocol_id": 510 + }, + "minecraft:gray_bed": { + "protocol_id": 110 + }, + "minecraft:gray_candle": { + "protocol_id": 877 + }, + "minecraft:gray_candle_cake": { + "protocol_id": 894 + }, + "minecraft:gray_carpet": { + "protocol_id": 485 + }, + "minecraft:gray_concrete": { + "protocol_id": 653 + }, + "minecraft:gray_concrete_powder": { + "protocol_id": 669 + }, + "minecraft:gray_glazed_terracotta": { + "protocol_id": 637 + }, + "minecraft:gray_shulker_box": { + "protocol_id": 621 + }, + "minecraft:gray_stained_glass": { + "protocol_id": 275 + }, + "minecraft:gray_stained_glass_pane": { + "protocol_id": 448 + }, + "minecraft:gray_terracotta": { + "protocol_id": 432 + }, + "minecraft:gray_wall_banner": { + "protocol_id": 526 + }, + "minecraft:gray_wool": { + "protocol_id": 137 + }, + "minecraft:green_banner": { + "protocol_id": 516 + }, + "minecraft:green_bed": { + "protocol_id": 116 + }, + "minecraft:green_candle": { + "protocol_id": 883 + }, + "minecraft:green_candle_cake": { + "protocol_id": 900 + }, + "minecraft:green_carpet": { + "protocol_id": 491 + }, + "minecraft:green_concrete": { + "protocol_id": 659 + }, + "minecraft:green_concrete_powder": { + "protocol_id": 675 + }, + "minecraft:green_glazed_terracotta": { + "protocol_id": 643 + }, + "minecraft:green_shulker_box": { + "protocol_id": 627 + }, + "minecraft:green_stained_glass": { + "protocol_id": 281 + }, + "minecraft:green_stained_glass_pane": { + "protocol_id": 454 + }, + "minecraft:green_terracotta": { + "protocol_id": 438 + }, + "minecraft:green_wall_banner": { + "protocol_id": 532 + }, + "minecraft:green_wool": { + "protocol_id": 143 + }, + "minecraft:grindstone": { + "protocol_id": 779 + }, + "minecraft:hanging_roots": { + "protocol_id": 1020 + }, + "minecraft:hay_block": { + "protocol_id": 477 + }, + "minecraft:heavy_core": { + "protocol_id": 1059 + }, + "minecraft:heavy_weighted_pressure_plate": { + "protocol_id": 413 + }, + "minecraft:honey_block": { + "protocol_id": 838 + }, + "minecraft:honeycomb_block": { + "protocol_id": 839 + }, + "minecraft:hopper": { + "protocol_id": 418 + }, + "minecraft:horn_coral": { + "protocol_id": 702 + }, + "minecraft:horn_coral_block": { + "protocol_id": 692 + }, + "minecraft:horn_coral_fan": { + "protocol_id": 712 + }, + "minecraft:horn_coral_wall_fan": { + "protocol_id": 722 + }, + "minecraft:ice": { + "protocol_id": 248 + }, + "minecraft:infested_chiseled_stone_bricks": { + "protocol_id": 304 + }, + "minecraft:infested_cobblestone": { + "protocol_id": 300 + }, + "minecraft:infested_cracked_stone_bricks": { + "protocol_id": 303 + }, + "minecraft:infested_deepslate": { + "protocol_id": 1043 + }, + "minecraft:infested_mossy_stone_bricks": { + "protocol_id": 302 + }, + "minecraft:infested_stone": { + "protocol_id": 299 + }, + "minecraft:infested_stone_bricks": { + "protocol_id": 301 + }, + "minecraft:iron_bars": { + "protocol_id": 308 + }, + "minecraft:iron_block": { + "protocol_id": 164 + }, + "minecraft:iron_door": { + "protocol_id": 232 + }, + "minecraft:iron_ore": { + "protocol_id": 41 + }, + "minecraft:iron_trapdoor": { + "protocol_id": 466 + }, + "minecraft:jack_o_lantern": { + "protocol_id": 265 + }, + "minecraft:jigsaw": { + "protocol_id": 833 + }, + "minecraft:jukebox": { + "protocol_id": 253 + }, + "minecraft:jungle_button": { + "protocol_id": 388 + }, + "minecraft:jungle_door": { + "protocol_id": 585 + }, + "minecraft:jungle_fence": { + "protocol_id": 577 + }, + "minecraft:jungle_fence_gate": { + "protocol_id": 569 + }, + "minecraft:jungle_hanging_sign": { + "protocol_id": 213 + }, + "minecraft:jungle_leaves": { + "protocol_id": 85 + }, + "minecraft:jungle_log": { + "protocol_id": 49 + }, + "minecraft:jungle_planks": { + "protocol_id": 16 + }, + "minecraft:jungle_pressure_plate": { + "protocol_id": 236 + }, + "minecraft:jungle_sapling": { + "protocol_id": 26 + }, + "minecraft:jungle_sign": { + "protocol_id": 191 + }, + "minecraft:jungle_slab": { + "protocol_id": 542 + }, + "minecraft:jungle_stairs": { + "protocol_id": 350 + }, + "minecraft:jungle_trapdoor": { + "protocol_id": 287 + }, + "minecraft:jungle_wall_hanging_sign": { + "protocol_id": 224 + }, + "minecraft:jungle_wall_sign": { + "protocol_id": 204 + }, + "minecraft:jungle_wood": { + "protocol_id": 69 + }, + "minecraft:kelp": { + "protocol_id": 678 + }, + "minecraft:kelp_plant": { + "protocol_id": 679 + }, + "minecraft:ladder": { + "protocol_id": 196 + }, + "minecraft:lantern": { + "protocol_id": 784 + }, + "minecraft:lapis_block": { + "protocol_id": 97 + }, + "minecraft:lapis_ore": { + "protocol_id": 95 + }, + "minecraft:large_amethyst_bud": { + "protocol_id": 906 + }, + "minecraft:large_fern": { + "protocol_id": 502 + }, + "minecraft:lava": { + "protocol_id": 33 + }, + "minecraft:lava_cauldron": { + "protocol_id": 333 + }, + "minecraft:lectern": { + "protocol_id": 780 + }, + "minecraft:lever": { + "protocol_id": 230 + }, + "minecraft:light": { + "protocol_id": 465 + }, + "minecraft:light_blue_banner": { + "protocol_id": 506 + }, + "minecraft:light_blue_bed": { + "protocol_id": 106 + }, + "minecraft:light_blue_candle": { + "protocol_id": 873 + }, + "minecraft:light_blue_candle_cake": { + "protocol_id": 890 + }, + "minecraft:light_blue_carpet": { + "protocol_id": 481 + }, + "minecraft:light_blue_concrete": { + "protocol_id": 649 + }, + "minecraft:light_blue_concrete_powder": { + "protocol_id": 665 + }, + "minecraft:light_blue_glazed_terracotta": { + "protocol_id": 633 + }, + "minecraft:light_blue_shulker_box": { + "protocol_id": 617 + }, + "minecraft:light_blue_stained_glass": { + "protocol_id": 271 + }, + "minecraft:light_blue_stained_glass_pane": { + "protocol_id": 444 + }, + "minecraft:light_blue_terracotta": { + "protocol_id": 428 + }, + "minecraft:light_blue_wall_banner": { + "protocol_id": 522 + }, + "minecraft:light_blue_wool": { + "protocol_id": 133 + }, + "minecraft:light_gray_banner": { + "protocol_id": 511 + }, + "minecraft:light_gray_bed": { + "protocol_id": 111 + }, + "minecraft:light_gray_candle": { + "protocol_id": 878 + }, + "minecraft:light_gray_candle_cake": { + "protocol_id": 895 + }, + "minecraft:light_gray_carpet": { + "protocol_id": 486 + }, + "minecraft:light_gray_concrete": { + "protocol_id": 654 + }, + "minecraft:light_gray_concrete_powder": { + "protocol_id": 670 + }, + "minecraft:light_gray_glazed_terracotta": { + "protocol_id": 638 + }, + "minecraft:light_gray_shulker_box": { + "protocol_id": 622 + }, + "minecraft:light_gray_stained_glass": { + "protocol_id": 276 + }, + "minecraft:light_gray_stained_glass_pane": { + "protocol_id": 449 + }, + "minecraft:light_gray_terracotta": { + "protocol_id": 433 + }, + "minecraft:light_gray_wall_banner": { + "protocol_id": 527 + }, + "minecraft:light_gray_wool": { + "protocol_id": 138 + }, + "minecraft:light_weighted_pressure_plate": { + "protocol_id": 412 + }, + "minecraft:lightning_rod": { + "protocol_id": 1006 + }, + "minecraft:lilac": { + "protocol_id": 498 + }, + "minecraft:lily_of_the_valley": { + "protocol_id": 160 + }, + "minecraft:lily_pad": { + "protocol_id": 324 + }, + "minecraft:lime_banner": { + "protocol_id": 508 + }, + "minecraft:lime_bed": { + "protocol_id": 108 + }, + "minecraft:lime_candle": { + "protocol_id": 875 + }, + "minecraft:lime_candle_cake": { + "protocol_id": 892 + }, + "minecraft:lime_carpet": { + "protocol_id": 483 + }, + "minecraft:lime_concrete": { + "protocol_id": 651 + }, + "minecraft:lime_concrete_powder": { + "protocol_id": 667 + }, + "minecraft:lime_glazed_terracotta": { + "protocol_id": 635 + }, + "minecraft:lime_shulker_box": { + "protocol_id": 619 + }, + "minecraft:lime_stained_glass": { + "protocol_id": 273 + }, + "minecraft:lime_stained_glass_pane": { + "protocol_id": 446 + }, + "minecraft:lime_terracotta": { + "protocol_id": 430 + }, + "minecraft:lime_wall_banner": { + "protocol_id": 524 + }, + "minecraft:lime_wool": { + "protocol_id": 135 + }, + "minecraft:lodestone": { + "protocol_id": 848 + }, + "minecraft:loom": { + "protocol_id": 773 + }, + "minecraft:magenta_banner": { + "protocol_id": 505 + }, + "minecraft:magenta_bed": { + "protocol_id": 105 + }, + "minecraft:magenta_candle": { + "protocol_id": 872 + }, + "minecraft:magenta_candle_cake": { + "protocol_id": 889 + }, + "minecraft:magenta_carpet": { + "protocol_id": 480 + }, + "minecraft:magenta_concrete": { + "protocol_id": 648 + }, + "minecraft:magenta_concrete_powder": { + "protocol_id": 664 + }, + "minecraft:magenta_glazed_terracotta": { + "protocol_id": 632 + }, + "minecraft:magenta_shulker_box": { + "protocol_id": 616 + }, + "minecraft:magenta_stained_glass": { + "protocol_id": 270 + }, + "minecraft:magenta_stained_glass_pane": { + "protocol_id": 443 + }, + "minecraft:magenta_terracotta": { + "protocol_id": 427 + }, + "minecraft:magenta_wall_banner": { + "protocol_id": 521 + }, + "minecraft:magenta_wool": { + "protocol_id": 132 + }, + "minecraft:magma_block": { + "protocol_id": 607 + }, + "minecraft:mangrove_button": { + "protocol_id": 392 + }, + "minecraft:mangrove_door": { + "protocol_id": 589 + }, + "minecraft:mangrove_fence": { + "protocol_id": 581 + }, + "minecraft:mangrove_fence_gate": { + "protocol_id": 573 + }, + "minecraft:mangrove_hanging_sign": { + "protocol_id": 217 + }, + "minecraft:mangrove_leaves": { + "protocol_id": 89 + }, + "minecraft:mangrove_log": { + "protocol_id": 53 + }, + "minecraft:mangrove_planks": { + "protocol_id": 20 + }, + "minecraft:mangrove_pressure_plate": { + "protocol_id": 240 + }, + "minecraft:mangrove_propagule": { + "protocol_id": 30 + }, + "minecraft:mangrove_roots": { + "protocol_id": 54 + }, + "minecraft:mangrove_sign": { + "protocol_id": 193 + }, + "minecraft:mangrove_slab": { + "protocol_id": 546 + }, + "minecraft:mangrove_stairs": { + "protocol_id": 460 + }, + "minecraft:mangrove_trapdoor": { + "protocol_id": 291 + }, + "minecraft:mangrove_wall_hanging_sign": { + "protocol_id": 226 + }, + "minecraft:mangrove_wall_sign": { + "protocol_id": 206 + }, + "minecraft:mangrove_wood": { + "protocol_id": 73 + }, + "minecraft:medium_amethyst_bud": { + "protocol_id": 907 + }, + "minecraft:melon": { + "protocol_id": 312 + }, + "minecraft:melon_stem": { + "protocol_id": 316 + }, + "minecraft:moss_block": { + "protocol_id": 1016 + }, + "minecraft:moss_carpet": { + "protocol_id": 1014 + }, + "minecraft:mossy_cobblestone": { + "protocol_id": 169 + }, + "minecraft:mossy_cobblestone_slab": { + "protocol_id": 750 + }, + "minecraft:mossy_cobblestone_stairs": { + "protocol_id": 736 + }, + "minecraft:mossy_cobblestone_wall": { + "protocol_id": 354 + }, + "minecraft:mossy_stone_brick_slab": { + "protocol_id": 748 + }, + "minecraft:mossy_stone_brick_stairs": { + "protocol_id": 734 + }, + "minecraft:mossy_stone_brick_wall": { + "protocol_id": 762 + }, + "minecraft:mossy_stone_bricks": { + "protocol_id": 294 + }, + "minecraft:moving_piston": { + "protocol_id": 146 + }, + "minecraft:mud": { + "protocol_id": 1022 + }, + "minecraft:mud_brick_slab": { + "protocol_id": 557 + }, + "minecraft:mud_brick_stairs": { + "protocol_id": 322 + }, + "minecraft:mud_brick_wall": { + "protocol_id": 765 + }, + "minecraft:mud_bricks": { + "protocol_id": 298 + }, + "minecraft:muddy_mangrove_roots": { + "protocol_id": 55 + }, + "minecraft:mushroom_stem": { + "protocol_id": 307 + }, + "minecraft:mycelium": { + "protocol_id": 323 + }, + "minecraft:nether_brick_fence": { + "protocol_id": 326 + }, + "minecraft:nether_brick_slab": { + "protocol_id": 558 + }, + "minecraft:nether_brick_stairs": { + "protocol_id": 327 + }, + "minecraft:nether_brick_wall": { + "protocol_id": 766 + }, + "minecraft:nether_bricks": { + "protocol_id": 325 + }, + "minecraft:nether_gold_ore": { + "protocol_id": 45 + }, + "minecraft:nether_portal": { + "protocol_id": 263 + }, + "minecraft:nether_quartz_ore": { + "protocol_id": 417 + }, + "minecraft:nether_sprouts": { + "protocol_id": 797 + }, + "minecraft:nether_wart": { + "protocol_id": 328 + }, + "minecraft:nether_wart_block": { + "protocol_id": 608 + }, + "minecraft:netherite_block": { + "protocol_id": 840 + }, + "minecraft:netherrack": { + "protocol_id": 255 + }, + "minecraft:note_block": { + "protocol_id": 102 + }, + "minecraft:oak_button": { + "protocol_id": 385 + }, + "minecraft:oak_door": { + "protocol_id": 195 + }, + "minecraft:oak_fence": { + "protocol_id": 254 + }, + "minecraft:oak_fence_gate": { + "protocol_id": 319 + }, + "minecraft:oak_hanging_sign": { + "protocol_id": 208 + }, + "minecraft:oak_leaves": { + "protocol_id": 82 + }, + "minecraft:oak_log": { + "protocol_id": 46 + }, + "minecraft:oak_planks": { + "protocol_id": 13 + }, + "minecraft:oak_pressure_plate": { + "protocol_id": 233 + }, + "minecraft:oak_sapling": { + "protocol_id": 23 + }, + "minecraft:oak_sign": { + "protocol_id": 186 + }, + "minecraft:oak_slab": { + "protocol_id": 539 + }, + "minecraft:oak_stairs": { + "protocol_id": 176 + }, + "minecraft:oak_trapdoor": { + "protocol_id": 284 + }, + "minecraft:oak_wall_hanging_sign": { + "protocol_id": 219 + }, + "minecraft:oak_wall_sign": { + "protocol_id": 199 + }, + "minecraft:oak_wood": { + "protocol_id": 66 + }, + "minecraft:observer": { + "protocol_id": 612 + }, + "minecraft:obsidian": { + "protocol_id": 170 + }, + "minecraft:ochre_froglight": { + "protocol_id": 1050 + }, + "minecraft:orange_banner": { + "protocol_id": 504 + }, + "minecraft:orange_bed": { + "protocol_id": 104 + }, + "minecraft:orange_candle": { + "protocol_id": 871 + }, + "minecraft:orange_candle_cake": { + "protocol_id": 888 + }, + "minecraft:orange_carpet": { + "protocol_id": 479 + }, + "minecraft:orange_concrete": { + "protocol_id": 647 + }, + "minecraft:orange_concrete_powder": { + "protocol_id": 663 + }, + "minecraft:orange_glazed_terracotta": { + "protocol_id": 631 + }, + "minecraft:orange_shulker_box": { + "protocol_id": 615 + }, + "minecraft:orange_stained_glass": { + "protocol_id": 269 + }, + "minecraft:orange_stained_glass_pane": { + "protocol_id": 442 + }, + "minecraft:orange_terracotta": { + "protocol_id": 426 + }, + "minecraft:orange_tulip": { + "protocol_id": 154 + }, + "minecraft:orange_wall_banner": { + "protocol_id": 520 + }, + "minecraft:orange_wool": { + "protocol_id": 131 + }, + "minecraft:oxeye_daisy": { + "protocol_id": 157 + }, + "minecraft:oxidized_chiseled_copper": { + "protocol_id": 942 + }, + "minecraft:oxidized_copper": { + "protocol_id": 935 + }, + "minecraft:oxidized_copper_bulb": { + "protocol_id": 1001 + }, + "minecraft:oxidized_copper_door": { + "protocol_id": 976 + }, + "minecraft:oxidized_copper_grate": { + "protocol_id": 993 + }, + "minecraft:oxidized_copper_trapdoor": { + "protocol_id": 984 + }, + "minecraft:oxidized_cut_copper": { + "protocol_id": 938 + }, + "minecraft:oxidized_cut_copper_slab": { + "protocol_id": 954 + }, + "minecraft:oxidized_cut_copper_stairs": { + "protocol_id": 950 + }, + "minecraft:packed_ice": { + "protocol_id": 496 + }, + "minecraft:packed_mud": { + "protocol_id": 297 + }, + "minecraft:pearlescent_froglight": { + "protocol_id": 1052 + }, + "minecraft:peony": { + "protocol_id": 500 + }, + "minecraft:petrified_oak_slab": { + "protocol_id": 553 + }, + "minecraft:piglin_head": { + "protocol_id": 406 + }, + "minecraft:piglin_wall_head": { + "protocol_id": 407 + }, + "minecraft:pink_banner": { + "protocol_id": 509 + }, + "minecraft:pink_bed": { + "protocol_id": 109 + }, + "minecraft:pink_candle": { + "protocol_id": 876 + }, + "minecraft:pink_candle_cake": { + "protocol_id": 893 + }, + "minecraft:pink_carpet": { + "protocol_id": 484 + }, + "minecraft:pink_concrete": { + "protocol_id": 652 + }, + "minecraft:pink_concrete_powder": { + "protocol_id": 668 + }, + "minecraft:pink_glazed_terracotta": { + "protocol_id": 636 + }, + "minecraft:pink_petals": { + "protocol_id": 1015 + }, + "minecraft:pink_shulker_box": { + "protocol_id": 620 + }, + "minecraft:pink_stained_glass": { + "protocol_id": 274 + }, + "minecraft:pink_stained_glass_pane": { + "protocol_id": 447 + }, + "minecraft:pink_terracotta": { + "protocol_id": 431 + }, + "minecraft:pink_tulip": { + "protocol_id": 156 + }, + "minecraft:pink_wall_banner": { + "protocol_id": 525 + }, + "minecraft:pink_wool": { + "protocol_id": 136 + }, + "minecraft:piston": { + "protocol_id": 128 + }, + "minecraft:piston_head": { + "protocol_id": 129 + }, + "minecraft:pitcher_crop": { + "protocol_id": 599 + }, + "minecraft:pitcher_plant": { + "protocol_id": 600 + }, + "minecraft:player_head": { + "protocol_id": 400 + }, + "minecraft:player_wall_head": { + "protocol_id": 401 + }, + "minecraft:podzol": { + "protocol_id": 11 + }, + "minecraft:pointed_dripstone": { + "protocol_id": 1007 + }, + "minecraft:polished_andesite": { + "protocol_id": 7 + }, + "minecraft:polished_andesite_slab": { + "protocol_id": 757 + }, + "minecraft:polished_andesite_stairs": { + "protocol_id": 744 + }, + "minecraft:polished_basalt": { + "protocol_id": 259 + }, + "minecraft:polished_blackstone": { + "protocol_id": 853 + }, + "minecraft:polished_blackstone_brick_slab": { + "protocol_id": 857 + }, + "minecraft:polished_blackstone_brick_stairs": { + "protocol_id": 858 + }, + "minecraft:polished_blackstone_brick_wall": { + "protocol_id": 859 + }, + "minecraft:polished_blackstone_bricks": { + "protocol_id": 854 + }, + "minecraft:polished_blackstone_button": { + "protocol_id": 864 + }, + "minecraft:polished_blackstone_pressure_plate": { + "protocol_id": 863 + }, + "minecraft:polished_blackstone_slab": { + "protocol_id": 862 + }, + "minecraft:polished_blackstone_stairs": { + "protocol_id": 861 + }, + "minecraft:polished_blackstone_wall": { + "protocol_id": 865 + }, + "minecraft:polished_deepslate": { + "protocol_id": 1028 + }, + "minecraft:polished_deepslate_slab": { + "protocol_id": 1030 + }, + "minecraft:polished_deepslate_stairs": { + "protocol_id": 1029 + }, + "minecraft:polished_deepslate_wall": { + "protocol_id": 1031 + }, + "minecraft:polished_diorite": { + "protocol_id": 5 + }, + "minecraft:polished_diorite_slab": { + "protocol_id": 749 + }, + "minecraft:polished_diorite_stairs": { + "protocol_id": 735 + }, + "minecraft:polished_granite": { + "protocol_id": 3 + }, + "minecraft:polished_granite_slab": { + "protocol_id": 746 + }, + "minecraft:polished_granite_stairs": { + "protocol_id": 732 + }, + "minecraft:polished_tuff": { + "protocol_id": 913 + }, + "minecraft:polished_tuff_slab": { + "protocol_id": 914 + }, + "minecraft:polished_tuff_stairs": { + "protocol_id": 915 + }, + "minecraft:polished_tuff_wall": { + "protocol_id": 916 + }, + "minecraft:poppy": { + "protocol_id": 149 + }, + "minecraft:potatoes": { + "protocol_id": 384 + }, + "minecraft:potted_acacia_sapling": { + "protocol_id": 361 + }, + "minecraft:potted_allium": { + "protocol_id": 369 + }, + "minecraft:potted_azalea_bush": { + "protocol_id": 1048 + }, + "minecraft:potted_azure_bluet": { + "protocol_id": 370 + }, + "minecraft:potted_bamboo": { + "protocol_id": 728 + }, + "minecraft:potted_birch_sapling": { + "protocol_id": 359 + }, + "minecraft:potted_blue_orchid": { + "protocol_id": 368 + }, + "minecraft:potted_brown_mushroom": { + "protocol_id": 380 + }, + "minecraft:potted_cactus": { + "protocol_id": 382 + }, + "minecraft:potted_cherry_sapling": { + "protocol_id": 362 + }, + "minecraft:potted_cornflower": { + "protocol_id": 376 + }, + "minecraft:potted_crimson_fungus": { + "protocol_id": 844 + }, + "minecraft:potted_crimson_roots": { + "protocol_id": 846 + }, + "minecraft:potted_dandelion": { + "protocol_id": 366 + }, + "minecraft:potted_dark_oak_sapling": { + "protocol_id": 363 + }, + "minecraft:potted_dead_bush": { + "protocol_id": 381 + }, + "minecraft:potted_fern": { + "protocol_id": 365 + }, + "minecraft:potted_flowering_azalea_bush": { + "protocol_id": 1049 + }, + "minecraft:potted_jungle_sapling": { + "protocol_id": 360 + }, + "minecraft:potted_lily_of_the_valley": { + "protocol_id": 377 + }, + "minecraft:potted_mangrove_propagule": { + "protocol_id": 364 + }, + "minecraft:potted_oak_sapling": { + "protocol_id": 357 + }, + "minecraft:potted_orange_tulip": { + "protocol_id": 372 + }, + "minecraft:potted_oxeye_daisy": { + "protocol_id": 375 + }, + "minecraft:potted_pink_tulip": { + "protocol_id": 374 + }, + "minecraft:potted_poppy": { + "protocol_id": 367 + }, + "minecraft:potted_red_mushroom": { + "protocol_id": 379 + }, + "minecraft:potted_red_tulip": { + "protocol_id": 371 + }, + "minecraft:potted_spruce_sapling": { + "protocol_id": 358 + }, + "minecraft:potted_torchflower": { + "protocol_id": 356 + }, + "minecraft:potted_warped_fungus": { + "protocol_id": 845 + }, + "minecraft:potted_warped_roots": { + "protocol_id": 847 + }, + "minecraft:potted_white_tulip": { + "protocol_id": 373 + }, + "minecraft:potted_wither_rose": { + "protocol_id": 378 + }, + "minecraft:powder_snow": { + "protocol_id": 925 + }, + "minecraft:powder_snow_cauldron": { + "protocol_id": 334 + }, + "minecraft:powered_rail": { + "protocol_id": 119 + }, + "minecraft:prismarine": { + "protocol_id": 467 + }, + "minecraft:prismarine_brick_slab": { + "protocol_id": 474 + }, + "minecraft:prismarine_brick_stairs": { + "protocol_id": 471 + }, + "minecraft:prismarine_bricks": { + "protocol_id": 468 + }, + "minecraft:prismarine_slab": { + "protocol_id": 473 + }, + "minecraft:prismarine_stairs": { + "protocol_id": 470 + }, + "minecraft:prismarine_wall": { + "protocol_id": 760 + }, + "minecraft:pumpkin": { + "protocol_id": 311 + }, + "minecraft:pumpkin_stem": { + "protocol_id": 315 + }, + "minecraft:purple_banner": { + "protocol_id": 513 + }, + "minecraft:purple_bed": { + "protocol_id": 113 + }, + "minecraft:purple_candle": { + "protocol_id": 880 + }, + "minecraft:purple_candle_cake": { + "protocol_id": 897 + }, + "minecraft:purple_carpet": { + "protocol_id": 488 + }, + "minecraft:purple_concrete": { + "protocol_id": 656 + }, + "minecraft:purple_concrete_powder": { + "protocol_id": 672 + }, + "minecraft:purple_glazed_terracotta": { + "protocol_id": 640 + }, + "minecraft:purple_shulker_box": { + "protocol_id": 624 + }, + "minecraft:purple_stained_glass": { + "protocol_id": 278 + }, + "minecraft:purple_stained_glass_pane": { + "protocol_id": 451 + }, + "minecraft:purple_terracotta": { + "protocol_id": 435 + }, + "minecraft:purple_wall_banner": { + "protocol_id": 529 + }, + "minecraft:purple_wool": { + "protocol_id": 140 + }, + "minecraft:purpur_block": { + "protocol_id": 594 + }, + "minecraft:purpur_pillar": { + "protocol_id": 595 + }, + "minecraft:purpur_slab": { + "protocol_id": 562 + }, + "minecraft:purpur_stairs": { + "protocol_id": 596 + }, + "minecraft:quartz_block": { + "protocol_id": 419 + }, + "minecraft:quartz_bricks": { + "protocol_id": 868 + }, + "minecraft:quartz_pillar": { + "protocol_id": 421 + }, + "minecraft:quartz_slab": { + "protocol_id": 559 + }, + "minecraft:quartz_stairs": { + "protocol_id": 422 + }, + "minecraft:rail": { + "protocol_id": 197 + }, + "minecraft:raw_copper_block": { + "protocol_id": 1046 + }, + "minecraft:raw_gold_block": { + "protocol_id": 1047 + }, + "minecraft:raw_iron_block": { + "protocol_id": 1045 + }, + "minecraft:red_banner": { + "protocol_id": 517 + }, + "minecraft:red_bed": { + "protocol_id": 117 + }, + "minecraft:red_candle": { + "protocol_id": 884 + }, + "minecraft:red_candle_cake": { + "protocol_id": 901 + }, + "minecraft:red_carpet": { + "protocol_id": 492 + }, + "minecraft:red_concrete": { + "protocol_id": 660 + }, + "minecraft:red_concrete_powder": { + "protocol_id": 676 + }, + "minecraft:red_glazed_terracotta": { + "protocol_id": 644 + }, + "minecraft:red_mushroom": { + "protocol_id": 162 + }, + "minecraft:red_mushroom_block": { + "protocol_id": 306 + }, + "minecraft:red_nether_brick_slab": { + "protocol_id": 756 + }, + "minecraft:red_nether_brick_stairs": { + "protocol_id": 743 + }, + "minecraft:red_nether_brick_wall": { + "protocol_id": 768 + }, + "minecraft:red_nether_bricks": { + "protocol_id": 609 + }, + "minecraft:red_sand": { + "protocol_id": 36 + }, + "minecraft:red_sandstone": { + "protocol_id": 535 + }, + "minecraft:red_sandstone_slab": { + "protocol_id": 560 + }, + "minecraft:red_sandstone_stairs": { + "protocol_id": 538 + }, + "minecraft:red_sandstone_wall": { + "protocol_id": 761 + }, + "minecraft:red_shulker_box": { + "protocol_id": 628 + }, + "minecraft:red_stained_glass": { + "protocol_id": 282 + }, + "minecraft:red_stained_glass_pane": { + "protocol_id": 455 + }, + "minecraft:red_terracotta": { + "protocol_id": 439 + }, + "minecraft:red_tulip": { + "protocol_id": 153 + }, + "minecraft:red_wall_banner": { + "protocol_id": 533 + }, + "minecraft:red_wool": { + "protocol_id": 144 + }, + "minecraft:redstone_block": { + "protocol_id": 416 + }, + "minecraft:redstone_lamp": { + "protocol_id": 339 + }, + "minecraft:redstone_ore": { + "protocol_id": 242 + }, + "minecraft:redstone_torch": { + "protocol_id": 244 + }, + "minecraft:redstone_wall_torch": { + "protocol_id": 245 + }, + "minecraft:redstone_wire": { + "protocol_id": 178 + }, + "minecraft:reinforced_deepslate": { + "protocol_id": 1054 + }, + "minecraft:repeater": { + "protocol_id": 267 + }, + "minecraft:repeating_command_block": { + "protocol_id": 604 + }, + "minecraft:respawn_anchor": { + "protocol_id": 843 + }, + "minecraft:rooted_dirt": { + "protocol_id": 1021 + }, + "minecraft:rose_bush": { + "protocol_id": 499 + }, + "minecraft:sand": { + "protocol_id": 34 + }, + "minecraft:sandstone": { + "protocol_id": 99 + }, + "minecraft:sandstone_slab": { + "protocol_id": 551 + }, + "minecraft:sandstone_stairs": { + "protocol_id": 341 + }, + "minecraft:sandstone_wall": { + "protocol_id": 769 + }, + "minecraft:scaffolding": { + "protocol_id": 772 + }, + "minecraft:sculk": { + "protocol_id": 928 + }, + "minecraft:sculk_catalyst": { + "protocol_id": 930 + }, + "minecraft:sculk_sensor": { + "protocol_id": 926 + }, + "minecraft:sculk_shrieker": { + "protocol_id": 931 + }, + "minecraft:sculk_vein": { + "protocol_id": 929 + }, + "minecraft:sea_lantern": { + "protocol_id": 476 + }, + "minecraft:sea_pickle": { + "protocol_id": 723 + }, + "minecraft:seagrass": { + "protocol_id": 126 + }, + "minecraft:short_grass": { + "protocol_id": 123 + }, + "minecraft:shroomlight": { + "protocol_id": 804 + }, + "minecraft:shulker_box": { + "protocol_id": 613 + }, + "minecraft:skeleton_skull": { + "protocol_id": 394 + }, + "minecraft:skeleton_wall_skull": { + "protocol_id": 395 + }, + "minecraft:slime_block": { + "protocol_id": 463 + }, + "minecraft:small_amethyst_bud": { + "protocol_id": 908 + }, + "minecraft:small_dripleaf": { + "protocol_id": 1019 + }, + "minecraft:smithing_table": { + "protocol_id": 781 + }, + "minecraft:smoker": { + "protocol_id": 775 + }, + "minecraft:smooth_basalt": { + "protocol_id": 1044 + }, + "minecraft:smooth_quartz": { + "protocol_id": 565 + }, + "minecraft:smooth_quartz_slab": { + "protocol_id": 753 + }, + "minecraft:smooth_quartz_stairs": { + "protocol_id": 740 + }, + "minecraft:smooth_red_sandstone": { + "protocol_id": 566 + }, + "minecraft:smooth_red_sandstone_slab": { + "protocol_id": 747 + }, + "minecraft:smooth_red_sandstone_stairs": { + "protocol_id": 733 + }, + "minecraft:smooth_sandstone": { + "protocol_id": 564 + }, + "minecraft:smooth_sandstone_slab": { + "protocol_id": 752 + }, + "minecraft:smooth_sandstone_stairs": { + "protocol_id": 739 + }, + "minecraft:smooth_stone": { + "protocol_id": 563 + }, + "minecraft:smooth_stone_slab": { + "protocol_id": 550 + }, + "minecraft:sniffer_egg": { + "protocol_id": 682 + }, + "minecraft:snow": { + "protocol_id": 247 + }, + "minecraft:snow_block": { + "protocol_id": 249 + }, + "minecraft:soul_campfire": { + "protocol_id": 787 + }, + "minecraft:soul_fire": { + "protocol_id": 174 + }, + "minecraft:soul_lantern": { + "protocol_id": 785 + }, + "minecraft:soul_sand": { + "protocol_id": 256 + }, + "minecraft:soul_soil": { + "protocol_id": 257 + }, + "minecraft:soul_torch": { + "protocol_id": 260 + }, + "minecraft:soul_wall_torch": { + "protocol_id": 261 + }, + "minecraft:spawner": { + "protocol_id": 175 + }, + "minecraft:sponge": { + "protocol_id": 92 + }, + "minecraft:spore_blossom": { + "protocol_id": 1011 + }, + "minecraft:spruce_button": { + "protocol_id": 386 + }, + "minecraft:spruce_door": { + "protocol_id": 583 + }, + "minecraft:spruce_fence": { + "protocol_id": 575 + }, + "minecraft:spruce_fence_gate": { + "protocol_id": 567 + }, + "minecraft:spruce_hanging_sign": { + "protocol_id": 209 + }, + "minecraft:spruce_leaves": { + "protocol_id": 83 + }, + "minecraft:spruce_log": { + "protocol_id": 47 + }, + "minecraft:spruce_planks": { + "protocol_id": 14 + }, + "minecraft:spruce_pressure_plate": { + "protocol_id": 234 + }, + "minecraft:spruce_sapling": { + "protocol_id": 24 + }, + "minecraft:spruce_sign": { + "protocol_id": 187 + }, + "minecraft:spruce_slab": { + "protocol_id": 540 + }, + "minecraft:spruce_stairs": { + "protocol_id": 348 + }, + "minecraft:spruce_trapdoor": { + "protocol_id": 285 + }, + "minecraft:spruce_wall_hanging_sign": { + "protocol_id": 220 + }, + "minecraft:spruce_wall_sign": { + "protocol_id": 200 + }, + "minecraft:spruce_wood": { + "protocol_id": 67 + }, + "minecraft:sticky_piston": { + "protocol_id": 121 + }, + "minecraft:stone": { + "protocol_id": 1 + }, + "minecraft:stone_brick_slab": { + "protocol_id": 556 + }, + "minecraft:stone_brick_stairs": { + "protocol_id": 321 + }, + "minecraft:stone_brick_wall": { + "protocol_id": 764 + }, + "minecraft:stone_bricks": { + "protocol_id": 293 + }, + "minecraft:stone_button": { + "protocol_id": 246 + }, + "minecraft:stone_pressure_plate": { + "protocol_id": 231 + }, + "minecraft:stone_slab": { + "protocol_id": 549 + }, + "minecraft:stone_stairs": { + "protocol_id": 738 + }, + "minecraft:stonecutter": { + "protocol_id": 782 + }, + "minecraft:stripped_acacia_log": { + "protocol_id": 60 + }, + "minecraft:stripped_acacia_wood": { + "protocol_id": 78 + }, + "minecraft:stripped_bamboo_block": { + "protocol_id": 65 + }, + "minecraft:stripped_birch_log": { + "protocol_id": 58 + }, + "minecraft:stripped_birch_wood": { + "protocol_id": 76 + }, + "minecraft:stripped_cherry_log": { + "protocol_id": 61 + }, + "minecraft:stripped_cherry_wood": { + "protocol_id": 79 + }, + "minecraft:stripped_crimson_hyphae": { + "protocol_id": 801 + }, + "minecraft:stripped_crimson_stem": { + "protocol_id": 799 + }, + "minecraft:stripped_dark_oak_log": { + "protocol_id": 62 + }, + "minecraft:stripped_dark_oak_wood": { + "protocol_id": 80 + }, + "minecraft:stripped_jungle_log": { + "protocol_id": 59 + }, + "minecraft:stripped_jungle_wood": { + "protocol_id": 77 + }, + "minecraft:stripped_mangrove_log": { + "protocol_id": 64 + }, + "minecraft:stripped_mangrove_wood": { + "protocol_id": 81 + }, + "minecraft:stripped_oak_log": { + "protocol_id": 63 + }, + "minecraft:stripped_oak_wood": { + "protocol_id": 74 + }, + "minecraft:stripped_spruce_log": { + "protocol_id": 57 + }, + "minecraft:stripped_spruce_wood": { + "protocol_id": 75 + }, + "minecraft:stripped_warped_hyphae": { + "protocol_id": 792 + }, + "minecraft:stripped_warped_stem": { + "protocol_id": 790 + }, + "minecraft:structure_block": { + "protocol_id": 832 + }, + "minecraft:structure_void": { + "protocol_id": 611 + }, + "minecraft:sugar_cane": { + "protocol_id": 252 + }, + "minecraft:sunflower": { + "protocol_id": 497 + }, + "minecraft:suspicious_gravel": { + "protocol_id": 38 + }, + "minecraft:suspicious_sand": { + "protocol_id": 35 + }, + "minecraft:sweet_berry_bush": { + "protocol_id": 788 + }, + "minecraft:tall_grass": { + "protocol_id": 501 + }, + "minecraft:tall_seagrass": { + "protocol_id": 127 + }, + "minecraft:target": { + "protocol_id": 835 + }, + "minecraft:terracotta": { + "protocol_id": 494 + }, + "minecraft:tinted_glass": { + "protocol_id": 924 + }, + "minecraft:tnt": { + "protocol_id": 166 + }, + "minecraft:torch": { + "protocol_id": 171 + }, + "minecraft:torchflower": { + "protocol_id": 148 + }, + "minecraft:torchflower_crop": { + "protocol_id": 598 + }, + "minecraft:trapped_chest": { + "protocol_id": 411 + }, + "minecraft:trial_spawner": { + "protocol_id": 1057 + }, + "minecraft:tripwire": { + "protocol_id": 346 + }, + "minecraft:tripwire_hook": { + "protocol_id": 345 + }, + "minecraft:tube_coral": { + "protocol_id": 698 + }, + "minecraft:tube_coral_block": { + "protocol_id": 688 + }, + "minecraft:tube_coral_fan": { + "protocol_id": 708 + }, + "minecraft:tube_coral_wall_fan": { + "protocol_id": 718 + }, + "minecraft:tuff": { + "protocol_id": 909 + }, + "minecraft:tuff_brick_slab": { + "protocol_id": 919 + }, + "minecraft:tuff_brick_stairs": { + "protocol_id": 920 + }, + "minecraft:tuff_brick_wall": { + "protocol_id": 921 + }, + "minecraft:tuff_bricks": { + "protocol_id": 918 + }, + "minecraft:tuff_slab": { + "protocol_id": 910 + }, + "minecraft:tuff_stairs": { + "protocol_id": 911 + }, + "minecraft:tuff_wall": { + "protocol_id": 912 + }, + "minecraft:turtle_egg": { + "protocol_id": 681 + }, + "minecraft:twisting_vines": { + "protocol_id": 807 + }, + "minecraft:twisting_vines_plant": { + "protocol_id": 808 + }, + "minecraft:vault": { + "protocol_id": 1058 + }, + "minecraft:verdant_froglight": { + "protocol_id": 1051 + }, + "minecraft:vine": { + "protocol_id": 317 + }, + "minecraft:void_air": { + "protocol_id": 729 + }, + "minecraft:wall_torch": { + "protocol_id": 172 + }, + "minecraft:warped_button": { + "protocol_id": 825 + }, + "minecraft:warped_door": { + "protocol_id": 827 + }, + "minecraft:warped_fence": { + "protocol_id": 817 + }, + "minecraft:warped_fence_gate": { + "protocol_id": 821 + }, + "minecraft:warped_fungus": { + "protocol_id": 794 + }, + "minecraft:warped_hanging_sign": { + "protocol_id": 216 + }, + "minecraft:warped_hyphae": { + "protocol_id": 791 + }, + "minecraft:warped_nylium": { + "protocol_id": 793 + }, + "minecraft:warped_planks": { + "protocol_id": 811 + }, + "minecraft:warped_pressure_plate": { + "protocol_id": 815 + }, + "minecraft:warped_roots": { + "protocol_id": 796 + }, + "minecraft:warped_sign": { + "protocol_id": 829 + }, + "minecraft:warped_slab": { + "protocol_id": 813 + }, + "minecraft:warped_stairs": { + "protocol_id": 823 + }, + "minecraft:warped_stem": { + "protocol_id": 789 + }, + "minecraft:warped_trapdoor": { + "protocol_id": 819 + }, + "minecraft:warped_wall_hanging_sign": { + "protocol_id": 228 + }, + "minecraft:warped_wall_sign": { + "protocol_id": 831 + }, + "minecraft:warped_wart_block": { + "protocol_id": 795 + }, + "minecraft:water": { + "protocol_id": 32 + }, + "minecraft:water_cauldron": { + "protocol_id": 332 + }, + "minecraft:waxed_chiseled_copper": { + "protocol_id": 949 + }, + "minecraft:waxed_copper_block": { + "protocol_id": 958 + }, + "minecraft:waxed_copper_bulb": { + "protocol_id": 1002 + }, + "minecraft:waxed_copper_door": { + "protocol_id": 978 + }, + "minecraft:waxed_copper_grate": { + "protocol_id": 994 + }, + "minecraft:waxed_copper_trapdoor": { + "protocol_id": 986 + }, + "minecraft:waxed_cut_copper": { + "protocol_id": 965 + }, + "minecraft:waxed_cut_copper_slab": { + "protocol_id": 973 + }, + "minecraft:waxed_cut_copper_stairs": { + "protocol_id": 969 + }, + "minecraft:waxed_exposed_chiseled_copper": { + "protocol_id": 948 + }, + "minecraft:waxed_exposed_copper": { + "protocol_id": 960 + }, + "minecraft:waxed_exposed_copper_bulb": { + "protocol_id": 1003 + }, + "minecraft:waxed_exposed_copper_door": { + "protocol_id": 979 + }, + "minecraft:waxed_exposed_copper_grate": { + "protocol_id": 995 + }, + "minecraft:waxed_exposed_copper_trapdoor": { + "protocol_id": 987 + }, + "minecraft:waxed_exposed_cut_copper": { + "protocol_id": 964 + }, + "minecraft:waxed_exposed_cut_copper_slab": { + "protocol_id": 972 + }, + "minecraft:waxed_exposed_cut_copper_stairs": { + "protocol_id": 968 + }, + "minecraft:waxed_oxidized_chiseled_copper": { + "protocol_id": 946 + }, + "minecraft:waxed_oxidized_copper": { + "protocol_id": 961 + }, + "minecraft:waxed_oxidized_copper_bulb": { + "protocol_id": 1005 + }, + "minecraft:waxed_oxidized_copper_door": { + "protocol_id": 980 + }, + "minecraft:waxed_oxidized_copper_grate": { + "protocol_id": 997 + }, + "minecraft:waxed_oxidized_copper_trapdoor": { + "protocol_id": 988 + }, + "minecraft:waxed_oxidized_cut_copper": { + "protocol_id": 962 + }, + "minecraft:waxed_oxidized_cut_copper_slab": { + "protocol_id": 970 + }, + "minecraft:waxed_oxidized_cut_copper_stairs": { + "protocol_id": 966 + }, + "minecraft:waxed_weathered_chiseled_copper": { + "protocol_id": 947 + }, + "minecraft:waxed_weathered_copper": { + "protocol_id": 959 + }, + "minecraft:waxed_weathered_copper_bulb": { + "protocol_id": 1004 + }, + "minecraft:waxed_weathered_copper_door": { + "protocol_id": 981 + }, + "minecraft:waxed_weathered_copper_grate": { + "protocol_id": 996 + }, + "minecraft:waxed_weathered_copper_trapdoor": { + "protocol_id": 989 + }, + "minecraft:waxed_weathered_cut_copper": { + "protocol_id": 963 + }, + "minecraft:waxed_weathered_cut_copper_slab": { + "protocol_id": 971 + }, + "minecraft:waxed_weathered_cut_copper_stairs": { + "protocol_id": 967 + }, + "minecraft:weathered_chiseled_copper": { + "protocol_id": 943 + }, + "minecraft:weathered_copper": { + "protocol_id": 934 + }, + "minecraft:weathered_copper_bulb": { + "protocol_id": 1000 + }, + "minecraft:weathered_copper_door": { + "protocol_id": 977 + }, + "minecraft:weathered_copper_grate": { + "protocol_id": 992 + }, + "minecraft:weathered_copper_trapdoor": { + "protocol_id": 985 + }, + "minecraft:weathered_cut_copper": { + "protocol_id": 939 + }, + "minecraft:weathered_cut_copper_slab": { + "protocol_id": 955 + }, + "minecraft:weathered_cut_copper_stairs": { + "protocol_id": 951 + }, + "minecraft:weeping_vines": { + "protocol_id": 805 + }, + "minecraft:weeping_vines_plant": { + "protocol_id": 806 + }, + "minecraft:wet_sponge": { + "protocol_id": 93 + }, + "minecraft:wheat": { + "protocol_id": 183 + }, + "minecraft:white_banner": { + "protocol_id": 503 + }, + "minecraft:white_bed": { + "protocol_id": 103 + }, + "minecraft:white_candle": { + "protocol_id": 870 + }, + "minecraft:white_candle_cake": { + "protocol_id": 887 + }, + "minecraft:white_carpet": { + "protocol_id": 478 + }, + "minecraft:white_concrete": { + "protocol_id": 646 + }, + "minecraft:white_concrete_powder": { + "protocol_id": 662 + }, + "minecraft:white_glazed_terracotta": { + "protocol_id": 630 + }, + "minecraft:white_shulker_box": { + "protocol_id": 614 + }, + "minecraft:white_stained_glass": { + "protocol_id": 268 + }, + "minecraft:white_stained_glass_pane": { + "protocol_id": 441 + }, + "minecraft:white_terracotta": { + "protocol_id": 425 + }, + "minecraft:white_tulip": { + "protocol_id": 155 + }, + "minecraft:white_wall_banner": { + "protocol_id": 519 + }, + "minecraft:white_wool": { + "protocol_id": 130 + }, + "minecraft:wither_rose": { + "protocol_id": 159 + }, + "minecraft:wither_skeleton_skull": { + "protocol_id": 396 + }, + "minecraft:wither_skeleton_wall_skull": { + "protocol_id": 397 + }, + "minecraft:yellow_banner": { + "protocol_id": 507 + }, + "minecraft:yellow_bed": { + "protocol_id": 107 + }, + "minecraft:yellow_candle": { + "protocol_id": 874 + }, + "minecraft:yellow_candle_cake": { + "protocol_id": 891 + }, + "minecraft:yellow_carpet": { + "protocol_id": 482 + }, + "minecraft:yellow_concrete": { + "protocol_id": 650 + }, + "minecraft:yellow_concrete_powder": { + "protocol_id": 666 + }, + "minecraft:yellow_glazed_terracotta": { + "protocol_id": 634 + }, + "minecraft:yellow_shulker_box": { + "protocol_id": 618 + }, + "minecraft:yellow_stained_glass": { + "protocol_id": 272 + }, + "minecraft:yellow_stained_glass_pane": { + "protocol_id": 445 + }, + "minecraft:yellow_terracotta": { + "protocol_id": 429 + }, + "minecraft:yellow_wall_banner": { + "protocol_id": 523 + }, + "minecraft:yellow_wool": { + "protocol_id": 134 + }, + "minecraft:zombie_head": { + "protocol_id": 398 + }, + "minecraft:zombie_wall_head": { + "protocol_id": 399 + } + }, + "protocol_id": 4 + }, + "minecraft:block_entity_type": { + "entries": { + "minecraft:banner": { + "protocol_id": 19 + }, + "minecraft:barrel": { + "protocol_id": 26 + }, + "minecraft:beacon": { + "protocol_id": 14 + }, + "minecraft:bed": { + "protocol_id": 24 + }, + "minecraft:beehive": { + "protocol_id": 33 + }, + "minecraft:bell": { + "protocol_id": 30 + }, + "minecraft:blast_furnace": { + "protocol_id": 28 + }, + "minecraft:brewing_stand": { + "protocol_id": 11 + }, + "minecraft:brushable_block": { + "protocol_id": 39 + }, + "minecraft:calibrated_sculk_sensor": { + "protocol_id": 35 + }, + "minecraft:campfire": { + "protocol_id": 32 + }, + "minecraft:chest": { + "protocol_id": 1 + }, + "minecraft:chiseled_bookshelf": { + "protocol_id": 38 + }, + "minecraft:command_block": { + "protocol_id": 22 + }, + "minecraft:comparator": { + "protocol_id": 18 + }, + "minecraft:conduit": { + "protocol_id": 25 + }, + "minecraft:crafter": { + "protocol_id": 41 + }, + "minecraft:daylight_detector": { + "protocol_id": 16 + }, + "minecraft:decorated_pot": { + "protocol_id": 40 + }, + "minecraft:dispenser": { + "protocol_id": 5 + }, + "minecraft:dropper": { + "protocol_id": 6 + }, + "minecraft:enchanting_table": { + "protocol_id": 12 + }, + "minecraft:end_gateway": { + "protocol_id": 21 + }, + "minecraft:end_portal": { + "protocol_id": 13 + }, + "minecraft:ender_chest": { + "protocol_id": 3 + }, + "minecraft:furnace": { + "protocol_id": 0 + }, + "minecraft:hanging_sign": { + "protocol_id": 8 + }, + "minecraft:hopper": { + "protocol_id": 17 + }, + "minecraft:jigsaw": { + "protocol_id": 31 + }, + "minecraft:jukebox": { + "protocol_id": 4 + }, + "minecraft:lectern": { + "protocol_id": 29 + }, + "minecraft:mob_spawner": { + "protocol_id": 9 + }, + "minecraft:piston": { + "protocol_id": 10 + }, + "minecraft:sculk_catalyst": { + "protocol_id": 36 + }, + "minecraft:sculk_sensor": { + "protocol_id": 34 + }, + "minecraft:sculk_shrieker": { + "protocol_id": 37 + }, + "minecraft:shulker_box": { + "protocol_id": 23 + }, + "minecraft:sign": { + "protocol_id": 7 + }, + "minecraft:skull": { + "protocol_id": 15 + }, + "minecraft:smoker": { + "protocol_id": 27 + }, + "minecraft:structure_block": { + "protocol_id": 20 + }, + "minecraft:trapped_chest": { + "protocol_id": 2 + }, + "minecraft:trial_spawner": { + "protocol_id": 42 + }, + "minecraft:vault": { + "protocol_id": 43 + } + }, + "protocol_id": 9 + }, + "minecraft:block_predicate_type": { + "entries": { + "minecraft:all_of": { + "protocol_id": 9 + }, + "minecraft:any_of": { + "protocol_id": 8 + }, + "minecraft:has_sturdy_face": { + "protocol_id": 3 + }, + "minecraft:inside_world_bounds": { + "protocol_id": 7 + }, + "minecraft:matching_block_tag": { + "protocol_id": 1 + }, + "minecraft:matching_blocks": { + "protocol_id": 0 + }, + "minecraft:matching_fluids": { + "protocol_id": 2 + }, + "minecraft:not": { + "protocol_id": 10 + }, + "minecraft:replaceable": { + "protocol_id": 5 + }, + "minecraft:solid": { + "protocol_id": 4 + }, + "minecraft:true": { + "protocol_id": 11 + }, + "minecraft:unobstructed": { + "protocol_id": 12 + }, + "minecraft:would_survive": { + "protocol_id": 6 + } + }, + "protocol_id": 38 + }, + "minecraft:block_type": { + "entries": { + "minecraft:air": { + "protocol_id": 1 + }, + "minecraft:amethyst": { + "protocol_id": 2 + }, + "minecraft:amethyst_cluster": { + "protocol_id": 3 + }, + "minecraft:anvil": { + "protocol_id": 4 + }, + "minecraft:attached_stem": { + "protocol_id": 5 + }, + "minecraft:azalea": { + "protocol_id": 6 + }, + "minecraft:bamboo_sapling": { + "protocol_id": 7 + }, + "minecraft:bamboo_stalk": { + "protocol_id": 8 + }, + "minecraft:banner": { + "protocol_id": 9 + }, + "minecraft:barrel": { + "protocol_id": 10 + }, + "minecraft:barrier": { + "protocol_id": 11 + }, + "minecraft:base_coral_fan": { + "protocol_id": 12 + }, + "minecraft:base_coral_plant": { + "protocol_id": 13 + }, + "minecraft:base_coral_wall_fan": { + "protocol_id": 14 + }, + "minecraft:beacon": { + "protocol_id": 15 + }, + "minecraft:bed": { + "protocol_id": 16 + }, + "minecraft:beehive": { + "protocol_id": 17 + }, + "minecraft:beetroot": { + "protocol_id": 18 + }, + "minecraft:bell": { + "protocol_id": 19 + }, + "minecraft:big_dripleaf": { + "protocol_id": 20 + }, + "minecraft:big_dripleaf_stem": { + "protocol_id": 21 + }, + "minecraft:blast_furnace": { + "protocol_id": 22 + }, + "minecraft:block": { + "protocol_id": 0 + }, + "minecraft:brewing_stand": { + "protocol_id": 23 + }, + "minecraft:brushable": { + "protocol_id": 24 + }, + "minecraft:bubble_column": { + "protocol_id": 25 + }, + "minecraft:budding_amethyst": { + "protocol_id": 26 + }, + "minecraft:button": { + "protocol_id": 27 + }, + "minecraft:cactus": { + "protocol_id": 28 + }, + "minecraft:cake": { + "protocol_id": 29 + }, + "minecraft:calibrated_sculk_sensor": { + "protocol_id": 30 + }, + "minecraft:campfire": { + "protocol_id": 31 + }, + "minecraft:candle": { + "protocol_id": 33 + }, + "minecraft:candle_cake": { + "protocol_id": 32 + }, + "minecraft:carpet": { + "protocol_id": 34 + }, + "minecraft:carrot": { + "protocol_id": 35 + }, + "minecraft:cartography_table": { + "protocol_id": 36 + }, + "minecraft:carved_pumpkin": { + "protocol_id": 37 + }, + "minecraft:cauldron": { + "protocol_id": 38 + }, + "minecraft:cave_vines": { + "protocol_id": 39 + }, + "minecraft:cave_vines_plant": { + "protocol_id": 40 + }, + "minecraft:ceiling_hanging_sign": { + "protocol_id": 41 + }, + "minecraft:chain": { + "protocol_id": 42 + }, + "minecraft:cherry_leaves": { + "protocol_id": 43 + }, + "minecraft:chest": { + "protocol_id": 44 + }, + "minecraft:chiseled_book_shelf": { + "protocol_id": 45 + }, + "minecraft:chorus_flower": { + "protocol_id": 46 + }, + "minecraft:chorus_plant": { + "protocol_id": 47 + }, + "minecraft:cocoa": { + "protocol_id": 48 + }, + "minecraft:colored_falling": { + "protocol_id": 49 + }, + "minecraft:command": { + "protocol_id": 50 + }, + "minecraft:comparator": { + "protocol_id": 51 + }, + "minecraft:composter": { + "protocol_id": 52 + }, + "minecraft:concrete_powder": { + "protocol_id": 53 + }, + "minecraft:conduit": { + "protocol_id": 54 + }, + "minecraft:copper_bulb_block": { + "protocol_id": 55 + }, + "minecraft:coral": { + "protocol_id": 56 + }, + "minecraft:coral_fan": { + "protocol_id": 57 + }, + "minecraft:coral_plant": { + "protocol_id": 58 + }, + "minecraft:coral_wall_fan": { + "protocol_id": 59 + }, + "minecraft:crafter": { + "protocol_id": 60 + }, + "minecraft:crafting_table": { + "protocol_id": 61 + }, + "minecraft:crop": { + "protocol_id": 62 + }, + "minecraft:crying_obsidian": { + "protocol_id": 63 + }, + "minecraft:daylight_detector": { + "protocol_id": 64 + }, + "minecraft:dead_bush": { + "protocol_id": 65 + }, + "minecraft:decorated_pot": { + "protocol_id": 66 + }, + "minecraft:detector_rail": { + "protocol_id": 67 + }, + "minecraft:dirt_path": { + "protocol_id": 68 + }, + "minecraft:dispenser": { + "protocol_id": 69 + }, + "minecraft:door": { + "protocol_id": 70 + }, + "minecraft:double_plant": { + "protocol_id": 71 + }, + "minecraft:dragon_egg": { + "protocol_id": 72 + }, + "minecraft:drop_experience": { + "protocol_id": 73 + }, + "minecraft:dropper": { + "protocol_id": 74 + }, + "minecraft:enchantment_table": { + "protocol_id": 75 + }, + "minecraft:end_gateway": { + "protocol_id": 77 + }, + "minecraft:end_portal": { + "protocol_id": 78 + }, + "minecraft:end_portal_frame": { + "protocol_id": 79 + }, + "minecraft:end_rod": { + "protocol_id": 80 + }, + "minecraft:ender_chest": { + "protocol_id": 76 + }, + "minecraft:farm": { + "protocol_id": 81 + }, + "minecraft:fence": { + "protocol_id": 82 + }, + "minecraft:fence_gate": { + "protocol_id": 83 + }, + "minecraft:fire": { + "protocol_id": 84 + }, + "minecraft:fletching_table": { + "protocol_id": 85 + }, + "minecraft:flower": { + "protocol_id": 86 + }, + "minecraft:flower_pot": { + "protocol_id": 87 + }, + "minecraft:frogspawn": { + "protocol_id": 88 + }, + "minecraft:frosted_ice": { + "protocol_id": 89 + }, + "minecraft:fungus": { + "protocol_id": 90 + }, + "minecraft:furnace": { + "protocol_id": 91 + }, + "minecraft:glazed_terracotta": { + "protocol_id": 92 + }, + "minecraft:glow_lichen": { + "protocol_id": 93 + }, + "minecraft:grass": { + "protocol_id": 94 + }, + "minecraft:grindstone": { + "protocol_id": 95 + }, + "minecraft:half_transparent": { + "protocol_id": 96 + }, + "minecraft:hanging_roots": { + "protocol_id": 97 + }, + "minecraft:hay": { + "protocol_id": 98 + }, + "minecraft:heavy_core": { + "protocol_id": 99 + }, + "minecraft:honey": { + "protocol_id": 100 + }, + "minecraft:hopper": { + "protocol_id": 101 + }, + "minecraft:huge_mushroom": { + "protocol_id": 102 + }, + "minecraft:ice": { + "protocol_id": 103 + }, + "minecraft:infested": { + "protocol_id": 104 + }, + "minecraft:infested_rotated_pillar": { + "protocol_id": 105 + }, + "minecraft:iron_bars": { + "protocol_id": 106 + }, + "minecraft:jack_o_lantern": { + "protocol_id": 107 + }, + "minecraft:jigsaw": { + "protocol_id": 108 + }, + "minecraft:jukebox": { + "protocol_id": 109 + }, + "minecraft:kelp": { + "protocol_id": 110 + }, + "minecraft:kelp_plant": { + "protocol_id": 111 + }, + "minecraft:ladder": { + "protocol_id": 112 + }, + "minecraft:lantern": { + "protocol_id": 113 + }, + "minecraft:lava_cauldron": { + "protocol_id": 114 + }, + "minecraft:layered_cauldron": { + "protocol_id": 115 + }, + "minecraft:leaves": { + "protocol_id": 116 + }, + "minecraft:lectern": { + "protocol_id": 117 + }, + "minecraft:lever": { + "protocol_id": 118 + }, + "minecraft:light": { + "protocol_id": 119 + }, + "minecraft:lightning_rod": { + "protocol_id": 120 + }, + "minecraft:liquid": { + "protocol_id": 121 + }, + "minecraft:loom": { + "protocol_id": 122 + }, + "minecraft:magma": { + "protocol_id": 123 + }, + "minecraft:mangrove_leaves": { + "protocol_id": 124 + }, + "minecraft:mangrove_propagule": { + "protocol_id": 125 + }, + "minecraft:mangrove_roots": { + "protocol_id": 126 + }, + "minecraft:moss": { + "protocol_id": 127 + }, + "minecraft:moving_piston": { + "protocol_id": 128 + }, + "minecraft:mud": { + "protocol_id": 129 + }, + "minecraft:mushroom": { + "protocol_id": 130 + }, + "minecraft:mycelium": { + "protocol_id": 131 + }, + "minecraft:nether_portal": { + "protocol_id": 132 + }, + "minecraft:nether_sprouts": { + "protocol_id": 134 + }, + "minecraft:nether_wart": { + "protocol_id": 135 + }, + "minecraft:netherrack": { + "protocol_id": 133 + }, + "minecraft:note": { + "protocol_id": 136 + }, + "minecraft:nylium": { + "protocol_id": 137 + }, + "minecraft:observer": { + "protocol_id": 138 + }, + "minecraft:piglinwallskull": { + "protocol_id": 139 + }, + "minecraft:pink_petals": { + "protocol_id": 140 + }, + "minecraft:piston_base": { + "protocol_id": 141 + }, + "minecraft:piston_head": { + "protocol_id": 142 + }, + "minecraft:pitcher_crop": { + "protocol_id": 143 + }, + "minecraft:player_head": { + "protocol_id": 144 + }, + "minecraft:player_wall_head": { + "protocol_id": 145 + }, + "minecraft:pointed_dripstone": { + "protocol_id": 146 + }, + "minecraft:potato": { + "protocol_id": 147 + }, + "minecraft:powder_snow": { + "protocol_id": 148 + }, + "minecraft:powered": { + "protocol_id": 149 + }, + "minecraft:powered_rail": { + "protocol_id": 150 + }, + "minecraft:pressure_plate": { + "protocol_id": 151 + }, + "minecraft:pumpkin": { + "protocol_id": 152 + }, + "minecraft:rail": { + "protocol_id": 153 + }, + "minecraft:redstone_lamp": { + "protocol_id": 154 + }, + "minecraft:redstone_ore": { + "protocol_id": 155 + }, + "minecraft:redstone_torch": { + "protocol_id": 156 + }, + "minecraft:redstone_wall_torch": { + "protocol_id": 157 + }, + "minecraft:redstone_wire": { + "protocol_id": 158 + }, + "minecraft:repeater": { + "protocol_id": 159 + }, + "minecraft:respawn_anchor": { + "protocol_id": 160 + }, + "minecraft:rooted_dirt": { + "protocol_id": 161 + }, + "minecraft:roots": { + "protocol_id": 162 + }, + "minecraft:rotated_pillar": { + "protocol_id": 163 + }, + "minecraft:sapling": { + "protocol_id": 164 + }, + "minecraft:scaffolding": { + "protocol_id": 165 + }, + "minecraft:sculk": { + "protocol_id": 167 + }, + "minecraft:sculk_catalyst": { + "protocol_id": 166 + }, + "minecraft:sculk_sensor": { + "protocol_id": 168 + }, + "minecraft:sculk_shrieker": { + "protocol_id": 169 + }, + "minecraft:sculk_vein": { + "protocol_id": 170 + }, + "minecraft:sea_pickle": { + "protocol_id": 172 + }, + "minecraft:seagrass": { + "protocol_id": 171 + }, + "minecraft:shulker_box": { + "protocol_id": 173 + }, + "minecraft:skull": { + "protocol_id": 174 + }, + "minecraft:slab": { + "protocol_id": 175 + }, + "minecraft:slime": { + "protocol_id": 176 + }, + "minecraft:small_dripleaf": { + "protocol_id": 177 + }, + "minecraft:smithing_table": { + "protocol_id": 178 + }, + "minecraft:smoker": { + "protocol_id": 179 + }, + "minecraft:sniffer_egg": { + "protocol_id": 180 + }, + "minecraft:snow_layer": { + "protocol_id": 181 + }, + "minecraft:snowy_dirt": { + "protocol_id": 182 + }, + "minecraft:soul_fire": { + "protocol_id": 183 + }, + "minecraft:soul_sand": { + "protocol_id": 184 + }, + "minecraft:spawner": { + "protocol_id": 185 + }, + "minecraft:sponge": { + "protocol_id": 186 + }, + "minecraft:spore_blossom": { + "protocol_id": 187 + }, + "minecraft:stained_glass": { + "protocol_id": 189 + }, + "minecraft:stained_glass_pane": { + "protocol_id": 188 + }, + "minecraft:stair": { + "protocol_id": 190 + }, + "minecraft:standing_sign": { + "protocol_id": 191 + }, + "minecraft:stem": { + "protocol_id": 192 + }, + "minecraft:stonecutter": { + "protocol_id": 193 + }, + "minecraft:structure": { + "protocol_id": 194 + }, + "minecraft:structure_void": { + "protocol_id": 195 + }, + "minecraft:sugar_cane": { + "protocol_id": 196 + }, + "minecraft:sweet_berry_bush": { + "protocol_id": 197 + }, + "minecraft:tall_flower": { + "protocol_id": 198 + }, + "minecraft:tall_grass": { + "protocol_id": 199 + }, + "minecraft:tall_seagrass": { + "protocol_id": 200 + }, + "minecraft:target": { + "protocol_id": 201 + }, + "minecraft:tinted_glass": { + "protocol_id": 202 + }, + "minecraft:tnt": { + "protocol_id": 203 + }, + "minecraft:torch": { + "protocol_id": 205 + }, + "minecraft:torchflower_crop": { + "protocol_id": 204 + }, + "minecraft:transparent": { + "protocol_id": 206 + }, + "minecraft:trapdoor": { + "protocol_id": 207 + }, + "minecraft:trapped_chest": { + "protocol_id": 208 + }, + "minecraft:trial_spawner": { + "protocol_id": 209 + }, + "minecraft:trip_wire_hook": { + "protocol_id": 210 + }, + "minecraft:tripwire": { + "protocol_id": 211 + }, + "minecraft:turtle_egg": { + "protocol_id": 212 + }, + "minecraft:twisting_vines": { + "protocol_id": 214 + }, + "minecraft:twisting_vines_plant": { + "protocol_id": 213 + }, + "minecraft:vault": { + "protocol_id": 215 + }, + "minecraft:vine": { + "protocol_id": 216 + }, + "minecraft:wall": { + "protocol_id": 222 + }, + "minecraft:wall_banner": { + "protocol_id": 217 + }, + "minecraft:wall_hanging_sign": { + "protocol_id": 218 + }, + "minecraft:wall_sign": { + "protocol_id": 219 + }, + "minecraft:wall_skull": { + "protocol_id": 220 + }, + "minecraft:wall_torch": { + "protocol_id": 221 + }, + "minecraft:waterlily": { + "protocol_id": 223 + }, + "minecraft:waterlogged_transparent": { + "protocol_id": 224 + }, + "minecraft:weathering_copper_bulb": { + "protocol_id": 225 + }, + "minecraft:weathering_copper_door": { + "protocol_id": 226 + }, + "minecraft:weathering_copper_full": { + "protocol_id": 227 + }, + "minecraft:weathering_copper_grate": { + "protocol_id": 228 + }, + "minecraft:weathering_copper_slab": { + "protocol_id": 229 + }, + "minecraft:weathering_copper_stair": { + "protocol_id": 230 + }, + "minecraft:weathering_copper_trap_door": { + "protocol_id": 231 + }, + "minecraft:web": { + "protocol_id": 232 + }, + "minecraft:weeping_vines": { + "protocol_id": 234 + }, + "minecraft:weeping_vines_plant": { + "protocol_id": 233 + }, + "minecraft:weighted_pressure_plate": { + "protocol_id": 235 + }, + "minecraft:wet_sponge": { + "protocol_id": 236 + }, + "minecraft:wither_rose": { + "protocol_id": 237 + }, + "minecraft:wither_skull": { + "protocol_id": 238 + }, + "minecraft:wither_wall_skull": { + "protocol_id": 239 + }, + "minecraft:wool_carpet": { + "protocol_id": 240 + } + }, + "protocol_id": 56 + }, + "minecraft:cat_variant": { + "entries": { + "minecraft:all_black": { + "protocol_id": 10 + }, + "minecraft:black": { + "protocol_id": 1 + }, + "minecraft:british_shorthair": { + "protocol_id": 4 + }, + "minecraft:calico": { + "protocol_id": 5 + }, + "minecraft:jellie": { + "protocol_id": 9 + }, + "minecraft:persian": { + "protocol_id": 6 + }, + "minecraft:ragdoll": { + "protocol_id": 7 + }, + "minecraft:red": { + "protocol_id": 2 + }, + "minecraft:siamese": { + "protocol_id": 3 + }, + "minecraft:tabby": { + "protocol_id": 0 + }, + "minecraft:white": { + "protocol_id": 8 + } + }, + "protocol_id": 60 + }, + "minecraft:chunk_status": { + "default": "minecraft:empty", + "entries": { + "minecraft:biomes": { + "protocol_id": 3 + }, + "minecraft:carvers": { + "protocol_id": 6 + }, + "minecraft:empty": { + "protocol_id": 0 + }, + "minecraft:features": { + "protocol_id": 7 + }, + "minecraft:full": { + "protocol_id": 11 + }, + "minecraft:initialize_light": { + "protocol_id": 8 + }, + "minecraft:light": { + "protocol_id": 9 + }, + "minecraft:noise": { + "protocol_id": 4 + }, + "minecraft:spawn": { + "protocol_id": 10 + }, + "minecraft:structure_references": { + "protocol_id": 2 + }, + "minecraft:structure_starts": { + "protocol_id": 1 + }, + "minecraft:surface": { + "protocol_id": 5 + } + }, + "protocol_id": 11 + }, + "minecraft:command_argument_type": { + "entries": { + "brigadier:bool": { + "protocol_id": 0 + }, + "brigadier:double": { + "protocol_id": 2 + }, + "brigadier:float": { + "protocol_id": 1 + }, + "brigadier:integer": { + "protocol_id": 3 + }, + "brigadier:long": { + "protocol_id": 4 + }, + "brigadier:string": { + "protocol_id": 5 + }, + "minecraft:angle": { + "protocol_id": 27 + }, + "minecraft:block_pos": { + "protocol_id": 8 + }, + "minecraft:block_predicate": { + "protocol_id": 13 + }, + "minecraft:block_state": { + "protocol_id": 12 + }, + "minecraft:color": { + "protocol_id": 16 + }, + "minecraft:column_pos": { + "protocol_id": 9 + }, + "minecraft:component": { + "protocol_id": 17 + }, + "minecraft:dimension": { + "protocol_id": 40 + }, + "minecraft:entity": { + "protocol_id": 6 + }, + "minecraft:entity_anchor": { + "protocol_id": 37 + }, + "minecraft:float_range": { + "protocol_id": 39 + }, + "minecraft:function": { + "protocol_id": 36 + }, + "minecraft:game_profile": { + "protocol_id": 7 + }, + "minecraft:gamemode": { + "protocol_id": 41 + }, + "minecraft:heightmap": { + "protocol_id": 49 + }, + "minecraft:int_range": { + "protocol_id": 38 + }, + "minecraft:item_predicate": { + "protocol_id": 15 + }, + "minecraft:item_slot": { + "protocol_id": 33 + }, + "minecraft:item_slots": { + "protocol_id": 34 + }, + "minecraft:item_stack": { + "protocol_id": 14 + }, + "minecraft:loot_modifier": { + "protocol_id": 52 + }, + "minecraft:loot_predicate": { + "protocol_id": 51 + }, + "minecraft:loot_table": { + "protocol_id": 50 + }, + "minecraft:message": { + "protocol_id": 19 + }, + "minecraft:nbt_compound_tag": { + "protocol_id": 20 + }, + "minecraft:nbt_path": { + "protocol_id": 22 + }, + "minecraft:nbt_tag": { + "protocol_id": 21 + }, + "minecraft:objective": { + "protocol_id": 23 + }, + "minecraft:objective_criteria": { + "protocol_id": 24 + }, + "minecraft:operation": { + "protocol_id": 25 + }, + "minecraft:particle": { + "protocol_id": 26 + }, + "minecraft:resource": { + "protocol_id": 45 + }, + "minecraft:resource_key": { + "protocol_id": 46 + }, + "minecraft:resource_location": { + "protocol_id": 35 + }, + "minecraft:resource_or_tag": { + "protocol_id": 43 + }, + "minecraft:resource_or_tag_key": { + "protocol_id": 44 + }, + "minecraft:rotation": { + "protocol_id": 28 + }, + "minecraft:score_holder": { + "protocol_id": 30 + }, + "minecraft:scoreboard_slot": { + "protocol_id": 29 + }, + "minecraft:style": { + "protocol_id": 18 + }, + "minecraft:swizzle": { + "protocol_id": 31 + }, + "minecraft:team": { + "protocol_id": 32 + }, + "minecraft:template_mirror": { + "protocol_id": 47 + }, + "minecraft:template_rotation": { + "protocol_id": 48 + }, + "minecraft:time": { + "protocol_id": 42 + }, + "minecraft:uuid": { + "protocol_id": 53 + }, + "minecraft:vec2": { + "protocol_id": 11 + }, + "minecraft:vec3": { + "protocol_id": 10 + } + }, + "protocol_id": 20 + }, + "minecraft:creative_mode_tab": { + "entries": { + "minecraft:building_blocks": { + "protocol_id": 0 + }, + "minecraft:colored_blocks": { + "protocol_id": 1 + }, + "minecraft:combat": { + "protocol_id": 8 + }, + "minecraft:food_and_drinks": { + "protocol_id": 9 + }, + "minecraft:functional_blocks": { + "protocol_id": 3 + }, + "minecraft:hotbar": { + "protocol_id": 5 + }, + "minecraft:ingredients": { + "protocol_id": 10 + }, + "minecraft:inventory": { + "protocol_id": 13 + }, + "minecraft:natural_blocks": { + "protocol_id": 2 + }, + "minecraft:op_blocks": { + "protocol_id": 12 + }, + "minecraft:redstone_blocks": { + "protocol_id": 4 + }, + "minecraft:search": { + "protocol_id": 6 + }, + "minecraft:spawn_eggs": { + "protocol_id": 11 + }, + "minecraft:tools_and_utilities": { + "protocol_id": 7 + } + }, + "protocol_id": 64 + }, + "minecraft:custom_stat": { + "entries": { + "minecraft:animals_bred": { + "protocol_id": 32 + }, + "minecraft:aviate_one_cm": { + "protocol_id": 18 + }, + "minecraft:bell_ring": { + "protocol_id": 68 + }, + "minecraft:boat_one_cm": { + "protocol_id": 15 + }, + "minecraft:clean_armor": { + "protocol_id": 40 + }, + "minecraft:clean_banner": { + "protocol_id": 41 + }, + "minecraft:clean_shulker_box": { + "protocol_id": 42 + }, + "minecraft:climb_one_cm": { + "protocol_id": 11 + }, + "minecraft:crouch_one_cm": { + "protocol_id": 7 + }, + "minecraft:damage_absorbed": { + "protocol_id": 28 + }, + "minecraft:damage_blocked_by_shield": { + "protocol_id": 27 + }, + "minecraft:damage_dealt": { + "protocol_id": 23 + }, + "minecraft:damage_dealt_absorbed": { + "protocol_id": 24 + }, + "minecraft:damage_dealt_resisted": { + "protocol_id": 25 + }, + "minecraft:damage_resisted": { + "protocol_id": 29 + }, + "minecraft:damage_taken": { + "protocol_id": 26 + }, + "minecraft:deaths": { + "protocol_id": 30 + }, + "minecraft:drop": { + "protocol_id": 22 + }, + "minecraft:eat_cake_slice": { + "protocol_id": 37 + }, + "minecraft:enchant_item": { + "protocol_id": 53 + }, + "minecraft:fall_one_cm": { + "protocol_id": 10 + }, + "minecraft:fill_cauldron": { + "protocol_id": 38 + }, + "minecraft:fish_caught": { + "protocol_id": 34 + }, + "minecraft:fly_one_cm": { + "protocol_id": 12 + }, + "minecraft:horse_one_cm": { + "protocol_id": 17 + }, + "minecraft:inspect_dispenser": { + "protocol_id": 47 + }, + "minecraft:inspect_dropper": { + "protocol_id": 45 + }, + "minecraft:inspect_hopper": { + "protocol_id": 46 + }, + "minecraft:interact_with_anvil": { + "protocol_id": 71 + }, + "minecraft:interact_with_beacon": { + "protocol_id": 44 + }, + "minecraft:interact_with_blast_furnace": { + "protocol_id": 61 + }, + "minecraft:interact_with_brewingstand": { + "protocol_id": 43 + }, + "minecraft:interact_with_campfire": { + "protocol_id": 64 + }, + "minecraft:interact_with_cartography_table": { + "protocol_id": 65 + }, + "minecraft:interact_with_crafting_table": { + "protocol_id": 56 + }, + "minecraft:interact_with_furnace": { + "protocol_id": 55 + }, + "minecraft:interact_with_grindstone": { + "protocol_id": 72 + }, + "minecraft:interact_with_lectern": { + "protocol_id": 63 + }, + "minecraft:interact_with_loom": { + "protocol_id": 66 + }, + "minecraft:interact_with_smithing_table": { + "protocol_id": 74 + }, + "minecraft:interact_with_smoker": { + "protocol_id": 62 + }, + "minecraft:interact_with_stonecutter": { + "protocol_id": 67 + }, + "minecraft:jump": { + "protocol_id": 21 + }, + "minecraft:leave_game": { + "protocol_id": 0 + }, + "minecraft:minecart_one_cm": { + "protocol_id": 14 + }, + "minecraft:mob_kills": { + "protocol_id": 31 + }, + "minecraft:open_barrel": { + "protocol_id": 60 + }, + "minecraft:open_chest": { + "protocol_id": 57 + }, + "minecraft:open_enderchest": { + "protocol_id": 52 + }, + "minecraft:open_shulker_box": { + "protocol_id": 59 + }, + "minecraft:pig_one_cm": { + "protocol_id": 16 + }, + "minecraft:play_noteblock": { + "protocol_id": 48 + }, + "minecraft:play_record": { + "protocol_id": 54 + }, + "minecraft:play_time": { + "protocol_id": 1 + }, + "minecraft:player_kills": { + "protocol_id": 33 + }, + "minecraft:pot_flower": { + "protocol_id": 50 + }, + "minecraft:raid_trigger": { + "protocol_id": 69 + }, + "minecraft:raid_win": { + "protocol_id": 70 + }, + "minecraft:sleep_in_bed": { + "protocol_id": 58 + }, + "minecraft:sneak_time": { + "protocol_id": 5 + }, + "minecraft:sprint_one_cm": { + "protocol_id": 8 + }, + "minecraft:strider_one_cm": { + "protocol_id": 20 + }, + "minecraft:swim_one_cm": { + "protocol_id": 19 + }, + "minecraft:talked_to_villager": { + "protocol_id": 35 + }, + "minecraft:target_hit": { + "protocol_id": 73 + }, + "minecraft:time_since_death": { + "protocol_id": 3 + }, + "minecraft:time_since_rest": { + "protocol_id": 4 + }, + "minecraft:total_world_time": { + "protocol_id": 2 + }, + "minecraft:traded_with_villager": { + "protocol_id": 36 + }, + "minecraft:trigger_trapped_chest": { + "protocol_id": 51 + }, + "minecraft:tune_noteblock": { + "protocol_id": 49 + }, + "minecraft:use_cauldron": { + "protocol_id": 39 + }, + "minecraft:walk_on_water_one_cm": { + "protocol_id": 9 + }, + "minecraft:walk_one_cm": { + "protocol_id": 6 + }, + "minecraft:walk_under_water_one_cm": { + "protocol_id": 13 + } + }, + "protocol_id": 10 + }, + "minecraft:data_component_type": { + "entries": { + "minecraft:attribute_modifiers": { + "protocol_id": 12 + }, + "minecraft:banner_patterns": { + "protocol_id": 49 + }, + "minecraft:base_color": { + "protocol_id": 50 + }, + "minecraft:bees": { + "protocol_id": 54 + }, + "minecraft:block_entity_data": { + "protocol_id": 39 + }, + "minecraft:block_state": { + "protocol_id": 53 + }, + "minecraft:bucket_entity_data": { + "protocol_id": 38 + }, + "minecraft:bundle_contents": { + "protocol_id": 30 + }, + "minecraft:can_break": { + "protocol_id": 11 + }, + "minecraft:can_place_on": { + "protocol_id": 10 + }, + "minecraft:charged_projectiles": { + "protocol_id": 29 + }, + "minecraft:container": { + "protocol_id": 52 + }, + "minecraft:container_loot": { + "protocol_id": 56 + }, + "minecraft:creative_slot_lock": { + "protocol_id": 17 + }, + "minecraft:custom_data": { + "protocol_id": 0 + }, + "minecraft:custom_model_data": { + "protocol_id": 13 + }, + "minecraft:custom_name": { + "protocol_id": 5 + }, + "minecraft:damage": { + "protocol_id": 3 + }, + "minecraft:debug_stick_state": { + "protocol_id": 36 + }, + "minecraft:dyed_color": { + "protocol_id": 24 + }, + "minecraft:enchantment_glint_override": { + "protocol_id": 18 + }, + "minecraft:enchantments": { + "protocol_id": 9 + }, + "minecraft:entity_data": { + "protocol_id": 37 + }, + "minecraft:fire_resistant": { + "protocol_id": 21 + }, + "minecraft:firework_explosion": { + "protocol_id": 45 + }, + "minecraft:fireworks": { + "protocol_id": 46 + }, + "minecraft:food": { + "protocol_id": 20 + }, + "minecraft:hide_additional_tooltip": { + "protocol_id": 14 + }, + "minecraft:hide_tooltip": { + "protocol_id": 15 + }, + "minecraft:instrument": { + "protocol_id": 40 + }, + "minecraft:intangible_projectile": { + "protocol_id": 19 + }, + "minecraft:item_name": { + "protocol_id": 6 + }, + "minecraft:jukebox_playable": { + "protocol_id": 42 + }, + "minecraft:lock": { + "protocol_id": 55 + }, + "minecraft:lodestone_tracker": { + "protocol_id": 44 + }, + "minecraft:lore": { + "protocol_id": 7 + }, + "minecraft:map_color": { + "protocol_id": 25 + }, + "minecraft:map_decorations": { + "protocol_id": 27 + }, + "minecraft:map_id": { + "protocol_id": 26 + }, + "minecraft:map_post_processing": { + "protocol_id": 28 + }, + "minecraft:max_damage": { + "protocol_id": 2 + }, + "minecraft:max_stack_size": { + "protocol_id": 1 + }, + "minecraft:note_block_sound": { + "protocol_id": 48 + }, + "minecraft:ominous_bottle_amplifier": { + "protocol_id": 41 + }, + "minecraft:pot_decorations": { + "protocol_id": 51 + }, + "minecraft:potion_contents": { + "protocol_id": 31 + }, + "minecraft:profile": { + "protocol_id": 47 + }, + "minecraft:rarity": { + "protocol_id": 8 + }, + "minecraft:recipes": { + "protocol_id": 43 + }, + "minecraft:repair_cost": { + "protocol_id": 16 + }, + "minecraft:stored_enchantments": { + "protocol_id": 23 + }, + "minecraft:suspicious_stew_effects": { + "protocol_id": 32 + }, + "minecraft:tool": { + "protocol_id": 22 + }, + "minecraft:trim": { + "protocol_id": 35 + }, + "minecraft:unbreakable": { + "protocol_id": 4 + }, + "minecraft:writable_book_content": { + "protocol_id": 33 + }, + "minecraft:written_book_content": { + "protocol_id": 34 + } + }, + "protocol_id": 68 + }, + "minecraft:decorated_pot_pattern": { + "entries": { + "minecraft:angler": { + "protocol_id": 0 + }, + "minecraft:archer": { + "protocol_id": 1 + }, + "minecraft:arms_up": { + "protocol_id": 2 + }, + "minecraft:blade": { + "protocol_id": 3 + }, + "minecraft:blank": { + "protocol_id": 23 + }, + "minecraft:brewer": { + "protocol_id": 4 + }, + "minecraft:burn": { + "protocol_id": 5 + }, + "minecraft:danger": { + "protocol_id": 6 + }, + "minecraft:explorer": { + "protocol_id": 7 + }, + "minecraft:flow": { + "protocol_id": 8 + }, + "minecraft:friend": { + "protocol_id": 9 + }, + "minecraft:guster": { + "protocol_id": 10 + }, + "minecraft:heart": { + "protocol_id": 11 + }, + "minecraft:heartbreak": { + "protocol_id": 12 + }, + "minecraft:howl": { + "protocol_id": 13 + }, + "minecraft:miner": { + "protocol_id": 14 + }, + "minecraft:mourner": { + "protocol_id": 15 + }, + "minecraft:plenty": { + "protocol_id": 16 + }, + "minecraft:prize": { + "protocol_id": 17 + }, + "minecraft:scrape": { + "protocol_id": 18 + }, + "minecraft:sheaf": { + "protocol_id": 19 + }, + "minecraft:shelter": { + "protocol_id": 20 + }, + "minecraft:skull": { + "protocol_id": 21 + }, + "minecraft:snort": { + "protocol_id": 22 + } + }, + "protocol_id": 63 + }, + "minecraft:enchantment_effect_component_type": { + "entries": { + "minecraft:ammo_use": { + "protocol_id": 13 + }, + "minecraft:armor_effectiveness": { + "protocol_id": 5 + }, + "minecraft:attributes": { + "protocol_id": 9 + }, + "minecraft:block_experience": { + "protocol_id": 21 + }, + "minecraft:crossbow_charge_time": { + "protocol_id": 24 + }, + "minecraft:crossbow_charging_sounds": { + "protocol_id": 25 + }, + "minecraft:damage": { + "protocol_id": 2 + }, + "minecraft:damage_immunity": { + "protocol_id": 1 + }, + "minecraft:damage_protection": { + "protocol_id": 0 + }, + "minecraft:equipment_drops": { + "protocol_id": 10 + }, + "minecraft:fishing_luck_bonus": { + "protocol_id": 20 + }, + "minecraft:fishing_time_reduction": { + "protocol_id": 19 + }, + "minecraft:hit_block": { + "protocol_id": 7 + }, + "minecraft:item_damage": { + "protocol_id": 8 + }, + "minecraft:knockback": { + "protocol_id": 4 + }, + "minecraft:location_changed": { + "protocol_id": 11 + }, + "minecraft:mob_experience": { + "protocol_id": 22 + }, + "minecraft:post_attack": { + "protocol_id": 6 + }, + "minecraft:prevent_armor_change": { + "protocol_id": 28 + }, + "minecraft:prevent_equipment_drop": { + "protocol_id": 27 + }, + "minecraft:projectile_count": { + "protocol_id": 17 + }, + "minecraft:projectile_piercing": { + "protocol_id": 14 + }, + "minecraft:projectile_spawned": { + "protocol_id": 15 + }, + "minecraft:projectile_spread": { + "protocol_id": 16 + }, + "minecraft:repair_with_xp": { + "protocol_id": 23 + }, + "minecraft:smash_damage_per_fallen_block": { + "protocol_id": 3 + }, + "minecraft:tick": { + "protocol_id": 12 + }, + "minecraft:trident_return_acceleration": { + "protocol_id": 18 + }, + "minecraft:trident_sound": { + "protocol_id": 26 + }, + "minecraft:trident_spin_attack_strength": { + "protocol_id": 29 + } + }, + "protocol_id": 72 + }, + "minecraft:enchantment_entity_effect_type": { + "entries": { + "minecraft:all_of": { + "protocol_id": 0 + }, + "minecraft:apply_mob_effect": { + "protocol_id": 1 + }, + "minecraft:damage_entity": { + "protocol_id": 2 + }, + "minecraft:damage_item": { + "protocol_id": 3 + }, + "minecraft:explode": { + "protocol_id": 4 + }, + "minecraft:ignite": { + "protocol_id": 5 + }, + "minecraft:play_sound": { + "protocol_id": 6 + }, + "minecraft:replace_block": { + "protocol_id": 7 + }, + "minecraft:replace_disk": { + "protocol_id": 8 + }, + "minecraft:run_function": { + "protocol_id": 9 + }, + "minecraft:set_block_properties": { + "protocol_id": 10 + }, + "minecraft:spawn_particles": { + "protocol_id": 11 + }, + "minecraft:summon_entity": { + "protocol_id": 12 + } + }, + "protocol_id": 74 + }, + "minecraft:enchantment_level_based_value_type": { + "entries": { + "minecraft:clamped": { + "protocol_id": 0 + }, + "minecraft:fraction": { + "protocol_id": 1 + }, + "minecraft:levels_squared": { + "protocol_id": 2 + }, + "minecraft:linear": { + "protocol_id": 3 + }, + "minecraft:lookup": { + "protocol_id": 4 + } + }, + "protocol_id": 73 + }, + "minecraft:enchantment_location_based_effect_type": { + "entries": { + "minecraft:all_of": { + "protocol_id": 0 + }, + "minecraft:apply_mob_effect": { + "protocol_id": 1 + }, + "minecraft:attribute": { + "protocol_id": 2 + }, + "minecraft:damage_entity": { + "protocol_id": 3 + }, + "minecraft:damage_item": { + "protocol_id": 4 + }, + "minecraft:explode": { + "protocol_id": 5 + }, + "minecraft:ignite": { + "protocol_id": 6 + }, + "minecraft:play_sound": { + "protocol_id": 7 + }, + "minecraft:replace_block": { + "protocol_id": 8 + }, + "minecraft:replace_disk": { + "protocol_id": 9 + }, + "minecraft:run_function": { + "protocol_id": 10 + }, + "minecraft:set_block_properties": { + "protocol_id": 11 + }, + "minecraft:spawn_particles": { + "protocol_id": 12 + }, + "minecraft:summon_entity": { + "protocol_id": 13 + } + }, + "protocol_id": 75 + }, + "minecraft:enchantment_provider_type": { + "entries": { + "minecraft:by_cost": { + "protocol_id": 0 + }, + "minecraft:by_cost_with_difficulty": { + "protocol_id": 1 + }, + "minecraft:single": { + "protocol_id": 2 + } + }, + "protocol_id": 77 + }, + "minecraft:enchantment_value_effect_type": { + "entries": { + "minecraft:add": { + "protocol_id": 0 + }, + "minecraft:all_of": { + "protocol_id": 1 + }, + "minecraft:multiply": { + "protocol_id": 2 + }, + "minecraft:remove_binomial": { + "protocol_id": 3 + }, + "minecraft:set": { + "protocol_id": 4 + } + }, + "protocol_id": 76 + }, + "minecraft:entity_sub_predicate_type": { + "entries": { + "minecraft:axolotl": { + "protocol_id": 5 + }, + "minecraft:boat": { + "protocol_id": 6 + }, + "minecraft:cat": { + "protocol_id": 16 + }, + "minecraft:fishing_hook": { + "protocol_id": 1 + }, + "minecraft:fox": { + "protocol_id": 7 + }, + "minecraft:frog": { + "protocol_id": 17 + }, + "minecraft:horse": { + "protocol_id": 10 + }, + "minecraft:lightning": { + "protocol_id": 0 + }, + "minecraft:llama": { + "protocol_id": 11 + }, + "minecraft:mooshroom": { + "protocol_id": 8 + }, + "minecraft:painting": { + "protocol_id": 15 + }, + "minecraft:parrot": { + "protocol_id": 13 + }, + "minecraft:player": { + "protocol_id": 2 + }, + "minecraft:rabbit": { + "protocol_id": 9 + }, + "minecraft:raider": { + "protocol_id": 4 + }, + "minecraft:slime": { + "protocol_id": 3 + }, + "minecraft:tropical_fish": { + "protocol_id": 14 + }, + "minecraft:villager": { + "protocol_id": 12 + }, + "minecraft:wolf": { + "protocol_id": 18 + } + }, + "protocol_id": 69 + }, + "minecraft:entity_type": { + "default": "minecraft:pig", + "entries": { + "minecraft:allay": { + "protocol_id": 0 + }, + "minecraft:area_effect_cloud": { + "protocol_id": 1 + }, + "minecraft:armadillo": { + "protocol_id": 2 + }, + "minecraft:armor_stand": { + "protocol_id": 3 + }, + "minecraft:arrow": { + "protocol_id": 4 + }, + "minecraft:axolotl": { + "protocol_id": 5 + }, + "minecraft:bat": { + "protocol_id": 6 + }, + "minecraft:bee": { + "protocol_id": 7 + }, + "minecraft:blaze": { + "protocol_id": 8 + }, + "minecraft:block_display": { + "protocol_id": 9 + }, + "minecraft:boat": { + "protocol_id": 10 + }, + "minecraft:bogged": { + "protocol_id": 11 + }, + "minecraft:breeze": { + "protocol_id": 12 + }, + "minecraft:breeze_wind_charge": { + "protocol_id": 13 + }, + "minecraft:camel": { + "protocol_id": 14 + }, + "minecraft:cat": { + "protocol_id": 15 + }, + "minecraft:cave_spider": { + "protocol_id": 16 + }, + "minecraft:chest_boat": { + "protocol_id": 17 + }, + "minecraft:chest_minecart": { + "protocol_id": 18 + }, + "minecraft:chicken": { + "protocol_id": 19 + }, + "minecraft:cod": { + "protocol_id": 20 + }, + "minecraft:command_block_minecart": { + "protocol_id": 21 + }, + "minecraft:cow": { + "protocol_id": 22 + }, + "minecraft:creeper": { + "protocol_id": 23 + }, + "minecraft:dolphin": { + "protocol_id": 24 + }, + "minecraft:donkey": { + "protocol_id": 25 + }, + "minecraft:dragon_fireball": { + "protocol_id": 26 + }, + "minecraft:drowned": { + "protocol_id": 27 + }, + "minecraft:egg": { + "protocol_id": 28 + }, + "minecraft:elder_guardian": { + "protocol_id": 29 + }, + "minecraft:end_crystal": { + "protocol_id": 30 + }, + "minecraft:ender_dragon": { + "protocol_id": 31 + }, + "minecraft:ender_pearl": { + "protocol_id": 32 + }, + "minecraft:enderman": { + "protocol_id": 33 + }, + "minecraft:endermite": { + "protocol_id": 34 + }, + "minecraft:evoker": { + "protocol_id": 35 + }, + "minecraft:evoker_fangs": { + "protocol_id": 36 + }, + "minecraft:experience_bottle": { + "protocol_id": 37 + }, + "minecraft:experience_orb": { + "protocol_id": 38 + }, + "minecraft:eye_of_ender": { + "protocol_id": 39 + }, + "minecraft:falling_block": { + "protocol_id": 40 + }, + "minecraft:fireball": { + "protocol_id": 62 + }, + "minecraft:firework_rocket": { + "protocol_id": 41 + }, + "minecraft:fishing_bobber": { + "protocol_id": 129 + }, + "minecraft:fox": { + "protocol_id": 42 + }, + "minecraft:frog": { + "protocol_id": 43 + }, + "minecraft:furnace_minecart": { + "protocol_id": 44 + }, + "minecraft:ghast": { + "protocol_id": 45 + }, + "minecraft:giant": { + "protocol_id": 46 + }, + "minecraft:glow_item_frame": { + "protocol_id": 47 + }, + "minecraft:glow_squid": { + "protocol_id": 48 + }, + "minecraft:goat": { + "protocol_id": 49 + }, + "minecraft:guardian": { + "protocol_id": 50 + }, + "minecraft:hoglin": { + "protocol_id": 51 + }, + "minecraft:hopper_minecart": { + "protocol_id": 52 + }, + "minecraft:horse": { + "protocol_id": 53 + }, + "minecraft:husk": { + "protocol_id": 54 + }, + "minecraft:illusioner": { + "protocol_id": 55 + }, + "minecraft:interaction": { + "protocol_id": 56 + }, + "minecraft:iron_golem": { + "protocol_id": 57 + }, + "minecraft:item": { + "protocol_id": 58 + }, + "minecraft:item_display": { + "protocol_id": 59 + }, + "minecraft:item_frame": { + "protocol_id": 60 + }, + "minecraft:leash_knot": { + "protocol_id": 63 + }, + "minecraft:lightning_bolt": { + "protocol_id": 64 + }, + "minecraft:llama": { + "protocol_id": 65 + }, + "minecraft:llama_spit": { + "protocol_id": 66 + }, + "minecraft:magma_cube": { + "protocol_id": 67 + }, + "minecraft:marker": { + "protocol_id": 68 + }, + "minecraft:minecart": { + "protocol_id": 69 + }, + "minecraft:mooshroom": { + "protocol_id": 70 + }, + "minecraft:mule": { + "protocol_id": 71 + }, + "minecraft:ocelot": { + "protocol_id": 72 + }, + "minecraft:ominous_item_spawner": { + "protocol_id": 61 + }, + "minecraft:painting": { + "protocol_id": 73 + }, + "minecraft:panda": { + "protocol_id": 74 + }, + "minecraft:parrot": { + "protocol_id": 75 + }, + "minecraft:phantom": { + "protocol_id": 76 + }, + "minecraft:pig": { + "protocol_id": 77 + }, + "minecraft:piglin": { + "protocol_id": 78 + }, + "minecraft:piglin_brute": { + "protocol_id": 79 + }, + "minecraft:pillager": { + "protocol_id": 80 + }, + "minecraft:player": { + "protocol_id": 128 + }, + "minecraft:polar_bear": { + "protocol_id": 81 + }, + "minecraft:potion": { + "protocol_id": 82 + }, + "minecraft:pufferfish": { + "protocol_id": 83 + }, + "minecraft:rabbit": { + "protocol_id": 84 + }, + "minecraft:ravager": { + "protocol_id": 85 + }, + "minecraft:salmon": { + "protocol_id": 86 + }, + "minecraft:sheep": { + "protocol_id": 87 + }, + "minecraft:shulker": { + "protocol_id": 88 + }, + "minecraft:shulker_bullet": { + "protocol_id": 89 + }, + "minecraft:silverfish": { + "protocol_id": 90 + }, + "minecraft:skeleton": { + "protocol_id": 91 + }, + "minecraft:skeleton_horse": { + "protocol_id": 92 + }, + "minecraft:slime": { + "protocol_id": 93 + }, + "minecraft:small_fireball": { + "protocol_id": 94 + }, + "minecraft:sniffer": { + "protocol_id": 95 + }, + "minecraft:snow_golem": { + "protocol_id": 96 + }, + "minecraft:snowball": { + "protocol_id": 97 + }, + "minecraft:spawner_minecart": { + "protocol_id": 98 + }, + "minecraft:spectral_arrow": { + "protocol_id": 99 + }, + "minecraft:spider": { + "protocol_id": 100 + }, + "minecraft:squid": { + "protocol_id": 101 + }, + "minecraft:stray": { + "protocol_id": 102 + }, + "minecraft:strider": { + "protocol_id": 103 + }, + "minecraft:tadpole": { + "protocol_id": 104 + }, + "minecraft:text_display": { + "protocol_id": 105 + }, + "minecraft:tnt": { + "protocol_id": 106 + }, + "minecraft:tnt_minecart": { + "protocol_id": 107 + }, + "minecraft:trader_llama": { + "protocol_id": 108 + }, + "minecraft:trident": { + "protocol_id": 109 + }, + "minecraft:tropical_fish": { + "protocol_id": 110 + }, + "minecraft:turtle": { + "protocol_id": 111 + }, + "minecraft:vex": { + "protocol_id": 112 + }, + "minecraft:villager": { + "protocol_id": 113 + }, + "minecraft:vindicator": { + "protocol_id": 114 + }, + "minecraft:wandering_trader": { + "protocol_id": 115 + }, + "minecraft:warden": { + "protocol_id": 116 + }, + "minecraft:wind_charge": { + "protocol_id": 117 + }, + "minecraft:witch": { + "protocol_id": 118 + }, + "minecraft:wither": { + "protocol_id": 119 + }, + "minecraft:wither_skeleton": { + "protocol_id": 120 + }, + "minecraft:wither_skull": { + "protocol_id": 121 + }, + "minecraft:wolf": { + "protocol_id": 122 + }, + "minecraft:zoglin": { + "protocol_id": 123 + }, + "minecraft:zombie": { + "protocol_id": 124 + }, + "minecraft:zombie_horse": { + "protocol_id": 125 + }, + "minecraft:zombie_villager": { + "protocol_id": 126 + }, + "minecraft:zombified_piglin": { + "protocol_id": 127 + } + }, + "protocol_id": 5 + }, + "minecraft:float_provider_type": { + "entries": { + "minecraft:clamped_normal": { + "protocol_id": 2 + }, + "minecraft:constant": { + "protocol_id": 0 + }, + "minecraft:trapezoid": { + "protocol_id": 3 + }, + "minecraft:uniform": { + "protocol_id": 1 + } + }, + "protocol_id": 35 + }, + "minecraft:fluid": { + "default": "minecraft:empty", + "entries": { + "minecraft:empty": { + "protocol_id": 0 + }, + "minecraft:flowing_lava": { + "protocol_id": 3 + }, + "minecraft:flowing_water": { + "protocol_id": 1 + }, + "minecraft:lava": { + "protocol_id": 4 + }, + "minecraft:water": { + "protocol_id": 2 + } + }, + "protocol_id": 2 + }, + "minecraft:frog_variant": { + "entries": { + "minecraft:cold": { + "protocol_id": 2 + }, + "minecraft:temperate": { + "protocol_id": 0 + }, + "minecraft:warm": { + "protocol_id": 1 + } + }, + "protocol_id": 61 + }, + "minecraft:game_event": { + "default": "minecraft:step", + "entries": { + "minecraft:block_activate": { + "protocol_id": 0 + }, + "minecraft:block_attach": { + "protocol_id": 1 + }, + "minecraft:block_change": { + "protocol_id": 2 + }, + "minecraft:block_close": { + "protocol_id": 3 + }, + "minecraft:block_deactivate": { + "protocol_id": 4 + }, + "minecraft:block_destroy": { + "protocol_id": 5 + }, + "minecraft:block_detach": { + "protocol_id": 6 + }, + "minecraft:block_open": { + "protocol_id": 7 + }, + "minecraft:block_place": { + "protocol_id": 8 + }, + "minecraft:container_close": { + "protocol_id": 9 + }, + "minecraft:container_open": { + "protocol_id": 10 + }, + "minecraft:drink": { + "protocol_id": 11 + }, + "minecraft:eat": { + "protocol_id": 12 + }, + "minecraft:elytra_glide": { + "protocol_id": 13 + }, + "minecraft:entity_action": { + "protocol_id": 20 + }, + "minecraft:entity_damage": { + "protocol_id": 14 + }, + "minecraft:entity_die": { + "protocol_id": 15 + }, + "minecraft:entity_dismount": { + "protocol_id": 16 + }, + "minecraft:entity_interact": { + "protocol_id": 17 + }, + "minecraft:entity_mount": { + "protocol_id": 18 + }, + "minecraft:entity_place": { + "protocol_id": 19 + }, + "minecraft:equip": { + "protocol_id": 21 + }, + "minecraft:explode": { + "protocol_id": 22 + }, + "minecraft:flap": { + "protocol_id": 23 + }, + "minecraft:fluid_pickup": { + "protocol_id": 24 + }, + "minecraft:fluid_place": { + "protocol_id": 25 + }, + "minecraft:hit_ground": { + "protocol_id": 26 + }, + "minecraft:instrument_play": { + "protocol_id": 27 + }, + "minecraft:item_interact_finish": { + "protocol_id": 28 + }, + "minecraft:item_interact_start": { + "protocol_id": 29 + }, + "minecraft:jukebox_play": { + "protocol_id": 30 + }, + "minecraft:jukebox_stop_play": { + "protocol_id": 31 + }, + "minecraft:lightning_strike": { + "protocol_id": 32 + }, + "minecraft:note_block_play": { + "protocol_id": 33 + }, + "minecraft:prime_fuse": { + "protocol_id": 34 + }, + "minecraft:projectile_land": { + "protocol_id": 35 + }, + "minecraft:projectile_shoot": { + "protocol_id": 36 + }, + "minecraft:resonate_1": { + "protocol_id": 45 + }, + "minecraft:resonate_10": { + "protocol_id": 54 + }, + "minecraft:resonate_11": { + "protocol_id": 55 + }, + "minecraft:resonate_12": { + "protocol_id": 56 + }, + "minecraft:resonate_13": { + "protocol_id": 57 + }, + "minecraft:resonate_14": { + "protocol_id": 58 + }, + "minecraft:resonate_15": { + "protocol_id": 59 + }, + "minecraft:resonate_2": { + "protocol_id": 46 + }, + "minecraft:resonate_3": { + "protocol_id": 47 + }, + "minecraft:resonate_4": { + "protocol_id": 48 + }, + "minecraft:resonate_5": { + "protocol_id": 49 + }, + "minecraft:resonate_6": { + "protocol_id": 50 + }, + "minecraft:resonate_7": { + "protocol_id": 51 + }, + "minecraft:resonate_8": { + "protocol_id": 52 + }, + "minecraft:resonate_9": { + "protocol_id": 53 + }, + "minecraft:sculk_sensor_tendrils_clicking": { + "protocol_id": 37 + }, + "minecraft:shear": { + "protocol_id": 38 + }, + "minecraft:shriek": { + "protocol_id": 39 + }, + "minecraft:splash": { + "protocol_id": 40 + }, + "minecraft:step": { + "protocol_id": 41 + }, + "minecraft:swim": { + "protocol_id": 42 + }, + "minecraft:teleport": { + "protocol_id": 43 + }, + "minecraft:unequip": { + "protocol_id": 44 + } + }, + "protocol_id": 0 + }, + "minecraft:height_provider_type": { + "entries": { + "minecraft:biased_to_bottom": { + "protocol_id": 2 + }, + "minecraft:constant": { + "protocol_id": 0 + }, + "minecraft:trapezoid": { + "protocol_id": 4 + }, + "minecraft:uniform": { + "protocol_id": 1 + }, + "minecraft:very_biased_to_bottom": { + "protocol_id": 3 + }, + "minecraft:weighted_list": { + "protocol_id": 5 + } + }, + "protocol_id": 37 + }, + "minecraft:instrument": { + "entries": { + "minecraft:admire_goat_horn": { + "protocol_id": 4 + }, + "minecraft:call_goat_horn": { + "protocol_id": 5 + }, + "minecraft:dream_goat_horn": { + "protocol_id": 7 + }, + "minecraft:feel_goat_horn": { + "protocol_id": 3 + }, + "minecraft:ponder_goat_horn": { + "protocol_id": 0 + }, + "minecraft:seek_goat_horn": { + "protocol_id": 2 + }, + "minecraft:sing_goat_horn": { + "protocol_id": 1 + }, + "minecraft:yearn_goat_horn": { + "protocol_id": 6 + } + }, + "protocol_id": 62 + }, + "minecraft:int_provider_type": { + "entries": { + "minecraft:biased_to_bottom": { + "protocol_id": 2 + }, + "minecraft:clamped": { + "protocol_id": 3 + }, + "minecraft:clamped_normal": { + "protocol_id": 5 + }, + "minecraft:constant": { + "protocol_id": 0 + }, + "minecraft:uniform": { + "protocol_id": 1 + }, + "minecraft:weighted_list": { + "protocol_id": 4 + } + }, + "protocol_id": 36 + }, + "minecraft:item": { + "default": "minecraft:air", + "entries": { + "minecraft:acacia_boat": { + "protocol_id": 782 + }, + "minecraft:acacia_button": { + "protocol_id": 688 + }, + "minecraft:acacia_chest_boat": { + "protocol_id": 783 + }, + "minecraft:acacia_door": { + "protocol_id": 715 + }, + "minecraft:acacia_fence": { + "protocol_id": 315 + }, + "minecraft:acacia_fence_gate": { + "protocol_id": 754 + }, + "minecraft:acacia_hanging_sign": { + "protocol_id": 901 + }, + "minecraft:acacia_leaves": { + "protocol_id": 180 + }, + "minecraft:acacia_log": { + "protocol_id": 136 + }, + "minecraft:acacia_planks": { + "protocol_id": 40 + }, + "minecraft:acacia_pressure_plate": { + "protocol_id": 703 + }, + "minecraft:acacia_sapling": { + "protocol_id": 52 + }, + "minecraft:acacia_sign": { + "protocol_id": 890 + }, + "minecraft:acacia_slab": { + "protocol_id": 256 + }, + "minecraft:acacia_stairs": { + "protocol_id": 387 + }, + "minecraft:acacia_trapdoor": { + "protocol_id": 735 + }, + "minecraft:acacia_wood": { + "protocol_id": 170 + }, + "minecraft:activator_rail": { + "protocol_id": 764 + }, + "minecraft:air": { + "protocol_id": 0 + }, + "minecraft:allay_spawn_egg": { + "protocol_id": 1009 + }, + "minecraft:allium": { + "protocol_id": 221 + }, + "minecraft:amethyst_block": { + "protocol_id": 86 + }, + "minecraft:amethyst_cluster": { + "protocol_id": 1261 + }, + "minecraft:amethyst_shard": { + "protocol_id": 809 + }, + "minecraft:ancient_debris": { + "protocol_id": 80 + }, + "minecraft:andesite": { + "protocol_id": 6 + }, + "minecraft:andesite_slab": { + "protocol_id": 648 + }, + "minecraft:andesite_stairs": { + "protocol_id": 631 + }, + "minecraft:andesite_wall": { + "protocol_id": 407 + }, + "minecraft:angler_pottery_sherd": { + "protocol_id": 1288 + }, + "minecraft:anvil": { + "protocol_id": 419 + }, + "minecraft:apple": { + "protocol_id": 800 + }, + "minecraft:archer_pottery_sherd": { + "protocol_id": 1289 + }, + "minecraft:armadillo_scute": { + "protocol_id": 796 + }, + "minecraft:armadillo_spawn_egg": { + "protocol_id": 1008 + }, + "minecraft:armor_stand": { + "protocol_id": 1123 + }, + "minecraft:arms_up_pottery_sherd": { + "protocol_id": 1290 + }, + "minecraft:arrow": { + "protocol_id": 802 + }, + "minecraft:axolotl_bucket": { + "protocol_id": 919 + }, + "minecraft:axolotl_spawn_egg": { + "protocol_id": 1010 + }, + "minecraft:azalea": { + "protocol_id": 197 + }, + "minecraft:azalea_leaves": { + "protocol_id": 184 + }, + "minecraft:azure_bluet": { + "protocol_id": 222 + }, + "minecraft:baked_potato": { + "protocol_id": 1099 + }, + "minecraft:bamboo": { + "protocol_id": 251 + }, + "minecraft:bamboo_block": { + "protocol_id": 144 + }, + "minecraft:bamboo_button": { + "protocol_id": 692 + }, + "minecraft:bamboo_chest_raft": { + "protocol_id": 791 + }, + "minecraft:bamboo_door": { + "protocol_id": 719 + }, + "minecraft:bamboo_fence": { + "protocol_id": 319 + }, + "minecraft:bamboo_fence_gate": { + "protocol_id": 758 + }, + "minecraft:bamboo_hanging_sign": { + "protocol_id": 905 + }, + "minecraft:bamboo_mosaic": { + "protocol_id": 47 + }, + "minecraft:bamboo_mosaic_slab": { + "protocol_id": 261 + }, + "minecraft:bamboo_mosaic_stairs": { + "protocol_id": 392 + }, + "minecraft:bamboo_planks": { + "protocol_id": 44 + }, + "minecraft:bamboo_pressure_plate": { + "protocol_id": 707 + }, + "minecraft:bamboo_raft": { + "protocol_id": 790 + }, + "minecraft:bamboo_sign": { + "protocol_id": 894 + }, + "minecraft:bamboo_slab": { + "protocol_id": 260 + }, + "minecraft:bamboo_stairs": { + "protocol_id": 391 + }, + "minecraft:bamboo_trapdoor": { + "protocol_id": 739 + }, + "minecraft:barrel": { + "protocol_id": 1205 + }, + "minecraft:barrier": { + "protocol_id": 443 + }, + "minecraft:basalt": { + "protocol_id": 328 + }, + "minecraft:bat_spawn_egg": { + "protocol_id": 1011 + }, + "minecraft:beacon": { + "protocol_id": 396 + }, + "minecraft:bedrock": { + "protocol_id": 56 + }, + "minecraft:bee_nest": { + "protocol_id": 1222 + }, + "minecraft:bee_spawn_egg": { + "protocol_id": 1012 + }, + "minecraft:beef": { + "protocol_id": 988 + }, + "minecraft:beehive": { + "protocol_id": 1223 + }, + "minecraft:beetroot": { + "protocol_id": 1154 + }, + "minecraft:beetroot_seeds": { + "protocol_id": 1155 + }, + "minecraft:beetroot_soup": { + "protocol_id": 1156 + }, + "minecraft:bell": { + "protocol_id": 1213 + }, + "minecraft:big_dripleaf": { + "protocol_id": 249 + }, + "minecraft:birch_boat": { + "protocol_id": 778 + }, + "minecraft:birch_button": { + "protocol_id": 686 + }, + "minecraft:birch_chest_boat": { + "protocol_id": 779 + }, + "minecraft:birch_door": { + "protocol_id": 713 + }, + "minecraft:birch_fence": { + "protocol_id": 313 + }, + "minecraft:birch_fence_gate": { + "protocol_id": 752 + }, + "minecraft:birch_hanging_sign": { + "protocol_id": 899 + }, + "minecraft:birch_leaves": { + "protocol_id": 178 + }, + "minecraft:birch_log": { + "protocol_id": 134 + }, + "minecraft:birch_planks": { + "protocol_id": 38 + }, + "minecraft:birch_pressure_plate": { + "protocol_id": 701 + }, + "minecraft:birch_sapling": { + "protocol_id": 50 + }, + "minecraft:birch_sign": { + "protocol_id": 888 + }, + "minecraft:birch_slab": { + "protocol_id": 254 + }, + "minecraft:birch_stairs": { + "protocol_id": 385 + }, + "minecraft:birch_trapdoor": { + "protocol_id": 733 + }, + "minecraft:birch_wood": { + "protocol_id": 168 + }, + "minecraft:black_banner": { + "protocol_id": 1148 + }, + "minecraft:black_bed": { + "protocol_id": 979 + }, + "minecraft:black_candle": { + "protocol_id": 1257 + }, + "minecraft:black_carpet": { + "protocol_id": 461 + }, + "minecraft:black_concrete": { + "protocol_id": 570 + }, + "minecraft:black_concrete_powder": { + "protocol_id": 586 + }, + "minecraft:black_dye": { + "protocol_id": 959 + }, + "minecraft:black_glazed_terracotta": { + "protocol_id": 554 + }, + "minecraft:black_shulker_box": { + "protocol_id": 538 + }, + "minecraft:black_stained_glass": { + "protocol_id": 486 + }, + "minecraft:black_stained_glass_pane": { + "protocol_id": 502 + }, + "minecraft:black_terracotta": { + "protocol_id": 442 + }, + "minecraft:black_wool": { + "protocol_id": 217 + }, + "minecraft:blackstone": { + "protocol_id": 1228 + }, + "minecraft:blackstone_slab": { + "protocol_id": 1229 + }, + "minecraft:blackstone_stairs": { + "protocol_id": 1230 + }, + "minecraft:blackstone_wall": { + "protocol_id": 412 + }, + "minecraft:blade_pottery_sherd": { + "protocol_id": 1291 + }, + "minecraft:blast_furnace": { + "protocol_id": 1207 + }, + "minecraft:blaze_powder": { + "protocol_id": 1002 + }, + "minecraft:blaze_rod": { + "protocol_id": 994 + }, + "minecraft:blaze_spawn_egg": { + "protocol_id": 1013 + }, + "minecraft:blue_banner": { + "protocol_id": 1144 + }, + "minecraft:blue_bed": { + "protocol_id": 975 + }, + "minecraft:blue_candle": { + "protocol_id": 1253 + }, + "minecraft:blue_carpet": { + "protocol_id": 457 + }, + "minecraft:blue_concrete": { + "protocol_id": 566 + }, + "minecraft:blue_concrete_powder": { + "protocol_id": 582 + }, + "minecraft:blue_dye": { + "protocol_id": 955 + }, + "minecraft:blue_glazed_terracotta": { + "protocol_id": 550 + }, + "minecraft:blue_ice": { + "protocol_id": 619 + }, + "minecraft:blue_orchid": { + "protocol_id": 220 + }, + "minecraft:blue_shulker_box": { + "protocol_id": 534 + }, + "minecraft:blue_stained_glass": { + "protocol_id": 482 + }, + "minecraft:blue_stained_glass_pane": { + "protocol_id": 498 + }, + "minecraft:blue_terracotta": { + "protocol_id": 438 + }, + "minecraft:blue_wool": { + "protocol_id": 213 + }, + "minecraft:bogged_spawn_egg": { + "protocol_id": 1014 + }, + "minecraft:bolt_armor_trim_smithing_template": { + "protocol_id": 1287 + }, + "minecraft:bone": { + "protocol_id": 961 + }, + "minecraft:bone_block": { + "protocol_id": 520 + }, + "minecraft:bone_meal": { + "protocol_id": 960 + }, + "minecraft:book": { + "protocol_id": 925 + }, + "minecraft:bookshelf": { + "protocol_id": 286 + }, + "minecraft:bow": { + "protocol_id": 801 + }, + "minecraft:bowl": { + "protocol_id": 799 + }, + "minecraft:brain_coral": { + "protocol_id": 600 + }, + "minecraft:brain_coral_block": { + "protocol_id": 595 + }, + "minecraft:brain_coral_fan": { + "protocol_id": 610 + }, + "minecraft:bread": { + "protocol_id": 855 + }, + "minecraft:breeze_rod": { + "protocol_id": 1332 + }, + "minecraft:breeze_spawn_egg": { + "protocol_id": 1015 + }, + "minecraft:brewer_pottery_sherd": { + "protocol_id": 1292 + }, + "minecraft:brewing_stand": { + "protocol_id": 1004 + }, + "minecraft:brick": { + "protocol_id": 921 + }, + "minecraft:brick_slab": { + "protocol_id": 270 + }, + "minecraft:brick_stairs": { + "protocol_id": 361 + }, + "minecraft:brick_wall": { + "protocol_id": 399 + }, + "minecraft:bricks": { + "protocol_id": 285 + }, + "minecraft:brown_banner": { + "protocol_id": 1145 + }, + "minecraft:brown_bed": { + "protocol_id": 976 + }, + "minecraft:brown_candle": { + "protocol_id": 1254 + }, + "minecraft:brown_carpet": { + "protocol_id": 458 + }, + "minecraft:brown_concrete": { + "protocol_id": 567 + }, + "minecraft:brown_concrete_powder": { + "protocol_id": 583 + }, + "minecraft:brown_dye": { + "protocol_id": 956 + }, + "minecraft:brown_glazed_terracotta": { + "protocol_id": 551 + }, + "minecraft:brown_mushroom": { + "protocol_id": 234 + }, + "minecraft:brown_mushroom_block": { + "protocol_id": 352 + }, + "minecraft:brown_shulker_box": { + "protocol_id": 535 + }, + "minecraft:brown_stained_glass": { + "protocol_id": 483 + }, + "minecraft:brown_stained_glass_pane": { + "protocol_id": 499 + }, + "minecraft:brown_terracotta": { + "protocol_id": 439 + }, + "minecraft:brown_wool": { + "protocol_id": 214 + }, + "minecraft:brush": { + "protocol_id": 1268 + }, + "minecraft:bubble_coral": { + "protocol_id": 601 + }, + "minecraft:bubble_coral_block": { + "protocol_id": 596 + }, + "minecraft:bubble_coral_fan": { + "protocol_id": 611 + }, + "minecraft:bucket": { + "protocol_id": 908 + }, + "minecraft:budding_amethyst": { + "protocol_id": 87 + }, + "minecraft:bundle": { + "protocol_id": 930 + }, + "minecraft:burn_pottery_sherd": { + "protocol_id": 1293 + }, + "minecraft:cactus": { + "protocol_id": 308 + }, + "minecraft:cake": { + "protocol_id": 963 + }, + "minecraft:calcite": { + "protocol_id": 11 + }, + "minecraft:calibrated_sculk_sensor": { + "protocol_id": 676 + }, + "minecraft:camel_spawn_egg": { + "protocol_id": 1017 + }, + "minecraft:campfire": { + "protocol_id": 1218 + }, + "minecraft:candle": { + "protocol_id": 1241 + }, + "minecraft:carrot": { + "protocol_id": 1097 + }, + "minecraft:carrot_on_a_stick": { + "protocol_id": 771 + }, + "minecraft:cartography_table": { + "protocol_id": 1208 + }, + "minecraft:carved_pumpkin": { + "protocol_id": 323 + }, + "minecraft:cat_spawn_egg": { + "protocol_id": 1016 + }, + "minecraft:cauldron": { + "protocol_id": 1005 + }, + "minecraft:cave_spider_spawn_egg": { + "protocol_id": 1018 + }, + "minecraft:chain": { + "protocol_id": 356 + }, + "minecraft:chain_command_block": { + "protocol_id": 515 + }, + "minecraft:chainmail_boots": { + "protocol_id": 863 + }, + "minecraft:chainmail_chestplate": { + "protocol_id": 861 + }, + "minecraft:chainmail_helmet": { + "protocol_id": 860 + }, + "minecraft:chainmail_leggings": { + "protocol_id": 862 + }, + "minecraft:charcoal": { + "protocol_id": 804 + }, + "minecraft:cherry_boat": { + "protocol_id": 784 + }, + "minecraft:cherry_button": { + "protocol_id": 689 + }, + "minecraft:cherry_chest_boat": { + "protocol_id": 785 + }, + "minecraft:cherry_door": { + "protocol_id": 716 + }, + "minecraft:cherry_fence": { + "protocol_id": 316 + }, + "minecraft:cherry_fence_gate": { + "protocol_id": 755 + }, + "minecraft:cherry_hanging_sign": { + "protocol_id": 902 + }, + "minecraft:cherry_leaves": { + "protocol_id": 181 + }, + "minecraft:cherry_log": { + "protocol_id": 137 + }, + "minecraft:cherry_planks": { + "protocol_id": 41 + }, + "minecraft:cherry_pressure_plate": { + "protocol_id": 704 + }, + "minecraft:cherry_sapling": { + "protocol_id": 53 + }, + "minecraft:cherry_sign": { + "protocol_id": 891 + }, + "minecraft:cherry_slab": { + "protocol_id": 257 + }, + "minecraft:cherry_stairs": { + "protocol_id": 388 + }, + "minecraft:cherry_trapdoor": { + "protocol_id": 736 + }, + "minecraft:cherry_wood": { + "protocol_id": 171 + }, + "minecraft:chest": { + "protocol_id": 299 + }, + "minecraft:chest_minecart": { + "protocol_id": 767 + }, + "minecraft:chicken": { + "protocol_id": 990 + }, + "minecraft:chicken_spawn_egg": { + "protocol_id": 1019 + }, + "minecraft:chipped_anvil": { + "protocol_id": 420 + }, + "minecraft:chiseled_bookshelf": { + "protocol_id": 287 + }, + "minecraft:chiseled_copper": { + "protocol_id": 96 + }, + "minecraft:chiseled_deepslate": { + "protocol_id": 350 + }, + "minecraft:chiseled_nether_bricks": { + "protocol_id": 368 + }, + "minecraft:chiseled_polished_blackstone": { + "protocol_id": 1235 + }, + "minecraft:chiseled_quartz_block": { + "protocol_id": 422 + }, + "minecraft:chiseled_red_sandstone": { + "protocol_id": 511 + }, + "minecraft:chiseled_sandstone": { + "protocol_id": 192 + }, + "minecraft:chiseled_stone_bricks": { + "protocol_id": 343 + }, + "minecraft:chiseled_tuff": { + "protocol_id": 16 + }, + "minecraft:chiseled_tuff_bricks": { + "protocol_id": 25 + }, + "minecraft:chorus_flower": { + "protocol_id": 294 + }, + "minecraft:chorus_fruit": { + "protocol_id": 1150 + }, + "minecraft:chorus_plant": { + "protocol_id": 293 + }, + "minecraft:clay": { + "protocol_id": 309 + }, + "minecraft:clay_ball": { + "protocol_id": 922 + }, + "minecraft:clock": { + "protocol_id": 932 + }, + "minecraft:coal": { + "protocol_id": 803 + }, + "minecraft:coal_block": { + "protocol_id": 81 + }, + "minecraft:coal_ore": { + "protocol_id": 62 + }, + "minecraft:coarse_dirt": { + "protocol_id": 29 + }, + "minecraft:coast_armor_trim_smithing_template": { + "protocol_id": 1272 + }, + "minecraft:cobbled_deepslate": { + "protocol_id": 9 + }, + "minecraft:cobbled_deepslate_slab": { + "protocol_id": 652 + }, + "minecraft:cobbled_deepslate_stairs": { + "protocol_id": 635 + }, + "minecraft:cobbled_deepslate_wall": { + "protocol_id": 415 + }, + "minecraft:cobblestone": { + "protocol_id": 35 + }, + "minecraft:cobblestone_slab": { + "protocol_id": 269 + }, + "minecraft:cobblestone_stairs": { + "protocol_id": 304 + }, + "minecraft:cobblestone_wall": { + "protocol_id": 397 + }, + "minecraft:cobweb": { + "protocol_id": 194 + }, + "minecraft:cocoa_beans": { + "protocol_id": 943 + }, + "minecraft:cod": { + "protocol_id": 935 + }, + "minecraft:cod_bucket": { + "protocol_id": 917 + }, + "minecraft:cod_spawn_egg": { + "protocol_id": 1020 + }, + "minecraft:command_block": { + "protocol_id": 395 + }, + "minecraft:command_block_minecart": { + "protocol_id": 1130 + }, + "minecraft:comparator": { + "protocol_id": 661 + }, + "minecraft:compass": { + "protocol_id": 928 + }, + "minecraft:composter": { + "protocol_id": 1204 + }, + "minecraft:conduit": { + "protocol_id": 620 + }, + "minecraft:cooked_beef": { + "protocol_id": 989 + }, + "minecraft:cooked_chicken": { + "protocol_id": 991 + }, + "minecraft:cooked_cod": { + "protocol_id": 939 + }, + "minecraft:cooked_mutton": { + "protocol_id": 1132 + }, + "minecraft:cooked_porkchop": { + "protocol_id": 882 + }, + "minecraft:cooked_rabbit": { + "protocol_id": 1119 + }, + "minecraft:cooked_salmon": { + "protocol_id": 940 + }, + "minecraft:cookie": { + "protocol_id": 980 + }, + "minecraft:copper_block": { + "protocol_id": 89 + }, + "minecraft:copper_bulb": { + "protocol_id": 1319 + }, + "minecraft:copper_door": { + "protocol_id": 722 + }, + "minecraft:copper_grate": { + "protocol_id": 1311 + }, + "minecraft:copper_ingot": { + "protocol_id": 813 + }, + "minecraft:copper_ore": { + "protocol_id": 66 + }, + "minecraft:copper_trapdoor": { + "protocol_id": 742 + }, + "minecraft:cornflower": { + "protocol_id": 228 + }, + "minecraft:cow_spawn_egg": { + "protocol_id": 1021 + }, + "minecraft:cracked_deepslate_bricks": { + "protocol_id": 347 + }, + "minecraft:cracked_deepslate_tiles": { + "protocol_id": 349 + }, + "minecraft:cracked_nether_bricks": { + "protocol_id": 367 + }, + "minecraft:cracked_polished_blackstone_bricks": { + "protocol_id": 1239 + }, + "minecraft:cracked_stone_bricks": { + "protocol_id": 342 + }, + "minecraft:crafter": { + "protocol_id": 981 + }, + "minecraft:crafting_table": { + "protocol_id": 300 + }, + "minecraft:creeper_banner_pattern": { + "protocol_id": 1196 + }, + "minecraft:creeper_head": { + "protocol_id": 1107 + }, + "minecraft:creeper_spawn_egg": { + "protocol_id": 1022 + }, + "minecraft:crimson_button": { + "protocol_id": 693 + }, + "minecraft:crimson_door": { + "protocol_id": 720 + }, + "minecraft:crimson_fence": { + "protocol_id": 320 + }, + "minecraft:crimson_fence_gate": { + "protocol_id": 759 + }, + "minecraft:crimson_fungus": { + "protocol_id": 236 + }, + "minecraft:crimson_hanging_sign": { + "protocol_id": 906 + }, + "minecraft:crimson_hyphae": { + "protocol_id": 174 + }, + "minecraft:crimson_nylium": { + "protocol_id": 33 + }, + "minecraft:crimson_planks": { + "protocol_id": 45 + }, + "minecraft:crimson_pressure_plate": { + "protocol_id": 708 + }, + "minecraft:crimson_roots": { + "protocol_id": 238 + }, + "minecraft:crimson_sign": { + "protocol_id": 895 + }, + "minecraft:crimson_slab": { + "protocol_id": 262 + }, + "minecraft:crimson_stairs": { + "protocol_id": 393 + }, + "minecraft:crimson_stem": { + "protocol_id": 142 + }, + "minecraft:crimson_trapdoor": { + "protocol_id": 740 + }, + "minecraft:crossbow": { + "protocol_id": 1192 + }, + "minecraft:crying_obsidian": { + "protocol_id": 1227 + }, + "minecraft:cut_copper": { + "protocol_id": 100 + }, + "minecraft:cut_copper_slab": { + "protocol_id": 108 + }, + "minecraft:cut_copper_stairs": { + "protocol_id": 104 + }, + "minecraft:cut_red_sandstone": { + "protocol_id": 512 + }, + "minecraft:cut_red_sandstone_slab": { + "protocol_id": 276 + }, + "minecraft:cut_sandstone": { + "protocol_id": 193 + }, + "minecraft:cut_sandstone_slab": { + "protocol_id": 267 + }, + "minecraft:cyan_banner": { + "protocol_id": 1142 + }, + "minecraft:cyan_bed": { + "protocol_id": 973 + }, + "minecraft:cyan_candle": { + "protocol_id": 1251 + }, + "minecraft:cyan_carpet": { + "protocol_id": 455 + }, + "minecraft:cyan_concrete": { + "protocol_id": 564 + }, + "minecraft:cyan_concrete_powder": { + "protocol_id": 580 + }, + "minecraft:cyan_dye": { + "protocol_id": 953 + }, + "minecraft:cyan_glazed_terracotta": { + "protocol_id": 548 + }, + "minecraft:cyan_shulker_box": { + "protocol_id": 532 + }, + "minecraft:cyan_stained_glass": { + "protocol_id": 480 + }, + "minecraft:cyan_stained_glass_pane": { + "protocol_id": 496 + }, + "minecraft:cyan_terracotta": { + "protocol_id": 436 + }, + "minecraft:cyan_wool": { + "protocol_id": 211 + }, + "minecraft:damaged_anvil": { + "protocol_id": 421 + }, + "minecraft:dandelion": { + "protocol_id": 218 + }, + "minecraft:danger_pottery_sherd": { + "protocol_id": 1294 + }, + "minecraft:dark_oak_boat": { + "protocol_id": 786 + }, + "minecraft:dark_oak_button": { + "protocol_id": 690 + }, + "minecraft:dark_oak_chest_boat": { + "protocol_id": 787 + }, + "minecraft:dark_oak_door": { + "protocol_id": 717 + }, + "minecraft:dark_oak_fence": { + "protocol_id": 317 + }, + "minecraft:dark_oak_fence_gate": { + "protocol_id": 756 + }, + "minecraft:dark_oak_hanging_sign": { + "protocol_id": 903 + }, + "minecraft:dark_oak_leaves": { + "protocol_id": 182 + }, + "minecraft:dark_oak_log": { + "protocol_id": 138 + }, + "minecraft:dark_oak_planks": { + "protocol_id": 42 + }, + "minecraft:dark_oak_pressure_plate": { + "protocol_id": 705 + }, + "minecraft:dark_oak_sapling": { + "protocol_id": 54 + }, + "minecraft:dark_oak_sign": { + "protocol_id": 892 + }, + "minecraft:dark_oak_slab": { + "protocol_id": 258 + }, + "minecraft:dark_oak_stairs": { + "protocol_id": 389 + }, + "minecraft:dark_oak_trapdoor": { + "protocol_id": 737 + }, + "minecraft:dark_oak_wood": { + "protocol_id": 172 + }, + "minecraft:dark_prismarine": { + "protocol_id": 505 + }, + "minecraft:dark_prismarine_slab": { + "protocol_id": 280 + }, + "minecraft:dark_prismarine_stairs": { + "protocol_id": 508 + }, + "minecraft:daylight_detector": { + "protocol_id": 674 + }, + "minecraft:dead_brain_coral": { + "protocol_id": 604 + }, + "minecraft:dead_brain_coral_block": { + "protocol_id": 590 + }, + "minecraft:dead_brain_coral_fan": { + "protocol_id": 615 + }, + "minecraft:dead_bubble_coral": { + "protocol_id": 605 + }, + "minecraft:dead_bubble_coral_block": { + "protocol_id": 591 + }, + "minecraft:dead_bubble_coral_fan": { + "protocol_id": 616 + }, + "minecraft:dead_bush": { + "protocol_id": 199 + }, + "minecraft:dead_fire_coral": { + "protocol_id": 606 + }, + "minecraft:dead_fire_coral_block": { + "protocol_id": 592 + }, + "minecraft:dead_fire_coral_fan": { + "protocol_id": 617 + }, + "minecraft:dead_horn_coral": { + "protocol_id": 607 + }, + "minecraft:dead_horn_coral_block": { + "protocol_id": 593 + }, + "minecraft:dead_horn_coral_fan": { + "protocol_id": 618 + }, + "minecraft:dead_tube_coral": { + "protocol_id": 608 + }, + "minecraft:dead_tube_coral_block": { + "protocol_id": 589 + }, + "minecraft:dead_tube_coral_fan": { + "protocol_id": 614 + }, + "minecraft:debug_stick": { + "protocol_id": 1167 + }, + "minecraft:decorated_pot": { + "protocol_id": 288 + }, + "minecraft:deepslate": { + "protocol_id": 8 + }, + "minecraft:deepslate_brick_slab": { + "protocol_id": 654 + }, + "minecraft:deepslate_brick_stairs": { + "protocol_id": 637 + }, + "minecraft:deepslate_brick_wall": { + "protocol_id": 417 + }, + "minecraft:deepslate_bricks": { + "protocol_id": 346 + }, + "minecraft:deepslate_coal_ore": { + "protocol_id": 63 + }, + "minecraft:deepslate_copper_ore": { + "protocol_id": 67 + }, + "minecraft:deepslate_diamond_ore": { + "protocol_id": 77 + }, + "minecraft:deepslate_emerald_ore": { + "protocol_id": 73 + }, + "minecraft:deepslate_gold_ore": { + "protocol_id": 69 + }, + "minecraft:deepslate_iron_ore": { + "protocol_id": 65 + }, + "minecraft:deepslate_lapis_ore": { + "protocol_id": 75 + }, + "minecraft:deepslate_redstone_ore": { + "protocol_id": 71 + }, + "minecraft:deepslate_tile_slab": { + "protocol_id": 655 + }, + "minecraft:deepslate_tile_stairs": { + "protocol_id": 638 + }, + "minecraft:deepslate_tile_wall": { + "protocol_id": 418 + }, + "minecraft:deepslate_tiles": { + "protocol_id": 348 + }, + "minecraft:detector_rail": { + "protocol_id": 762 + }, + "minecraft:diamond": { + "protocol_id": 805 + }, + "minecraft:diamond_axe": { + "protocol_id": 841 + }, + "minecraft:diamond_block": { + "protocol_id": 91 + }, + "minecraft:diamond_boots": { + "protocol_id": 871 + }, + "minecraft:diamond_chestplate": { + "protocol_id": 869 + }, + "minecraft:diamond_helmet": { + "protocol_id": 868 + }, + "minecraft:diamond_hoe": { + "protocol_id": 842 + }, + "minecraft:diamond_horse_armor": { + "protocol_id": 1126 + }, + "minecraft:diamond_leggings": { + "protocol_id": 870 + }, + "minecraft:diamond_ore": { + "protocol_id": 76 + }, + "minecraft:diamond_pickaxe": { + "protocol_id": 840 + }, + "minecraft:diamond_shovel": { + "protocol_id": 839 + }, + "minecraft:diamond_sword": { + "protocol_id": 838 + }, + "minecraft:diorite": { + "protocol_id": 4 + }, + "minecraft:diorite_slab": { + "protocol_id": 651 + }, + "minecraft:diorite_stairs": { + "protocol_id": 634 + }, + "minecraft:diorite_wall": { + "protocol_id": 411 + }, + "minecraft:dirt": { + "protocol_id": 28 + }, + "minecraft:dirt_path": { + "protocol_id": 464 + }, + "minecraft:disc_fragment_5": { + "protocol_id": 1187 + }, + "minecraft:dispenser": { + "protocol_id": 668 + }, + "minecraft:dolphin_spawn_egg": { + "protocol_id": 1023 + }, + "minecraft:donkey_spawn_egg": { + "protocol_id": 1024 + }, + "minecraft:dragon_breath": { + "protocol_id": 1157 + }, + "minecraft:dragon_egg": { + "protocol_id": 379 + }, + "minecraft:dragon_head": { + "protocol_id": 1108 + }, + "minecraft:dried_kelp": { + "protocol_id": 985 + }, + "minecraft:dried_kelp_block": { + "protocol_id": 923 + }, + "minecraft:dripstone_block": { + "protocol_id": 26 + }, + "minecraft:dropper": { + "protocol_id": 669 + }, + "minecraft:drowned_spawn_egg": { + "protocol_id": 1025 + }, + "minecraft:dune_armor_trim_smithing_template": { + "protocol_id": 1271 + }, + "minecraft:echo_shard": { + "protocol_id": 1267 + }, + "minecraft:egg": { + "protocol_id": 927 + }, + "minecraft:elder_guardian_spawn_egg": { + "protocol_id": 1026 + }, + "minecraft:elytra": { + "protocol_id": 773 + }, + "minecraft:emerald": { + "protocol_id": 806 + }, + "minecraft:emerald_block": { + "protocol_id": 382 + }, + "minecraft:emerald_ore": { + "protocol_id": 72 + }, + "minecraft:enchanted_book": { + "protocol_id": 1114 + }, + "minecraft:enchanted_golden_apple": { + "protocol_id": 885 + }, + "minecraft:enchanting_table": { + "protocol_id": 375 + }, + "minecraft:end_crystal": { + "protocol_id": 1149 + }, + "minecraft:end_portal_frame": { + "protocol_id": 376 + }, + "minecraft:end_rod": { + "protocol_id": 292 + }, + "minecraft:end_stone": { + "protocol_id": 377 + }, + "minecraft:end_stone_brick_slab": { + "protocol_id": 644 + }, + "minecraft:end_stone_brick_stairs": { + "protocol_id": 626 + }, + "minecraft:end_stone_brick_wall": { + "protocol_id": 410 + }, + "minecraft:end_stone_bricks": { + "protocol_id": 378 + }, + "minecraft:ender_chest": { + "protocol_id": 381 + }, + "minecraft:ender_dragon_spawn_egg": { + "protocol_id": 1027 + }, + "minecraft:ender_eye": { + "protocol_id": 1006 + }, + "minecraft:ender_pearl": { + "protocol_id": 993 + }, + "minecraft:enderman_spawn_egg": { + "protocol_id": 1028 + }, + "minecraft:endermite_spawn_egg": { + "protocol_id": 1029 + }, + "minecraft:evoker_spawn_egg": { + "protocol_id": 1030 + }, + "minecraft:experience_bottle": { + "protocol_id": 1088 + }, + "minecraft:explorer_pottery_sherd": { + "protocol_id": 1295 + }, + "minecraft:exposed_chiseled_copper": { + "protocol_id": 97 + }, + "minecraft:exposed_copper": { + "protocol_id": 93 + }, + "minecraft:exposed_copper_bulb": { + "protocol_id": 1320 + }, + "minecraft:exposed_copper_door": { + "protocol_id": 723 + }, + "minecraft:exposed_copper_grate": { + "protocol_id": 1312 + }, + "minecraft:exposed_copper_trapdoor": { + "protocol_id": 743 + }, + "minecraft:exposed_cut_copper": { + "protocol_id": 101 + }, + "minecraft:exposed_cut_copper_slab": { + "protocol_id": 109 + }, + "minecraft:exposed_cut_copper_stairs": { + "protocol_id": 105 + }, + "minecraft:eye_armor_trim_smithing_template": { + "protocol_id": 1275 + }, + "minecraft:farmland": { + "protocol_id": 301 + }, + "minecraft:feather": { + "protocol_id": 851 + }, + "minecraft:fermented_spider_eye": { + "protocol_id": 1001 + }, + "minecraft:fern": { + "protocol_id": 196 + }, + "minecraft:filled_map": { + "protocol_id": 982 + }, + "minecraft:fire_charge": { + "protocol_id": 1089 + }, + "minecraft:fire_coral": { + "protocol_id": 602 + }, + "minecraft:fire_coral_block": { + "protocol_id": 597 + }, + "minecraft:fire_coral_fan": { + "protocol_id": 612 + }, + "minecraft:firework_rocket": { + "protocol_id": 1112 + }, + "minecraft:firework_star": { + "protocol_id": 1113 + }, + "minecraft:fishing_rod": { + "protocol_id": 931 + }, + "minecraft:fletching_table": { + "protocol_id": 1209 + }, + "minecraft:flint": { + "protocol_id": 880 + }, + "minecraft:flint_and_steel": { + "protocol_id": 798 + }, + "minecraft:flow_armor_trim_smithing_template": { + "protocol_id": 1286 + }, + "minecraft:flow_banner_pattern": { + "protocol_id": 1201 + }, + "minecraft:flow_pottery_sherd": { + "protocol_id": 1296 + }, + "minecraft:flower_banner_pattern": { + "protocol_id": 1195 + }, + "minecraft:flower_pot": { + "protocol_id": 1096 + }, + "minecraft:flowering_azalea": { + "protocol_id": 198 + }, + "minecraft:flowering_azalea_leaves": { + "protocol_id": 185 + }, + "minecraft:fox_spawn_egg": { + "protocol_id": 1031 + }, + "minecraft:friend_pottery_sherd": { + "protocol_id": 1297 + }, + "minecraft:frog_spawn_egg": { + "protocol_id": 1032 + }, + "minecraft:frogspawn": { + "protocol_id": 1266 + }, + "minecraft:furnace": { + "protocol_id": 302 + }, + "minecraft:furnace_minecart": { + "protocol_id": 768 + }, + "minecraft:ghast_spawn_egg": { + "protocol_id": 1033 + }, + "minecraft:ghast_tear": { + "protocol_id": 995 + }, + "minecraft:gilded_blackstone": { + "protocol_id": 1231 + }, + "minecraft:glass": { + "protocol_id": 188 + }, + "minecraft:glass_bottle": { + "protocol_id": 999 + }, + "minecraft:glass_pane": { + "protocol_id": 357 + }, + "minecraft:glistering_melon_slice": { + "protocol_id": 1007 + }, + "minecraft:globe_banner_pattern": { + "protocol_id": 1199 + }, + "minecraft:glow_berries": { + "protocol_id": 1217 + }, + "minecraft:glow_ink_sac": { + "protocol_id": 942 + }, + "minecraft:glow_item_frame": { + "protocol_id": 1095 + }, + "minecraft:glow_lichen": { + "protocol_id": 360 + }, + "minecraft:glow_squid_spawn_egg": { + "protocol_id": 1034 + }, + "minecraft:glowstone": { + "protocol_id": 332 + }, + "minecraft:glowstone_dust": { + "protocol_id": 934 + }, + "minecraft:goat_horn": { + "protocol_id": 1203 + }, + "minecraft:goat_spawn_egg": { + "protocol_id": 1035 + }, + "minecraft:gold_block": { + "protocol_id": 90 + }, + "minecraft:gold_ingot": { + "protocol_id": 815 + }, + "minecraft:gold_nugget": { + "protocol_id": 996 + }, + "minecraft:gold_ore": { + "protocol_id": 68 + }, + "minecraft:golden_apple": { + "protocol_id": 884 + }, + "minecraft:golden_axe": { + "protocol_id": 831 + }, + "minecraft:golden_boots": { + "protocol_id": 875 + }, + "minecraft:golden_carrot": { + "protocol_id": 1102 + }, + "minecraft:golden_chestplate": { + "protocol_id": 873 + }, + "minecraft:golden_helmet": { + "protocol_id": 872 + }, + "minecraft:golden_hoe": { + "protocol_id": 832 + }, + "minecraft:golden_horse_armor": { + "protocol_id": 1125 + }, + "minecraft:golden_leggings": { + "protocol_id": 874 + }, + "minecraft:golden_pickaxe": { + "protocol_id": 830 + }, + "minecraft:golden_shovel": { + "protocol_id": 829 + }, + "minecraft:golden_sword": { + "protocol_id": 828 + }, + "minecraft:granite": { + "protocol_id": 2 + }, + "minecraft:granite_slab": { + "protocol_id": 647 + }, + "minecraft:granite_stairs": { + "protocol_id": 630 + }, + "minecraft:granite_wall": { + "protocol_id": 403 + }, + "minecraft:grass_block": { + "protocol_id": 27 + }, + "minecraft:gravel": { + "protocol_id": 61 + }, + "minecraft:gray_banner": { + "protocol_id": 1140 + }, + "minecraft:gray_bed": { + "protocol_id": 971 + }, + "minecraft:gray_candle": { + "protocol_id": 1249 + }, + "minecraft:gray_carpet": { + "protocol_id": 453 + }, + "minecraft:gray_concrete": { + "protocol_id": 562 + }, + "minecraft:gray_concrete_powder": { + "protocol_id": 578 + }, + "minecraft:gray_dye": { + "protocol_id": 951 + }, + "minecraft:gray_glazed_terracotta": { + "protocol_id": 546 + }, + "minecraft:gray_shulker_box": { + "protocol_id": 530 + }, + "minecraft:gray_stained_glass": { + "protocol_id": 478 + }, + "minecraft:gray_stained_glass_pane": { + "protocol_id": 494 + }, + "minecraft:gray_terracotta": { + "protocol_id": 434 + }, + "minecraft:gray_wool": { + "protocol_id": 209 + }, + "minecraft:green_banner": { + "protocol_id": 1146 + }, + "minecraft:green_bed": { + "protocol_id": 977 + }, + "minecraft:green_candle": { + "protocol_id": 1255 + }, + "minecraft:green_carpet": { + "protocol_id": 459 + }, + "minecraft:green_concrete": { + "protocol_id": 568 + }, + "minecraft:green_concrete_powder": { + "protocol_id": 584 + }, + "minecraft:green_dye": { + "protocol_id": 957 + }, + "minecraft:green_glazed_terracotta": { + "protocol_id": 552 + }, + "minecraft:green_shulker_box": { + "protocol_id": 536 + }, + "minecraft:green_stained_glass": { + "protocol_id": 484 + }, + "minecraft:green_stained_glass_pane": { + "protocol_id": 500 + }, + "minecraft:green_terracotta": { + "protocol_id": 440 + }, + "minecraft:green_wool": { + "protocol_id": 215 + }, + "minecraft:grindstone": { + "protocol_id": 1210 + }, + "minecraft:guardian_spawn_egg": { + "protocol_id": 1036 + }, + "minecraft:gunpowder": { + "protocol_id": 852 + }, + "minecraft:guster_banner_pattern": { + "protocol_id": 1202 + }, + "minecraft:guster_pottery_sherd": { + "protocol_id": 1298 + }, + "minecraft:hanging_roots": { + "protocol_id": 248 + }, + "minecraft:hay_block": { + "protocol_id": 445 + }, + "minecraft:heart_of_the_sea": { + "protocol_id": 1191 + }, + "minecraft:heart_pottery_sherd": { + "protocol_id": 1299 + }, + "minecraft:heartbreak_pottery_sherd": { + "protocol_id": 1300 + }, + "minecraft:heavy_core": { + "protocol_id": 85 + }, + "minecraft:heavy_weighted_pressure_plate": { + "protocol_id": 698 + }, + "minecraft:hoglin_spawn_egg": { + "protocol_id": 1037 + }, + "minecraft:honey_block": { + "protocol_id": 665 + }, + "minecraft:honey_bottle": { + "protocol_id": 1224 + }, + "minecraft:honeycomb": { + "protocol_id": 1221 + }, + "minecraft:honeycomb_block": { + "protocol_id": 1225 + }, + "minecraft:hopper": { + "protocol_id": 667 + }, + "minecraft:hopper_minecart": { + "protocol_id": 770 + }, + "minecraft:horn_coral": { + "protocol_id": 603 + }, + "minecraft:horn_coral_block": { + "protocol_id": 598 + }, + "minecraft:horn_coral_fan": { + "protocol_id": 613 + }, + "minecraft:horse_spawn_egg": { + "protocol_id": 1038 + }, + "minecraft:host_armor_trim_smithing_template": { + "protocol_id": 1285 + }, + "minecraft:howl_pottery_sherd": { + "protocol_id": 1301 + }, + "minecraft:husk_spawn_egg": { + "protocol_id": 1039 + }, + "minecraft:ice": { + "protocol_id": 306 + }, + "minecraft:infested_chiseled_stone_bricks": { + "protocol_id": 338 + }, + "minecraft:infested_cobblestone": { + "protocol_id": 334 + }, + "minecraft:infested_cracked_stone_bricks": { + "protocol_id": 337 + }, + "minecraft:infested_deepslate": { + "protocol_id": 339 + }, + "minecraft:infested_mossy_stone_bricks": { + "protocol_id": 336 + }, + "minecraft:infested_stone": { + "protocol_id": 333 + }, + "minecraft:infested_stone_bricks": { + "protocol_id": 335 + }, + "minecraft:ink_sac": { + "protocol_id": 941 + }, + "minecraft:iron_axe": { + "protocol_id": 836 + }, + "minecraft:iron_bars": { + "protocol_id": 355 + }, + "minecraft:iron_block": { + "protocol_id": 88 + }, + "minecraft:iron_boots": { + "protocol_id": 867 + }, + "minecraft:iron_chestplate": { + "protocol_id": 865 + }, + "minecraft:iron_door": { + "protocol_id": 710 + }, + "minecraft:iron_golem_spawn_egg": { + "protocol_id": 1040 + }, + "minecraft:iron_helmet": { + "protocol_id": 864 + }, + "minecraft:iron_hoe": { + "protocol_id": 837 + }, + "minecraft:iron_horse_armor": { + "protocol_id": 1124 + }, + "minecraft:iron_ingot": { + "protocol_id": 811 + }, + "minecraft:iron_leggings": { + "protocol_id": 866 + }, + "minecraft:iron_nugget": { + "protocol_id": 1165 + }, + "minecraft:iron_ore": { + "protocol_id": 64 + }, + "minecraft:iron_pickaxe": { + "protocol_id": 835 + }, + "minecraft:iron_shovel": { + "protocol_id": 834 + }, + "minecraft:iron_sword": { + "protocol_id": 833 + }, + "minecraft:iron_trapdoor": { + "protocol_id": 730 + }, + "minecraft:item_frame": { + "protocol_id": 1094 + }, + "minecraft:jack_o_lantern": { + "protocol_id": 324 + }, + "minecraft:jigsaw": { + "protocol_id": 793 + }, + "minecraft:jukebox": { + "protocol_id": 310 + }, + "minecraft:jungle_boat": { + "protocol_id": 780 + }, + "minecraft:jungle_button": { + "protocol_id": 687 + }, + "minecraft:jungle_chest_boat": { + "protocol_id": 781 + }, + "minecraft:jungle_door": { + "protocol_id": 714 + }, + "minecraft:jungle_fence": { + "protocol_id": 314 + }, + "minecraft:jungle_fence_gate": { + "protocol_id": 753 + }, + "minecraft:jungle_hanging_sign": { + "protocol_id": 900 + }, + "minecraft:jungle_leaves": { + "protocol_id": 179 + }, + "minecraft:jungle_log": { + "protocol_id": 135 + }, + "minecraft:jungle_planks": { + "protocol_id": 39 + }, + "minecraft:jungle_pressure_plate": { + "protocol_id": 702 + }, + "minecraft:jungle_sapling": { + "protocol_id": 51 + }, + "minecraft:jungle_sign": { + "protocol_id": 889 + }, + "minecraft:jungle_slab": { + "protocol_id": 255 + }, + "minecraft:jungle_stairs": { + "protocol_id": 386 + }, + "minecraft:jungle_trapdoor": { + "protocol_id": 734 + }, + "minecraft:jungle_wood": { + "protocol_id": 169 + }, + "minecraft:kelp": { + "protocol_id": 244 + }, + "minecraft:knowledge_book": { + "protocol_id": 1166 + }, + "minecraft:ladder": { + "protocol_id": 303 + }, + "minecraft:lantern": { + "protocol_id": 1214 + }, + "minecraft:lapis_block": { + "protocol_id": 190 + }, + "minecraft:lapis_lazuli": { + "protocol_id": 807 + }, + "minecraft:lapis_ore": { + "protocol_id": 74 + }, + "minecraft:large_amethyst_bud": { + "protocol_id": 1260 + }, + "minecraft:large_fern": { + "protocol_id": 470 + }, + "minecraft:lava_bucket": { + "protocol_id": 910 + }, + "minecraft:lead": { + "protocol_id": 1128 + }, + "minecraft:leather": { + "protocol_id": 913 + }, + "minecraft:leather_boots": { + "protocol_id": 859 + }, + "minecraft:leather_chestplate": { + "protocol_id": 857 + }, + "minecraft:leather_helmet": { + "protocol_id": 856 + }, + "minecraft:leather_horse_armor": { + "protocol_id": 1127 + }, + "minecraft:leather_leggings": { + "protocol_id": 858 + }, + "minecraft:lectern": { + "protocol_id": 670 + }, + "minecraft:lever": { + "protocol_id": 672 + }, + "minecraft:light": { + "protocol_id": 444 + }, + "minecraft:light_blue_banner": { + "protocol_id": 1136 + }, + "minecraft:light_blue_bed": { + "protocol_id": 967 + }, + "minecraft:light_blue_candle": { + "protocol_id": 1245 + }, + "minecraft:light_blue_carpet": { + "protocol_id": 449 + }, + "minecraft:light_blue_concrete": { + "protocol_id": 558 + }, + "minecraft:light_blue_concrete_powder": { + "protocol_id": 574 + }, + "minecraft:light_blue_dye": { + "protocol_id": 947 + }, + "minecraft:light_blue_glazed_terracotta": { + "protocol_id": 542 + }, + "minecraft:light_blue_shulker_box": { + "protocol_id": 526 + }, + "minecraft:light_blue_stained_glass": { + "protocol_id": 474 + }, + "minecraft:light_blue_stained_glass_pane": { + "protocol_id": 490 + }, + "minecraft:light_blue_terracotta": { + "protocol_id": 430 + }, + "minecraft:light_blue_wool": { + "protocol_id": 205 + }, + "minecraft:light_gray_banner": { + "protocol_id": 1141 + }, + "minecraft:light_gray_bed": { + "protocol_id": 972 + }, + "minecraft:light_gray_candle": { + "protocol_id": 1250 + }, + "minecraft:light_gray_carpet": { + "protocol_id": 454 + }, + "minecraft:light_gray_concrete": { + "protocol_id": 563 + }, + "minecraft:light_gray_concrete_powder": { + "protocol_id": 579 + }, + "minecraft:light_gray_dye": { + "protocol_id": 952 + }, + "minecraft:light_gray_glazed_terracotta": { + "protocol_id": 547 + }, + "minecraft:light_gray_shulker_box": { + "protocol_id": 531 + }, + "minecraft:light_gray_stained_glass": { + "protocol_id": 479 + }, + "minecraft:light_gray_stained_glass_pane": { + "protocol_id": 495 + }, + "minecraft:light_gray_terracotta": { + "protocol_id": 435 + }, + "minecraft:light_gray_wool": { + "protocol_id": 210 + }, + "minecraft:light_weighted_pressure_plate": { + "protocol_id": 697 + }, + "minecraft:lightning_rod": { + "protocol_id": 673 + }, + "minecraft:lilac": { + "protocol_id": 466 + }, + "minecraft:lily_of_the_valley": { + "protocol_id": 229 + }, + "minecraft:lily_pad": { + "protocol_id": 365 + }, + "minecraft:lime_banner": { + "protocol_id": 1138 + }, + "minecraft:lime_bed": { + "protocol_id": 969 + }, + "minecraft:lime_candle": { + "protocol_id": 1247 + }, + "minecraft:lime_carpet": { + "protocol_id": 451 + }, + "minecraft:lime_concrete": { + "protocol_id": 560 + }, + "minecraft:lime_concrete_powder": { + "protocol_id": 576 + }, + "minecraft:lime_dye": { + "protocol_id": 949 + }, + "minecraft:lime_glazed_terracotta": { + "protocol_id": 544 + }, + "minecraft:lime_shulker_box": { + "protocol_id": 528 + }, + "minecraft:lime_stained_glass": { + "protocol_id": 476 + }, + "minecraft:lime_stained_glass_pane": { + "protocol_id": 492 + }, + "minecraft:lime_terracotta": { + "protocol_id": 432 + }, + "minecraft:lime_wool": { + "protocol_id": 207 + }, + "minecraft:lingering_potion": { + "protocol_id": 1161 + }, + "minecraft:llama_spawn_egg": { + "protocol_id": 1041 + }, + "minecraft:lodestone": { + "protocol_id": 1226 + }, + "minecraft:loom": { + "protocol_id": 1194 + }, + "minecraft:mace": { + "protocol_id": 1093 + }, + "minecraft:magenta_banner": { + "protocol_id": 1135 + }, + "minecraft:magenta_bed": { + "protocol_id": 966 + }, + "minecraft:magenta_candle": { + "protocol_id": 1244 + }, + "minecraft:magenta_carpet": { + "protocol_id": 448 + }, + "minecraft:magenta_concrete": { + "protocol_id": 557 + }, + "minecraft:magenta_concrete_powder": { + "protocol_id": 573 + }, + "minecraft:magenta_dye": { + "protocol_id": 946 + }, + "minecraft:magenta_glazed_terracotta": { + "protocol_id": 541 + }, + "minecraft:magenta_shulker_box": { + "protocol_id": 525 + }, + "minecraft:magenta_stained_glass": { + "protocol_id": 473 + }, + "minecraft:magenta_stained_glass_pane": { + "protocol_id": 489 + }, + "minecraft:magenta_terracotta": { + "protocol_id": 429 + }, + "minecraft:magenta_wool": { + "protocol_id": 204 + }, + "minecraft:magma_block": { + "protocol_id": 516 + }, + "minecraft:magma_cream": { + "protocol_id": 1003 + }, + "minecraft:magma_cube_spawn_egg": { + "protocol_id": 1042 + }, + "minecraft:mangrove_boat": { + "protocol_id": 788 + }, + "minecraft:mangrove_button": { + "protocol_id": 691 + }, + "minecraft:mangrove_chest_boat": { + "protocol_id": 789 + }, + "minecraft:mangrove_door": { + "protocol_id": 718 + }, + "minecraft:mangrove_fence": { + "protocol_id": 318 + }, + "minecraft:mangrove_fence_gate": { + "protocol_id": 757 + }, + "minecraft:mangrove_hanging_sign": { + "protocol_id": 904 + }, + "minecraft:mangrove_leaves": { + "protocol_id": 183 + }, + "minecraft:mangrove_log": { + "protocol_id": 139 + }, + "minecraft:mangrove_planks": { + "protocol_id": 43 + }, + "minecraft:mangrove_pressure_plate": { + "protocol_id": 706 + }, + "minecraft:mangrove_propagule": { + "protocol_id": 55 + }, + "minecraft:mangrove_roots": { + "protocol_id": 140 + }, + "minecraft:mangrove_sign": { + "protocol_id": 893 + }, + "minecraft:mangrove_slab": { + "protocol_id": 259 + }, + "minecraft:mangrove_stairs": { + "protocol_id": 390 + }, + "minecraft:mangrove_trapdoor": { + "protocol_id": 738 + }, + "minecraft:mangrove_wood": { + "protocol_id": 173 + }, + "minecraft:map": { + "protocol_id": 1101 + }, + "minecraft:medium_amethyst_bud": { + "protocol_id": 1259 + }, + "minecraft:melon": { + "protocol_id": 358 + }, + "minecraft:melon_seeds": { + "protocol_id": 987 + }, + "minecraft:melon_slice": { + "protocol_id": 984 + }, + "minecraft:milk_bucket": { + "protocol_id": 914 + }, + "minecraft:minecart": { + "protocol_id": 766 + }, + "minecraft:miner_pottery_sherd": { + "protocol_id": 1302 + }, + "minecraft:mojang_banner_pattern": { + "protocol_id": 1198 + }, + "minecraft:mooshroom_spawn_egg": { + "protocol_id": 1043 + }, + "minecraft:moss_block": { + "protocol_id": 247 + }, + "minecraft:moss_carpet": { + "protocol_id": 245 + }, + "minecraft:mossy_cobblestone": { + "protocol_id": 289 + }, + "minecraft:mossy_cobblestone_slab": { + "protocol_id": 643 + }, + "minecraft:mossy_cobblestone_stairs": { + "protocol_id": 625 + }, + "minecraft:mossy_cobblestone_wall": { + "protocol_id": 398 + }, + "minecraft:mossy_stone_brick_slab": { + "protocol_id": 641 + }, + "minecraft:mossy_stone_brick_stairs": { + "protocol_id": 623 + }, + "minecraft:mossy_stone_brick_wall": { + "protocol_id": 402 + }, + "minecraft:mossy_stone_bricks": { + "protocol_id": 341 + }, + "minecraft:mourner_pottery_sherd": { + "protocol_id": 1303 + }, + "minecraft:mud": { + "protocol_id": 32 + }, + "minecraft:mud_brick_slab": { + "protocol_id": 272 + }, + "minecraft:mud_brick_stairs": { + "protocol_id": 363 + }, + "minecraft:mud_brick_wall": { + "protocol_id": 405 + }, + "minecraft:mud_bricks": { + "protocol_id": 345 + }, + "minecraft:muddy_mangrove_roots": { + "protocol_id": 141 + }, + "minecraft:mule_spawn_egg": { + "protocol_id": 1044 + }, + "minecraft:mushroom_stem": { + "protocol_id": 354 + }, + "minecraft:mushroom_stew": { + "protocol_id": 849 + }, + "minecraft:music_disc_11": { + "protocol_id": 1180 + }, + "minecraft:music_disc_13": { + "protocol_id": 1168 + }, + "minecraft:music_disc_5": { + "protocol_id": 1184 + }, + "minecraft:music_disc_blocks": { + "protocol_id": 1170 + }, + "minecraft:music_disc_cat": { + "protocol_id": 1169 + }, + "minecraft:music_disc_chirp": { + "protocol_id": 1171 + }, + "minecraft:music_disc_creator": { + "protocol_id": 1172 + }, + "minecraft:music_disc_creator_music_box": { + "protocol_id": 1173 + }, + "minecraft:music_disc_far": { + "protocol_id": 1174 + }, + "minecraft:music_disc_mall": { + "protocol_id": 1175 + }, + "minecraft:music_disc_mellohi": { + "protocol_id": 1176 + }, + "minecraft:music_disc_otherside": { + "protocol_id": 1182 + }, + "minecraft:music_disc_pigstep": { + "protocol_id": 1185 + }, + "minecraft:music_disc_precipice": { + "protocol_id": 1186 + }, + "minecraft:music_disc_relic": { + "protocol_id": 1183 + }, + "minecraft:music_disc_stal": { + "protocol_id": 1177 + }, + "minecraft:music_disc_strad": { + "protocol_id": 1178 + }, + "minecraft:music_disc_wait": { + "protocol_id": 1181 + }, + "minecraft:music_disc_ward": { + "protocol_id": 1179 + }, + "minecraft:mutton": { + "protocol_id": 1131 + }, + "minecraft:mycelium": { + "protocol_id": 364 + }, + "minecraft:name_tag": { + "protocol_id": 1129 + }, + "minecraft:nautilus_shell": { + "protocol_id": 1190 + }, + "minecraft:nether_brick": { + "protocol_id": 1115 + }, + "minecraft:nether_brick_fence": { + "protocol_id": 369 + }, + "minecraft:nether_brick_slab": { + "protocol_id": 273 + }, + "minecraft:nether_brick_stairs": { + "protocol_id": 370 + }, + "minecraft:nether_brick_wall": { + "protocol_id": 406 + }, + "minecraft:nether_bricks": { + "protocol_id": 366 + }, + "minecraft:nether_gold_ore": { + "protocol_id": 78 + }, + "minecraft:nether_quartz_ore": { + "protocol_id": 79 + }, + "minecraft:nether_sprouts": { + "protocol_id": 240 + }, + "minecraft:nether_star": { + "protocol_id": 1110 + }, + "minecraft:nether_wart": { + "protocol_id": 997 + }, + "minecraft:nether_wart_block": { + "protocol_id": 517 + }, + "minecraft:netherite_axe": { + "protocol_id": 846 + }, + "minecraft:netherite_block": { + "protocol_id": 92 + }, + "minecraft:netherite_boots": { + "protocol_id": 879 + }, + "minecraft:netherite_chestplate": { + "protocol_id": 877 + }, + "minecraft:netherite_helmet": { + "protocol_id": 876 + }, + "minecraft:netherite_hoe": { + "protocol_id": 847 + }, + "minecraft:netherite_ingot": { + "protocol_id": 816 + }, + "minecraft:netherite_leggings": { + "protocol_id": 878 + }, + "minecraft:netherite_pickaxe": { + "protocol_id": 845 + }, + "minecraft:netherite_scrap": { + "protocol_id": 817 + }, + "minecraft:netherite_shovel": { + "protocol_id": 844 + }, + "minecraft:netherite_sword": { + "protocol_id": 843 + }, + "minecraft:netherite_upgrade_smithing_template": { + "protocol_id": 1269 + }, + "minecraft:netherrack": { + "protocol_id": 325 + }, + "minecraft:note_block": { + "protocol_id": 681 + }, + "minecraft:oak_boat": { + "protocol_id": 774 + }, + "minecraft:oak_button": { + "protocol_id": 684 + }, + "minecraft:oak_chest_boat": { + "protocol_id": 775 + }, + "minecraft:oak_door": { + "protocol_id": 711 + }, + "minecraft:oak_fence": { + "protocol_id": 311 + }, + "minecraft:oak_fence_gate": { + "protocol_id": 750 + }, + "minecraft:oak_hanging_sign": { + "protocol_id": 897 + }, + "minecraft:oak_leaves": { + "protocol_id": 176 + }, + "minecraft:oak_log": { + "protocol_id": 132 + }, + "minecraft:oak_planks": { + "protocol_id": 36 + }, + "minecraft:oak_pressure_plate": { + "protocol_id": 699 + }, + "minecraft:oak_sapling": { + "protocol_id": 48 + }, + "minecraft:oak_sign": { + "protocol_id": 886 + }, + "minecraft:oak_slab": { + "protocol_id": 252 + }, + "minecraft:oak_stairs": { + "protocol_id": 383 + }, + "minecraft:oak_trapdoor": { + "protocol_id": 731 + }, + "minecraft:oak_wood": { + "protocol_id": 166 + }, + "minecraft:observer": { + "protocol_id": 666 + }, + "minecraft:obsidian": { + "protocol_id": 290 + }, + "minecraft:ocelot_spawn_egg": { + "protocol_id": 1045 + }, + "minecraft:ochre_froglight": { + "protocol_id": 1263 + }, + "minecraft:ominous_bottle": { + "protocol_id": 1331 + }, + "minecraft:ominous_trial_key": { + "protocol_id": 1329 + }, + "minecraft:orange_banner": { + "protocol_id": 1134 + }, + "minecraft:orange_bed": { + "protocol_id": 965 + }, + "minecraft:orange_candle": { + "protocol_id": 1243 + }, + "minecraft:orange_carpet": { + "protocol_id": 447 + }, + "minecraft:orange_concrete": { + "protocol_id": 556 + }, + "minecraft:orange_concrete_powder": { + "protocol_id": 572 + }, + "minecraft:orange_dye": { + "protocol_id": 945 + }, + "minecraft:orange_glazed_terracotta": { + "protocol_id": 540 + }, + "minecraft:orange_shulker_box": { + "protocol_id": 524 + }, + "minecraft:orange_stained_glass": { + "protocol_id": 472 + }, + "minecraft:orange_stained_glass_pane": { + "protocol_id": 488 + }, + "minecraft:orange_terracotta": { + "protocol_id": 428 + }, + "minecraft:orange_tulip": { + "protocol_id": 224 + }, + "minecraft:orange_wool": { + "protocol_id": 203 + }, + "minecraft:oxeye_daisy": { + "protocol_id": 227 + }, + "minecraft:oxidized_chiseled_copper": { + "protocol_id": 99 + }, + "minecraft:oxidized_copper": { + "protocol_id": 95 + }, + "minecraft:oxidized_copper_bulb": { + "protocol_id": 1322 + }, + "minecraft:oxidized_copper_door": { + "protocol_id": 725 + }, + "minecraft:oxidized_copper_grate": { + "protocol_id": 1314 + }, + "minecraft:oxidized_copper_trapdoor": { + "protocol_id": 745 + }, + "minecraft:oxidized_cut_copper": { + "protocol_id": 103 + }, + "minecraft:oxidized_cut_copper_slab": { + "protocol_id": 111 + }, + "minecraft:oxidized_cut_copper_stairs": { + "protocol_id": 107 + }, + "minecraft:packed_ice": { + "protocol_id": 463 + }, + "minecraft:packed_mud": { + "protocol_id": 344 + }, + "minecraft:painting": { + "protocol_id": 883 + }, + "minecraft:panda_spawn_egg": { + "protocol_id": 1046 + }, + "minecraft:paper": { + "protocol_id": 924 + }, + "minecraft:parrot_spawn_egg": { + "protocol_id": 1047 + }, + "minecraft:pearlescent_froglight": { + "protocol_id": 1265 + }, + "minecraft:peony": { + "protocol_id": 468 + }, + "minecraft:petrified_oak_slab": { + "protocol_id": 268 + }, + "minecraft:phantom_membrane": { + "protocol_id": 1189 + }, + "minecraft:phantom_spawn_egg": { + "protocol_id": 1048 + }, + "minecraft:pig_spawn_egg": { + "protocol_id": 1049 + }, + "minecraft:piglin_banner_pattern": { + "protocol_id": 1200 + }, + "minecraft:piglin_brute_spawn_egg": { + "protocol_id": 1051 + }, + "minecraft:piglin_head": { + "protocol_id": 1109 + }, + "minecraft:piglin_spawn_egg": { + "protocol_id": 1050 + }, + "minecraft:pillager_spawn_egg": { + "protocol_id": 1052 + }, + "minecraft:pink_banner": { + "protocol_id": 1139 + }, + "minecraft:pink_bed": { + "protocol_id": 970 + }, + "minecraft:pink_candle": { + "protocol_id": 1248 + }, + "minecraft:pink_carpet": { + "protocol_id": 452 + }, + "minecraft:pink_concrete": { + "protocol_id": 561 + }, + "minecraft:pink_concrete_powder": { + "protocol_id": 577 + }, + "minecraft:pink_dye": { + "protocol_id": 950 + }, + "minecraft:pink_glazed_terracotta": { + "protocol_id": 545 + }, + "minecraft:pink_petals": { + "protocol_id": 246 + }, + "minecraft:pink_shulker_box": { + "protocol_id": 529 + }, + "minecraft:pink_stained_glass": { + "protocol_id": 477 + }, + "minecraft:pink_stained_glass_pane": { + "protocol_id": 493 + }, + "minecraft:pink_terracotta": { + "protocol_id": 433 + }, + "minecraft:pink_tulip": { + "protocol_id": 226 + }, + "minecraft:pink_wool": { + "protocol_id": 208 + }, + "minecraft:piston": { + "protocol_id": 662 + }, + "minecraft:pitcher_plant": { + "protocol_id": 232 + }, + "minecraft:pitcher_pod": { + "protocol_id": 1153 + }, + "minecraft:player_head": { + "protocol_id": 1105 + }, + "minecraft:plenty_pottery_sherd": { + "protocol_id": 1304 + }, + "minecraft:podzol": { + "protocol_id": 30 + }, + "minecraft:pointed_dripstone": { + "protocol_id": 1262 + }, + "minecraft:poisonous_potato": { + "protocol_id": 1100 + }, + "minecraft:polar_bear_spawn_egg": { + "protocol_id": 1053 + }, + "minecraft:polished_andesite": { + "protocol_id": 7 + }, + "minecraft:polished_andesite_slab": { + "protocol_id": 650 + }, + "minecraft:polished_andesite_stairs": { + "protocol_id": 633 + }, + "minecraft:polished_basalt": { + "protocol_id": 329 + }, + "minecraft:polished_blackstone": { + "protocol_id": 1232 + }, + "minecraft:polished_blackstone_brick_slab": { + "protocol_id": 1237 + }, + "minecraft:polished_blackstone_brick_stairs": { + "protocol_id": 1238 + }, + "minecraft:polished_blackstone_brick_wall": { + "protocol_id": 414 + }, + "minecraft:polished_blackstone_bricks": { + "protocol_id": 1236 + }, + "minecraft:polished_blackstone_button": { + "protocol_id": 683 + }, + "minecraft:polished_blackstone_pressure_plate": { + "protocol_id": 696 + }, + "minecraft:polished_blackstone_slab": { + "protocol_id": 1233 + }, + "minecraft:polished_blackstone_stairs": { + "protocol_id": 1234 + }, + "minecraft:polished_blackstone_wall": { + "protocol_id": 413 + }, + "minecraft:polished_deepslate": { + "protocol_id": 10 + }, + "minecraft:polished_deepslate_slab": { + "protocol_id": 653 + }, + "minecraft:polished_deepslate_stairs": { + "protocol_id": 636 + }, + "minecraft:polished_deepslate_wall": { + "protocol_id": 416 + }, + "minecraft:polished_diorite": { + "protocol_id": 5 + }, + "minecraft:polished_diorite_slab": { + "protocol_id": 642 + }, + "minecraft:polished_diorite_stairs": { + "protocol_id": 624 + }, + "minecraft:polished_granite": { + "protocol_id": 3 + }, + "minecraft:polished_granite_slab": { + "protocol_id": 639 + }, + "minecraft:polished_granite_stairs": { + "protocol_id": 621 + }, + "minecraft:polished_tuff": { + "protocol_id": 17 + }, + "minecraft:polished_tuff_slab": { + "protocol_id": 18 + }, + "minecraft:polished_tuff_stairs": { + "protocol_id": 19 + }, + "minecraft:polished_tuff_wall": { + "protocol_id": 20 + }, + "minecraft:popped_chorus_fruit": { + "protocol_id": 1151 + }, + "minecraft:poppy": { + "protocol_id": 219 + }, + "minecraft:porkchop": { + "protocol_id": 881 + }, + "minecraft:potato": { + "protocol_id": 1098 + }, + "minecraft:potion": { + "protocol_id": 998 + }, + "minecraft:powder_snow_bucket": { + "protocol_id": 911 + }, + "minecraft:powered_rail": { + "protocol_id": 761 + }, + "minecraft:prismarine": { + "protocol_id": 503 + }, + "minecraft:prismarine_brick_slab": { + "protocol_id": 279 + }, + "minecraft:prismarine_brick_stairs": { + "protocol_id": 507 + }, + "minecraft:prismarine_bricks": { + "protocol_id": 504 + }, + "minecraft:prismarine_crystals": { + "protocol_id": 1117 + }, + "minecraft:prismarine_shard": { + "protocol_id": 1116 + }, + "minecraft:prismarine_slab": { + "protocol_id": 278 + }, + "minecraft:prismarine_stairs": { + "protocol_id": 506 + }, + "minecraft:prismarine_wall": { + "protocol_id": 400 + }, + "minecraft:prize_pottery_sherd": { + "protocol_id": 1305 + }, + "minecraft:pufferfish": { + "protocol_id": 938 + }, + "minecraft:pufferfish_bucket": { + "protocol_id": 915 + }, + "minecraft:pufferfish_spawn_egg": { + "protocol_id": 1054 + }, + "minecraft:pumpkin": { + "protocol_id": 322 + }, + "minecraft:pumpkin_pie": { + "protocol_id": 1111 + }, + "minecraft:pumpkin_seeds": { + "protocol_id": 986 + }, + "minecraft:purple_banner": { + "protocol_id": 1143 + }, + "minecraft:purple_bed": { + "protocol_id": 974 + }, + "minecraft:purple_candle": { + "protocol_id": 1252 + }, + "minecraft:purple_carpet": { + "protocol_id": 456 + }, + "minecraft:purple_concrete": { + "protocol_id": 565 + }, + "minecraft:purple_concrete_powder": { + "protocol_id": 581 + }, + "minecraft:purple_dye": { + "protocol_id": 954 + }, + "minecraft:purple_glazed_terracotta": { + "protocol_id": 549 + }, + "minecraft:purple_shulker_box": { + "protocol_id": 533 + }, + "minecraft:purple_stained_glass": { + "protocol_id": 481 + }, + "minecraft:purple_stained_glass_pane": { + "protocol_id": 497 + }, + "minecraft:purple_terracotta": { + "protocol_id": 437 + }, + "minecraft:purple_wool": { + "protocol_id": 212 + }, + "minecraft:purpur_block": { + "protocol_id": 295 + }, + "minecraft:purpur_pillar": { + "protocol_id": 296 + }, + "minecraft:purpur_slab": { + "protocol_id": 277 + }, + "minecraft:purpur_stairs": { + "protocol_id": 297 + }, + "minecraft:quartz": { + "protocol_id": 808 + }, + "minecraft:quartz_block": { + "protocol_id": 423 + }, + "minecraft:quartz_bricks": { + "protocol_id": 424 + }, + "minecraft:quartz_pillar": { + "protocol_id": 425 + }, + "minecraft:quartz_slab": { + "protocol_id": 274 + }, + "minecraft:quartz_stairs": { + "protocol_id": 426 + }, + "minecraft:rabbit": { + "protocol_id": 1118 + }, + "minecraft:rabbit_foot": { + "protocol_id": 1121 + }, + "minecraft:rabbit_hide": { + "protocol_id": 1122 + }, + "minecraft:rabbit_spawn_egg": { + "protocol_id": 1055 + }, + "minecraft:rabbit_stew": { + "protocol_id": 1120 + }, + "minecraft:rail": { + "protocol_id": 763 + }, + "minecraft:raiser_armor_trim_smithing_template": { + "protocol_id": 1284 + }, + "minecraft:ravager_spawn_egg": { + "protocol_id": 1056 + }, + "minecraft:raw_copper": { + "protocol_id": 812 + }, + "minecraft:raw_copper_block": { + "protocol_id": 83 + }, + "minecraft:raw_gold": { + "protocol_id": 814 + }, + "minecraft:raw_gold_block": { + "protocol_id": 84 + }, + "minecraft:raw_iron": { + "protocol_id": 810 + }, + "minecraft:raw_iron_block": { + "protocol_id": 82 + }, + "minecraft:recovery_compass": { + "protocol_id": 929 + }, + "minecraft:red_banner": { + "protocol_id": 1147 + }, + "minecraft:red_bed": { + "protocol_id": 978 + }, + "minecraft:red_candle": { + "protocol_id": 1256 + }, + "minecraft:red_carpet": { + "protocol_id": 460 + }, + "minecraft:red_concrete": { + "protocol_id": 569 + }, + "minecraft:red_concrete_powder": { + "protocol_id": 585 + }, + "minecraft:red_dye": { + "protocol_id": 958 + }, + "minecraft:red_glazed_terracotta": { + "protocol_id": 553 + }, + "minecraft:red_mushroom": { + "protocol_id": 235 + }, + "minecraft:red_mushroom_block": { + "protocol_id": 353 + }, + "minecraft:red_nether_brick_slab": { + "protocol_id": 649 + }, + "minecraft:red_nether_brick_stairs": { + "protocol_id": 632 + }, + "minecraft:red_nether_brick_wall": { + "protocol_id": 408 + }, + "minecraft:red_nether_bricks": { + "protocol_id": 519 + }, + "minecraft:red_sand": { + "protocol_id": 60 + }, + "minecraft:red_sandstone": { + "protocol_id": 510 + }, + "minecraft:red_sandstone_slab": { + "protocol_id": 275 + }, + "minecraft:red_sandstone_stairs": { + "protocol_id": 513 + }, + "minecraft:red_sandstone_wall": { + "protocol_id": 401 + }, + "minecraft:red_shulker_box": { + "protocol_id": 537 + }, + "minecraft:red_stained_glass": { + "protocol_id": 485 + }, + "minecraft:red_stained_glass_pane": { + "protocol_id": 501 + }, + "minecraft:red_terracotta": { + "protocol_id": 441 + }, + "minecraft:red_tulip": { + "protocol_id": 223 + }, + "minecraft:red_wool": { + "protocol_id": 216 + }, + "minecraft:redstone": { + "protocol_id": 657 + }, + "minecraft:redstone_block": { + "protocol_id": 659 + }, + "minecraft:redstone_lamp": { + "protocol_id": 680 + }, + "minecraft:redstone_ore": { + "protocol_id": 70 + }, + "minecraft:redstone_torch": { + "protocol_id": 658 + }, + "minecraft:reinforced_deepslate": { + "protocol_id": 351 + }, + "minecraft:repeater": { + "protocol_id": 660 + }, + "minecraft:repeating_command_block": { + "protocol_id": 514 + }, + "minecraft:respawn_anchor": { + "protocol_id": 1240 + }, + "minecraft:rib_armor_trim_smithing_template": { + "protocol_id": 1279 + }, + "minecraft:rooted_dirt": { + "protocol_id": 31 + }, + "minecraft:rose_bush": { + "protocol_id": 467 + }, + "minecraft:rotten_flesh": { + "protocol_id": 992 + }, + "minecraft:saddle": { + "protocol_id": 765 + }, + "minecraft:salmon": { + "protocol_id": 936 + }, + "minecraft:salmon_bucket": { + "protocol_id": 916 + }, + "minecraft:salmon_spawn_egg": { + "protocol_id": 1057 + }, + "minecraft:sand": { + "protocol_id": 57 + }, + "minecraft:sandstone": { + "protocol_id": 191 + }, + "minecraft:sandstone_slab": { + "protocol_id": 266 + }, + "minecraft:sandstone_stairs": { + "protocol_id": 380 + }, + "minecraft:sandstone_wall": { + "protocol_id": 409 + }, + "minecraft:scaffolding": { + "protocol_id": 656 + }, + "minecraft:scrape_pottery_sherd": { + "protocol_id": 1306 + }, + "minecraft:sculk": { + "protocol_id": 371 + }, + "minecraft:sculk_catalyst": { + "protocol_id": 373 + }, + "minecraft:sculk_sensor": { + "protocol_id": 675 + }, + "minecraft:sculk_shrieker": { + "protocol_id": 374 + }, + "minecraft:sculk_vein": { + "protocol_id": 372 + }, + "minecraft:sea_lantern": { + "protocol_id": 509 + }, + "minecraft:sea_pickle": { + "protocol_id": 201 + }, + "minecraft:seagrass": { + "protocol_id": 200 + }, + "minecraft:sentry_armor_trim_smithing_template": { + "protocol_id": 1270 + }, + "minecraft:shaper_armor_trim_smithing_template": { + "protocol_id": 1282 + }, + "minecraft:sheaf_pottery_sherd": { + "protocol_id": 1307 + }, + "minecraft:shears": { + "protocol_id": 983 + }, + "minecraft:sheep_spawn_egg": { + "protocol_id": 1058 + }, + "minecraft:shelter_pottery_sherd": { + "protocol_id": 1308 + }, + "minecraft:shield": { + "protocol_id": 1162 + }, + "minecraft:short_grass": { + "protocol_id": 195 + }, + "minecraft:shroomlight": { + "protocol_id": 1220 + }, + "minecraft:shulker_box": { + "protocol_id": 522 + }, + "minecraft:shulker_shell": { + "protocol_id": 1164 + }, + "minecraft:shulker_spawn_egg": { + "protocol_id": 1059 + }, + "minecraft:silence_armor_trim_smithing_template": { + "protocol_id": 1283 + }, + "minecraft:silverfish_spawn_egg": { + "protocol_id": 1060 + }, + "minecraft:skeleton_horse_spawn_egg": { + "protocol_id": 1062 + }, + "minecraft:skeleton_skull": { + "protocol_id": 1103 + }, + "minecraft:skeleton_spawn_egg": { + "protocol_id": 1061 + }, + "minecraft:skull_banner_pattern": { + "protocol_id": 1197 + }, + "minecraft:skull_pottery_sherd": { + "protocol_id": 1309 + }, + "minecraft:slime_ball": { + "protocol_id": 926 + }, + "minecraft:slime_block": { + "protocol_id": 664 + }, + "minecraft:slime_spawn_egg": { + "protocol_id": 1063 + }, + "minecraft:small_amethyst_bud": { + "protocol_id": 1258 + }, + "minecraft:small_dripleaf": { + "protocol_id": 250 + }, + "minecraft:smithing_table": { + "protocol_id": 1211 + }, + "minecraft:smoker": { + "protocol_id": 1206 + }, + "minecraft:smooth_basalt": { + "protocol_id": 330 + }, + "minecraft:smooth_quartz": { + "protocol_id": 281 + }, + "minecraft:smooth_quartz_slab": { + "protocol_id": 646 + }, + "minecraft:smooth_quartz_stairs": { + "protocol_id": 629 + }, + "minecraft:smooth_red_sandstone": { + "protocol_id": 282 + }, + "minecraft:smooth_red_sandstone_slab": { + "protocol_id": 640 + }, + "minecraft:smooth_red_sandstone_stairs": { + "protocol_id": 622 + }, + "minecraft:smooth_sandstone": { + "protocol_id": 283 + }, + "minecraft:smooth_sandstone_slab": { + "protocol_id": 645 + }, + "minecraft:smooth_sandstone_stairs": { + "protocol_id": 628 + }, + "minecraft:smooth_stone": { + "protocol_id": 284 + }, + "minecraft:smooth_stone_slab": { + "protocol_id": 265 + }, + "minecraft:sniffer_egg": { + "protocol_id": 588 + }, + "minecraft:sniffer_spawn_egg": { + "protocol_id": 1064 + }, + "minecraft:snort_pottery_sherd": { + "protocol_id": 1310 + }, + "minecraft:snout_armor_trim_smithing_template": { + "protocol_id": 1278 + }, + "minecraft:snow": { + "protocol_id": 305 + }, + "minecraft:snow_block": { + "protocol_id": 307 + }, + "minecraft:snow_golem_spawn_egg": { + "protocol_id": 1065 + }, + "minecraft:snowball": { + "protocol_id": 912 + }, + "minecraft:soul_campfire": { + "protocol_id": 1219 + }, + "minecraft:soul_lantern": { + "protocol_id": 1215 + }, + "minecraft:soul_sand": { + "protocol_id": 326 + }, + "minecraft:soul_soil": { + "protocol_id": 327 + }, + "minecraft:soul_torch": { + "protocol_id": 331 + }, + "minecraft:spawner": { + "protocol_id": 298 + }, + "minecraft:spectral_arrow": { + "protocol_id": 1159 + }, + "minecraft:spider_eye": { + "protocol_id": 1000 + }, + "minecraft:spider_spawn_egg": { + "protocol_id": 1066 + }, + "minecraft:spire_armor_trim_smithing_template": { + "protocol_id": 1280 + }, + "minecraft:splash_potion": { + "protocol_id": 1158 + }, + "minecraft:sponge": { + "protocol_id": 186 + }, + "minecraft:spore_blossom": { + "protocol_id": 233 + }, + "minecraft:spruce_boat": { + "protocol_id": 776 + }, + "minecraft:spruce_button": { + "protocol_id": 685 + }, + "minecraft:spruce_chest_boat": { + "protocol_id": 777 + }, + "minecraft:spruce_door": { + "protocol_id": 712 + }, + "minecraft:spruce_fence": { + "protocol_id": 312 + }, + "minecraft:spruce_fence_gate": { + "protocol_id": 751 + }, + "minecraft:spruce_hanging_sign": { + "protocol_id": 898 + }, + "minecraft:spruce_leaves": { + "protocol_id": 177 + }, + "minecraft:spruce_log": { + "protocol_id": 133 + }, + "minecraft:spruce_planks": { + "protocol_id": 37 + }, + "minecraft:spruce_pressure_plate": { + "protocol_id": 700 + }, + "minecraft:spruce_sapling": { + "protocol_id": 49 + }, + "minecraft:spruce_sign": { + "protocol_id": 887 + }, + "minecraft:spruce_slab": { + "protocol_id": 253 + }, + "minecraft:spruce_stairs": { + "protocol_id": 384 + }, + "minecraft:spruce_trapdoor": { + "protocol_id": 732 + }, + "minecraft:spruce_wood": { + "protocol_id": 167 + }, + "minecraft:spyglass": { + "protocol_id": 933 + }, + "minecraft:squid_spawn_egg": { + "protocol_id": 1067 + }, + "minecraft:stick": { + "protocol_id": 848 + }, + "minecraft:sticky_piston": { + "protocol_id": 663 + }, + "minecraft:stone": { + "protocol_id": 1 + }, + "minecraft:stone_axe": { + "protocol_id": 826 + }, + "minecraft:stone_brick_slab": { + "protocol_id": 271 + }, + "minecraft:stone_brick_stairs": { + "protocol_id": 362 + }, + "minecraft:stone_brick_wall": { + "protocol_id": 404 + }, + "minecraft:stone_bricks": { + "protocol_id": 340 + }, + "minecraft:stone_button": { + "protocol_id": 682 + }, + "minecraft:stone_hoe": { + "protocol_id": 827 + }, + "minecraft:stone_pickaxe": { + "protocol_id": 825 + }, + "minecraft:stone_pressure_plate": { + "protocol_id": 695 + }, + "minecraft:stone_shovel": { + "protocol_id": 824 + }, + "minecraft:stone_slab": { + "protocol_id": 264 + }, + "minecraft:stone_stairs": { + "protocol_id": 627 + }, + "minecraft:stone_sword": { + "protocol_id": 823 + }, + "minecraft:stonecutter": { + "protocol_id": 1212 + }, + "minecraft:stray_spawn_egg": { + "protocol_id": 1068 + }, + "minecraft:strider_spawn_egg": { + "protocol_id": 1069 + }, + "minecraft:string": { + "protocol_id": 850 + }, + "minecraft:stripped_acacia_log": { + "protocol_id": 149 + }, + "minecraft:stripped_acacia_wood": { + "protocol_id": 159 + }, + "minecraft:stripped_bamboo_block": { + "protocol_id": 165 + }, + "minecraft:stripped_birch_log": { + "protocol_id": 147 + }, + "minecraft:stripped_birch_wood": { + "protocol_id": 157 + }, + "minecraft:stripped_cherry_log": { + "protocol_id": 150 + }, + "minecraft:stripped_cherry_wood": { + "protocol_id": 160 + }, + "minecraft:stripped_crimson_hyphae": { + "protocol_id": 163 + }, + "minecraft:stripped_crimson_stem": { + "protocol_id": 153 + }, + "minecraft:stripped_dark_oak_log": { + "protocol_id": 151 + }, + "minecraft:stripped_dark_oak_wood": { + "protocol_id": 161 + }, + "minecraft:stripped_jungle_log": { + "protocol_id": 148 + }, + "minecraft:stripped_jungle_wood": { + "protocol_id": 158 + }, + "minecraft:stripped_mangrove_log": { + "protocol_id": 152 + }, + "minecraft:stripped_mangrove_wood": { + "protocol_id": 162 + }, + "minecraft:stripped_oak_log": { + "protocol_id": 145 + }, + "minecraft:stripped_oak_wood": { + "protocol_id": 155 + }, + "minecraft:stripped_spruce_log": { + "protocol_id": 146 + }, + "minecraft:stripped_spruce_wood": { + "protocol_id": 156 + }, + "minecraft:stripped_warped_hyphae": { + "protocol_id": 164 + }, + "minecraft:stripped_warped_stem": { + "protocol_id": 154 + }, + "minecraft:structure_block": { + "protocol_id": 792 + }, + "minecraft:structure_void": { + "protocol_id": 521 + }, + "minecraft:sugar": { + "protocol_id": 962 + }, + "minecraft:sugar_cane": { + "protocol_id": 243 + }, + "minecraft:sunflower": { + "protocol_id": 465 + }, + "minecraft:suspicious_gravel": { + "protocol_id": 59 + }, + "minecraft:suspicious_sand": { + "protocol_id": 58 + }, + "minecraft:suspicious_stew": { + "protocol_id": 1193 + }, + "minecraft:sweet_berries": { + "protocol_id": 1216 + }, + "minecraft:tadpole_bucket": { + "protocol_id": 920 + }, + "minecraft:tadpole_spawn_egg": { + "protocol_id": 1070 + }, + "minecraft:tall_grass": { + "protocol_id": 469 + }, + "minecraft:target": { + "protocol_id": 671 + }, + "minecraft:terracotta": { + "protocol_id": 462 + }, + "minecraft:tide_armor_trim_smithing_template": { + "protocol_id": 1277 + }, + "minecraft:tinted_glass": { + "protocol_id": 189 + }, + "minecraft:tipped_arrow": { + "protocol_id": 1160 + }, + "minecraft:tnt": { + "protocol_id": 679 + }, + "minecraft:tnt_minecart": { + "protocol_id": 769 + }, + "minecraft:torch": { + "protocol_id": 291 + }, + "minecraft:torchflower": { + "protocol_id": 231 + }, + "minecraft:torchflower_seeds": { + "protocol_id": 1152 + }, + "minecraft:totem_of_undying": { + "protocol_id": 1163 + }, + "minecraft:trader_llama_spawn_egg": { + "protocol_id": 1071 + }, + "minecraft:trapped_chest": { + "protocol_id": 678 + }, + "minecraft:trial_key": { + "protocol_id": 1328 + }, + "minecraft:trial_spawner": { + "protocol_id": 1327 + }, + "minecraft:trident": { + "protocol_id": 1188 + }, + "minecraft:tripwire_hook": { + "protocol_id": 677 + }, + "minecraft:tropical_fish": { + "protocol_id": 937 + }, + "minecraft:tropical_fish_bucket": { + "protocol_id": 918 + }, + "minecraft:tropical_fish_spawn_egg": { + "protocol_id": 1072 + }, + "minecraft:tube_coral": { + "protocol_id": 599 + }, + "minecraft:tube_coral_block": { + "protocol_id": 594 + }, + "minecraft:tube_coral_fan": { + "protocol_id": 609 + }, + "minecraft:tuff": { + "protocol_id": 12 + }, + "minecraft:tuff_brick_slab": { + "protocol_id": 22 + }, + "minecraft:tuff_brick_stairs": { + "protocol_id": 23 + }, + "minecraft:tuff_brick_wall": { + "protocol_id": 24 + }, + "minecraft:tuff_bricks": { + "protocol_id": 21 + }, + "minecraft:tuff_slab": { + "protocol_id": 13 + }, + "minecraft:tuff_stairs": { + "protocol_id": 14 + }, + "minecraft:tuff_wall": { + "protocol_id": 15 + }, + "minecraft:turtle_egg": { + "protocol_id": 587 + }, + "minecraft:turtle_helmet": { + "protocol_id": 794 + }, + "minecraft:turtle_scute": { + "protocol_id": 795 + }, + "minecraft:turtle_spawn_egg": { + "protocol_id": 1073 + }, + "minecraft:twisting_vines": { + "protocol_id": 242 + }, + "minecraft:vault": { + "protocol_id": 1330 + }, + "minecraft:verdant_froglight": { + "protocol_id": 1264 + }, + "minecraft:vex_armor_trim_smithing_template": { + "protocol_id": 1276 + }, + "minecraft:vex_spawn_egg": { + "protocol_id": 1074 + }, + "minecraft:villager_spawn_egg": { + "protocol_id": 1075 + }, + "minecraft:vindicator_spawn_egg": { + "protocol_id": 1076 + }, + "minecraft:vine": { + "protocol_id": 359 + }, + "minecraft:wandering_trader_spawn_egg": { + "protocol_id": 1077 + }, + "minecraft:ward_armor_trim_smithing_template": { + "protocol_id": 1274 + }, + "minecraft:warden_spawn_egg": { + "protocol_id": 1078 + }, + "minecraft:warped_button": { + "protocol_id": 694 + }, + "minecraft:warped_door": { + "protocol_id": 721 + }, + "minecraft:warped_fence": { + "protocol_id": 321 + }, + "minecraft:warped_fence_gate": { + "protocol_id": 760 + }, + "minecraft:warped_fungus": { + "protocol_id": 237 + }, + "minecraft:warped_fungus_on_a_stick": { + "protocol_id": 772 + }, + "minecraft:warped_hanging_sign": { + "protocol_id": 907 + }, + "minecraft:warped_hyphae": { + "protocol_id": 175 + }, + "minecraft:warped_nylium": { + "protocol_id": 34 + }, + "minecraft:warped_planks": { + "protocol_id": 46 + }, + "minecraft:warped_pressure_plate": { + "protocol_id": 709 + }, + "minecraft:warped_roots": { + "protocol_id": 239 + }, + "minecraft:warped_sign": { + "protocol_id": 896 + }, + "minecraft:warped_slab": { + "protocol_id": 263 + }, + "minecraft:warped_stairs": { + "protocol_id": 394 + }, + "minecraft:warped_stem": { + "protocol_id": 143 + }, + "minecraft:warped_trapdoor": { + "protocol_id": 741 + }, + "minecraft:warped_wart_block": { + "protocol_id": 518 + }, + "minecraft:water_bucket": { + "protocol_id": 909 + }, + "minecraft:waxed_chiseled_copper": { + "protocol_id": 116 + }, + "minecraft:waxed_copper_block": { + "protocol_id": 112 + }, + "minecraft:waxed_copper_bulb": { + "protocol_id": 1323 + }, + "minecraft:waxed_copper_door": { + "protocol_id": 726 + }, + "minecraft:waxed_copper_grate": { + "protocol_id": 1315 + }, + "minecraft:waxed_copper_trapdoor": { + "protocol_id": 746 + }, + "minecraft:waxed_cut_copper": { + "protocol_id": 120 + }, + "minecraft:waxed_cut_copper_slab": { + "protocol_id": 128 + }, + "minecraft:waxed_cut_copper_stairs": { + "protocol_id": 124 + }, + "minecraft:waxed_exposed_chiseled_copper": { + "protocol_id": 117 + }, + "minecraft:waxed_exposed_copper": { + "protocol_id": 113 + }, + "minecraft:waxed_exposed_copper_bulb": { + "protocol_id": 1324 + }, + "minecraft:waxed_exposed_copper_door": { + "protocol_id": 727 + }, + "minecraft:waxed_exposed_copper_grate": { + "protocol_id": 1316 + }, + "minecraft:waxed_exposed_copper_trapdoor": { + "protocol_id": 747 + }, + "minecraft:waxed_exposed_cut_copper": { + "protocol_id": 121 + }, + "minecraft:waxed_exposed_cut_copper_slab": { + "protocol_id": 129 + }, + "minecraft:waxed_exposed_cut_copper_stairs": { + "protocol_id": 125 + }, + "minecraft:waxed_oxidized_chiseled_copper": { + "protocol_id": 119 + }, + "minecraft:waxed_oxidized_copper": { + "protocol_id": 115 + }, + "minecraft:waxed_oxidized_copper_bulb": { + "protocol_id": 1326 + }, + "minecraft:waxed_oxidized_copper_door": { + "protocol_id": 729 + }, + "minecraft:waxed_oxidized_copper_grate": { + "protocol_id": 1318 + }, + "minecraft:waxed_oxidized_copper_trapdoor": { + "protocol_id": 749 + }, + "minecraft:waxed_oxidized_cut_copper": { + "protocol_id": 123 + }, + "minecraft:waxed_oxidized_cut_copper_slab": { + "protocol_id": 131 + }, + "minecraft:waxed_oxidized_cut_copper_stairs": { + "protocol_id": 127 + }, + "minecraft:waxed_weathered_chiseled_copper": { + "protocol_id": 118 + }, + "minecraft:waxed_weathered_copper": { + "protocol_id": 114 + }, + "minecraft:waxed_weathered_copper_bulb": { + "protocol_id": 1325 + }, + "minecraft:waxed_weathered_copper_door": { + "protocol_id": 728 + }, + "minecraft:waxed_weathered_copper_grate": { + "protocol_id": 1317 + }, + "minecraft:waxed_weathered_copper_trapdoor": { + "protocol_id": 748 + }, + "minecraft:waxed_weathered_cut_copper": { + "protocol_id": 122 + }, + "minecraft:waxed_weathered_cut_copper_slab": { + "protocol_id": 130 + }, + "minecraft:waxed_weathered_cut_copper_stairs": { + "protocol_id": 126 + }, + "minecraft:wayfinder_armor_trim_smithing_template": { + "protocol_id": 1281 + }, + "minecraft:weathered_chiseled_copper": { + "protocol_id": 98 + }, + "minecraft:weathered_copper": { + "protocol_id": 94 + }, + "minecraft:weathered_copper_bulb": { + "protocol_id": 1321 + }, + "minecraft:weathered_copper_door": { + "protocol_id": 724 + }, + "minecraft:weathered_copper_grate": { + "protocol_id": 1313 + }, + "minecraft:weathered_copper_trapdoor": { + "protocol_id": 744 + }, + "minecraft:weathered_cut_copper": { + "protocol_id": 102 + }, + "minecraft:weathered_cut_copper_slab": { + "protocol_id": 110 + }, + "minecraft:weathered_cut_copper_stairs": { + "protocol_id": 106 + }, + "minecraft:weeping_vines": { + "protocol_id": 241 + }, + "minecraft:wet_sponge": { + "protocol_id": 187 + }, + "minecraft:wheat": { + "protocol_id": 854 + }, + "minecraft:wheat_seeds": { + "protocol_id": 853 + }, + "minecraft:white_banner": { + "protocol_id": 1133 + }, + "minecraft:white_bed": { + "protocol_id": 964 + }, + "minecraft:white_candle": { + "protocol_id": 1242 + }, + "minecraft:white_carpet": { + "protocol_id": 446 + }, + "minecraft:white_concrete": { + "protocol_id": 555 + }, + "minecraft:white_concrete_powder": { + "protocol_id": 571 + }, + "minecraft:white_dye": { + "protocol_id": 944 + }, + "minecraft:white_glazed_terracotta": { + "protocol_id": 539 + }, + "minecraft:white_shulker_box": { + "protocol_id": 523 + }, + "minecraft:white_stained_glass": { + "protocol_id": 471 + }, + "minecraft:white_stained_glass_pane": { + "protocol_id": 487 + }, + "minecraft:white_terracotta": { + "protocol_id": 427 + }, + "minecraft:white_tulip": { + "protocol_id": 225 + }, + "minecraft:white_wool": { + "protocol_id": 202 + }, + "minecraft:wild_armor_trim_smithing_template": { + "protocol_id": 1273 + }, + "minecraft:wind_charge": { + "protocol_id": 1090 + }, + "minecraft:witch_spawn_egg": { + "protocol_id": 1079 + }, + "minecraft:wither_rose": { + "protocol_id": 230 + }, + "minecraft:wither_skeleton_skull": { + "protocol_id": 1104 + }, + "minecraft:wither_skeleton_spawn_egg": { + "protocol_id": 1081 + }, + "minecraft:wither_spawn_egg": { + "protocol_id": 1080 + }, + "minecraft:wolf_armor": { + "protocol_id": 797 + }, + "minecraft:wolf_spawn_egg": { + "protocol_id": 1082 + }, + "minecraft:wooden_axe": { + "protocol_id": 821 + }, + "minecraft:wooden_hoe": { + "protocol_id": 822 + }, + "minecraft:wooden_pickaxe": { + "protocol_id": 820 + }, + "minecraft:wooden_shovel": { + "protocol_id": 819 + }, + "minecraft:wooden_sword": { + "protocol_id": 818 + }, + "minecraft:writable_book": { + "protocol_id": 1091 + }, + "minecraft:written_book": { + "protocol_id": 1092 + }, + "minecraft:yellow_banner": { + "protocol_id": 1137 + }, + "minecraft:yellow_bed": { + "protocol_id": 968 + }, + "minecraft:yellow_candle": { + "protocol_id": 1246 + }, + "minecraft:yellow_carpet": { + "protocol_id": 450 + }, + "minecraft:yellow_concrete": { + "protocol_id": 559 + }, + "minecraft:yellow_concrete_powder": { + "protocol_id": 575 + }, + "minecraft:yellow_dye": { + "protocol_id": 948 + }, + "minecraft:yellow_glazed_terracotta": { + "protocol_id": 543 + }, + "minecraft:yellow_shulker_box": { + "protocol_id": 527 + }, + "minecraft:yellow_stained_glass": { + "protocol_id": 475 + }, + "minecraft:yellow_stained_glass_pane": { + "protocol_id": 491 + }, + "minecraft:yellow_terracotta": { + "protocol_id": 431 + }, + "minecraft:yellow_wool": { + "protocol_id": 206 + }, + "minecraft:zoglin_spawn_egg": { + "protocol_id": 1083 + }, + "minecraft:zombie_head": { + "protocol_id": 1106 + }, + "minecraft:zombie_horse_spawn_egg": { + "protocol_id": 1085 + }, + "minecraft:zombie_spawn_egg": { + "protocol_id": 1084 + }, + "minecraft:zombie_villager_spawn_egg": { + "protocol_id": 1086 + }, + "minecraft:zombified_piglin_spawn_egg": { + "protocol_id": 1087 + } + }, + "protocol_id": 6 + }, + "minecraft:item_sub_predicate_type": { + "entries": { + "minecraft:attribute_modifiers": { + "protocol_id": 11 + }, + "minecraft:bundle_contents": { + "protocol_id": 6 + }, + "minecraft:container": { + "protocol_id": 5 + }, + "minecraft:custom_data": { + "protocol_id": 4 + }, + "minecraft:damage": { + "protocol_id": 0 + }, + "minecraft:enchantments": { + "protocol_id": 1 + }, + "minecraft:firework_explosion": { + "protocol_id": 7 + }, + "minecraft:fireworks": { + "protocol_id": 8 + }, + "minecraft:jukebox_playable": { + "protocol_id": 13 + }, + "minecraft:potion_contents": { + "protocol_id": 3 + }, + "minecraft:stored_enchantments": { + "protocol_id": 2 + }, + "minecraft:trim": { + "protocol_id": 12 + }, + "minecraft:writable_book_content": { + "protocol_id": 9 + }, + "minecraft:written_book_content": { + "protocol_id": 10 + } + }, + "protocol_id": 70 + }, + "minecraft:loot_condition_type": { + "entries": { + "minecraft:all_of": { + "protocol_id": 2 + }, + "minecraft:any_of": { + "protocol_id": 1 + }, + "minecraft:block_state_property": { + "protocol_id": 8 + }, + "minecraft:damage_source_properties": { + "protocol_id": 12 + }, + "minecraft:enchantment_active_check": { + "protocol_id": 18 + }, + "minecraft:entity_properties": { + "protocol_id": 5 + }, + "minecraft:entity_scores": { + "protocol_id": 7 + }, + "minecraft:inverted": { + "protocol_id": 0 + }, + "minecraft:killed_by_player": { + "protocol_id": 6 + }, + "minecraft:location_check": { + "protocol_id": 13 + }, + "minecraft:match_tool": { + "protocol_id": 9 + }, + "minecraft:random_chance": { + "protocol_id": 3 + }, + "minecraft:random_chance_with_enchanted_bonus": { + "protocol_id": 4 + }, + "minecraft:reference": { + "protocol_id": 15 + }, + "minecraft:survives_explosion": { + "protocol_id": 11 + }, + "minecraft:table_bonus": { + "protocol_id": 10 + }, + "minecraft:time_check": { + "protocol_id": 16 + }, + "minecraft:value_check": { + "protocol_id": 17 + }, + "minecraft:weather_check": { + "protocol_id": 14 + } + }, + "protocol_id": 31 + }, + "minecraft:loot_function_type": { + "entries": { + "minecraft:apply_bonus": { + "protocol_id": 19 + }, + "minecraft:copy_components": { + "protocol_id": 31 + }, + "minecraft:copy_custom_data": { + "protocol_id": 24 + }, + "minecraft:copy_name": { + "protocol_id": 14 + }, + "minecraft:copy_state": { + "protocol_id": 25 + }, + "minecraft:enchant_randomly": { + "protocol_id": 3 + }, + "minecraft:enchant_with_levels": { + "protocol_id": 2 + }, + "minecraft:enchanted_count_increase": { + "protocol_id": 8 + }, + "minecraft:exploration_map": { + "protocol_id": 12 + }, + "minecraft:explosion_decay": { + "protocol_id": 21 + }, + "minecraft:fill_player_head": { + "protocol_id": 23 + }, + "minecraft:filtered": { + "protocol_id": 17 + }, + "minecraft:furnace_smelt": { + "protocol_id": 7 + }, + "minecraft:limit_count": { + "protocol_id": 18 + }, + "minecraft:modify_contents": { + "protocol_id": 16 + }, + "minecraft:reference": { + "protocol_id": 29 + }, + "minecraft:sequence": { + "protocol_id": 30 + }, + "minecraft:set_attributes": { + "protocol_id": 10 + }, + "minecraft:set_banner_pattern": { + "protocol_id": 26 + }, + "minecraft:set_book_cover": { + "protocol_id": 34 + }, + "minecraft:set_components": { + "protocol_id": 6 + }, + "minecraft:set_contents": { + "protocol_id": 15 + }, + "minecraft:set_count": { + "protocol_id": 0 + }, + "minecraft:set_custom_data": { + "protocol_id": 5 + }, + "minecraft:set_custom_model_data": { + "protocol_id": 39 + }, + "minecraft:set_damage": { + "protocol_id": 9 + }, + "minecraft:set_enchantments": { + "protocol_id": 4 + }, + "minecraft:set_firework_explosion": { + "protocol_id": 33 + }, + "minecraft:set_fireworks": { + "protocol_id": 32 + }, + "minecraft:set_instrument": { + "protocol_id": 28 + }, + "minecraft:set_item": { + "protocol_id": 1 + }, + "minecraft:set_loot_table": { + "protocol_id": 20 + }, + "minecraft:set_lore": { + "protocol_id": 22 + }, + "minecraft:set_name": { + "protocol_id": 11 + }, + "minecraft:set_ominous_bottle_amplifier": { + "protocol_id": 38 + }, + "minecraft:set_potion": { + "protocol_id": 27 + }, + "minecraft:set_stew_effect": { + "protocol_id": 13 + }, + "minecraft:set_writable_book_pages": { + "protocol_id": 36 + }, + "minecraft:set_written_book_pages": { + "protocol_id": 35 + }, + "minecraft:toggle_tooltips": { + "protocol_id": 37 + } + }, + "protocol_id": 30 + }, + "minecraft:loot_nbt_provider_type": { + "entries": { + "minecraft:context": { + "protocol_id": 1 + }, + "minecraft:storage": { + "protocol_id": 0 + } + }, + "protocol_id": 33 + }, + "minecraft:loot_number_provider_type": { + "entries": { + "minecraft:binomial": { + "protocol_id": 2 + }, + "minecraft:constant": { + "protocol_id": 0 + }, + "minecraft:enchantment_level": { + "protocol_id": 5 + }, + "minecraft:score": { + "protocol_id": 3 + }, + "minecraft:storage": { + "protocol_id": 4 + }, + "minecraft:uniform": { + "protocol_id": 1 + } + }, + "protocol_id": 32 + }, + "minecraft:loot_pool_entry_type": { + "entries": { + "minecraft:alternatives": { + "protocol_id": 5 + }, + "minecraft:dynamic": { + "protocol_id": 3 + }, + "minecraft:empty": { + "protocol_id": 0 + }, + "minecraft:group": { + "protocol_id": 7 + }, + "minecraft:item": { + "protocol_id": 1 + }, + "minecraft:loot_table": { + "protocol_id": 2 + }, + "minecraft:sequence": { + "protocol_id": 6 + }, + "minecraft:tag": { + "protocol_id": 4 + } + }, + "protocol_id": 29 + }, + "minecraft:loot_score_provider_type": { + "entries": { + "minecraft:context": { + "protocol_id": 1 + }, + "minecraft:fixed": { + "protocol_id": 0 + } + }, + "protocol_id": 34 + }, + "minecraft:map_decoration_type": { + "entries": { + "minecraft:banner_black": { + "protocol_id": 25 + }, + "minecraft:banner_blue": { + "protocol_id": 21 + }, + "minecraft:banner_brown": { + "protocol_id": 22 + }, + "minecraft:banner_cyan": { + "protocol_id": 19 + }, + "minecraft:banner_gray": { + "protocol_id": 17 + }, + "minecraft:banner_green": { + "protocol_id": 23 + }, + "minecraft:banner_light_blue": { + "protocol_id": 13 + }, + "minecraft:banner_light_gray": { + "protocol_id": 18 + }, + "minecraft:banner_lime": { + "protocol_id": 15 + }, + "minecraft:banner_magenta": { + "protocol_id": 12 + }, + "minecraft:banner_orange": { + "protocol_id": 11 + }, + "minecraft:banner_pink": { + "protocol_id": 16 + }, + "minecraft:banner_purple": { + "protocol_id": 20 + }, + "minecraft:banner_red": { + "protocol_id": 24 + }, + "minecraft:banner_white": { + "protocol_id": 10 + }, + "minecraft:banner_yellow": { + "protocol_id": 14 + }, + "minecraft:blue_marker": { + "protocol_id": 3 + }, + "minecraft:frame": { + "protocol_id": 1 + }, + "minecraft:jungle_temple": { + "protocol_id": 32 + }, + "minecraft:mansion": { + "protocol_id": 8 + }, + "minecraft:monument": { + "protocol_id": 9 + }, + "minecraft:player": { + "protocol_id": 0 + }, + "minecraft:player_off_limits": { + "protocol_id": 7 + }, + "minecraft:player_off_map": { + "protocol_id": 6 + }, + "minecraft:red_marker": { + "protocol_id": 2 + }, + "minecraft:red_x": { + "protocol_id": 26 + }, + "minecraft:swamp_hut": { + "protocol_id": 33 + }, + "minecraft:target_point": { + "protocol_id": 5 + }, + "minecraft:target_x": { + "protocol_id": 4 + }, + "minecraft:trial_chambers": { + "protocol_id": 34 + }, + "minecraft:village_desert": { + "protocol_id": 27 + }, + "minecraft:village_plains": { + "protocol_id": 28 + }, + "minecraft:village_savanna": { + "protocol_id": 29 + }, + "minecraft:village_snowy": { + "protocol_id": 30 + }, + "minecraft:village_taiga": { + "protocol_id": 31 + } + }, + "protocol_id": 71 + }, + "minecraft:memory_module_type": { + "default": "minecraft:dummy", + "entries": { + "minecraft:admiring_disabled": { + "protocol_id": 58 + }, + "minecraft:admiring_item": { + "protocol_id": 55 + }, + "minecraft:angry_at": { + "protocol_id": 53 + }, + "minecraft:ate_recently": { + "protocol_id": 73 + }, + "minecraft:attack_cooling_down": { + "protocol_id": 15 + }, + "minecraft:attack_target": { + "protocol_id": 14 + }, + "minecraft:avoid_target": { + "protocol_id": 25 + }, + "minecraft:breed_target": { + "protocol_id": 17 + }, + "minecraft:breeze_jump_cooldown": { + "protocol_id": 98 + }, + "minecraft:breeze_jump_inhaling": { + "protocol_id": 103 + }, + "minecraft:breeze_jump_target": { + "protocol_id": 104 + }, + "minecraft:breeze_leaving_water": { + "protocol_id": 105 + }, + "minecraft:breeze_shoot": { + "protocol_id": 99 + }, + "minecraft:breeze_shoot_charging": { + "protocol_id": 100 + }, + "minecraft:breeze_shoot_cooldown": { + "protocol_id": 102 + }, + "minecraft:breeze_shoot_recover": { + "protocol_id": 101 + }, + "minecraft:cant_reach_walk_target_since": { + "protocol_id": 30 + }, + "minecraft:celebrate_location": { + "protocol_id": 60 + }, + "minecraft:dancing": { + "protocol_id": 61 + }, + "minecraft:danger_detected_recently": { + "protocol_id": 32 + }, + "minecraft:dig_cooldown": { + "protocol_id": 82 + }, + "minecraft:disable_walk_to_admire_item": { + "protocol_id": 57 + }, + "minecraft:disturbance_location": { + "protocol_id": 77 + }, + "minecraft:doors_to_close": { + "protocol_id": 21 + }, + "minecraft:dummy": { + "protocol_id": 0 + }, + "minecraft:gaze_cooldown_ticks": { + "protocol_id": 42 + }, + "minecraft:golem_detected_recently": { + "protocol_id": 31 + }, + "minecraft:has_hunting_cooldown": { + "protocol_id": 46 + }, + "minecraft:heard_bell_time": { + "protocol_id": 29 + }, + "minecraft:hiding_place": { + "protocol_id": 28 + }, + "minecraft:home": { + "protocol_id": 1 + }, + "minecraft:hunted_recently": { + "protocol_id": 59 + }, + "minecraft:hurt_by": { + "protocol_id": 23 + }, + "minecraft:hurt_by_entity": { + "protocol_id": 24 + }, + "minecraft:interactable_doors": { + "protocol_id": 20 + }, + "minecraft:interaction_target": { + "protocol_id": 16 + }, + "minecraft:is_emerging": { + "protocol_id": 80 + }, + "minecraft:is_in_water": { + "protocol_id": 49 + }, + "minecraft:is_panicking": { + "protocol_id": 51 + }, + "minecraft:is_pregnant": { + "protocol_id": 50 + }, + "minecraft:is_sniffing": { + "protocol_id": 79 + }, + "minecraft:is_tempted": { + "protocol_id": 43 + }, + "minecraft:item_pickup_cooldown_ticks": { + "protocol_id": 93 + }, + "minecraft:job_site": { + "protocol_id": 2 + }, + "minecraft:last_slept": { + "protocol_id": 33 + }, + "minecraft:last_woken": { + "protocol_id": 34 + }, + "minecraft:last_worked_at_poi": { + "protocol_id": 35 + }, + "minecraft:liked_noteblock": { + "protocol_id": 91 + }, + "minecraft:liked_noteblock_cooldown_ticks": { + "protocol_id": 92 + }, + "minecraft:liked_player": { + "protocol_id": 90 + }, + "minecraft:long_jump_cooling_down": { + "protocol_id": 44 + }, + "minecraft:long_jump_mid_jump": { + "protocol_id": 45 + }, + "minecraft:look_target": { + "protocol_id": 13 + }, + "minecraft:meeting_point": { + "protocol_id": 4 + }, + "minecraft:mobs": { + "protocol_id": 6 + }, + "minecraft:nearby_adult_piglins": { + "protocol_id": 65 + }, + "minecraft:nearest_attackable": { + "protocol_id": 27 + }, + "minecraft:nearest_bed": { + "protocol_id": 22 + }, + "minecraft:nearest_hostile": { + "protocol_id": 26 + }, + "minecraft:nearest_player_holding_wanted_item": { + "protocol_id": 72 + }, + "minecraft:nearest_players": { + "protocol_id": 9 + }, + "minecraft:nearest_repellent": { + "protocol_id": 74 + }, + "minecraft:nearest_targetable_player_not_wearing_gold": { + "protocol_id": 64 + }, + "minecraft:nearest_visible_adult": { + "protocol_id": 36 + }, + "minecraft:nearest_visible_adult_hoglins": { + "protocol_id": 67 + }, + "minecraft:nearest_visible_adult_piglin": { + "protocol_id": 68 + }, + "minecraft:nearest_visible_adult_piglins": { + "protocol_id": 66 + }, + "minecraft:nearest_visible_baby_hoglin": { + "protocol_id": 63 + }, + "minecraft:nearest_visible_huntable_hoglin": { + "protocol_id": 62 + }, + "minecraft:nearest_visible_nemesis": { + "protocol_id": 38 + }, + "minecraft:nearest_visible_player": { + "protocol_id": 10 + }, + "minecraft:nearest_visible_targetable_player": { + "protocol_id": 11 + }, + "minecraft:nearest_visible_wanted_item": { + "protocol_id": 37 + }, + "minecraft:nearest_visible_zombified": { + "protocol_id": 69 + }, + "minecraft:pacified": { + "protocol_id": 75 + }, + "minecraft:path": { + "protocol_id": 19 + }, + "minecraft:play_dead_ticks": { + "protocol_id": 39 + }, + "minecraft:potential_job_site": { + "protocol_id": 3 + }, + "minecraft:ram_cooldown_ticks": { + "protocol_id": 47 + }, + "minecraft:ram_target": { + "protocol_id": 48 + }, + "minecraft:recent_projectile": { + "protocol_id": 78 + }, + "minecraft:ride_target": { + "protocol_id": 18 + }, + "minecraft:roar_sound_cooldown": { + "protocol_id": 83 + }, + "minecraft:roar_sound_delay": { + "protocol_id": 81 + }, + "minecraft:roar_target": { + "protocol_id": 76 + }, + "minecraft:secondary_job_site": { + "protocol_id": 5 + }, + "minecraft:sniff_cooldown": { + "protocol_id": 84 + }, + "minecraft:sniffer_digging": { + "protocol_id": 96 + }, + "minecraft:sniffer_explored_positions": { + "protocol_id": 94 + }, + "minecraft:sniffer_happy": { + "protocol_id": 97 + }, + "minecraft:sniffer_sniffing_target": { + "protocol_id": 95 + }, + "minecraft:sonic_boom_cooldown": { + "protocol_id": 87 + }, + "minecraft:sonic_boom_sound_cooldown": { + "protocol_id": 88 + }, + "minecraft:sonic_boom_sound_delay": { + "protocol_id": 89 + }, + "minecraft:temptation_cooldown_ticks": { + "protocol_id": 41 + }, + "minecraft:tempting_player": { + "protocol_id": 40 + }, + "minecraft:time_trying_to_reach_admire_item": { + "protocol_id": 56 + }, + "minecraft:touch_cooldown": { + "protocol_id": 85 + }, + "minecraft:universal_anger": { + "protocol_id": 54 + }, + "minecraft:unreachable_tongue_targets": { + "protocol_id": 52 + }, + "minecraft:vibration_cooldown": { + "protocol_id": 86 + }, + "minecraft:visible_adult_hoglin_count": { + "protocol_id": 71 + }, + "minecraft:visible_adult_piglin_count": { + "protocol_id": 70 + }, + "minecraft:visible_mobs": { + "protocol_id": 7 + }, + "minecraft:visible_villager_babies": { + "protocol_id": 8 + }, + "minecraft:walk_target": { + "protocol_id": 12 + } + }, + "protocol_id": 25 + }, + "minecraft:menu": { + "entries": { + "minecraft:anvil": { + "protocol_id": 8 + }, + "minecraft:beacon": { + "protocol_id": 9 + }, + "minecraft:blast_furnace": { + "protocol_id": 10 + }, + "minecraft:brewing_stand": { + "protocol_id": 11 + }, + "minecraft:cartography_table": { + "protocol_id": 23 + }, + "minecraft:crafter_3x3": { + "protocol_id": 7 + }, + "minecraft:crafting": { + "protocol_id": 12 + }, + "minecraft:enchantment": { + "protocol_id": 13 + }, + "minecraft:furnace": { + "protocol_id": 14 + }, + "minecraft:generic_3x3": { + "protocol_id": 6 + }, + "minecraft:generic_9x1": { + "protocol_id": 0 + }, + "minecraft:generic_9x2": { + "protocol_id": 1 + }, + "minecraft:generic_9x3": { + "protocol_id": 2 + }, + "minecraft:generic_9x4": { + "protocol_id": 3 + }, + "minecraft:generic_9x5": { + "protocol_id": 4 + }, + "minecraft:generic_9x6": { + "protocol_id": 5 + }, + "minecraft:grindstone": { + "protocol_id": 15 + }, + "minecraft:hopper": { + "protocol_id": 16 + }, + "minecraft:lectern": { + "protocol_id": 17 + }, + "minecraft:loom": { + "protocol_id": 18 + }, + "minecraft:merchant": { + "protocol_id": 19 + }, + "minecraft:shulker_box": { + "protocol_id": 20 + }, + "minecraft:smithing": { + "protocol_id": 21 + }, + "minecraft:smoker": { + "protocol_id": 22 + }, + "minecraft:stonecutter": { + "protocol_id": 24 + } + }, + "protocol_id": 15 + }, + "minecraft:mob_effect": { + "entries": { + "minecraft:absorption": { + "protocol_id": 21 + }, + "minecraft:bad_omen": { + "protocol_id": 30 + }, + "minecraft:blindness": { + "protocol_id": 14 + }, + "minecraft:conduit_power": { + "protocol_id": 28 + }, + "minecraft:darkness": { + "protocol_id": 32 + }, + "minecraft:dolphins_grace": { + "protocol_id": 29 + }, + "minecraft:fire_resistance": { + "protocol_id": 11 + }, + "minecraft:glowing": { + "protocol_id": 23 + }, + "minecraft:haste": { + "protocol_id": 2 + }, + "minecraft:health_boost": { + "protocol_id": 20 + }, + "minecraft:hero_of_the_village": { + "protocol_id": 31 + }, + "minecraft:hunger": { + "protocol_id": 16 + }, + "minecraft:infested": { + "protocol_id": 38 + }, + "minecraft:instant_damage": { + "protocol_id": 6 + }, + "minecraft:instant_health": { + "protocol_id": 5 + }, + "minecraft:invisibility": { + "protocol_id": 13 + }, + "minecraft:jump_boost": { + "protocol_id": 7 + }, + "minecraft:levitation": { + "protocol_id": 24 + }, + "minecraft:luck": { + "protocol_id": 25 + }, + "minecraft:mining_fatigue": { + "protocol_id": 3 + }, + "minecraft:nausea": { + "protocol_id": 8 + }, + "minecraft:night_vision": { + "protocol_id": 15 + }, + "minecraft:oozing": { + "protocol_id": 37 + }, + "minecraft:poison": { + "protocol_id": 18 + }, + "minecraft:raid_omen": { + "protocol_id": 34 + }, + "minecraft:regeneration": { + "protocol_id": 9 + }, + "minecraft:resistance": { + "protocol_id": 10 + }, + "minecraft:saturation": { + "protocol_id": 22 + }, + "minecraft:slow_falling": { + "protocol_id": 27 + }, + "minecraft:slowness": { + "protocol_id": 1 + }, + "minecraft:speed": { + "protocol_id": 0 + }, + "minecraft:strength": { + "protocol_id": 4 + }, + "minecraft:trial_omen": { + "protocol_id": 33 + }, + "minecraft:unluck": { + "protocol_id": 26 + }, + "minecraft:water_breathing": { + "protocol_id": 12 + }, + "minecraft:weakness": { + "protocol_id": 17 + }, + "minecraft:weaving": { + "protocol_id": 36 + }, + "minecraft:wind_charged": { + "protocol_id": 35 + }, + "minecraft:wither": { + "protocol_id": 19 + } + }, + "protocol_id": 3 + }, + "minecraft:number_format_type": { + "entries": { + "minecraft:blank": { + "protocol_id": 0 + }, + "minecraft:fixed": { + "protocol_id": 2 + }, + "minecraft:styled": { + "protocol_id": 1 + } + }, + "protocol_id": 66 + }, + "minecraft:particle_type": { + "entries": { + "minecraft:angry_villager": { + "protocol_id": 0 + }, + "minecraft:ash": { + "protocol_id": 78 + }, + "minecraft:block": { + "protocol_id": 1 + }, + "minecraft:block_marker": { + "protocol_id": 2 + }, + "minecraft:bubble": { + "protocol_id": 3 + }, + "minecraft:bubble_column_up": { + "protocol_id": 68 + }, + "minecraft:bubble_pop": { + "protocol_id": 66 + }, + "minecraft:campfire_cosy_smoke": { + "protocol_id": 71 + }, + "minecraft:campfire_signal_smoke": { + "protocol_id": 72 + }, + "minecraft:cherry_leaves": { + "protocol_id": 33 + }, + "minecraft:cloud": { + "protocol_id": 4 + }, + "minecraft:composter": { + "protocol_id": 41 + }, + "minecraft:crimson_spore": { + "protocol_id": 79 + }, + "minecraft:crit": { + "protocol_id": 5 + }, + "minecraft:current_down": { + "protocol_id": 67 + }, + "minecraft:damage_indicator": { + "protocol_id": 6 + }, + "minecraft:dolphin": { + "protocol_id": 70 + }, + "minecraft:dragon_breath": { + "protocol_id": 7 + }, + "minecraft:dripping_dripstone_lava": { + "protocol_id": 89 + }, + "minecraft:dripping_dripstone_water": { + "protocol_id": 91 + }, + "minecraft:dripping_honey": { + "protocol_id": 73 + }, + "minecraft:dripping_lava": { + "protocol_id": 8 + }, + "minecraft:dripping_obsidian_tear": { + "protocol_id": 82 + }, + "minecraft:dripping_water": { + "protocol_id": 11 + }, + "minecraft:dust": { + "protocol_id": 13 + }, + "minecraft:dust_color_transition": { + "protocol_id": 14 + }, + "minecraft:dust_pillar": { + "protocol_id": 105 + }, + "minecraft:dust_plume": { + "protocol_id": 101 + }, + "minecraft:effect": { + "protocol_id": 15 + }, + "minecraft:egg_crack": { + "protocol_id": 100 + }, + "minecraft:elder_guardian": { + "protocol_id": 16 + }, + "minecraft:electric_spark": { + "protocol_id": 97 + }, + "minecraft:enchant": { + "protocol_id": 18 + }, + "minecraft:enchanted_hit": { + "protocol_id": 17 + }, + "minecraft:end_rod": { + "protocol_id": 19 + }, + "minecraft:entity_effect": { + "protocol_id": 20 + }, + "minecraft:explosion": { + "protocol_id": 22 + }, + "minecraft:explosion_emitter": { + "protocol_id": 21 + }, + "minecraft:falling_dripstone_lava": { + "protocol_id": 90 + }, + "minecraft:falling_dripstone_water": { + "protocol_id": 92 + }, + "minecraft:falling_dust": { + "protocol_id": 28 + }, + "minecraft:falling_honey": { + "protocol_id": 74 + }, + "minecraft:falling_lava": { + "protocol_id": 9 + }, + "minecraft:falling_nectar": { + "protocol_id": 76 + }, + "minecraft:falling_obsidian_tear": { + "protocol_id": 83 + }, + "minecraft:falling_spore_blossom": { + "protocol_id": 77 + }, + "minecraft:falling_water": { + "protocol_id": 12 + }, + "minecraft:firework": { + "protocol_id": 29 + }, + "minecraft:fishing": { + "protocol_id": 30 + }, + "minecraft:flame": { + "protocol_id": 31 + }, + "minecraft:flash": { + "protocol_id": 39 + }, + "minecraft:glow": { + "protocol_id": 94 + }, + "minecraft:glow_squid_ink": { + "protocol_id": 93 + }, + "minecraft:gust": { + "protocol_id": 23 + }, + "minecraft:gust_emitter_large": { + "protocol_id": 25 + }, + "minecraft:gust_emitter_small": { + "protocol_id": 26 + }, + "minecraft:happy_villager": { + "protocol_id": 40 + }, + "minecraft:heart": { + "protocol_id": 42 + }, + "minecraft:infested": { + "protocol_id": 32 + }, + "minecraft:instant_effect": { + "protocol_id": 43 + }, + "minecraft:item": { + "protocol_id": 44 + }, + "minecraft:item_cobweb": { + "protocol_id": 47 + }, + "minecraft:item_slime": { + "protocol_id": 46 + }, + "minecraft:item_snowball": { + "protocol_id": 48 + }, + "minecraft:landing_honey": { + "protocol_id": 75 + }, + "minecraft:landing_lava": { + "protocol_id": 10 + }, + "minecraft:landing_obsidian_tear": { + "protocol_id": 84 + }, + "minecraft:large_smoke": { + "protocol_id": 49 + }, + "minecraft:lava": { + "protocol_id": 50 + }, + "minecraft:mycelium": { + "protocol_id": 51 + }, + "minecraft:nautilus": { + "protocol_id": 69 + }, + "minecraft:note": { + "protocol_id": 52 + }, + "minecraft:ominous_spawning": { + "protocol_id": 106 + }, + "minecraft:poof": { + "protocol_id": 53 + }, + "minecraft:portal": { + "protocol_id": 54 + }, + "minecraft:raid_omen": { + "protocol_id": 107 + }, + "minecraft:rain": { + "protocol_id": 55 + }, + "minecraft:reverse_portal": { + "protocol_id": 85 + }, + "minecraft:scrape": { + "protocol_id": 98 + }, + "minecraft:sculk_charge": { + "protocol_id": 35 + }, + "minecraft:sculk_charge_pop": { + "protocol_id": 36 + }, + "minecraft:sculk_soul": { + "protocol_id": 34 + }, + "minecraft:shriek": { + "protocol_id": 99 + }, + "minecraft:small_flame": { + "protocol_id": 87 + }, + "minecraft:small_gust": { + "protocol_id": 24 + }, + "minecraft:smoke": { + "protocol_id": 56 + }, + "minecraft:sneeze": { + "protocol_id": 58 + }, + "minecraft:snowflake": { + "protocol_id": 88 + }, + "minecraft:sonic_boom": { + "protocol_id": 27 + }, + "minecraft:soul": { + "protocol_id": 38 + }, + "minecraft:soul_fire_flame": { + "protocol_id": 37 + }, + "minecraft:spit": { + "protocol_id": 59 + }, + "minecraft:splash": { + "protocol_id": 64 + }, + "minecraft:spore_blossom_air": { + "protocol_id": 81 + }, + "minecraft:squid_ink": { + "protocol_id": 60 + }, + "minecraft:sweep_attack": { + "protocol_id": 61 + }, + "minecraft:totem_of_undying": { + "protocol_id": 62 + }, + "minecraft:trial_omen": { + "protocol_id": 108 + }, + "minecraft:trial_spawner_detection": { + "protocol_id": 102 + }, + "minecraft:trial_spawner_detection_ominous": { + "protocol_id": 103 + }, + "minecraft:underwater": { + "protocol_id": 63 + }, + "minecraft:vault_connection": { + "protocol_id": 104 + }, + "minecraft:vibration": { + "protocol_id": 45 + }, + "minecraft:warped_spore": { + "protocol_id": 80 + }, + "minecraft:wax_off": { + "protocol_id": 96 + }, + "minecraft:wax_on": { + "protocol_id": 95 + }, + "minecraft:white_ash": { + "protocol_id": 86 + }, + "minecraft:white_smoke": { + "protocol_id": 57 + }, + "minecraft:witch": { + "protocol_id": 65 + } + }, + "protocol_id": 8 + }, + "minecraft:point_of_interest_type": { + "entries": { + "minecraft:armorer": { + "protocol_id": 0 + }, + "minecraft:bee_nest": { + "protocol_id": 16 + }, + "minecraft:beehive": { + "protocol_id": 15 + }, + "minecraft:butcher": { + "protocol_id": 1 + }, + "minecraft:cartographer": { + "protocol_id": 2 + }, + "minecraft:cleric": { + "protocol_id": 3 + }, + "minecraft:farmer": { + "protocol_id": 4 + }, + "minecraft:fisherman": { + "protocol_id": 5 + }, + "minecraft:fletcher": { + "protocol_id": 6 + }, + "minecraft:home": { + "protocol_id": 13 + }, + "minecraft:leatherworker": { + "protocol_id": 7 + }, + "minecraft:librarian": { + "protocol_id": 8 + }, + "minecraft:lightning_rod": { + "protocol_id": 19 + }, + "minecraft:lodestone": { + "protocol_id": 18 + }, + "minecraft:mason": { + "protocol_id": 9 + }, + "minecraft:meeting": { + "protocol_id": 14 + }, + "minecraft:nether_portal": { + "protocol_id": 17 + }, + "minecraft:shepherd": { + "protocol_id": 10 + }, + "minecraft:toolsmith": { + "protocol_id": 11 + }, + "minecraft:weaponsmith": { + "protocol_id": 12 + } + }, + "protocol_id": 24 + }, + "minecraft:pos_rule_test": { + "entries": { + "minecraft:always_true": { + "protocol_id": 0 + }, + "minecraft:axis_aligned_linear_pos": { + "protocol_id": 2 + }, + "minecraft:linear_pos": { + "protocol_id": 1 + } + }, + "protocol_id": 14 + }, + "minecraft:position_source_type": { + "entries": { + "minecraft:block": { + "protocol_id": 0 + }, + "minecraft:entity": { + "protocol_id": 1 + } + }, + "protocol_id": 19 + }, + "minecraft:potion": { + "entries": { + "minecraft:awkward": { + "protocol_id": 3 + }, + "minecraft:fire_resistance": { + "protocol_id": 11 + }, + "minecraft:harming": { + "protocol_id": 26 + }, + "minecraft:healing": { + "protocol_id": 24 + }, + "minecraft:infested": { + "protocol_id": 45 + }, + "minecraft:invisibility": { + "protocol_id": 6 + }, + "minecraft:leaping": { + "protocol_id": 8 + }, + "minecraft:long_fire_resistance": { + "protocol_id": 12 + }, + "minecraft:long_invisibility": { + "protocol_id": 7 + }, + "minecraft:long_leaping": { + "protocol_id": 9 + }, + "minecraft:long_night_vision": { + "protocol_id": 5 + }, + "minecraft:long_poison": { + "protocol_id": 29 + }, + "minecraft:long_regeneration": { + "protocol_id": 32 + }, + "minecraft:long_slow_falling": { + "protocol_id": 41 + }, + "minecraft:long_slowness": { + "protocol_id": 17 + }, + "minecraft:long_strength": { + "protocol_id": 35 + }, + "minecraft:long_swiftness": { + "protocol_id": 14 + }, + "minecraft:long_turtle_master": { + "protocol_id": 20 + }, + "minecraft:long_water_breathing": { + "protocol_id": 23 + }, + "minecraft:long_weakness": { + "protocol_id": 38 + }, + "minecraft:luck": { + "protocol_id": 39 + }, + "minecraft:mundane": { + "protocol_id": 1 + }, + "minecraft:night_vision": { + "protocol_id": 4 + }, + "minecraft:oozing": { + "protocol_id": 44 + }, + "minecraft:poison": { + "protocol_id": 28 + }, + "minecraft:regeneration": { + "protocol_id": 31 + }, + "minecraft:slow_falling": { + "protocol_id": 40 + }, + "minecraft:slowness": { + "protocol_id": 16 + }, + "minecraft:strength": { + "protocol_id": 34 + }, + "minecraft:strong_harming": { + "protocol_id": 27 + }, + "minecraft:strong_healing": { + "protocol_id": 25 + }, + "minecraft:strong_leaping": { + "protocol_id": 10 + }, + "minecraft:strong_poison": { + "protocol_id": 30 + }, + "minecraft:strong_regeneration": { + "protocol_id": 33 + }, + "minecraft:strong_slowness": { + "protocol_id": 18 + }, + "minecraft:strong_strength": { + "protocol_id": 36 + }, + "minecraft:strong_swiftness": { + "protocol_id": 15 + }, + "minecraft:strong_turtle_master": { + "protocol_id": 21 + }, + "minecraft:swiftness": { + "protocol_id": 13 + }, + "minecraft:thick": { + "protocol_id": 2 + }, + "minecraft:turtle_master": { + "protocol_id": 19 + }, + "minecraft:water": { + "protocol_id": 0 + }, + "minecraft:water_breathing": { + "protocol_id": 22 + }, + "minecraft:weakness": { + "protocol_id": 37 + }, + "minecraft:weaving": { + "protocol_id": 43 + }, + "minecraft:wind_charged": { + "protocol_id": 42 + } + }, + "protocol_id": 7 + }, + "minecraft:recipe_serializer": { + "entries": { + "minecraft:blasting": { + "protocol_id": 16 + }, + "minecraft:campfire_cooking": { + "protocol_id": 18 + }, + "minecraft:crafting_decorated_pot": { + "protocol_id": 22 + }, + "minecraft:crafting_shaped": { + "protocol_id": 0 + }, + "minecraft:crafting_shapeless": { + "protocol_id": 1 + }, + "minecraft:crafting_special_armordye": { + "protocol_id": 2 + }, + "minecraft:crafting_special_bannerduplicate": { + "protocol_id": 10 + }, + "minecraft:crafting_special_bookcloning": { + "protocol_id": 3 + }, + "minecraft:crafting_special_firework_rocket": { + "protocol_id": 6 + }, + "minecraft:crafting_special_firework_star": { + "protocol_id": 7 + }, + "minecraft:crafting_special_firework_star_fade": { + "protocol_id": 8 + }, + "minecraft:crafting_special_mapcloning": { + "protocol_id": 4 + }, + "minecraft:crafting_special_mapextending": { + "protocol_id": 5 + }, + "minecraft:crafting_special_repairitem": { + "protocol_id": 14 + }, + "minecraft:crafting_special_shielddecoration": { + "protocol_id": 11 + }, + "minecraft:crafting_special_shulkerboxcoloring": { + "protocol_id": 12 + }, + "minecraft:crafting_special_suspiciousstew": { + "protocol_id": 13 + }, + "minecraft:crafting_special_tippedarrow": { + "protocol_id": 9 + }, + "minecraft:smelting": { + "protocol_id": 15 + }, + "minecraft:smithing_transform": { + "protocol_id": 20 + }, + "minecraft:smithing_trim": { + "protocol_id": 21 + }, + "minecraft:smoking": { + "protocol_id": 17 + }, + "minecraft:stonecutting": { + "protocol_id": 19 + } + }, + "protocol_id": 17 + }, + "minecraft:recipe_type": { + "entries": { + "minecraft:blasting": { + "protocol_id": 2 + }, + "minecraft:campfire_cooking": { + "protocol_id": 4 + }, + "minecraft:crafting": { + "protocol_id": 0 + }, + "minecraft:smelting": { + "protocol_id": 1 + }, + "minecraft:smithing": { + "protocol_id": 6 + }, + "minecraft:smoking": { + "protocol_id": 3 + }, + "minecraft:stonecutting": { + "protocol_id": 5 + } + }, + "protocol_id": 16 + }, + "minecraft:rule_block_entity_modifier": { + "entries": { + "minecraft:append_loot": { + "protocol_id": 3 + }, + "minecraft:append_static": { + "protocol_id": 2 + }, + "minecraft:clear": { + "protocol_id": 0 + }, + "minecraft:passthrough": { + "protocol_id": 1 + } + }, + "protocol_id": 13 + }, + "minecraft:rule_test": { + "entries": { + "minecraft:always_true": { + "protocol_id": 0 + }, + "minecraft:block_match": { + "protocol_id": 1 + }, + "minecraft:blockstate_match": { + "protocol_id": 2 + }, + "minecraft:random_block_match": { + "protocol_id": 4 + }, + "minecraft:random_blockstate_match": { + "protocol_id": 5 + }, + "minecraft:tag_match": { + "protocol_id": 3 + } + }, + "protocol_id": 12 + }, + "minecraft:schedule": { + "entries": { + "minecraft:empty": { + "protocol_id": 0 + }, + "minecraft:simple": { + "protocol_id": 1 + }, + "minecraft:villager_baby": { + "protocol_id": 2 + }, + "minecraft:villager_default": { + "protocol_id": 3 + } + }, + "protocol_id": 27 + }, + "minecraft:sensor_type": { + "default": "minecraft:dummy", + "entries": { + "minecraft:armadillo_scare_detected": { + "protocol_id": 10 + }, + "minecraft:armadillo_temptations": { + "protocol_id": 20 + }, + "minecraft:axolotl_attackables": { + "protocol_id": 15 + }, + "minecraft:axolotl_temptations": { + "protocol_id": 16 + }, + "minecraft:breeze_attack_entity_sensor": { + "protocol_id": 25 + }, + "minecraft:camel_temptations": { + "protocol_id": 19 + }, + "minecraft:dummy": { + "protocol_id": 0 + }, + "minecraft:frog_attackables": { + "protocol_id": 21 + }, + "minecraft:frog_temptations": { + "protocol_id": 18 + }, + "minecraft:goat_temptations": { + "protocol_id": 17 + }, + "minecraft:golem_detected": { + "protocol_id": 9 + }, + "minecraft:hoglin_specific_sensor": { + "protocol_id": 13 + }, + "minecraft:hurt_by": { + "protocol_id": 5 + }, + "minecraft:is_in_water": { + "protocol_id": 22 + }, + "minecraft:nearest_adult": { + "protocol_id": 14 + }, + "minecraft:nearest_bed": { + "protocol_id": 4 + }, + "minecraft:nearest_items": { + "protocol_id": 1 + }, + "minecraft:nearest_living_entities": { + "protocol_id": 2 + }, + "minecraft:nearest_players": { + "protocol_id": 3 + }, + "minecraft:piglin_brute_specific_sensor": { + "protocol_id": 12 + }, + "minecraft:piglin_specific_sensor": { + "protocol_id": 11 + }, + "minecraft:secondary_pois": { + "protocol_id": 8 + }, + "minecraft:sniffer_temptations": { + "protocol_id": 24 + }, + "minecraft:villager_babies": { + "protocol_id": 7 + }, + "minecraft:villager_hostiles": { + "protocol_id": 6 + }, + "minecraft:warden_entity_sensor": { + "protocol_id": 23 + } + }, + "protocol_id": 26 + }, + "minecraft:sound_event": { + "entries": { + "minecraft:ambient.basalt_deltas.additions": { + "protocol_id": 8 + }, + "minecraft:ambient.basalt_deltas.loop": { + "protocol_id": 9 + }, + "minecraft:ambient.basalt_deltas.mood": { + "protocol_id": 10 + }, + "minecraft:ambient.cave": { + "protocol_id": 7 + }, + "minecraft:ambient.crimson_forest.additions": { + "protocol_id": 11 + }, + "minecraft:ambient.crimson_forest.loop": { + "protocol_id": 12 + }, + "minecraft:ambient.crimson_forest.mood": { + "protocol_id": 13 + }, + "minecraft:ambient.nether_wastes.additions": { + "protocol_id": 14 + }, + "minecraft:ambient.nether_wastes.loop": { + "protocol_id": 15 + }, + "minecraft:ambient.nether_wastes.mood": { + "protocol_id": 16 + }, + "minecraft:ambient.soul_sand_valley.additions": { + "protocol_id": 17 + }, + "minecraft:ambient.soul_sand_valley.loop": { + "protocol_id": 18 + }, + "minecraft:ambient.soul_sand_valley.mood": { + "protocol_id": 19 + }, + "minecraft:ambient.underwater.enter": { + "protocol_id": 23 + }, + "minecraft:ambient.underwater.exit": { + "protocol_id": 24 + }, + "minecraft:ambient.underwater.loop": { + "protocol_id": 25 + }, + "minecraft:ambient.underwater.loop.additions": { + "protocol_id": 26 + }, + "minecraft:ambient.underwater.loop.additions.rare": { + "protocol_id": 27 + }, + "minecraft:ambient.underwater.loop.additions.ultra_rare": { + "protocol_id": 28 + }, + "minecraft:ambient.warped_forest.additions": { + "protocol_id": 20 + }, + "minecraft:ambient.warped_forest.loop": { + "protocol_id": 21 + }, + "minecraft:ambient.warped_forest.mood": { + "protocol_id": 22 + }, + "minecraft:block.amethyst_block.break": { + "protocol_id": 29 + }, + "minecraft:block.amethyst_block.chime": { + "protocol_id": 30 + }, + "minecraft:block.amethyst_block.fall": { + "protocol_id": 31 + }, + "minecraft:block.amethyst_block.hit": { + "protocol_id": 32 + }, + "minecraft:block.amethyst_block.place": { + "protocol_id": 33 + }, + "minecraft:block.amethyst_block.resonate": { + "protocol_id": 34 + }, + "minecraft:block.amethyst_block.step": { + "protocol_id": 35 + }, + "minecraft:block.amethyst_cluster.break": { + "protocol_id": 36 + }, + "minecraft:block.amethyst_cluster.fall": { + "protocol_id": 37 + }, + "minecraft:block.amethyst_cluster.hit": { + "protocol_id": 38 + }, + "minecraft:block.amethyst_cluster.place": { + "protocol_id": 39 + }, + "minecraft:block.amethyst_cluster.step": { + "protocol_id": 40 + }, + "minecraft:block.ancient_debris.break": { + "protocol_id": 41 + }, + "minecraft:block.ancient_debris.fall": { + "protocol_id": 45 + }, + "minecraft:block.ancient_debris.hit": { + "protocol_id": 44 + }, + "minecraft:block.ancient_debris.place": { + "protocol_id": 43 + }, + "minecraft:block.ancient_debris.step": { + "protocol_id": 42 + }, + "minecraft:block.anvil.break": { + "protocol_id": 46 + }, + "minecraft:block.anvil.destroy": { + "protocol_id": 47 + }, + "minecraft:block.anvil.fall": { + "protocol_id": 48 + }, + "minecraft:block.anvil.hit": { + "protocol_id": 49 + }, + "minecraft:block.anvil.land": { + "protocol_id": 50 + }, + "minecraft:block.anvil.place": { + "protocol_id": 51 + }, + "minecraft:block.anvil.step": { + "protocol_id": 52 + }, + "minecraft:block.anvil.use": { + "protocol_id": 53 + }, + "minecraft:block.azalea.break": { + "protocol_id": 95 + }, + "minecraft:block.azalea.fall": { + "protocol_id": 96 + }, + "minecraft:block.azalea.hit": { + "protocol_id": 97 + }, + "minecraft:block.azalea.place": { + "protocol_id": 98 + }, + "minecraft:block.azalea.step": { + "protocol_id": 99 + }, + "minecraft:block.azalea_leaves.break": { + "protocol_id": 100 + }, + "minecraft:block.azalea_leaves.fall": { + "protocol_id": 101 + }, + "minecraft:block.azalea_leaves.hit": { + "protocol_id": 102 + }, + "minecraft:block.azalea_leaves.place": { + "protocol_id": 103 + }, + "minecraft:block.azalea_leaves.step": { + "protocol_id": 104 + }, + "minecraft:block.bamboo.break": { + "protocol_id": 105 + }, + "minecraft:block.bamboo.fall": { + "protocol_id": 106 + }, + "minecraft:block.bamboo.hit": { + "protocol_id": 107 + }, + "minecraft:block.bamboo.place": { + "protocol_id": 108 + }, + "minecraft:block.bamboo.step": { + "protocol_id": 109 + }, + "minecraft:block.bamboo_sapling.break": { + "protocol_id": 110 + }, + "minecraft:block.bamboo_sapling.hit": { + "protocol_id": 111 + }, + "minecraft:block.bamboo_sapling.place": { + "protocol_id": 112 + }, + "minecraft:block.bamboo_wood.break": { + "protocol_id": 113 + }, + "minecraft:block.bamboo_wood.fall": { + "protocol_id": 114 + }, + "minecraft:block.bamboo_wood.hit": { + "protocol_id": 115 + }, + "minecraft:block.bamboo_wood.place": { + "protocol_id": 116 + }, + "minecraft:block.bamboo_wood.step": { + "protocol_id": 117 + }, + "minecraft:block.bamboo_wood_button.click_off": { + "protocol_id": 122 + }, + "minecraft:block.bamboo_wood_button.click_on": { + "protocol_id": 123 + }, + "minecraft:block.bamboo_wood_door.close": { + "protocol_id": 118 + }, + "minecraft:block.bamboo_wood_door.open": { + "protocol_id": 119 + }, + "minecraft:block.bamboo_wood_fence_gate.close": { + "protocol_id": 126 + }, + "minecraft:block.bamboo_wood_fence_gate.open": { + "protocol_id": 127 + }, + "minecraft:block.bamboo_wood_hanging_sign.break": { + "protocol_id": 669 + }, + "minecraft:block.bamboo_wood_hanging_sign.fall": { + "protocol_id": 670 + }, + "minecraft:block.bamboo_wood_hanging_sign.hit": { + "protocol_id": 671 + }, + "minecraft:block.bamboo_wood_hanging_sign.place": { + "protocol_id": 672 + }, + "minecraft:block.bamboo_wood_hanging_sign.step": { + "protocol_id": 668 + }, + "minecraft:block.bamboo_wood_pressure_plate.click_off": { + "protocol_id": 124 + }, + "minecraft:block.bamboo_wood_pressure_plate.click_on": { + "protocol_id": 125 + }, + "minecraft:block.bamboo_wood_trapdoor.close": { + "protocol_id": 120 + }, + "minecraft:block.bamboo_wood_trapdoor.open": { + "protocol_id": 121 + }, + "minecraft:block.barrel.close": { + "protocol_id": 128 + }, + "minecraft:block.barrel.open": { + "protocol_id": 129 + }, + "minecraft:block.basalt.break": { + "protocol_id": 130 + }, + "minecraft:block.basalt.fall": { + "protocol_id": 134 + }, + "minecraft:block.basalt.hit": { + "protocol_id": 133 + }, + "minecraft:block.basalt.place": { + "protocol_id": 132 + }, + "minecraft:block.basalt.step": { + "protocol_id": 131 + }, + "minecraft:block.beacon.activate": { + "protocol_id": 140 + }, + "minecraft:block.beacon.ambient": { + "protocol_id": 141 + }, + "minecraft:block.beacon.deactivate": { + "protocol_id": 142 + }, + "minecraft:block.beacon.power_select": { + "protocol_id": 143 + }, + "minecraft:block.beehive.drip": { + "protocol_id": 150 + }, + "minecraft:block.beehive.enter": { + "protocol_id": 151 + }, + "minecraft:block.beehive.exit": { + "protocol_id": 152 + }, + "minecraft:block.beehive.shear": { + "protocol_id": 153 + }, + "minecraft:block.beehive.work": { + "protocol_id": 154 + }, + "minecraft:block.bell.resonate": { + "protocol_id": 156 + }, + "minecraft:block.bell.use": { + "protocol_id": 155 + }, + "minecraft:block.big_dripleaf.break": { + "protocol_id": 157 + }, + "minecraft:block.big_dripleaf.fall": { + "protocol_id": 158 + }, + "minecraft:block.big_dripleaf.hit": { + "protocol_id": 159 + }, + "minecraft:block.big_dripleaf.place": { + "protocol_id": 160 + }, + "minecraft:block.big_dripleaf.step": { + "protocol_id": 161 + }, + "minecraft:block.big_dripleaf.tilt_down": { + "protocol_id": 443 + }, + "minecraft:block.big_dripleaf.tilt_up": { + "protocol_id": 444 + }, + "minecraft:block.blastfurnace.fire_crackle": { + "protocol_id": 182 + }, + "minecraft:block.bone_block.break": { + "protocol_id": 174 + }, + "minecraft:block.bone_block.fall": { + "protocol_id": 175 + }, + "minecraft:block.bone_block.hit": { + "protocol_id": 176 + }, + "minecraft:block.bone_block.place": { + "protocol_id": 177 + }, + "minecraft:block.bone_block.step": { + "protocol_id": 178 + }, + "minecraft:block.brewing_stand.brew": { + "protocol_id": 199 + }, + "minecraft:block.bubble_column.bubble_pop": { + "protocol_id": 205 + }, + "minecraft:block.bubble_column.upwards_ambient": { + "protocol_id": 206 + }, + "minecraft:block.bubble_column.upwards_inside": { + "protocol_id": 207 + }, + "minecraft:block.bubble_column.whirlpool_ambient": { + "protocol_id": 208 + }, + "minecraft:block.bubble_column.whirlpool_inside": { + "protocol_id": 209 + }, + "minecraft:block.cake.add_candle": { + "protocol_id": 225 + }, + "minecraft:block.calcite.break": { + "protocol_id": 226 + }, + "minecraft:block.calcite.fall": { + "protocol_id": 230 + }, + "minecraft:block.calcite.hit": { + "protocol_id": 229 + }, + "minecraft:block.calcite.place": { + "protocol_id": 228 + }, + "minecraft:block.calcite.step": { + "protocol_id": 227 + }, + "minecraft:block.campfire.crackle": { + "protocol_id": 242 + }, + "minecraft:block.candle.ambient": { + "protocol_id": 243 + }, + "minecraft:block.candle.break": { + "protocol_id": 244 + }, + "minecraft:block.candle.extinguish": { + "protocol_id": 245 + }, + "minecraft:block.candle.fall": { + "protocol_id": 246 + }, + "minecraft:block.candle.hit": { + "protocol_id": 247 + }, + "minecraft:block.candle.place": { + "protocol_id": 248 + }, + "minecraft:block.candle.step": { + "protocol_id": 249 + }, + "minecraft:block.cave_vines.break": { + "protocol_id": 259 + }, + "minecraft:block.cave_vines.fall": { + "protocol_id": 260 + }, + "minecraft:block.cave_vines.hit": { + "protocol_id": 261 + }, + "minecraft:block.cave_vines.pick_berries": { + "protocol_id": 264 + }, + "minecraft:block.cave_vines.place": { + "protocol_id": 262 + }, + "minecraft:block.cave_vines.step": { + "protocol_id": 263 + }, + "minecraft:block.chain.break": { + "protocol_id": 265 + }, + "minecraft:block.chain.fall": { + "protocol_id": 266 + }, + "minecraft:block.chain.hit": { + "protocol_id": 267 + }, + "minecraft:block.chain.place": { + "protocol_id": 268 + }, + "minecraft:block.chain.step": { + "protocol_id": 269 + }, + "minecraft:block.cherry_leaves.break": { + "protocol_id": 280 + }, + "minecraft:block.cherry_leaves.fall": { + "protocol_id": 281 + }, + "minecraft:block.cherry_leaves.hit": { + "protocol_id": 282 + }, + "minecraft:block.cherry_leaves.place": { + "protocol_id": 283 + }, + "minecraft:block.cherry_leaves.step": { + "protocol_id": 284 + }, + "minecraft:block.cherry_sapling.break": { + "protocol_id": 275 + }, + "minecraft:block.cherry_sapling.fall": { + "protocol_id": 276 + }, + "minecraft:block.cherry_sapling.hit": { + "protocol_id": 277 + }, + "minecraft:block.cherry_sapling.place": { + "protocol_id": 278 + }, + "minecraft:block.cherry_sapling.step": { + "protocol_id": 279 + }, + "minecraft:block.cherry_wood.break": { + "protocol_id": 270 + }, + "minecraft:block.cherry_wood.fall": { + "protocol_id": 271 + }, + "minecraft:block.cherry_wood.hit": { + "protocol_id": 272 + }, + "minecraft:block.cherry_wood.place": { + "protocol_id": 273 + }, + "minecraft:block.cherry_wood.step": { + "protocol_id": 274 + }, + "minecraft:block.cherry_wood_button.click_off": { + "protocol_id": 294 + }, + "minecraft:block.cherry_wood_button.click_on": { + "protocol_id": 295 + }, + "minecraft:block.cherry_wood_door.close": { + "protocol_id": 290 + }, + "minecraft:block.cherry_wood_door.open": { + "protocol_id": 291 + }, + "minecraft:block.cherry_wood_fence_gate.close": { + "protocol_id": 298 + }, + "minecraft:block.cherry_wood_fence_gate.open": { + "protocol_id": 299 + }, + "minecraft:block.cherry_wood_hanging_sign.break": { + "protocol_id": 286 + }, + "minecraft:block.cherry_wood_hanging_sign.fall": { + "protocol_id": 287 + }, + "minecraft:block.cherry_wood_hanging_sign.hit": { + "protocol_id": 288 + }, + "minecraft:block.cherry_wood_hanging_sign.place": { + "protocol_id": 289 + }, + "minecraft:block.cherry_wood_hanging_sign.step": { + "protocol_id": 285 + }, + "minecraft:block.cherry_wood_pressure_plate.click_off": { + "protocol_id": 296 + }, + "minecraft:block.cherry_wood_pressure_plate.click_on": { + "protocol_id": 297 + }, + "minecraft:block.cherry_wood_trapdoor.close": { + "protocol_id": 292 + }, + "minecraft:block.cherry_wood_trapdoor.open": { + "protocol_id": 293 + }, + "minecraft:block.chest.close": { + "protocol_id": 300 + }, + "minecraft:block.chest.locked": { + "protocol_id": 301 + }, + "minecraft:block.chest.open": { + "protocol_id": 302 + }, + "minecraft:block.chiseled_bookshelf.break": { + "protocol_id": 308 + }, + "minecraft:block.chiseled_bookshelf.fall": { + "protocol_id": 309 + }, + "minecraft:block.chiseled_bookshelf.hit": { + "protocol_id": 310 + }, + "minecraft:block.chiseled_bookshelf.insert": { + "protocol_id": 311 + }, + "minecraft:block.chiseled_bookshelf.insert.enchanted": { + "protocol_id": 312 + }, + "minecraft:block.chiseled_bookshelf.pickup": { + "protocol_id": 314 + }, + "minecraft:block.chiseled_bookshelf.pickup.enchanted": { + "protocol_id": 315 + }, + "minecraft:block.chiseled_bookshelf.place": { + "protocol_id": 316 + }, + "minecraft:block.chiseled_bookshelf.step": { + "protocol_id": 313 + }, + "minecraft:block.chorus_flower.death": { + "protocol_id": 317 + }, + "minecraft:block.chorus_flower.grow": { + "protocol_id": 318 + }, + "minecraft:block.cobweb.break": { + "protocol_id": 320 + }, + "minecraft:block.cobweb.fall": { + "protocol_id": 324 + }, + "minecraft:block.cobweb.hit": { + "protocol_id": 323 + }, + "minecraft:block.cobweb.place": { + "protocol_id": 322 + }, + "minecraft:block.cobweb.step": { + "protocol_id": 321 + }, + "minecraft:block.comparator.click": { + "protocol_id": 329 + }, + "minecraft:block.composter.empty": { + "protocol_id": 330 + }, + "minecraft:block.composter.fill": { + "protocol_id": 331 + }, + "minecraft:block.composter.fill_success": { + "protocol_id": 332 + }, + "minecraft:block.composter.ready": { + "protocol_id": 333 + }, + "minecraft:block.conduit.activate": { + "protocol_id": 334 + }, + "minecraft:block.conduit.ambient": { + "protocol_id": 335 + }, + "minecraft:block.conduit.ambient.short": { + "protocol_id": 336 + }, + "minecraft:block.conduit.attack.target": { + "protocol_id": 337 + }, + "minecraft:block.conduit.deactivate": { + "protocol_id": 338 + }, + "minecraft:block.copper.break": { + "protocol_id": 346 + }, + "minecraft:block.copper.fall": { + "protocol_id": 350 + }, + "minecraft:block.copper.hit": { + "protocol_id": 349 + }, + "minecraft:block.copper.place": { + "protocol_id": 348 + }, + "minecraft:block.copper.step": { + "protocol_id": 347 + }, + "minecraft:block.copper_bulb.break": { + "protocol_id": 339 + }, + "minecraft:block.copper_bulb.fall": { + "protocol_id": 343 + }, + "minecraft:block.copper_bulb.hit": { + "protocol_id": 342 + }, + "minecraft:block.copper_bulb.place": { + "protocol_id": 341 + }, + "minecraft:block.copper_bulb.step": { + "protocol_id": 340 + }, + "minecraft:block.copper_bulb.turn_off": { + "protocol_id": 345 + }, + "minecraft:block.copper_bulb.turn_on": { + "protocol_id": 344 + }, + "minecraft:block.copper_door.close": { + "protocol_id": 351 + }, + "minecraft:block.copper_door.open": { + "protocol_id": 352 + }, + "minecraft:block.copper_grate.break": { + "protocol_id": 353 + }, + "minecraft:block.copper_grate.fall": { + "protocol_id": 357 + }, + "minecraft:block.copper_grate.hit": { + "protocol_id": 356 + }, + "minecraft:block.copper_grate.place": { + "protocol_id": 355 + }, + "minecraft:block.copper_grate.step": { + "protocol_id": 354 + }, + "minecraft:block.copper_trapdoor.close": { + "protocol_id": 358 + }, + "minecraft:block.copper_trapdoor.open": { + "protocol_id": 359 + }, + "minecraft:block.coral_block.break": { + "protocol_id": 360 + }, + "minecraft:block.coral_block.fall": { + "protocol_id": 361 + }, + "minecraft:block.coral_block.hit": { + "protocol_id": 362 + }, + "minecraft:block.coral_block.place": { + "protocol_id": 363 + }, + "minecraft:block.coral_block.step": { + "protocol_id": 364 + }, + "minecraft:block.crafter.craft": { + "protocol_id": 370 + }, + "minecraft:block.crafter.fail": { + "protocol_id": 371 + }, + "minecraft:block.crop.break": { + "protocol_id": 375 + }, + "minecraft:block.decorated_pot.break": { + "protocol_id": 385 + }, + "minecraft:block.decorated_pot.fall": { + "protocol_id": 386 + }, + "minecraft:block.decorated_pot.hit": { + "protocol_id": 387 + }, + "minecraft:block.decorated_pot.insert": { + "protocol_id": 388 + }, + "minecraft:block.decorated_pot.insert_fail": { + "protocol_id": 389 + }, + "minecraft:block.decorated_pot.place": { + "protocol_id": 391 + }, + "minecraft:block.decorated_pot.shatter": { + "protocol_id": 392 + }, + "minecraft:block.decorated_pot.step": { + "protocol_id": 390 + }, + "minecraft:block.deepslate.break": { + "protocol_id": 398 + }, + "minecraft:block.deepslate.fall": { + "protocol_id": 399 + }, + "minecraft:block.deepslate.hit": { + "protocol_id": 400 + }, + "minecraft:block.deepslate.place": { + "protocol_id": 401 + }, + "minecraft:block.deepslate.step": { + "protocol_id": 402 + }, + "minecraft:block.deepslate_bricks.break": { + "protocol_id": 393 + }, + "minecraft:block.deepslate_bricks.fall": { + "protocol_id": 394 + }, + "minecraft:block.deepslate_bricks.hit": { + "protocol_id": 395 + }, + "minecraft:block.deepslate_bricks.place": { + "protocol_id": 396 + }, + "minecraft:block.deepslate_bricks.step": { + "protocol_id": 397 + }, + "minecraft:block.deepslate_tiles.break": { + "protocol_id": 403 + }, + "minecraft:block.deepslate_tiles.fall": { + "protocol_id": 404 + }, + "minecraft:block.deepslate_tiles.hit": { + "protocol_id": 405 + }, + "minecraft:block.deepslate_tiles.place": { + "protocol_id": 406 + }, + "minecraft:block.deepslate_tiles.step": { + "protocol_id": 407 + }, + "minecraft:block.dispenser.dispense": { + "protocol_id": 408 + }, + "minecraft:block.dispenser.fail": { + "protocol_id": 409 + }, + "minecraft:block.dispenser.launch": { + "protocol_id": 410 + }, + "minecraft:block.dripstone_block.break": { + "protocol_id": 428 + }, + "minecraft:block.dripstone_block.fall": { + "protocol_id": 432 + }, + "minecraft:block.dripstone_block.hit": { + "protocol_id": 431 + }, + "minecraft:block.dripstone_block.place": { + "protocol_id": 430 + }, + "minecraft:block.dripstone_block.step": { + "protocol_id": 429 + }, + "minecraft:block.enchantment_table.use": { + "protocol_id": 465 + }, + "minecraft:block.end_gateway.spawn": { + "protocol_id": 488 + }, + "minecraft:block.end_portal.spawn": { + "protocol_id": 490 + }, + "minecraft:block.end_portal_frame.fill": { + "protocol_id": 489 + }, + "minecraft:block.ender_chest.close": { + "protocol_id": 466 + }, + "minecraft:block.ender_chest.open": { + "protocol_id": 467 + }, + "minecraft:block.fence_gate.close": { + "protocol_id": 502 + }, + "minecraft:block.fence_gate.open": { + "protocol_id": 503 + }, + "minecraft:block.fire.ambient": { + "protocol_id": 513 + }, + "minecraft:block.fire.extinguish": { + "protocol_id": 514 + }, + "minecraft:block.flowering_azalea.break": { + "protocol_id": 520 + }, + "minecraft:block.flowering_azalea.fall": { + "protocol_id": 521 + }, + "minecraft:block.flowering_azalea.hit": { + "protocol_id": 522 + }, + "minecraft:block.flowering_azalea.place": { + "protocol_id": 523 + }, + "minecraft:block.flowering_azalea.step": { + "protocol_id": 524 + }, + "minecraft:block.froglight.break": { + "protocol_id": 546 + }, + "minecraft:block.froglight.fall": { + "protocol_id": 547 + }, + "minecraft:block.froglight.hit": { + "protocol_id": 548 + }, + "minecraft:block.froglight.place": { + "protocol_id": 549 + }, + "minecraft:block.froglight.step": { + "protocol_id": 550 + }, + "minecraft:block.frogspawn.break": { + "protocol_id": 552 + }, + "minecraft:block.frogspawn.fall": { + "protocol_id": 553 + }, + "minecraft:block.frogspawn.hatch": { + "protocol_id": 554 + }, + "minecraft:block.frogspawn.hit": { + "protocol_id": 555 + }, + "minecraft:block.frogspawn.place": { + "protocol_id": 556 + }, + "minecraft:block.frogspawn.step": { + "protocol_id": 551 + }, + "minecraft:block.fungus.break": { + "protocol_id": 961 + }, + "minecraft:block.fungus.fall": { + "protocol_id": 965 + }, + "minecraft:block.fungus.hit": { + "protocol_id": 964 + }, + "minecraft:block.fungus.place": { + "protocol_id": 963 + }, + "minecraft:block.fungus.step": { + "protocol_id": 962 + }, + "minecraft:block.furnace.fire_crackle": { + "protocol_id": 570 + }, + "minecraft:block.gilded_blackstone.break": { + "protocol_id": 588 + }, + "minecraft:block.gilded_blackstone.fall": { + "protocol_id": 589 + }, + "minecraft:block.gilded_blackstone.hit": { + "protocol_id": 590 + }, + "minecraft:block.gilded_blackstone.place": { + "protocol_id": 591 + }, + "minecraft:block.gilded_blackstone.step": { + "protocol_id": 592 + }, + "minecraft:block.glass.break": { + "protocol_id": 593 + }, + "minecraft:block.glass.fall": { + "protocol_id": 594 + }, + "minecraft:block.glass.hit": { + "protocol_id": 595 + }, + "minecraft:block.glass.place": { + "protocol_id": 596 + }, + "minecraft:block.glass.step": { + "protocol_id": 597 + }, + "minecraft:block.grass.break": { + "protocol_id": 628 + }, + "minecraft:block.grass.fall": { + "protocol_id": 629 + }, + "minecraft:block.grass.hit": { + "protocol_id": 630 + }, + "minecraft:block.grass.place": { + "protocol_id": 631 + }, + "minecraft:block.grass.step": { + "protocol_id": 632 + }, + "minecraft:block.gravel.break": { + "protocol_id": 633 + }, + "minecraft:block.gravel.fall": { + "protocol_id": 634 + }, + "minecraft:block.gravel.hit": { + "protocol_id": 635 + }, + "minecraft:block.gravel.place": { + "protocol_id": 636 + }, + "minecraft:block.gravel.step": { + "protocol_id": 637 + }, + "minecraft:block.grindstone.use": { + "protocol_id": 638 + }, + "minecraft:block.growing_plant.crop": { + "protocol_id": 639 + }, + "minecraft:block.hanging_roots.break": { + "protocol_id": 648 + }, + "minecraft:block.hanging_roots.fall": { + "protocol_id": 649 + }, + "minecraft:block.hanging_roots.hit": { + "protocol_id": 650 + }, + "minecraft:block.hanging_roots.place": { + "protocol_id": 651 + }, + "minecraft:block.hanging_roots.step": { + "protocol_id": 652 + }, + "minecraft:block.hanging_sign.break": { + "protocol_id": 654 + }, + "minecraft:block.hanging_sign.fall": { + "protocol_id": 655 + }, + "minecraft:block.hanging_sign.hit": { + "protocol_id": 656 + }, + "minecraft:block.hanging_sign.place": { + "protocol_id": 657 + }, + "minecraft:block.hanging_sign.step": { + "protocol_id": 653 + }, + "minecraft:block.hanging_sign.waxed_interact_fail": { + "protocol_id": 1514 + }, + "minecraft:block.heavy_core.break": { + "protocol_id": 658 + }, + "minecraft:block.heavy_core.fall": { + "protocol_id": 659 + }, + "minecraft:block.heavy_core.hit": { + "protocol_id": 660 + }, + "minecraft:block.heavy_core.place": { + "protocol_id": 661 + }, + "minecraft:block.heavy_core.step": { + "protocol_id": 662 + }, + "minecraft:block.honey_block.break": { + "protocol_id": 698 + }, + "minecraft:block.honey_block.fall": { + "protocol_id": 699 + }, + "minecraft:block.honey_block.hit": { + "protocol_id": 700 + }, + "minecraft:block.honey_block.place": { + "protocol_id": 701 + }, + "minecraft:block.honey_block.slide": { + "protocol_id": 702 + }, + "minecraft:block.honey_block.step": { + "protocol_id": 703 + }, + "minecraft:block.iron_door.close": { + "protocol_id": 746 + }, + "minecraft:block.iron_door.open": { + "protocol_id": 747 + }, + "minecraft:block.iron_trapdoor.close": { + "protocol_id": 754 + }, + "minecraft:block.iron_trapdoor.open": { + "protocol_id": 755 + }, + "minecraft:block.ladder.break": { + "protocol_id": 763 + }, + "minecraft:block.ladder.fall": { + "protocol_id": 764 + }, + "minecraft:block.ladder.hit": { + "protocol_id": 765 + }, + "minecraft:block.ladder.place": { + "protocol_id": 766 + }, + "minecraft:block.ladder.step": { + "protocol_id": 767 + }, + "minecraft:block.lantern.break": { + "protocol_id": 768 + }, + "minecraft:block.lantern.fall": { + "protocol_id": 769 + }, + "minecraft:block.lantern.hit": { + "protocol_id": 770 + }, + "minecraft:block.lantern.place": { + "protocol_id": 771 + }, + "minecraft:block.lantern.step": { + "protocol_id": 772 + }, + "minecraft:block.large_amethyst_bud.break": { + "protocol_id": 773 + }, + "minecraft:block.large_amethyst_bud.place": { + "protocol_id": 774 + }, + "minecraft:block.lava.ambient": { + "protocol_id": 775 + }, + "minecraft:block.lava.extinguish": { + "protocol_id": 776 + }, + "minecraft:block.lava.pop": { + "protocol_id": 777 + }, + "minecraft:block.lever.click": { + "protocol_id": 780 + }, + "minecraft:block.lily_pad.place": { + "protocol_id": 1483 + }, + "minecraft:block.lodestone.break": { + "protocol_id": 794 + }, + "minecraft:block.lodestone.fall": { + "protocol_id": 798 + }, + "minecraft:block.lodestone.hit": { + "protocol_id": 797 + }, + "minecraft:block.lodestone.place": { + "protocol_id": 796 + }, + "minecraft:block.lodestone.step": { + "protocol_id": 795 + }, + "minecraft:block.mangrove_roots.break": { + "protocol_id": 809 + }, + "minecraft:block.mangrove_roots.fall": { + "protocol_id": 810 + }, + "minecraft:block.mangrove_roots.hit": { + "protocol_id": 811 + }, + "minecraft:block.mangrove_roots.place": { + "protocol_id": 812 + }, + "minecraft:block.mangrove_roots.step": { + "protocol_id": 813 + }, + "minecraft:block.medium_amethyst_bud.break": { + "protocol_id": 814 + }, + "minecraft:block.medium_amethyst_bud.place": { + "protocol_id": 815 + }, + "minecraft:block.metal.break": { + "protocol_id": 816 + }, + "minecraft:block.metal.fall": { + "protocol_id": 817 + }, + "minecraft:block.metal.hit": { + "protocol_id": 818 + }, + "minecraft:block.metal.place": { + "protocol_id": 819 + }, + "minecraft:block.metal.step": { + "protocol_id": 822 + }, + "minecraft:block.metal_pressure_plate.click_off": { + "protocol_id": 820 + }, + "minecraft:block.metal_pressure_plate.click_on": { + "protocol_id": 821 + }, + "minecraft:block.moss.break": { + "protocol_id": 841 + }, + "minecraft:block.moss.fall": { + "protocol_id": 842 + }, + "minecraft:block.moss.hit": { + "protocol_id": 843 + }, + "minecraft:block.moss.place": { + "protocol_id": 844 + }, + "minecraft:block.moss.step": { + "protocol_id": 845 + }, + "minecraft:block.moss_carpet.break": { + "protocol_id": 831 + }, + "minecraft:block.moss_carpet.fall": { + "protocol_id": 832 + }, + "minecraft:block.moss_carpet.hit": { + "protocol_id": 833 + }, + "minecraft:block.moss_carpet.place": { + "protocol_id": 834 + }, + "minecraft:block.moss_carpet.step": { + "protocol_id": 835 + }, + "minecraft:block.mud.break": { + "protocol_id": 846 + }, + "minecraft:block.mud.fall": { + "protocol_id": 847 + }, + "minecraft:block.mud.hit": { + "protocol_id": 848 + }, + "minecraft:block.mud.place": { + "protocol_id": 849 + }, + "minecraft:block.mud.step": { + "protocol_id": 850 + }, + "minecraft:block.mud_bricks.break": { + "protocol_id": 851 + }, + "minecraft:block.mud_bricks.fall": { + "protocol_id": 852 + }, + "minecraft:block.mud_bricks.hit": { + "protocol_id": 853 + }, + "minecraft:block.mud_bricks.place": { + "protocol_id": 854 + }, + "minecraft:block.mud_bricks.step": { + "protocol_id": 855 + }, + "minecraft:block.muddy_mangrove_roots.break": { + "protocol_id": 856 + }, + "minecraft:block.muddy_mangrove_roots.fall": { + "protocol_id": 857 + }, + "minecraft:block.muddy_mangrove_roots.hit": { + "protocol_id": 858 + }, + "minecraft:block.muddy_mangrove_roots.place": { + "protocol_id": 859 + }, + "minecraft:block.muddy_mangrove_roots.step": { + "protocol_id": 860 + }, + "minecraft:block.nether_bricks.break": { + "protocol_id": 918 + }, + "minecraft:block.nether_bricks.fall": { + "protocol_id": 922 + }, + "minecraft:block.nether_bricks.hit": { + "protocol_id": 921 + }, + "minecraft:block.nether_bricks.place": { + "protocol_id": 920 + }, + "minecraft:block.nether_bricks.step": { + "protocol_id": 919 + }, + "minecraft:block.nether_gold_ore.break": { + "protocol_id": 1161 + }, + "minecraft:block.nether_gold_ore.fall": { + "protocol_id": 1162 + }, + "minecraft:block.nether_gold_ore.hit": { + "protocol_id": 1163 + }, + "minecraft:block.nether_gold_ore.place": { + "protocol_id": 1164 + }, + "minecraft:block.nether_gold_ore.step": { + "protocol_id": 1165 + }, + "minecraft:block.nether_ore.break": { + "protocol_id": 1166 + }, + "minecraft:block.nether_ore.fall": { + "protocol_id": 1167 + }, + "minecraft:block.nether_ore.hit": { + "protocol_id": 1168 + }, + "minecraft:block.nether_ore.place": { + "protocol_id": 1169 + }, + "minecraft:block.nether_ore.step": { + "protocol_id": 1170 + }, + "minecraft:block.nether_sprouts.break": { + "protocol_id": 956 + }, + "minecraft:block.nether_sprouts.fall": { + "protocol_id": 960 + }, + "minecraft:block.nether_sprouts.hit": { + "protocol_id": 959 + }, + "minecraft:block.nether_sprouts.place": { + "protocol_id": 958 + }, + "minecraft:block.nether_sprouts.step": { + "protocol_id": 957 + }, + "minecraft:block.nether_wart.break": { + "protocol_id": 923 + }, + "minecraft:block.nether_wood.break": { + "protocol_id": 925 + }, + "minecraft:block.nether_wood.fall": { + "protocol_id": 926 + }, + "minecraft:block.nether_wood.hit": { + "protocol_id": 927 + }, + "minecraft:block.nether_wood.place": { + "protocol_id": 928 + }, + "minecraft:block.nether_wood.step": { + "protocol_id": 929 + }, + "minecraft:block.nether_wood_button.click_off": { + "protocol_id": 934 + }, + "minecraft:block.nether_wood_button.click_on": { + "protocol_id": 935 + }, + "minecraft:block.nether_wood_door.close": { + "protocol_id": 930 + }, + "minecraft:block.nether_wood_door.open": { + "protocol_id": 931 + }, + "minecraft:block.nether_wood_fence_gate.close": { + "protocol_id": 938 + }, + "minecraft:block.nether_wood_fence_gate.open": { + "protocol_id": 939 + }, + "minecraft:block.nether_wood_hanging_sign.break": { + "protocol_id": 664 + }, + "minecraft:block.nether_wood_hanging_sign.fall": { + "protocol_id": 665 + }, + "minecraft:block.nether_wood_hanging_sign.hit": { + "protocol_id": 666 + }, + "minecraft:block.nether_wood_hanging_sign.place": { + "protocol_id": 667 + }, + "minecraft:block.nether_wood_hanging_sign.step": { + "protocol_id": 663 + }, + "minecraft:block.nether_wood_pressure_plate.click_off": { + "protocol_id": 936 + }, + "minecraft:block.nether_wood_pressure_plate.click_on": { + "protocol_id": 937 + }, + "minecraft:block.nether_wood_trapdoor.close": { + "protocol_id": 932 + }, + "minecraft:block.nether_wood_trapdoor.open": { + "protocol_id": 933 + }, + "minecraft:block.netherite_block.break": { + "protocol_id": 976 + }, + "minecraft:block.netherite_block.fall": { + "protocol_id": 980 + }, + "minecraft:block.netherite_block.hit": { + "protocol_id": 979 + }, + "minecraft:block.netherite_block.place": { + "protocol_id": 978 + }, + "minecraft:block.netherite_block.step": { + "protocol_id": 977 + }, + "minecraft:block.netherrack.break": { + "protocol_id": 981 + }, + "minecraft:block.netherrack.fall": { + "protocol_id": 985 + }, + "minecraft:block.netherrack.hit": { + "protocol_id": 984 + }, + "minecraft:block.netherrack.place": { + "protocol_id": 983 + }, + "minecraft:block.netherrack.step": { + "protocol_id": 982 + }, + "minecraft:block.note_block.banjo": { + "protocol_id": 1001 + }, + "minecraft:block.note_block.basedrum": { + "protocol_id": 986 + }, + "minecraft:block.note_block.bass": { + "protocol_id": 987 + }, + "minecraft:block.note_block.bell": { + "protocol_id": 988 + }, + "minecraft:block.note_block.bit": { + "protocol_id": 1000 + }, + "minecraft:block.note_block.chime": { + "protocol_id": 989 + }, + "minecraft:block.note_block.cow_bell": { + "protocol_id": 998 + }, + "minecraft:block.note_block.didgeridoo": { + "protocol_id": 999 + }, + "minecraft:block.note_block.flute": { + "protocol_id": 990 + }, + "minecraft:block.note_block.guitar": { + "protocol_id": 991 + }, + "minecraft:block.note_block.harp": { + "protocol_id": 992 + }, + "minecraft:block.note_block.hat": { + "protocol_id": 993 + }, + "minecraft:block.note_block.imitate.creeper": { + "protocol_id": 1004 + }, + "minecraft:block.note_block.imitate.ender_dragon": { + "protocol_id": 1005 + }, + "minecraft:block.note_block.imitate.piglin": { + "protocol_id": 1007 + }, + "minecraft:block.note_block.imitate.skeleton": { + "protocol_id": 1003 + }, + "minecraft:block.note_block.imitate.wither_skeleton": { + "protocol_id": 1006 + }, + "minecraft:block.note_block.imitate.zombie": { + "protocol_id": 1002 + }, + "minecraft:block.note_block.iron_xylophone": { + "protocol_id": 997 + }, + "minecraft:block.note_block.pling": { + "protocol_id": 994 + }, + "minecraft:block.note_block.snare": { + "protocol_id": 995 + }, + "minecraft:block.note_block.xylophone": { + "protocol_id": 996 + }, + "minecraft:block.nylium.break": { + "protocol_id": 951 + }, + "minecraft:block.nylium.fall": { + "protocol_id": 955 + }, + "minecraft:block.nylium.hit": { + "protocol_id": 954 + }, + "minecraft:block.nylium.place": { + "protocol_id": 953 + }, + "minecraft:block.nylium.step": { + "protocol_id": 952 + }, + "minecraft:block.packed_mud.break": { + "protocol_id": 941 + }, + "minecraft:block.packed_mud.fall": { + "protocol_id": 942 + }, + "minecraft:block.packed_mud.hit": { + "protocol_id": 943 + }, + "minecraft:block.packed_mud.place": { + "protocol_id": 944 + }, + "minecraft:block.packed_mud.step": { + "protocol_id": 945 + }, + "minecraft:block.pink_petals.break": { + "protocol_id": 836 + }, + "minecraft:block.pink_petals.fall": { + "protocol_id": 837 + }, + "minecraft:block.pink_petals.hit": { + "protocol_id": 838 + }, + "minecraft:block.pink_petals.place": { + "protocol_id": 839 + }, + "minecraft:block.pink_petals.step": { + "protocol_id": 840 + }, + "minecraft:block.piston.contract": { + "protocol_id": 1097 + }, + "minecraft:block.piston.extend": { + "protocol_id": 1098 + }, + "minecraft:block.pointed_dripstone.break": { + "protocol_id": 433 + }, + "minecraft:block.pointed_dripstone.drip_lava": { + "protocol_id": 439 + }, + "minecraft:block.pointed_dripstone.drip_lava_into_cauldron": { + "protocol_id": 441 + }, + "minecraft:block.pointed_dripstone.drip_water": { + "protocol_id": 440 + }, + "minecraft:block.pointed_dripstone.drip_water_into_cauldron": { + "protocol_id": 442 + }, + "minecraft:block.pointed_dripstone.fall": { + "protocol_id": 437 + }, + "minecraft:block.pointed_dripstone.hit": { + "protocol_id": 436 + }, + "minecraft:block.pointed_dripstone.land": { + "protocol_id": 438 + }, + "minecraft:block.pointed_dripstone.place": { + "protocol_id": 435 + }, + "minecraft:block.pointed_dripstone.step": { + "protocol_id": 434 + }, + "minecraft:block.polished_deepslate.break": { + "protocol_id": 1126 + }, + "minecraft:block.polished_deepslate.fall": { + "protocol_id": 1127 + }, + "minecraft:block.polished_deepslate.hit": { + "protocol_id": 1128 + }, + "minecraft:block.polished_deepslate.place": { + "protocol_id": 1129 + }, + "minecraft:block.polished_deepslate.step": { + "protocol_id": 1130 + }, + "minecraft:block.polished_tuff.break": { + "protocol_id": 1410 + }, + "minecraft:block.polished_tuff.fall": { + "protocol_id": 1411 + }, + "minecraft:block.polished_tuff.hit": { + "protocol_id": 1412 + }, + "minecraft:block.polished_tuff.place": { + "protocol_id": 1413 + }, + "minecraft:block.polished_tuff.step": { + "protocol_id": 1414 + }, + "minecraft:block.portal.ambient": { + "protocol_id": 1131 + }, + "minecraft:block.portal.travel": { + "protocol_id": 1132 + }, + "minecraft:block.portal.trigger": { + "protocol_id": 1133 + }, + "minecraft:block.powder_snow.break": { + "protocol_id": 1134 + }, + "minecraft:block.powder_snow.fall": { + "protocol_id": 1135 + }, + "minecraft:block.powder_snow.hit": { + "protocol_id": 1136 + }, + "minecraft:block.powder_snow.place": { + "protocol_id": 1137 + }, + "minecraft:block.powder_snow.step": { + "protocol_id": 1138 + }, + "minecraft:block.pumpkin.carve": { + "protocol_id": 1146 + }, + "minecraft:block.redstone_torch.burnout": { + "protocol_id": 1171 + }, + "minecraft:block.respawn_anchor.ambient": { + "protocol_id": 1172 + }, + "minecraft:block.respawn_anchor.charge": { + "protocol_id": 1173 + }, + "minecraft:block.respawn_anchor.deplete": { + "protocol_id": 1174 + }, + "minecraft:block.respawn_anchor.set_spawn": { + "protocol_id": 1175 + }, + "minecraft:block.rooted_dirt.break": { + "protocol_id": 1176 + }, + "minecraft:block.rooted_dirt.fall": { + "protocol_id": 1177 + }, + "minecraft:block.rooted_dirt.hit": { + "protocol_id": 1178 + }, + "minecraft:block.rooted_dirt.place": { + "protocol_id": 1179 + }, + "minecraft:block.rooted_dirt.step": { + "protocol_id": 1180 + }, + "minecraft:block.roots.break": { + "protocol_id": 565 + }, + "minecraft:block.roots.fall": { + "protocol_id": 569 + }, + "minecraft:block.roots.hit": { + "protocol_id": 568 + }, + "minecraft:block.roots.place": { + "protocol_id": 567 + }, + "minecraft:block.roots.step": { + "protocol_id": 566 + }, + "minecraft:block.sand.break": { + "protocol_id": 1185 + }, + "minecraft:block.sand.fall": { + "protocol_id": 1186 + }, + "minecraft:block.sand.hit": { + "protocol_id": 1187 + }, + "minecraft:block.sand.place": { + "protocol_id": 1188 + }, + "minecraft:block.sand.step": { + "protocol_id": 1189 + }, + "minecraft:block.scaffolding.break": { + "protocol_id": 1190 + }, + "minecraft:block.scaffolding.fall": { + "protocol_id": 1191 + }, + "minecraft:block.scaffolding.hit": { + "protocol_id": 1192 + }, + "minecraft:block.scaffolding.place": { + "protocol_id": 1193 + }, + "minecraft:block.scaffolding.step": { + "protocol_id": 1194 + }, + "minecraft:block.sculk.break": { + "protocol_id": 1197 + }, + "minecraft:block.sculk.charge": { + "protocol_id": 1196 + }, + "minecraft:block.sculk.fall": { + "protocol_id": 1198 + }, + "minecraft:block.sculk.hit": { + "protocol_id": 1199 + }, + "minecraft:block.sculk.place": { + "protocol_id": 1200 + }, + "minecraft:block.sculk.spread": { + "protocol_id": 1195 + }, + "minecraft:block.sculk.step": { + "protocol_id": 1201 + }, + "minecraft:block.sculk_catalyst.bloom": { + "protocol_id": 1202 + }, + "minecraft:block.sculk_catalyst.break": { + "protocol_id": 1203 + }, + "minecraft:block.sculk_catalyst.fall": { + "protocol_id": 1204 + }, + "minecraft:block.sculk_catalyst.hit": { + "protocol_id": 1205 + }, + "minecraft:block.sculk_catalyst.place": { + "protocol_id": 1206 + }, + "minecraft:block.sculk_catalyst.step": { + "protocol_id": 1207 + }, + "minecraft:block.sculk_sensor.break": { + "protocol_id": 1210 + }, + "minecraft:block.sculk_sensor.clicking": { + "protocol_id": 1208 + }, + "minecraft:block.sculk_sensor.clicking_stop": { + "protocol_id": 1209 + }, + "minecraft:block.sculk_sensor.fall": { + "protocol_id": 1211 + }, + "minecraft:block.sculk_sensor.hit": { + "protocol_id": 1212 + }, + "minecraft:block.sculk_sensor.place": { + "protocol_id": 1213 + }, + "minecraft:block.sculk_sensor.step": { + "protocol_id": 1214 + }, + "minecraft:block.sculk_shrieker.break": { + "protocol_id": 1215 + }, + "minecraft:block.sculk_shrieker.fall": { + "protocol_id": 1216 + }, + "minecraft:block.sculk_shrieker.hit": { + "protocol_id": 1217 + }, + "minecraft:block.sculk_shrieker.place": { + "protocol_id": 1218 + }, + "minecraft:block.sculk_shrieker.shriek": { + "protocol_id": 1219 + }, + "minecraft:block.sculk_shrieker.step": { + "protocol_id": 1220 + }, + "minecraft:block.sculk_vein.break": { + "protocol_id": 1221 + }, + "minecraft:block.sculk_vein.fall": { + "protocol_id": 1222 + }, + "minecraft:block.sculk_vein.hit": { + "protocol_id": 1223 + }, + "minecraft:block.sculk_vein.place": { + "protocol_id": 1224 + }, + "minecraft:block.sculk_vein.step": { + "protocol_id": 1225 + }, + "minecraft:block.shroomlight.break": { + "protocol_id": 1233 + }, + "minecraft:block.shroomlight.fall": { + "protocol_id": 1237 + }, + "minecraft:block.shroomlight.hit": { + "protocol_id": 1236 + }, + "minecraft:block.shroomlight.place": { + "protocol_id": 1235 + }, + "minecraft:block.shroomlight.step": { + "protocol_id": 1234 + }, + "minecraft:block.shulker_box.close": { + "protocol_id": 1240 + }, + "minecraft:block.shulker_box.open": { + "protocol_id": 1241 + }, + "minecraft:block.sign.waxed_interact_fail": { + "protocol_id": 1515 + }, + "minecraft:block.slime_block.break": { + "protocol_id": 1274 + }, + "minecraft:block.slime_block.fall": { + "protocol_id": 1275 + }, + "minecraft:block.slime_block.hit": { + "protocol_id": 1276 + }, + "minecraft:block.slime_block.place": { + "protocol_id": 1277 + }, + "minecraft:block.slime_block.step": { + "protocol_id": 1278 + }, + "minecraft:block.small_amethyst_bud.break": { + "protocol_id": 1279 + }, + "minecraft:block.small_amethyst_bud.place": { + "protocol_id": 1280 + }, + "minecraft:block.small_dripleaf.break": { + "protocol_id": 1281 + }, + "minecraft:block.small_dripleaf.fall": { + "protocol_id": 1282 + }, + "minecraft:block.small_dripleaf.hit": { + "protocol_id": 1283 + }, + "minecraft:block.small_dripleaf.place": { + "protocol_id": 1284 + }, + "minecraft:block.small_dripleaf.step": { + "protocol_id": 1285 + }, + "minecraft:block.smithing_table.use": { + "protocol_id": 1315 + }, + "minecraft:block.smoker.smoke": { + "protocol_id": 1316 + }, + "minecraft:block.sniffer_egg.crack": { + "protocol_id": 1330 + }, + "minecraft:block.sniffer_egg.hatch": { + "protocol_id": 1331 + }, + "minecraft:block.sniffer_egg.plop": { + "protocol_id": 1329 + }, + "minecraft:block.snow.break": { + "protocol_id": 1333 + }, + "minecraft:block.snow.fall": { + "protocol_id": 1334 + }, + "minecraft:block.snow.hit": { + "protocol_id": 1340 + }, + "minecraft:block.snow.place": { + "protocol_id": 1341 + }, + "minecraft:block.snow.step": { + "protocol_id": 1342 + }, + "minecraft:block.soul_sand.break": { + "protocol_id": 1286 + }, + "minecraft:block.soul_sand.fall": { + "protocol_id": 1290 + }, + "minecraft:block.soul_sand.hit": { + "protocol_id": 1289 + }, + "minecraft:block.soul_sand.place": { + "protocol_id": 1288 + }, + "minecraft:block.soul_sand.step": { + "protocol_id": 1287 + }, + "minecraft:block.soul_soil.break": { + "protocol_id": 1291 + }, + "minecraft:block.soul_soil.fall": { + "protocol_id": 1295 + }, + "minecraft:block.soul_soil.hit": { + "protocol_id": 1294 + }, + "minecraft:block.soul_soil.place": { + "protocol_id": 1293 + }, + "minecraft:block.soul_soil.step": { + "protocol_id": 1292 + }, + "minecraft:block.sponge.absorb": { + "protocol_id": 1354 + }, + "minecraft:block.sponge.break": { + "protocol_id": 1349 + }, + "minecraft:block.sponge.fall": { + "protocol_id": 1350 + }, + "minecraft:block.sponge.hit": { + "protocol_id": 1351 + }, + "minecraft:block.sponge.place": { + "protocol_id": 1352 + }, + "minecraft:block.sponge.step": { + "protocol_id": 1353 + }, + "minecraft:block.spore_blossom.break": { + "protocol_id": 1297 + }, + "minecraft:block.spore_blossom.fall": { + "protocol_id": 1298 + }, + "minecraft:block.spore_blossom.hit": { + "protocol_id": 1299 + }, + "minecraft:block.spore_blossom.place": { + "protocol_id": 1300 + }, + "minecraft:block.spore_blossom.step": { + "protocol_id": 1301 + }, + "minecraft:block.stem.break": { + "protocol_id": 946 + }, + "minecraft:block.stem.fall": { + "protocol_id": 950 + }, + "minecraft:block.stem.hit": { + "protocol_id": 949 + }, + "minecraft:block.stem.place": { + "protocol_id": 948 + }, + "minecraft:block.stem.step": { + "protocol_id": 947 + }, + "minecraft:block.stone.break": { + "protocol_id": 1361 + }, + "minecraft:block.stone.fall": { + "protocol_id": 1364 + }, + "minecraft:block.stone.hit": { + "protocol_id": 1365 + }, + "minecraft:block.stone.place": { + "protocol_id": 1366 + }, + "minecraft:block.stone.step": { + "protocol_id": 1369 + }, + "minecraft:block.stone_button.click_off": { + "protocol_id": 1362 + }, + "minecraft:block.stone_button.click_on": { + "protocol_id": 1363 + }, + "minecraft:block.stone_pressure_plate.click_off": { + "protocol_id": 1367 + }, + "minecraft:block.stone_pressure_plate.click_on": { + "protocol_id": 1368 + }, + "minecraft:block.suspicious_gravel.break": { + "protocol_id": 541 + }, + "minecraft:block.suspicious_gravel.fall": { + "protocol_id": 545 + }, + "minecraft:block.suspicious_gravel.hit": { + "protocol_id": 544 + }, + "minecraft:block.suspicious_gravel.place": { + "protocol_id": 543 + }, + "minecraft:block.suspicious_gravel.step": { + "protocol_id": 542 + }, + "minecraft:block.suspicious_sand.break": { + "protocol_id": 536 + }, + "minecraft:block.suspicious_sand.fall": { + "protocol_id": 540 + }, + "minecraft:block.suspicious_sand.hit": { + "protocol_id": 539 + }, + "minecraft:block.suspicious_sand.place": { + "protocol_id": 538 + }, + "minecraft:block.suspicious_sand.step": { + "protocol_id": 537 + }, + "minecraft:block.sweet_berry_bush.break": { + "protocol_id": 1374 + }, + "minecraft:block.sweet_berry_bush.pick_berries": { + "protocol_id": 1376 + }, + "minecraft:block.sweet_berry_bush.place": { + "protocol_id": 1375 + }, + "minecraft:block.trial_spawner.about_to_spawn_item": { + "protocol_id": 679 + }, + "minecraft:block.trial_spawner.ambient": { + "protocol_id": 684 + }, + "minecraft:block.trial_spawner.ambient_ominous": { + "protocol_id": 685 + }, + "minecraft:block.trial_spawner.break": { + "protocol_id": 673 + }, + "minecraft:block.trial_spawner.close_shutter": { + "protocol_id": 687 + }, + "minecraft:block.trial_spawner.detect_player": { + "protocol_id": 682 + }, + "minecraft:block.trial_spawner.eject_item": { + "protocol_id": 688 + }, + "minecraft:block.trial_spawner.fall": { + "protocol_id": 677 + }, + "minecraft:block.trial_spawner.hit": { + "protocol_id": 676 + }, + "minecraft:block.trial_spawner.ominous_activate": { + "protocol_id": 683 + }, + "minecraft:block.trial_spawner.open_shutter": { + "protocol_id": 686 + }, + "minecraft:block.trial_spawner.place": { + "protocol_id": 675 + }, + "minecraft:block.trial_spawner.spawn_item": { + "protocol_id": 680 + }, + "minecraft:block.trial_spawner.spawn_item_begin": { + "protocol_id": 681 + }, + "minecraft:block.trial_spawner.spawn_mob": { + "protocol_id": 678 + }, + "minecraft:block.trial_spawner.step": { + "protocol_id": 674 + }, + "minecraft:block.tripwire.attach": { + "protocol_id": 1392 + }, + "minecraft:block.tripwire.click_off": { + "protocol_id": 1393 + }, + "minecraft:block.tripwire.click_on": { + "protocol_id": 1394 + }, + "minecraft:block.tripwire.detach": { + "protocol_id": 1395 + }, + "minecraft:block.tuff.break": { + "protocol_id": 1400 + }, + "minecraft:block.tuff.fall": { + "protocol_id": 1404 + }, + "minecraft:block.tuff.hit": { + "protocol_id": 1403 + }, + "minecraft:block.tuff.place": { + "protocol_id": 1402 + }, + "minecraft:block.tuff.step": { + "protocol_id": 1401 + }, + "minecraft:block.tuff_bricks.break": { + "protocol_id": 1405 + }, + "minecraft:block.tuff_bricks.fall": { + "protocol_id": 1406 + }, + "minecraft:block.tuff_bricks.hit": { + "protocol_id": 1407 + }, + "minecraft:block.tuff_bricks.place": { + "protocol_id": 1408 + }, + "minecraft:block.tuff_bricks.step": { + "protocol_id": 1409 + }, + "minecraft:block.vault.activate": { + "protocol_id": 1436 + }, + "minecraft:block.vault.ambient": { + "protocol_id": 1437 + }, + "minecraft:block.vault.break": { + "protocol_id": 1438 + }, + "minecraft:block.vault.close_shutter": { + "protocol_id": 1439 + }, + "minecraft:block.vault.deactivate": { + "protocol_id": 1440 + }, + "minecraft:block.vault.eject_item": { + "protocol_id": 1441 + }, + "minecraft:block.vault.fall": { + "protocol_id": 1443 + }, + "minecraft:block.vault.hit": { + "protocol_id": 1444 + }, + "minecraft:block.vault.insert_item": { + "protocol_id": 1445 + }, + "minecraft:block.vault.insert_item_fail": { + "protocol_id": 1446 + }, + "minecraft:block.vault.open_shutter": { + "protocol_id": 1447 + }, + "minecraft:block.vault.place": { + "protocol_id": 1448 + }, + "minecraft:block.vault.reject_rewarded_player": { + "protocol_id": 1442 + }, + "minecraft:block.vault.step": { + "protocol_id": 1449 + }, + "minecraft:block.vine.break": { + "protocol_id": 1478 + }, + "minecraft:block.vine.fall": { + "protocol_id": 1479 + }, + "minecraft:block.vine.hit": { + "protocol_id": 1480 + }, + "minecraft:block.vine.place": { + "protocol_id": 1481 + }, + "minecraft:block.vine.step": { + "protocol_id": 1482 + }, + "minecraft:block.wart_block.break": { + "protocol_id": 971 + }, + "minecraft:block.wart_block.fall": { + "protocol_id": 975 + }, + "minecraft:block.wart_block.hit": { + "protocol_id": 974 + }, + "minecraft:block.wart_block.place": { + "protocol_id": 973 + }, + "minecraft:block.wart_block.step": { + "protocol_id": 972 + }, + "minecraft:block.water.ambient": { + "protocol_id": 1516 + }, + "minecraft:block.weeping_vines.break": { + "protocol_id": 966 + }, + "minecraft:block.weeping_vines.fall": { + "protocol_id": 970 + }, + "minecraft:block.weeping_vines.hit": { + "protocol_id": 969 + }, + "minecraft:block.weeping_vines.place": { + "protocol_id": 968 + }, + "minecraft:block.weeping_vines.step": { + "protocol_id": 967 + }, + "minecraft:block.wet_grass.break": { + "protocol_id": 1519 + }, + "minecraft:block.wet_grass.fall": { + "protocol_id": 1520 + }, + "minecraft:block.wet_grass.hit": { + "protocol_id": 1521 + }, + "minecraft:block.wet_grass.place": { + "protocol_id": 1522 + }, + "minecraft:block.wet_grass.step": { + "protocol_id": 1523 + }, + "minecraft:block.wet_sponge.break": { + "protocol_id": 1524 + }, + "minecraft:block.wet_sponge.dries": { + "protocol_id": 1525 + }, + "minecraft:block.wet_sponge.fall": { + "protocol_id": 1526 + }, + "minecraft:block.wet_sponge.hit": { + "protocol_id": 1527 + }, + "minecraft:block.wet_sponge.place": { + "protocol_id": 1528 + }, + "minecraft:block.wet_sponge.step": { + "protocol_id": 1529 + }, + "minecraft:block.wood.break": { + "protocol_id": 1569 + }, + "minecraft:block.wood.fall": { + "protocol_id": 1570 + }, + "minecraft:block.wood.hit": { + "protocol_id": 1571 + }, + "minecraft:block.wood.place": { + "protocol_id": 1572 + }, + "minecraft:block.wood.step": { + "protocol_id": 1573 + }, + "minecraft:block.wooden_button.click_off": { + "protocol_id": 1565 + }, + "minecraft:block.wooden_button.click_on": { + "protocol_id": 1566 + }, + "minecraft:block.wooden_door.close": { + "protocol_id": 1561 + }, + "minecraft:block.wooden_door.open": { + "protocol_id": 1562 + }, + "minecraft:block.wooden_pressure_plate.click_off": { + "protocol_id": 1567 + }, + "minecraft:block.wooden_pressure_plate.click_on": { + "protocol_id": 1568 + }, + "minecraft:block.wooden_trapdoor.close": { + "protocol_id": 1563 + }, + "minecraft:block.wooden_trapdoor.open": { + "protocol_id": 1564 + }, + "minecraft:block.wool.break": { + "protocol_id": 1574 + }, + "minecraft:block.wool.fall": { + "protocol_id": 1575 + }, + "minecraft:block.wool.hit": { + "protocol_id": 1576 + }, + "minecraft:block.wool.place": { + "protocol_id": 1577 + }, + "minecraft:block.wool.step": { + "protocol_id": 1578 + }, + "minecraft:enchant.thorns.hit": { + "protocol_id": 1381 + }, + "minecraft:entity.allay.ambient_with_item": { + "protocol_id": 0 + }, + "minecraft:entity.allay.ambient_without_item": { + "protocol_id": 1 + }, + "minecraft:entity.allay.death": { + "protocol_id": 2 + }, + "minecraft:entity.allay.hurt": { + "protocol_id": 3 + }, + "minecraft:entity.allay.item_given": { + "protocol_id": 4 + }, + "minecraft:entity.allay.item_taken": { + "protocol_id": 5 + }, + "minecraft:entity.allay.item_thrown": { + "protocol_id": 6 + }, + "minecraft:entity.armadillo.ambient": { + "protocol_id": 57 + }, + "minecraft:entity.armadillo.brush": { + "protocol_id": 66 + }, + "minecraft:entity.armadillo.death": { + "protocol_id": 59 + }, + "minecraft:entity.armadillo.eat": { + "protocol_id": 54 + }, + "minecraft:entity.armadillo.hurt": { + "protocol_id": 55 + }, + "minecraft:entity.armadillo.hurt_reduced": { + "protocol_id": 56 + }, + "minecraft:entity.armadillo.land": { + "protocol_id": 61 + }, + "minecraft:entity.armadillo.peek": { + "protocol_id": 64 + }, + "minecraft:entity.armadillo.roll": { + "protocol_id": 60 + }, + "minecraft:entity.armadillo.scute_drop": { + "protocol_id": 62 + }, + "minecraft:entity.armadillo.step": { + "protocol_id": 58 + }, + "minecraft:entity.armadillo.unroll_finish": { + "protocol_id": 63 + }, + "minecraft:entity.armadillo.unroll_start": { + "protocol_id": 65 + }, + "minecraft:entity.armor_stand.break": { + "protocol_id": 78 + }, + "minecraft:entity.armor_stand.fall": { + "protocol_id": 79 + }, + "minecraft:entity.armor_stand.hit": { + "protocol_id": 80 + }, + "minecraft:entity.armor_stand.place": { + "protocol_id": 81 + }, + "minecraft:entity.arrow.hit": { + "protocol_id": 82 + }, + "minecraft:entity.arrow.hit_player": { + "protocol_id": 83 + }, + "minecraft:entity.arrow.shoot": { + "protocol_id": 84 + }, + "minecraft:entity.axolotl.attack": { + "protocol_id": 88 + }, + "minecraft:entity.axolotl.death": { + "protocol_id": 89 + }, + "minecraft:entity.axolotl.hurt": { + "protocol_id": 90 + }, + "minecraft:entity.axolotl.idle_air": { + "protocol_id": 91 + }, + "minecraft:entity.axolotl.idle_water": { + "protocol_id": 92 + }, + "minecraft:entity.axolotl.splash": { + "protocol_id": 93 + }, + "minecraft:entity.axolotl.swim": { + "protocol_id": 94 + }, + "minecraft:entity.bat.ambient": { + "protocol_id": 135 + }, + "minecraft:entity.bat.death": { + "protocol_id": 136 + }, + "minecraft:entity.bat.hurt": { + "protocol_id": 137 + }, + "minecraft:entity.bat.loop": { + "protocol_id": 138 + }, + "minecraft:entity.bat.takeoff": { + "protocol_id": 139 + }, + "minecraft:entity.bee.death": { + "protocol_id": 144 + }, + "minecraft:entity.bee.hurt": { + "protocol_id": 145 + }, + "minecraft:entity.bee.loop": { + "protocol_id": 147 + }, + "minecraft:entity.bee.loop_aggressive": { + "protocol_id": 146 + }, + "minecraft:entity.bee.pollinate": { + "protocol_id": 149 + }, + "minecraft:entity.bee.sting": { + "protocol_id": 148 + }, + "minecraft:entity.blaze.ambient": { + "protocol_id": 162 + }, + "minecraft:entity.blaze.burn": { + "protocol_id": 163 + }, + "minecraft:entity.blaze.death": { + "protocol_id": 164 + }, + "minecraft:entity.blaze.hurt": { + "protocol_id": 165 + }, + "minecraft:entity.blaze.shoot": { + "protocol_id": 166 + }, + "minecraft:entity.boat.paddle_land": { + "protocol_id": 167 + }, + "minecraft:entity.boat.paddle_water": { + "protocol_id": 168 + }, + "minecraft:entity.bogged.ambient": { + "protocol_id": 169 + }, + "minecraft:entity.bogged.death": { + "protocol_id": 170 + }, + "minecraft:entity.bogged.hurt": { + "protocol_id": 171 + }, + "minecraft:entity.bogged.shear": { + "protocol_id": 172 + }, + "minecraft:entity.bogged.step": { + "protocol_id": 173 + }, + "minecraft:entity.breeze.charge": { + "protocol_id": 186 + }, + "minecraft:entity.breeze.death": { + "protocol_id": 195 + }, + "minecraft:entity.breeze.deflect": { + "protocol_id": 187 + }, + "minecraft:entity.breeze.hurt": { + "protocol_id": 196 + }, + "minecraft:entity.breeze.idle_air": { + "protocol_id": 190 + }, + "minecraft:entity.breeze.idle_ground": { + "protocol_id": 189 + }, + "minecraft:entity.breeze.inhale": { + "protocol_id": 188 + }, + "minecraft:entity.breeze.jump": { + "protocol_id": 192 + }, + "minecraft:entity.breeze.land": { + "protocol_id": 193 + }, + "minecraft:entity.breeze.shoot": { + "protocol_id": 191 + }, + "minecraft:entity.breeze.slide": { + "protocol_id": 194 + }, + "minecraft:entity.breeze.whirl": { + "protocol_id": 197 + }, + "minecraft:entity.breeze.wind_burst": { + "protocol_id": 198 + }, + "minecraft:entity.camel.ambient": { + "protocol_id": 231 + }, + "minecraft:entity.camel.dash": { + "protocol_id": 232 + }, + "minecraft:entity.camel.dash_ready": { + "protocol_id": 233 + }, + "minecraft:entity.camel.death": { + "protocol_id": 234 + }, + "minecraft:entity.camel.eat": { + "protocol_id": 235 + }, + "minecraft:entity.camel.hurt": { + "protocol_id": 236 + }, + "minecraft:entity.camel.saddle": { + "protocol_id": 237 + }, + "minecraft:entity.camel.sit": { + "protocol_id": 238 + }, + "minecraft:entity.camel.stand": { + "protocol_id": 239 + }, + "minecraft:entity.camel.step": { + "protocol_id": 240 + }, + "minecraft:entity.camel.step_sand": { + "protocol_id": 241 + }, + "minecraft:entity.cat.ambient": { + "protocol_id": 250 + }, + "minecraft:entity.cat.beg_for_food": { + "protocol_id": 255 + }, + "minecraft:entity.cat.death": { + "protocol_id": 252 + }, + "minecraft:entity.cat.eat": { + "protocol_id": 253 + }, + "minecraft:entity.cat.hiss": { + "protocol_id": 254 + }, + "minecraft:entity.cat.hurt": { + "protocol_id": 256 + }, + "minecraft:entity.cat.purr": { + "protocol_id": 257 + }, + "minecraft:entity.cat.purreow": { + "protocol_id": 258 + }, + "minecraft:entity.cat.stray_ambient": { + "protocol_id": 251 + }, + "minecraft:entity.chicken.ambient": { + "protocol_id": 303 + }, + "minecraft:entity.chicken.death": { + "protocol_id": 304 + }, + "minecraft:entity.chicken.egg": { + "protocol_id": 305 + }, + "minecraft:entity.chicken.hurt": { + "protocol_id": 306 + }, + "minecraft:entity.chicken.step": { + "protocol_id": 307 + }, + "minecraft:entity.cod.ambient": { + "protocol_id": 325 + }, + "minecraft:entity.cod.death": { + "protocol_id": 326 + }, + "minecraft:entity.cod.flop": { + "protocol_id": 327 + }, + "minecraft:entity.cod.hurt": { + "protocol_id": 328 + }, + "minecraft:entity.cow.ambient": { + "protocol_id": 365 + }, + "minecraft:entity.cow.death": { + "protocol_id": 366 + }, + "minecraft:entity.cow.hurt": { + "protocol_id": 367 + }, + "minecraft:entity.cow.milk": { + "protocol_id": 368 + }, + "minecraft:entity.cow.step": { + "protocol_id": 369 + }, + "minecraft:entity.creeper.death": { + "protocol_id": 372 + }, + "minecraft:entity.creeper.hurt": { + "protocol_id": 373 + }, + "minecraft:entity.creeper.primed": { + "protocol_id": 374 + }, + "minecraft:entity.dolphin.ambient": { + "protocol_id": 411 + }, + "minecraft:entity.dolphin.ambient_water": { + "protocol_id": 412 + }, + "minecraft:entity.dolphin.attack": { + "protocol_id": 413 + }, + "minecraft:entity.dolphin.death": { + "protocol_id": 414 + }, + "minecraft:entity.dolphin.eat": { + "protocol_id": 415 + }, + "minecraft:entity.dolphin.hurt": { + "protocol_id": 416 + }, + "minecraft:entity.dolphin.jump": { + "protocol_id": 417 + }, + "minecraft:entity.dolphin.play": { + "protocol_id": 418 + }, + "minecraft:entity.dolphin.splash": { + "protocol_id": 419 + }, + "minecraft:entity.dolphin.swim": { + "protocol_id": 420 + }, + "minecraft:entity.donkey.ambient": { + "protocol_id": 421 + }, + "minecraft:entity.donkey.angry": { + "protocol_id": 422 + }, + "minecraft:entity.donkey.chest": { + "protocol_id": 423 + }, + "minecraft:entity.donkey.death": { + "protocol_id": 424 + }, + "minecraft:entity.donkey.eat": { + "protocol_id": 425 + }, + "minecraft:entity.donkey.hurt": { + "protocol_id": 426 + }, + "minecraft:entity.donkey.jump": { + "protocol_id": 427 + }, + "minecraft:entity.dragon_fireball.explode": { + "protocol_id": 470 + }, + "minecraft:entity.drowned.ambient": { + "protocol_id": 445 + }, + "minecraft:entity.drowned.ambient_water": { + "protocol_id": 446 + }, + "minecraft:entity.drowned.death": { + "protocol_id": 447 + }, + "minecraft:entity.drowned.death_water": { + "protocol_id": 448 + }, + "minecraft:entity.drowned.hurt": { + "protocol_id": 449 + }, + "minecraft:entity.drowned.hurt_water": { + "protocol_id": 450 + }, + "minecraft:entity.drowned.shoot": { + "protocol_id": 451 + }, + "minecraft:entity.drowned.step": { + "protocol_id": 452 + }, + "minecraft:entity.drowned.swim": { + "protocol_id": 453 + }, + "minecraft:entity.egg.throw": { + "protocol_id": 455 + }, + "minecraft:entity.elder_guardian.ambient": { + "protocol_id": 456 + }, + "minecraft:entity.elder_guardian.ambient_land": { + "protocol_id": 457 + }, + "minecraft:entity.elder_guardian.curse": { + "protocol_id": 458 + }, + "minecraft:entity.elder_guardian.death": { + "protocol_id": 459 + }, + "minecraft:entity.elder_guardian.death_land": { + "protocol_id": 460 + }, + "minecraft:entity.elder_guardian.flop": { + "protocol_id": 461 + }, + "minecraft:entity.elder_guardian.hurt": { + "protocol_id": 462 + }, + "minecraft:entity.elder_guardian.hurt_land": { + "protocol_id": 463 + }, + "minecraft:entity.ender_dragon.ambient": { + "protocol_id": 468 + }, + "minecraft:entity.ender_dragon.death": { + "protocol_id": 469 + }, + "minecraft:entity.ender_dragon.flap": { + "protocol_id": 471 + }, + "minecraft:entity.ender_dragon.growl": { + "protocol_id": 472 + }, + "minecraft:entity.ender_dragon.hurt": { + "protocol_id": 473 + }, + "minecraft:entity.ender_dragon.shoot": { + "protocol_id": 474 + }, + "minecraft:entity.ender_eye.death": { + "protocol_id": 475 + }, + "minecraft:entity.ender_eye.launch": { + "protocol_id": 476 + }, + "minecraft:entity.ender_pearl.throw": { + "protocol_id": 487 + }, + "minecraft:entity.enderman.ambient": { + "protocol_id": 477 + }, + "minecraft:entity.enderman.death": { + "protocol_id": 478 + }, + "minecraft:entity.enderman.hurt": { + "protocol_id": 479 + }, + "minecraft:entity.enderman.scream": { + "protocol_id": 480 + }, + "minecraft:entity.enderman.stare": { + "protocol_id": 481 + }, + "minecraft:entity.enderman.teleport": { + "protocol_id": 482 + }, + "minecraft:entity.endermite.ambient": { + "protocol_id": 483 + }, + "minecraft:entity.endermite.death": { + "protocol_id": 484 + }, + "minecraft:entity.endermite.hurt": { + "protocol_id": 485 + }, + "minecraft:entity.endermite.step": { + "protocol_id": 486 + }, + "minecraft:entity.evoker.ambient": { + "protocol_id": 491 + }, + "minecraft:entity.evoker.cast_spell": { + "protocol_id": 492 + }, + "minecraft:entity.evoker.celebrate": { + "protocol_id": 493 + }, + "minecraft:entity.evoker.death": { + "protocol_id": 494 + }, + "minecraft:entity.evoker.hurt": { + "protocol_id": 496 + }, + "minecraft:entity.evoker.prepare_attack": { + "protocol_id": 497 + }, + "minecraft:entity.evoker.prepare_summon": { + "protocol_id": 498 + }, + "minecraft:entity.evoker.prepare_wololo": { + "protocol_id": 499 + }, + "minecraft:entity.evoker_fangs.attack": { + "protocol_id": 495 + }, + "minecraft:entity.experience_bottle.throw": { + "protocol_id": 500 + }, + "minecraft:entity.experience_orb.pickup": { + "protocol_id": 501 + }, + "minecraft:entity.firework_rocket.blast": { + "protocol_id": 505 + }, + "minecraft:entity.firework_rocket.blast_far": { + "protocol_id": 506 + }, + "minecraft:entity.firework_rocket.large_blast": { + "protocol_id": 507 + }, + "minecraft:entity.firework_rocket.large_blast_far": { + "protocol_id": 508 + }, + "minecraft:entity.firework_rocket.launch": { + "protocol_id": 509 + }, + "minecraft:entity.firework_rocket.shoot": { + "protocol_id": 510 + }, + "minecraft:entity.firework_rocket.twinkle": { + "protocol_id": 511 + }, + "minecraft:entity.firework_rocket.twinkle_far": { + "protocol_id": 512 + }, + "minecraft:entity.fish.swim": { + "protocol_id": 515 + }, + "minecraft:entity.fishing_bobber.retrieve": { + "protocol_id": 516 + }, + "minecraft:entity.fishing_bobber.splash": { + "protocol_id": 517 + }, + "minecraft:entity.fishing_bobber.throw": { + "protocol_id": 518 + }, + "minecraft:entity.fox.aggro": { + "protocol_id": 525 + }, + "minecraft:entity.fox.ambient": { + "protocol_id": 526 + }, + "minecraft:entity.fox.bite": { + "protocol_id": 527 + }, + "minecraft:entity.fox.death": { + "protocol_id": 528 + }, + "minecraft:entity.fox.eat": { + "protocol_id": 529 + }, + "minecraft:entity.fox.hurt": { + "protocol_id": 530 + }, + "minecraft:entity.fox.screech": { + "protocol_id": 531 + }, + "minecraft:entity.fox.sleep": { + "protocol_id": 532 + }, + "minecraft:entity.fox.sniff": { + "protocol_id": 533 + }, + "minecraft:entity.fox.spit": { + "protocol_id": 534 + }, + "minecraft:entity.fox.teleport": { + "protocol_id": 535 + }, + "minecraft:entity.frog.ambient": { + "protocol_id": 557 + }, + "minecraft:entity.frog.death": { + "protocol_id": 558 + }, + "minecraft:entity.frog.eat": { + "protocol_id": 559 + }, + "minecraft:entity.frog.hurt": { + "protocol_id": 560 + }, + "minecraft:entity.frog.lay_spawn": { + "protocol_id": 561 + }, + "minecraft:entity.frog.long_jump": { + "protocol_id": 562 + }, + "minecraft:entity.frog.step": { + "protocol_id": 563 + }, + "minecraft:entity.frog.tongue": { + "protocol_id": 564 + }, + "minecraft:entity.generic.big_fall": { + "protocol_id": 571 + }, + "minecraft:entity.generic.burn": { + "protocol_id": 572 + }, + "minecraft:entity.generic.death": { + "protocol_id": 573 + }, + "minecraft:entity.generic.drink": { + "protocol_id": 574 + }, + "minecraft:entity.generic.eat": { + "protocol_id": 575 + }, + "minecraft:entity.generic.explode": { + "protocol_id": 576 + }, + "minecraft:entity.generic.extinguish_fire": { + "protocol_id": 577 + }, + "minecraft:entity.generic.hurt": { + "protocol_id": 578 + }, + "minecraft:entity.generic.small_fall": { + "protocol_id": 579 + }, + "minecraft:entity.generic.splash": { + "protocol_id": 580 + }, + "minecraft:entity.generic.swim": { + "protocol_id": 581 + }, + "minecraft:entity.ghast.ambient": { + "protocol_id": 582 + }, + "minecraft:entity.ghast.death": { + "protocol_id": 583 + }, + "minecraft:entity.ghast.hurt": { + "protocol_id": 584 + }, + "minecraft:entity.ghast.scream": { + "protocol_id": 585 + }, + "minecraft:entity.ghast.shoot": { + "protocol_id": 586 + }, + "minecraft:entity.ghast.warn": { + "protocol_id": 587 + }, + "minecraft:entity.glow_item_frame.add_item": { + "protocol_id": 599 + }, + "minecraft:entity.glow_item_frame.break": { + "protocol_id": 600 + }, + "minecraft:entity.glow_item_frame.place": { + "protocol_id": 601 + }, + "minecraft:entity.glow_item_frame.remove_item": { + "protocol_id": 602 + }, + "minecraft:entity.glow_item_frame.rotate_item": { + "protocol_id": 603 + }, + "minecraft:entity.glow_squid.ambient": { + "protocol_id": 604 + }, + "minecraft:entity.glow_squid.death": { + "protocol_id": 605 + }, + "minecraft:entity.glow_squid.hurt": { + "protocol_id": 606 + }, + "minecraft:entity.glow_squid.squirt": { + "protocol_id": 607 + }, + "minecraft:entity.goat.ambient": { + "protocol_id": 608 + }, + "minecraft:entity.goat.death": { + "protocol_id": 609 + }, + "minecraft:entity.goat.eat": { + "protocol_id": 610 + }, + "minecraft:entity.goat.horn_break": { + "protocol_id": 616 + }, + "minecraft:entity.goat.hurt": { + "protocol_id": 611 + }, + "minecraft:entity.goat.long_jump": { + "protocol_id": 612 + }, + "minecraft:entity.goat.milk": { + "protocol_id": 613 + }, + "minecraft:entity.goat.prepare_ram": { + "protocol_id": 614 + }, + "minecraft:entity.goat.ram_impact": { + "protocol_id": 615 + }, + "minecraft:entity.goat.screaming.ambient": { + "protocol_id": 618 + }, + "minecraft:entity.goat.screaming.death": { + "protocol_id": 619 + }, + "minecraft:entity.goat.screaming.eat": { + "protocol_id": 620 + }, + "minecraft:entity.goat.screaming.horn_break": { + "protocol_id": 626 + }, + "minecraft:entity.goat.screaming.hurt": { + "protocol_id": 621 + }, + "minecraft:entity.goat.screaming.long_jump": { + "protocol_id": 622 + }, + "minecraft:entity.goat.screaming.milk": { + "protocol_id": 623 + }, + "minecraft:entity.goat.screaming.prepare_ram": { + "protocol_id": 624 + }, + "minecraft:entity.goat.screaming.ram_impact": { + "protocol_id": 625 + }, + "minecraft:entity.goat.step": { + "protocol_id": 627 + }, + "minecraft:entity.guardian.ambient": { + "protocol_id": 640 + }, + "minecraft:entity.guardian.ambient_land": { + "protocol_id": 641 + }, + "minecraft:entity.guardian.attack": { + "protocol_id": 642 + }, + "minecraft:entity.guardian.death": { + "protocol_id": 643 + }, + "minecraft:entity.guardian.death_land": { + "protocol_id": 644 + }, + "minecraft:entity.guardian.flop": { + "protocol_id": 645 + }, + "minecraft:entity.guardian.hurt": { + "protocol_id": 646 + }, + "minecraft:entity.guardian.hurt_land": { + "protocol_id": 647 + }, + "minecraft:entity.hoglin.ambient": { + "protocol_id": 690 + }, + "minecraft:entity.hoglin.angry": { + "protocol_id": 691 + }, + "minecraft:entity.hoglin.attack": { + "protocol_id": 692 + }, + "minecraft:entity.hoglin.converted_to_zombified": { + "protocol_id": 693 + }, + "minecraft:entity.hoglin.death": { + "protocol_id": 694 + }, + "minecraft:entity.hoglin.hurt": { + "protocol_id": 695 + }, + "minecraft:entity.hoglin.retreat": { + "protocol_id": 696 + }, + "minecraft:entity.hoglin.step": { + "protocol_id": 697 + }, + "minecraft:entity.horse.ambient": { + "protocol_id": 714 + }, + "minecraft:entity.horse.angry": { + "protocol_id": 715 + }, + "minecraft:entity.horse.armor": { + "protocol_id": 716 + }, + "minecraft:entity.horse.breathe": { + "protocol_id": 717 + }, + "minecraft:entity.horse.death": { + "protocol_id": 718 + }, + "minecraft:entity.horse.eat": { + "protocol_id": 719 + }, + "minecraft:entity.horse.gallop": { + "protocol_id": 720 + }, + "minecraft:entity.horse.hurt": { + "protocol_id": 721 + }, + "minecraft:entity.horse.jump": { + "protocol_id": 722 + }, + "minecraft:entity.horse.land": { + "protocol_id": 723 + }, + "minecraft:entity.horse.saddle": { + "protocol_id": 724 + }, + "minecraft:entity.horse.step": { + "protocol_id": 725 + }, + "minecraft:entity.horse.step_wood": { + "protocol_id": 726 + }, + "minecraft:entity.hostile.big_fall": { + "protocol_id": 727 + }, + "minecraft:entity.hostile.death": { + "protocol_id": 728 + }, + "minecraft:entity.hostile.hurt": { + "protocol_id": 729 + }, + "minecraft:entity.hostile.small_fall": { + "protocol_id": 730 + }, + "minecraft:entity.hostile.splash": { + "protocol_id": 731 + }, + "minecraft:entity.hostile.swim": { + "protocol_id": 732 + }, + "minecraft:entity.husk.ambient": { + "protocol_id": 733 + }, + "minecraft:entity.husk.converted_to_zombie": { + "protocol_id": 734 + }, + "minecraft:entity.husk.death": { + "protocol_id": 735 + }, + "minecraft:entity.husk.hurt": { + "protocol_id": 736 + }, + "minecraft:entity.husk.step": { + "protocol_id": 737 + }, + "minecraft:entity.illusioner.ambient": { + "protocol_id": 738 + }, + "minecraft:entity.illusioner.cast_spell": { + "protocol_id": 739 + }, + "minecraft:entity.illusioner.death": { + "protocol_id": 740 + }, + "minecraft:entity.illusioner.hurt": { + "protocol_id": 741 + }, + "minecraft:entity.illusioner.mirror_move": { + "protocol_id": 742 + }, + "minecraft:entity.illusioner.prepare_blindness": { + "protocol_id": 743 + }, + "minecraft:entity.illusioner.prepare_mirror": { + "protocol_id": 744 + }, + "minecraft:entity.iron_golem.attack": { + "protocol_id": 748 + }, + "minecraft:entity.iron_golem.damage": { + "protocol_id": 749 + }, + "minecraft:entity.iron_golem.death": { + "protocol_id": 750 + }, + "minecraft:entity.iron_golem.hurt": { + "protocol_id": 751 + }, + "minecraft:entity.iron_golem.repair": { + "protocol_id": 752 + }, + "minecraft:entity.iron_golem.step": { + "protocol_id": 753 + }, + "minecraft:entity.item.break": { + "protocol_id": 761 + }, + "minecraft:entity.item.pickup": { + "protocol_id": 762 + }, + "minecraft:entity.item_frame.add_item": { + "protocol_id": 756 + }, + "minecraft:entity.item_frame.break": { + "protocol_id": 757 + }, + "minecraft:entity.item_frame.place": { + "protocol_id": 758 + }, + "minecraft:entity.item_frame.remove_item": { + "protocol_id": 759 + }, + "minecraft:entity.item_frame.rotate_item": { + "protocol_id": 760 + }, + "minecraft:entity.leash_knot.break": { + "protocol_id": 778 + }, + "minecraft:entity.leash_knot.place": { + "protocol_id": 779 + }, + "minecraft:entity.lightning_bolt.impact": { + "protocol_id": 781 + }, + "minecraft:entity.lightning_bolt.thunder": { + "protocol_id": 782 + }, + "minecraft:entity.lingering_potion.throw": { + "protocol_id": 783 + }, + "minecraft:entity.llama.ambient": { + "protocol_id": 784 + }, + "minecraft:entity.llama.angry": { + "protocol_id": 785 + }, + "minecraft:entity.llama.chest": { + "protocol_id": 786 + }, + "minecraft:entity.llama.death": { + "protocol_id": 787 + }, + "minecraft:entity.llama.eat": { + "protocol_id": 788 + }, + "minecraft:entity.llama.hurt": { + "protocol_id": 789 + }, + "minecraft:entity.llama.spit": { + "protocol_id": 790 + }, + "minecraft:entity.llama.step": { + "protocol_id": 791 + }, + "minecraft:entity.llama.swag": { + "protocol_id": 792 + }, + "minecraft:entity.magma_cube.death": { + "protocol_id": 803 + }, + "minecraft:entity.magma_cube.death_small": { + "protocol_id": 793 + }, + "minecraft:entity.magma_cube.hurt": { + "protocol_id": 804 + }, + "minecraft:entity.magma_cube.hurt_small": { + "protocol_id": 805 + }, + "minecraft:entity.magma_cube.jump": { + "protocol_id": 806 + }, + "minecraft:entity.magma_cube.squish": { + "protocol_id": 807 + }, + "minecraft:entity.magma_cube.squish_small": { + "protocol_id": 808 + }, + "minecraft:entity.minecart.inside": { + "protocol_id": 824 + }, + "minecraft:entity.minecart.inside.underwater": { + "protocol_id": 823 + }, + "minecraft:entity.minecart.riding": { + "protocol_id": 825 + }, + "minecraft:entity.mooshroom.convert": { + "protocol_id": 826 + }, + "minecraft:entity.mooshroom.eat": { + "protocol_id": 827 + }, + "minecraft:entity.mooshroom.milk": { + "protocol_id": 828 + }, + "minecraft:entity.mooshroom.shear": { + "protocol_id": 830 + }, + "minecraft:entity.mooshroom.suspicious_milk": { + "protocol_id": 829 + }, + "minecraft:entity.mule.ambient": { + "protocol_id": 861 + }, + "minecraft:entity.mule.angry": { + "protocol_id": 862 + }, + "minecraft:entity.mule.chest": { + "protocol_id": 863 + }, + "minecraft:entity.mule.death": { + "protocol_id": 864 + }, + "minecraft:entity.mule.eat": { + "protocol_id": 865 + }, + "minecraft:entity.mule.hurt": { + "protocol_id": 866 + }, + "minecraft:entity.mule.jump": { + "protocol_id": 867 + }, + "minecraft:entity.ocelot.ambient": { + "protocol_id": 1009 + }, + "minecraft:entity.ocelot.death": { + "protocol_id": 1010 + }, + "minecraft:entity.ocelot.hurt": { + "protocol_id": 1008 + }, + "minecraft:entity.painting.break": { + "protocol_id": 1012 + }, + "minecraft:entity.painting.place": { + "protocol_id": 1013 + }, + "minecraft:entity.panda.aggressive_ambient": { + "protocol_id": 1021 + }, + "minecraft:entity.panda.ambient": { + "protocol_id": 1016 + }, + "minecraft:entity.panda.bite": { + "protocol_id": 1024 + }, + "minecraft:entity.panda.cant_breed": { + "protocol_id": 1020 + }, + "minecraft:entity.panda.death": { + "protocol_id": 1017 + }, + "minecraft:entity.panda.eat": { + "protocol_id": 1018 + }, + "minecraft:entity.panda.hurt": { + "protocol_id": 1023 + }, + "minecraft:entity.panda.pre_sneeze": { + "protocol_id": 1014 + }, + "minecraft:entity.panda.sneeze": { + "protocol_id": 1015 + }, + "minecraft:entity.panda.step": { + "protocol_id": 1019 + }, + "minecraft:entity.panda.worried_ambient": { + "protocol_id": 1022 + }, + "minecraft:entity.parrot.ambient": { + "protocol_id": 1025 + }, + "minecraft:entity.parrot.death": { + "protocol_id": 1026 + }, + "minecraft:entity.parrot.eat": { + "protocol_id": 1027 + }, + "minecraft:entity.parrot.fly": { + "protocol_id": 1028 + }, + "minecraft:entity.parrot.hurt": { + "protocol_id": 1029 + }, + "minecraft:entity.parrot.imitate.blaze": { + "protocol_id": 1030 + }, + "minecraft:entity.parrot.imitate.bogged": { + "protocol_id": 1031 + }, + "minecraft:entity.parrot.imitate.breeze": { + "protocol_id": 1032 + }, + "minecraft:entity.parrot.imitate.creeper": { + "protocol_id": 1033 + }, + "minecraft:entity.parrot.imitate.drowned": { + "protocol_id": 1034 + }, + "minecraft:entity.parrot.imitate.elder_guardian": { + "protocol_id": 1035 + }, + "minecraft:entity.parrot.imitate.ender_dragon": { + "protocol_id": 1036 + }, + "minecraft:entity.parrot.imitate.endermite": { + "protocol_id": 1037 + }, + "minecraft:entity.parrot.imitate.evoker": { + "protocol_id": 1038 + }, + "minecraft:entity.parrot.imitate.ghast": { + "protocol_id": 1039 + }, + "minecraft:entity.parrot.imitate.guardian": { + "protocol_id": 1040 + }, + "minecraft:entity.parrot.imitate.hoglin": { + "protocol_id": 1041 + }, + "minecraft:entity.parrot.imitate.husk": { + "protocol_id": 1042 + }, + "minecraft:entity.parrot.imitate.illusioner": { + "protocol_id": 1043 + }, + "minecraft:entity.parrot.imitate.magma_cube": { + "protocol_id": 1044 + }, + "minecraft:entity.parrot.imitate.phantom": { + "protocol_id": 1045 + }, + "minecraft:entity.parrot.imitate.piglin": { + "protocol_id": 1046 + }, + "minecraft:entity.parrot.imitate.piglin_brute": { + "protocol_id": 1047 + }, + "minecraft:entity.parrot.imitate.pillager": { + "protocol_id": 1048 + }, + "minecraft:entity.parrot.imitate.ravager": { + "protocol_id": 1049 + }, + "minecraft:entity.parrot.imitate.shulker": { + "protocol_id": 1050 + }, + "minecraft:entity.parrot.imitate.silverfish": { + "protocol_id": 1051 + }, + "minecraft:entity.parrot.imitate.skeleton": { + "protocol_id": 1052 + }, + "minecraft:entity.parrot.imitate.slime": { + "protocol_id": 1053 + }, + "minecraft:entity.parrot.imitate.spider": { + "protocol_id": 1054 + }, + "minecraft:entity.parrot.imitate.stray": { + "protocol_id": 1055 + }, + "minecraft:entity.parrot.imitate.vex": { + "protocol_id": 1056 + }, + "minecraft:entity.parrot.imitate.vindicator": { + "protocol_id": 1057 + }, + "minecraft:entity.parrot.imitate.warden": { + "protocol_id": 1058 + }, + "minecraft:entity.parrot.imitate.witch": { + "protocol_id": 1059 + }, + "minecraft:entity.parrot.imitate.wither": { + "protocol_id": 1060 + }, + "minecraft:entity.parrot.imitate.wither_skeleton": { + "protocol_id": 1061 + }, + "minecraft:entity.parrot.imitate.zoglin": { + "protocol_id": 1062 + }, + "minecraft:entity.parrot.imitate.zombie": { + "protocol_id": 1063 + }, + "minecraft:entity.parrot.imitate.zombie_villager": { + "protocol_id": 1064 + }, + "minecraft:entity.parrot.step": { + "protocol_id": 1065 + }, + "minecraft:entity.phantom.ambient": { + "protocol_id": 1066 + }, + "minecraft:entity.phantom.bite": { + "protocol_id": 1067 + }, + "minecraft:entity.phantom.death": { + "protocol_id": 1068 + }, + "minecraft:entity.phantom.flap": { + "protocol_id": 1069 + }, + "minecraft:entity.phantom.hurt": { + "protocol_id": 1070 + }, + "minecraft:entity.phantom.swoop": { + "protocol_id": 1071 + }, + "minecraft:entity.pig.ambient": { + "protocol_id": 1072 + }, + "minecraft:entity.pig.death": { + "protocol_id": 1073 + }, + "minecraft:entity.pig.hurt": { + "protocol_id": 1074 + }, + "minecraft:entity.pig.saddle": { + "protocol_id": 1075 + }, + "minecraft:entity.pig.step": { + "protocol_id": 1076 + }, + "minecraft:entity.piglin.admiring_item": { + "protocol_id": 1077 + }, + "minecraft:entity.piglin.ambient": { + "protocol_id": 1078 + }, + "minecraft:entity.piglin.angry": { + "protocol_id": 1079 + }, + "minecraft:entity.piglin.celebrate": { + "protocol_id": 1080 + }, + "minecraft:entity.piglin.converted_to_zombified": { + "protocol_id": 1086 + }, + "minecraft:entity.piglin.death": { + "protocol_id": 1081 + }, + "minecraft:entity.piglin.hurt": { + "protocol_id": 1083 + }, + "minecraft:entity.piglin.jealous": { + "protocol_id": 1082 + }, + "minecraft:entity.piglin.retreat": { + "protocol_id": 1084 + }, + "minecraft:entity.piglin.step": { + "protocol_id": 1085 + }, + "minecraft:entity.piglin_brute.ambient": { + "protocol_id": 1087 + }, + "minecraft:entity.piglin_brute.angry": { + "protocol_id": 1088 + }, + "minecraft:entity.piglin_brute.converted_to_zombified": { + "protocol_id": 1092 + }, + "minecraft:entity.piglin_brute.death": { + "protocol_id": 1089 + }, + "minecraft:entity.piglin_brute.hurt": { + "protocol_id": 1090 + }, + "minecraft:entity.piglin_brute.step": { + "protocol_id": 1091 + }, + "minecraft:entity.pillager.ambient": { + "protocol_id": 1093 + }, + "minecraft:entity.pillager.celebrate": { + "protocol_id": 1094 + }, + "minecraft:entity.pillager.death": { + "protocol_id": 1095 + }, + "minecraft:entity.pillager.hurt": { + "protocol_id": 1096 + }, + "minecraft:entity.player.attack.crit": { + "protocol_id": 1099 + }, + "minecraft:entity.player.attack.knockback": { + "protocol_id": 1100 + }, + "minecraft:entity.player.attack.nodamage": { + "protocol_id": 1101 + }, + "minecraft:entity.player.attack.strong": { + "protocol_id": 1102 + }, + "minecraft:entity.player.attack.sweep": { + "protocol_id": 1103 + }, + "minecraft:entity.player.attack.weak": { + "protocol_id": 1104 + }, + "minecraft:entity.player.big_fall": { + "protocol_id": 1105 + }, + "minecraft:entity.player.breath": { + "protocol_id": 1106 + }, + "minecraft:entity.player.burp": { + "protocol_id": 1107 + }, + "minecraft:entity.player.death": { + "protocol_id": 1108 + }, + "minecraft:entity.player.hurt": { + "protocol_id": 1109 + }, + "minecraft:entity.player.hurt_drown": { + "protocol_id": 1110 + }, + "minecraft:entity.player.hurt_freeze": { + "protocol_id": 1111 + }, + "minecraft:entity.player.hurt_on_fire": { + "protocol_id": 1112 + }, + "minecraft:entity.player.hurt_sweet_berry_bush": { + "protocol_id": 1113 + }, + "minecraft:entity.player.levelup": { + "protocol_id": 1114 + }, + "minecraft:entity.player.small_fall": { + "protocol_id": 1115 + }, + "minecraft:entity.player.splash": { + "protocol_id": 1116 + }, + "minecraft:entity.player.splash.high_speed": { + "protocol_id": 1117 + }, + "minecraft:entity.player.swim": { + "protocol_id": 1118 + }, + "minecraft:entity.player.teleport": { + "protocol_id": 1119 + }, + "minecraft:entity.polar_bear.ambient": { + "protocol_id": 1120 + }, + "minecraft:entity.polar_bear.ambient_baby": { + "protocol_id": 1121 + }, + "minecraft:entity.polar_bear.death": { + "protocol_id": 1122 + }, + "minecraft:entity.polar_bear.hurt": { + "protocol_id": 1123 + }, + "minecraft:entity.polar_bear.step": { + "protocol_id": 1124 + }, + "minecraft:entity.polar_bear.warning": { + "protocol_id": 1125 + }, + "minecraft:entity.puffer_fish.ambient": { + "protocol_id": 1139 + }, + "minecraft:entity.puffer_fish.blow_out": { + "protocol_id": 1140 + }, + "minecraft:entity.puffer_fish.blow_up": { + "protocol_id": 1141 + }, + "minecraft:entity.puffer_fish.death": { + "protocol_id": 1142 + }, + "minecraft:entity.puffer_fish.flop": { + "protocol_id": 1143 + }, + "minecraft:entity.puffer_fish.hurt": { + "protocol_id": 1144 + }, + "minecraft:entity.puffer_fish.sting": { + "protocol_id": 1145 + }, + "minecraft:entity.rabbit.ambient": { + "protocol_id": 1147 + }, + "minecraft:entity.rabbit.attack": { + "protocol_id": 1148 + }, + "minecraft:entity.rabbit.death": { + "protocol_id": 1149 + }, + "minecraft:entity.rabbit.hurt": { + "protocol_id": 1150 + }, + "minecraft:entity.rabbit.jump": { + "protocol_id": 1151 + }, + "minecraft:entity.ravager.ambient": { + "protocol_id": 1153 + }, + "minecraft:entity.ravager.attack": { + "protocol_id": 1154 + }, + "minecraft:entity.ravager.celebrate": { + "protocol_id": 1155 + }, + "minecraft:entity.ravager.death": { + "protocol_id": 1156 + }, + "minecraft:entity.ravager.hurt": { + "protocol_id": 1157 + }, + "minecraft:entity.ravager.roar": { + "protocol_id": 1160 + }, + "minecraft:entity.ravager.step": { + "protocol_id": 1158 + }, + "minecraft:entity.ravager.stunned": { + "protocol_id": 1159 + }, + "minecraft:entity.salmon.ambient": { + "protocol_id": 1181 + }, + "minecraft:entity.salmon.death": { + "protocol_id": 1182 + }, + "minecraft:entity.salmon.flop": { + "protocol_id": 1183 + }, + "minecraft:entity.salmon.hurt": { + "protocol_id": 1184 + }, + "minecraft:entity.sheep.ambient": { + "protocol_id": 1226 + }, + "minecraft:entity.sheep.death": { + "protocol_id": 1227 + }, + "minecraft:entity.sheep.hurt": { + "protocol_id": 1228 + }, + "minecraft:entity.sheep.shear": { + "protocol_id": 1229 + }, + "minecraft:entity.sheep.step": { + "protocol_id": 1230 + }, + "minecraft:entity.shulker.ambient": { + "protocol_id": 1239 + }, + "minecraft:entity.shulker.close": { + "protocol_id": 1244 + }, + "minecraft:entity.shulker.death": { + "protocol_id": 1245 + }, + "minecraft:entity.shulker.hurt": { + "protocol_id": 1246 + }, + "minecraft:entity.shulker.hurt_closed": { + "protocol_id": 1247 + }, + "minecraft:entity.shulker.open": { + "protocol_id": 1248 + }, + "minecraft:entity.shulker.shoot": { + "protocol_id": 1249 + }, + "minecraft:entity.shulker.teleport": { + "protocol_id": 1250 + }, + "minecraft:entity.shulker_bullet.hit": { + "protocol_id": 1242 + }, + "minecraft:entity.shulker_bullet.hurt": { + "protocol_id": 1243 + }, + "minecraft:entity.silverfish.ambient": { + "protocol_id": 1251 + }, + "minecraft:entity.silverfish.death": { + "protocol_id": 1252 + }, + "minecraft:entity.silverfish.hurt": { + "protocol_id": 1253 + }, + "minecraft:entity.silverfish.step": { + "protocol_id": 1254 + }, + "minecraft:entity.skeleton.ambient": { + "protocol_id": 1255 + }, + "minecraft:entity.skeleton.converted_to_stray": { + "protocol_id": 1256 + }, + "minecraft:entity.skeleton.death": { + "protocol_id": 1257 + }, + "minecraft:entity.skeleton.hurt": { + "protocol_id": 1266 + }, + "minecraft:entity.skeleton.shoot": { + "protocol_id": 1267 + }, + "minecraft:entity.skeleton.step": { + "protocol_id": 1268 + }, + "minecraft:entity.skeleton_horse.ambient": { + "protocol_id": 1258 + }, + "minecraft:entity.skeleton_horse.ambient_water": { + "protocol_id": 1262 + }, + "minecraft:entity.skeleton_horse.death": { + "protocol_id": 1259 + }, + "minecraft:entity.skeleton_horse.gallop_water": { + "protocol_id": 1263 + }, + "minecraft:entity.skeleton_horse.hurt": { + "protocol_id": 1260 + }, + "minecraft:entity.skeleton_horse.jump_water": { + "protocol_id": 1264 + }, + "minecraft:entity.skeleton_horse.step_water": { + "protocol_id": 1265 + }, + "minecraft:entity.skeleton_horse.swim": { + "protocol_id": 1261 + }, + "minecraft:entity.slime.attack": { + "protocol_id": 1269 + }, + "minecraft:entity.slime.death": { + "protocol_id": 1270 + }, + "minecraft:entity.slime.death_small": { + "protocol_id": 1311 + }, + "minecraft:entity.slime.hurt": { + "protocol_id": 1271 + }, + "minecraft:entity.slime.hurt_small": { + "protocol_id": 1312 + }, + "minecraft:entity.slime.jump": { + "protocol_id": 1272 + }, + "minecraft:entity.slime.jump_small": { + "protocol_id": 1313 + }, + "minecraft:entity.slime.squish": { + "protocol_id": 1273 + }, + "minecraft:entity.slime.squish_small": { + "protocol_id": 1314 + }, + "minecraft:entity.sniffer.death": { + "protocol_id": 1321 + }, + "minecraft:entity.sniffer.digging": { + "protocol_id": 1326 + }, + "minecraft:entity.sniffer.digging_stop": { + "protocol_id": 1327 + }, + "minecraft:entity.sniffer.drop_seed": { + "protocol_id": 1322 + }, + "minecraft:entity.sniffer.eat": { + "protocol_id": 1318 + }, + "minecraft:entity.sniffer.happy": { + "protocol_id": 1328 + }, + "minecraft:entity.sniffer.hurt": { + "protocol_id": 1320 + }, + "minecraft:entity.sniffer.idle": { + "protocol_id": 1319 + }, + "minecraft:entity.sniffer.scenting": { + "protocol_id": 1323 + }, + "minecraft:entity.sniffer.searching": { + "protocol_id": 1325 + }, + "minecraft:entity.sniffer.sniffing": { + "protocol_id": 1324 + }, + "minecraft:entity.sniffer.step": { + "protocol_id": 1317 + }, + "minecraft:entity.snow_golem.ambient": { + "protocol_id": 1335 + }, + "minecraft:entity.snow_golem.death": { + "protocol_id": 1336 + }, + "minecraft:entity.snow_golem.hurt": { + "protocol_id": 1337 + }, + "minecraft:entity.snow_golem.shear": { + "protocol_id": 1339 + }, + "minecraft:entity.snow_golem.shoot": { + "protocol_id": 1338 + }, + "minecraft:entity.snowball.throw": { + "protocol_id": 1332 + }, + "minecraft:entity.spider.ambient": { + "protocol_id": 1343 + }, + "minecraft:entity.spider.death": { + "protocol_id": 1344 + }, + "minecraft:entity.spider.hurt": { + "protocol_id": 1345 + }, + "minecraft:entity.spider.step": { + "protocol_id": 1346 + }, + "minecraft:entity.splash_potion.break": { + "protocol_id": 1347 + }, + "minecraft:entity.splash_potion.throw": { + "protocol_id": 1348 + }, + "minecraft:entity.squid.ambient": { + "protocol_id": 1357 + }, + "minecraft:entity.squid.death": { + "protocol_id": 1358 + }, + "minecraft:entity.squid.hurt": { + "protocol_id": 1359 + }, + "minecraft:entity.squid.squirt": { + "protocol_id": 1360 + }, + "minecraft:entity.stray.ambient": { + "protocol_id": 1370 + }, + "minecraft:entity.stray.death": { + "protocol_id": 1371 + }, + "minecraft:entity.stray.hurt": { + "protocol_id": 1372 + }, + "minecraft:entity.stray.step": { + "protocol_id": 1373 + }, + "minecraft:entity.strider.ambient": { + "protocol_id": 1302 + }, + "minecraft:entity.strider.death": { + "protocol_id": 1305 + }, + "minecraft:entity.strider.eat": { + "protocol_id": 1309 + }, + "minecraft:entity.strider.happy": { + "protocol_id": 1303 + }, + "minecraft:entity.strider.hurt": { + "protocol_id": 1306 + }, + "minecraft:entity.strider.retreat": { + "protocol_id": 1304 + }, + "minecraft:entity.strider.saddle": { + "protocol_id": 1310 + }, + "minecraft:entity.strider.step": { + "protocol_id": 1307 + }, + "minecraft:entity.strider.step_lava": { + "protocol_id": 1308 + }, + "minecraft:entity.tadpole.death": { + "protocol_id": 1377 + }, + "minecraft:entity.tadpole.flop": { + "protocol_id": 1378 + }, + "minecraft:entity.tadpole.grow_up": { + "protocol_id": 1379 + }, + "minecraft:entity.tadpole.hurt": { + "protocol_id": 1380 + }, + "minecraft:entity.tnt.primed": { + "protocol_id": 1382 + }, + "minecraft:entity.tropical_fish.ambient": { + "protocol_id": 1396 + }, + "minecraft:entity.tropical_fish.death": { + "protocol_id": 1397 + }, + "minecraft:entity.tropical_fish.flop": { + "protocol_id": 1398 + }, + "minecraft:entity.tropical_fish.hurt": { + "protocol_id": 1399 + }, + "minecraft:entity.turtle.ambient_land": { + "protocol_id": 1415 + }, + "minecraft:entity.turtle.death": { + "protocol_id": 1416 + }, + "minecraft:entity.turtle.death_baby": { + "protocol_id": 1417 + }, + "minecraft:entity.turtle.egg_break": { + "protocol_id": 1418 + }, + "minecraft:entity.turtle.egg_crack": { + "protocol_id": 1419 + }, + "minecraft:entity.turtle.egg_hatch": { + "protocol_id": 1420 + }, + "minecraft:entity.turtle.hurt": { + "protocol_id": 1421 + }, + "minecraft:entity.turtle.hurt_baby": { + "protocol_id": 1422 + }, + "minecraft:entity.turtle.lay_egg": { + "protocol_id": 1423 + }, + "minecraft:entity.turtle.shamble": { + "protocol_id": 1424 + }, + "minecraft:entity.turtle.shamble_baby": { + "protocol_id": 1425 + }, + "minecraft:entity.turtle.swim": { + "protocol_id": 1426 + }, + "minecraft:entity.vex.ambient": { + "protocol_id": 1450 + }, + "minecraft:entity.vex.charge": { + "protocol_id": 1451 + }, + "minecraft:entity.vex.death": { + "protocol_id": 1452 + }, + "minecraft:entity.vex.hurt": { + "protocol_id": 1453 + }, + "minecraft:entity.villager.ambient": { + "protocol_id": 1454 + }, + "minecraft:entity.villager.celebrate": { + "protocol_id": 1455 + }, + "minecraft:entity.villager.death": { + "protocol_id": 1456 + }, + "minecraft:entity.villager.hurt": { + "protocol_id": 1457 + }, + "minecraft:entity.villager.no": { + "protocol_id": 1458 + }, + "minecraft:entity.villager.trade": { + "protocol_id": 1459 + }, + "minecraft:entity.villager.work_armorer": { + "protocol_id": 1461 + }, + "minecraft:entity.villager.work_butcher": { + "protocol_id": 1462 + }, + "minecraft:entity.villager.work_cartographer": { + "protocol_id": 1463 + }, + "minecraft:entity.villager.work_cleric": { + "protocol_id": 1464 + }, + "minecraft:entity.villager.work_farmer": { + "protocol_id": 1465 + }, + "minecraft:entity.villager.work_fisherman": { + "protocol_id": 1466 + }, + "minecraft:entity.villager.work_fletcher": { + "protocol_id": 1467 + }, + "minecraft:entity.villager.work_leatherworker": { + "protocol_id": 1468 + }, + "minecraft:entity.villager.work_librarian": { + "protocol_id": 1469 + }, + "minecraft:entity.villager.work_mason": { + "protocol_id": 1470 + }, + "minecraft:entity.villager.work_shepherd": { + "protocol_id": 1471 + }, + "minecraft:entity.villager.work_toolsmith": { + "protocol_id": 1472 + }, + "minecraft:entity.villager.work_weaponsmith": { + "protocol_id": 1473 + }, + "minecraft:entity.villager.yes": { + "protocol_id": 1460 + }, + "minecraft:entity.vindicator.ambient": { + "protocol_id": 1474 + }, + "minecraft:entity.vindicator.celebrate": { + "protocol_id": 1475 + }, + "minecraft:entity.vindicator.death": { + "protocol_id": 1476 + }, + "minecraft:entity.vindicator.hurt": { + "protocol_id": 1477 + }, + "minecraft:entity.wandering_trader.ambient": { + "protocol_id": 1484 + }, + "minecraft:entity.wandering_trader.death": { + "protocol_id": 1485 + }, + "minecraft:entity.wandering_trader.disappeared": { + "protocol_id": 1486 + }, + "minecraft:entity.wandering_trader.drink_milk": { + "protocol_id": 1487 + }, + "minecraft:entity.wandering_trader.drink_potion": { + "protocol_id": 1488 + }, + "minecraft:entity.wandering_trader.hurt": { + "protocol_id": 1489 + }, + "minecraft:entity.wandering_trader.no": { + "protocol_id": 1490 + }, + "minecraft:entity.wandering_trader.reappeared": { + "protocol_id": 1491 + }, + "minecraft:entity.wandering_trader.trade": { + "protocol_id": 1492 + }, + "minecraft:entity.wandering_trader.yes": { + "protocol_id": 1493 + }, + "minecraft:entity.warden.agitated": { + "protocol_id": 1494 + }, + "minecraft:entity.warden.ambient": { + "protocol_id": 1495 + }, + "minecraft:entity.warden.angry": { + "protocol_id": 1496 + }, + "minecraft:entity.warden.attack_impact": { + "protocol_id": 1497 + }, + "minecraft:entity.warden.death": { + "protocol_id": 1498 + }, + "minecraft:entity.warden.dig": { + "protocol_id": 1499 + }, + "minecraft:entity.warden.emerge": { + "protocol_id": 1500 + }, + "minecraft:entity.warden.heartbeat": { + "protocol_id": 1501 + }, + "minecraft:entity.warden.hurt": { + "protocol_id": 1502 + }, + "minecraft:entity.warden.listening": { + "protocol_id": 1503 + }, + "minecraft:entity.warden.listening_angry": { + "protocol_id": 1504 + }, + "minecraft:entity.warden.nearby_close": { + "protocol_id": 1505 + }, + "minecraft:entity.warden.nearby_closer": { + "protocol_id": 1506 + }, + "minecraft:entity.warden.nearby_closest": { + "protocol_id": 1507 + }, + "minecraft:entity.warden.roar": { + "protocol_id": 1508 + }, + "minecraft:entity.warden.sniff": { + "protocol_id": 1509 + }, + "minecraft:entity.warden.sonic_boom": { + "protocol_id": 1510 + }, + "minecraft:entity.warden.sonic_charge": { + "protocol_id": 1511 + }, + "minecraft:entity.warden.step": { + "protocol_id": 1512 + }, + "minecraft:entity.warden.tendril_clicks": { + "protocol_id": 1513 + }, + "minecraft:entity.wind_charge.throw": { + "protocol_id": 1531 + }, + "minecraft:entity.wind_charge.wind_burst": { + "protocol_id": 1530 + }, + "minecraft:entity.witch.ambient": { + "protocol_id": 1532 + }, + "minecraft:entity.witch.celebrate": { + "protocol_id": 1533 + }, + "minecraft:entity.witch.death": { + "protocol_id": 1534 + }, + "minecraft:entity.witch.drink": { + "protocol_id": 1535 + }, + "minecraft:entity.witch.hurt": { + "protocol_id": 1536 + }, + "minecraft:entity.witch.throw": { + "protocol_id": 1537 + }, + "minecraft:entity.wither.ambient": { + "protocol_id": 1538 + }, + "minecraft:entity.wither.break_block": { + "protocol_id": 1539 + }, + "minecraft:entity.wither.death": { + "protocol_id": 1540 + }, + "minecraft:entity.wither.hurt": { + "protocol_id": 1541 + }, + "minecraft:entity.wither.shoot": { + "protocol_id": 1542 + }, + "minecraft:entity.wither.spawn": { + "protocol_id": 1547 + }, + "minecraft:entity.wither_skeleton.ambient": { + "protocol_id": 1543 + }, + "minecraft:entity.wither_skeleton.death": { + "protocol_id": 1544 + }, + "minecraft:entity.wither_skeleton.hurt": { + "protocol_id": 1545 + }, + "minecraft:entity.wither_skeleton.step": { + "protocol_id": 1546 + }, + "minecraft:entity.wolf.ambient": { + "protocol_id": 1552 + }, + "minecraft:entity.wolf.death": { + "protocol_id": 1553 + }, + "minecraft:entity.wolf.growl": { + "protocol_id": 1554 + }, + "minecraft:entity.wolf.howl": { + "protocol_id": 1555 + }, + "minecraft:entity.wolf.hurt": { + "protocol_id": 1556 + }, + "minecraft:entity.wolf.pant": { + "protocol_id": 1557 + }, + "minecraft:entity.wolf.shake": { + "protocol_id": 1558 + }, + "minecraft:entity.wolf.step": { + "protocol_id": 1559 + }, + "minecraft:entity.wolf.whine": { + "protocol_id": 1560 + }, + "minecraft:entity.zoglin.ambient": { + "protocol_id": 1579 + }, + "minecraft:entity.zoglin.angry": { + "protocol_id": 1580 + }, + "minecraft:entity.zoglin.attack": { + "protocol_id": 1581 + }, + "minecraft:entity.zoglin.death": { + "protocol_id": 1582 + }, + "minecraft:entity.zoglin.hurt": { + "protocol_id": 1583 + }, + "minecraft:entity.zoglin.step": { + "protocol_id": 1584 + }, + "minecraft:entity.zombie.ambient": { + "protocol_id": 1585 + }, + "minecraft:entity.zombie.attack_iron_door": { + "protocol_id": 1587 + }, + "minecraft:entity.zombie.attack_wooden_door": { + "protocol_id": 1586 + }, + "minecraft:entity.zombie.break_wooden_door": { + "protocol_id": 1588 + }, + "minecraft:entity.zombie.converted_to_drowned": { + "protocol_id": 1589 + }, + "minecraft:entity.zombie.death": { + "protocol_id": 1590 + }, + "minecraft:entity.zombie.destroy_egg": { + "protocol_id": 1591 + }, + "minecraft:entity.zombie.hurt": { + "protocol_id": 1595 + }, + "minecraft:entity.zombie.infect": { + "protocol_id": 1596 + }, + "minecraft:entity.zombie.step": { + "protocol_id": 1601 + }, + "minecraft:entity.zombie_horse.ambient": { + "protocol_id": 1592 + }, + "minecraft:entity.zombie_horse.death": { + "protocol_id": 1593 + }, + "minecraft:entity.zombie_horse.hurt": { + "protocol_id": 1594 + }, + "minecraft:entity.zombie_villager.ambient": { + "protocol_id": 1602 + }, + "minecraft:entity.zombie_villager.converted": { + "protocol_id": 1603 + }, + "minecraft:entity.zombie_villager.cure": { + "protocol_id": 1604 + }, + "minecraft:entity.zombie_villager.death": { + "protocol_id": 1605 + }, + "minecraft:entity.zombie_villager.hurt": { + "protocol_id": 1606 + }, + "minecraft:entity.zombie_villager.step": { + "protocol_id": 1607 + }, + "minecraft:entity.zombified_piglin.ambient": { + "protocol_id": 1597 + }, + "minecraft:entity.zombified_piglin.angry": { + "protocol_id": 1598 + }, + "minecraft:entity.zombified_piglin.death": { + "protocol_id": 1599 + }, + "minecraft:entity.zombified_piglin.hurt": { + "protocol_id": 1600 + }, + "minecraft:event.mob_effect.bad_omen": { + "protocol_id": 1608 + }, + "minecraft:event.mob_effect.raid_omen": { + "protocol_id": 1610 + }, + "minecraft:event.mob_effect.trial_omen": { + "protocol_id": 1609 + }, + "minecraft:event.raid.horn": { + "protocol_id": 1152 + }, + "minecraft:intentionally_empty": { + "protocol_id": 940 + }, + "minecraft:item.armor.equip_chain": { + "protocol_id": 67 + }, + "minecraft:item.armor.equip_diamond": { + "protocol_id": 68 + }, + "minecraft:item.armor.equip_elytra": { + "protocol_id": 69 + }, + "minecraft:item.armor.equip_generic": { + "protocol_id": 70 + }, + "minecraft:item.armor.equip_gold": { + "protocol_id": 71 + }, + "minecraft:item.armor.equip_iron": { + "protocol_id": 72 + }, + "minecraft:item.armor.equip_leather": { + "protocol_id": 73 + }, + "minecraft:item.armor.equip_netherite": { + "protocol_id": 74 + }, + "minecraft:item.armor.equip_turtle": { + "protocol_id": 75 + }, + "minecraft:item.armor.equip_wolf": { + "protocol_id": 76 + }, + "minecraft:item.armor.unequip_wolf": { + "protocol_id": 77 + }, + "minecraft:item.axe.scrape": { + "protocol_id": 86 + }, + "minecraft:item.axe.strip": { + "protocol_id": 85 + }, + "minecraft:item.axe.wax_off": { + "protocol_id": 87 + }, + "minecraft:item.bone_meal.use": { + "protocol_id": 179 + }, + "minecraft:item.book.page_turn": { + "protocol_id": 180 + }, + "minecraft:item.book.put": { + "protocol_id": 181 + }, + "minecraft:item.bottle.empty": { + "protocol_id": 183 + }, + "minecraft:item.bottle.fill": { + "protocol_id": 184 + }, + "minecraft:item.bottle.fill_dragonbreath": { + "protocol_id": 185 + }, + "minecraft:item.brush.brushing.generic": { + "protocol_id": 200 + }, + "minecraft:item.brush.brushing.gravel": { + "protocol_id": 202 + }, + "minecraft:item.brush.brushing.gravel.complete": { + "protocol_id": 204 + }, + "minecraft:item.brush.brushing.sand": { + "protocol_id": 201 + }, + "minecraft:item.brush.brushing.sand.complete": { + "protocol_id": 203 + }, + "minecraft:item.bucket.empty": { + "protocol_id": 210 + }, + "minecraft:item.bucket.empty_axolotl": { + "protocol_id": 211 + }, + "minecraft:item.bucket.empty_fish": { + "protocol_id": 212 + }, + "minecraft:item.bucket.empty_lava": { + "protocol_id": 213 + }, + "minecraft:item.bucket.empty_powder_snow": { + "protocol_id": 214 + }, + "minecraft:item.bucket.empty_tadpole": { + "protocol_id": 215 + }, + "minecraft:item.bucket.fill": { + "protocol_id": 216 + }, + "minecraft:item.bucket.fill_axolotl": { + "protocol_id": 217 + }, + "minecraft:item.bucket.fill_fish": { + "protocol_id": 218 + }, + "minecraft:item.bucket.fill_lava": { + "protocol_id": 219 + }, + "minecraft:item.bucket.fill_powder_snow": { + "protocol_id": 220 + }, + "minecraft:item.bucket.fill_tadpole": { + "protocol_id": 221 + }, + "minecraft:item.bundle.drop_contents": { + "protocol_id": 222 + }, + "minecraft:item.bundle.insert": { + "protocol_id": 223 + }, + "minecraft:item.bundle.remove_one": { + "protocol_id": 224 + }, + "minecraft:item.chorus_fruit.teleport": { + "protocol_id": 319 + }, + "minecraft:item.crop.plant": { + "protocol_id": 376 + }, + "minecraft:item.crossbow.hit": { + "protocol_id": 377 + }, + "minecraft:item.crossbow.loading_end": { + "protocol_id": 378 + }, + "minecraft:item.crossbow.loading_middle": { + "protocol_id": 379 + }, + "minecraft:item.crossbow.loading_start": { + "protocol_id": 380 + }, + "minecraft:item.crossbow.quick_charge_1": { + "protocol_id": 381 + }, + "minecraft:item.crossbow.quick_charge_2": { + "protocol_id": 382 + }, + "minecraft:item.crossbow.quick_charge_3": { + "protocol_id": 383 + }, + "minecraft:item.crossbow.shoot": { + "protocol_id": 384 + }, + "minecraft:item.dye.use": { + "protocol_id": 454 + }, + "minecraft:item.elytra.flying": { + "protocol_id": 464 + }, + "minecraft:item.firecharge.use": { + "protocol_id": 504 + }, + "minecraft:item.flintandsteel.use": { + "protocol_id": 519 + }, + "minecraft:item.glow_ink_sac.use": { + "protocol_id": 598 + }, + "minecraft:item.goat_horn.play": { + "protocol_id": 617 + }, + "minecraft:item.goat_horn.sound.0": { + "protocol_id": 706 + }, + "minecraft:item.goat_horn.sound.1": { + "protocol_id": 707 + }, + "minecraft:item.goat_horn.sound.2": { + "protocol_id": 708 + }, + "minecraft:item.goat_horn.sound.3": { + "protocol_id": 709 + }, + "minecraft:item.goat_horn.sound.4": { + "protocol_id": 710 + }, + "minecraft:item.goat_horn.sound.5": { + "protocol_id": 711 + }, + "minecraft:item.goat_horn.sound.6": { + "protocol_id": 712 + }, + "minecraft:item.goat_horn.sound.7": { + "protocol_id": 713 + }, + "minecraft:item.hoe.till": { + "protocol_id": 689 + }, + "minecraft:item.honey_bottle.drink": { + "protocol_id": 705 + }, + "minecraft:item.honeycomb.wax_on": { + "protocol_id": 704 + }, + "minecraft:item.ink_sac.use": { + "protocol_id": 745 + }, + "minecraft:item.lodestone_compass.lock": { + "protocol_id": 799 + }, + "minecraft:item.mace.smash_air": { + "protocol_id": 800 + }, + "minecraft:item.mace.smash_ground": { + "protocol_id": 801 + }, + "minecraft:item.mace.smash_ground_heavy": { + "protocol_id": 802 + }, + "minecraft:item.nether_wart.plant": { + "protocol_id": 924 + }, + "minecraft:item.ominous_bottle.dispose": { + "protocol_id": 1011 + }, + "minecraft:item.shield.block": { + "protocol_id": 1231 + }, + "minecraft:item.shield.break": { + "protocol_id": 1232 + }, + "minecraft:item.shovel.flatten": { + "protocol_id": 1238 + }, + "minecraft:item.spyglass.stop_using": { + "protocol_id": 1356 + }, + "minecraft:item.spyglass.use": { + "protocol_id": 1355 + }, + "minecraft:item.totem.use": { + "protocol_id": 1383 + }, + "minecraft:item.trident.hit": { + "protocol_id": 1384 + }, + "minecraft:item.trident.hit_ground": { + "protocol_id": 1385 + }, + "minecraft:item.trident.return": { + "protocol_id": 1386 + }, + "minecraft:item.trident.riptide_1": { + "protocol_id": 1387 + }, + "minecraft:item.trident.riptide_2": { + "protocol_id": 1388 + }, + "minecraft:item.trident.riptide_3": { + "protocol_id": 1389 + }, + "minecraft:item.trident.throw": { + "protocol_id": 1390 + }, + "minecraft:item.trident.thunder": { + "protocol_id": 1391 + }, + "minecraft:item.wolf_armor.break": { + "protocol_id": 1548 + }, + "minecraft:item.wolf_armor.crack": { + "protocol_id": 1549 + }, + "minecraft:item.wolf_armor.damage": { + "protocol_id": 1550 + }, + "minecraft:item.wolf_armor.repair": { + "protocol_id": 1551 + }, + "minecraft:music.creative": { + "protocol_id": 868 + }, + "minecraft:music.credits": { + "protocol_id": 869 + }, + "minecraft:music.dragon": { + "protocol_id": 889 + }, + "minecraft:music.end": { + "protocol_id": 890 + }, + "minecraft:music.game": { + "protocol_id": 891 + }, + "minecraft:music.menu": { + "protocol_id": 892 + }, + "minecraft:music.nether.basalt_deltas": { + "protocol_id": 893 + }, + "minecraft:music.nether.crimson_forest": { + "protocol_id": 894 + }, + "minecraft:music.nether.nether_wastes": { + "protocol_id": 905 + }, + "minecraft:music.nether.soul_sand_valley": { + "protocol_id": 908 + }, + "minecraft:music.nether.warped_forest": { + "protocol_id": 910 + }, + "minecraft:music.overworld.badlands": { + "protocol_id": 913 + }, + "minecraft:music.overworld.bamboo_jungle": { + "protocol_id": 916 + }, + "minecraft:music.overworld.cherry_grove": { + "protocol_id": 904 + }, + "minecraft:music.overworld.deep_dark": { + "protocol_id": 895 + }, + "minecraft:music.overworld.desert": { + "protocol_id": 912 + }, + "minecraft:music.overworld.dripstone_caves": { + "protocol_id": 896 + }, + "minecraft:music.overworld.flower_forest": { + "protocol_id": 911 + }, + "minecraft:music.overworld.forest": { + "protocol_id": 901 + }, + "minecraft:music.overworld.frozen_peaks": { + "protocol_id": 906 + }, + "minecraft:music.overworld.grove": { + "protocol_id": 897 + }, + "minecraft:music.overworld.jagged_peaks": { + "protocol_id": 898 + }, + "minecraft:music.overworld.jungle": { + "protocol_id": 914 + }, + "minecraft:music.overworld.lush_caves": { + "protocol_id": 899 + }, + "minecraft:music.overworld.meadow": { + "protocol_id": 903 + }, + "minecraft:music.overworld.old_growth_taiga": { + "protocol_id": 902 + }, + "minecraft:music.overworld.snowy_slopes": { + "protocol_id": 907 + }, + "minecraft:music.overworld.sparse_jungle": { + "protocol_id": 915 + }, + "minecraft:music.overworld.stony_peaks": { + "protocol_id": 909 + }, + "minecraft:music.overworld.swamp": { + "protocol_id": 900 + }, + "minecraft:music.under_water": { + "protocol_id": 917 + }, + "minecraft:music_disc.11": { + "protocol_id": 871 + }, + "minecraft:music_disc.13": { + "protocol_id": 872 + }, + "minecraft:music_disc.5": { + "protocol_id": 870 + }, + "minecraft:music_disc.blocks": { + "protocol_id": 873 + }, + "minecraft:music_disc.cat": { + "protocol_id": 874 + }, + "minecraft:music_disc.chirp": { + "protocol_id": 875 + }, + "minecraft:music_disc.creator": { + "protocol_id": 886 + }, + "minecraft:music_disc.creator_music_box": { + "protocol_id": 887 + }, + "minecraft:music_disc.far": { + "protocol_id": 876 + }, + "minecraft:music_disc.mall": { + "protocol_id": 877 + }, + "minecraft:music_disc.mellohi": { + "protocol_id": 878 + }, + "minecraft:music_disc.otherside": { + "protocol_id": 884 + }, + "minecraft:music_disc.pigstep": { + "protocol_id": 879 + }, + "minecraft:music_disc.precipice": { + "protocol_id": 888 + }, + "minecraft:music_disc.relic": { + "protocol_id": 885 + }, + "minecraft:music_disc.stal": { + "protocol_id": 880 + }, + "minecraft:music_disc.strad": { + "protocol_id": 881 + }, + "minecraft:music_disc.wait": { + "protocol_id": 882 + }, + "minecraft:music_disc.ward": { + "protocol_id": 883 + }, + "minecraft:particle.soul_escape": { + "protocol_id": 1296 + }, + "minecraft:ui.button.click": { + "protocol_id": 1427 + }, + "minecraft:ui.cartography_table.take_result": { + "protocol_id": 1430 + }, + "minecraft:ui.loom.select_pattern": { + "protocol_id": 1428 + }, + "minecraft:ui.loom.take_result": { + "protocol_id": 1429 + }, + "minecraft:ui.stonecutter.select_recipe": { + "protocol_id": 1432 + }, + "minecraft:ui.stonecutter.take_result": { + "protocol_id": 1431 + }, + "minecraft:ui.toast.challenge_complete": { + "protocol_id": 1433 + }, + "minecraft:ui.toast.in": { + "protocol_id": 1434 + }, + "minecraft:ui.toast.out": { + "protocol_id": 1435 + }, + "minecraft:weather.rain": { + "protocol_id": 1517 + }, + "minecraft:weather.rain.above": { + "protocol_id": 1518 + } + }, + "protocol_id": 1 + }, + "minecraft:stat_type": { + "entries": { + "minecraft:broken": { + "protocol_id": 3 + }, + "minecraft:crafted": { + "protocol_id": 1 + }, + "minecraft:custom": { + "protocol_id": 8 + }, + "minecraft:dropped": { + "protocol_id": 5 + }, + "minecraft:killed": { + "protocol_id": 6 + }, + "minecraft:killed_by": { + "protocol_id": 7 + }, + "minecraft:mined": { + "protocol_id": 0 + }, + "minecraft:picked_up": { + "protocol_id": 4 + }, + "minecraft:used": { + "protocol_id": 2 + } + }, + "protocol_id": 21 + }, + "minecraft:trigger_type": { + "entries": { + "minecraft:allay_drop_item_on_block": { + "protocol_id": 51 + }, + "minecraft:any_block_use": { + "protocol_id": 40 + }, + "minecraft:avoid_vibration": { + "protocol_id": 52 + }, + "minecraft:bee_nest_destroyed": { + "protocol_id": 36 + }, + "minecraft:bred_animals": { + "protocol_id": 14 + }, + "minecraft:brewed_potion": { + "protocol_id": 10 + }, + "minecraft:changed_dimension": { + "protocol_id": 21 + }, + "minecraft:channeled_lightning": { + "protocol_id": 30 + }, + "minecraft:construct_beacon": { + "protocol_id": 11 + }, + "minecraft:consume_item": { + "protocol_id": 25 + }, + "minecraft:crafter_recipe_crafted": { + "protocol_id": 54 + }, + "minecraft:cured_zombie_villager": { + "protocol_id": 17 + }, + "minecraft:default_block_use": { + "protocol_id": 39 + }, + "minecraft:effects_changed": { + "protocol_id": 26 + }, + "minecraft:enchanted_item": { + "protocol_id": 8 + }, + "minecraft:enter_block": { + "protocol_id": 3 + }, + "minecraft:entity_hurt_player": { + "protocol_id": 7 + }, + "minecraft:entity_killed_player": { + "protocol_id": 2 + }, + "minecraft:fall_after_explosion": { + "protocol_id": 55 + }, + "minecraft:fall_from_height": { + "protocol_id": 48 + }, + "minecraft:filled_bucket": { + "protocol_id": 9 + }, + "minecraft:fishing_rod_hooked": { + "protocol_id": 29 + }, + "minecraft:hero_of_the_village": { + "protocol_id": 33 + }, + "minecraft:impossible": { + "protocol_id": 0 + }, + "minecraft:inventory_changed": { + "protocol_id": 4 + }, + "minecraft:item_durability_changed": { + "protocol_id": 19 + }, + "minecraft:item_used_on_block": { + "protocol_id": 38 + }, + "minecraft:kill_mob_near_sculk_catalyst": { + "protocol_id": 50 + }, + "minecraft:killed_by_crossbow": { + "protocol_id": 32 + }, + "minecraft:levitation": { + "protocol_id": 20 + }, + "minecraft:lightning_strike": { + "protocol_id": 46 + }, + "minecraft:location": { + "protocol_id": 15 + }, + "minecraft:nether_travel": { + "protocol_id": 28 + }, + "minecraft:placed_block": { + "protocol_id": 24 + }, + "minecraft:player_generates_container_loot": { + "protocol_id": 41 + }, + "minecraft:player_hurt_entity": { + "protocol_id": 6 + }, + "minecraft:player_interacted_with_entity": { + "protocol_id": 44 + }, + "minecraft:player_killed_entity": { + "protocol_id": 1 + }, + "minecraft:recipe_crafted": { + "protocol_id": 53 + }, + "minecraft:recipe_unlocked": { + "protocol_id": 5 + }, + "minecraft:ride_entity_in_lava": { + "protocol_id": 49 + }, + "minecraft:shot_crossbow": { + "protocol_id": 31 + }, + "minecraft:slept_in_bed": { + "protocol_id": 16 + }, + "minecraft:slide_down_block": { + "protocol_id": 35 + }, + "minecraft:started_riding": { + "protocol_id": 45 + }, + "minecraft:summoned_entity": { + "protocol_id": 13 + }, + "minecraft:tame_animal": { + "protocol_id": 23 + }, + "minecraft:target_hit": { + "protocol_id": 37 + }, + "minecraft:thrown_item_picked_up_by_entity": { + "protocol_id": 42 + }, + "minecraft:thrown_item_picked_up_by_player": { + "protocol_id": 43 + }, + "minecraft:tick": { + "protocol_id": 22 + }, + "minecraft:used_ender_eye": { + "protocol_id": 12 + }, + "minecraft:used_totem": { + "protocol_id": 27 + }, + "minecraft:using_item": { + "protocol_id": 47 + }, + "minecraft:villager_trade": { + "protocol_id": 18 + }, + "minecraft:voluntary_exile": { + "protocol_id": 34 + } + }, + "protocol_id": 65 + }, + "minecraft:villager_profession": { + "default": "minecraft:none", + "entries": { + "minecraft:armorer": { + "protocol_id": 1 + }, + "minecraft:butcher": { + "protocol_id": 2 + }, + "minecraft:cartographer": { + "protocol_id": 3 + }, + "minecraft:cleric": { + "protocol_id": 4 + }, + "minecraft:farmer": { + "protocol_id": 5 + }, + "minecraft:fisherman": { + "protocol_id": 6 + }, + "minecraft:fletcher": { + "protocol_id": 7 + }, + "minecraft:leatherworker": { + "protocol_id": 8 + }, + "minecraft:librarian": { + "protocol_id": 9 + }, + "minecraft:mason": { + "protocol_id": 10 + }, + "minecraft:nitwit": { + "protocol_id": 11 + }, + "minecraft:none": { + "protocol_id": 0 + }, + "minecraft:shepherd": { + "protocol_id": 12 + }, + "minecraft:toolsmith": { + "protocol_id": 13 + }, + "minecraft:weaponsmith": { + "protocol_id": 14 + } + }, + "protocol_id": 23 + }, + "minecraft:villager_type": { + "default": "minecraft:plains", + "entries": { + "minecraft:desert": { + "protocol_id": 0 + }, + "minecraft:jungle": { + "protocol_id": 1 + }, + "minecraft:plains": { + "protocol_id": 2 + }, + "minecraft:savanna": { + "protocol_id": 3 + }, + "minecraft:snow": { + "protocol_id": 4 + }, + "minecraft:swamp": { + "protocol_id": 5 + }, + "minecraft:taiga": { + "protocol_id": 6 + } + }, + "protocol_id": 22 + }, + "minecraft:worldgen/biome_source": { + "entries": { + "minecraft:checkerboard": { + "protocol_id": 2 + }, + "minecraft:fixed": { + "protocol_id": 0 + }, + "minecraft:multi_noise": { + "protocol_id": 1 + }, + "minecraft:the_end": { + "protocol_id": 3 + } + }, + "protocol_id": 51 + }, + "minecraft:worldgen/block_state_provider_type": { + "entries": { + "minecraft:dual_noise_provider": { + "protocol_id": 4 + }, + "minecraft:noise_provider": { + "protocol_id": 3 + }, + "minecraft:noise_threshold_provider": { + "protocol_id": 2 + }, + "minecraft:randomized_int_state_provider": { + "protocol_id": 6 + }, + "minecraft:rotated_block_provider": { + "protocol_id": 5 + }, + "minecraft:simple_state_provider": { + "protocol_id": 0 + }, + "minecraft:weighted_state_provider": { + "protocol_id": 1 + } + }, + "protocol_id": 45 + }, + "minecraft:worldgen/carver": { + "entries": { + "minecraft:canyon": { + "protocol_id": 2 + }, + "minecraft:cave": { + "protocol_id": 0 + }, + "minecraft:nether_cave": { + "protocol_id": 1 + } + }, + "protocol_id": 39 + }, + "minecraft:worldgen/chunk_generator": { + "entries": { + "minecraft:debug": { + "protocol_id": 2 + }, + "minecraft:flat": { + "protocol_id": 1 + }, + "minecraft:noise": { + "protocol_id": 0 + } + }, + "protocol_id": 52 + }, + "minecraft:worldgen/density_function_type": { + "entries": { + "minecraft:abs": { + "protocol_id": 19 + }, + "minecraft:add": { + "protocol_id": 25 + }, + "minecraft:beardifier": { + "protocol_id": 2 + }, + "minecraft:blend_alpha": { + "protocol_id": 0 + }, + "minecraft:blend_density": { + "protocol_id": 17 + }, + "minecraft:blend_offset": { + "protocol_id": 1 + }, + "minecraft:cache_2d": { + "protocol_id": 6 + }, + "minecraft:cache_all_in_cell": { + "protocol_id": 8 + }, + "minecraft:cache_once": { + "protocol_id": 7 + }, + "minecraft:clamp": { + "protocol_id": 18 + }, + "minecraft:constant": { + "protocol_id": 30 + }, + "minecraft:cube": { + "protocol_id": 21 + }, + "minecraft:end_islands": { + "protocol_id": 10 + }, + "minecraft:flat_cache": { + "protocol_id": 5 + }, + "minecraft:half_negative": { + "protocol_id": 22 + }, + "minecraft:interpolated": { + "protocol_id": 4 + }, + "minecraft:max": { + "protocol_id": 28 + }, + "minecraft:min": { + "protocol_id": 27 + }, + "minecraft:mul": { + "protocol_id": 26 + }, + "minecraft:noise": { + "protocol_id": 9 + }, + "minecraft:old_blended_noise": { + "protocol_id": 3 + }, + "minecraft:quarter_negative": { + "protocol_id": 23 + }, + "minecraft:range_choice": { + "protocol_id": 13 + }, + "minecraft:shift": { + "protocol_id": 16 + }, + "minecraft:shift_a": { + "protocol_id": 14 + }, + "minecraft:shift_b": { + "protocol_id": 15 + }, + "minecraft:shifted_noise": { + "protocol_id": 12 + }, + "minecraft:spline": { + "protocol_id": 29 + }, + "minecraft:square": { + "protocol_id": 20 + }, + "minecraft:squeeze": { + "protocol_id": 24 + }, + "minecraft:weird_scaled_sampler": { + "protocol_id": 11 + }, + "minecraft:y_clamped_gradient": { + "protocol_id": 31 + } + }, + "protocol_id": 55 + }, + "minecraft:worldgen/feature": { + "entries": { + "minecraft:bamboo": { + "protocol_id": 42 + }, + "minecraft:basalt_columns": { + "protocol_id": 47 + }, + "minecraft:basalt_pillar": { + "protocol_id": 52 + }, + "minecraft:block_column": { + "protocol_id": 18 + }, + "minecraft:block_pile": { + "protocol_id": 5 + }, + "minecraft:blue_ice": { + "protocol_id": 25 + }, + "minecraft:bonus_chest": { + "protocol_id": 51 + }, + "minecraft:chorus_plant": { + "protocol_id": 7 + }, + "minecraft:coral_claw": { + "protocol_id": 39 + }, + "minecraft:coral_mushroom": { + "protocol_id": 38 + }, + "minecraft:coral_tree": { + "protocol_id": 37 + }, + "minecraft:delta_feature": { + "protocol_id": 48 + }, + "minecraft:desert_well": { + "protocol_id": 10 + }, + "minecraft:disk": { + "protocol_id": 28 + }, + "minecraft:dripstone_cluster": { + "protocol_id": 58 + }, + "minecraft:end_gateway": { + "protocol_id": 34 + }, + "minecraft:end_island": { + "protocol_id": 33 + }, + "minecraft:end_platform": { + "protocol_id": 31 + }, + "minecraft:end_spike": { + "protocol_id": 32 + }, + "minecraft:fill_layer": { + "protocol_id": 50 + }, + "minecraft:flower": { + "protocol_id": 2 + }, + "minecraft:forest_rock": { + "protocol_id": 27 + }, + "minecraft:fossil": { + "protocol_id": 11 + }, + "minecraft:freeze_top_layer": { + "protocol_id": 16 + }, + "minecraft:geode": { + "protocol_id": 57 + }, + "minecraft:glowstone_blob": { + "protocol_id": 15 + }, + "minecraft:huge_brown_mushroom": { + "protocol_id": 13 + }, + "minecraft:huge_fungus": { + "protocol_id": 43 + }, + "minecraft:huge_red_mushroom": { + "protocol_id": 12 + }, + "minecraft:ice_spike": { + "protocol_id": 14 + }, + "minecraft:iceberg": { + "protocol_id": 26 + }, + "minecraft:kelp": { + "protocol_id": 36 + }, + "minecraft:lake": { + "protocol_id": 29 + }, + "minecraft:large_dripstone": { + "protocol_id": 59 + }, + "minecraft:monster_room": { + "protocol_id": 24 + }, + "minecraft:multiface_growth": { + "protocol_id": 22 + }, + "minecraft:nether_forest_vegetation": { + "protocol_id": 44 + }, + "minecraft:netherrack_replace_blobs": { + "protocol_id": 49 + }, + "minecraft:no_bonemeal_flower": { + "protocol_id": 3 + }, + "minecraft:no_op": { + "protocol_id": 0 + }, + "minecraft:ore": { + "protocol_id": 30 + }, + "minecraft:pointed_dripstone": { + "protocol_id": 60 + }, + "minecraft:random_boolean_selector": { + "protocol_id": 56 + }, + "minecraft:random_patch": { + "protocol_id": 4 + }, + "minecraft:random_selector": { + "protocol_id": 54 + }, + "minecraft:replace_single_block": { + "protocol_id": 8 + }, + "minecraft:root_system": { + "protocol_id": 21 + }, + "minecraft:scattered_ore": { + "protocol_id": 53 + }, + "minecraft:sculk_patch": { + "protocol_id": 61 + }, + "minecraft:sea_pickle": { + "protocol_id": 40 + }, + "minecraft:seagrass": { + "protocol_id": 35 + }, + "minecraft:simple_block": { + "protocol_id": 41 + }, + "minecraft:simple_random_selector": { + "protocol_id": 55 + }, + "minecraft:spring_feature": { + "protocol_id": 6 + }, + "minecraft:tree": { + "protocol_id": 1 + }, + "minecraft:twisting_vines": { + "protocol_id": 46 + }, + "minecraft:underwater_magma": { + "protocol_id": 23 + }, + "minecraft:vegetation_patch": { + "protocol_id": 19 + }, + "minecraft:vines": { + "protocol_id": 17 + }, + "minecraft:void_start_platform": { + "protocol_id": 9 + }, + "minecraft:waterlogged_vegetation_patch": { + "protocol_id": 20 + }, + "minecraft:weeping_vines": { + "protocol_id": 45 + } + }, + "protocol_id": 40 + }, + "minecraft:worldgen/feature_size_type": { + "entries": { + "minecraft:three_layers_feature_size": { + "protocol_id": 1 + }, + "minecraft:two_layers_feature_size": { + "protocol_id": 0 + } + }, + "protocol_id": 50 + }, + "minecraft:worldgen/foliage_placer_type": { + "entries": { + "minecraft:acacia_foliage_placer": { + "protocol_id": 3 + }, + "minecraft:blob_foliage_placer": { + "protocol_id": 0 + }, + "minecraft:bush_foliage_placer": { + "protocol_id": 4 + }, + "minecraft:cherry_foliage_placer": { + "protocol_id": 10 + }, + "minecraft:dark_oak_foliage_placer": { + "protocol_id": 8 + }, + "minecraft:fancy_foliage_placer": { + "protocol_id": 5 + }, + "minecraft:jungle_foliage_placer": { + "protocol_id": 6 + }, + "minecraft:mega_pine_foliage_placer": { + "protocol_id": 7 + }, + "minecraft:pine_foliage_placer": { + "protocol_id": 2 + }, + "minecraft:random_spread_foliage_placer": { + "protocol_id": 9 + }, + "minecraft:spruce_foliage_placer": { + "protocol_id": 1 + } + }, + "protocol_id": 46 + }, + "minecraft:worldgen/material_condition": { + "entries": { + "minecraft:above_preliminary_surface": { + "protocol_id": 9 + }, + "minecraft:biome": { + "protocol_id": 0 + }, + "minecraft:hole": { + "protocol_id": 8 + }, + "minecraft:noise_threshold": { + "protocol_id": 1 + }, + "minecraft:not": { + "protocol_id": 7 + }, + "minecraft:steep": { + "protocol_id": 6 + }, + "minecraft:stone_depth": { + "protocol_id": 10 + }, + "minecraft:temperature": { + "protocol_id": 5 + }, + "minecraft:vertical_gradient": { + "protocol_id": 2 + }, + "minecraft:water": { + "protocol_id": 4 + }, + "minecraft:y_above": { + "protocol_id": 3 + }, + "paper:optionally_flat_bedrock_condition_source": { + "protocol_id": 11 + } + }, + "protocol_id": 53 + }, + "minecraft:worldgen/material_rule": { + "entries": { + "minecraft:bandlands": { + "protocol_id": 0 + }, + "minecraft:block": { + "protocol_id": 1 + }, + "minecraft:condition": { + "protocol_id": 3 + }, + "minecraft:sequence": { + "protocol_id": 2 + } + }, + "protocol_id": 54 + }, + "minecraft:worldgen/placement_modifier_type": { + "entries": { + "minecraft:biome": { + "protocol_id": 4 + }, + "minecraft:block_predicate_filter": { + "protocol_id": 0 + }, + "minecraft:carving_mask": { + "protocol_id": 14 + }, + "minecraft:count": { + "protocol_id": 5 + }, + "minecraft:count_on_every_layer": { + "protocol_id": 8 + }, + "minecraft:environment_scan": { + "protocol_id": 9 + }, + "minecraft:fixed_placement": { + "protocol_id": 15 + }, + "minecraft:height_range": { + "protocol_id": 11 + }, + "minecraft:heightmap": { + "protocol_id": 10 + }, + "minecraft:in_square": { + "protocol_id": 12 + }, + "minecraft:noise_based_count": { + "protocol_id": 6 + }, + "minecraft:noise_threshold_count": { + "protocol_id": 7 + }, + "minecraft:random_offset": { + "protocol_id": 13 + }, + "minecraft:rarity_filter": { + "protocol_id": 1 + }, + "minecraft:surface_relative_threshold_filter": { + "protocol_id": 2 + }, + "minecraft:surface_water_depth_filter": { + "protocol_id": 3 + } + }, + "protocol_id": 44 + }, + "minecraft:worldgen/pool_alias_binding": { + "entries": { + "minecraft:direct": { + "protocol_id": 2 + }, + "minecraft:random": { + "protocol_id": 0 + }, + "minecraft:random_group": { + "protocol_id": 1 + } + }, + "protocol_id": 59 + }, + "minecraft:worldgen/root_placer_type": { + "entries": { + "minecraft:mangrove_root_placer": { + "protocol_id": 0 + } + }, + "protocol_id": 48 + }, + "minecraft:worldgen/structure_piece": { + "entries": { + "minecraft:btp": { + "protocol_id": 52 + }, + "minecraft:ecp": { + "protocol_id": 50 + }, + "minecraft:iglu": { + "protocol_id": 34 + }, + "minecraft:jigsaw": { + "protocol_id": 55 + }, + "minecraft:mscorridor": { + "protocol_id": 0 + }, + "minecraft:mscrossing": { + "protocol_id": 1 + }, + "minecraft:msroom": { + "protocol_id": 2 + }, + "minecraft:msstairs": { + "protocol_id": 3 + }, + "minecraft:nebcr": { + "protocol_id": 4 + }, + "minecraft:nebef": { + "protocol_id": 5 + }, + "minecraft:nebs": { + "protocol_id": 6 + }, + "minecraft:neccs": { + "protocol_id": 7 + }, + "minecraft:nece": { + "protocol_id": 9 + }, + "minecraft:necsr": { + "protocol_id": 14 + }, + "minecraft:nectb": { + "protocol_id": 8 + }, + "minecraft:nefos": { + "protocol_id": 54 + }, + "minecraft:nemt": { + "protocol_id": 15 + }, + "minecraft:nerc": { + "protocol_id": 16 + }, + "minecraft:nesc": { + "protocol_id": 12 + }, + "minecraft:nesclt": { + "protocol_id": 11 + }, + "minecraft:nescrt": { + "protocol_id": 13 + }, + "minecraft:nescsc": { + "protocol_id": 10 + }, + "minecraft:nesr": { + "protocol_id": 17 + }, + "minecraft:nestart": { + "protocol_id": 18 + }, + "minecraft:omb": { + "protocol_id": 38 + }, + "minecraft:omcr": { + "protocol_id": 39 + }, + "minecraft:omdxr": { + "protocol_id": 40 + }, + "minecraft:omdxyr": { + "protocol_id": 41 + }, + "minecraft:omdyr": { + "protocol_id": 42 + }, + "minecraft:omdyzr": { + "protocol_id": 43 + }, + "minecraft:omdzr": { + "protocol_id": 44 + }, + "minecraft:omentry": { + "protocol_id": 45 + }, + "minecraft:ompenthouse": { + "protocol_id": 46 + }, + "minecraft:omsimple": { + "protocol_id": 47 + }, + "minecraft:omsimplet": { + "protocol_id": 48 + }, + "minecraft:omwr": { + "protocol_id": 49 + }, + "minecraft:orp": { + "protocol_id": 33 + }, + "minecraft:rupo": { + "protocol_id": 35 + }, + "minecraft:sh5c": { + "protocol_id": 21 + }, + "minecraft:shcc": { + "protocol_id": 19 + }, + "minecraft:shfc": { + "protocol_id": 20 + }, + "minecraft:shipwreck": { + "protocol_id": 53 + }, + "minecraft:shli": { + "protocol_id": 23 + }, + "minecraft:shlt": { + "protocol_id": 22 + }, + "minecraft:shph": { + "protocol_id": 25 + }, + "minecraft:shpr": { + "protocol_id": 24 + }, + "minecraft:shrc": { + "protocol_id": 27 + }, + "minecraft:shrt": { + "protocol_id": 26 + }, + "minecraft:shs": { + "protocol_id": 30 + }, + "minecraft:shsd": { + "protocol_id": 28 + }, + "minecraft:shssd": { + "protocol_id": 31 + }, + "minecraft:shstart": { + "protocol_id": 29 + }, + "minecraft:tedp": { + "protocol_id": 37 + }, + "minecraft:tejp": { + "protocol_id": 32 + }, + "minecraft:tesh": { + "protocol_id": 36 + }, + "minecraft:wmp": { + "protocol_id": 51 + } + }, + "protocol_id": 42 + }, + "minecraft:worldgen/structure_placement": { + "entries": { + "minecraft:concentric_rings": { + "protocol_id": 1 + }, + "minecraft:random_spread": { + "protocol_id": 0 + } + }, + "protocol_id": 41 + }, + "minecraft:worldgen/structure_pool_element": { + "entries": { + "minecraft:empty_pool_element": { + "protocol_id": 3 + }, + "minecraft:feature_pool_element": { + "protocol_id": 2 + }, + "minecraft:legacy_single_pool_element": { + "protocol_id": 4 + }, + "minecraft:list_pool_element": { + "protocol_id": 1 + }, + "minecraft:single_pool_element": { + "protocol_id": 0 + } + }, + "protocol_id": 58 + }, + "minecraft:worldgen/structure_processor": { + "entries": { + "minecraft:blackstone_replace": { + "protocol_id": 7 + }, + "minecraft:block_age": { + "protocol_id": 6 + }, + "minecraft:block_ignore": { + "protocol_id": 0 + }, + "minecraft:block_rot": { + "protocol_id": 1 + }, + "minecraft:capped": { + "protocol_id": 10 + }, + "minecraft:gravity": { + "protocol_id": 2 + }, + "minecraft:jigsaw_replacement": { + "protocol_id": 3 + }, + "minecraft:lava_submerged_block": { + "protocol_id": 8 + }, + "minecraft:nop": { + "protocol_id": 5 + }, + "minecraft:protected_blocks": { + "protocol_id": 9 + }, + "minecraft:rule": { + "protocol_id": 4 + } + }, + "protocol_id": 57 + }, + "minecraft:worldgen/structure_type": { + "entries": { + "minecraft:buried_treasure": { + "protocol_id": 0 + }, + "minecraft:desert_pyramid": { + "protocol_id": 1 + }, + "minecraft:end_city": { + "protocol_id": 2 + }, + "minecraft:fortress": { + "protocol_id": 3 + }, + "minecraft:igloo": { + "protocol_id": 4 + }, + "minecraft:jigsaw": { + "protocol_id": 5 + }, + "minecraft:jungle_temple": { + "protocol_id": 6 + }, + "minecraft:mineshaft": { + "protocol_id": 7 + }, + "minecraft:nether_fossil": { + "protocol_id": 8 + }, + "minecraft:ocean_monument": { + "protocol_id": 9 + }, + "minecraft:ocean_ruin": { + "protocol_id": 10 + }, + "minecraft:ruined_portal": { + "protocol_id": 11 + }, + "minecraft:shipwreck": { + "protocol_id": 12 + }, + "minecraft:stronghold": { + "protocol_id": 13 + }, + "minecraft:swamp_hut": { + "protocol_id": 14 + }, + "minecraft:woodland_mansion": { + "protocol_id": 15 + } + }, + "protocol_id": 43 + }, + "minecraft:worldgen/tree_decorator_type": { + "entries": { + "minecraft:alter_ground": { + "protocol_id": 4 + }, + "minecraft:attached_to_leaves": { + "protocol_id": 5 + }, + "minecraft:beehive": { + "protocol_id": 3 + }, + "minecraft:cocoa": { + "protocol_id": 2 + }, + "minecraft:leave_vine": { + "protocol_id": 1 + }, + "minecraft:trunk_vine": { + "protocol_id": 0 + } + }, + "protocol_id": 49 + }, + "minecraft:worldgen/trunk_placer_type": { + "entries": { + "minecraft:bending_trunk_placer": { + "protocol_id": 6 + }, + "minecraft:cherry_trunk_placer": { + "protocol_id": 8 + }, + "minecraft:dark_oak_trunk_placer": { + "protocol_id": 4 + }, + "minecraft:fancy_trunk_placer": { + "protocol_id": 5 + }, + "minecraft:forking_trunk_placer": { + "protocol_id": 1 + }, + "minecraft:giant_trunk_placer": { + "protocol_id": 2 + }, + "minecraft:mega_jungle_trunk_placer": { + "protocol_id": 3 + }, + "minecraft:straight_trunk_placer": { + "protocol_id": 0 + }, + "minecraft:upwards_branching_trunk_placer": { + "protocol_id": 7 + } + }, + "protocol_id": 47 + } +} \ No newline at end of file diff --git a/src/lib/derive_macros/Cargo.toml b/src/lib/derive_macros/Cargo.toml index fb0a2c61..dc701177 100644 --- a/src/lib/derive_macros/Cargo.toml +++ b/src/lib/derive_macros/Cargo.toml @@ -16,4 +16,5 @@ quote = { workspace = true } syn = { workspace = true, features = ["full"] } thiserror = { workspace = true } proc-macro2 = { workspace = true } -proc-macro-crate = { workspace = true } \ No newline at end of file +proc-macro-crate = { workspace = true } +serde_json = { workspace = true } \ No newline at end of file diff --git a/src/lib/derive_macros/src/lib.rs b/src/lib/derive_macros/src/lib.rs index 06fd84f8..3bb40c6e 100644 --- a/src/lib/derive_macros/src/lib.rs +++ b/src/lib/derive_macros/src/lib.rs @@ -7,6 +7,7 @@ mod helpers; mod nbt; mod net; mod profiling; +mod registry; #[proc_macro_attribute] pub fn profile(attr: TokenStream, item: TokenStream) -> TokenStream { @@ -54,3 +55,10 @@ pub fn bake_packet_registry(input: TokenStream) -> TokenStream { net::packets::bake_registry(input) } // #=================== PACKETS ===================# + +/// Get a registry entry from the registries.json file. +/// returns protocol_id (as u64) of the specified entry. +#[proc_macro] +pub fn get_registry_entry(input: TokenStream) -> TokenStream { + registry::get_entry::get(input) +} \ No newline at end of file diff --git a/src/lib/derive_macros/src/registry/get_entry.rs b/src/lib/derive_macros/src/registry/get_entry.rs new file mode 100644 index 00000000..3b653f07 --- /dev/null +++ b/src/lib/derive_macros/src/registry/get_entry.rs @@ -0,0 +1,31 @@ +use std::sync::LazyLock; +use quote::quote; +use syn::{parse_macro_input, LitStr}; + +static JSON_CONTENT: LazyLock = LazyLock::new(|| { + let json_str = include_str!("../../../../../assets/data/registries.json"); + serde_json::from_str(json_str).unwrap() +}); + +pub(crate) fn get(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + let path = parse_macro_input!(input as LitStr).value(); + let parts: Vec<&str> = path.split('.').collect(); + + let mut current_value = &*JSON_CONTENT; + + for part in parts { + // current_value = ¤t_value[part]; + current_value = current_value.get(part) + .unwrap_or_else(|| panic!("Could not find key: {}", part)); + } + + let protocol_id = current_value.get("protocol_id") + .and_then(|v| v.as_u64()) + .unwrap_or_else(|| panic!("Could not find key: {}", "protocol_id")); + + let expanded = quote! { + #protocol_id + }; + + proc_macro::TokenStream::from(expanded) +} \ No newline at end of file diff --git a/src/lib/derive_macros/src/registry/mod.rs b/src/lib/derive_macros/src/registry/mod.rs new file mode 100644 index 00000000..d438983a --- /dev/null +++ b/src/lib/derive_macros/src/registry/mod.rs @@ -0,0 +1,2 @@ + +pub(crate) mod get_entry; \ No newline at end of file diff --git a/src/lib/net/src/packets/outgoing/spawn_entity.rs b/src/lib/net/src/packets/outgoing/spawn_entity.rs index f8da3c5c..d35fd1ef 100644 --- a/src/lib/net/src/packets/outgoing/spawn_entity.rs +++ b/src/lib/net/src/packets/outgoing/spawn_entity.rs @@ -4,7 +4,7 @@ use ferrumc_core::identity::player_identity::PlayerIdentity; use ferrumc_core::transform::position::Position; use ferrumc_core::transform::rotation::Rotation; use ferrumc_ecs::entities::Entity; -use ferrumc_macros::{packet, NetEncode}; +use ferrumc_macros::{get_registry_entry, packet, NetEncode}; use ferrumc_net_codec::net_types::angle::NetAngle; use ferrumc_net_codec::net_types::var_int::VarInt; use ferrumc_state::GlobalState; @@ -28,7 +28,7 @@ pub struct SpawnEntityPacket { velocity_z: i16, } -const PLAYER_ID: u8 = 128; +const PLAYER_ID: u64 = get_registry_entry!("minecraft:entity_type.entries.minecraft:player"); impl SpawnEntityPacket { pub fn player(entity_id: Entity, state: &GlobalState) -> NetResult { From fdd1a08d5d794d4687577d15b2a7ca7ffe28c3ef Mon Sep 17 00:00:00 2001 From: Sweattypalms Date: Sat, 4 Jan 2025 19:05:38 +0900 Subject: [PATCH 2/8] Added automatic packet id fetching. --- assets/data/packets.json | 699 ++++++++++++++++++ src/lib/derive_macros/Cargo.toml | 3 +- src/lib/derive_macros/src/lib.rs | 17 +- src/lib/derive_macros/src/net/packets/mod.rs | 86 ++- src/lib/derive_macros/src/registry/mod.rs | 2 - .../derive_macros/src/static_loading/mod.rs | 3 + .../src/static_loading/packets.rs | 142 ++++ .../registry.rs} | 0 .../incoming/ack_finish_configuration.rs | 2 +- 9 files changed, 916 insertions(+), 38 deletions(-) create mode 100644 assets/data/packets.json delete mode 100644 src/lib/derive_macros/src/registry/mod.rs create mode 100644 src/lib/derive_macros/src/static_loading/mod.rs create mode 100644 src/lib/derive_macros/src/static_loading/packets.rs rename src/lib/derive_macros/src/{registry/get_entry.rs => static_loading/registry.rs} (100%) diff --git a/assets/data/packets.json b/assets/data/packets.json new file mode 100644 index 00000000..89320949 --- /dev/null +++ b/assets/data/packets.json @@ -0,0 +1,699 @@ +{ + "configuration": { + "clientbound": { + "minecraft:cookie_request": { + "protocol_id": 0 + }, + "minecraft:custom_payload": { + "protocol_id": 1 + }, + "minecraft:custom_report_details": { + "protocol_id": 15 + }, + "minecraft:disconnect": { + "protocol_id": 2 + }, + "minecraft:finish_configuration": { + "protocol_id": 3 + }, + "minecraft:keep_alive": { + "protocol_id": 4 + }, + "minecraft:ping": { + "protocol_id": 5 + }, + "minecraft:registry_data": { + "protocol_id": 7 + }, + "minecraft:reset_chat": { + "protocol_id": 6 + }, + "minecraft:resource_pack_pop": { + "protocol_id": 8 + }, + "minecraft:resource_pack_push": { + "protocol_id": 9 + }, + "minecraft:select_known_packs": { + "protocol_id": 14 + }, + "minecraft:server_links": { + "protocol_id": 16 + }, + "minecraft:store_cookie": { + "protocol_id": 10 + }, + "minecraft:transfer": { + "protocol_id": 11 + }, + "minecraft:update_enabled_features": { + "protocol_id": 12 + }, + "minecraft:update_tags": { + "protocol_id": 13 + } + }, + "serverbound": { + "minecraft:client_information": { + "protocol_id": 0 + }, + "minecraft:cookie_response": { + "protocol_id": 1 + }, + "minecraft:custom_payload": { + "protocol_id": 2 + }, + "minecraft:finish_configuration": { + "protocol_id": 3 + }, + "minecraft:keep_alive": { + "protocol_id": 4 + }, + "minecraft:pong": { + "protocol_id": 5 + }, + "minecraft:resource_pack": { + "protocol_id": 6 + }, + "minecraft:select_known_packs": { + "protocol_id": 7 + } + } + }, + "handshake": { + "serverbound": { + "minecraft:intention": { + "protocol_id": 0 + } + } + }, + "login": { + "clientbound": { + "minecraft:cookie_request": { + "protocol_id": 5 + }, + "minecraft:custom_query": { + "protocol_id": 4 + }, + "minecraft:game_profile": { + "protocol_id": 2 + }, + "minecraft:hello": { + "protocol_id": 1 + }, + "minecraft:login_compression": { + "protocol_id": 3 + }, + "minecraft:login_disconnect": { + "protocol_id": 0 + } + }, + "serverbound": { + "minecraft:cookie_response": { + "protocol_id": 4 + }, + "minecraft:custom_query_answer": { + "protocol_id": 2 + }, + "minecraft:hello": { + "protocol_id": 0 + }, + "minecraft:key": { + "protocol_id": 1 + }, + "minecraft:login_acknowledged": { + "protocol_id": 3 + } + } + }, + "play": { + "clientbound": { + "minecraft:add_entity": { + "protocol_id": 1 + }, + "minecraft:add_experience_orb": { + "protocol_id": 2 + }, + "minecraft:animate": { + "protocol_id": 3 + }, + "minecraft:award_stats": { + "protocol_id": 4 + }, + "minecraft:block_changed_ack": { + "protocol_id": 5 + }, + "minecraft:block_destruction": { + "protocol_id": 6 + }, + "minecraft:block_entity_data": { + "protocol_id": 7 + }, + "minecraft:block_event": { + "protocol_id": 8 + }, + "minecraft:block_update": { + "protocol_id": 9 + }, + "minecraft:boss_event": { + "protocol_id": 10 + }, + "minecraft:bundle_delimiter": { + "protocol_id": 0 + }, + "minecraft:change_difficulty": { + "protocol_id": 11 + }, + "minecraft:chunk_batch_finished": { + "protocol_id": 12 + }, + "minecraft:chunk_batch_start": { + "protocol_id": 13 + }, + "minecraft:chunks_biomes": { + "protocol_id": 14 + }, + "minecraft:clear_titles": { + "protocol_id": 15 + }, + "minecraft:command_suggestions": { + "protocol_id": 16 + }, + "minecraft:commands": { + "protocol_id": 17 + }, + "minecraft:container_close": { + "protocol_id": 18 + }, + "minecraft:container_set_content": { + "protocol_id": 19 + }, + "minecraft:container_set_data": { + "protocol_id": 20 + }, + "minecraft:container_set_slot": { + "protocol_id": 21 + }, + "minecraft:cookie_request": { + "protocol_id": 22 + }, + "minecraft:cooldown": { + "protocol_id": 23 + }, + "minecraft:custom_chat_completions": { + "protocol_id": 24 + }, + "minecraft:custom_payload": { + "protocol_id": 25 + }, + "minecraft:custom_report_details": { + "protocol_id": 122 + }, + "minecraft:damage_event": { + "protocol_id": 26 + }, + "minecraft:debug_sample": { + "protocol_id": 27 + }, + "minecraft:delete_chat": { + "protocol_id": 28 + }, + "minecraft:disconnect": { + "protocol_id": 29 + }, + "minecraft:disguised_chat": { + "protocol_id": 30 + }, + "minecraft:entity_event": { + "protocol_id": 31 + }, + "minecraft:explode": { + "protocol_id": 32 + }, + "minecraft:forget_level_chunk": { + "protocol_id": 33 + }, + "minecraft:game_event": { + "protocol_id": 34 + }, + "minecraft:horse_screen_open": { + "protocol_id": 35 + }, + "minecraft:hurt_animation": { + "protocol_id": 36 + }, + "minecraft:initialize_border": { + "protocol_id": 37 + }, + "minecraft:keep_alive": { + "protocol_id": 38 + }, + "minecraft:level_chunk_with_light": { + "protocol_id": 39 + }, + "minecraft:level_event": { + "protocol_id": 40 + }, + "minecraft:level_particles": { + "protocol_id": 41 + }, + "minecraft:light_update": { + "protocol_id": 42 + }, + "minecraft:login": { + "protocol_id": 43 + }, + "minecraft:map_item_data": { + "protocol_id": 44 + }, + "minecraft:merchant_offers": { + "protocol_id": 45 + }, + "minecraft:move_entity_pos": { + "protocol_id": 46 + }, + "minecraft:move_entity_pos_rot": { + "protocol_id": 47 + }, + "minecraft:move_entity_rot": { + "protocol_id": 48 + }, + "minecraft:move_vehicle": { + "protocol_id": 49 + }, + "minecraft:open_book": { + "protocol_id": 50 + }, + "minecraft:open_screen": { + "protocol_id": 51 + }, + "minecraft:open_sign_editor": { + "protocol_id": 52 + }, + "minecraft:ping": { + "protocol_id": 53 + }, + "minecraft:place_ghost_recipe": { + "protocol_id": 55 + }, + "minecraft:player_abilities": { + "protocol_id": 56 + }, + "minecraft:player_chat": { + "protocol_id": 57 + }, + "minecraft:player_combat_end": { + "protocol_id": 58 + }, + "minecraft:player_combat_enter": { + "protocol_id": 59 + }, + "minecraft:player_combat_kill": { + "protocol_id": 60 + }, + "minecraft:player_info_remove": { + "protocol_id": 61 + }, + "minecraft:player_info_update": { + "protocol_id": 62 + }, + "minecraft:player_look_at": { + "protocol_id": 63 + }, + "minecraft:player_position": { + "protocol_id": 64 + }, + "minecraft:pong_response": { + "protocol_id": 54 + }, + "minecraft:projectile_power": { + "protocol_id": 121 + }, + "minecraft:recipe": { + "protocol_id": 65 + }, + "minecraft:remove_entities": { + "protocol_id": 66 + }, + "minecraft:remove_mob_effect": { + "protocol_id": 67 + }, + "minecraft:reset_score": { + "protocol_id": 68 + }, + "minecraft:resource_pack_pop": { + "protocol_id": 69 + }, + "minecraft:resource_pack_push": { + "protocol_id": 70 + }, + "minecraft:respawn": { + "protocol_id": 71 + }, + "minecraft:rotate_head": { + "protocol_id": 72 + }, + "minecraft:section_blocks_update": { + "protocol_id": 73 + }, + "minecraft:select_advancements_tab": { + "protocol_id": 74 + }, + "minecraft:server_data": { + "protocol_id": 75 + }, + "minecraft:server_links": { + "protocol_id": 123 + }, + "minecraft:set_action_bar_text": { + "protocol_id": 76 + }, + "minecraft:set_border_center": { + "protocol_id": 77 + }, + "minecraft:set_border_lerp_size": { + "protocol_id": 78 + }, + "minecraft:set_border_size": { + "protocol_id": 79 + }, + "minecraft:set_border_warning_delay": { + "protocol_id": 80 + }, + "minecraft:set_border_warning_distance": { + "protocol_id": 81 + }, + "minecraft:set_camera": { + "protocol_id": 82 + }, + "minecraft:set_carried_item": { + "protocol_id": 83 + }, + "minecraft:set_chunk_cache_center": { + "protocol_id": 84 + }, + "minecraft:set_chunk_cache_radius": { + "protocol_id": 85 + }, + "minecraft:set_default_spawn_position": { + "protocol_id": 86 + }, + "minecraft:set_display_objective": { + "protocol_id": 87 + }, + "minecraft:set_entity_data": { + "protocol_id": 88 + }, + "minecraft:set_entity_link": { + "protocol_id": 89 + }, + "minecraft:set_entity_motion": { + "protocol_id": 90 + }, + "minecraft:set_equipment": { + "protocol_id": 91 + }, + "minecraft:set_experience": { + "protocol_id": 92 + }, + "minecraft:set_health": { + "protocol_id": 93 + }, + "minecraft:set_objective": { + "protocol_id": 94 + }, + "minecraft:set_passengers": { + "protocol_id": 95 + }, + "minecraft:set_player_team": { + "protocol_id": 96 + }, + "minecraft:set_score": { + "protocol_id": 97 + }, + "minecraft:set_simulation_distance": { + "protocol_id": 98 + }, + "minecraft:set_subtitle_text": { + "protocol_id": 99 + }, + "minecraft:set_time": { + "protocol_id": 100 + }, + "minecraft:set_title_text": { + "protocol_id": 101 + }, + "minecraft:set_titles_animation": { + "protocol_id": 102 + }, + "minecraft:sound": { + "protocol_id": 104 + }, + "minecraft:sound_entity": { + "protocol_id": 103 + }, + "minecraft:start_configuration": { + "protocol_id": 105 + }, + "minecraft:stop_sound": { + "protocol_id": 106 + }, + "minecraft:store_cookie": { + "protocol_id": 107 + }, + "minecraft:system_chat": { + "protocol_id": 108 + }, + "minecraft:tab_list": { + "protocol_id": 109 + }, + "minecraft:tag_query": { + "protocol_id": 110 + }, + "minecraft:take_item_entity": { + "protocol_id": 111 + }, + "minecraft:teleport_entity": { + "protocol_id": 112 + }, + "minecraft:ticking_state": { + "protocol_id": 113 + }, + "minecraft:ticking_step": { + "protocol_id": 114 + }, + "minecraft:transfer": { + "protocol_id": 115 + }, + "minecraft:update_advancements": { + "protocol_id": 116 + }, + "minecraft:update_attributes": { + "protocol_id": 117 + }, + "minecraft:update_mob_effect": { + "protocol_id": 118 + }, + "minecraft:update_recipes": { + "protocol_id": 119 + }, + "minecraft:update_tags": { + "protocol_id": 120 + } + }, + "serverbound": { + "minecraft:accept_teleportation": { + "protocol_id": 0 + }, + "minecraft:block_entity_tag_query": { + "protocol_id": 1 + }, + "minecraft:change_difficulty": { + "protocol_id": 2 + }, + "minecraft:chat": { + "protocol_id": 6 + }, + "minecraft:chat_ack": { + "protocol_id": 3 + }, + "minecraft:chat_command": { + "protocol_id": 4 + }, + "minecraft:chat_command_signed": { + "protocol_id": 5 + }, + "minecraft:chat_session_update": { + "protocol_id": 7 + }, + "minecraft:chunk_batch_received": { + "protocol_id": 8 + }, + "minecraft:client_command": { + "protocol_id": 9 + }, + "minecraft:client_information": { + "protocol_id": 10 + }, + "minecraft:command_suggestion": { + "protocol_id": 11 + }, + "minecraft:configuration_acknowledged": { + "protocol_id": 12 + }, + "minecraft:container_button_click": { + "protocol_id": 13 + }, + "minecraft:container_click": { + "protocol_id": 14 + }, + "minecraft:container_close": { + "protocol_id": 15 + }, + "minecraft:container_slot_state_changed": { + "protocol_id": 16 + }, + "minecraft:cookie_response": { + "protocol_id": 17 + }, + "minecraft:custom_payload": { + "protocol_id": 18 + }, + "minecraft:debug_sample_subscription": { + "protocol_id": 19 + }, + "minecraft:edit_book": { + "protocol_id": 20 + }, + "minecraft:entity_tag_query": { + "protocol_id": 21 + }, + "minecraft:interact": { + "protocol_id": 22 + }, + "minecraft:jigsaw_generate": { + "protocol_id": 23 + }, + "minecraft:keep_alive": { + "protocol_id": 24 + }, + "minecraft:lock_difficulty": { + "protocol_id": 25 + }, + "minecraft:move_player_pos": { + "protocol_id": 26 + }, + "minecraft:move_player_pos_rot": { + "protocol_id": 27 + }, + "minecraft:move_player_rot": { + "protocol_id": 28 + }, + "minecraft:move_player_status_only": { + "protocol_id": 29 + }, + "minecraft:move_vehicle": { + "protocol_id": 30 + }, + "minecraft:paddle_boat": { + "protocol_id": 31 + }, + "minecraft:pick_item": { + "protocol_id": 32 + }, + "minecraft:ping_request": { + "protocol_id": 33 + }, + "minecraft:place_recipe": { + "protocol_id": 34 + }, + "minecraft:player_abilities": { + "protocol_id": 35 + }, + "minecraft:player_action": { + "protocol_id": 36 + }, + "minecraft:player_command": { + "protocol_id": 37 + }, + "minecraft:player_input": { + "protocol_id": 38 + }, + "minecraft:pong": { + "protocol_id": 39 + }, + "minecraft:recipe_book_change_settings": { + "protocol_id": 40 + }, + "minecraft:recipe_book_seen_recipe": { + "protocol_id": 41 + }, + "minecraft:rename_item": { + "protocol_id": 42 + }, + "minecraft:resource_pack": { + "protocol_id": 43 + }, + "minecraft:seen_advancements": { + "protocol_id": 44 + }, + "minecraft:select_trade": { + "protocol_id": 45 + }, + "minecraft:set_beacon": { + "protocol_id": 46 + }, + "minecraft:set_carried_item": { + "protocol_id": 47 + }, + "minecraft:set_command_block": { + "protocol_id": 48 + }, + "minecraft:set_command_minecart": { + "protocol_id": 49 + }, + "minecraft:set_creative_mode_slot": { + "protocol_id": 50 + }, + "minecraft:set_jigsaw_block": { + "protocol_id": 51 + }, + "minecraft:set_structure_block": { + "protocol_id": 52 + }, + "minecraft:sign_update": { + "protocol_id": 53 + }, + "minecraft:swing": { + "protocol_id": 54 + }, + "minecraft:teleport_to_entity": { + "protocol_id": 55 + }, + "minecraft:use_item": { + "protocol_id": 57 + }, + "minecraft:use_item_on": { + "protocol_id": 56 + } + } + }, + "status": { + "clientbound": { + "minecraft:pong_response": { + "protocol_id": 1 + }, + "minecraft:status_response": { + "protocol_id": 0 + } + }, + "serverbound": { + "minecraft:ping_request": { + "protocol_id": 1 + }, + "minecraft:status_request": { + "protocol_id": 0 + } + } + } +} \ No newline at end of file diff --git a/src/lib/derive_macros/Cargo.toml b/src/lib/derive_macros/Cargo.toml index dc701177..3a9a7de6 100644 --- a/src/lib/derive_macros/Cargo.toml +++ b/src/lib/derive_macros/Cargo.toml @@ -17,4 +17,5 @@ syn = { workspace = true, features = ["full"] } thiserror = { workspace = true } proc-macro2 = { workspace = true } proc-macro-crate = { workspace = true } -serde_json = { workspace = true } \ No newline at end of file +serde_json = { workspace = true } +regex = "1.11.1" \ No newline at end of file diff --git a/src/lib/derive_macros/src/lib.rs b/src/lib/derive_macros/src/lib.rs index 3bb40c6e..35cf22ce 100644 --- a/src/lib/derive_macros/src/lib.rs +++ b/src/lib/derive_macros/src/lib.rs @@ -7,7 +7,7 @@ mod helpers; mod nbt; mod net; mod profiling; -mod registry; +mod static_loading; #[proc_macro_attribute] pub fn profile(attr: TokenStream, item: TokenStream) -> TokenStream { @@ -45,6 +45,11 @@ pub fn net_decode(input: TokenStream) -> TokenStream { } // #=================== PACKETS ===================# +/// You can get the packet_id from: +/// https://protocol.ferrumc.com, +/// In incoming packets (serverbound), +/// You should use the 'resource' value referenced in the packet, +/// e.g. "finish_configuration", which would result in the packet_id being automatically fetched. #[proc_macro_attribute] pub fn packet(args: TokenStream, input: TokenStream) -> TokenStream { net::packets::attribute(args, input) @@ -60,5 +65,13 @@ pub fn bake_packet_registry(input: TokenStream) -> TokenStream { /// returns protocol_id (as u64) of the specified entry. #[proc_macro] pub fn get_registry_entry(input: TokenStream) -> TokenStream { - registry::get_entry::get(input) + static_loading::registry::get(input) +} + +/// Get a packet entry from the packets.json file. +/// returns protocol_id (as 0x??) of the specified packet. +/// e.g. get_packet_entry!("play", "clientbound", "add_entity") -> 0x01 +#[proc_macro] +pub fn get_packet_entry(input: TokenStream) -> TokenStream { + static_loading::packets::get(input) } \ No newline at end of file diff --git a/src/lib/derive_macros/src/net/packets/mod.rs b/src/lib/derive_macros/src/net/packets/mod.rs index 2764c0fc..ccd4642d 100644 --- a/src/lib/derive_macros/src/net/packets/mod.rs +++ b/src/lib/derive_macros/src/net/packets/mod.rs @@ -1,9 +1,33 @@ use colored::Colorize; use proc_macro::TokenStream; -use quote::quote; +use quote::{quote, ToTokens}; use std::env; use std::ops::Add; -use syn::{parse_macro_input, LitInt, LitStr}; +use syn::{parse_macro_input, Attribute, LitInt, LitStr}; +use syn::parse::ParseStream; +use regex::Regex; +use crate::static_loading::packets::{get_packet_id, PacketBoundiness}; + +fn parse_packet_attribute(attr: &Attribute) -> Option<(String, String)> { + let attr_str = attr.to_token_stream().to_string(); + + println!("attr_str: {}", attr_str); + + // This regex matches both formats: + // #[packet(state = "play", packet_id = "something")] + // #[packet(packet_id = "something", state = "play")] + let re = Regex::new(r#"packet_id\s*=\s*((?:0x[\da-fA-F]+|\d+|"[^"]*")),\s*state\s*=\s*"([^"]*)""#).unwrap(); + + if let Some(caps) = re.captures(&attr_str) { + let packet_id = caps.get(1).map(|m| m.as_str().to_string())?; + let state = caps.get(2).map(|m| m.as_str().to_string())?; + + Some((state, packet_id)) + } else { + None + } +} + /// Essentially, this just reads all the files in the directory and generates a match arm for each packet. /// (packet_id, state) => { ... } @@ -40,6 +64,7 @@ pub fn bake_registry(input: TokenStream) -> TokenStream { let start = std::time::Instant::now(); + for entry in std::fs::read_dir(dir_path).expect("read_dir call failed") { let entry = entry.expect("entry failed"); let path = entry.path(); @@ -68,36 +93,14 @@ pub fn bake_registry(input: TokenStream) -> TokenStream { continue; } - attr.parse_nested_meta(|meta| { - let Some(ident) = meta.path.get_ident() else { - return Ok(()); - }; - - match ident.to_string().as_str() { - "packet_id" => { - let value = meta.value().expect("value failed"); - let value = value.parse::().expect("parse failed"); - let n: u8 = value.base10_parse().expect("base10_parse failed"); - packet_id = Some(n); - } - "state" => { - let value = meta.value().expect("value failed"); - let value = value.parse::().expect("parse failed"); - let n = value.value(); - state = Some(n); - } - &_ => { - return Ok(()); - } - } - - Ok(()) - }) - .unwrap(); - - let packet_id = packet_id.expect("packet_id not found"); - - let state = state.clone().expect("state not found"); + let (state, packet_id) = parse_packet_attribute(&attr) + .expect("parse_packet_attribute failed\ + \nPlease provide the packet_id and state fields in the #[packet(...)] attribute.\ + \nExample: #[packet(packet_id = 0x00, state = \"handshake\")]"); + + + let packet_id = parse_packet_id(state.as_str(), packet_id).expect("parse_packet_id failed"); + let struct_name = &item_struct.ident; println!( @@ -168,6 +171,23 @@ pub fn bake_registry(input: TokenStream) -> TokenStream { TokenStream::from(output) } + +fn parse_packet_id(state: &str, value: String) -> syn::Result { + //! Sorry to anyone reading this code. The get_packet_id method PANICS if there is any type of error. + //! these macros are treated like trash gah damn. they need better care 😔 + + // If the user provided a direct integer (like 0x01, or any number) value. + if value.starts_with("0x") { + let n = u8::from_str_radix(&value[2..], 16).expect("from_str_radix failed"); + return Ok(n); + } + + // If the user provided referencing packet id, then just get that. + let n = get_packet_id(state, PacketBoundiness::Clientbound, value.as_str()); + + Ok(n) +} + /// `#[packet]` attribute is used to declare an incoming/outgoing packet. /// /// packet_id => The packet id of the packet. In hexadecimal. @@ -217,3 +237,5 @@ pub fn attribute(args: TokenStream, input: TokenStream) -> TokenStream { input } + + diff --git a/src/lib/derive_macros/src/registry/mod.rs b/src/lib/derive_macros/src/registry/mod.rs deleted file mode 100644 index d438983a..00000000 --- a/src/lib/derive_macros/src/registry/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ - -pub(crate) mod get_entry; \ No newline at end of file diff --git a/src/lib/derive_macros/src/static_loading/mod.rs b/src/lib/derive_macros/src/static_loading/mod.rs new file mode 100644 index 00000000..8bade71d --- /dev/null +++ b/src/lib/derive_macros/src/static_loading/mod.rs @@ -0,0 +1,3 @@ + +pub(crate) mod registry; +pub(crate) mod packets; \ No newline at end of file diff --git a/src/lib/derive_macros/src/static_loading/packets.rs b/src/lib/derive_macros/src/static_loading/packets.rs new file mode 100644 index 00000000..8003bcbd --- /dev/null +++ b/src/lib/derive_macros/src/static_loading/packets.rs @@ -0,0 +1,142 @@ +use quote::quote; +use std::fmt::Display; +use std::sync::LazyLock; +use proc_macro2::TokenStream; +use syn::parse::Parse; +use syn::{parse_macro_input, LitStr, Token}; + +pub(crate) static PACKETS_JSON: LazyLock = LazyLock::new(|| { + let json_str = include_str!("../../../../../assets/data/packets.json"); + serde_json::from_str(json_str).unwrap() +}); + +pub(crate) fn get_packet_id(state: impl Into, bound: PacketBoundiness, packet_name: &str) -> u8 { + let mut current_value = &*PACKETS_JSON; + + // remove `"` from start and end of the packet_name: + let packet_name = packet_name.trim_matches('"'); + + let state = state.into(); + current_value = current_value + .get(state.to_string()) + .unwrap_or_else(|| panic!("Could not find key: {}.", state)); + + current_value = current_value + .get(bound.to_string()) + .unwrap_or_else(|| panic!("Could not find key: {}", bound)); + + current_value = current_value.get(format!("minecraft:{}", packet_name)) + .unwrap_or_else(|| panic!("Could not find key: `minecraft:{}` in the packet registry. Example: `add_entity`, would be 0x01 in the 1.21.1 protocol", packet_name)); + + let protocol_id = current_value + .get("protocol_id") + .and_then(|v| v.as_u64()) + .unwrap_or_else(|| panic!("Could not find key: {}", "protocol_id")); + + protocol_id as u8 +} + +struct PacketTypeInput { + state: PacketState, + bound: PacketBoundiness, + packet_name: String, +} + +pub(crate) enum PacketState { + Configuration, + Handshake, + Login, + Play, + Status, +} + +impl From<&str> for PacketState { + fn from(value: &str) -> Self { + match value { + "configuration" => PacketState::Configuration, + "handshake" => PacketState::Handshake, + "login" => PacketState::Login, + "play" => PacketState::Play, + "status" => PacketState::Status, + wrong => panic!("Invalid state: {}. Must be: `configuration`, `handshake`, `login`, `play`, or `status`", wrong), + } + } +} + +impl Display for PacketState { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + PacketState::Configuration => write!(f, "configuration"), + PacketState::Handshake => write!(f, "handshake"), + PacketState::Login => write!(f, "login"), + PacketState::Play => write!(f, "play"), + PacketState::Status => write!(f, "status"), + } + } +} + +pub(crate) enum PacketBoundiness { + Clientbound, + Serverbound, +} + +impl Display for PacketBoundiness { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + PacketBoundiness::Clientbound => write!(f, "clientbound"), + PacketBoundiness::Serverbound => write!(f, "serverbound"), + } + } +} + +impl Parse for PacketTypeInput { + fn parse(input: syn::parse::ParseStream) -> syn::Result { + // LitStr, Token![,], LitStr, Token![,], LitStr + + let state = match input.parse::()?.value().as_str() { + "configuration" => PacketState::Configuration, + "handshake" => PacketState::Handshake, + "login" => PacketState::Login, + "play" => PacketState::Play, + "status" => PacketState::Status, + wrong => panic!("Invalid state: {}. Must be: `configuration`, `handshake`, `login`, `play`, or `status`", wrong), + }; + + input.parse::()?; + + let bound = match input.parse::()?.value().as_str() { + "clientbound" => PacketBoundiness::Clientbound, + "serverbound" => PacketBoundiness::Serverbound, + wrong => panic!( + "Invalid bound: {}. Must be: `clientbound` or `serverbound` ", + wrong + ), + }; + + input.parse::()?; + + let packet_name = input.parse::()?.value(); + Ok(Self { + state, + bound, + packet_name, + }) + } +} + +pub(crate) fn get(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + let input = parse_macro_input!(input as PacketTypeInput); + + let protocol_id = get_packet_id(input.state, input.bound, &input.packet_name); + + let hex_id = { + let str_value = format!("0x{:02X}", protocol_id); + str_value.parse::().unwrap() + }; + + let expanded = quote! { + #hex_id + }; + + proc_macro::TokenStream::from(expanded) +} diff --git a/src/lib/derive_macros/src/registry/get_entry.rs b/src/lib/derive_macros/src/static_loading/registry.rs similarity index 100% rename from src/lib/derive_macros/src/registry/get_entry.rs rename to src/lib/derive_macros/src/static_loading/registry.rs diff --git a/src/lib/net/src/packets/incoming/ack_finish_configuration.rs b/src/lib/net/src/packets/incoming/ack_finish_configuration.rs index 175bcf69..e77f2f0e 100644 --- a/src/lib/net/src/packets/incoming/ack_finish_configuration.rs +++ b/src/lib/net/src/packets/incoming/ack_finish_configuration.rs @@ -6,7 +6,7 @@ use ferrumc_state::ServerState; use std::sync::Arc; #[derive(NetDecode)] -#[packet(packet_id = 0x03, state = "configuration")] +#[packet(packet_id = "finish_configuration", state = "configuration")] pub struct AckFinishConfigurationPacket {} impl IncomingPacket for AckFinishConfigurationPacket { From 7a53a8cc3603a1491dd7f033ccfffe9896a4a9ce Mon Sep 17 00:00:00 2001 From: Sweattypalms Date: Sat, 4 Jan 2025 19:33:05 +0900 Subject: [PATCH 3/8] Added proper state to all packets --- src/lib/derive_macros/src/net/encode.rs | 24 +--- src/lib/derive_macros/src/net/packets/mod.rs | 111 +++++++++--------- .../packets/outgoing/chunk_and_light_data.rs | 2 +- .../packets/outgoing/chunk_batch_finish.rs | 2 +- .../src/packets/outgoing/chunk_batch_start.rs | 2 +- .../outgoing/client_bound_known_packs.rs | 2 +- .../net/src/packets/outgoing/disconnect.rs | 2 +- .../src/packets/outgoing/entity_animation.rs | 2 +- .../src/packets/outgoing/entity_metadata.rs | 2 +- .../packets/outgoing/finish_configuration.rs | 2 +- .../net/src/packets/outgoing/game_event.rs | 2 +- .../net/src/packets/outgoing/keep_alive.rs | 2 +- .../src/packets/outgoing/login_disconnect.rs | 2 +- .../net/src/packets/outgoing/login_play.rs | 2 +- .../net/src/packets/outgoing/login_success.rs | 2 +- .../net/src/packets/outgoing/ping_response.rs | 2 +- .../packets/outgoing/player_info_update.rs | 2 +- .../net/src/packets/outgoing/registry_data.rs | 2 +- .../src/packets/outgoing/remove_entities.rs | 2 +- .../src/packets/outgoing/set_center_chunk.rs | 2 +- .../outgoing/set_default_spawn_position.rs | 2 +- .../src/packets/outgoing/set_head_rotation.rs | 2 +- .../packets/outgoing/set_render_distance.rs | 2 +- .../net/src/packets/outgoing/spawn_entity.rs | 2 +- .../src/packets/outgoing/status_response.rs | 2 +- .../outgoing/synchronize_player_position.rs | 2 +- .../src/packets/outgoing/teleport_entity.rs | 2 +- .../outgoing/update_entity_position.rs | 2 +- .../update_entity_position_and_rotation.rs | 2 +- .../outgoing/update_entity_rotation.rs | 2 +- .../net/src/packets/outgoing/update_time.rs | 2 +- src/lib/text/src/tests.rs | 2 +- 32 files changed, 88 insertions(+), 107 deletions(-) diff --git a/src/lib/derive_macros/src/net/encode.rs b/src/lib/derive_macros/src/net/encode.rs index afb15d4e..0e8797a3 100644 --- a/src/lib/derive_macros/src/net/encode.rs +++ b/src/lib/derive_macros/src/net/encode.rs @@ -2,27 +2,7 @@ use crate::helpers::{get_derive_attributes, StructInfo}; use proc_macro::TokenStream; use quote::quote; use syn::{parse_macro_input, Attribute, DeriveInput, Fields, LitInt}; - -// Helper function to extract packet ID from attributes -fn extract_packet_id(packet_attr: Vec) -> Option { - let mut packet_id = None; - packet_attr.iter().for_each(|attr| { - attr.parse_nested_meta(|meta| { - let Some(ident) = meta.path.get_ident() else { - return Ok(()); - }; - - if ident == "packet_id" { - let value = meta.value().expect("value failed"); - let value = value.parse::().expect("parse failed"); - packet_id = Some(value.base10_parse::().expect("base10_parse failed")); - } - Ok(()) - }) - .unwrap(); - }); - packet_id -} +use crate::net::packets::get_packet_details_from_attributes; // Generate packet ID encoding snippets fn generate_packet_id_snippets( @@ -156,7 +136,7 @@ pub(crate) fn derive(input: TokenStream) -> TokenStream { let packet_attr = get_derive_attributes(&input, "packet"); let (packet_id_snippet, async_packet_id_snippet) = - generate_packet_id_snippets(extract_packet_id(packet_attr)); + generate_packet_id_snippets(get_packet_details_from_attributes(packet_attr.as_slice()).unzip().1); let (sync_impl, async_impl) = match &input.data { syn::Data::Struct(data) => { diff --git a/src/lib/derive_macros/src/net/packets/mod.rs b/src/lib/derive_macros/src/net/packets/mod.rs index ccd4642d..6f9c193f 100644 --- a/src/lib/derive_macros/src/net/packets/mod.rs +++ b/src/lib/derive_macros/src/net/packets/mod.rs @@ -1,22 +1,22 @@ +use crate::static_loading::packets::{get_packet_id, PacketBoundiness}; use colored::Colorize; use proc_macro::TokenStream; use quote::{quote, ToTokens}; +use regex::Regex; use std::env; use std::ops::Add; -use syn::{parse_macro_input, Attribute, LitInt, LitStr}; -use syn::parse::ParseStream; -use regex::Regex; -use crate::static_loading::packets::{get_packet_id, PacketBoundiness}; +use syn::{parse_macro_input, Attribute}; +/// Returns: (state, packet_id) fn parse_packet_attribute(attr: &Attribute) -> Option<(String, String)> { let attr_str = attr.to_token_stream().to_string(); - - println!("attr_str: {}", attr_str); - + // This regex matches both formats: // #[packet(state = "play", packet_id = "something")] // #[packet(packet_id = "something", state = "play")] - let re = Regex::new(r#"packet_id\s*=\s*((?:0x[\da-fA-F]+|\d+|"[^"]*")),\s*state\s*=\s*"([^"]*)""#).unwrap(); + let re = + Regex::new(r#"packet_id\s*=\s*((?:0x[\da-fA-F]+|\d+|"[^"]*")),\s*state\s*=\s*"([^"]*)""#) + .unwrap(); if let Some(caps) = re.captures(&attr_str) { let packet_id = caps.get(1).map(|m| m.as_str().to_string())?; @@ -28,6 +28,26 @@ fn parse_packet_attribute(attr: &Attribute) -> Option<(String, String)> { } } +/// Returns: (state, packet_id) +pub(crate) fn get_packet_details_from_attributes( + attrs: &[Attribute], +) -> Option<(String, u8)> { + let mut val = Option::<(String, String)>::None; + + for attr in attrs { + if !attr.path().is_ident("packet") { + continue; + } + + val = parse_packet_attribute(attr); + } + + let (state, packet_id) = val?; + + let packet_id = parse_packet_id(state.as_str(), packet_id).expect("parse_packet_id failed"); + + Some((state, packet_id)) +} /// Essentially, this just reads all the files in the directory and generates a match arm for each packet. /// (packet_id, state) => { ... } @@ -64,7 +84,6 @@ pub fn bake_registry(input: TokenStream) -> TokenStream { let start = std::time::Instant::now(); - for entry in std::fs::read_dir(dir_path).expect("read_dir call failed") { let entry = entry.expect("entry failed"); let path = entry.path(); @@ -83,47 +102,33 @@ pub fn bake_registry(input: TokenStream) -> TokenStream { }; // format: #[packet(packet_id = 0x00, state = "handshake")] - - let mut packet_id: Option = None; - let mut state: Option = None; - - for attr in item_struct.attrs { - // #[packet(...)] part. - if !attr.path().is_ident("packet") { - continue; - } - - let (state, packet_id) = parse_packet_attribute(&attr) - .expect("parse_packet_attribute failed\ - \nPlease provide the packet_id and state fields in the #[packet(...)] attribute.\ - \nExample: #[packet(packet_id = 0x00, state = \"handshake\")]"); - - - let packet_id = parse_packet_id(state.as_str(), packet_id).expect("parse_packet_id failed"); - - let struct_name = &item_struct.ident; - - println!( - " {} {} (ID: {}, State: {}, Struct Name: {})", - "[FERRUMC_MACROS]".bold().blue(), - "Found Packet".white().bold(), - format!("0x{:02X}", packet_id).cyan(), - state.green(), - struct_name.to_string().yellow() - ); - - let path = format!( - // "crate::net::packets::incoming::{}", - "{}::{}", - base_path, - file_name.to_string_lossy().replace(".rs", "") - ); - let struct_path = format!("{}::{}", path, struct_name); - - let struct_path = - syn::parse_str::(&struct_path).expect("parse_str failed"); - - match_arms.push(quote! { + let (state, packet_id) = get_packet_details_from_attributes(&item_struct.attrs).expect( + "parse_packet_attribute failed\ + \nPlease provide the packet_id and state fields in the #[packet(...)] attribute.\ + \nExample: #[packet(packet_id = 0x00, state = \"handshake\")]", + ); + + let struct_name = &item_struct.ident; + + println!( + " {} {} (ID: {}, State: {}, Struct Name: {})", + "[FERRUMC_MACROS]".bold().blue(), + "Found Packet".white().bold(), + format!("0x{:02X}", packet_id).cyan(), + state.green(), + struct_name.to_string().yellow() + ); + + let path = format!( + "{}::{}", + base_path, + file_name.to_string_lossy().replace(".rs", "") + ); + let struct_path = format!("{}::{}", path, struct_name); + + let struct_path = syn::parse_str::(&struct_path).expect("parse_str failed"); + + match_arms.push(quote! { (#packet_id, #state) => { // let packet= #struct_path::net_decode(cursor).await?; let packet = <#struct_path as ferrumc_net_codec::decode::NetDecode>::decode(cursor, &ferrumc_net_codec::decode::NetDecodeOpts::None)?; @@ -132,7 +137,6 @@ pub fn bake_registry(input: TokenStream) -> TokenStream { // tracing::debug!("Received packet: {:?}", packet); }, }); - } } } @@ -171,7 +175,6 @@ pub fn bake_registry(input: TokenStream) -> TokenStream { TokenStream::from(output) } - fn parse_packet_id(state: &str, value: String) -> syn::Result { //! Sorry to anyone reading this code. The get_packet_id method PANICS if there is any type of error. //! these macros are treated like trash gah damn. they need better care 😔 @@ -228,7 +231,7 @@ pub fn attribute(args: TokenStream, input: TokenStream) -> TokenStream { if !&["packet_id", "state"] .iter() - .any(|x| args.to_string().contains(x)) + .all(|x| args.to_string().contains(x)) { return TokenStream::from(quote! { compile_error!(#E); @@ -237,5 +240,3 @@ pub fn attribute(args: TokenStream, input: TokenStream) -> TokenStream { input } - - diff --git a/src/lib/net/src/packets/outgoing/chunk_and_light_data.rs b/src/lib/net/src/packets/outgoing/chunk_and_light_data.rs index 345cba66..ace00168 100644 --- a/src/lib/net/src/packets/outgoing/chunk_and_light_data.rs +++ b/src/lib/net/src/packets/outgoing/chunk_and_light_data.rs @@ -20,7 +20,7 @@ pub struct BlockEntity { } #[derive(NetEncode)] -#[packet(packet_id = 0x27)] +#[packet(packet_id = "level_chunk_with_light", state = "play")] pub struct ChunkAndLightData { pub chunk_x: i32, pub chunk_z: i32, diff --git a/src/lib/net/src/packets/outgoing/chunk_batch_finish.rs b/src/lib/net/src/packets/outgoing/chunk_batch_finish.rs index e15550ea..10fbe9ce 100644 --- a/src/lib/net/src/packets/outgoing/chunk_batch_finish.rs +++ b/src/lib/net/src/packets/outgoing/chunk_batch_finish.rs @@ -3,7 +3,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x0C)] +#[packet(packet_id = 0x0C, state = "play")] pub struct ChunkBatchFinish { pub batch_size: VarInt, } diff --git a/src/lib/net/src/packets/outgoing/chunk_batch_start.rs b/src/lib/net/src/packets/outgoing/chunk_batch_start.rs index 11867687..15500583 100644 --- a/src/lib/net/src/packets/outgoing/chunk_batch_start.rs +++ b/src/lib/net/src/packets/outgoing/chunk_batch_start.rs @@ -2,5 +2,5 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x0D)] +#[packet(packet_id = 0x0D, state = "play")] pub struct ChunkBatchStart {} diff --git a/src/lib/net/src/packets/outgoing/client_bound_known_packs.rs b/src/lib/net/src/packets/outgoing/client_bound_known_packs.rs index 4b12678e..f69b007c 100644 --- a/src/lib/net/src/packets/outgoing/client_bound_known_packs.rs +++ b/src/lib/net/src/packets/outgoing/client_bound_known_packs.rs @@ -3,7 +3,7 @@ use ferrumc_net_codec::net_types::length_prefixed_vec::LengthPrefixedVec; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x0E)] +#[packet(packet_id = 0x0E, state = "configuration")] pub struct ClientBoundKnownPacksPacket<'a> { pub packs: LengthPrefixedVec>, } diff --git a/src/lib/net/src/packets/outgoing/disconnect.rs b/src/lib/net/src/packets/outgoing/disconnect.rs index 2b7dfb0a..5f5e8e2d 100644 --- a/src/lib/net/src/packets/outgoing/disconnect.rs +++ b/src/lib/net/src/packets/outgoing/disconnect.rs @@ -3,7 +3,7 @@ use ferrumc_text::{ComponentBuilder, TextComponent}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x1D)] +#[packet(packet_id = 0x1D, state = "play")] pub struct DisconnectPacket { pub reason: TextComponent, } diff --git a/src/lib/net/src/packets/outgoing/entity_animation.rs b/src/lib/net/src/packets/outgoing/entity_animation.rs index 5728ff22..01857842 100644 --- a/src/lib/net/src/packets/outgoing/entity_animation.rs +++ b/src/lib/net/src/packets/outgoing/entity_animation.rs @@ -4,7 +4,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x03)] +#[packet(packet_id = 0x03, state = "play")] pub struct EntityAnimationPacket { pub eid: VarInt, pub animation: u8, diff --git a/src/lib/net/src/packets/outgoing/entity_metadata.rs b/src/lib/net/src/packets/outgoing/entity_metadata.rs index a2735ba5..fc55a47b 100644 --- a/src/lib/net/src/packets/outgoing/entity_metadata.rs +++ b/src/lib/net/src/packets/outgoing/entity_metadata.rs @@ -11,7 +11,7 @@ use tokio::io::AsyncWrite; /// Packet for sending entity metadata updates to clients #[derive(NetEncode)] -#[packet(packet_id = 0x58)] +#[packet(packet_id = 0x58, state = "play")] pub struct EntityMetadataPacket { entity_id: VarInt, metadata: Vec, diff --git a/src/lib/net/src/packets/outgoing/finish_configuration.rs b/src/lib/net/src/packets/outgoing/finish_configuration.rs index d056ad0e..2d4cca5a 100644 --- a/src/lib/net/src/packets/outgoing/finish_configuration.rs +++ b/src/lib/net/src/packets/outgoing/finish_configuration.rs @@ -2,7 +2,7 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x03)] +#[packet(packet_id = 0x03, state = "configuration")] pub struct FinishConfigurationPacket; impl Default for FinishConfigurationPacket { diff --git a/src/lib/net/src/packets/outgoing/game_event.rs b/src/lib/net/src/packets/outgoing/game_event.rs index 19b66809..d9f554a3 100644 --- a/src/lib/net/src/packets/outgoing/game_event.rs +++ b/src/lib/net/src/packets/outgoing/game_event.rs @@ -2,7 +2,7 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x22)] +#[packet(packet_id = 0x22, state = "play")] pub struct GameEventPacket { pub event_id: u8, pub value: f32, diff --git a/src/lib/net/src/packets/outgoing/keep_alive.rs b/src/lib/net/src/packets/outgoing/keep_alive.rs index 583295a9..5012fac5 100644 --- a/src/lib/net/src/packets/outgoing/keep_alive.rs +++ b/src/lib/net/src/packets/outgoing/keep_alive.rs @@ -2,7 +2,7 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode, Clone)] -#[packet(packet_id = 0x26)] +#[packet(packet_id = 0x26, state = "play")] pub struct OutgoingKeepAlivePacket { pub timestamp: i64, } diff --git a/src/lib/net/src/packets/outgoing/login_disconnect.rs b/src/lib/net/src/packets/outgoing/login_disconnect.rs index 6e1b422a..4a5c419f 100644 --- a/src/lib/net/src/packets/outgoing/login_disconnect.rs +++ b/src/lib/net/src/packets/outgoing/login_disconnect.rs @@ -2,7 +2,7 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x00)] +#[packet(packet_id = 0x00, state = "login")] pub struct LoginDisconnectPacket<'a> { pub reason: &'a str, } diff --git a/src/lib/net/src/packets/outgoing/login_play.rs b/src/lib/net/src/packets/outgoing/login_play.rs index 14b8b4fc..d2b5d3d1 100644 --- a/src/lib/net/src/packets/outgoing/login_play.rs +++ b/src/lib/net/src/packets/outgoing/login_play.rs @@ -3,7 +3,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x2B)] +#[packet(packet_id = 0x2B, state = "play")] pub struct LoginPlayPacket<'a> { pub entity_id: i32, pub is_hardcore: bool, diff --git a/src/lib/net/src/packets/outgoing/login_success.rs b/src/lib/net/src/packets/outgoing/login_success.rs index c244ee30..2338b4d3 100644 --- a/src/lib/net/src/packets/outgoing/login_success.rs +++ b/src/lib/net/src/packets/outgoing/login_success.rs @@ -3,7 +3,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x02)] +#[packet(packet_id = 0x02, state = "login")] pub struct LoginSuccessPacket<'a> { pub uuid: u128, pub username: &'a str, diff --git a/src/lib/net/src/packets/outgoing/ping_response.rs b/src/lib/net/src/packets/outgoing/ping_response.rs index 4f034c56..f1e173b4 100644 --- a/src/lib/net/src/packets/outgoing/ping_response.rs +++ b/src/lib/net/src/packets/outgoing/ping_response.rs @@ -2,7 +2,7 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x01)] +#[packet(packet_id = 0x01, state = "status")] pub struct PongPacket { pub payload: i64, } diff --git a/src/lib/net/src/packets/outgoing/player_info_update.rs b/src/lib/net/src/packets/outgoing/player_info_update.rs index 9eae4f0a..4e30b8fd 100644 --- a/src/lib/net/src/packets/outgoing/player_info_update.rs +++ b/src/lib/net/src/packets/outgoing/player_info_update.rs @@ -9,7 +9,7 @@ use std::io::Write; use tracing::debug; #[derive(NetEncode)] -#[packet(packet_id = 0x3E)] +#[packet(packet_id = 0x3E, state = "play")] pub struct PlayerInfoUpdatePacket { pub actions: u8, pub numbers_of_players: VarInt, diff --git a/src/lib/net/src/packets/outgoing/registry_data.rs b/src/lib/net/src/packets/outgoing/registry_data.rs index 7678f02e..e66647fa 100644 --- a/src/lib/net/src/packets/outgoing/registry_data.rs +++ b/src/lib/net/src/packets/outgoing/registry_data.rs @@ -4,7 +4,7 @@ use ferrumc_net_codec::net_types::length_prefixed_vec::LengthPrefixedVec; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x07)] +#[packet(packet_id = 0x07, state = "configuration")] pub struct RegistryDataPacket<'a> { pub registry_id: &'a str, pub entries: LengthPrefixedVec>, diff --git a/src/lib/net/src/packets/outgoing/remove_entities.rs b/src/lib/net/src/packets/outgoing/remove_entities.rs index d9b8f7e4..8ca8800b 100644 --- a/src/lib/net/src/packets/outgoing/remove_entities.rs +++ b/src/lib/net/src/packets/outgoing/remove_entities.rs @@ -5,7 +5,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x42)] +#[packet(packet_id = 0x42, state = "play")] pub struct RemoveEntitiesPacket { pub entity_ids: LengthPrefixedVec, } diff --git a/src/lib/net/src/packets/outgoing/set_center_chunk.rs b/src/lib/net/src/packets/outgoing/set_center_chunk.rs index 72eeb7d2..ebb1a5bf 100644 --- a/src/lib/net/src/packets/outgoing/set_center_chunk.rs +++ b/src/lib/net/src/packets/outgoing/set_center_chunk.rs @@ -3,7 +3,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x54)] +#[packet(packet_id = 0x54, state = "play")] pub struct SetCenterChunk { pub x: VarInt, pub z: VarInt, diff --git a/src/lib/net/src/packets/outgoing/set_default_spawn_position.rs b/src/lib/net/src/packets/outgoing/set_default_spawn_position.rs index c1ca5a0a..ce084e86 100644 --- a/src/lib/net/src/packets/outgoing/set_default_spawn_position.rs +++ b/src/lib/net/src/packets/outgoing/set_default_spawn_position.rs @@ -3,7 +3,7 @@ use ferrumc_net_codec::net_types::network_position::NetworkPosition; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x56)] +#[packet(packet_id = 0x56, state = "play")] pub struct SetDefaultSpawnPositionPacket { pub spawn_position: NetworkPosition, pub angle: f32, diff --git a/src/lib/net/src/packets/outgoing/set_head_rotation.rs b/src/lib/net/src/packets/outgoing/set_head_rotation.rs index 30b95570..33d1622a 100644 --- a/src/lib/net/src/packets/outgoing/set_head_rotation.rs +++ b/src/lib/net/src/packets/outgoing/set_head_rotation.rs @@ -4,7 +4,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(Debug, NetEncode)] -#[packet(packet_id = 0x48)] +#[packet(packet_id = 0x48, state = "play")] pub struct SetHeadRotationPacket { pub entity_id: VarInt, pub head_yaw: NetAngle, diff --git a/src/lib/net/src/packets/outgoing/set_render_distance.rs b/src/lib/net/src/packets/outgoing/set_render_distance.rs index 5992ca70..be357e46 100644 --- a/src/lib/net/src/packets/outgoing/set_render_distance.rs +++ b/src/lib/net/src/packets/outgoing/set_render_distance.rs @@ -3,7 +3,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x55)] +#[packet(packet_id = 0x55, state = "play")] pub struct SetRenderDistance { pub distance: VarInt, } diff --git a/src/lib/net/src/packets/outgoing/spawn_entity.rs b/src/lib/net/src/packets/outgoing/spawn_entity.rs index d35fd1ef..3748ab01 100644 --- a/src/lib/net/src/packets/outgoing/spawn_entity.rs +++ b/src/lib/net/src/packets/outgoing/spawn_entity.rs @@ -11,7 +11,7 @@ use ferrumc_state::GlobalState; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x01)] +#[packet(packet_id = 0x01, state = "play")] pub struct SpawnEntityPacket { entity_id: VarInt, entity_uuid: u128, diff --git a/src/lib/net/src/packets/outgoing/status_response.rs b/src/lib/net/src/packets/outgoing/status_response.rs index 74bfb66d..a8da89e2 100644 --- a/src/lib/net/src/packets/outgoing/status_response.rs +++ b/src/lib/net/src/packets/outgoing/status_response.rs @@ -2,7 +2,7 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x00)] +#[packet(packet_id = 0x00, state = "status")] pub struct StatusResponse { pub json_response: String, } diff --git a/src/lib/net/src/packets/outgoing/synchronize_player_position.rs b/src/lib/net/src/packets/outgoing/synchronize_player_position.rs index 3e0fb3a3..4914f610 100644 --- a/src/lib/net/src/packets/outgoing/synchronize_player_position.rs +++ b/src/lib/net/src/packets/outgoing/synchronize_player_position.rs @@ -4,7 +4,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x40)] +#[packet(packet_id = 0x40, state = "play")] pub struct SynchronizePlayerPositionPacket { pub x: f64, pub y: f64, diff --git a/src/lib/net/src/packets/outgoing/teleport_entity.rs b/src/lib/net/src/packets/outgoing/teleport_entity.rs index ba716ccd..e9271a59 100644 --- a/src/lib/net/src/packets/outgoing/teleport_entity.rs +++ b/src/lib/net/src/packets/outgoing/teleport_entity.rs @@ -7,7 +7,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x70)] +#[packet(packet_id = 0x70, state = "play")] pub struct TeleportEntityPacket { pub entity_id: VarInt, pub x: f64, diff --git a/src/lib/net/src/packets/outgoing/update_entity_position.rs b/src/lib/net/src/packets/outgoing/update_entity_position.rs index e7ab4320..d72abb97 100644 --- a/src/lib/net/src/packets/outgoing/update_entity_position.rs +++ b/src/lib/net/src/packets/outgoing/update_entity_position.rs @@ -4,7 +4,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x2E)] +#[packet(packet_id = 0x2E, state = "play")] pub struct UpdateEntityPositionPacket { pub entity_id: VarInt, pub delta_x: i16, diff --git a/src/lib/net/src/packets/outgoing/update_entity_position_and_rotation.rs b/src/lib/net/src/packets/outgoing/update_entity_position_and_rotation.rs index f2a8c96d..fcb9b863 100644 --- a/src/lib/net/src/packets/outgoing/update_entity_position_and_rotation.rs +++ b/src/lib/net/src/packets/outgoing/update_entity_position_and_rotation.rs @@ -6,7 +6,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x2F)] +#[packet(packet_id = 0x2F, state = "play")] pub struct UpdateEntityPositionAndRotationPacket { pub entity_id: VarInt, pub delta_x: i16, diff --git a/src/lib/net/src/packets/outgoing/update_entity_rotation.rs b/src/lib/net/src/packets/outgoing/update_entity_rotation.rs index 96b91916..cac2b2b8 100644 --- a/src/lib/net/src/packets/outgoing/update_entity_rotation.rs +++ b/src/lib/net/src/packets/outgoing/update_entity_rotation.rs @@ -6,7 +6,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x30)] +#[packet(packet_id = 0x30, state = "play")] pub struct UpdateEntityRotationPacket { pub entity_id: VarInt, pub yaw: NetAngle, diff --git a/src/lib/net/src/packets/outgoing/update_time.rs b/src/lib/net/src/packets/outgoing/update_time.rs index 2f0838b4..c66f9e3c 100644 --- a/src/lib/net/src/packets/outgoing/update_time.rs +++ b/src/lib/net/src/packets/outgoing/update_time.rs @@ -3,7 +3,7 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x64)] +#[packet(packet_id = 0x64, state = "play")] pub struct UpdateTimePacket { pub world_age: i64, pub time_of_day: i64, diff --git a/src/lib/text/src/tests.rs b/src/lib/text/src/tests.rs index 1ee4b05a..add90bb1 100644 --- a/src/lib/text/src/tests.rs +++ b/src/lib/text/src/tests.rs @@ -95,7 +95,7 @@ use std::fs::File; use std::io::{Cursor, Write}; #[derive(NetEncode)] -#[packet(packet_id = 0x6C)] +#[packet(packet_id = 0x6C, state = "play")] struct TestPacket { message: TextComponent, overlay: bool, From 927c05b2b56973d9bdfea2ab5d3d6fcd36430375 Mon Sep 17 00:00:00 2001 From: Sweattypalms Date: Sat, 4 Jan 2025 20:27:16 +0900 Subject: [PATCH 4/8] Outgoing, packet ids replaced with resource names. --- src/lib/derive_macros/src/net/packets/mod.rs | 10 ++-------- src/lib/net/src/packets/outgoing/chunk_batch_finish.rs | 2 +- src/lib/net/src/packets/outgoing/chunk_batch_start.rs | 2 +- .../src/packets/outgoing/client_bound_known_packs.rs | 2 +- src/lib/net/src/packets/outgoing/disconnect.rs | 2 +- src/lib/net/src/packets/outgoing/entity_animation.rs | 2 +- src/lib/net/src/packets/outgoing/entity_metadata.rs | 2 +- .../net/src/packets/outgoing/finish_configuration.rs | 2 +- src/lib/net/src/packets/outgoing/game_event.rs | 2 +- src/lib/net/src/packets/outgoing/keep_alive.rs | 2 +- src/lib/net/src/packets/outgoing/login_disconnect.rs | 2 +- src/lib/net/src/packets/outgoing/login_play.rs | 2 +- src/lib/net/src/packets/outgoing/login_success.rs | 2 +- src/lib/net/src/packets/outgoing/ping_response.rs | 2 +- src/lib/net/src/packets/outgoing/player_info_update.rs | 2 +- src/lib/net/src/packets/outgoing/registry_data.rs | 2 +- src/lib/net/src/packets/outgoing/remove_entities.rs | 2 +- src/lib/net/src/packets/outgoing/set_center_chunk.rs | 2 +- .../src/packets/outgoing/set_default_spawn_position.rs | 2 +- src/lib/net/src/packets/outgoing/set_head_rotation.rs | 2 +- .../net/src/packets/outgoing/set_render_distance.rs | 2 +- src/lib/net/src/packets/outgoing/spawn_entity.rs | 2 +- src/lib/net/src/packets/outgoing/status_response.rs | 2 +- .../packets/outgoing/synchronize_player_position.rs | 2 +- src/lib/net/src/packets/outgoing/teleport_entity.rs | 2 +- .../net/src/packets/outgoing/update_entity_position.rs | 2 +- .../outgoing/update_entity_position_and_rotation.rs | 2 +- .../net/src/packets/outgoing/update_entity_rotation.rs | 2 +- src/lib/net/src/packets/outgoing/update_time.rs | 2 +- 29 files changed, 30 insertions(+), 36 deletions(-) diff --git a/src/lib/derive_macros/src/net/packets/mod.rs b/src/lib/derive_macros/src/net/packets/mod.rs index 6f9c193f..2d2a1af2 100644 --- a/src/lib/derive_macros/src/net/packets/mod.rs +++ b/src/lib/derive_macros/src/net/packets/mod.rs @@ -12,16 +12,12 @@ fn parse_packet_attribute(attr: &Attribute) -> Option<(String, String)> { let attr_str = attr.to_token_stream().to_string(); // This regex matches both formats: - // #[packet(state = "play", packet_id = "something")] // #[packet(packet_id = "something", state = "play")] - let re = - Regex::new(r#"packet_id\s*=\s*((?:0x[\da-fA-F]+|\d+|"[^"]*")),\s*state\s*=\s*"([^"]*)""#) - .unwrap(); + let re = Regex::new(r#"packet_id\s*=\s*"([^"]+)"(?:\s*,\s*)?state\s*=\s*"([^"]+)""#).unwrap(); if let Some(caps) = re.captures(&attr_str) { let packet_id = caps.get(1).map(|m| m.as_str().to_string())?; let state = caps.get(2).map(|m| m.as_str().to_string())?; - Some((state, packet_id)) } else { None @@ -29,9 +25,7 @@ fn parse_packet_attribute(attr: &Attribute) -> Option<(String, String)> { } /// Returns: (state, packet_id) -pub(crate) fn get_packet_details_from_attributes( - attrs: &[Attribute], -) -> Option<(String, u8)> { +pub(crate) fn get_packet_details_from_attributes(attrs: &[Attribute]) -> Option<(String, u8)> { let mut val = Option::<(String, String)>::None; for attr in attrs { diff --git a/src/lib/net/src/packets/outgoing/chunk_batch_finish.rs b/src/lib/net/src/packets/outgoing/chunk_batch_finish.rs index 10fbe9ce..beb76d32 100644 --- a/src/lib/net/src/packets/outgoing/chunk_batch_finish.rs +++ b/src/lib/net/src/packets/outgoing/chunk_batch_finish.rs @@ -3,7 +3,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x0C, state = "play")] +#[packet(packet_id = "chunk_batch_finished", state = "play")] pub struct ChunkBatchFinish { pub batch_size: VarInt, } diff --git a/src/lib/net/src/packets/outgoing/chunk_batch_start.rs b/src/lib/net/src/packets/outgoing/chunk_batch_start.rs index 15500583..c886efc9 100644 --- a/src/lib/net/src/packets/outgoing/chunk_batch_start.rs +++ b/src/lib/net/src/packets/outgoing/chunk_batch_start.rs @@ -2,5 +2,5 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x0D, state = "play")] +#[packet(packet_id = "chunk_batch_start", state = "play")] pub struct ChunkBatchStart {} diff --git a/src/lib/net/src/packets/outgoing/client_bound_known_packs.rs b/src/lib/net/src/packets/outgoing/client_bound_known_packs.rs index f69b007c..694148c0 100644 --- a/src/lib/net/src/packets/outgoing/client_bound_known_packs.rs +++ b/src/lib/net/src/packets/outgoing/client_bound_known_packs.rs @@ -3,7 +3,7 @@ use ferrumc_net_codec::net_types::length_prefixed_vec::LengthPrefixedVec; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x0E, state = "configuration")] +#[packet(packet_id = "select_known_packs", state = "configuration")] pub struct ClientBoundKnownPacksPacket<'a> { pub packs: LengthPrefixedVec>, } diff --git a/src/lib/net/src/packets/outgoing/disconnect.rs b/src/lib/net/src/packets/outgoing/disconnect.rs index 5f5e8e2d..77da9b29 100644 --- a/src/lib/net/src/packets/outgoing/disconnect.rs +++ b/src/lib/net/src/packets/outgoing/disconnect.rs @@ -3,7 +3,7 @@ use ferrumc_text::{ComponentBuilder, TextComponent}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x1D, state = "play")] +#[packet(packet_id = "disconnect", state = "play")] pub struct DisconnectPacket { pub reason: TextComponent, } diff --git a/src/lib/net/src/packets/outgoing/entity_animation.rs b/src/lib/net/src/packets/outgoing/entity_animation.rs index 01857842..c34ab2c3 100644 --- a/src/lib/net/src/packets/outgoing/entity_animation.rs +++ b/src/lib/net/src/packets/outgoing/entity_animation.rs @@ -4,7 +4,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x03, state = "play")] +#[packet(packet_id = "animate", state = "play")] pub struct EntityAnimationPacket { pub eid: VarInt, pub animation: u8, diff --git a/src/lib/net/src/packets/outgoing/entity_metadata.rs b/src/lib/net/src/packets/outgoing/entity_metadata.rs index fc55a47b..1bf51732 100644 --- a/src/lib/net/src/packets/outgoing/entity_metadata.rs +++ b/src/lib/net/src/packets/outgoing/entity_metadata.rs @@ -11,7 +11,7 @@ use tokio::io::AsyncWrite; /// Packet for sending entity metadata updates to clients #[derive(NetEncode)] -#[packet(packet_id = 0x58, state = "play")] +#[packet(packet_id = "set_entity_data", state = "play")] pub struct EntityMetadataPacket { entity_id: VarInt, metadata: Vec, diff --git a/src/lib/net/src/packets/outgoing/finish_configuration.rs b/src/lib/net/src/packets/outgoing/finish_configuration.rs index 2d4cca5a..b16a0df2 100644 --- a/src/lib/net/src/packets/outgoing/finish_configuration.rs +++ b/src/lib/net/src/packets/outgoing/finish_configuration.rs @@ -2,7 +2,7 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x03, state = "configuration")] +#[packet(packet_id = "finish_configuration", state = "configuration")] pub struct FinishConfigurationPacket; impl Default for FinishConfigurationPacket { diff --git a/src/lib/net/src/packets/outgoing/game_event.rs b/src/lib/net/src/packets/outgoing/game_event.rs index d9f554a3..3dbcc101 100644 --- a/src/lib/net/src/packets/outgoing/game_event.rs +++ b/src/lib/net/src/packets/outgoing/game_event.rs @@ -2,7 +2,7 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x22, state = "play")] +#[packet(packet_id = "game_event", state = "play")] pub struct GameEventPacket { pub event_id: u8, pub value: f32, diff --git a/src/lib/net/src/packets/outgoing/keep_alive.rs b/src/lib/net/src/packets/outgoing/keep_alive.rs index 5012fac5..ba6b98b1 100644 --- a/src/lib/net/src/packets/outgoing/keep_alive.rs +++ b/src/lib/net/src/packets/outgoing/keep_alive.rs @@ -2,7 +2,7 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode, Clone)] -#[packet(packet_id = 0x26, state = "play")] +#[packet(packet_id = "keep_alive", state = "play")] pub struct OutgoingKeepAlivePacket { pub timestamp: i64, } diff --git a/src/lib/net/src/packets/outgoing/login_disconnect.rs b/src/lib/net/src/packets/outgoing/login_disconnect.rs index 4a5c419f..bb3c3fdd 100644 --- a/src/lib/net/src/packets/outgoing/login_disconnect.rs +++ b/src/lib/net/src/packets/outgoing/login_disconnect.rs @@ -2,7 +2,7 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x00, state = "login")] +#[packet(packet_id = "login_disconnect", state = "login")] pub struct LoginDisconnectPacket<'a> { pub reason: &'a str, } diff --git a/src/lib/net/src/packets/outgoing/login_play.rs b/src/lib/net/src/packets/outgoing/login_play.rs index d2b5d3d1..0ad8b3a8 100644 --- a/src/lib/net/src/packets/outgoing/login_play.rs +++ b/src/lib/net/src/packets/outgoing/login_play.rs @@ -3,7 +3,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x2B, state = "play")] +#[packet(packet_id = "login", state = "play")] pub struct LoginPlayPacket<'a> { pub entity_id: i32, pub is_hardcore: bool, diff --git a/src/lib/net/src/packets/outgoing/login_success.rs b/src/lib/net/src/packets/outgoing/login_success.rs index 2338b4d3..f7d040d2 100644 --- a/src/lib/net/src/packets/outgoing/login_success.rs +++ b/src/lib/net/src/packets/outgoing/login_success.rs @@ -3,7 +3,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x02, state = "login")] +#[packet(packet_id = "game_profile", state = "login")] pub struct LoginSuccessPacket<'a> { pub uuid: u128, pub username: &'a str, diff --git a/src/lib/net/src/packets/outgoing/ping_response.rs b/src/lib/net/src/packets/outgoing/ping_response.rs index f1e173b4..0090514f 100644 --- a/src/lib/net/src/packets/outgoing/ping_response.rs +++ b/src/lib/net/src/packets/outgoing/ping_response.rs @@ -2,7 +2,7 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x01, state = "status")] +#[packet(packet_id = "pong_response", state = "status")] pub struct PongPacket { pub payload: i64, } diff --git a/src/lib/net/src/packets/outgoing/player_info_update.rs b/src/lib/net/src/packets/outgoing/player_info_update.rs index 4e30b8fd..65f6e9db 100644 --- a/src/lib/net/src/packets/outgoing/player_info_update.rs +++ b/src/lib/net/src/packets/outgoing/player_info_update.rs @@ -9,7 +9,7 @@ use std::io::Write; use tracing::debug; #[derive(NetEncode)] -#[packet(packet_id = 0x3E, state = "play")] +#[packet(packet_id = "player_info_update", state = "play")] pub struct PlayerInfoUpdatePacket { pub actions: u8, pub numbers_of_players: VarInt, diff --git a/src/lib/net/src/packets/outgoing/registry_data.rs b/src/lib/net/src/packets/outgoing/registry_data.rs index e66647fa..c8b12e1f 100644 --- a/src/lib/net/src/packets/outgoing/registry_data.rs +++ b/src/lib/net/src/packets/outgoing/registry_data.rs @@ -4,7 +4,7 @@ use ferrumc_net_codec::net_types::length_prefixed_vec::LengthPrefixedVec; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x07, state = "configuration")] +#[packet(packet_id = "registry_data", state = "configuration")] pub struct RegistryDataPacket<'a> { pub registry_id: &'a str, pub entries: LengthPrefixedVec>, diff --git a/src/lib/net/src/packets/outgoing/remove_entities.rs b/src/lib/net/src/packets/outgoing/remove_entities.rs index 8ca8800b..1657a1c8 100644 --- a/src/lib/net/src/packets/outgoing/remove_entities.rs +++ b/src/lib/net/src/packets/outgoing/remove_entities.rs @@ -5,7 +5,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x42, state = "play")] +#[packet(packet_id = "remove_entities", state = "play")] pub struct RemoveEntitiesPacket { pub entity_ids: LengthPrefixedVec, } diff --git a/src/lib/net/src/packets/outgoing/set_center_chunk.rs b/src/lib/net/src/packets/outgoing/set_center_chunk.rs index ebb1a5bf..8feb2fbf 100644 --- a/src/lib/net/src/packets/outgoing/set_center_chunk.rs +++ b/src/lib/net/src/packets/outgoing/set_center_chunk.rs @@ -3,7 +3,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x54, state = "play")] +#[packet(packet_id = "set_chunk_cache_center", state = "play")] pub struct SetCenterChunk { pub x: VarInt, pub z: VarInt, diff --git a/src/lib/net/src/packets/outgoing/set_default_spawn_position.rs b/src/lib/net/src/packets/outgoing/set_default_spawn_position.rs index ce084e86..d8cff7b8 100644 --- a/src/lib/net/src/packets/outgoing/set_default_spawn_position.rs +++ b/src/lib/net/src/packets/outgoing/set_default_spawn_position.rs @@ -3,7 +3,7 @@ use ferrumc_net_codec::net_types::network_position::NetworkPosition; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x56, state = "play")] +#[packet(packet_id = "set_default_spawn_position", state = "play")] pub struct SetDefaultSpawnPositionPacket { pub spawn_position: NetworkPosition, pub angle: f32, diff --git a/src/lib/net/src/packets/outgoing/set_head_rotation.rs b/src/lib/net/src/packets/outgoing/set_head_rotation.rs index 33d1622a..13975fd5 100644 --- a/src/lib/net/src/packets/outgoing/set_head_rotation.rs +++ b/src/lib/net/src/packets/outgoing/set_head_rotation.rs @@ -4,7 +4,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(Debug, NetEncode)] -#[packet(packet_id = 0x48, state = "play")] +#[packet(packet_id = "rotate_head", state = "play")] pub struct SetHeadRotationPacket { pub entity_id: VarInt, pub head_yaw: NetAngle, diff --git a/src/lib/net/src/packets/outgoing/set_render_distance.rs b/src/lib/net/src/packets/outgoing/set_render_distance.rs index be357e46..6c038c10 100644 --- a/src/lib/net/src/packets/outgoing/set_render_distance.rs +++ b/src/lib/net/src/packets/outgoing/set_render_distance.rs @@ -3,7 +3,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x55, state = "play")] +#[packet(packet_id = "set_chunk_cache_radius", state = "play")] pub struct SetRenderDistance { pub distance: VarInt, } diff --git a/src/lib/net/src/packets/outgoing/spawn_entity.rs b/src/lib/net/src/packets/outgoing/spawn_entity.rs index 3748ab01..b10f825e 100644 --- a/src/lib/net/src/packets/outgoing/spawn_entity.rs +++ b/src/lib/net/src/packets/outgoing/spawn_entity.rs @@ -11,7 +11,7 @@ use ferrumc_state::GlobalState; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x01, state = "play")] +#[packet(packet_id = "add_entity", state = "play")] pub struct SpawnEntityPacket { entity_id: VarInt, entity_uuid: u128, diff --git a/src/lib/net/src/packets/outgoing/status_response.rs b/src/lib/net/src/packets/outgoing/status_response.rs index a8da89e2..98c6f874 100644 --- a/src/lib/net/src/packets/outgoing/status_response.rs +++ b/src/lib/net/src/packets/outgoing/status_response.rs @@ -2,7 +2,7 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x00, state = "status")] +#[packet(packet_id = "status_response", state = "status")] pub struct StatusResponse { pub json_response: String, } diff --git a/src/lib/net/src/packets/outgoing/synchronize_player_position.rs b/src/lib/net/src/packets/outgoing/synchronize_player_position.rs index 4914f610..e36a447a 100644 --- a/src/lib/net/src/packets/outgoing/synchronize_player_position.rs +++ b/src/lib/net/src/packets/outgoing/synchronize_player_position.rs @@ -4,7 +4,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x40, state = "play")] +#[packet(packet_id = "player_position", state = "play")] pub struct SynchronizePlayerPositionPacket { pub x: f64, pub y: f64, diff --git a/src/lib/net/src/packets/outgoing/teleport_entity.rs b/src/lib/net/src/packets/outgoing/teleport_entity.rs index e9271a59..6ff57217 100644 --- a/src/lib/net/src/packets/outgoing/teleport_entity.rs +++ b/src/lib/net/src/packets/outgoing/teleport_entity.rs @@ -7,7 +7,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x70, state = "play")] +#[packet(packet_id = "teleport_entity", state = "play")] pub struct TeleportEntityPacket { pub entity_id: VarInt, pub x: f64, diff --git a/src/lib/net/src/packets/outgoing/update_entity_position.rs b/src/lib/net/src/packets/outgoing/update_entity_position.rs index d72abb97..c3479f5a 100644 --- a/src/lib/net/src/packets/outgoing/update_entity_position.rs +++ b/src/lib/net/src/packets/outgoing/update_entity_position.rs @@ -4,7 +4,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x2E, state = "play")] +#[packet(packet_id = "move_entity_pos", state = "play")] pub struct UpdateEntityPositionPacket { pub entity_id: VarInt, pub delta_x: i16, diff --git a/src/lib/net/src/packets/outgoing/update_entity_position_and_rotation.rs b/src/lib/net/src/packets/outgoing/update_entity_position_and_rotation.rs index fcb9b863..300c8d3c 100644 --- a/src/lib/net/src/packets/outgoing/update_entity_position_and_rotation.rs +++ b/src/lib/net/src/packets/outgoing/update_entity_position_and_rotation.rs @@ -6,7 +6,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x2F, state = "play")] +#[packet(packet_id = "move_entity_pos_rot", state = "play")] pub struct UpdateEntityPositionAndRotationPacket { pub entity_id: VarInt, pub delta_x: i16, diff --git a/src/lib/net/src/packets/outgoing/update_entity_rotation.rs b/src/lib/net/src/packets/outgoing/update_entity_rotation.rs index cac2b2b8..2d9e9adb 100644 --- a/src/lib/net/src/packets/outgoing/update_entity_rotation.rs +++ b/src/lib/net/src/packets/outgoing/update_entity_rotation.rs @@ -6,7 +6,7 @@ use ferrumc_net_codec::net_types::var_int::VarInt; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x30, state = "play")] +#[packet(packet_id = "move_entity_rot", state = "play")] pub struct UpdateEntityRotationPacket { pub entity_id: VarInt, pub yaw: NetAngle, diff --git a/src/lib/net/src/packets/outgoing/update_time.rs b/src/lib/net/src/packets/outgoing/update_time.rs index c66f9e3c..b1dd8be5 100644 --- a/src/lib/net/src/packets/outgoing/update_time.rs +++ b/src/lib/net/src/packets/outgoing/update_time.rs @@ -3,7 +3,7 @@ use ferrumc_macros::{packet, NetEncode}; use std::io::Write; #[derive(NetEncode)] -#[packet(packet_id = 0x64, state = "play")] +#[packet(packet_id = "set_time", state = "play")] pub struct UpdateTimePacket { pub world_age: i64, pub time_of_day: i64, From b1339a1cabf9e93a0570b331af90e2d7c7641dcf Mon Sep 17 00:00:00 2001 From: Sweattypalms Date: Sat, 4 Jan 2025 20:42:11 +0900 Subject: [PATCH 5/8] Updated all packets to use resource id instead of hardcoded packet id values. --- src/lib/derive_macros/src/net/encode.rs | 7 +++-- src/lib/derive_macros/src/net/packets/mod.rs | 29 ++++++++++++++----- .../packets/incoming/client_information.rs | 2 +- src/lib/net/src/packets/incoming/handshake.rs | 2 +- .../net/src/packets/incoming/keep_alive.rs | 2 +- .../packets/incoming/login_acknowledged.rs | 2 +- .../net/src/packets/incoming/login_start.rs | 2 +- src/lib/net/src/packets/incoming/ping.rs | 2 +- .../src/packets/incoming/player_command.rs | 2 +- .../incoming/server_bound_known_packs.rs | 2 +- .../incoming/server_bound_plugin_message.rs | 2 +- .../packets/incoming/set_player_position.rs | 2 +- .../set_player_position_and_rotation.rs | 2 +- .../packets/incoming/set_player_rotation.rs | 2 +- .../src/packets/incoming/status_request.rs | 2 +- src/lib/net/src/packets/incoming/swing_arm.rs | 2 +- 16 files changed, 40 insertions(+), 24 deletions(-) diff --git a/src/lib/derive_macros/src/net/encode.rs b/src/lib/derive_macros/src/net/encode.rs index 0e8797a3..483dde3b 100644 --- a/src/lib/derive_macros/src/net/encode.rs +++ b/src/lib/derive_macros/src/net/encode.rs @@ -1,8 +1,9 @@ use crate::helpers::{get_derive_attributes, StructInfo}; +use crate::net::packets::get_packet_details_from_attributes; use proc_macro::TokenStream; use quote::quote; -use syn::{parse_macro_input, Attribute, DeriveInput, Fields, LitInt}; -use crate::net::packets::get_packet_details_from_attributes; +use syn::{parse_macro_input, DeriveInput, Fields}; +use crate::static_loading::packets::PacketBoundiness; // Generate packet ID encoding snippets fn generate_packet_id_snippets( @@ -136,7 +137,7 @@ pub(crate) fn derive(input: TokenStream) -> TokenStream { let packet_attr = get_derive_attributes(&input, "packet"); let (packet_id_snippet, async_packet_id_snippet) = - generate_packet_id_snippets(get_packet_details_from_attributes(packet_attr.as_slice()).unzip().1); + generate_packet_id_snippets(get_packet_details_from_attributes(packet_attr.as_slice(), PacketBoundiness::Clientbound).unzip().1); let (sync_impl, async_impl) = match &input.data { syn::Data::Struct(data) => { diff --git a/src/lib/derive_macros/src/net/packets/mod.rs b/src/lib/derive_macros/src/net/packets/mod.rs index 2d2a1af2..29bfad5b 100644 --- a/src/lib/derive_macros/src/net/packets/mod.rs +++ b/src/lib/derive_macros/src/net/packets/mod.rs @@ -25,7 +25,7 @@ fn parse_packet_attribute(attr: &Attribute) -> Option<(String, String)> { } /// Returns: (state, packet_id) -pub(crate) fn get_packet_details_from_attributes(attrs: &[Attribute]) -> Option<(String, u8)> { +pub(crate) fn get_packet_details_from_attributes(attrs: &[Attribute], bound_to: PacketBoundiness) -> Option<(String, u8)> { let mut val = Option::<(String, String)>::None; for attr in attrs { @@ -38,7 +38,7 @@ pub(crate) fn get_packet_details_from_attributes(attrs: &[Attribute]) -> Option< let (state, packet_id) = val?; - let packet_id = parse_packet_id(state.as_str(), packet_id).expect("parse_packet_id failed"); + let packet_id = parse_packet_id(state.as_str(), packet_id, bound_to).expect("parse_packet_id failed"); Some((state, packet_id)) } @@ -78,11 +78,20 @@ pub fn bake_registry(input: TokenStream) -> TokenStream { let start = std::time::Instant::now(); - for entry in std::fs::read_dir(dir_path).expect("read_dir call failed") { + let entries = std::fs::read_dir(dir_path).expect("read_dir call failed"); + + for entry in entries { let entry = entry.expect("entry failed"); let path = entry.path(); let file_name = path.file_name().expect("file_name failed").to_os_string(); + + println!( + " {} {}", + "[FERRUMC_MACROS]".bold().blue(), + format!("Parsing file: {}", file_name.to_string_lossy()).white().bold() + ); + if !path.is_file() { continue; } @@ -95,8 +104,13 @@ pub fn bake_registry(input: TokenStream) -> TokenStream { continue; }; + // If the struct does not have the #[packet(...)] attribute, then skip it. + if !item_struct.attrs.iter().any(|attr| attr.path().is_ident("packet")) { + continue; + } + // format: #[packet(packet_id = 0x00, state = "handshake")] - let (state, packet_id) = get_packet_details_from_attributes(&item_struct.attrs).expect( + let (state, packet_id) = get_packet_details_from_attributes(&item_struct.attrs, PacketBoundiness::Serverbound).expect( "parse_packet_attribute failed\ \nPlease provide the packet_id and state fields in the #[packet(...)] attribute.\ \nExample: #[packet(packet_id = 0x00, state = \"handshake\")]", @@ -169,18 +183,19 @@ pub fn bake_registry(input: TokenStream) -> TokenStream { TokenStream::from(output) } -fn parse_packet_id(state: &str, value: String) -> syn::Result { +fn parse_packet_id(state: &str, value: String, bound_to: PacketBoundiness) -> syn::Result { //! Sorry to anyone reading this code. The get_packet_id method PANICS if there is any type of error. //! these macros are treated like trash gah damn. they need better care 😔 // If the user provided a direct integer (like 0x01, or any number) value. if value.starts_with("0x") { - let n = u8::from_str_radix(&value[2..], 16).expect("from_str_radix failed"); + let value = value.strip_prefix("0x").expect("strip_prefix failed"); + let n = u8::from_str_radix(value, 16).expect("from_str_radix failed"); return Ok(n); } // If the user provided referencing packet id, then just get that. - let n = get_packet_id(state, PacketBoundiness::Clientbound, value.as_str()); + let n = get_packet_id(state, bound_to, value.as_str()); Ok(n) } diff --git a/src/lib/net/src/packets/incoming/client_information.rs b/src/lib/net/src/packets/incoming/client_information.rs index 5cd7c1a6..19c6949c 100644 --- a/src/lib/net/src/packets/incoming/client_information.rs +++ b/src/lib/net/src/packets/incoming/client_information.rs @@ -7,7 +7,7 @@ use std::sync::Arc; use tracing::debug; #[derive(Debug, NetDecode)] -#[packet(packet_id = 0x00, state = "configuration")] +#[packet(packet_id = "client_information", state = "configuration")] pub struct ClientInformation { pub locale: String, pub view_distance: u8, diff --git a/src/lib/net/src/packets/incoming/handshake.rs b/src/lib/net/src/packets/incoming/handshake.rs index ce9b6ae5..167a2a73 100644 --- a/src/lib/net/src/packets/incoming/handshake.rs +++ b/src/lib/net/src/packets/incoming/handshake.rs @@ -8,7 +8,7 @@ use std::sync::Arc; use tracing::trace; #[derive(NetDecode, Debug)] -#[packet(packet_id = 0x00, state = "handshake")] +#[packet(packet_id = "intention", state = "handshake")] pub struct Handshake { pub protocol_version: VarInt, pub server_address: String, diff --git a/src/lib/net/src/packets/incoming/keep_alive.rs b/src/lib/net/src/packets/incoming/keep_alive.rs index a71239f0..df1f9425 100644 --- a/src/lib/net/src/packets/incoming/keep_alive.rs +++ b/src/lib/net/src/packets/incoming/keep_alive.rs @@ -8,7 +8,7 @@ use std::sync::Arc; use tracing::debug; #[derive(NetDecode)] -#[packet(packet_id = 0x18, state = "play")] +#[packet(packet_id = "keep_alive", state = "play")] pub struct IncomingKeepAlivePacket { pub timestamp: i64, } diff --git a/src/lib/net/src/packets/incoming/login_acknowledged.rs b/src/lib/net/src/packets/incoming/login_acknowledged.rs index 10c4050f..025c09f0 100644 --- a/src/lib/net/src/packets/incoming/login_acknowledged.rs +++ b/src/lib/net/src/packets/incoming/login_acknowledged.rs @@ -6,7 +6,7 @@ use ferrumc_state::ServerState; use std::sync::Arc; #[derive(Debug, NetDecode)] -#[packet(packet_id = 0x03, state = "login")] +#[packet(packet_id = "login_acknowledged", state = "login")] pub struct LoginAcknowledgedPacket {} #[derive(Event)] diff --git a/src/lib/net/src/packets/incoming/login_start.rs b/src/lib/net/src/packets/incoming/login_start.rs index 6a9c03d8..987aaaf7 100644 --- a/src/lib/net/src/packets/incoming/login_start.rs +++ b/src/lib/net/src/packets/incoming/login_start.rs @@ -6,7 +6,7 @@ use ferrumc_state::ServerState; use std::sync::Arc; #[derive(Debug, NetDecode)] -#[packet(packet_id = 0x00, state = "login")] +#[packet(packet_id = "hello", state = "login")] pub struct LoginStartPacket { pub username: String, pub uuid: u128, diff --git a/src/lib/net/src/packets/incoming/ping.rs b/src/lib/net/src/packets/incoming/ping.rs index 071dbf72..bfa74264 100644 --- a/src/lib/net/src/packets/incoming/ping.rs +++ b/src/lib/net/src/packets/incoming/ping.rs @@ -8,7 +8,7 @@ use ferrumc_state::ServerState; use std::sync::Arc; #[derive(NetDecode, Debug)] -#[packet(packet_id = 0x01, state = "status")] +#[packet(packet_id = "ping_request", state = "status")] pub struct PingPacket { payload: i64, } diff --git a/src/lib/net/src/packets/incoming/player_command.rs b/src/lib/net/src/packets/incoming/player_command.rs index e0cb73ee..ee4ed9db 100644 --- a/src/lib/net/src/packets/incoming/player_command.rs +++ b/src/lib/net/src/packets/incoming/player_command.rs @@ -9,7 +9,7 @@ use std::sync::Arc; // Mojang surely has SOME naming schemes.. commands?? #[derive(NetDecode)] -#[packet(packet_id = 0x25, state = "play")] +#[packet(packet_id = "player_command", state = "play")] pub struct PlayerCommandPacket { entity_id: VarInt, // Originally: Action Id = VarInt Enum diff --git a/src/lib/net/src/packets/incoming/server_bound_known_packs.rs b/src/lib/net/src/packets/incoming/server_bound_known_packs.rs index 2e182d72..318875b9 100644 --- a/src/lib/net/src/packets/incoming/server_bound_known_packs.rs +++ b/src/lib/net/src/packets/incoming/server_bound_known_packs.rs @@ -8,7 +8,7 @@ use std::sync::Arc; use tracing::debug; #[derive(Debug, NetDecode)] -#[packet(packet_id = 0x07, state = "configuration")] +#[packet(packet_id = "select_known_packs", state = "configuration")] pub struct ServerBoundKnownPacks { #[allow(dead_code)] pub packs: LengthPrefixedVec, diff --git a/src/lib/net/src/packets/incoming/server_bound_plugin_message.rs b/src/lib/net/src/packets/incoming/server_bound_plugin_message.rs index a23a532f..2917488c 100644 --- a/src/lib/net/src/packets/incoming/server_bound_plugin_message.rs +++ b/src/lib/net/src/packets/incoming/server_bound_plugin_message.rs @@ -8,7 +8,7 @@ use std::sync::Arc; use tracing::debug; #[derive(Debug)] -#[packet(packet_id = 0x02, state = "configuration")] +#[packet(packet_id = "custom_payload", state = "configuration")] pub struct ServerBoundPluginMessage { channel: String, data: Vec, diff --git a/src/lib/net/src/packets/incoming/set_player_position.rs b/src/lib/net/src/packets/incoming/set_player_position.rs index f02b6949..63c0e518 100644 --- a/src/lib/net/src/packets/incoming/set_player_position.rs +++ b/src/lib/net/src/packets/incoming/set_player_position.rs @@ -7,7 +7,7 @@ use ferrumc_state::ServerState; use std::sync::Arc; #[derive(NetDecode)] -#[packet(packet_id = 0x1A, state = "play")] +#[packet(packet_id = "move_player_pos", state = "play")] pub struct SetPlayerPositionPacket { pub x: f64, pub feet_y: f64, diff --git a/src/lib/net/src/packets/incoming/set_player_position_and_rotation.rs b/src/lib/net/src/packets/incoming/set_player_position_and_rotation.rs index afae64d9..8697d83f 100644 --- a/src/lib/net/src/packets/incoming/set_player_position_and_rotation.rs +++ b/src/lib/net/src/packets/incoming/set_player_position_and_rotation.rs @@ -7,7 +7,7 @@ use ferrumc_state::ServerState; use std::sync::Arc; #[derive(NetDecode)] -#[packet(packet_id = 0x1B, state = "play")] +#[packet(packet_id = "move_player_pos_rot", state = "play")] pub struct SetPlayerPositionAndRotationPacket { pub x: f64, pub feet_y: f64, diff --git a/src/lib/net/src/packets/incoming/set_player_rotation.rs b/src/lib/net/src/packets/incoming/set_player_rotation.rs index 99413cc9..5b138525 100644 --- a/src/lib/net/src/packets/incoming/set_player_rotation.rs +++ b/src/lib/net/src/packets/incoming/set_player_rotation.rs @@ -7,7 +7,7 @@ use ferrumc_state::ServerState; use std::sync::Arc; #[derive(NetDecode)] -#[packet(packet_id = 0x1C, state = "play")] +#[packet(packet_id = "move_player_rot", state = "play")] pub struct SetPlayerRotationPacket { pub yaw: f32, pub pitch: f32, diff --git a/src/lib/net/src/packets/incoming/status_request.rs b/src/lib/net/src/packets/incoming/status_request.rs index a5f349d1..d0b330f6 100644 --- a/src/lib/net/src/packets/incoming/status_request.rs +++ b/src/lib/net/src/packets/incoming/status_request.rs @@ -12,7 +12,7 @@ use rand::seq::IndexedRandom; use std::sync::Arc; #[derive(NetDecode, Debug)] -#[packet(packet_id = 0x00, state = "status")] +#[packet(packet_id = "status_request", state = "status")] pub struct StatusRequestPacket {} impl IncomingPacket for StatusRequestPacket { diff --git a/src/lib/net/src/packets/incoming/swing_arm.rs b/src/lib/net/src/packets/incoming/swing_arm.rs index 315e6abc..d4e3dac7 100644 --- a/src/lib/net/src/packets/incoming/swing_arm.rs +++ b/src/lib/net/src/packets/incoming/swing_arm.rs @@ -9,7 +9,7 @@ use ferrumc_state::ServerState; use std::sync::Arc; #[derive(NetDecode)] -#[packet(packet_id = 0x36, state = "play")] +#[packet(packet_id = "swing", state = "play")] pub struct SwingArmPacket { hand: VarInt, } From 0bc73130f665b0b40e67429eb067c978370cd00c Mon Sep 17 00:00:00 2001 From: Sweattypalms Date: Sat, 4 Jan 2025 20:52:22 +0900 Subject: [PATCH 6/8] cargo fmt, my opp. --- src/lib/derive_macros/src/lib.rs | 2 +- src/lib/derive_macros/src/net/encode.rs | 9 ++++--- src/lib/derive_macros/src/net/packets/mod.rs | 25 ++++++++++++++----- .../derive_macros/src/static_loading/mod.rs | 3 +-- .../src/static_loading/packets.rs | 8 ++++-- .../src/static_loading/registry.rs | 10 +++++--- 6 files changed, 39 insertions(+), 18 deletions(-) diff --git a/src/lib/derive_macros/src/lib.rs b/src/lib/derive_macros/src/lib.rs index 35cf22ce..88b31265 100644 --- a/src/lib/derive_macros/src/lib.rs +++ b/src/lib/derive_macros/src/lib.rs @@ -74,4 +74,4 @@ pub fn get_registry_entry(input: TokenStream) -> TokenStream { #[proc_macro] pub fn get_packet_entry(input: TokenStream) -> TokenStream { static_loading::packets::get(input) -} \ No newline at end of file +} diff --git a/src/lib/derive_macros/src/net/encode.rs b/src/lib/derive_macros/src/net/encode.rs index 483dde3b..8cb5c868 100644 --- a/src/lib/derive_macros/src/net/encode.rs +++ b/src/lib/derive_macros/src/net/encode.rs @@ -1,9 +1,9 @@ use crate::helpers::{get_derive_attributes, StructInfo}; use crate::net::packets::get_packet_details_from_attributes; +use crate::static_loading::packets::PacketBoundiness; use proc_macro::TokenStream; use quote::quote; use syn::{parse_macro_input, DeriveInput, Fields}; -use crate::static_loading::packets::PacketBoundiness; // Generate packet ID encoding snippets fn generate_packet_id_snippets( @@ -136,8 +136,11 @@ pub(crate) fn derive(input: TokenStream) -> TokenStream { let input = parse_macro_input!(input as DeriveInput); let packet_attr = get_derive_attributes(&input, "packet"); - let (packet_id_snippet, async_packet_id_snippet) = - generate_packet_id_snippets(get_packet_details_from_attributes(packet_attr.as_slice(), PacketBoundiness::Clientbound).unzip().1); + let (packet_id_snippet, async_packet_id_snippet) = generate_packet_id_snippets( + get_packet_details_from_attributes(packet_attr.as_slice(), PacketBoundiness::Clientbound) + .unzip() + .1, + ); let (sync_impl, async_impl) = match &input.data { syn::Data::Struct(data) => { diff --git a/src/lib/derive_macros/src/net/packets/mod.rs b/src/lib/derive_macros/src/net/packets/mod.rs index 29bfad5b..8e81f5fe 100644 --- a/src/lib/derive_macros/src/net/packets/mod.rs +++ b/src/lib/derive_macros/src/net/packets/mod.rs @@ -25,7 +25,10 @@ fn parse_packet_attribute(attr: &Attribute) -> Option<(String, String)> { } /// Returns: (state, packet_id) -pub(crate) fn get_packet_details_from_attributes(attrs: &[Attribute], bound_to: PacketBoundiness) -> Option<(String, u8)> { +pub(crate) fn get_packet_details_from_attributes( + attrs: &[Attribute], + bound_to: PacketBoundiness, +) -> Option<(String, u8)> { let mut val = Option::<(String, String)>::None; for attr in attrs { @@ -38,7 +41,8 @@ pub(crate) fn get_packet_details_from_attributes(attrs: &[Attribute], bound_to: let (state, packet_id) = val?; - let packet_id = parse_packet_id(state.as_str(), packet_id, bound_to).expect("parse_packet_id failed"); + let packet_id = + parse_packet_id(state.as_str(), packet_id, bound_to).expect("parse_packet_id failed"); Some((state, packet_id)) } @@ -85,11 +89,12 @@ pub fn bake_registry(input: TokenStream) -> TokenStream { let path = entry.path(); let file_name = path.file_name().expect("file_name failed").to_os_string(); - println!( " {} {}", "[FERRUMC_MACROS]".bold().blue(), - format!("Parsing file: {}", file_name.to_string_lossy()).white().bold() + format!("Parsing file: {}", file_name.to_string_lossy()) + .white() + .bold() ); if !path.is_file() { @@ -105,12 +110,20 @@ pub fn bake_registry(input: TokenStream) -> TokenStream { }; // If the struct does not have the #[packet(...)] attribute, then skip it. - if !item_struct.attrs.iter().any(|attr| attr.path().is_ident("packet")) { + if !item_struct + .attrs + .iter() + .any(|attr| attr.path().is_ident("packet")) + { continue; } // format: #[packet(packet_id = 0x00, state = "handshake")] - let (state, packet_id) = get_packet_details_from_attributes(&item_struct.attrs, PacketBoundiness::Serverbound).expect( + let (state, packet_id) = get_packet_details_from_attributes( + &item_struct.attrs, + PacketBoundiness::Serverbound, + ) + .expect( "parse_packet_attribute failed\ \nPlease provide the packet_id and state fields in the #[packet(...)] attribute.\ \nExample: #[packet(packet_id = 0x00, state = \"handshake\")]", diff --git a/src/lib/derive_macros/src/static_loading/mod.rs b/src/lib/derive_macros/src/static_loading/mod.rs index 8bade71d..d0872ee1 100644 --- a/src/lib/derive_macros/src/static_loading/mod.rs +++ b/src/lib/derive_macros/src/static_loading/mod.rs @@ -1,3 +1,2 @@ - +pub(crate) mod packets; pub(crate) mod registry; -pub(crate) mod packets; \ No newline at end of file diff --git a/src/lib/derive_macros/src/static_loading/packets.rs b/src/lib/derive_macros/src/static_loading/packets.rs index 8003bcbd..3042cdfa 100644 --- a/src/lib/derive_macros/src/static_loading/packets.rs +++ b/src/lib/derive_macros/src/static_loading/packets.rs @@ -1,7 +1,7 @@ +use proc_macro2::TokenStream; use quote::quote; use std::fmt::Display; use std::sync::LazyLock; -use proc_macro2::TokenStream; use syn::parse::Parse; use syn::{parse_macro_input, LitStr, Token}; @@ -10,7 +10,11 @@ pub(crate) static PACKETS_JSON: LazyLock = LazyLock::new(|| { serde_json::from_str(json_str).unwrap() }); -pub(crate) fn get_packet_id(state: impl Into, bound: PacketBoundiness, packet_name: &str) -> u8 { +pub(crate) fn get_packet_id( + state: impl Into, + bound: PacketBoundiness, + packet_name: &str, +) -> u8 { let mut current_value = &*PACKETS_JSON; // remove `"` from start and end of the packet_name: diff --git a/src/lib/derive_macros/src/static_loading/registry.rs b/src/lib/derive_macros/src/static_loading/registry.rs index 3b653f07..e660bec7 100644 --- a/src/lib/derive_macros/src/static_loading/registry.rs +++ b/src/lib/derive_macros/src/static_loading/registry.rs @@ -1,5 +1,5 @@ -use std::sync::LazyLock; use quote::quote; +use std::sync::LazyLock; use syn::{parse_macro_input, LitStr}; static JSON_CONTENT: LazyLock = LazyLock::new(|| { @@ -15,11 +15,13 @@ pub(crate) fn get(input: proc_macro::TokenStream) -> proc_macro::TokenStream { for part in parts { // current_value = ¤t_value[part]; - current_value = current_value.get(part) + current_value = current_value + .get(part) .unwrap_or_else(|| panic!("Could not find key: {}", part)); } - let protocol_id = current_value.get("protocol_id") + let protocol_id = current_value + .get("protocol_id") .and_then(|v| v.as_u64()) .unwrap_or_else(|| panic!("Could not find key: {}", "protocol_id")); @@ -28,4 +30,4 @@ pub(crate) fn get(input: proc_macro::TokenStream) -> proc_macro::TokenStream { }; proc_macro::TokenStream::from(expanded) -} \ No newline at end of file +} From dfc5272af6f108a7bdbf2eb6a50ad70a84e97c0e Mon Sep 17 00:00:00 2001 From: Sweattypalms Date: Sun, 5 Jan 2025 07:20:58 +0900 Subject: [PATCH 7/8] Fixed requested thing --- src/lib/derive_macros/src/lib.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lib/derive_macros/src/lib.rs b/src/lib/derive_macros/src/lib.rs index 88b31265..6f6ca1a8 100644 --- a/src/lib/derive_macros/src/lib.rs +++ b/src/lib/derive_macros/src/lib.rs @@ -59,14 +59,6 @@ pub fn packet(args: TokenStream, input: TokenStream) -> TokenStream { pub fn bake_packet_registry(input: TokenStream) -> TokenStream { net::packets::bake_registry(input) } -// #=================== PACKETS ===================# - -/// Get a registry entry from the registries.json file. -/// returns protocol_id (as u64) of the specified entry. -#[proc_macro] -pub fn get_registry_entry(input: TokenStream) -> TokenStream { - static_loading::registry::get(input) -} /// Get a packet entry from the packets.json file. /// returns protocol_id (as 0x??) of the specified packet. @@ -75,3 +67,11 @@ pub fn get_registry_entry(input: TokenStream) -> TokenStream { pub fn get_packet_entry(input: TokenStream) -> TokenStream { static_loading::packets::get(input) } +// #=================== PACKETS ===================# + +/// Get a registry entry from the registries.json file. +/// returns protocol_id (as u64) of the specified entry. +#[proc_macro] +pub fn get_registry_entry(input: TokenStream) -> TokenStream { + static_loading::registry::get(input) +} From 4387f28bea6d79da28d52267603171f40771ae12 Mon Sep 17 00:00:00 2001 From: Sweattypalms Date: Sun, 5 Jan 2025 14:27:23 +0900 Subject: [PATCH 8/8] crazy work honestly --- src/lib/derive_macros/Cargo.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/lib/derive_macros/Cargo.toml b/src/lib/derive_macros/Cargo.toml index 3a9a7de6..84ae607e 100644 --- a/src/lib/derive_macros/Cargo.toml +++ b/src/lib/derive_macros/Cargo.toml @@ -14,8 +14,7 @@ proc-macro = true colored = { workspace = true } quote = { workspace = true } syn = { workspace = true, features = ["full"] } -thiserror = { workspace = true } proc-macro2 = { workspace = true } proc-macro-crate = { workspace = true } serde_json = { workspace = true } -regex = "1.11.1" \ No newline at end of file +regex = { workspace = true } \ No newline at end of file