From d44ec702b07ea33229fbad1c7e9de8a3c394b30b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 18 May 2019 17:42:03 +0100 Subject: [PATCH] Added BlockDataValidator::read5MinusHorizontalFacing() --- src/pocketmine/block/ItemFrame.php | 2 +- src/pocketmine/block/Stair.php | 2 +- src/pocketmine/block/Trapdoor.php | 2 +- src/pocketmine/block/utils/BlockDataValidator.php | 10 ++++++++++ 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/pocketmine/block/ItemFrame.php b/src/pocketmine/block/ItemFrame.php index 275d8dca21..63291e357a 100644 --- a/src/pocketmine/block/ItemFrame.php +++ b/src/pocketmine/block/ItemFrame.php @@ -54,7 +54,7 @@ class ItemFrame extends Flowable{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readHorizontalFacing(5 - ($stateMeta & 0x03)); + $this->facing = BlockDataValidator::read5MinusHorizontalFacing($stateMeta); $this->hasMap = ($stateMeta & BlockLegacyMetadata::ITEM_FRAME_FLAG_HAS_MAP) !== 0; } diff --git a/src/pocketmine/block/Stair.php b/src/pocketmine/block/Stair.php index 1502d3d19c..40e2198f0a 100644 --- a/src/pocketmine/block/Stair.php +++ b/src/pocketmine/block/Stair.php @@ -49,7 +49,7 @@ abstract class Stair extends Transparent{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readHorizontalFacing(5 - ($stateMeta & 0x03)); + $this->facing = BlockDataValidator::read5MinusHorizontalFacing($stateMeta); $this->upsideDown = ($stateMeta & BlockLegacyMetadata::STAIR_FLAG_UPSIDE_DOWN) !== 0; } diff --git a/src/pocketmine/block/Trapdoor.php b/src/pocketmine/block/Trapdoor.php index 8729578606..efc4e02821 100644 --- a/src/pocketmine/block/Trapdoor.php +++ b/src/pocketmine/block/Trapdoor.php @@ -47,7 +47,7 @@ abstract class Trapdoor extends Transparent{ public function readStateFromData(int $id, int $stateMeta) : void{ //TODO: in PC the values are reversed (facing - 2) - $this->facing = BlockDataValidator::readHorizontalFacing(5 - ($stateMeta & 0x03)); + $this->facing = BlockDataValidator::read5MinusHorizontalFacing($stateMeta); $this->top = ($stateMeta & BlockLegacyMetadata::TRAPDOOR_FLAG_UPPER) !== 0; $this->open = ($stateMeta & BlockLegacyMetadata::TRAPDOOR_FLAG_OPEN) !== 0; } diff --git a/src/pocketmine/block/utils/BlockDataValidator.php b/src/pocketmine/block/utils/BlockDataValidator.php index 1e92c400e7..476de738bf 100644 --- a/src/pocketmine/block/utils/BlockDataValidator.php +++ b/src/pocketmine/block/utils/BlockDataValidator.php @@ -76,6 +76,16 @@ final class BlockDataValidator{ return self::readHorizontalFacing($facing); } + /** + * @param int $value + * + * @return int + * @throws InvalidBlockStateException + */ + public static function read5MinusHorizontalFacing(int $value) : int{ + return self::readHorizontalFacing(5 - ($value & 0x03)); + } + public static function readBoundedInt(string $name, int $v, int $min, int $max) : int{ if($v < $min or $v > $max){ throw new InvalidBlockStateException("$name should be in range $min - $max, got $v");