Added axis support for all-sided logs

This commit is contained in:
Dylan K. Taylor 2022-07-03 17:27:25 +01:00
parent 3e7d34c8ad
commit 33eef99d1f
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
9 changed files with 37 additions and 72 deletions

View File

@ -465,7 +465,7 @@ class BlockFactory{
$this->register(new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType));
$this->register(new Log(BlockLegacyIdHelper::getLogIdentifier($treeType), $name . " Log", $logBreakInfo, $treeType));
$this->register(new Wood(BlockLegacyIdHelper::getLogIdentifier($treeType), $name . " Log", $logBreakInfo, $treeType));
$this->register(new Wood(BlockLegacyIdHelper::getAllSidedLogIdentifier($treeType), $name . " Wood", $logBreakInfo, $treeType));
$this->register(new FenceGate(BlockLegacyIdHelper::getWoodenFenceGateIdentifier($treeType), $name . " Fence Gate", $planksBreakInfo));

View File

@ -1,30 +0,0 @@
<?php
/*
*
* ____ _ _ __ __ _ __ __ ____
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* @author PocketMine Team
* @link http://www.pocketmine.net/
*
*
*/
declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\block\utils\PillarRotationTrait;
class Log extends Wood{
use PillarRotationTrait;
}

View File

@ -37,7 +37,7 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static WoodenFence ACACIA_FENCE()
* @method static FenceGate ACACIA_FENCE_GATE()
* @method static Leaves ACACIA_LEAVES()
* @method static Log ACACIA_LOG()
* @method static Wood ACACIA_LOG()
* @method static Planks ACACIA_PLANKS()
* @method static WoodenPressurePlate ACACIA_PRESSURE_PLATE()
* @method static Sapling ACACIA_SAPLING()
@ -75,7 +75,7 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static WoodenFence BIRCH_FENCE()
* @method static FenceGate BIRCH_FENCE_GATE()
* @method static Leaves BIRCH_LEAVES()
* @method static Log BIRCH_LOG()
* @method static Wood BIRCH_LOG()
* @method static Planks BIRCH_PLANKS()
* @method static WoodenPressurePlate BIRCH_PRESSURE_PLATE()
* @method static Sapling BIRCH_SAPLING()
@ -153,7 +153,7 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static WoodenFence DARK_OAK_FENCE()
* @method static FenceGate DARK_OAK_FENCE_GATE()
* @method static Leaves DARK_OAK_LEAVES()
* @method static Log DARK_OAK_LOG()
* @method static Wood DARK_OAK_LOG()
* @method static Planks DARK_OAK_PLANKS()
* @method static WoodenPressurePlate DARK_OAK_PRESSURE_PLATE()
* @method static Sapling DARK_OAK_SAPLING()
@ -370,7 +370,7 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static WoodenFence JUNGLE_FENCE()
* @method static FenceGate JUNGLE_FENCE_GATE()
* @method static Leaves JUNGLE_LEAVES()
* @method static Log JUNGLE_LOG()
* @method static Wood JUNGLE_LOG()
* @method static Planks JUNGLE_PLANKS()
* @method static WoodenPressurePlate JUNGLE_PRESSURE_PLATE()
* @method static Sapling JUNGLE_SAPLING()
@ -429,7 +429,7 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static WoodenFence OAK_FENCE()
* @method static FenceGate OAK_FENCE_GATE()
* @method static Leaves OAK_LEAVES()
* @method static Log OAK_LOG()
* @method static Wood OAK_LOG()
* @method static Planks OAK_PLANKS()
* @method static WoodenPressurePlate OAK_PRESSURE_PLATE()
* @method static Sapling OAK_SAPLING()
@ -549,7 +549,7 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static WoodenFence SPRUCE_FENCE()
* @method static FenceGate SPRUCE_FENCE_GATE()
* @method static Leaves SPRUCE_LEAVES()
* @method static Log SPRUCE_LOG()
* @method static Wood SPRUCE_LOG()
* @method static Planks SPRUCE_PLANKS()
* @method static WoodenPressurePlate SPRUCE_PRESSURE_PLATE()
* @method static Sapling SPRUCE_SAPLING()
@ -631,7 +631,7 @@ final class VanillaBlocks{
self::register("acacia_stairs", $factory->get(Ids::ACACIA_STAIRS, 0));
self::register("acacia_trapdoor", $factory->get(Ids::ACACIA_TRAPDOOR, 0));
self::register("acacia_wall_sign", $factory->get(Ids::ACACIA_WALL_SIGN, 0));
self::register("acacia_wood", $factory->get(Ids::ACACIA_WOOD, 0));
self::register("acacia_wood", $factory->get(Ids::ACACIA_WOOD, 4));
self::register("activator_rail", $factory->get(Ids::ACTIVATOR_RAIL, 0));
self::register("air", $factory->get(Ids::AIR, 0));
self::register("all_sided_mushroom_stem", $factory->get(Ids::ALL_SIDED_MUSHROOM_STEM, 0));
@ -669,7 +669,7 @@ final class VanillaBlocks{
self::register("birch_stairs", $factory->get(Ids::BIRCH_STAIRS, 0));
self::register("birch_trapdoor", $factory->get(Ids::BIRCH_TRAPDOOR, 0));
self::register("birch_wall_sign", $factory->get(Ids::BIRCH_WALL_SIGN, 0));
self::register("birch_wood", $factory->get(Ids::BIRCH_WOOD, 0));
self::register("birch_wood", $factory->get(Ids::BIRCH_WOOD, 4));
self::register("blackstone", $factory->get(Ids::BLACKSTONE, 0));
self::register("blackstone_slab", $factory->get(Ids::BLACKSTONE_SLAB, 0));
self::register("blackstone_stairs", $factory->get(Ids::BLACKSTONE_STAIRS, 0));
@ -747,7 +747,7 @@ final class VanillaBlocks{
self::register("dark_oak_stairs", $factory->get(Ids::DARK_OAK_STAIRS, 0));
self::register("dark_oak_trapdoor", $factory->get(Ids::DARK_OAK_TRAPDOOR, 0));
self::register("dark_oak_wall_sign", $factory->get(Ids::DARK_OAK_WALL_SIGN, 0));
self::register("dark_oak_wood", $factory->get(Ids::DARK_OAK_WOOD, 0));
self::register("dark_oak_wood", $factory->get(Ids::DARK_OAK_WOOD, 4));
self::register("dark_prismarine", $factory->get(Ids::DARK_PRISMARINE, 0));
self::register("dark_prismarine_slab", $factory->get(Ids::DARK_PRISMARINE_SLAB, 0));
self::register("dark_prismarine_stairs", $factory->get(Ids::DARK_PRISMARINE_STAIRS, 0));
@ -964,7 +964,7 @@ final class VanillaBlocks{
self::register("jungle_stairs", $factory->get(Ids::JUNGLE_STAIRS, 0));
self::register("jungle_trapdoor", $factory->get(Ids::JUNGLE_TRAPDOOR, 0));
self::register("jungle_wall_sign", $factory->get(Ids::JUNGLE_WALL_SIGN, 0));
self::register("jungle_wood", $factory->get(Ids::JUNGLE_WOOD, 0));
self::register("jungle_wood", $factory->get(Ids::JUNGLE_WOOD, 4));
self::register("lab_table", $factory->get(Ids::LAB_TABLE, 0));
self::register("ladder", $factory->get(Ids::LADDER, 0));
self::register("lantern", $factory->get(Ids::LANTERN, 0));
@ -1023,7 +1023,7 @@ final class VanillaBlocks{
self::register("oak_stairs", $factory->get(Ids::OAK_STAIRS, 0));
self::register("oak_trapdoor", $factory->get(Ids::OAK_TRAPDOOR, 0));
self::register("oak_wall_sign", $factory->get(Ids::OAK_WALL_SIGN, 0));
self::register("oak_wood", $factory->get(Ids::OAK_WOOD, 0));
self::register("oak_wood", $factory->get(Ids::OAK_WOOD, 4));
self::register("obsidian", $factory->get(Ids::OBSIDIAN, 0));
self::register("orange_tulip", $factory->get(Ids::ORANGE_TULIP, 0));
self::register("oxeye_daisy", $factory->get(Ids::OXEYE_DAISY, 0));
@ -1143,7 +1143,7 @@ final class VanillaBlocks{
self::register("spruce_stairs", $factory->get(Ids::SPRUCE_STAIRS, 0));
self::register("spruce_trapdoor", $factory->get(Ids::SPRUCE_TRAPDOOR, 0));
self::register("spruce_wall_sign", $factory->get(Ids::SPRUCE_WALL_SIGN, 0));
self::register("spruce_wood", $factory->get(Ids::SPRUCE_WOOD, 0));
self::register("spruce_wood", $factory->get(Ids::SPRUCE_WOOD, 4));
self::register("stained_clay", $factory->get(Ids::STAINED_CLAY, 14));
self::register("stained_glass", $factory->get(Ids::STAINED_GLASS, 14));
self::register("stained_glass_pane", $factory->get(Ids::STAINED_GLASS_PANE, 14));

View File

@ -23,6 +23,7 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\block\utils\PillarRotationTrait;
use pocketmine\block\utils\TreeType;
use pocketmine\data\runtime\block\BlockDataReader;
use pocketmine\data\runtime\block\BlockDataWriter;
@ -32,6 +33,7 @@ use pocketmine\math\Vector3;
use pocketmine\player\Player;
class Wood extends Opaque{
use PillarRotationTrait;
private TreeType $treeType;

View File

@ -79,7 +79,6 @@ use pocketmine\block\Lectern;
use pocketmine\block\Lever;
use pocketmine\block\Light;
use pocketmine\block\LitPumpkin;
use pocketmine\block\Log;
use pocketmine\block\Loom;
use pocketmine\block\MelonStem;
use pocketmine\block\NetherPortal;
@ -246,7 +245,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA));
$this->map(Blocks::ACACIA_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::ACACIA_FENCE_GATE)));
$this->map(Blocks::ACACIA_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_ACACIA));
$this->map(Blocks::ACACIA_LOG(), fn(Log $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_ACACIA, Ids::STRIPPED_ACACIA_LOG));
$this->map(Blocks::ACACIA_LOG(), fn(Wood $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_ACACIA, Ids::STRIPPED_ACACIA_LOG));
$this->map(Blocks::ACACIA_PLANKS(), fn() => Writer::create(Ids::PLANKS)
->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA));
$this->map(Blocks::ACACIA_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::ACACIA_PRESSURE_PLATE)));
@ -340,7 +339,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH));
$this->map(Blocks::BIRCH_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::BIRCH_FENCE_GATE)));
$this->map(Blocks::BIRCH_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_BIRCH));
$this->map(Blocks::BIRCH_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_BIRCH, Ids::STRIPPED_BIRCH_LOG));
$this->map(Blocks::BIRCH_LOG(), fn(Wood $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_BIRCH, Ids::STRIPPED_BIRCH_LOG));
$this->map(Blocks::BIRCH_PLANKS(), fn() => Writer::create(Ids::PLANKS)
->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH));
$this->map(Blocks::BIRCH_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::BIRCH_PRESSURE_PLATE)));
@ -470,7 +469,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK));
$this->map(Blocks::DARK_OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::DARK_OAK_FENCE_GATE)));
$this->map(Blocks::DARK_OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_DARK_OAK));
$this->map(Blocks::DARK_OAK_LOG(), fn(Log $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_DARK_OAK, Ids::STRIPPED_DARK_OAK_LOG));
$this->map(Blocks::DARK_OAK_LOG(), fn(Wood $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_DARK_OAK, Ids::STRIPPED_DARK_OAK_LOG));
$this->map(Blocks::DARK_OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS)
->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK));
$this->map(Blocks::DARK_OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::DARK_OAK_PRESSURE_PLATE)));
@ -769,7 +768,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_JUNGLE));
$this->map(Blocks::JUNGLE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::JUNGLE_FENCE_GATE)));
$this->map(Blocks::JUNGLE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_JUNGLE));
$this->map(Blocks::JUNGLE_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_JUNGLE, Ids::STRIPPED_JUNGLE_LOG));
$this->map(Blocks::JUNGLE_LOG(), fn(Wood $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_JUNGLE, Ids::STRIPPED_JUNGLE_LOG));
$this->map(Blocks::JUNGLE_PLANKS(), fn() => Writer::create(Ids::PLANKS)
->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_JUNGLE));
$this->map(Blocks::JUNGLE_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::JUNGLE_PRESSURE_PLATE)));
@ -877,7 +876,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_OAK));
$this->map(Blocks::OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::FENCE_GATE)));
$this->map(Blocks::OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_OAK));
$this->map(Blocks::OAK_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_OAK, Ids::STRIPPED_OAK_LOG));
$this->map(Blocks::OAK_LOG(), fn(Wood $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_OAK, Ids::STRIPPED_OAK_LOG));
$this->map(Blocks::OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS)
->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_OAK));
$this->map(Blocks::OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::WOODEN_PRESSURE_PLATE)));
@ -1050,7 +1049,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_SPRUCE));
$this->map(Blocks::SPRUCE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::SPRUCE_FENCE_GATE)));
$this->map(Blocks::SPRUCE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_SPRUCE));
$this->map(Blocks::SPRUCE_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_SPRUCE, Ids::STRIPPED_SPRUCE_LOG));
$this->map(Blocks::SPRUCE_LOG(), fn(Wood $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_SPRUCE, Ids::STRIPPED_SPRUCE_LOG));
$this->map(Blocks::SPRUCE_PLANKS(), fn() => Writer::create(Ids::PLANKS)
->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_SPRUCE));
$this->map(Blocks::SPRUCE_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::SPRUCE_PRESSURE_PLATE)));

