137        $commonProperties = CommonProperties::getInstance();
 
  138        self::registerSimpleIdOnlyMappings($reg);
 
  139        self::registerColoredMappings($reg, $commonProperties);
 
  140        self::registerCandleMappings($reg, $commonProperties);
 
  141        self::registerLeavesMappings($reg);
 
  142        self::registerSaplingMappings($reg);
 
  143        self::registerPlantMappings($reg, $commonProperties);
 
  144        self::registerCoralMappings($reg, $commonProperties);
 
  145        self::registerCopperMappings($reg, $commonProperties);
 
  146        self::registerFlattenedEnumMappings($reg, $commonProperties);
 
  147        self::registerFlattenedBoolMappings($reg, $commonProperties);
 
  148        self::registerStoneLikeSlabMappings($reg);
 
  149        self::registerStoneLikeStairMappings($reg);
 
  150        self::registerStoneLikeWallMappings($reg, $commonProperties);
 
  152        self::registerWoodMappings($reg, $commonProperties);
 
  153        self::registerTorchMappings($reg, $commonProperties);
 
  154        self::registerChemistryMappings($reg, $commonProperties);
 
  155        self::register1to1CustomMappings($reg, $commonProperties);
 
  157        self::registerSplitMappings($reg, $commonProperties);
 
  161        $reg->mapSimple(Blocks::AIR(), Ids::AIR);
 
  162        $reg->mapSimple(Blocks::AMETHYST(), Ids::AMETHYST_BLOCK);
 
  163        $reg->mapSimple(Blocks::ANCIENT_DEBRIS(), Ids::ANCIENT_DEBRIS);
 
  164        $reg->mapSimple(Blocks::ANDESITE(), Ids::ANDESITE);
 
  165        $reg->mapSimple(Blocks::BARRIER(), Ids::BARRIER);
 
  166        $reg->mapSimple(Blocks::BEACON(), Ids::BEACON);
 
  167        $reg->mapSimple(Blocks::BLACKSTONE(), Ids::BLACKSTONE);
 
  168        $reg->mapSimple(Blocks::BLUE_ICE(), Ids::BLUE_ICE);
 
  169        $reg->mapSimple(Blocks::BOOKSHELF(), Ids::BOOKSHELF);
 
  170        $reg->mapSimple(Blocks::BRICKS(), Ids::BRICK_BLOCK);
 
  171        $reg->mapSimple(Blocks::BROWN_MUSHROOM(), Ids::BROWN_MUSHROOM);
 
  172        $reg->mapSimple(Blocks::BUDDING_AMETHYST(), Ids::BUDDING_AMETHYST);
 
  173        $reg->mapSimple(Blocks::CALCITE(), Ids::CALCITE);
 
  174        $reg->mapSimple(Blocks::CARTOGRAPHY_TABLE(), Ids::CARTOGRAPHY_TABLE);
 
  175        $reg->mapSimple(Blocks::CHEMICAL_HEAT(), Ids::CHEMICAL_HEAT);
 
  176        $reg->mapSimple(Blocks::CHISELED_DEEPSLATE(), Ids::CHISELED_DEEPSLATE);
 
  177        $reg->mapSimple(Blocks::CHISELED_NETHER_BRICKS(), Ids::CHISELED_NETHER_BRICKS);
 
  178        $reg->mapSimple(Blocks::CHISELED_POLISHED_BLACKSTONE(), Ids::CHISELED_POLISHED_BLACKSTONE);
 
  179        $reg->mapSimple(Blocks::CHISELED_RED_SANDSTONE(), Ids::CHISELED_RED_SANDSTONE);
 
  180        $reg->mapSimple(Blocks::CHISELED_RESIN_BRICKS(), Ids::CHISELED_RESIN_BRICKS);
 
  181        $reg->mapSimple(Blocks::CHISELED_SANDSTONE(), Ids::CHISELED_SANDSTONE);
 
  182        $reg->mapSimple(Blocks::CHISELED_STONE_BRICKS(), Ids::CHISELED_STONE_BRICKS);
 
  183        $reg->mapSimple(Blocks::CHISELED_TUFF(), Ids::CHISELED_TUFF);
 
  184        $reg->mapSimple(Blocks::CHISELED_TUFF_BRICKS(), Ids::CHISELED_TUFF_BRICKS);
 
  185        $reg->mapSimple(Blocks::CHORUS_PLANT(), Ids::CHORUS_PLANT);
 
  186        $reg->mapSimple(Blocks::CLAY(), Ids::CLAY);
 
  187        $reg->mapSimple(Blocks::COAL(), Ids::COAL_BLOCK);
 
  188        $reg->mapSimple(Blocks::COAL_ORE(), Ids::COAL_ORE);
 
  189        $reg->mapSimple(Blocks::COBBLED_DEEPSLATE(), Ids::COBBLED_DEEPSLATE);
 
  190        $reg->mapSimple(Blocks::COBBLESTONE(), Ids::COBBLESTONE);
 
  191        $reg->mapSimple(Blocks::COBWEB(), Ids::WEB);
 
  192        $reg->mapSimple(Blocks::COPPER_ORE(), Ids::COPPER_ORE);
 
  193        $reg->mapSimple(Blocks::CRACKED_DEEPSLATE_BRICKS(), Ids::CRACKED_DEEPSLATE_BRICKS);
 
  194        $reg->mapSimple(Blocks::CRACKED_DEEPSLATE_TILES(), Ids::CRACKED_DEEPSLATE_TILES);
 
  195        $reg->mapSimple(Blocks::CRACKED_NETHER_BRICKS(), Ids::CRACKED_NETHER_BRICKS);
 
  196        $reg->mapSimple(Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS(), Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS);
 
  197        $reg->mapSimple(Blocks::CRACKED_STONE_BRICKS(), Ids::CRACKED_STONE_BRICKS);
 
  198        $reg->mapSimple(Blocks::CRAFTING_TABLE(), Ids::CRAFTING_TABLE);
 
  199        $reg->mapSimple(Blocks::CRIMSON_ROOTS(), Ids::CRIMSON_ROOTS);
 
  200        $reg->mapSimple(Blocks::CRYING_OBSIDIAN(), Ids::CRYING_OBSIDIAN);
 
  201        $reg->mapSimple(Blocks::DANDELION(), Ids::DANDELION);
 
  202        $reg->mapSimple(Blocks::CUT_RED_SANDSTONE(), Ids::CUT_RED_SANDSTONE);
 
  203        $reg->mapSimple(Blocks::CUT_SANDSTONE(), Ids::CUT_SANDSTONE);
 
  204        $reg->mapSimple(Blocks::DARK_PRISMARINE(), Ids::DARK_PRISMARINE);
 
  205        $reg->mapSimple(Blocks::DEAD_BUSH(), Ids::DEADBUSH);
 
  206        $reg->mapSimple(Blocks::DEEPSLATE_BRICKS(), Ids::DEEPSLATE_BRICKS);
 
  207        $reg->mapSimple(Blocks::DEEPSLATE_COAL_ORE(), Ids::DEEPSLATE_COAL_ORE);
 
  208        $reg->mapSimple(Blocks::DEEPSLATE_COPPER_ORE(), Ids::DEEPSLATE_COPPER_ORE);
 
  209        $reg->mapSimple(Blocks::DEEPSLATE_DIAMOND_ORE(), Ids::DEEPSLATE_DIAMOND_ORE);
 
  210        $reg->mapSimple(Blocks::DEEPSLATE_EMERALD_ORE(), Ids::DEEPSLATE_EMERALD_ORE);
 
  211        $reg->mapSimple(Blocks::DEEPSLATE_GOLD_ORE(), Ids::DEEPSLATE_GOLD_ORE);
 
  212        $reg->mapSimple(Blocks::DEEPSLATE_IRON_ORE(), Ids::DEEPSLATE_IRON_ORE);
 
  213        $reg->mapSimple(Blocks::DEEPSLATE_LAPIS_LAZULI_ORE(), Ids::DEEPSLATE_LAPIS_ORE);
 
  214        $reg->mapSimple(Blocks::DEEPSLATE_TILES(), Ids::DEEPSLATE_TILES);
 
  215        $reg->mapSimple(Blocks::DIAMOND(), Ids::DIAMOND_BLOCK);
 
  216        $reg->mapSimple(Blocks::DIAMOND_ORE(), Ids::DIAMOND_ORE);
 
  217        $reg->mapSimple(Blocks::DIORITE(), Ids::DIORITE);
 
  218        $reg->mapSimple(Blocks::DRAGON_EGG(), Ids::DRAGON_EGG);
 
  219        $reg->mapSimple(Blocks::DRIED_KELP(), Ids::DRIED_KELP_BLOCK);
 
  220        $reg->mapSimple(Blocks::ELEMENT_ACTINIUM(), Ids::ELEMENT_89);
 
  221        $reg->mapSimple(Blocks::ELEMENT_ALUMINUM(), Ids::ELEMENT_13);
 
  222        $reg->mapSimple(Blocks::ELEMENT_AMERICIUM(), Ids::ELEMENT_95);
 
  223        $reg->mapSimple(Blocks::ELEMENT_ANTIMONY(), Ids::ELEMENT_51);
 
  224        $reg->mapSimple(Blocks::ELEMENT_ARGON(), Ids::ELEMENT_18);
 
  225        $reg->mapSimple(Blocks::ELEMENT_ARSENIC(), Ids::ELEMENT_33);
 
  226        $reg->mapSimple(Blocks::ELEMENT_ASTATINE(), Ids::ELEMENT_85);
 
  227        $reg->mapSimple(Blocks::ELEMENT_BARIUM(), Ids::ELEMENT_56);
 
  228        $reg->mapSimple(Blocks::ELEMENT_BERKELIUM(), Ids::ELEMENT_97);
 
  229        $reg->mapSimple(Blocks::ELEMENT_BERYLLIUM(), Ids::ELEMENT_4);
 
  230        $reg->mapSimple(Blocks::ELEMENT_BISMUTH(), Ids::ELEMENT_83);
 
  231        $reg->mapSimple(Blocks::ELEMENT_BOHRIUM(), Ids::ELEMENT_107);
 
  232        $reg->mapSimple(Blocks::ELEMENT_BORON(), Ids::ELEMENT_5);
 
  233        $reg->mapSimple(Blocks::ELEMENT_BROMINE(), Ids::ELEMENT_35);
 
  234        $reg->mapSimple(Blocks::ELEMENT_CADMIUM(), Ids::ELEMENT_48);
 
  235        $reg->mapSimple(Blocks::ELEMENT_CALCIUM(), Ids::ELEMENT_20);
 
  236        $reg->mapSimple(Blocks::ELEMENT_CALIFORNIUM(), Ids::ELEMENT_98);
 
  237        $reg->mapSimple(Blocks::ELEMENT_CARBON(), Ids::ELEMENT_6);
 
  238        $reg->mapSimple(Blocks::ELEMENT_CERIUM(), Ids::ELEMENT_58);
 
  239        $reg->mapSimple(Blocks::ELEMENT_CESIUM(), Ids::ELEMENT_55);
 
  240        $reg->mapSimple(Blocks::ELEMENT_CHLORINE(), Ids::ELEMENT_17);
 
  241        $reg->mapSimple(Blocks::ELEMENT_CHROMIUM(), Ids::ELEMENT_24);
 
  242        $reg->mapSimple(Blocks::ELEMENT_COBALT(), Ids::ELEMENT_27);
 
  243        $reg->mapSimple(Blocks::ELEMENT_COPERNICIUM(), Ids::ELEMENT_112);
 
  244        $reg->mapSimple(Blocks::ELEMENT_COPPER(), Ids::ELEMENT_29);
 
  245        $reg->mapSimple(Blocks::ELEMENT_CURIUM(), Ids::ELEMENT_96);
 
  246        $reg->mapSimple(Blocks::ELEMENT_DARMSTADTIUM(), Ids::ELEMENT_110);
 
  247        $reg->mapSimple(Blocks::ELEMENT_DUBNIUM(), Ids::ELEMENT_105);
 
  248        $reg->mapSimple(Blocks::ELEMENT_DYSPROSIUM(), Ids::ELEMENT_66);
 
  249        $reg->mapSimple(Blocks::ELEMENT_EINSTEINIUM(), Ids::ELEMENT_99);
 
  250        $reg->mapSimple(Blocks::ELEMENT_ERBIUM(), Ids::ELEMENT_68);
 
  251        $reg->mapSimple(Blocks::ELEMENT_EUROPIUM(), Ids::ELEMENT_63);
 
  252        $reg->mapSimple(Blocks::ELEMENT_FERMIUM(), Ids::ELEMENT_100);
 
  253        $reg->mapSimple(Blocks::ELEMENT_FLEROVIUM(), Ids::ELEMENT_114);
 
  254        $reg->mapSimple(Blocks::ELEMENT_FLUORINE(), Ids::ELEMENT_9);
 
  255        $reg->mapSimple(Blocks::ELEMENT_FRANCIUM(), Ids::ELEMENT_87);
 
  256        $reg->mapSimple(Blocks::ELEMENT_GADOLINIUM(), Ids::ELEMENT_64);
 
  257        $reg->mapSimple(Blocks::ELEMENT_GALLIUM(), Ids::ELEMENT_31);
 
  258        $reg->mapSimple(Blocks::ELEMENT_GERMANIUM(), Ids::ELEMENT_32);
 
  259        $reg->mapSimple(Blocks::ELEMENT_GOLD(), Ids::ELEMENT_79);
 
  260        $reg->mapSimple(Blocks::ELEMENT_HAFNIUM(), Ids::ELEMENT_72);
 
  261        $reg->mapSimple(Blocks::ELEMENT_HASSIUM(), Ids::ELEMENT_108);
 
  262        $reg->mapSimple(Blocks::ELEMENT_HELIUM(), Ids::ELEMENT_2);
 
  263        $reg->mapSimple(Blocks::ELEMENT_HOLMIUM(), Ids::ELEMENT_67);
 
  264        $reg->mapSimple(Blocks::ELEMENT_HYDROGEN(), Ids::ELEMENT_1);
 
  265        $reg->mapSimple(Blocks::ELEMENT_INDIUM(), Ids::ELEMENT_49);
 
  266        $reg->mapSimple(Blocks::ELEMENT_IODINE(), Ids::ELEMENT_53);
 
  267        $reg->mapSimple(Blocks::ELEMENT_IRIDIUM(), Ids::ELEMENT_77);
 
  268        $reg->mapSimple(Blocks::ELEMENT_IRON(), Ids::ELEMENT_26);
 
  269        $reg->mapSimple(Blocks::ELEMENT_KRYPTON(), Ids::ELEMENT_36);
 
  270        $reg->mapSimple(Blocks::ELEMENT_LANTHANUM(), Ids::ELEMENT_57);
 
  271        $reg->mapSimple(Blocks::ELEMENT_LAWRENCIUM(), Ids::ELEMENT_103);
 
  272        $reg->mapSimple(Blocks::ELEMENT_LEAD(), Ids::ELEMENT_82);
 
  273        $reg->mapSimple(Blocks::ELEMENT_LITHIUM(), Ids::ELEMENT_3);
 
  274        $reg->mapSimple(Blocks::ELEMENT_LIVERMORIUM(), Ids::ELEMENT_116);
 
  275        $reg->mapSimple(Blocks::ELEMENT_LUTETIUM(), Ids::ELEMENT_71);
 
  276        $reg->mapSimple(Blocks::ELEMENT_MAGNESIUM(), Ids::ELEMENT_12);
 
  277        $reg->mapSimple(Blocks::ELEMENT_MANGANESE(), Ids::ELEMENT_25);
 
  278        $reg->mapSimple(Blocks::ELEMENT_MEITNERIUM(), Ids::ELEMENT_109);
 
  279        $reg->mapSimple(Blocks::ELEMENT_MENDELEVIUM(), Ids::ELEMENT_101);
 
  280        $reg->mapSimple(Blocks::ELEMENT_MERCURY(), Ids::ELEMENT_80);
 
  281        $reg->mapSimple(Blocks::ELEMENT_MOLYBDENUM(), Ids::ELEMENT_42);
 
  282        $reg->mapSimple(Blocks::ELEMENT_MOSCOVIUM(), Ids::ELEMENT_115);
 
  283        $reg->mapSimple(Blocks::ELEMENT_NEODYMIUM(), Ids::ELEMENT_60);
 
  284        $reg->mapSimple(Blocks::ELEMENT_NEON(), Ids::ELEMENT_10);
 
  285        $reg->mapSimple(Blocks::ELEMENT_NEPTUNIUM(), Ids::ELEMENT_93);
 
  286        $reg->mapSimple(Blocks::ELEMENT_NICKEL(), Ids::ELEMENT_28);
 
  287        $reg->mapSimple(Blocks::ELEMENT_NIHONIUM(), Ids::ELEMENT_113);
 
  288        $reg->mapSimple(Blocks::ELEMENT_NIOBIUM(), Ids::ELEMENT_41);
 
  289        $reg->mapSimple(Blocks::ELEMENT_NITROGEN(), Ids::ELEMENT_7);
 
  290        $reg->mapSimple(Blocks::ELEMENT_NOBELIUM(), Ids::ELEMENT_102);
 
  291        $reg->mapSimple(Blocks::ELEMENT_OGANESSON(), Ids::ELEMENT_118);
 
  292        $reg->mapSimple(Blocks::ELEMENT_OSMIUM(), Ids::ELEMENT_76);
 
  293        $reg->mapSimple(Blocks::ELEMENT_OXYGEN(), Ids::ELEMENT_8);
 
  294        $reg->mapSimple(Blocks::ELEMENT_PALLADIUM(), Ids::ELEMENT_46);
 
  295        $reg->mapSimple(Blocks::ELEMENT_PHOSPHORUS(), Ids::ELEMENT_15);
 
  296        $reg->mapSimple(Blocks::ELEMENT_PLATINUM(), Ids::ELEMENT_78);
 
  297        $reg->mapSimple(Blocks::ELEMENT_PLUTONIUM(), Ids::ELEMENT_94);
 
  298        $reg->mapSimple(Blocks::ELEMENT_POLONIUM(), Ids::ELEMENT_84);
 
  299        $reg->mapSimple(Blocks::ELEMENT_POTASSIUM(), Ids::ELEMENT_19);
 
  300        $reg->mapSimple(Blocks::ELEMENT_PRASEODYMIUM(), Ids::ELEMENT_59);
 
  301        $reg->mapSimple(Blocks::ELEMENT_PROMETHIUM(), Ids::ELEMENT_61);
 
  302        $reg->mapSimple(Blocks::ELEMENT_PROTACTINIUM(), Ids::ELEMENT_91);
 
  303        $reg->mapSimple(Blocks::ELEMENT_RADIUM(), Ids::ELEMENT_88);
 
  304        $reg->mapSimple(Blocks::ELEMENT_RADON(), Ids::ELEMENT_86);
 
  305        $reg->mapSimple(Blocks::ELEMENT_RHENIUM(), Ids::ELEMENT_75);
 
  306        $reg->mapSimple(Blocks::ELEMENT_RHODIUM(), Ids::ELEMENT_45);
 
  307        $reg->mapSimple(Blocks::ELEMENT_ROENTGENIUM(), Ids::ELEMENT_111);
 
  308        $reg->mapSimple(Blocks::ELEMENT_RUBIDIUM(), Ids::ELEMENT_37);
 
  309        $reg->mapSimple(Blocks::ELEMENT_RUTHENIUM(), Ids::ELEMENT_44);
 
  310        $reg->mapSimple(Blocks::ELEMENT_RUTHERFORDIUM(), Ids::ELEMENT_104);
 
  311        $reg->mapSimple(Blocks::ELEMENT_SAMARIUM(), Ids::ELEMENT_62);
 
  312        $reg->mapSimple(Blocks::ELEMENT_SCANDIUM(), Ids::ELEMENT_21);
 
  313        $reg->mapSimple(Blocks::ELEMENT_SEABORGIUM(), Ids::ELEMENT_106);
 
  314        $reg->mapSimple(Blocks::ELEMENT_SELENIUM(), Ids::ELEMENT_34);
 
  315        $reg->mapSimple(Blocks::ELEMENT_SILICON(), Ids::ELEMENT_14);
 
  316        $reg->mapSimple(Blocks::ELEMENT_SILVER(), Ids::ELEMENT_47);
 
  317        $reg->mapSimple(Blocks::ELEMENT_SODIUM(), Ids::ELEMENT_11);
 
  318        $reg->mapSimple(Blocks::ELEMENT_STRONTIUM(), Ids::ELEMENT_38);
 
  319        $reg->mapSimple(Blocks::ELEMENT_SULFUR(), Ids::ELEMENT_16);
 
  320        $reg->mapSimple(Blocks::ELEMENT_TANTALUM(), Ids::ELEMENT_73);
 
  321        $reg->mapSimple(Blocks::ELEMENT_TECHNETIUM(), Ids::ELEMENT_43);
 
  322        $reg->mapSimple(Blocks::ELEMENT_TELLURIUM(), Ids::ELEMENT_52);
 
  323        $reg->mapSimple(Blocks::ELEMENT_TENNESSINE(), Ids::ELEMENT_117);
 
  324        $reg->mapSimple(Blocks::ELEMENT_TERBIUM(), Ids::ELEMENT_65);
 
  325        $reg->mapSimple(Blocks::ELEMENT_THALLIUM(), Ids::ELEMENT_81);
 
  326        $reg->mapSimple(Blocks::ELEMENT_THORIUM(), Ids::ELEMENT_90);
 
  327        $reg->mapSimple(Blocks::ELEMENT_THULIUM(), Ids::ELEMENT_69);
 
  328        $reg->mapSimple(Blocks::ELEMENT_TIN(), Ids::ELEMENT_50);
 
  329        $reg->mapSimple(Blocks::ELEMENT_TITANIUM(), Ids::ELEMENT_22);
 
  330        $reg->mapSimple(Blocks::ELEMENT_TUNGSTEN(), Ids::ELEMENT_74);
 
  331        $reg->mapSimple(Blocks::ELEMENT_URANIUM(), Ids::ELEMENT_92);
 
  332        $reg->mapSimple(Blocks::ELEMENT_VANADIUM(), Ids::ELEMENT_23);
 
  333        $reg->mapSimple(Blocks::ELEMENT_XENON(), Ids::ELEMENT_54);
 
  334        $reg->mapSimple(Blocks::ELEMENT_YTTERBIUM(), Ids::ELEMENT_70);
 
  335        $reg->mapSimple(Blocks::ELEMENT_YTTRIUM(), Ids::ELEMENT_39);
 
  336        $reg->mapSimple(Blocks::ELEMENT_ZERO(), Ids::ELEMENT_0);
 
  337        $reg->mapSimple(Blocks::ELEMENT_ZINC(), Ids::ELEMENT_30);
 
  338        $reg->mapSimple(Blocks::ELEMENT_ZIRCONIUM(), Ids::ELEMENT_40);
 
  339        $reg->mapSimple(Blocks::EMERALD(), Ids::EMERALD_BLOCK);
 
  340        $reg->mapSimple(Blocks::EMERALD_ORE(), Ids::EMERALD_ORE);
 
  341        $reg->mapSimple(Blocks::ENCHANTING_TABLE(), Ids::ENCHANTING_TABLE);
 
  342        $reg->mapSimple(Blocks::END_STONE(), Ids::END_STONE);
 
  343        $reg->mapSimple(Blocks::END_STONE_BRICKS(), Ids::END_BRICKS);
 
  344        $reg->mapSimple(Blocks::FERN(), Ids::FERN);
 
  345        $reg->mapSimple(Blocks::FLETCHING_TABLE(), Ids::FLETCHING_TABLE);
 
  346        $reg->mapSimple(Blocks::GILDED_BLACKSTONE(), Ids::GILDED_BLACKSTONE);
 
  347        $reg->mapSimple(Blocks::GLASS(), Ids::GLASS);
 
  348        $reg->mapSimple(Blocks::GLASS_PANE(), Ids::GLASS_PANE);
 
  349        $reg->mapSimple(Blocks::GLOWING_OBSIDIAN(), Ids::GLOWINGOBSIDIAN);
 
  350        $reg->mapSimple(Blocks::GLOWSTONE(), Ids::GLOWSTONE);
 
  351        $reg->mapSimple(Blocks::GOLD(), Ids::GOLD_BLOCK);
 
  352        $reg->mapSimple(Blocks::GOLD_ORE(), Ids::GOLD_ORE);
 
  353        $reg->mapSimple(Blocks::GRANITE(), Ids::GRANITE);
 
  354        $reg->mapSimple(Blocks::GRASS(), Ids::GRASS_BLOCK);
 
  355        $reg->mapSimple(Blocks::GRASS_PATH(), Ids::GRASS_PATH);
 
  356        $reg->mapSimple(Blocks::GRAVEL(), Ids::GRAVEL);
 
  357        $reg->mapSimple(Blocks::HANGING_ROOTS(), Ids::HANGING_ROOTS);
 
  358        $reg->mapSimple(Blocks::HARDENED_CLAY(), Ids::HARDENED_CLAY);
 
  359        $reg->mapSimple(Blocks::HARDENED_GLASS(), Ids::HARD_GLASS);
 
  360        $reg->mapSimple(Blocks::HARDENED_GLASS_PANE(), Ids::HARD_GLASS_PANE);
 
  361        $reg->mapSimple(Blocks::HONEYCOMB(), Ids::HONEYCOMB_BLOCK);
 
  362        $reg->mapSimple(Blocks::ICE(), Ids::ICE);
 
  363        $reg->mapSimple(Blocks::INFESTED_CHISELED_STONE_BRICK(), Ids::INFESTED_CHISELED_STONE_BRICKS);
 
  364        $reg->mapSimple(Blocks::INFESTED_COBBLESTONE(), Ids::INFESTED_COBBLESTONE);
 
  365        $reg->mapSimple(Blocks::INFESTED_CRACKED_STONE_BRICK(), Ids::INFESTED_CRACKED_STONE_BRICKS);
 
  366        $reg->mapSimple(Blocks::INFESTED_MOSSY_STONE_BRICK(), Ids::INFESTED_MOSSY_STONE_BRICKS);
 
  367        $reg->mapSimple(Blocks::INFESTED_STONE(), Ids::INFESTED_STONE);
 
  368        $reg->mapSimple(Blocks::INFESTED_STONE_BRICK(), Ids::INFESTED_STONE_BRICKS);
 
  369        $reg->mapSimple(Blocks::INFO_UPDATE(), Ids::INFO_UPDATE);
 
  370        $reg->mapSimple(Blocks::INFO_UPDATE2(), Ids::INFO_UPDATE2);
 
  371        $reg->mapSimple(Blocks::INVISIBLE_BEDROCK(), Ids::INVISIBLE_BEDROCK);
 
  372        $reg->mapSimple(Blocks::IRON(), Ids::IRON_BLOCK);
 
  373        $reg->mapSimple(Blocks::IRON_BARS(), Ids::IRON_BARS);
 
  374        $reg->mapSimple(Blocks::IRON_ORE(), Ids::IRON_ORE);
 
  375        $reg->mapSimple(Blocks::JUKEBOX(), Ids::JUKEBOX);
 
  376        $reg->mapSimple(Blocks::LAPIS_LAZULI(), Ids::LAPIS_BLOCK);
 
  377        $reg->mapSimple(Blocks::LAPIS_LAZULI_ORE(), Ids::LAPIS_ORE);
 
  378        $reg->mapSimple(Blocks::LEGACY_STONECUTTER(), Ids::STONECUTTER);
 
  379        $reg->mapSimple(Blocks::LILY_PAD(), Ids::WATERLILY);
 
  380        $reg->mapSimple(Blocks::MAGMA(), Ids::MAGMA);
 
  381        $reg->mapSimple(Blocks::MANGROVE_ROOTS(), Ids::MANGROVE_ROOTS);
 
  382        $reg->mapSimple(Blocks::MELON(), Ids::MELON_BLOCK);
 
  383        $reg->mapSimple(Blocks::MONSTER_SPAWNER(), Ids::MOB_SPAWNER);
 
  384        $reg->mapSimple(Blocks::MOSSY_COBBLESTONE(), Ids::MOSSY_COBBLESTONE);
 
  385        $reg->mapSimple(Blocks::MOSSY_STONE_BRICKS(), Ids::MOSSY_STONE_BRICKS);
 
  386        $reg->mapSimple(Blocks::MUD(), Ids::MUD);
 
  387        $reg->mapSimple(Blocks::MUD_BRICKS(), Ids::MUD_BRICKS);
 
  388        $reg->mapSimple(Blocks::MYCELIUM(), Ids::MYCELIUM);
 
  389        $reg->mapSimple(Blocks::NETHERITE(), Ids::NETHERITE_BLOCK);
 
  390        $reg->mapSimple(Blocks::NETHERRACK(), Ids::NETHERRACK);
 
  391        $reg->mapSimple(Blocks::NETHER_BRICKS(), Ids::NETHER_BRICK);
 
  392        $reg->mapSimple(Blocks::NETHER_BRICK_FENCE(), Ids::NETHER_BRICK_FENCE);
 
  393        $reg->mapSimple(Blocks::NETHER_GOLD_ORE(), Ids::NETHER_GOLD_ORE);
 
  394        $reg->mapSimple(Blocks::NETHER_QUARTZ_ORE(), Ids::QUARTZ_ORE);
 
  395        $reg->mapSimple(Blocks::NETHER_REACTOR_CORE(), Ids::NETHERREACTOR);
 
  396        $reg->mapSimple(Blocks::NETHER_WART_BLOCK(), Ids::NETHER_WART_BLOCK);
 
  397        $reg->mapSimple(Blocks::NOTE_BLOCK(), Ids::NOTEBLOCK);
 
  398        $reg->mapSimple(Blocks::OBSIDIAN(), Ids::OBSIDIAN);
 
  399        $reg->mapSimple(Blocks::PACKED_ICE(), Ids::PACKED_ICE);
 
  400        $reg->mapSimple(Blocks::PACKED_MUD(), Ids::PACKED_MUD);
 
  401        $reg->mapSimple(Blocks::PODZOL(), Ids::PODZOL);
 
  402        $reg->mapSimple(Blocks::POLISHED_ANDESITE(), Ids::POLISHED_ANDESITE);
 
  403        $reg->mapSimple(Blocks::POLISHED_BLACKSTONE(), Ids::POLISHED_BLACKSTONE);
 
  404        $reg->mapSimple(Blocks::POLISHED_BLACKSTONE_BRICKS(), Ids::POLISHED_BLACKSTONE_BRICKS);
 
  405        $reg->mapSimple(Blocks::POLISHED_DEEPSLATE(), Ids::POLISHED_DEEPSLATE);
 
  406        $reg->mapSimple(Blocks::POLISHED_DIORITE(), Ids::POLISHED_DIORITE);
 
  407        $reg->mapSimple(Blocks::POLISHED_GRANITE(), Ids::POLISHED_GRANITE);
 
  408        $reg->mapSimple(Blocks::POLISHED_TUFF(), Ids::POLISHED_TUFF);
 
  409        $reg->mapSimple(Blocks::PRISMARINE(), Ids::PRISMARINE);
 
  410        $reg->mapSimple(Blocks::PRISMARINE_BRICKS(), Ids::PRISMARINE_BRICKS);
 
  411        $reg->mapSimple(Blocks::QUARTZ_BRICKS(), Ids::QUARTZ_BRICKS);
 
  412        $reg->mapSimple(Blocks::RAW_COPPER(), Ids::RAW_COPPER_BLOCK);
 
  413        $reg->mapSimple(Blocks::RAW_GOLD(), Ids::RAW_GOLD_BLOCK);
 
  414        $reg->mapSimple(Blocks::RAW_IRON(), Ids::RAW_IRON_BLOCK);
 
  415        $reg->mapSimple(Blocks::REDSTONE(), Ids::REDSTONE_BLOCK);
 
  416        $reg->mapSimple(Blocks::RED_MUSHROOM(), Ids::RED_MUSHROOM);
 
  417        $reg->mapSimple(Blocks::RED_NETHER_BRICKS(), Ids::RED_NETHER_BRICK);
 
  418        $reg->mapSimple(Blocks::RED_SAND(), Ids::RED_SAND);
 
  419        $reg->mapSimple(Blocks::RED_SANDSTONE(), Ids::RED_SANDSTONE);
 
  420        $reg->mapSimple(Blocks::REINFORCED_DEEPSLATE(), Ids::REINFORCED_DEEPSLATE);
 
  421        $reg->mapSimple(Blocks::RESERVED6(), Ids::RESERVED6);
 
  422        $reg->mapSimple(Blocks::RESIN(), Ids::RESIN_BLOCK);
 
  423        $reg->mapSimple(Blocks::RESIN_BRICKS(), Ids::RESIN_BRICKS);
 
  424        $reg->mapSimple(Blocks::SAND(), Ids::SAND);
 
  425        $reg->mapSimple(Blocks::SANDSTONE(), Ids::SANDSTONE);
 
  426        $reg->mapSimple(Blocks::SCULK(), Ids::SCULK);
 
  427        $reg->mapSimple(Blocks::SEA_LANTERN(), Ids::SEA_LANTERN);
 
  428        $reg->mapSimple(Blocks::SHROOMLIGHT(), Ids::SHROOMLIGHT);
 
  429        $reg->mapSimple(Blocks::SHULKER_BOX(), Ids::UNDYED_SHULKER_BOX);
 
  430        $reg->mapSimple(Blocks::SLIME(), Ids::SLIME);
 
  431        $reg->mapSimple(Blocks::SMITHING_TABLE(), Ids::SMITHING_TABLE);
 
  432        $reg->mapSimple(Blocks::SMOOTH_BASALT(), Ids::SMOOTH_BASALT);
 
  433        $reg->mapSimple(Blocks::SMOOTH_RED_SANDSTONE(), Ids::SMOOTH_RED_SANDSTONE);
 
  434        $reg->mapSimple(Blocks::SMOOTH_SANDSTONE(), Ids::SMOOTH_SANDSTONE);
 
  435        $reg->mapSimple(Blocks::SMOOTH_STONE(), Ids::SMOOTH_STONE);
 
  436        $reg->mapSimple(Blocks::SNOW(), Ids::SNOW);
 
  437        $reg->mapSimple(Blocks::SOUL_SAND(), Ids::SOUL_SAND);
 
  438        $reg->mapSimple(Blocks::SOUL_SOIL(), Ids::SOUL_SOIL);
 
  439        $reg->mapSimple(Blocks::SPORE_BLOSSOM(), Ids::SPORE_BLOSSOM);
 
  440        $reg->mapSimple(Blocks::STONE(), Ids::STONE);
 
  441        $reg->mapSimple(Blocks::STONE_BRICKS(), Ids::STONE_BRICKS);
 
  442        $reg->mapSimple(Blocks::TALL_GRASS(), Ids::SHORT_GRASS);  
 
  443        $reg->mapSimple(Blocks::TINTED_GLASS(), Ids::TINTED_GLASS);
 
  444        $reg->mapSimple(Blocks::TORCHFLOWER(), Ids::TORCHFLOWER);
 
  445        $reg->mapSimple(Blocks::TUFF(), Ids::TUFF);
 
  446        $reg->mapSimple(Blocks::TUFF_BRICKS(), Ids::TUFF_BRICKS);
 
  447        $reg->mapSimple(Blocks::WARPED_WART_BLOCK(), Ids::WARPED_WART_BLOCK);
 
  448        $reg->mapSimple(Blocks::WARPED_ROOTS(), Ids::WARPED_ROOTS);
 
  449        $reg->mapSimple(Blocks::WITHER_ROSE(), Ids::WITHER_ROSE);
 
  451        $reg->mapSimple(Blocks::ALLIUM(), Ids::ALLIUM);
 
  452        $reg->mapSimple(Blocks::CORNFLOWER(), Ids::CORNFLOWER);
 
  453        $reg->mapSimple(Blocks::AZURE_BLUET(), Ids::AZURE_BLUET);
 
  454        $reg->mapSimple(Blocks::LILY_OF_THE_VALLEY(), Ids::LILY_OF_THE_VALLEY);
 
  455        $reg->mapSimple(Blocks::BLUE_ORCHID(), Ids::BLUE_ORCHID);
 
  456        $reg->mapSimple(Blocks::OXEYE_DAISY(), Ids::OXEYE_DAISY);
 
  457        $reg->mapSimple(Blocks::POPPY(), Ids::POPPY);
 
  458        $reg->mapSimple(Blocks::ORANGE_TULIP(), Ids::ORANGE_TULIP);
 
  459        $reg->mapSimple(Blocks::PINK_TULIP(), Ids::PINK_TULIP);
 
  460        $reg->mapSimple(Blocks::RED_TULIP(), Ids::RED_TULIP);
 
  461        $reg->mapSimple(Blocks::WHITE_TULIP(), Ids::WHITE_TULIP);
 
  463        $reg->mapSimple(Blocks::CACTUS_FLOWER(), Ids::CACTUS_FLOWER);
 
  467        $reg->
