diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 7f3f406ee..00befb60e 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -461,11 +461,8 @@ class BlockFactory{ $this->register(new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType)); - $this->register(new Log(BlockLegacyIdHelper::getLogIdentifier($treeType), $name . " Log", $logBreakInfo, $treeType, false)); - $this->register(new Log(BlockLegacyIdHelper::getStrippedLogIdentifier($treeType), "Stripped " . $name . " Log", $logBreakInfo, $treeType, true)); - - $this->register(new Wood(BlockLegacyIdHelper::getAllSidedLogIdentifier($treeType), $name . " Wood", $logBreakInfo, $treeType, false)); - $this->register(new Wood(BlockLegacyIdHelper::getAllSidedStrippedLogIdentifier($treeType), "Stripped $name Wood", $logBreakInfo, $treeType, true)); + $this->register(new Log(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)); $this->register(new WoodenStairs(BlockLegacyIdHelper::getWoodenStairsIdentifier($treeType), $name . " Stairs", $planksBreakInfo)); diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/BlockLegacyIdHelper.php index 661e84994..7f16cb4b1 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/BlockLegacyIdHelper.php @@ -92,18 +92,6 @@ final class BlockLegacyIdHelper{ }); } - public static function getAllSidedStrippedLogIdentifier(TreeType $treeType) : BID{ - return new BID(match($treeType->id()){ - TreeType::OAK()->id() => Ids::STRIPPED_OAK_WOOD, - TreeType::SPRUCE()->id() => Ids::STRIPPED_SPRUCE_WOOD, - TreeType::BIRCH()->id() => Ids::STRIPPED_BIRCH_WOOD, - TreeType::JUNGLE()->id() => Ids::STRIPPED_JUNGLE_WOOD, - TreeType::ACACIA()->id() => Ids::STRIPPED_ACACIA_WOOD, - TreeType::DARK_OAK()->id() => Ids::STRIPPED_DARK_OAK_WOOD, - default => throw new AssumptionFailedError("All tree types should be covered") - }); - } - public static function getLeavesIdentifier(TreeType $treeType) : BID{ return match($treeType->id()){ TreeType::OAK()->id() => new BID(Ids::OAK_LEAVES), @@ -281,22 +269,4 @@ final class BlockLegacyIdHelper{ } throw new AssumptionFailedError("Switch should cover all wood types"); } - - public static function getStrippedLogIdentifier(TreeType $treeType) : BlockIdentifier{ - switch($treeType->id()){ - case TreeType::OAK()->id(): - return new BID(Ids::STRIPPED_OAK_LOG); - case TreeType::SPRUCE()->id(): - return new BID(Ids::STRIPPED_SPRUCE_LOG); - case TreeType::BIRCH()->id(): - return new BID(Ids::STRIPPED_BIRCH_LOG); - case TreeType::JUNGLE()->id(): - return new BID(Ids::STRIPPED_JUNGLE_LOG); - case TreeType::ACACIA()->id(): - return new BID(Ids::STRIPPED_ACACIA_LOG); - case TreeType::DARK_OAK()->id(): - return new BID(Ids::STRIPPED_DARK_OAK_LOG); - } - throw new AssumptionFailedError("Switch should cover all wood types"); - } } diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 2fcfdb91f..93132dee0 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -541,18 +541,7 @@ final class BlockTypeIds{ public const STONE_SLAB = 10503; public const STONE_STAIRS = 10504; public const STONECUTTER = 10505; - public const STRIPPED_ACACIA_LOG = 10506; - public const STRIPPED_ACACIA_WOOD = 10507; - public const STRIPPED_BIRCH_LOG = 10508; - public const STRIPPED_BIRCH_WOOD = 10509; - public const STRIPPED_DARK_OAK_LOG = 10510; - public const STRIPPED_DARK_OAK_WOOD = 10511; - public const STRIPPED_JUNGLE_LOG = 10512; - public const STRIPPED_JUNGLE_WOOD = 10513; - public const STRIPPED_OAK_LOG = 10514; - public const STRIPPED_OAK_WOOD = 10515; - public const STRIPPED_SPRUCE_LOG = 10516; - public const STRIPPED_SPRUCE_WOOD = 10517; + public const SUGARCANE = 10518; public const SUNFLOWER = 10519; public const SWEET_BERRY_BUSH = 10520; diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 11654965a..4ae0f759b 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -525,18 +525,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static StonePressurePlate STONE_PRESSURE_PLATE() * @method static Slab STONE_SLAB() * @method static Stair STONE_STAIRS() - * @method static Log STRIPPED_ACACIA_LOG() - * @method static Wood STRIPPED_ACACIA_WOOD() - * @method static Log STRIPPED_BIRCH_LOG() - * @method static Wood STRIPPED_BIRCH_WOOD() - * @method static Log STRIPPED_DARK_OAK_LOG() - * @method static Wood STRIPPED_DARK_OAK_WOOD() - * @method static Log STRIPPED_JUNGLE_LOG() - * @method static Wood STRIPPED_JUNGLE_WOOD() - * @method static Log STRIPPED_OAK_LOG() - * @method static Wood STRIPPED_OAK_WOOD() - * @method static Log STRIPPED_SPRUCE_LOG() - * @method static Wood STRIPPED_SPRUCE_WOOD() * @method static Sugarcane SUGARCANE() * @method static DoublePlant SUNFLOWER() * @method static SweetBerryBush SWEET_BERRY_BUSH() @@ -585,7 +573,7 @@ final class VanillaBlocks{ self::register("acacia_fence", $factory->get(Ids::ACACIA_FENCE, 0)); self::register("acacia_fence_gate", $factory->get(Ids::ACACIA_FENCE_GATE, 0)); self::register("acacia_leaves", $factory->get(Ids::ACACIA_LEAVES, 0)); - self::register("acacia_log", $factory->get(Ids::ACACIA_LOG, 2)); + self::register("acacia_log", $factory->get(Ids::ACACIA_LOG, 4)); self::register("acacia_planks", $factory->get(Ids::ACACIA_PLANKS, 0)); self::register("acacia_pressure_plate", $factory->get(Ids::ACACIA_PRESSURE_PLATE, 0)); self::register("acacia_sapling", $factory->get(Ids::ACACIA_SAPLING, 0)); @@ -620,7 +608,7 @@ final class VanillaBlocks{ self::register("birch_fence", $factory->get(Ids::BIRCH_FENCE, 0)); self::register("birch_fence_gate", $factory->get(Ids::BIRCH_FENCE_GATE, 0)); self::register("birch_leaves", $factory->get(Ids::BIRCH_LEAVES, 0)); - self::register("birch_log", $factory->get(Ids::BIRCH_LOG, 2)); + self::register("birch_log", $factory->get(Ids::BIRCH_LOG, 4)); self::register("birch_planks", $factory->get(Ids::BIRCH_PLANKS, 0)); self::register("birch_pressure_plate", $factory->get(Ids::BIRCH_PRESSURE_PLATE, 0)); self::register("birch_sapling", $factory->get(Ids::BIRCH_SAPLING, 0)); @@ -682,7 +670,7 @@ final class VanillaBlocks{ self::register("dark_oak_fence", $factory->get(Ids::DARK_OAK_FENCE, 0)); self::register("dark_oak_fence_gate", $factory->get(Ids::DARK_OAK_FENCE_GATE, 0)); self::register("dark_oak_leaves", $factory->get(Ids::DARK_OAK_LEAVES, 0)); - self::register("dark_oak_log", $factory->get(Ids::DARK_OAK_LOG, 2)); + self::register("dark_oak_log", $factory->get(Ids::DARK_OAK_LOG, 4)); self::register("dark_oak_planks", $factory->get(Ids::DARK_OAK_PLANKS, 0)); self::register("dark_oak_pressure_plate", $factory->get(Ids::DARK_OAK_PRESSURE_PLATE, 0)); self::register("dark_oak_sapling", $factory->get(Ids::DARK_OAK_SAPLING, 0)); @@ -890,7 +878,7 @@ final class VanillaBlocks{ self::register("jungle_fence", $factory->get(Ids::JUNGLE_FENCE, 0)); self::register("jungle_fence_gate", $factory->get(Ids::JUNGLE_FENCE_GATE, 0)); self::register("jungle_leaves", $factory->get(Ids::JUNGLE_LEAVES, 0)); - self::register("jungle_log", $factory->get(Ids::JUNGLE_LOG, 2)); + self::register("jungle_log", $factory->get(Ids::JUNGLE_LOG, 4)); self::register("jungle_planks", $factory->get(Ids::JUNGLE_PLANKS, 0)); self::register("jungle_pressure_plate", $factory->get(Ids::JUNGLE_PRESSURE_PLATE, 0)); self::register("jungle_sapling", $factory->get(Ids::JUNGLE_SAPLING, 0)); @@ -948,7 +936,7 @@ final class VanillaBlocks{ self::register("oak_fence", $factory->get(Ids::OAK_FENCE, 0)); self::register("oak_fence_gate", $factory->get(Ids::OAK_FENCE_GATE, 0)); self::register("oak_leaves", $factory->get(Ids::OAK_LEAVES, 0)); - self::register("oak_log", $factory->get(Ids::OAK_LOG, 2)); + self::register("oak_log", $factory->get(Ids::OAK_LOG, 4)); self::register("oak_planks", $factory->get(Ids::OAK_PLANKS, 0)); self::register("oak_pressure_plate", $factory->get(Ids::OAK_PRESSURE_PLATE, 0)); self::register("oak_sapling", $factory->get(Ids::OAK_SAPLING, 0)); @@ -1048,7 +1036,7 @@ final class VanillaBlocks{ self::register("spruce_fence", $factory->get(Ids::SPRUCE_FENCE, 0)); self::register("spruce_fence_gate", $factory->get(Ids::SPRUCE_FENCE_GATE, 0)); self::register("spruce_leaves", $factory->get(Ids::SPRUCE_LEAVES, 0)); - self::register("spruce_log", $factory->get(Ids::SPRUCE_LOG, 2)); + self::register("spruce_log", $factory->get(Ids::SPRUCE_LOG, 4)); self::register("spruce_planks", $factory->get(Ids::SPRUCE_PLANKS, 0)); self::register("spruce_pressure_plate", $factory->get(Ids::SPRUCE_PRESSURE_PLATE, 0)); self::register("spruce_sapling", $factory->get(Ids::SPRUCE_SAPLING, 0)); @@ -1073,18 +1061,6 @@ final class VanillaBlocks{ self::register("stone_slab", $factory->get(Ids::STONE_SLAB, 0)); self::register("stone_stairs", $factory->get(Ids::STONE_STAIRS, 0)); self::register("stonecutter", $factory->get(Ids::STONECUTTER, 0)); - self::register("stripped_acacia_log", $factory->get(Ids::STRIPPED_ACACIA_LOG, 2)); - self::register("stripped_acacia_wood", $factory->get(Ids::STRIPPED_ACACIA_WOOD, 0)); - self::register("stripped_birch_log", $factory->get(Ids::STRIPPED_BIRCH_LOG, 2)); - self::register("stripped_birch_wood", $factory->get(Ids::STRIPPED_BIRCH_WOOD, 0)); - self::register("stripped_dark_oak_log", $factory->get(Ids::STRIPPED_DARK_OAK_LOG, 2)); - self::register("stripped_dark_oak_wood", $factory->get(Ids::STRIPPED_DARK_OAK_WOOD, 0)); - self::register("stripped_jungle_log", $factory->get(Ids::STRIPPED_JUNGLE_LOG, 2)); - self::register("stripped_jungle_wood", $factory->get(Ids::STRIPPED_JUNGLE_WOOD, 0)); - self::register("stripped_oak_log", $factory->get(Ids::STRIPPED_OAK_LOG, 2)); - self::register("stripped_oak_wood", $factory->get(Ids::STRIPPED_OAK_WOOD, 0)); - self::register("stripped_spruce_log", $factory->get(Ids::STRIPPED_SPRUCE_LOG, 2)); - self::register("stripped_spruce_wood", $factory->get(Ids::STRIPPED_SPRUCE_WOOD, 0)); self::register("sugarcane", $factory->get(Ids::SUGARCANE, 0)); self::register("sunflower", $factory->get(Ids::SUNFLOWER, 0)); self::register("sweet_berry_bush", $factory->get(Ids::SWEET_BERRY_BUSH, 0)); diff --git a/src/block/Wood.php b/src/block/Wood.php index a71f490fa..a31699db5 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -24,6 +24,9 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\TreeType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\item\Axe; use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -32,14 +35,23 @@ class Wood extends Opaque{ private TreeType $treeType; - private bool $stripped; + private bool $stripped = false; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, TreeType $treeType, bool $stripped){ - $this->stripped = $stripped; //TODO: this should be dynamic, but right now legacy shit gets in the way + public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, TreeType $treeType){ parent::__construct($idInfo, $name, $breakInfo); $this->treeType = $treeType; } + public function getRequiredTypeDataBits() : int{ return 1; } + + protected function decodeType(BlockDataReader $r) : void{ + $this->stripped = $r->readBool(); + } + + protected function encodeType(BlockDataWriter $w) : void{ + $w->writeBool($this->stripped); + } + /** * TODO: this is ad hoc, but add an interface for this to all tree-related blocks */ @@ -49,6 +61,12 @@ class Wood extends Opaque{ public function isStripped() : bool{ return $this->stripped; } + /** @return $this */ + public function setStripped(bool $stripped) : self{ + $this->stripped = $stripped; + return $this; + } + public function getFuelTime() : int{ return 300; } @@ -62,8 +80,10 @@ class Wood extends Opaque{ } public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - if(!$this->stripped && ($item->getBlockToolType() & BlockToolType::AXE) !== 0){ - //TODO: strip logs; can't implement this yet because of legacy limitations :( + if(!$this->stripped && $item instanceof Axe){ + $item->applyDamage(1); + $this->stripped = true; + $this->position->getWorld()->setBlock($this->position, $this); return true; } return false; diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 04907a553..854367f43 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -231,7 +231,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)); + $this->map(Blocks::ACACIA_LOG(), fn(Log $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))); @@ -319,7 +319,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)); + $this->map(Blocks::BIRCH_LOG(), fn(Log $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))); @@ -433,7 +433,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)); + $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_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))); @@ -720,7 +720,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)); + $this->map(Blocks::JUNGLE_LOG(), fn(Log $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))); @@ -824,7 +824,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)); + $this->map(Blocks::OAK_LOG(), fn(Log $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))); @@ -974,7 +974,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)); + $this->map(Blocks::SPRUCE_LOG(), fn(Log $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))); @@ -1016,24 +1016,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::STONE_PRESSURE_PLATE(), fn(StonePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::STONE_PRESSURE_PLATE))); $this->map(Blocks::STONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_STONE)); $this->map(Blocks::STONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::NORMAL_STONE_STAIRS))); - $this->map(Blocks::STRIPPED_ACACIA_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_ACACIA_LOG) - ->writePillarAxis($block->getAxis())); - $this->map(Blocks::STRIPPED_ACACIA_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(Blocks::STRIPPED_BIRCH_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_BIRCH_LOG) - ->writePillarAxis($block->getAxis())); - $this->map(Blocks::STRIPPED_BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(Blocks::STRIPPED_DARK_OAK_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_DARK_OAK_LOG) - ->writePillarAxis($block->getAxis())); - $this->map(Blocks::STRIPPED_DARK_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(Blocks::STRIPPED_JUNGLE_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_JUNGLE_LOG) - ->writePillarAxis($block->getAxis())); - $this->map(Blocks::STRIPPED_JUNGLE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(Blocks::STRIPPED_OAK_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_OAK_LOG) - ->writePillarAxis($block->getAxis())); - $this->map(Blocks::STRIPPED_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(Blocks::STRIPPED_SPRUCE_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_SPRUCE_LOG) - ->writePillarAxis($block->getAxis())); - $this->map(Blocks::STRIPPED_SPRUCE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); $this->map(Blocks::SUGARCANE(), function(Sugarcane $block) : Writer{ return Writer::create(Ids::REEDS) ->writeInt(StateNames::AGE, $block->getAge()); diff --git a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php index b662e847c..8c7d73fb9 100644 --- a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php @@ -33,6 +33,7 @@ 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; @@ -149,6 +150,13 @@ final class BlockStateDeserializerHelper{ return self::decodeLiquid($block, $in, true); } + /** @throws BlockStateDeserializeException */ + public static function decodeLog(Log $block, bool $stripped, BlockStateReader $in) : Log{ + return $block + ->setAxis($in->readPillarAxis()) + ->setStripped($stripped); + } + /** @throws BlockStateDeserializeException */ public static function decodeMushroomBlock(RedMushroomBlock $block, BlockStateReader $in) : Block{ switch($type = $in->readBoundedInt(BlockStateNames::HUGE_MUSHROOM_BITS, 0, 15)){ diff --git a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php index 5bc021940..d7fc9a28f 100644 --- a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php @@ -140,14 +140,17 @@ final class BlockStateSerializerHelper{ ->writePillarAxis($block->getAxis()); } - public static function encodeLog1(Log $block, string $type) : BlockStateWriter{ - return self::encodeLog($block, BlockStateWriter::create(Ids::LOG) - ->writeString(BlockStateNames::OLD_LOG_TYPE, $type)); + public static function encodeLog1(Log $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 $type) : BlockStateWriter{ - return self::encodeLog($block, BlockStateWriter::create(Ids::LOG2) - ->writeString(BlockStateNames::NEW_LOG_TYPE, $type)); + public static function encodeLog2(Log $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) + ); } public static function encodeMushroomBlock(RedMushroomBlock $block, BlockStateWriter $out) : BlockStateWriter{ diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index e371e8243..8f8b13f8f 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -638,24 +638,18 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setFacing($in->readHorizontalFacing()) ->setLit(true); }); - $this->map(Ids::LOG, function(Reader $in) : Block{ - return (match($type = $in->readString(StateNames::OLD_LOG_TYPE)){ - StringValues::OLD_LOG_TYPE_BIRCH => Blocks::BIRCH_LOG(), - StringValues::OLD_LOG_TYPE_JUNGLE => Blocks::JUNGLE_LOG(), - StringValues::OLD_LOG_TYPE_OAK => Blocks::OAK_LOG(), - StringValues::OLD_LOG_TYPE_SPRUCE => Blocks::SPRUCE_LOG(), - default => throw $in->badValueException(StateNames::OLD_LOG_TYPE, $type), - }) - ->setAxis($in->readPillarAxis()); - }); - $this->map(Ids::LOG2, function(Reader $in) : Block{ - return (match($type = $in->readString(StateNames::NEW_LOG_TYPE)){ - StringValues::NEW_LOG_TYPE_ACACIA => Blocks::ACACIA_LOG(), - StringValues::NEW_LOG_TYPE_DARK_OAK => Blocks::DARK_OAK_LOG(), - default => throw $in->badValueException(StateNames::NEW_LOG_TYPE, $type), - }) - ->setAxis($in->readPillarAxis()); - }); + $this->map(Ids::LOG, fn(Reader $in) => Helper::decodeLog(match($type = $in->readString(StateNames::OLD_LOG_TYPE)){ + StringValues::OLD_LOG_TYPE_BIRCH => Blocks::BIRCH_LOG(), + StringValues::OLD_LOG_TYPE_JUNGLE => Blocks::JUNGLE_LOG(), + StringValues::OLD_LOG_TYPE_OAK => Blocks::OAK_LOG(), + StringValues::OLD_LOG_TYPE_SPRUCE => Blocks::SPRUCE_LOG(), + default => throw $in->badValueException(StateNames::OLD_LOG_TYPE, $type), + }, false, $in)); + $this->map(Ids::LOG2, fn(Reader $in) => Helper::decodeLog(match($type = $in->readString(StateNames::NEW_LOG_TYPE)){ + StringValues::NEW_LOG_TYPE_ACACIA => Blocks::ACACIA_LOG(), + StringValues::NEW_LOG_TYPE_DARK_OAK => Blocks::DARK_OAK_LOG(), + default => throw $in->badValueException(StateNames::NEW_LOG_TYPE, $type), + }, false, $in)); $this->map(Ids::LOOM, function(Reader $in) : Block{ return Blocks::LOOM() ->setFacing($in->readLegacyHorizontalFacing()); @@ -959,30 +953,12 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::STONECUTTER() ->setFacing($in->readHorizontalFacing()); }); - $this->map(Ids::STRIPPED_ACACIA_LOG, function(Reader $in) : Block{ - return Blocks::STRIPPED_ACACIA_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->map(Ids::STRIPPED_BIRCH_LOG, function(Reader $in) : Block{ - return Blocks::STRIPPED_BIRCH_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->map(Ids::STRIPPED_DARK_OAK_LOG, function(Reader $in) : Block{ - return Blocks::STRIPPED_DARK_OAK_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->map(Ids::STRIPPED_JUNGLE_LOG, function(Reader $in) : Block{ - return Blocks::STRIPPED_JUNGLE_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->map(Ids::STRIPPED_OAK_LOG, function(Reader $in) : Block{ - return Blocks::STRIPPED_OAK_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->map(Ids::STRIPPED_SPRUCE_LOG, function(Reader $in) : Block{ - return Blocks::STRIPPED_SPRUCE_LOG() - ->setAxis($in->readPillarAxis()); - }); + $this->map(Ids::STRIPPED_ACACIA_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::ACACIA_LOG(), true, $in)); + $this->map(Ids::STRIPPED_BIRCH_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::BIRCH_LOG(), true, $in)); + $this->map(Ids::STRIPPED_DARK_OAK_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::DARK_OAK_LOG(), true, $in)); + $this->map(Ids::STRIPPED_JUNGLE_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::JUNGLE_LOG(), true, $in)); + $this->map(Ids::STRIPPED_OAK_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::OAK_LOG(), true, $in)); + $this->map(Ids::STRIPPED_SPRUCE_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::SPRUCE_LOG(), true, $in)); $this->map(Ids::SWEET_BERRY_BUSH, function(Reader $in) : Block{ //berry bush only wants 0-3, but it can be bigger in MCPE due to misuse of GROWTH state which goes up to 7 $growth = $in->readBoundedInt(StateNames::GROWTH, 0, 7); @@ -1057,15 +1033,15 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $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 => $stripped ? Blocks::STRIPPED_ACACIA_WOOD() : Blocks::ACACIA_WOOD(), - StringValues::WOOD_TYPE_BIRCH => $stripped ? Blocks::STRIPPED_BIRCH_WOOD() : Blocks::BIRCH_WOOD(), - StringValues::WOOD_TYPE_DARK_OAK => $stripped ? Blocks::STRIPPED_DARK_OAK_WOOD() : Blocks::DARK_OAK_WOOD(), - StringValues::WOOD_TYPE_JUNGLE => $stripped ? Blocks::STRIPPED_JUNGLE_WOOD() : Blocks::JUNGLE_WOOD(), - StringValues::WOOD_TYPE_OAK => $stripped ? Blocks::STRIPPED_OAK_WOOD() : Blocks::OAK_WOOD(), - StringValues::WOOD_TYPE_SPRUCE => $stripped ? Blocks::STRIPPED_SPRUCE_WOOD() : Blocks::SPRUCE_WOOD(), + 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::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)); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 8be5208bd..440734556 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -77,7 +77,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("acacia_fence", fn() => Blocks::ACACIA_FENCE()); $result->registerBlock("acacia_fence_gate", fn() => Blocks::ACACIA_FENCE_GATE()); $result->registerBlock("acacia_leaves", fn() => Blocks::ACACIA_LEAVES()); - $result->registerBlock("acacia_log", fn() => Blocks::ACACIA_LOG()); + $result->registerBlock("acacia_log", fn() => Blocks::ACACIA_LOG()->setStripped(false)); $result->registerBlock("acacia_planks", fn() => Blocks::ACACIA_PLANKS()); $result->registerBlock("acacia_pressure_plate", fn() => Blocks::ACACIA_PRESSURE_PLATE()); $result->registerBlock("acacia_sapling", fn() => Blocks::ACACIA_SAPLING()); @@ -87,7 +87,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("acacia_standing_sign", fn() => Blocks::ACACIA_SIGN()); $result->registerBlock("acacia_trapdoor", fn() => Blocks::ACACIA_TRAPDOOR()); $result->registerBlock("acacia_wall_sign", fn() => Blocks::ACACIA_WALL_SIGN()); - $result->registerBlock("acacia_wood", fn() => Blocks::ACACIA_WOOD()); + $result->registerBlock("acacia_wood", fn() => Blocks::ACACIA_WOOD()->setStripped(false)); $result->registerBlock("acacia_wood_stairs", fn() => Blocks::ACACIA_STAIRS()); $result->registerBlock("acacia_wooden_stairs", fn() => Blocks::ACACIA_STAIRS()); $result->registerBlock("activator_rail", fn() => Blocks::ACTIVATOR_RAIL()); @@ -119,7 +119,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("birch_fence", fn() => Blocks::BIRCH_FENCE()); $result->registerBlock("birch_fence_gate", fn() => Blocks::BIRCH_FENCE_GATE()); $result->registerBlock("birch_leaves", fn() => Blocks::BIRCH_LEAVES()); - $result->registerBlock("birch_log", fn() => Blocks::BIRCH_LOG()); + $result->registerBlock("birch_log", fn() => Blocks::BIRCH_LOG()->setStripped(false)); $result->registerBlock("birch_planks", fn() => Blocks::BIRCH_PLANKS()); $result->registerBlock("birch_pressure_plate", fn() => Blocks::BIRCH_PRESSURE_PLATE()); $result->registerBlock("birch_sapling", fn() => Blocks::BIRCH_SAPLING()); @@ -129,7 +129,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("birch_standing_sign", fn() => Blocks::BIRCH_SIGN()); $result->registerBlock("birch_trapdoor", fn() => Blocks::BIRCH_TRAPDOOR()); $result->registerBlock("birch_wall_sign", fn() => Blocks::BIRCH_WALL_SIGN()); - $result->registerBlock("birch_wood", fn() => Blocks::BIRCH_WOOD()); + $result->registerBlock("birch_wood", fn() => Blocks::BIRCH_WOOD()->setStripped(false)); $result->registerBlock("birch_wood_stairs", fn() => Blocks::BIRCH_STAIRS()); $result->registerBlock("birch_wooden_stairs", fn() => Blocks::BIRCH_STAIRS()); $result->registerBlock("blast_furnace", fn() => Blocks::BLAST_FURNACE()); @@ -211,7 +211,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("dark_oak_fence", fn() => Blocks::DARK_OAK_FENCE()); $result->registerBlock("dark_oak_fence_gate", fn() => Blocks::DARK_OAK_FENCE_GATE()); $result->registerBlock("dark_oak_leaves", fn() => Blocks::DARK_OAK_LEAVES()); - $result->registerBlock("dark_oak_log", fn() => Blocks::DARK_OAK_LOG()); + $result->registerBlock("dark_oak_log", fn() => Blocks::DARK_OAK_LOG()->setStripped(false)); $result->registerBlock("dark_oak_planks", fn() => Blocks::DARK_OAK_PLANKS()); $result->registerBlock("dark_oak_pressure_plate", fn() => Blocks::DARK_OAK_PRESSURE_PLATE()); $result->registerBlock("dark_oak_sapling", fn() => Blocks::DARK_OAK_SAPLING()); @@ -221,7 +221,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("dark_oak_standing_sign", fn() => Blocks::DARK_OAK_SIGN()); $result->registerBlock("dark_oak_trapdoor", fn() => Blocks::DARK_OAK_TRAPDOOR()); $result->registerBlock("dark_oak_wall_sign", fn() => Blocks::DARK_OAK_WALL_SIGN()); - $result->registerBlock("dark_oak_wood", fn() => Blocks::DARK_OAK_WOOD()); + $result->registerBlock("dark_oak_wood", fn() => Blocks::DARK_OAK_WOOD()->setStripped(false)); $result->registerBlock("dark_oak_wood_stairs", fn() => Blocks::DARK_OAK_STAIRS()); $result->registerBlock("dark_oak_wooden_stairs", fn() => Blocks::DARK_OAK_STAIRS()); $result->registerBlock("dark_prismarine", fn() => Blocks::DARK_PRISMARINE()); @@ -601,7 +601,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("jungle_fence", fn() => Blocks::JUNGLE_FENCE()); $result->registerBlock("jungle_fence_gate", fn() => Blocks::JUNGLE_FENCE_GATE()); $result->registerBlock("jungle_leaves", fn() => Blocks::JUNGLE_LEAVES()); - $result->registerBlock("jungle_log", fn() => Blocks::JUNGLE_LOG()); + $result->registerBlock("jungle_log", fn() => Blocks::JUNGLE_LOG()->setStripped(false)); $result->registerBlock("jungle_planks", fn() => Blocks::JUNGLE_PLANKS()); $result->registerBlock("jungle_pressure_plate", fn() => Blocks::JUNGLE_PRESSURE_PLATE()); $result->registerBlock("jungle_sapling", fn() => Blocks::JUNGLE_SAPLING()); @@ -611,7 +611,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("jungle_standing_sign", fn() => Blocks::JUNGLE_SIGN()); $result->registerBlock("jungle_trapdoor", fn() => Blocks::JUNGLE_TRAPDOOR()); $result->registerBlock("jungle_wall_sign", fn() => Blocks::JUNGLE_WALL_SIGN()); - $result->registerBlock("jungle_wood", fn() => Blocks::JUNGLE_WOOD()); + $result->registerBlock("jungle_wood", fn() => Blocks::JUNGLE_WOOD()->setStripped(false)); $result->registerBlock("jungle_wood_stairs", fn() => Blocks::JUNGLE_STAIRS()); $result->registerBlock("jungle_wooden_stairs", fn() => Blocks::JUNGLE_STAIRS()); $result->registerBlock("lab_table", fn() => Blocks::LAB_TABLE()); @@ -641,8 +641,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("lit_redstone_ore", fn() => Blocks::REDSTONE_ORE()->setLit(true)); $result->registerBlock("lit_redstone_torch", fn() => Blocks::REDSTONE_TORCH()); $result->registerBlock("lit_smoker", fn() => Blocks::SMOKER()); - $result->registerBlock("log", fn() => Blocks::OAK_LOG()); - $result->registerBlock("log2", fn() => Blocks::ACACIA_LOG()); + $result->registerBlock("log", fn() => Blocks::OAK_LOG()->setStripped(false)); + $result->registerBlock("log2", fn() => Blocks::ACACIA_LOG()->setStripped(false)); $result->registerBlock("loom", fn() => Blocks::LOOM()); $result->registerBlock("magma", fn() => Blocks::MAGMA()); $result->registerBlock("material_reducer", fn() => Blocks::MATERIAL_REDUCER()); @@ -690,7 +690,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("oak_fence", fn() => Blocks::OAK_FENCE()); $result->registerBlock("oak_fence_gate", fn() => Blocks::OAK_FENCE_GATE()); $result->registerBlock("oak_leaves", fn() => Blocks::OAK_LEAVES()); - $result->registerBlock("oak_log", fn() => Blocks::OAK_LOG()); + $result->registerBlock("oak_log", fn() => Blocks::OAK_LOG()->setStripped(false)); $result->registerBlock("oak_planks", fn() => Blocks::OAK_PLANKS()); $result->registerBlock("oak_pressure_plate", fn() => Blocks::OAK_PRESSURE_PLATE()); $result->registerBlock("oak_sapling", fn() => Blocks::OAK_SAPLING()); @@ -700,7 +700,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("oak_standing_sign", fn() => Blocks::OAK_SIGN()); $result->registerBlock("oak_trapdoor", fn() => Blocks::OAK_TRAPDOOR()); $result->registerBlock("oak_wall_sign", fn() => Blocks::OAK_WALL_SIGN()); - $result->registerBlock("oak_wood", fn() => Blocks::OAK_WOOD()); + $result->registerBlock("oak_wood", fn() => Blocks::OAK_WOOD()->setStripped(false)); $result->registerBlock("oak_wood_stairs", fn() => Blocks::OAK_STAIRS()); $result->registerBlock("oak_wooden_stairs", fn() => Blocks::OAK_STAIRS()); $result->registerBlock("obsidian", fn() => Blocks::OBSIDIAN()); @@ -821,7 +821,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("spruce_fence", fn() => Blocks::SPRUCE_FENCE()); $result->registerBlock("spruce_fence_gate", fn() => Blocks::SPRUCE_FENCE_GATE()); $result->registerBlock("spruce_leaves", fn() => Blocks::SPRUCE_LEAVES()); - $result->registerBlock("spruce_log", fn() => Blocks::SPRUCE_LOG()); + $result->registerBlock("spruce_log", fn() => Blocks::SPRUCE_LOG()->setStripped(false)); $result->registerBlock("spruce_planks", fn() => Blocks::SPRUCE_PLANKS()); $result->registerBlock("spruce_pressure_plate", fn() => Blocks::SPRUCE_PRESSURE_PLATE()); $result->registerBlock("spruce_sapling", fn() => Blocks::SPRUCE_SAPLING()); @@ -831,7 +831,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("spruce_standing_sign", fn() => Blocks::SPRUCE_SIGN()); $result->registerBlock("spruce_trapdoor", fn() => Blocks::SPRUCE_TRAPDOOR()); $result->registerBlock("spruce_wall_sign", fn() => Blocks::SPRUCE_WALL_SIGN()); - $result->registerBlock("spruce_wood", fn() => Blocks::SPRUCE_WOOD()); + $result->registerBlock("spruce_wood", fn() => Blocks::SPRUCE_WOOD()->setStripped(false)); $result->registerBlock("spruce_wood_stairs", fn() => Blocks::SPRUCE_STAIRS()); $result->registerBlock("spruce_wooden_stairs", fn() => Blocks::SPRUCE_STAIRS()); $result->registerBlock("stained_clay", fn() => Blocks::STAINED_CLAY()); @@ -861,18 +861,18 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("stonebrick", fn() => Blocks::STONE_BRICKS()); $result->registerBlock("stonecutter", fn() => Blocks::STONECUTTER()); $result->registerBlock("stonecutter_block", fn() => Blocks::STONECUTTER()); - $result->registerBlock("stripped_acacia_log", fn() => Blocks::STRIPPED_ACACIA_LOG()); - $result->registerBlock("stripped_acacia_wood", fn() => Blocks::STRIPPED_ACACIA_WOOD()); - $result->registerBlock("stripped_birch_log", fn() => Blocks::STRIPPED_BIRCH_LOG()); - $result->registerBlock("stripped_birch_wood", fn() => Blocks::STRIPPED_BIRCH_WOOD()); - $result->registerBlock("stripped_dark_oak_log", fn() => Blocks::STRIPPED_DARK_OAK_LOG()); - $result->registerBlock("stripped_dark_oak_wood", fn() => Blocks::STRIPPED_DARK_OAK_WOOD()); - $result->registerBlock("stripped_jungle_log", fn() => Blocks::STRIPPED_JUNGLE_LOG()); - $result->registerBlock("stripped_jungle_wood", fn() => Blocks::STRIPPED_JUNGLE_WOOD()); - $result->registerBlock("stripped_oak_log", fn() => Blocks::STRIPPED_OAK_LOG()); - $result->registerBlock("stripped_oak_wood", fn() => Blocks::STRIPPED_OAK_WOOD()); - $result->registerBlock("stripped_spruce_log", fn() => Blocks::STRIPPED_SPRUCE_LOG()); - $result->registerBlock("stripped_spruce_wood", fn() => Blocks::STRIPPED_SPRUCE_WOOD()); + $result->registerBlock("stripped_acacia_log", fn() => Blocks::ACACIA_LOG()->setStripped(true)); + $result->registerBlock("stripped_acacia_wood", fn() => Blocks::ACACIA_WOOD()->setStripped(true)); + $result->registerBlock("stripped_birch_log", fn() => Blocks::BIRCH_LOG()->setStripped(true)); + $result->registerBlock("stripped_birch_wood", fn() => Blocks::BIRCH_WOOD()->setStripped(true)); + $result->registerBlock("stripped_dark_oak_log", fn() => Blocks::DARK_OAK_LOG()->setStripped(true)); + $result->registerBlock("stripped_dark_oak_wood", fn() => Blocks::DARK_OAK_WOOD()->setStripped(true)); + $result->registerBlock("stripped_jungle_log", fn() => Blocks::JUNGLE_LOG()->setStripped(true)); + $result->registerBlock("stripped_jungle_wood", fn() => Blocks::JUNGLE_WOOD()->setStripped(true)); + $result->registerBlock("stripped_oak_log", fn() => Blocks::OAK_LOG()->setStripped(true)); + $result->registerBlock("stripped_oak_wood", fn() => Blocks::OAK_WOOD()->setStripped(true)); + $result->registerBlock("stripped_spruce_log", fn() => Blocks::SPRUCE_LOG()->setStripped(true)); + $result->registerBlock("stripped_spruce_wood", fn() => Blocks::SPRUCE_WOOD()->setStripped(true)); $result->registerBlock("sugar_cane", fn() => Blocks::SUGARCANE()); $result->registerBlock("sugar_canes", fn() => Blocks::SUGARCANE()); $result->registerBlock("sugarcane", fn() => Blocks::SUGARCANE()); @@ -890,7 +890,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("tripwire", fn() => Blocks::TRIPWIRE()); $result->registerBlock("tripwire_hook", fn() => Blocks::TRIPWIRE_HOOK()); $result->registerBlock("trunk", fn() => Blocks::OAK_PLANKS()); - $result->registerBlock("trunk2", fn() => Blocks::ACACIA_LOG()); + $result->registerBlock("trunk2", fn() => Blocks::ACACIA_LOG()->setStripped(false)); $result->registerBlock("underwater_torch", fn() => Blocks::UNDERWATER_TORCH()); $result->registerBlock("undyed_shulker_box", fn() => Blocks::SHULKER_BOX()); $result->registerBlock("unlit_redstone_torch", fn() => Blocks::REDSTONE_TORCH()); @@ -912,8 +912,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("weighted_pressure_plate_light", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT()); $result->registerBlock("wheat_block", fn() => Blocks::WHEAT()); $result->registerBlock("white_tulip", fn() => Blocks::WHITE_TULIP()); - $result->registerBlock("wood", fn() => Blocks::OAK_LOG()); - $result->registerBlock("wood2", fn() => Blocks::ACACIA_LOG()); + $result->registerBlock("wood", fn() => Blocks::OAK_LOG()->setStripped(false)); + $result->registerBlock("wood2", fn() => Blocks::ACACIA_LOG()->setStripped(false)); $result->registerBlock("wood_door_block", fn() => Blocks::OAK_DOOR()); $result->registerBlock("wood_slab", fn() => Blocks::OAK_SLAB()); $result->registerBlock("wood_slabs", fn() => Blocks::OAK_SLAB());