View File

@ -33,7 +33,6 @@ use pocketmine\block\FloorCoralFan;
use pocketmine\block\FloorSign;
use pocketmine\block\GlazedTerracotta;
use pocketmine\block\Liquid;
use pocketmine\block\Log;
use pocketmine\block\RedMushroomBlock;
use pocketmine\block\RedstoneComparator;
use pocketmine\block\RedstoneRepeater;
@ -48,6 +47,7 @@ use pocketmine\block\Wall;
use pocketmine\block\WallCoralFan;
use pocketmine\block\WallSign;
use pocketmine\block\WeightedPressurePlate;
use pocketmine\block\Wood;
use pocketmine\data\bedrock\block\BlockLegacyMetadata;
use pocketmine\data\bedrock\block\BlockStateDeserializeException;
use pocketmine\data\bedrock\block\BlockStateNames;
@ -151,7 +151,7 @@ final class BlockStateDeserializerHelper{
}
/** @throws BlockStateDeserializeException */
public static function decodeLog(Log $block, bool $stripped, BlockStateReader $in) : Log{
public static function decodeLog(Wood $block, bool $stripped, BlockStateReader $in) : Wood{
return $block
->setAxis($in->readPillarAxis())
->setStripped($stripped);

View File

@ -33,7 +33,6 @@ use pocketmine\block\FloorSign;
use pocketmine\block\Furnace;
use pocketmine\block\Leaves;
use pocketmine\block\Liquid;
use pocketmine\block\Log;
use pocketmine\block\RedMushroomBlock;
use pocketmine\block\Sapling;
use pocketmine\block\SimplePressurePlate;
@ -49,7 +48,6 @@ use pocketmine\block\Wood;
use pocketmine\data\bedrock\block\BlockStateNames;
use pocketmine\data\bedrock\block\BlockTypeNames as Ids;
use pocketmine\data\bedrock\MushroomBlockTypeIdMap;
use pocketmine\math\Axis;
use pocketmine\math\Facing;
final class BlockStateSerializerHelper{
@ -57,7 +55,7 @@ final class BlockStateSerializerHelper{
public static function encodeAllSidedLog(Wood $block) : BlockStateWriter{
return BlockStateWriter::create(Ids::WOOD)
->writeBool(BlockStateNames::STRIPPED_BIT, $block->isStripped())
->writePillarAxis(Axis::Y) //TODO: our implementation doesn't support this yet
->writePillarAxis($block->getAxis())
->writeTreeType($block->getTreeType());
}
@ -135,18 +133,18 @@ final class BlockStateSerializerHelper{
->writeInt(BlockStateNames::LIQUID_DEPTH, $block->getDecay() | ($block->isFalling() ? 0x8 : 0));
}
private static function encodeLog(Log $block, BlockStateWriter $out) : BlockStateWriter{
private static function encodeLog(Wood $block, BlockStateWriter $out) : BlockStateWriter{
return $out
->writePillarAxis($block->getAxis());
}
public static function encodeLog1(Log $block, string $unstrippedType, string $strippedId) : BlockStateWriter{
public static function encodeLog1(Wood $block, string $unstrippedType, string $strippedId) : BlockStateWriter{
return self::encodeLog($block, $block->isStripped() ?
BlockStateWriter::create($strippedId) :
BlockStateWriter::create(Ids::LOG)->writeString(BlockStateNames::OLD_LOG_TYPE, $unstrippedType));
}
public static function encodeLog2(Log $block, string $unstrippedType, string $strippedId) : BlockStateWriter{
public static function encodeLog2(Wood $block, string $unstrippedType, string $strippedId) : BlockStateWriter{
return self::encodeLog($block, $block->isStripped() ?
BlockStateWriter::create($strippedId) :
BlockStateWriter::create(Ids::LOG2)->writeString(BlockStateNames::NEW_LOG_TYPE, $unstrippedType)

View File

@ -1112,19 +1112,15 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
$this->map(Ids::WEB, fn() => Blocks::COBWEB());
$this->map(Ids::WHEAT, fn(Reader $in) => Helper::decodeCrops(Blocks::WHEAT(), $in));
$this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::WHITE(), $in));
$this->map(Ids::WOOD, function(Reader $in) : Block{
$in->todo(StateNames::PILLAR_AXIS); //TODO: our impl doesn't support axis yet
$stripped = $in->readBool(StateNames::STRIPPED_BIT);
return (match($woodType = $in->readString(StateNames::WOOD_TYPE)){
StringValues::WOOD_TYPE_ACACIA => Blocks::ACACIA_WOOD(),
StringValues::WOOD_TYPE_BIRCH => Blocks::BIRCH_WOOD(),
StringValues::WOOD_TYPE_DARK_OAK => Blocks::DARK_OAK_WOOD(),
StringValues::WOOD_TYPE_JUNGLE => Blocks::JUNGLE_WOOD(),
StringValues::WOOD_TYPE_OAK => Blocks::OAK_WOOD(),
StringValues::WOOD_TYPE_SPRUCE => Blocks::SPRUCE_WOOD(),
default => throw $in->badValueException(StateNames::WOOD_TYPE, $woodType),
})->setStripped($stripped);
});
$this->map(Ids::WOOD, fn(Reader $in) : Block => Helper::decodeLog(match($woodType = $in->readString(StateNames::WOOD_TYPE)){
StringValues::WOOD_TYPE_ACACIA => Blocks::ACACIA_WOOD(),
StringValues::WOOD_TYPE_BIRCH => Blocks::BIRCH_WOOD(),
StringValues::WOOD_TYPE_DARK_OAK => Blocks::DARK_OAK_WOOD(),
StringValues::WOOD_TYPE_JUNGLE => Blocks::JUNGLE_WOOD(),
StringValues::WOOD_TYPE_OAK => Blocks::OAK_WOOD(),
StringValues::WOOD_TYPE_SPRUCE => Blocks::SPRUCE_WOOD(),
default => throw $in->badValueException(StateNames::WOOD_TYPE, $woodType),
}, $in->readBool(StateNames::STRIPPED_BIT), $in));
$this->map(Ids::WOODEN_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::OAK_BUTTON(), $in));
$this->map(Ids::WOODEN_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::OAK_DOOR(), $in));
$this->map(Ids::WOODEN_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::OAK_PRESSURE_PLATE(), $in));

File diff suppressed because one or more lines are too long