mapColored(Blocks::STAINED_HARDENED_GLASS(), 
"minecraft:hard_", 
"_stained_glass");
 
  468        $reg->
mapColored(Blocks::STAINED_HARDENED_GLASS_PANE(), 
"minecraft:hard_", 
"_stained_glass_pane");
 
  470        $reg->
mapColored(Blocks::CARPET(), 
"minecraft:", 
"_carpet");
 
  471        $reg->
mapColored(Blocks::CONCRETE(), 
"minecraft:", 
"_concrete");
 
  472        $reg->
mapColored(Blocks::CONCRETE_POWDER(), 
"minecraft:", 
"_concrete_powder");
 
  473        $reg->
mapColored(Blocks::DYED_SHULKER_BOX(), 
"minecraft:", 
"_shulker_box");
 
  474        $reg->
mapColored(Blocks::STAINED_CLAY(), 
"minecraft:", 
"_terracotta");
 
  475        $reg->
mapColored(Blocks::STAINED_GLASS(), 
"minecraft:", 
"_stained_glass");
 
  476        $reg->
mapColored(Blocks::STAINED_GLASS_PANE(), 
"minecraft:", 
"_stained_glass_pane");
 
  477        $reg->
mapColored(Blocks::WOOL(), 
"minecraft:", 
"_wool");
 
  485            ->properties([$commonProperties->horizontalFacingClassic])
 
  490        $candleProperties = [
 
  491            $commonProperties->lit,
 
  494        $cakeWithCandleProperties = [$commonProperties->lit];
 
  496        $reg->
mapModel(
Model::create(Blocks::CAKE_WITH_CANDLE(), Ids::CANDLE_CAKE)->properties($cakeWithCandleProperties));
 
  501                $commonProperties->dyeColorIdInfix,
 
  504            ->properties($candleProperties)
 
  509                $commonProperties->dyeColorIdInfix,
 
  512            ->properties($cakeWithCandleProperties)
 
  522            Ids::ACACIA_LEAVES => Blocks::ACACIA_LEAVES(),
 
  523            Ids::AZALEA_LEAVES => Blocks::AZALEA_LEAVES(),
 
  524            Ids::AZALEA_LEAVES_FLOWERED => Blocks::FLOWERING_AZALEA_LEAVES(),
 
  525            Ids::BIRCH_LEAVES => Blocks::BIRCH_LEAVES(),
 
  526            Ids::CHERRY_LEAVES => Blocks::CHERRY_LEAVES(),
 
  527            Ids::DARK_OAK_LEAVES => Blocks::DARK_OAK_LEAVES(),
 
  528            Ids::JUNGLE_LEAVES => Blocks::JUNGLE_LEAVES(),
 
  529            Ids::MANGROVE_LEAVES => Blocks::MANGROVE_LEAVES(),
 
  530            Ids::OAK_LEAVES => Blocks::OAK_LEAVES(),
 
  531            Ids::PALE_OAK_LEAVES => Blocks::PALE_OAK_LEAVES(),
 
  532            Ids::SPRUCE_LEAVES => Blocks::SPRUCE_LEAVES()
 
  543            Ids::ACACIA_SAPLING => Blocks::ACACIA_SAPLING(),
 
  544            Ids::BIRCH_SAPLING => Blocks::BIRCH_SAPLING(),
 
  545            Ids::DARK_OAK_SAPLING => Blocks::DARK_OAK_SAPLING(),
 
  546            Ids::JUNGLE_SAPLING => Blocks::JUNGLE_SAPLING(),
 
  547            Ids::OAK_SAPLING => Blocks::OAK_SAPLING(),
 
  548            Ids::SPRUCE_SAPLING => Blocks::SPRUCE_SAPLING(),
 
  555        $reg->
mapModel(
Model::create(Blocks::BEETROOTS(), Ids::BEETROOT)->properties([$commonProperties->cropAgeMax7]));
 
  556        $reg->
mapModel(
Model::create(Blocks::CARROTS(), Ids::CARROTS)->properties([$commonProperties->cropAgeMax7]));
 
  557        $reg->
mapModel(
Model::create(Blocks::POTATOES(), Ids::POTATOES)->properties([$commonProperties->cropAgeMax7]));
 
  558        $reg->
mapModel(
Model::create(Blocks::WHEAT(), Ids::WHEAT)->properties([$commonProperties->cropAgeMax7]));
 
  560        $reg->
mapModel(
Model::create(Blocks::MELON_STEM(), Ids::MELON_STEM)->properties($commonProperties->stemProperties));
 
  561        $reg->
mapModel(
Model::create(Blocks::PUMPKIN_STEM(), Ids::PUMPKIN_STEM)->properties($commonProperties->stemProperties));
 
  564            [Blocks::DOUBLE_TALLGRASS(), Ids::TALL_GRASS],
 
  565            [Blocks::LARGE_FERN(), Ids::LARGE_FERN],
 
  566            [Blocks::LILAC(), Ids::LILAC],
 
  567            [Blocks::PEONY(), Ids::PEONY],
 
  568            [Blocks::ROSE_BUSH(), Ids::ROSE_BUSH],
 
  569            [Blocks::SUNFLOWER(), Ids::SUNFLOWER],
 
  575            [Blocks::BROWN_MUSHROOM_BLOCK(), Ids::BROWN_MUSHROOM_BLOCK],
 
  576            [Blocks::RED_MUSHROOM_BLOCK(), Ids::RED_MUSHROOM_BLOCK]
 
  583        $reg->
mapModel(
Model::create(Blocks::GLOW_LICHEN(), Ids::GLOW_LICHEN)->properties([$commonProperties->multiFacingFlags]));
 
  584        $reg->
mapModel(
Model::create(Blocks::RESIN_CLUMP(), Ids::RESIN_CLUMP)->properties([$commonProperties->multiFacingFlags]));
 
  588                StateNames::VINE_DIRECTION_BITS,
 
  589                IntFromRawStateMap::int([
 
  590                    Facing::NORTH => BlockLegacyMetadata::VINE_FLAG_NORTH,
 
  591                    Facing::SOUTH => BlockLegacyMetadata::VINE_FLAG_SOUTH,
 
  592                    Facing::WEST => BlockLegacyMetadata::VINE_FLAG_WEST,
 
  593                    Facing::EAST => BlockLegacyMetadata::VINE_FLAG_EAST,
 
  614            ->idComponents([...$commonProperties->coralIdPrefixes, 
"_coral_fan"])
 
  620            ->idComponents([...$commonProperties->coralIdPrefixes, 
"_coral_wall_fan"])
 
  629            ->idComponents([...$commonProperties->copperIdPrefixes, 
"copper_bulb"])
 
  631                $commonProperties->lit,
 
  637                ...$commonProperties->copperIdPrefixes,
 
  640                new BoolFromStringProperty(
"bruhhhh", 
"", 
"_block", fn(
Copper $b) => !$b->isWaxed() && $b->getOxidation() === CopperOxidation::NONE, fn() => 
null)
 
  647            ->idComponents([...$commonProperties->copperIdPrefixes, 
"cut_copper_stairs"])
 
  648            ->properties($commonProperties->stairProperties)
 
  651            ->idComponents([...$commonProperties->copperIdPrefixes, 
"copper_trapdoor"])
 
  652            ->properties($commonProperties->trapdoorProperties)
 
  655            ->idComponents([...$commonProperties->copperIdPrefixes, 
"copper_door"])
 
  656            ->properties($commonProperties->doorProperties)
 
  661                ...$commonProperties->copperIdPrefixes,
 
  662                $commonProperties->slabIdInfix,
 
  665            ->properties([$commonProperties->slabPositionProperty])
 
  670            ->idComponents([...$commonProperties->copperIdPrefixes, 
"copper_chain"])
 
  671            ->properties([$commonProperties->pillarAxis])
 
  674            ->idComponents([...$commonProperties->copperIdPrefixes, 
"copper_lantern"])
 
  680            ->idComponents([...$commonProperties->copperIdPrefixes, 
"lightning_rod"])
 
  682                $commonProperties->anyFacingClassic,
 
  694                    1 => Ids::CHIPPED_ANVIL,
 
  695                    2 => Ids::DAMAGED_ANVIL,
 
  698            ->properties([$commonProperties->horizontalFacingCardinal])
 
  703                    AmethystCluster::STAGE_SMALL_BUD => Ids::SMALL_AMETHYST_BUD,
 
  704                    AmethystCluster::STAGE_MEDIUM_BUD => Ids::MEDIUM_AMETHYST_BUD,
 
  705                    AmethystCluster::STAGE_LARGE_BUD => Ids::LARGE_AMETHYST_BUD,
 
  706                    AmethystCluster::STAGE_CLUSTER => Ids::AMETHYST_CLUSTER
 
  709            ->properties([$commonProperties->blockFace])
 
  717                "minecraft:cave_vines",
 
  720                    EnumFromRawStateMap::string(FlattenedCaveVinesVariant::class, fn(FlattenedCaveVinesVariant $case) => $case->value),
 
  723                            FlattenedCaveVinesVariant::HEAD_WITH_BERRIES :
 
  724                            FlattenedCaveVinesVariant::BODY_WITH_BERRIES) :
 
  725                        FlattenedCaveVinesVariant::NO_BERRIES,
 
  726                    fn(
CaveVines $b, FlattenedCaveVinesVariant $v) => match($v){
 
  727                        FlattenedCaveVinesVariant::HEAD_WITH_BERRIES => $b->setBerries(
true)->setHead(
true),
 
  728                        FlattenedCaveVinesVariant::BODY_WITH_BERRIES => $b->setBerries(
true)->setHead(
false),
 
  729                        FlattenedCaveVinesVariant::NO_BERRIES => $b->setBerries(
false)->setHead(
false), 
 
  741                new ValueFromStringProperty(
"id", EnumFromRawStateMap::string(DirtType::class, fn(DirtType $case) => match ($case) {
 
  742                    DirtType::NORMAL => Ids::DIRT,
 
  743                    DirtType::COARSE => Ids::COARSE_DIRT,
 
  744                    DirtType::ROOTED => Ids::DIRT_WITH_ROOTS,
 
  745                }), fn(
Dirt $b) => $b->getDirtType(), fn(
Dirt $b, DirtType $v) => $b->setDirtType($v))
 
  754            ->properties([$commonProperties->pillarAxis])
 
  760                "minecraft:light_block_",
 
  764                    IntFromRawStateMap::string(array_map(strval(...), range(0, 15))),
 
  766                    fn(
Light $b, 
int $v) => $b->setLightLevel($v)
 
  782            [Blocks::LAVA(), 
"lava"],
 
  783            [Blocks::WATER(), 
"water"]
 
  784        ] as [$block, $idSuffix]){
 
  786                ->idComponents([...$commonProperties->liquidIdPrefixes, $idSuffix])
 
  787                ->properties([$commonProperties->liquidData])
 
  794            [Blocks::BLAST_FURNACE(), 
"blast_furnace"],
 
  795            [Blocks::FURNACE(), 
"furnace"],
 
  796            [Blocks::SMOKER(), 
"smoker"]
 
  797        ] as [$block, $idSuffix]){
 
  799                ->idComponents([...$commonProperties->furnaceIdPrefixes, $idSuffix])
 
  800                ->properties([$commonProperties->horizontalFacingCardinal])
 
  805            [Blocks::REDSTONE_LAMP(), 
"redstone_lamp"],
 
  806            [Blocks::REDSTONE_ORE(), 
"redstone_ore"],
 
  807            [Blocks::DEEPSLATE_REDSTONE_ORE(), 
"deepslate_redstone_ore"]
 
  808        ] as [$block, $idSuffix]){
 
  814                "minecraft:daylight_detector",
 
  817            ->properties([$commonProperties->analogRedstoneSignal])
 
  826                $commonProperties->horizontalFacingCardinal,
 
  839                $commonProperties->horizontalFacingCardinal,
 
  850            ->properties([$commonProperties->torchFacing])
 
  860                new BoolFromStringProperty(
"underwater", 
"", 
"underwater_", fn(
TNT $b) => $b->worksUnderwater(), fn(
TNT $b, 
bool $v) => $b->setWorksUnderwater($v)),
 
  864                new BoolProperty(StateNames::EXPLODE_BIT, fn(
TNT $b) => $b->isUnstable(), fn(
TNT $b, 
bool $v) => $b->setUnstable($v)),
 
  870        $reg->mapSlab(Blocks::ANDESITE_SLAB(), 
"andesite");
 
  871        $reg->mapSlab(Blocks::BLACKSTONE_SLAB(), 
"blackstone");
 
  872        $reg->mapSlab(Blocks::BRICK_SLAB(), 
"brick");
 
  873        $reg->mapSlab(Blocks::COBBLED_DEEPSLATE_SLAB(), 
"cobbled_deepslate");
 
  874        $reg->mapSlab(Blocks::COBBLESTONE_SLAB(), 
"cobblestone");
 
  875        $reg->mapSlab(Blocks::CUT_RED_SANDSTONE_SLAB(), 
"cut_red_sandstone");
 
  876        $reg->mapSlab(Blocks::CUT_SANDSTONE_SLAB(), 
"cut_sandstone");
 
  877        $reg->mapSlab(Blocks::DARK_PRISMARINE_SLAB(), 
"dark_prismarine");
 
  878        $reg->mapSlab(Blocks::DEEPSLATE_BRICK_SLAB(), 
"deepslate_brick");
 
  879        $reg->mapSlab(Blocks::DEEPSLATE_TILE_SLAB(), 
"deepslate_tile");
 
  880        $reg->mapSlab(Blocks::DIORITE_SLAB(), 
"diorite");
 
  881        $reg->mapSlab(Blocks::END_STONE_BRICK_SLAB(), 
"end_stone_brick");
 
  882        $reg->mapSlab(Blocks::FAKE_WOODEN_SLAB(), 
"petrified_oak");
 
  883        $reg->mapSlab(Blocks::GRANITE_SLAB(), 
"granite");
 
  884        $reg->mapSlab(Blocks::MOSSY_COBBLESTONE_SLAB(), 
"mossy_cobblestone");
 
  885        $reg->mapSlab(Blocks::MOSSY_STONE_BRICK_SLAB(), 
"mossy_stone_brick");
 
  886        $reg->mapSlab(Blocks::MUD_BRICK_SLAB(), 
"mud_brick");
 
  887        $reg->mapSlab(Blocks::NETHER_BRICK_SLAB(), 
"nether_brick");
 
  888        $reg->mapSlab(Blocks::POLISHED_ANDESITE_SLAB(), 
"polished_andesite");
 
  889        $reg->mapSlab(Blocks::POLISHED_BLACKSTONE_BRICK_SLAB(), 
"polished_blackstone_brick");
 
  890        $reg->mapSlab(Blocks::POLISHED_BLACKSTONE_SLAB(), 
"polished_blackstone");
 
  891        $reg->mapSlab(Blocks::POLISHED_DEEPSLATE_SLAB(), 
"polished_deepslate");
 
  892        $reg->mapSlab(Blocks::POLISHED_DIORITE_SLAB(), 
"polished_diorite");
 
  893        $reg->mapSlab(Blocks::POLISHED_GRANITE_SLAB(), 
"polished_granite");
 
  894        $reg->mapSlab(Blocks::POLISHED_TUFF_SLAB(), 
"polished_tuff");
 
  895        $reg->mapSlab(Blocks::PRISMARINE_BRICKS_SLAB(), 
"prismarine_brick");
 
  896        $reg->mapSlab(Blocks::PRISMARINE_SLAB(), 
"prismarine");
 
  897        $reg->mapSlab(Blocks::PURPUR_SLAB(), 
"purpur");
 
  898        $reg->mapSlab(Blocks::QUARTZ_SLAB(), 
"quartz");
 
  899        $reg->mapSlab(Blocks::RED_NETHER_BRICK_SLAB(), 
"red_nether_brick");
 
  900        $reg->mapSlab(Blocks::RED_SANDSTONE_SLAB(), 
"red_sandstone");
 
  901        $reg->mapSlab(Blocks::RESIN_BRICK_SLAB(), 
"resin_brick");
 
  902        $reg->mapSlab(Blocks::SANDSTONE_SLAB(), 
"sandstone");
 
  903        $reg->mapSlab(Blocks::SMOOTH_QUARTZ_SLAB(), 
"smooth_quartz");
 
  904        $reg->mapSlab(Blocks::SMOOTH_RED_SANDSTONE_SLAB(), 
"smooth_red_sandstone");
 
  905        $reg->mapSlab(Blocks::SMOOTH_SANDSTONE_SLAB(), 
"smooth_sandstone");
 
  906        $reg->mapSlab(Blocks::SMOOTH_STONE_SLAB(), 
"smooth_stone");
 
  907        $reg->mapSlab(Blocks::STONE_BRICK_SLAB(), 
"stone_brick");
 
  908        $reg->mapSlab(Blocks::STONE_SLAB(), 
"normal_stone");
 
  909        $reg->mapSlab(Blocks::TUFF_BRICK_SLAB(), 
"tuff_brick");
 
  910        $reg->mapSlab(Blocks::TUFF_SLAB(), 
"tuff");
 
  914        $reg->mapStairs(Blocks::ANDESITE_STAIRS(), Ids::ANDESITE_STAIRS);
 
  915        $reg->mapStairs(Blocks::BLACKSTONE_STAIRS(), Ids::BLACKSTONE_STAIRS);
 
  916        $reg->mapStairs(Blocks::BRICK_STAIRS(), Ids::BRICK_STAIRS);
 
  917        $reg->mapStairs(Blocks::COBBLED_DEEPSLATE_STAIRS(), Ids::COBBLED_DEEPSLATE_STAIRS);
 
  918        $reg->mapStairs(Blocks::COBBLESTONE_STAIRS(), Ids::STONE_STAIRS);
 
  919        $reg->mapStairs(Blocks::DARK_PRISMARINE_STAIRS(), Ids::DARK_PRISMARINE_STAIRS);
 
  920        $reg->mapStairs(Blocks::DEEPSLATE_BRICK_STAIRS(), Ids::DEEPSLATE_BRICK_STAIRS);
 
  921        $reg->mapStairs(Blocks::DEEPSLATE_TILE_STAIRS(), Ids::DEEPSLATE_TILE_STAIRS);
 
  922        $reg->mapStairs(Blocks::DIORITE_STAIRS(), Ids::DIORITE_STAIRS);
 
  923        $reg->mapStairs(Blocks::END_STONE_BRICK_STAIRS(), Ids::END_BRICK_STAIRS);
 
  924        $reg->mapStairs(Blocks::GRANITE_STAIRS(), Ids::GRANITE_STAIRS);
 
  925        $reg->mapStairs(Blocks::MOSSY_COBBLESTONE_STAIRS(), Ids::MOSSY_COBBLESTONE_STAIRS);
 
  926        $reg->mapStairs(Blocks::MOSSY_STONE_BRICK_STAIRS(), Ids::MOSSY_STONE_BRICK_STAIRS);
 
  927        $reg->mapStairs(Blocks::MUD_BRICK_STAIRS(), Ids::MUD_BRICK_STAIRS);
 
  928        $reg->mapStairs(Blocks::NETHER_BRICK_STAIRS(), Ids::NETHER_BRICK_STAIRS);
 
  929        $reg->mapStairs(Blocks::POLISHED_ANDESITE_STAIRS(), Ids::POLISHED_ANDESITE_STAIRS);
 
  930        $reg->mapStairs(Blocks::POLISHED_BLACKSTONE_BRICK_STAIRS(), Ids::POLISHED_BLACKSTONE_BRICK_STAIRS);
 
  931        $reg->mapStairs(Blocks::POLISHED_BLACKSTONE_STAIRS(), Ids::POLISHED_BLACKSTONE_STAIRS);
 
  932        $reg->mapStairs(Blocks::POLISHED_DEEPSLATE_STAIRS(), Ids::POLISHED_DEEPSLATE_STAIRS);
 
  933        $reg->mapStairs(Blocks::POLISHED_DIORITE_STAIRS(), Ids::POLISHED_DIORITE_STAIRS);
 
  934        $reg->mapStairs(Blocks::POLISHED_GRANITE_STAIRS(), Ids::POLISHED_GRANITE_STAIRS);
 
  935        $reg->mapStairs(Blocks::POLISHED_TUFF_STAIRS(), Ids::POLISHED_TUFF_STAIRS);
 
  936        $reg->mapStairs(Blocks::PRISMARINE_BRICKS_STAIRS(), Ids::PRISMARINE_BRICKS_STAIRS);
 
  937        $reg->mapStairs(Blocks::PRISMARINE_STAIRS(), Ids::PRISMARINE_STAIRS);
 
  938        $reg->mapStairs(Blocks::PURPUR_STAIRS(), Ids::PURPUR_STAIRS);
 
  939        $reg->mapStairs(Blocks::QUARTZ_STAIRS(), Ids::QUARTZ_STAIRS);
 
  940        $reg->mapStairs(Blocks::RED_NETHER_BRICK_STAIRS(), Ids::RED_NETHER_BRICK_STAIRS);
 
  941        $reg->mapStairs(Blocks::RED_SANDSTONE_STAIRS(), Ids::RED_SANDSTONE_STAIRS);
 
  942        $reg->mapStairs(Blocks::RESIN_BRICK_STAIRS(), Ids::RESIN_BRICK_STAIRS);
 
  943        $reg->mapStairs(Blocks::SANDSTONE_STAIRS(), Ids::SANDSTONE_STAIRS);
 
  944        $reg->mapStairs(Blocks::SMOOTH_QUARTZ_STAIRS(), Ids::SMOOTH_QUARTZ_STAIRS);
 
  945        $reg->mapStairs(Blocks::SMOOTH_RED_SANDSTONE_STAIRS(), Ids::SMOOTH_RED_SANDSTONE_STAIRS);
 
  946        $reg->mapStairs(Blocks::SMOOTH_SANDSTONE_STAIRS(), Ids::SMOOTH_SANDSTONE_STAIRS);
 
  947        $reg->mapStairs(Blocks::STONE_BRICK_STAIRS(), Ids::STONE_BRICK_STAIRS);
 
  948        $reg->mapStairs(Blocks::STONE_STAIRS(), Ids::NORMAL_STONE_STAIRS);
 
  949        $reg->mapStairs(Blocks::TUFF_BRICK_STAIRS(), Ids::TUFF_BRICK_STAIRS);
 
  950        $reg->mapStairs(Blocks::TUFF_STAIRS(), Ids::TUFF_STAIRS);
 
  955            Ids::ANDESITE_WALL => Blocks::ANDESITE_WALL(),
 
  956            Ids::BLACKSTONE_WALL => Blocks::BLACKSTONE_WALL(),
 
  957            Ids::BRICK_WALL => Blocks::BRICK_WALL(),
 
  958            Ids::COBBLED_DEEPSLATE_WALL => Blocks::COBBLED_DEEPSLATE_WALL(),
 
  959            Ids::COBBLESTONE_WALL => Blocks::COBBLESTONE_WALL(),
 
  960            Ids::DEEPSLATE_BRICK_WALL => Blocks::DEEPSLATE_BRICK_WALL(),
 
  961            Ids::DEEPSLATE_TILE_WALL => Blocks::DEEPSLATE_TILE_WALL(),
 
  962            Ids::DIORITE_WALL => Blocks::DIORITE_WALL(),
 
  963            Ids::END_STONE_BRICK_WALL => Blocks::END_STONE_BRICK_WALL(),
 
  964            Ids::GRANITE_WALL => Blocks::GRANITE_WALL(),
 
  965            Ids::MOSSY_COBBLESTONE_WALL => Blocks::MOSSY_COBBLESTONE_WALL(),
 
  966            Ids::MOSSY_STONE_BRICK_WALL => Blocks::MOSSY_STONE_BRICK_WALL(),
 
  967            Ids::MUD_BRICK_WALL => Blocks::MUD_BRICK_WALL(),
 
  968            Ids::NETHER_BRICK_WALL => Blocks::NETHER_BRICK_WALL(),
 
  969            Ids::POLISHED_BLACKSTONE_BRICK_WALL => Blocks::POLISHED_BLACKSTONE_BRICK_WALL(),
 
  970            Ids::POLISHED_BLACKSTONE_WALL => Blocks::POLISHED_BLACKSTONE_WALL(),
 
  971            Ids::POLISHED_DEEPSLATE_WALL => Blocks::POLISHED_DEEPSLATE_WALL(),
 
  972            Ids::POLISHED_TUFF_WALL => Blocks::POLISHED_TUFF_WALL(),
 
  973            Ids::PRISMARINE_WALL => Blocks::PRISMARINE_WALL(),
 
  974            Ids::RED_NETHER_BRICK_WALL => Blocks::RED_NETHER_BRICK_WALL(),
 
  975            Ids::RED_SANDSTONE_WALL => Blocks::RED_SANDSTONE_WALL(),
 
  976            Ids::RESIN_BRICK_WALL => Blocks::RESIN_BRICK_WALL(),
 
  977            Ids::SANDSTONE_WALL => Blocks::SANDSTONE_WALL(),
 
  978            Ids::STONE_BRICK_WALL => Blocks::STONE_BRICK_WALL(),
 
  979            Ids::TUFF_BRICK_WALL => Blocks::TUFF_BRICK_WALL(),
 
  980            Ids::TUFF_WALL => Blocks::TUFF_WALL()
 
  989            [Blocks::ACACIA_BUTTON(), Ids::ACACIA_BUTTON],
 
  990            [Blocks::BIRCH_BUTTON(), Ids::BIRCH_BUTTON],
 
  991            [Blocks::CHERRY_BUTTON(), Ids::CHERRY_BUTTON],
 
  992            [Blocks::CRIMSON_BUTTON(), Ids::CRIMSON_BUTTON],
 
  993            [Blocks::DARK_OAK_BUTTON(), Ids::DARK_OAK_BUTTON],
 
  994            [Blocks::JUNGLE_BUTTON(), Ids::JUNGLE_BUTTON],
 
  995            [Blocks::MANGROVE_BUTTON(), Ids::MANGROVE_BUTTON],
 
  996            [Blocks::OAK_BUTTON(), Ids::WOODEN_BUTTON],
 
  997            [Blocks::PALE_OAK_BUTTON(), Ids::PALE_OAK_BUTTON],
 
  998            [Blocks::SPRUCE_BUTTON(), Ids::SPRUCE_BUTTON],
 
  999            [Blocks::WARPED_BUTTON(), Ids::WARPED_BUTTON]
 
 1000        ] as [$block, $id]){
 
 1006            [Blocks::ACACIA_DOOR(), Ids::ACACIA_DOOR],
 
 1007            [Blocks::BIRCH_DOOR(), Ids::BIRCH_DOOR],
 
 1008            [Blocks::CHERRY_DOOR(), Ids::CHERRY_DOOR],
 
 1009            [Blocks::CRIMSON_DOOR(), Ids::CRIMSON_DOOR],
 
 1010            [Blocks::DARK_OAK_DOOR(), Ids::DARK_OAK_DOOR],
 
 1011            [Blocks::JUNGLE_DOOR(), Ids::JUNGLE_DOOR],
 
 1012            [Blocks::MANGROVE_DOOR(), Ids::MANGROVE_DOOR],
 
 1013            [Blocks::OAK_DOOR(), Ids::WOODEN_DOOR],
 
 1014            [Blocks::PALE_OAK_DOOR(), Ids::PALE_OAK_DOOR],
 
 1015            [Blocks::SPRUCE_DOOR(), Ids::SPRUCE_DOOR],
 
 1016            [Blocks::WARPED_DOOR(), Ids::WARPED_DOOR]
 
 1017        ] as [$block, $id]){
 
 1023            [Blocks::ACACIA_FENCE(), Ids::ACACIA_FENCE],
 
 1024            [Blocks::BIRCH_FENCE(), Ids::BIRCH_FENCE],
 
 1025            [Blocks::CHERRY_FENCE(), Ids::CHERRY_FENCE],
 
 1026            [Blocks::DARK_OAK_FENCE(), Ids::DARK_OAK_FENCE],
 
 1027            [Blocks::JUNGLE_FENCE(), Ids::JUNGLE_FENCE],
 
 1028            [Blocks::MANGROVE_FENCE(), Ids::MANGROVE_FENCE],
 
 1029            [Blocks::OAK_FENCE(), Ids::OAK_FENCE],
 
 1030            [Blocks::PALE_OAK_FENCE(), Ids::PALE_OAK_FENCE],
 
 1031            [Blocks::SPRUCE_FENCE(), Ids::SPRUCE_FENCE],
 
 1032            [Blocks::CRIMSON_FENCE(), Ids::CRIMSON_FENCE],
 
 1033            [Blocks::WARPED_FENCE(), Ids::WARPED_FENCE]
 
 1034        ] as [$block, $id]){
 
 1035            $reg->mapSimple($block, $id);
 
 1039            [Blocks::ACACIA_FENCE_GATE(), Ids::ACACIA_FENCE_GATE],
 
 1040            [Blocks::BIRCH_FENCE_GATE(), Ids::BIRCH_FENCE_GATE],
 
 1041            [Blocks::CHERRY_FENCE_GATE(), Ids::CHERRY_FENCE_GATE],
 
 1042            [Blocks::DARK_OAK_FENCE_GATE(), Ids::DARK_OAK_FENCE_GATE],
 
 1043            [Blocks::JUNGLE_FENCE_GATE(), Ids::JUNGLE_FENCE_GATE],
 
 1044            [Blocks::MANGROVE_FENCE_GATE(), Ids::MANGROVE_FENCE_GATE],
 
 1045            [Blocks::OAK_FENCE_GATE(), Ids::FENCE_GATE],
 
 1046            [Blocks::PALE_OAK_FENCE_GATE(), Ids::PALE_OAK_FENCE_GATE],
 
 1047            [Blocks::SPRUCE_FENCE_GATE(), Ids::SPRUCE_FENCE_GATE],
 
 1048            [Blocks::CRIMSON_FENCE_GATE(), Ids::CRIMSON_FENCE_GATE],
 
 1049            [Blocks::WARPED_FENCE_GATE(), Ids::WARPED_FENCE_GATE]
 
 1050        ] as [$block, $id]){
 
 1055            [Blocks::ACACIA_SIGN(), Ids::ACACIA_STANDING_SIGN],
 
 1056            [Blocks::BIRCH_SIGN(), Ids::BIRCH_STANDING_SIGN],
 
 1057            [Blocks::CHERRY_SIGN(), Ids::CHERRY_STANDING_SIGN],
 
 1058            [Blocks::DARK_OAK_SIGN(), Ids::DARKOAK_STANDING_SIGN],
 
 1059            [Blocks::JUNGLE_SIGN(), Ids::JUNGLE_STANDING_SIGN],
 
 1060            [Blocks::MANGROVE_SIGN(), Ids::MANGROVE_STANDING_SIGN],
 
 1061            [Blocks::OAK_SIGN(), Ids::STANDING_SIGN],
 
 1062            [Blocks::PALE_OAK_SIGN(), Ids::PALE_OAK_STANDING_SIGN],
 
 1063            [Blocks::SPRUCE_SIGN(), Ids::SPRUCE_STANDING_SIGN],
 
 1064            [Blocks::CRIMSON_SIGN(), Ids::CRIMSON_STANDING_SIGN],
 
 1065            [Blocks::WARPED_SIGN(), Ids::WARPED_STANDING_SIGN]
 
 1066        ] as [$block, $id]){
 
 1072            [Blocks::ACACIA_LOG(), 
"acacia_log"],
 
 1073            [Blocks::BIRCH_LOG(), 
"birch_log"],
 
 1074            [Blocks::CHERRY_LOG(), 
"cherry_log"],
 
 1075            [Blocks::DARK_OAK_LOG(), 
"dark_oak_log"],
 
 1076            [Blocks::JUNGLE_LOG(), 
"jungle_log"],
 
 1077            [Blocks::MANGROVE_LOG(), 
"mangrove_log"],
 
 1078            [Blocks::OAK_LOG(), 
"oak_log"],
 
 1079            [Blocks::PALE_OAK_LOG(), 
"pale_oak_log"],
 
 1080            [Blocks::SPRUCE_LOG(), 
"spruce_log"],
 
 1081            [Blocks::CRIMSON_STEM(), 
"crimson_stem"],
 
 1082            [Blocks::WARPED_STEM(), 
"warped_stem"],
 
 1085            [Blocks::ACACIA_WOOD(), 
"acacia_wood"],
 
 1086            [Blocks::BIRCH_WOOD(), 
"birch_wood"],
 
 1087            [Blocks::CHERRY_WOOD(), 
"cherry_wood"],
 
 1088            [Blocks::DARK_OAK_WOOD(), 
"dark_oak_wood"],
 
 1089            [Blocks::JUNGLE_WOOD(), 
"jungle_wood"],
 
 1090            [Blocks::MANGROVE_WOOD(), 
"mangrove_wood"],
 
 1091            [Blocks::OAK_WOOD(), 
"oak_wood"],
 
 1092            [Blocks::PALE_OAK_WOOD(), 
"pale_oak_wood"],
 
 1093            [Blocks::SPRUCE_WOOD(), 
"spruce_wood"],
 
 1094            [Blocks::CRIMSON_HYPHAE(), 
"crimson_hyphae"],
 
 1095            [Blocks::WARPED_HYPHAE(), 
"warped_hyphae"]
 
 1096        ] as [$block, $idSuffix]){
 
 1098                ->idComponents([...$commonProperties->woodIdPrefixes, $idSuffix])
 
 1099                ->properties([$commonProperties->pillarAxis])
 
 1105            [Blocks::ACACIA_PLANKS(), Ids::ACACIA_PLANKS],
 
 1106            [Blocks::BIRCH_PLANKS(), Ids::BIRCH_PLANKS],
 
 1107            [Blocks::CHERRY_PLANKS(), Ids::CHERRY_PLANKS],
 
 1108            [Blocks::DARK_OAK_PLANKS(), Ids::DARK_OAK_PLANKS],
 
 1109            [Blocks::JUNGLE_PLANKS(), Ids::JUNGLE_PLANKS],
 
 1110            [Blocks::MANGROVE_PLANKS(), Ids::MANGROVE_PLANKS],
 
 1111            [Blocks::OAK_PLANKS(), Ids::OAK_PLANKS],
 
 1112            [Blocks::PALE_OAK_PLANKS(), Ids::PALE_OAK_PLANKS],
 
 1113            [Blocks::SPRUCE_PLANKS(), Ids::SPRUCE_PLANKS],
 
 1114            [Blocks::CRIMSON_PLANKS(), Ids::CRIMSON_PLANKS],
 
 1115            [Blocks::WARPED_PLANKS(), Ids::WARPED_PLANKS]
 
 1116        ] as [$block, $id]){
 
 1117            $reg->mapSimple($block, $id);
 
 1122            [Blocks::ACACIA_PRESSURE_PLATE(), Ids::ACACIA_PRESSURE_PLATE],
 
 1123            [Blocks::BIRCH_PRESSURE_PLATE(), Ids::BIRCH_PRESSURE_PLATE],
 
 1124            [Blocks::CHERRY_PRESSURE_PLATE(), Ids::CHERRY_PRESSURE_PLATE],
 
 1125            [Blocks::DARK_OAK_PRESSURE_PLATE(), Ids::DARK_OAK_PRESSURE_PLATE],
 
 1126            [Blocks::JUNGLE_PRESSURE_PLATE(), Ids::JUNGLE_PRESSURE_PLATE],
 
 1127            [Blocks::MANGROVE_PRESSURE_PLATE(), Ids::MANGROVE_PRESSURE_PLATE],
 
 1128            [Blocks::OAK_PRESSURE_PLATE(), Ids::WOODEN_PRESSURE_PLATE],
 
 1129            [Blocks::PALE_OAK_PRESSURE_PLATE(), Ids::PALE_OAK_PRESSURE_PLATE],
 
 1130            [Blocks::SPRUCE_PRESSURE_PLATE(), Ids::SPRUCE_PRESSURE_PLATE],
 
 1131            [Blocks::CRIMSON_PRESSURE_PLATE(), Ids::CRIMSON_PRESSURE_PLATE],
 
 1132            [Blocks::WARPED_PRESSURE_PLATE(), Ids::WARPED_PRESSURE_PLATE]
 
 1133        ] as [$block, $id]){
 
 1134            $reg->
mapModel(
Model::create($block, $id)->properties($commonProperties->simplePressurePlateProperties));
 
 1139            [Blocks::ACACIA_SLAB(), 
"acacia"],
 
 1140            [Blocks::BIRCH_SLAB(), 
"birch"],
 
 1141            [Blocks::CHERRY_SLAB(), 
"cherry"],
 
 1142            [Blocks::DARK_OAK_SLAB(), 
"dark_oak"],
 
 1143            [Blocks::JUNGLE_SLAB(), 
"jungle"],
 
 1144            [Blocks::MANGROVE_SLAB(), 
"mangrove"],
 
 1145            [Blocks::OAK_SLAB(), 
"oak"],
 
 1146            [Blocks::PALE_OAK_SLAB(), 
"pale_oak"],
 
 1147            [Blocks::SPRUCE_SLAB(), 
"spruce"],
 
 1148            [Blocks::CRIMSON_SLAB(), 
"crimson"],
 
 1149            [Blocks::WARPED_SLAB(), 
"warped"]
 
 1150        ] as [$block, $type]){
 
 1151            $reg->mapSlab($block, $type);
 
 1156            [Blocks::ACACIA_STAIRS(), Ids::ACACIA_STAIRS],
 
 1157            [Blocks::BIRCH_STAIRS(), Ids::BIRCH_STAIRS],
 
 1158            [Blocks::CHERRY_STAIRS(), Ids::CHERRY_STAIRS],
 
 1159            [Blocks::DARK_OAK_STAIRS(), Ids::DARK_OAK_STAIRS],
 
 1160            [Blocks::JUNGLE_STAIRS(), Ids::JUNGLE_STAIRS],
 
 1161            [Blocks::MANGROVE_STAIRS(), Ids::MANGROVE_STAIRS],
 
 1162            [Blocks::OAK_STAIRS(), Ids::OAK_STAIRS],
 
 1163            [Blocks::PALE_OAK_STAIRS(), Ids::PALE_OAK_STAIRS],
 
 1164            [Blocks::SPRUCE_STAIRS(), Ids::SPRUCE_STAIRS],
 
 1165            [Blocks::CRIMSON_STAIRS(), Ids::CRIMSON_STAIRS],
 
 1166            [Blocks::WARPED_STAIRS(), Ids::WARPED_STAIRS]
 
 1167        ] as [$block, $id]){
 
 1168            $reg->mapStairs($block, $id);
 
 1173            [Blocks::ACACIA_TRAPDOOR(), Ids::ACACIA_TRAPDOOR],
 
 1174            [Blocks::BIRCH_TRAPDOOR(), Ids::BIRCH_TRAPDOOR],
 
 1175            [Blocks::CHERRY_TRAPDOOR(), Ids::CHERRY_TRAPDOOR],
 
 1176            [Blocks::DARK_OAK_TRAPDOOR(), Ids::DARK_OAK_TRAPDOOR],
 
 1177            [Blocks::JUNGLE_TRAPDOOR(), Ids::JUNGLE_TRAPDOOR],
 
 1178            [Blocks::MANGROVE_TRAPDOOR(), Ids::MANGROVE_TRAPDOOR],
 
 1179            [Blocks::OAK_TRAPDOOR(), Ids::TRAPDOOR],
 
 1180            [Blocks::PALE_OAK_TRAPDOOR(), Ids::PALE_OAK_TRAPDOOR],
 
 1181            [Blocks::SPRUCE_TRAPDOOR(), Ids::SPRUCE_TRAPDOOR],
 
 1182            [Blocks::CRIMSON_TRAPDOOR(), Ids::CRIMSON_TRAPDOOR],
 
 1183            [Blocks::WARPED_TRAPDOOR(), Ids::WARPED_TRAPDOOR]
 
 1184        ] as [$block, $id]){
 
 1190            [Blocks::ACACIA_WALL_SIGN(), Ids::ACACIA_WALL_SIGN],
 
 1191            [Blocks::BIRCH_WALL_SIGN(), Ids::BIRCH_WALL_SIGN],
 
 1192            [Blocks::CHERRY_WALL_SIGN(), Ids::CHERRY_WALL_SIGN],
 
 1193            [Blocks::DARK_OAK_WALL_SIGN(), Ids::DARKOAK_WALL_SIGN],
 
 1194            [Blocks::JUNGLE_WALL_SIGN(), Ids::JUNGLE_WALL_SIGN],
 
 1195            [Blocks::MANGROVE_WALL_SIGN(), Ids::MANGROVE_WALL_SIGN],
 
 1196            [Blocks::OAK_WALL_SIGN(), Ids::WALL_SIGN],
 
 1197            [Blocks::PALE_OAK_WALL_SIGN(), Ids::PALE_OAK_WALL_SIGN],
 
 1198            [Blocks::SPRUCE_WALL_SIGN(), Ids::SPRUCE_WALL_SIGN],
 
 1199            [Blocks::CRIMSON_WALL_SIGN(), Ids::CRIMSON_WALL_SIGN],
 
 1200            [Blocks::WARPED_WALL_SIGN(), Ids::WARPED_WALL_SIGN]
 
 1201        ] as [$block, $id]){
 
 1202            $reg->
mapModel(
Model::create($block, $id)->properties([$commonProperties->horizontalFacingClassic]));
 
 1208            [Blocks::BLUE_TORCH(), Ids::COLORED_TORCH_BLUE],
 
 1209            [Blocks::COPPER_TORCH(), Ids::COPPER_TORCH],
 
 1210            [Blocks::GREEN_TORCH(), Ids::COLORED_TORCH_GREEN],
 
 1211            [Blocks::PURPLE_TORCH(), Ids::COLORED_TORCH_PURPLE],
 
 1212            [Blocks::RED_TORCH(), Ids::COLORED_TORCH_RED],
 
 1213            [Blocks::SOUL_TORCH(), Ids::SOUL_TORCH],
 
 1214            [Blocks::TORCH(), Ids::TORCH],
 
 1215            [Blocks::UNDERWATER_TORCH(), Ids::UNDERWATER_TORCH]
 
 1216        ] as [$block, $id]){
 
 1223            [Blocks::COMPOUND_CREATOR(), Ids::COMPOUND_CREATOR],
 
 1224            [Blocks::ELEMENT_CONSTRUCTOR(), Ids::ELEMENT_CONSTRUCTOR],
 
 1225            [Blocks::LAB_TABLE(), Ids::LAB_TABLE],
 
 1226            [Blocks::MATERIAL_REDUCER(), Ids::MATERIAL_REDUCER],
 
 1227        ] as [$block, $id]){
 
 1228            $reg->
mapModel(
Model::create($block, $id)->properties([$commonProperties->horizontalFacingSWNEInverted]));
 
 1242            new ValueFromStringProperty(StateNames::BAMBOO_LEAF_SIZE, ValueMappings::getInstance()->bambooLeafSize, fn(
Bamboo $b) => $b->getLeafSize(), fn(
Bamboo $b, 
int $v) => $b->setLeafSize($v)),
 
 1244            new BoolFromStringProperty(StateNames::BAMBOO_STALK_THICKNESS, StringValues::BAMBOO_STALK_THICKNESS_THIN, StringValues::BAMBOO_STALK_THICKNESS_THICK, fn(
Bamboo $b) => $b->isThick(), fn(
Bamboo $b, 
bool $v) => $b->setThick($v))
 
 1249        $reg->
mapModel(
Model::create(Blocks::BANNER(), Ids::STANDING_BANNER)->properties([$commonProperties->floorSignLikeRotation]));
 
 1251            $commonProperties->anyFacingClassic,
 
 1254        $reg->
mapModel(
Model::create(Blocks::BASALT(), Ids::BASALT)->properties([$commonProperties->pillarAxis]));
 
 1256            new BoolProperty(StateNames::HEAD_PIECE_BIT, fn(
Bed $b) => $b->isHeadPart(), fn(
Bed $b, 
bool $v) => $b->setHead($v)),
 
 1257            new BoolProperty(StateNames::OCCUPIED_BIT, fn(
Bed $b) => $b->isOccupied(), fn(
Bed $b, 
bool $v) => $b->setOccupied($v)),
 
 1258            $commonProperties->horizontalFacingSWNE
 
 1265            new ValueFromStringProperty(StateNames::ATTACHMENT, ValueMappings::getInstance()->bellAttachmentType, fn(
Bell $b) => $b->getAttachmentType(), fn(
Bell $b, BellAttachmentType $v) => $b->setAttachmentType($v)),
 
 1266            $commonProperties->horizontalFacingSWNE
 
 1270            $commonProperties->pillarAxis
 
 1274            BrewingStandSlot::EAST => StateNames::BREWING_STAND_SLOT_A_BIT,
 
 1275            BrewingStandSlot::SOUTHWEST => StateNames::BREWING_STAND_SLOT_B_BIT,
 
 1276            BrewingStandSlot::NORTHWEST => StateNames::BREWING_STAND_SLOT_C_BIT
 
 1277        }, fn(
BrewingStand $b) => $b->hasSlot($slot), fn(
BrewingStand $b, 
bool $v) => $b->setSlot($slot, $v)), BrewingStandSlot::cases())));
 
 1281            new IntProperty(StateNames::AGE, 0, 15, fn(
Cactus $b) => $b->getAge(), fn(
Cactus $b, 
int $v) => $b->setAge($v))
 
 1284            new IntProperty(StateNames::BITE_COUNTER, 0, 6, fn(
Cake $b) => $b->getBites(), fn(
Cake $b, 
int $v) => $b->setBites($v))
 
 1286        $reg->
