From 27d767227351cbd21a925e1db0f577b42203cdcc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 25 Jun 2022 16:10:39 +0100 Subject: [PATCH] Item frames can now be placed on the up or down faces of blocks --- src/block/ItemFrame.php | 10 +++++----- .../convert/BlockObjectToBlockStateSerializer.php | 2 +- .../convert/BlockStateToBlockObjectDeserializer.php | 3 +-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index 1f77323a0..31f802f1d 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -24,9 +24,9 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\ItemFrame as TileItemFrame; +use pocketmine\block\utils\AnyFacingTrait; use pocketmine\block\utils\BlockDataReader; use pocketmine\block\utils\BlockDataWriter; -use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -37,7 +37,7 @@ use function is_nan; use function lcg_value; class ItemFrame extends Flowable{ - use HorizontalFacingTrait; + use AnyFacingTrait; public const ROTATIONS = 8; @@ -48,12 +48,12 @@ class ItemFrame extends Flowable{ protected float $itemDropChance = 1.0; protected function decodeState(BlockDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); + $this->facing = $r->readFacing(); $this->hasMap = $r->readBool(); } protected function encodeState(BlockDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); + $w->writeFacing($this->facing); $w->writeBool($this->hasMap); } @@ -164,7 +164,7 @@ class ItemFrame extends Flowable{ } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - if($face === Facing::DOWN || $face === Facing::UP || !$blockClicked->isSolid()){ + if(!$blockClicked->isSolid()){ return false; } diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index c70b61d59..ec3f51236 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -694,7 +694,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::FRAME) ->writeBool(StateNames::ITEM_FRAME_MAP_BIT, $block->hasMap()) ->writeBool(StateNames::ITEM_FRAME_PHOTO_BIT, false) - ->writeHorizontalFacing($block->getFacing()); + ->writeFacingDirection($block->getFacing()); }); $this->map(Blocks::JUKEBOX(), fn() => new Writer(Ids::JUKEBOX)); $this->map(Blocks::JUNGLE_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::JUNGLE_BUTTON))); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index f210726c4..ad0801c11 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -486,10 +486,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::FLOWING_LAVA, fn(Reader $in) => Helper::decodeFlowingLiquid(Blocks::LAVA(), $in)); $this->map(Ids::FLOWING_WATER, fn(Reader $in) => Helper::decodeFlowingLiquid(Blocks::WATER(), $in)); $this->map(Ids::FRAME, function(Reader $in) : Block{ - //TODO: in R13 this can be any side, not just horizontal $in->todo(StateNames::ITEM_FRAME_PHOTO_BIT); //TODO: not sure what the point of this is return Blocks::ITEM_FRAME() - ->setFacing($in->readHorizontalFacing()) + ->setFacing($in->readFacingDirection()) ->setHasMap($in->readBool(StateNames::ITEM_FRAME_MAP_BIT)); }); $this->map(Ids::FROSTED_ICE, function(Reader $in) : Block{