mapModel(
Model::create(Blocks::CAMPFIRE(), Ids::CAMPFIRE)->properties($commonProperties->campfireProperties));
 
 1288            $commonProperties->horizontalFacingCardinal
 
 1290        $reg->
mapModel(
Model::create(Blocks::CHAIN(), Ids::IRON_CHAIN)->properties([$commonProperties->pillarAxis]));
 
 1292            $commonProperties->horizontalFacingSWNE,
 
 1294                StateNames::BOOKS_STORED,
 
 1295                EnumFromRawStateMap::int(ChiseledBookshelfSlot::class, fn(ChiseledBookshelfSlot $case) => match($case){
 
 1297                    ChiseledBookshelfSlot::TOP_LEFT => 1 << 0,
 
 1298                    ChiseledBookshelfSlot::TOP_MIDDLE => 1 << 1,
 
 1299                    ChiseledBookshelfSlot::TOP_RIGHT => 1 << 2,
 
 1300                    ChiseledBookshelfSlot::BOTTOM_LEFT => 1 << 3,
 
 1301                    ChiseledBookshelfSlot::BOTTOM_MIDDLE => 1 << 4,
 
 1302                    ChiseledBookshelfSlot::BOTTOM_RIGHT => 1 << 5
 
 1308        $reg->
mapModel(
Model::create(Blocks::CHISELED_QUARTZ(), Ids::CHISELED_QUARTZ_BLOCK)->properties([$commonProperties->pillarAxis]));
 
 1309        $reg->
mapModel(
Model::create(Blocks::CHEST(), Ids::CHEST)->properties([$commonProperties->horizontalFacingCardinal]));
 
 1315            $commonProperties->horizontalFacingSWNEInverted
 
 1319        $reg->
mapModel(
Model::create(Blocks::DEEPSLATE(), Ids::DEEPSLATE)->properties([$commonProperties->pillarAxis]));
 
 1326        $reg->
mapModel(
Model::create(Blocks::ENDER_CHEST(), Ids::ENDER_CHEST)->properties([$commonProperties->horizontalFacingCardinal]));
 
 1329            $commonProperties->horizontalFacingCardinal
 
 1332            new ValueFromIntProperty(StateNames::FACING_DIRECTION, ValueMappings::getInstance()->facingEndRod, fn(
EndRod $b) => $b->getFacing(), fn(
EndRod $b, 
int $v) => $b->setFacing($v)),
 
 1337            new IntProperty(StateNames::MOISTURIZED_AMOUNT, 0, 7, fn(
Farmland $b) => $b->getWetness(), fn(
Farmland $b, 
int $v) => $b->setWetness($v))
 
 1340            new IntProperty(StateNames::AGE, 0, 15, fn(
Fire $b) => $b->getAge(), fn(
Fire $b, 
int $v) => $b->setAge($v))
 
 1350        $reg->
mapModel(
Model::create(Blocks::GLOWING_ITEM_FRAME(), Ids::GLOW_FRAME)->properties($commonProperties->itemFrameProperties));
 
 1355            $commonProperties->pillarAxis
 
 1360            new ValueFromIntProperty(StateNames::FACING_DIRECTION, ValueMappings::getInstance()->facingExceptUp, fn(
Hopper $b) => $b->getFacing(), fn(
Hopper $b, 
int $v) => $b->setFacing($v)),
 
 1364        $reg->
mapModel(
Model::create(Blocks::IRON_DOOR(), Ids::IRON_DOOR)->properties($commonProperties->doorProperties));
 
 1365        $reg->
mapModel(
Model::create(Blocks::IRON_TRAPDOOR(), Ids::IRON_TRAPDOOR)->properties($commonProperties->trapdoorProperties));
 
 1366        $reg->
mapModel(
Model::create(Blocks::ITEM_FRAME(), Ids::FRAME)->properties($commonProperties->itemFrameProperties));
 
 1369        $reg->
mapModel(
Model::create(Blocks::LADDER(), Ids::LADDER)->properties([$commonProperties->horizontalFacingClassic]));
 
 1374            new BoolProperty(StateNames::POWERED_BIT, fn(
Lectern $b) => $b->isProducingSignal(), fn(
Lectern $b, 
bool $v) => $b->setProducingSignal($v)),
 
 1375            $commonProperties->horizontalFacingCardinal,
 
 1378            new ValueFromStringProperty(StateNames::LEVER_DIRECTION, ValueMappings::getInstance()->leverFacing, fn(
Lever $b) => $b->getFacing(), fn(
Lever $b, LeverFacing $v) => $b->setFacing($v)),
 
 1379            new BoolProperty(StateNames::OPEN_BIT, fn(
Lever $b) => $b->isActivated(), fn(
Lever $b, 
bool $v) => $b->setActivated($v)),
 
 1381        $reg->
mapModel(
Model::create(Blocks::LIT_PUMPKIN(), Ids::LIT_PUMPKIN)->properties([$commonProperties->horizontalFacingCardinal]));
 
 1382        $reg->
mapModel(
Model::create(Blocks::LOOM(), Ids::LOOM)->properties([$commonProperties->horizontalFacingSWNE]));
 
 1385        $reg->
mapModel(
Model::create(Blocks::MUDDY_MANGROVE_ROOTS(), Ids::MUDDY_MANGROVE_ROOTS)->properties([$commonProperties->pillarAxis]));
 
 1396            new IntProperty(StateNames::GROWTH, 0, 7, fn(
PinkPetals $b) => $b->getCount(), fn(
PinkPetals $b, 
int $v) => $b->setCount(min($v, PinkPetals::MAX_COUNT)), offset: 1),
 
 1397            $commonProperties->horizontalFacingCardinal
 
 1406        $reg->
mapModel(
Model::create(Blocks::POLISHED_BASALT(), Ids::POLISHED_BASALT)->properties([$commonProperties->pillarAxis]));
 
 1407        $reg->
mapModel(
Model::create(Blocks::POLISHED_BLACKSTONE_BUTTON(), Ids::POLISHED_BLACKSTONE_BUTTON)->properties($commonProperties->buttonProperties));
 
 1408        $reg->
mapModel(
Model::create(Blocks::POLISHED_BLACKSTONE_PRESSURE_PLATE(), Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE)->properties($commonProperties->simplePressurePlateProperties));
 
 1411            $commonProperties->dummyCardinalDirection
 
 1414            $commonProperties->dummyPillarAxis
 
 1416        $reg->
mapModel(
Model::create(Blocks::PURPUR_PILLAR(), Ids::PURPUR_PILLAR)->properties([$commonProperties->pillarAxis]));
 
 1420            $commonProperties->dummyPillarAxis
 
 1422        $reg->
mapModel(
Model::create(Blocks::QUARTZ_PILLAR(), Ids::QUARTZ_PILLAR)->properties([$commonProperties->pillarAxis]));
 
 1428        $reg->
mapModel(
Model::create(Blocks::REDSTONE_WIRE(), Ids::REDSTONE_WIRE)->properties([$commonProperties->analogRedstoneSignal]));
 
 1435            new IntProperty(StateNames::CLUSTER_COUNT, 0, 3, fn(
SeaPickle $b) => $b->getCount(), fn(
SeaPickle $b, 
int $v) => $b->setCount($v), offset: 1),
 
 1436            new BoolProperty(StateNames::DEAD_BIT, fn(
SeaPickle $b) => $b->isUnderwater(), fn(
SeaPickle $b, 
bool $v) => $b->setUnderwater($v), inverted: 
true)
 
 1440            $commonProperties->horizontalFacingCardinal
 
 1443            $commonProperties->dummyPillarAxis
 
 1449        $reg->
mapModel(
Model::create(Blocks::SOUL_CAMPFIRE(), Ids::SOUL_CAMPFIRE)->properties($commonProperties->campfireProperties));
 
 1456        $reg->
mapModel(
Model::create(Blocks::STONE_BUTTON(), Ids::STONE_BUTTON)->properties($commonProperties->buttonProperties));
 
 1457        $reg->
mapModel(
Model::create(Blocks::STONE_PRESSURE_PLATE(), Ids::STONE_PRESSURE_PLATE)->properties($commonProperties->simplePressurePlateProperties));
 
 1459            $commonProperties->horizontalFacingCardinal
 
 1467            $commonProperties->horizontalFacingCardinal
 
 1478            $commonProperties->horizontalFacingSWNE
 
 1486        $reg->
mapModel(
Model::create(Blocks::WALL_BANNER(), Ids::WALL_BANNER)->properties([$commonProperties->horizontalFacingClassic]));
 
 1490        $reg->
mapModel(
Model::create(Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), Ids::HEAVY_WEIGHTED_PRESSURE_PLATE)->properties([$commonProperties->analogRedstoneSignal]));
 
 1491        $reg->
mapModel(
Model::create(Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT(), Ids::LIGHT_WEIGHTED_PRESSURE_PLATE)->properties([$commonProperties->analogRedstoneSignal]));
 
 1499        $id = $model->getId();
 
 1501        $reg->serializer->map($model->
getBlock(), 
function(
Block $block) use ($id, $properties) : Writer{
 
 1502            $writer = 
new Writer($id);
 
 1503            foreach($properties as $property){
 
 1504                $property->serialize($block, $writer);
 
 1515    private static function deserializeAsymmetric(
Model $model, Reader $in) : 
Block{
 
 1518            $property->deserialize($block, $in);
 
 1531        $bigDripleafHeadModel = 
Model::create(Blocks::BIG_DRIPLEAF_HEAD(), Ids::BIG_DRIPLEAF)->properties([
 
 1532            $commonProperties->horizontalFacingCardinal,
 
 1536        $bigDripleafStemModel = 
Model::create(Blocks::BIG_DRIPLEAF_STEM(), Ids::BIG_DRIPLEAF)->properties([
 
 1537            $commonProperties->horizontalFacingCardinal,
 
 1538            new DummyProperty(StateNames::BIG_DRIPLEAF_TILT, StringValues::BIG_DRIPLEAF_TILT_NONE),
 
 1541        self::mapAsymmetricSerializer($reg, $bigDripleafHeadModel);
 
 1542        self::mapAsymmetricSerializer($reg, $bigDripleafStemModel);
 
 1543        $reg->deserializer->map(Ids::BIG_DRIPLEAF, fn(Reader $in) => $in->readBool(StateNames::BIG_DRIPLEAF_HEAD) ?
 
 1544            self::deserializeAsymmetric($bigDripleafHeadModel, $in) :
 
 1545            self::deserializeAsymmetric($bigDripleafStemModel, $in)
 
 1551        self::mapAsymmetricSerializer($reg, 
Model::create(Blocks::POTION_CAULDRON(), Ids::CAULDRON)->properties([$fillLevelProperty, 
new DummyProperty(StateNames::CAULDRON_LIQUID, StringValues::CAULDRON_LIQUID_WATER)]));
 
 1553        $lavaCauldronModel = 
Model::create(Blocks::LAVA_CAULDRON(), Ids::CAULDRON)->properties([
 
 1555            new DummyProperty(StateNames::CAULDRON_LIQUID, StringValues::CAULDRON_LIQUID_LAVA)
 
 1557        $waterCauldronModel = 
Model::create(Blocks::WATER_CAULDRON(), Ids::CAULDRON)->properties([
 
 1559            new DummyProperty(StateNames::CAULDRON_LIQUID, StringValues::CAULDRON_LIQUID_WATER)
 
 1561        $emptyCauldronModel = 
Model::create(Blocks::CAULDRON(), Ids::CAULDRON)->properties([
 
 1563            new DummyProperty(StateNames::CAULDRON_LIQUID, StringValues::CAULDRON_LIQUID_WATER)
 
 1565        self::mapAsymmetricSerializer($reg, $lavaCauldronModel);
 
 1566        self::mapAsymmetricSerializer($reg, $waterCauldronModel);
 
 1567        self::mapAsymmetricSerializer($reg, $emptyCauldronModel);
 
 1568        $reg->deserializer->map(Ids::CAULDRON, fn(Reader $in) => $in->readInt(StateNames::FILL_LEVEL) === 0 ?
 
 1569            self::deserializeAsymmetric($emptyCauldronModel, $in) :
 
 1570            match ($liquid = $in->readString(StateNames::CAULDRON_LIQUID)) {
 
 1571                StringValues::CAULDRON_LIQUID_WATER => self::deserializeAsymmetric($waterCauldronModel, $in),
 
 1572                StringValues::CAULDRON_LIQUID_LAVA => self::deserializeAsymmetric($lavaCauldronModel, $in),
 
 1573                StringValues::CAULDRON_LIQUID_POWDER_SNOW => throw new UnsupportedBlockStateException(
"Powder snow is not supported yet"),
 
 1574                default => throw $in->badValueException(StateNames::CAULDRON_LIQUID, $liquid)
 
 1579        $allSidedMushroomStemModel = 
Model::create(Blocks::ALL_SIDED_MUSHROOM_STEM(), Ids::MUSHROOM_STEM)->properties([
new DummyProperty(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_ALL_STEM)]);
 
 1580        $mushroomStemModel = 
Model::create(Blocks::MUSHROOM_STEM(), Ids::MUSHROOM_STEM)->properties([
new DummyProperty(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_STEM)]);
 
 1581        self::mapAsymmetricSerializer($reg, $allSidedMushroomStemModel);
 
 1582        self::mapAsymmetricSerializer($reg, $mushroomStemModel);
 
 1583        $reg->deserializer->map(Ids::MUSHROOM_STEM, fn(Reader $in) : 
Block => match ($in->readInt(StateNames::HUGE_MUSHROOM_BITS)) {
 
 1584            BlockLegacyMetadata::MUSHROOM_BLOCK_ALL_STEM => self::deserializeAsymmetric($allSidedMushroomStemModel, $in),
 
 1585            BlockLegacyMetadata::MUSHROOM_BLOCK_STEM => self::deserializeAsymmetric($mushroomStemModel, $in),
 
 1586            default => throw new BlockStateDeserializeException(
"This state does not exist"),
 
 1591        $pitcherCropModel = 
Model::create(Blocks::PITCHER_CROP(), Ids::PITCHER_CROP)->properties([
 
 1595        $doublePitcherCropAgeOffset = PitcherCrop::MAX_AGE + 1;
 
 1596        $doublePitcherCropModel = 
Model::create(Blocks::DOUBLE_PITCHER_CROP(), Ids::PITCHER_CROP)->properties([
 
 1599                $doublePitcherCropAgeOffset, 
 
 1602                fn(
DoublePitcherCrop $b, 
int $v) => $b->setAge(min($v, DoublePitcherCrop::MAX_AGE)), 
 
 1603                offset: -$doublePitcherCropAgeOffset
 
 1607        self::mapAsymmetricSerializer($reg, $pitcherCropModel);
 
 1608        self::mapAsymmetricSerializer($reg, $doublePitcherCropModel);
 
 1609        $reg->deserializer->map(Ids::PITCHER_CROP, fn(Reader $in) => $in->readInt(StateNames::GROWTH) <= PitcherCrop::MAX_AGE ?
 
 1610            ($in->readBool(StateNames::UPPER_BLOCK_BIT) ?
 
 1613                self::deserializeAsymmetric($pitcherCropModel, $in)
 
 1614            ) : self::deserializeAsymmetric($doublePitcherCropModel, $in)
 
 1619        self::mapAsymmetricSerializer($reg, 
Model::create(Blocks::OMINOUS_BANNER(), Ids::STANDING_BANNER)->properties([$commonProperties->floorSignLikeRotation]));
 
 1620        self::mapAsymmetricSerializer($reg, 
Model::create(Blocks::OMINOUS_WALL_BANNER(), Ids::WALL_BANNER)->properties([$commonProperties->horizontalFacingClassic]));
 
 1623            Ids::ACACIA_HANGING_SIGN => [Blocks::ACACIA_CEILING_CENTER_HANGING_SIGN(), Blocks::ACACIA_CEILING_EDGES_HANGING_SIGN(), Blocks::ACACIA_WALL_HANGING_SIGN()],
 
 1624            Ids::BIRCH_HANGING_SIGN => [Blocks::BIRCH_CEILING_CENTER_HANGING_SIGN(), Blocks::BIRCH_CEILING_EDGES_HANGING_SIGN(), Blocks::BIRCH_WALL_HANGING_SIGN()],
 
 1625            Ids::CHERRY_HANGING_SIGN => [Blocks::CHERRY_CEILING_CENTER_HANGING_SIGN(), Blocks::CHERRY_CEILING_EDGES_HANGING_SIGN(), Blocks::CHERRY_WALL_HANGING_SIGN()],
 
 1626            Ids::CRIMSON_HANGING_SIGN => [Blocks::CRIMSON_CEILING_CENTER_HANGING_SIGN(), Blocks::CRIMSON_CEILING_EDGES_HANGING_SIGN(), Blocks::CRIMSON_WALL_HANGING_SIGN()],
 
 1627            Ids::DARK_OAK_HANGING_SIGN => [Blocks::DARK_OAK_CEILING_CENTER_HANGING_SIGN(), Blocks::DARK_OAK_CEILING_EDGES_HANGING_SIGN(), Blocks::DARK_OAK_WALL_HANGING_SIGN()],
 
 1628            Ids::JUNGLE_HANGING_SIGN => [Blocks::JUNGLE_CEILING_CENTER_HANGING_SIGN(), Blocks::JUNGLE_CEILING_EDGES_HANGING_SIGN(), Blocks::JUNGLE_WALL_HANGING_SIGN()],
 
 1629            Ids::MANGROVE_HANGING_SIGN => [Blocks::MANGROVE_CEILING_CENTER_HANGING_SIGN(), Blocks::MANGROVE_CEILING_EDGES_HANGING_SIGN(), Blocks::MANGROVE_WALL_HANGING_SIGN()],
 
 1630            Ids::OAK_HANGING_SIGN => [Blocks::OAK_CEILING_CENTER_HANGING_SIGN(), Blocks::OAK_CEILING_EDGES_HANGING_SIGN(), Blocks::OAK_WALL_HANGING_SIGN()],
 
 1631            Ids::PALE_OAK_HANGING_SIGN => [Blocks::PALE_OAK_CEILING_CENTER_HANGING_SIGN(), Blocks::PALE_OAK_CEILING_EDGES_HANGING_SIGN(), Blocks::PALE_OAK_WALL_HANGING_SIGN()],
 
 1632            Ids::SPRUCE_HANGING_SIGN => [Blocks::SPRUCE_CEILING_CENTER_HANGING_SIGN(), Blocks::SPRUCE_CEILING_EDGES_HANGING_SIGN(), Blocks::SPRUCE_WALL_HANGING_SIGN()],
 
 1633            Ids::WARPED_HANGING_SIGN => [Blocks::WARPED_CEILING_CENTER_HANGING_SIGN(), Blocks::WARPED_CEILING_EDGES_HANGING_SIGN(), Blocks::WARPED_WALL_HANGING_SIGN()],
 
 1634        ] as $id => [$center, $edges, $wall]){
 
 1640                $commonProperties->floorSignLikeRotation,
 
 1649                $commonProperties->horizontalFacingClassic,
 
 1655                $commonProperties->horizontalFacingClassic
 
 1657            self::mapAsymmetricSerializer($reg, $centerModel);
 
 1658            self::mapAsymmetricSerializer($reg, $edgesModel);
 
 1659            self::mapAsymmetricSerializer($reg, $wallModel);
 
 1660            $reg->deserializer->map($id, fn(Reader $in) => $in->readBool(StateNames::HANGING) ?
 
 1661                ($in->readBool(StateNames::ATTACHED_BIT) ?
 
 1662                    self::deserializeAsymmetric($centerModel, $in) :
 
 1663                    self::deserializeAsymmetric($edgesModel, $in)
 
 1665                self::deserializeAsymmetric($wallModel, $in));