diff --git a/src/pocketmine/block/Anvil.php b/src/pocketmine/block/Anvil.php index 34cdf1003..bdd79597c 100644 --- a/src/pocketmine/block/Anvil.php +++ b/src/pocketmine/block/Anvil.php @@ -23,14 +23,13 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\Fallable; use pocketmine\block\utils\FallableTrait; use pocketmine\inventory\AnvilInventory; use pocketmine\item\Item; use pocketmine\item\ToolTier; use pocketmine\math\AxisAlignedBB; -use pocketmine\math\Bearing; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -47,11 +46,11 @@ class Anvil extends Transparent implements Fallable{ } protected function writeStateToMeta() : int{ - return Bearing::fromFacing($this->facing); + return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readLegacyHorizontalFacing($stateMeta); + $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/Banner.php b/src/pocketmine/block/Banner.php index 98dfb4b61..e001d582c 100644 --- a/src/pocketmine/block/Banner.php +++ b/src/pocketmine/block/Banner.php @@ -26,7 +26,7 @@ namespace pocketmine\block; use Ds\Deque; use pocketmine\block\tile\Banner as TileBanner; use pocketmine\block\utils\BannerPattern; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\DyeColor; use pocketmine\item\Banner as ItemBanner; use pocketmine\item\Item; @@ -77,12 +77,12 @@ class Banner extends Transparent{ if($this->facing === Facing::UP){ return $this->rotation; } - return $this->facing; + return BlockDataSerializer::writeHorizontalFacing($this->facing); } public function readStateFromData(int $id, int $stateMeta) : void{ if($id === $this->idInfo->getSecondId()){ - $this->facing = BlockDataValidator::readHorizontalFacing($stateMeta); + $this->facing = BlockDataSerializer::readHorizontalFacing($stateMeta); }else{ $this->facing = Facing::UP; $this->rotation = $stateMeta; diff --git a/src/pocketmine/block/Bed.php b/src/pocketmine/block/Bed.php index dd26f3950..0f6a5963d 100644 --- a/src/pocketmine/block/Bed.php +++ b/src/pocketmine/block/Bed.php @@ -24,14 +24,13 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Bed as TileBed; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\DyeColor; use pocketmine\item\Bed as ItemBed; use pocketmine\item\Item; use pocketmine\item\ItemFactory; use pocketmine\lang\TranslationContainer; use pocketmine\math\AxisAlignedBB; -use pocketmine\math\Bearing; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -56,13 +55,13 @@ class Bed extends Transparent{ } protected function writeStateToMeta() : int{ - return Bearing::fromFacing($this->facing) | + return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing) | ($this->occupied ? BlockLegacyMetadata::BED_FLAG_OCCUPIED : 0) | ($this->head ? BlockLegacyMetadata::BED_FLAG_HEAD : 0); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readLegacyHorizontalFacing($stateMeta & 0x03); + $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); $this->occupied = ($stateMeta & BlockLegacyMetadata::BED_FLAG_OCCUPIED) !== 0; $this->head = ($stateMeta & BlockLegacyMetadata::BED_FLAG_HEAD) !== 0; } diff --git a/src/pocketmine/block/Button.php b/src/pocketmine/block/Button.php index a6ae2a1ff..ed29cb587 100644 --- a/src/pocketmine/block/Button.php +++ b/src/pocketmine/block/Button.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -40,12 +40,12 @@ abstract class Button extends Flowable{ protected $powered = false; protected function writeStateToMeta() : int{ - return $this->facing | ($this->powered ? BlockLegacyMetadata::BUTTON_FLAG_POWERED : 0); + return BlockDataSerializer::writeFacing($this->facing) | ($this->powered ? BlockLegacyMetadata::BUTTON_FLAG_POWERED : 0); } public function readStateFromData(int $id, int $stateMeta) : void{ //TODO: in PC it's (6 - facing) for every meta except 0 (down) - $this->facing = BlockDataValidator::readFacing($stateMeta & 0x07); + $this->facing = BlockDataSerializer::readFacing($stateMeta & 0x07); $this->powered = ($stateMeta & BlockLegacyMetadata::BUTTON_FLAG_POWERED) !== 0; } diff --git a/src/pocketmine/block/Cactus.php b/src/pocketmine/block/Cactus.php index 1c768c830..b7b6df815 100644 --- a/src/pocketmine/block/Cactus.php +++ b/src/pocketmine/block/Cactus.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\entity\Entity; use pocketmine\event\block\BlockGrowEvent; use pocketmine\event\entity\EntityDamageByBlockEvent; @@ -49,7 +49,7 @@ class Cactus extends Transparent{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->age = BlockDataValidator::readBoundedInt("age", $stateMeta, 0, 15); + $this->age = BlockDataSerializer::readBoundedInt("age", $stateMeta, 0, 15); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/Cake.php b/src/pocketmine/block/Cake.php index 51ea82f0f..5f417927e 100644 --- a/src/pocketmine/block/Cake.php +++ b/src/pocketmine/block/Cake.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\entity\effect\EffectInstance; use pocketmine\entity\Living; use pocketmine\item\FoodSource; @@ -48,7 +48,7 @@ class Cake extends Transparent implements FoodSource{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->bites = BlockDataValidator::readBoundedInt("bites", $stateMeta, 0, 6); + $this->bites = BlockDataSerializer::readBoundedInt("bites", $stateMeta, 0, 6); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/CarvedPumpkin.php b/src/pocketmine/block/CarvedPumpkin.php index 621ae9c3f..9219c3233 100644 --- a/src/pocketmine/block/CarvedPumpkin.php +++ b/src/pocketmine/block/CarvedPumpkin.php @@ -23,9 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; -use pocketmine\math\Bearing; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -37,11 +36,11 @@ class CarvedPumpkin extends Opaque{ protected $facing = Facing::NORTH; public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readLegacyHorizontalFacing($stateMeta & 0x03); + $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); } protected function writeStateToMeta() : int{ - return Bearing::fromFacing($this->facing); + return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/Chest.php b/src/pocketmine/block/Chest.php index e01ceae5d..68d6e29de 100644 --- a/src/pocketmine/block/Chest.php +++ b/src/pocketmine/block/Chest.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Chest as TileChest; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -42,11 +42,11 @@ class Chest extends Transparent{ } protected function writeStateToMeta() : int{ - return $this->facing; + return BlockDataSerializer::writeHorizontalFacing($this->facing); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readHorizontalFacing($stateMeta); + $this->facing = BlockDataSerializer::readHorizontalFacing($stateMeta); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/CocoaBlock.php b/src/pocketmine/block/CocoaBlock.php index f1ae2a808..2b487077e 100644 --- a/src/pocketmine/block/CocoaBlock.php +++ b/src/pocketmine/block/CocoaBlock.php @@ -23,13 +23,12 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\TreeType; use pocketmine\item\Fertilizer; use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\math\AxisAlignedBB; -use pocketmine\math\Bearing; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -48,12 +47,12 @@ class CocoaBlock extends Transparent{ } protected function writeStateToMeta() : int{ - return Bearing::fromFacing(Facing::opposite($this->facing)) | ($this->age << 2); + return BlockDataSerializer::writeLegacyHorizontalFacing(Facing::opposite($this->facing)) | ($this->age << 2); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = Facing::opposite(BlockDataValidator::readLegacyHorizontalFacing($stateMeta & 0x03)); - $this->age = BlockDataValidator::readBoundedInt("age", $stateMeta >> 2, 0, 2); + $this->facing = Facing::opposite(BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03)); + $this->age = BlockDataSerializer::readBoundedInt("age", $stateMeta >> 2, 0, 2); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/Crops.php b/src/pocketmine/block/Crops.php index 799f59fd5..3a1829ea8 100644 --- a/src/pocketmine/block/Crops.php +++ b/src/pocketmine/block/Crops.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; @@ -46,7 +46,7 @@ abstract class Crops extends Flowable{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->age = BlockDataValidator::readBoundedInt("age", $stateMeta, 0, 7); + $this->age = BlockDataSerializer::readBoundedInt("age", $stateMeta, 0, 7); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/DaylightSensor.php b/src/pocketmine/block/DaylightSensor.php index 27ec0ee76..af05390a5 100644 --- a/src/pocketmine/block/DaylightSensor.php +++ b/src/pocketmine/block/DaylightSensor.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -57,7 +57,7 @@ class DaylightSensor extends Transparent{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->power = BlockDataValidator::readBoundedInt("power", $stateMeta, 0, 15); + $this->power = BlockDataSerializer::readBoundedInt("power", $stateMeta, 0, 15); $this->inverted = $id === $this->idInfo->getSecondId(); } diff --git a/src/pocketmine/block/Door.php b/src/pocketmine/block/Door.php index c244ddacc..eecb1c276 100644 --- a/src/pocketmine/block/Door.php +++ b/src/pocketmine/block/Door.php @@ -23,10 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; -use pocketmine\math\Bearing; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -55,7 +54,7 @@ class Door extends Transparent{ ($this->powered ? BlockLegacyMetadata::DOOR_TOP_FLAG_POWERED : 0); } - return Bearing::fromFacing(Facing::rotateY($this->facing, true)) | ($this->open ? BlockLegacyMetadata::DOOR_BOTTOM_FLAG_OPEN : 0); + return BlockDataSerializer::writeLegacyHorizontalFacing(Facing::rotateY($this->facing, true)) | ($this->open ? BlockLegacyMetadata::DOOR_BOTTOM_FLAG_OPEN : 0); } public function readStateFromData(int $id, int $stateMeta) : void{ @@ -64,7 +63,7 @@ class Door extends Transparent{ $this->hingeRight = ($stateMeta & BlockLegacyMetadata::DOOR_TOP_FLAG_RIGHT) !== 0; $this->powered = ($stateMeta & BlockLegacyMetadata::DOOR_TOP_FLAG_POWERED) !== 0; }else{ - $this->facing = Facing::rotateY(BlockDataValidator::readLegacyHorizontalFacing($stateMeta & 0x03), false); + $this->facing = Facing::rotateY(BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03), false); $this->open = ($stateMeta & BlockLegacyMetadata::DOOR_BOTTOM_FLAG_OPEN) !== 0; } } diff --git a/src/pocketmine/block/EndPortalFrame.php b/src/pocketmine/block/EndPortalFrame.php index 9f031e33a..ae354bdaa 100644 --- a/src/pocketmine/block/EndPortalFrame.php +++ b/src/pocketmine/block/EndPortalFrame.php @@ -23,10 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; -use pocketmine\math\Bearing; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -44,11 +43,11 @@ class EndPortalFrame extends Opaque{ } protected function writeStateToMeta() : int{ - return Bearing::fromFacing($this->facing) | ($this->eye ? BlockLegacyMetadata::END_PORTAL_FRAME_FLAG_EYE : 0); + return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing) | ($this->eye ? BlockLegacyMetadata::END_PORTAL_FRAME_FLAG_EYE : 0); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readLegacyHorizontalFacing($stateMeta & 0x03); + $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); $this->eye = ($stateMeta & BlockLegacyMetadata::END_PORTAL_FRAME_FLAG_EYE) !== 0; } diff --git a/src/pocketmine/block/EndRod.php b/src/pocketmine/block/EndRod.php index 7da132665..3f0a92542 100644 --- a/src/pocketmine/block/EndRod.php +++ b/src/pocketmine/block/EndRod.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -41,10 +41,12 @@ class EndRod extends Flowable{ } protected function writeStateToMeta() : int{ - if(Facing::axis($this->facing) === Facing::AXIS_Y){ - return $this->facing; + $result = BlockDataSerializer::writeFacing($this->facing); + if(Facing::axis($this->facing) !== Facing::AXIS_Y){ + $result ^= 1; //TODO: in PC this is always the same as facing, just PE is stupid } - return $this->facing ^ 1; //TODO: in PC this is always the same as facing, just PE is stupid + + return $result; } public function readStateFromData(int $id, int $stateMeta) : void{ @@ -52,7 +54,7 @@ class EndRod extends Flowable{ $stateMeta ^= 1; } - $this->facing = BlockDataValidator::readFacing($stateMeta); + $this->facing = BlockDataSerializer::readFacing($stateMeta); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/EnderChest.php b/src/pocketmine/block/EnderChest.php index 1c01cf398..1144a025e 100644 --- a/src/pocketmine/block/EnderChest.php +++ b/src/pocketmine/block/EnderChest.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\EnderChest as TileEnderChest; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\item\ToolTier; use pocketmine\math\AxisAlignedBB; @@ -43,11 +43,11 @@ class EnderChest extends Transparent{ } protected function writeStateToMeta() : int{ - return $this->facing; + return BlockDataSerializer::writeHorizontalFacing($this->facing); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readHorizontalFacing($stateMeta); + $this->facing = BlockDataSerializer::readHorizontalFacing($stateMeta); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/Farmland.php b/src/pocketmine/block/Farmland.php index 67dafa0ef..96ae4c970 100644 --- a/src/pocketmine/block/Farmland.php +++ b/src/pocketmine/block/Farmland.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -42,7 +42,7 @@ class Farmland extends Transparent{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->wetness = BlockDataValidator::readBoundedInt("wetness", $stateMeta, 0, 7); + $this->wetness = BlockDataSerializer::readBoundedInt("wetness", $stateMeta, 0, 7); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/FenceGate.php b/src/pocketmine/block/FenceGate.php index 3146a9470..0991a977c 100644 --- a/src/pocketmine/block/FenceGate.php +++ b/src/pocketmine/block/FenceGate.php @@ -23,10 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; -use pocketmine\math\Bearing; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -46,13 +45,13 @@ class FenceGate extends Transparent{ } protected function writeStateToMeta() : int{ - return Bearing::fromFacing($this->facing) | + return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing) | ($this->open ? BlockLegacyMetadata::FENCE_GATE_FLAG_OPEN : 0) | ($this->inWall ? BlockLegacyMetadata::FENCE_GATE_FLAG_IN_WALL : 0); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readLegacyHorizontalFacing($stateMeta & 0x03); + $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); $this->open = ($stateMeta & BlockLegacyMetadata::FENCE_GATE_FLAG_OPEN) !== 0; $this->inWall = ($stateMeta & BlockLegacyMetadata::FENCE_GATE_FLAG_IN_WALL) !== 0; } diff --git a/src/pocketmine/block/Fire.php b/src/pocketmine/block/Fire.php index 24fd42fe8..2d499f103 100644 --- a/src/pocketmine/block/Fire.php +++ b/src/pocketmine/block/Fire.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\entity\Entity; use pocketmine\entity\projectile\Arrow; use pocketmine\event\block\BlockBurnEvent; @@ -49,7 +49,7 @@ class Fire extends Flowable{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->age = BlockDataValidator::readBoundedInt("age", $stateMeta, 0, 15); + $this->age = BlockDataSerializer::readBoundedInt("age", $stateMeta, 0, 15); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/FrostedIce.php b/src/pocketmine/block/FrostedIce.php index e3220ea9d..32c46a611 100644 --- a/src/pocketmine/block/FrostedIce.php +++ b/src/pocketmine/block/FrostedIce.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use function max; use function mt_rand; @@ -37,7 +37,7 @@ class FrostedIce extends Ice{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->age = BlockDataValidator::readBoundedInt("age", $stateMeta, 0, 3); + $this->age = BlockDataSerializer::readBoundedInt("age", $stateMeta, 0, 3); } protected function writeStateToMeta() : int{ diff --git a/src/pocketmine/block/Furnace.php b/src/pocketmine/block/Furnace.php index 1d3af756e..f04756d79 100644 --- a/src/pocketmine/block/Furnace.php +++ b/src/pocketmine/block/Furnace.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Furnace as TileFurnace; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\item\ToolTier; use pocketmine\math\Facing; @@ -50,11 +50,11 @@ class Furnace extends Opaque{ } protected function writeStateToMeta() : int{ - return $this->facing; + return BlockDataSerializer::writeHorizontalFacing($this->facing); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readHorizontalFacing($stateMeta); + $this->facing = BlockDataSerializer::readHorizontalFacing($stateMeta); $this->lit = $id === $this->idInfo->getSecondId(); } diff --git a/src/pocketmine/block/GlazedTerracotta.php b/src/pocketmine/block/GlazedTerracotta.php index 9efb9c347..b4d6baebb 100644 --- a/src/pocketmine/block/GlazedTerracotta.php +++ b/src/pocketmine/block/GlazedTerracotta.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\item\ToolTier; use pocketmine\math\Facing; @@ -42,11 +42,11 @@ class GlazedTerracotta extends Opaque{ } protected function writeStateToMeta() : int{ - return $this->facing; + return BlockDataSerializer::writeHorizontalFacing($this->facing); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readHorizontalFacing($stateMeta); + $this->facing = BlockDataSerializer::readHorizontalFacing($stateMeta); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/Hopper.php b/src/pocketmine/block/Hopper.php index 9318dc39a..26b8e6e12 100644 --- a/src/pocketmine/block/Hopper.php +++ b/src/pocketmine/block/Hopper.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Hopper as TileHopper; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; @@ -41,7 +41,7 @@ class Hopper extends Transparent{ private $powered = false; public function readStateFromData(int $id, int $stateMeta) : void{ - $facing = BlockDataValidator::readFacing($stateMeta & 0x07); + $facing = BlockDataSerializer::readFacing($stateMeta & 0x07); if($facing === Facing::UP){ throw new InvalidBlockStateException("Hopper may not face upward"); } @@ -50,7 +50,7 @@ class Hopper extends Transparent{ } protected function writeStateToMeta() : int{ - return $this->facing | ($this->powered ? BlockLegacyMetadata::HOPPER_FLAG_POWERED : 0); + return BlockDataSerializer::writeFacing($this->facing) | ($this->powered ? BlockLegacyMetadata::HOPPER_FLAG_POWERED : 0); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/ItemFrame.php b/src/pocketmine/block/ItemFrame.php index 0eaf1f317..e082668a6 100644 --- a/src/pocketmine/block/ItemFrame.php +++ b/src/pocketmine/block/ItemFrame.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\ItemFrame as TileItemFrame; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -51,11 +51,11 @@ class ItemFrame extends Flowable{ } protected function writeStateToMeta() : int{ - return (5 - $this->facing) | ($this->hasMap ? BlockLegacyMetadata::ITEM_FRAME_FLAG_HAS_MAP : 0); + return BlockDataSerializer::write5MinusHorizontalFacing($this->facing) | ($this->hasMap ? BlockLegacyMetadata::ITEM_FRAME_FLAG_HAS_MAP : 0); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::read5MinusHorizontalFacing($stateMeta); + $this->facing = BlockDataSerializer::read5MinusHorizontalFacing($stateMeta); $this->hasMap = ($stateMeta & BlockLegacyMetadata::ITEM_FRAME_FLAG_HAS_MAP) !== 0; } diff --git a/src/pocketmine/block/Ladder.php b/src/pocketmine/block/Ladder.php index 632e71264..9acba0e25 100644 --- a/src/pocketmine/block/Ladder.php +++ b/src/pocketmine/block/Ladder.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\entity\Entity; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; @@ -42,11 +42,11 @@ class Ladder extends Transparent{ } protected function writeStateToMeta() : int{ - return $this->facing; + return BlockDataSerializer::writeHorizontalFacing($this->facing); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readHorizontalFacing($stateMeta); + $this->facing = BlockDataSerializer::readHorizontalFacing($stateMeta); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/Lever.php b/src/pocketmine/block/Lever.php index 6315df724..6053f80b3 100644 --- a/src/pocketmine/block/Lever.php +++ b/src/pocketmine/block/Lever.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -54,7 +54,7 @@ class Lever extends Flowable{ }elseif($this->position === self::TOP){ $rotationMeta = Facing::axis($this->facing) === Facing::AXIS_Z ? 5 : 6; }else{ - $rotationMeta = 6 - $this->facing; + $rotationMeta = 6 - BlockDataSerializer::writeHorizontalFacing($this->facing); } return $rotationMeta | ($this->powered ? BlockLegacyMetadata::LEVER_FLAG_POWERED : 0); } @@ -69,7 +69,7 @@ class Lever extends Flowable{ $this->facing = $rotationMeta === 7 ? Facing::SOUTH : Facing::EAST; }else{ $this->position = self::SIDE; - $this->facing = BlockDataValidator::readHorizontalFacing(6 - $rotationMeta); + $this->facing = BlockDataSerializer::readHorizontalFacing(6 - $rotationMeta); } $this->powered = ($stateMeta & BlockLegacyMetadata::LEVER_FLAG_POWERED) !== 0; diff --git a/src/pocketmine/block/Liquid.php b/src/pocketmine/block/Liquid.php index c5005148c..857a1cfc5 100644 --- a/src/pocketmine/block/Liquid.php +++ b/src/pocketmine/block/Liquid.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\entity\Entity; use pocketmine\event\block\BlockFormEvent; use pocketmine\event\block\BlockSpreadEvent; @@ -74,7 +74,7 @@ abstract class Liquid extends Transparent{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->decay = BlockDataValidator::readBoundedInt("decay", $stateMeta & 0x07, 0, 7); + $this->decay = BlockDataSerializer::readBoundedInt("decay", $stateMeta & 0x07, 0, 7); $this->falling = ($stateMeta & BlockLegacyMetadata::LIQUID_FLAG_FALLING) !== 0; $this->still = $id === $this->idInfo->getSecondId(); } diff --git a/src/pocketmine/block/NetherReactor.php b/src/pocketmine/block/NetherReactor.php index 90045427d..632ac3933 100644 --- a/src/pocketmine/block/NetherReactor.php +++ b/src/pocketmine/block/NetherReactor.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\item\ToolTier; use pocketmine\item\VanillaItems; @@ -42,7 +42,7 @@ class NetherReactor extends Opaque{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->state = BlockDataValidator::readBoundedInt("state", $stateMeta, 0, 2); + $this->state = BlockDataSerializer::readBoundedInt("state", $stateMeta, 0, 2); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/NetherWartPlant.php b/src/pocketmine/block/NetherWartPlant.php index 6e47e7738..a678f5c01 100644 --- a/src/pocketmine/block/NetherWartPlant.php +++ b/src/pocketmine/block/NetherWartPlant.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Item; use pocketmine\math\Facing; @@ -47,7 +47,7 @@ class NetherWartPlant extends Flowable{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->age = BlockDataValidator::readBoundedInt("age", $stateMeta, 0, 3); + $this->age = BlockDataSerializer::readBoundedInt("age", $stateMeta, 0, 3); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/RedstoneComparator.php b/src/pocketmine/block/RedstoneComparator.php index 937f153ae..521a342cd 100644 --- a/src/pocketmine/block/RedstoneComparator.php +++ b/src/pocketmine/block/RedstoneComparator.php @@ -24,10 +24,9 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Comparator; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; -use pocketmine\math\Bearing; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -56,13 +55,13 @@ class RedstoneComparator extends Flowable{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readLegacyHorizontalFacing($stateMeta & 0x03); + $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); $this->isSubtractMode = ($stateMeta & BlockLegacyMetadata::REDSTONE_COMPARATOR_FLAG_SUBTRACT) !== 0; $this->powered = ($id === $this->idInfo->getSecondId() or ($stateMeta & BlockLegacyMetadata::REDSTONE_COMPARATOR_FLAG_POWERED) !== 0); } public function writeStateToMeta() : int{ - return Bearing::fromFacing($this->facing) | + return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing) | ($this->isSubtractMode ? BlockLegacyMetadata::REDSTONE_COMPARATOR_FLAG_SUBTRACT : 0) | ($this->powered ? BlockLegacyMetadata::REDSTONE_COMPARATOR_FLAG_POWERED : 0); } diff --git a/src/pocketmine/block/RedstoneRepeater.php b/src/pocketmine/block/RedstoneRepeater.php index f1f3ab18f..e57ead9af 100644 --- a/src/pocketmine/block/RedstoneRepeater.php +++ b/src/pocketmine/block/RedstoneRepeater.php @@ -23,10 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; -use pocketmine\math\Bearing; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -52,13 +51,13 @@ class RedstoneRepeater extends Flowable{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readLegacyHorizontalFacing($stateMeta & 0x03); - $this->delay = BlockDataValidator::readBoundedInt("delay", ($stateMeta >> 2) + 1, 1, 4); + $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); + $this->delay = BlockDataSerializer::readBoundedInt("delay", ($stateMeta >> 2) + 1, 1, 4); $this->powered = $id === $this->idInfo->getSecondId(); } public function writeStateToMeta() : int{ - return Bearing::fromFacing($this->facing) | (($this->delay - 1) << 2); + return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing) | (($this->delay - 1) << 2); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/RedstoneWire.php b/src/pocketmine/block/RedstoneWire.php index a665db097..a59fe563b 100644 --- a/src/pocketmine/block/RedstoneWire.php +++ b/src/pocketmine/block/RedstoneWire.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; class RedstoneWire extends Flowable{ @@ -35,7 +35,7 @@ class RedstoneWire extends Flowable{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->power = BlockDataValidator::readBoundedInt("power", $stateMeta, 0, 15); + $this->power = BlockDataSerializer::readBoundedInt("power", $stateMeta, 0, 15); } protected function writeStateToMeta() : int{ diff --git a/src/pocketmine/block/Sign.php b/src/pocketmine/block/Sign.php index 21639cea6..34dc1f75d 100644 --- a/src/pocketmine/block/Sign.php +++ b/src/pocketmine/block/Sign.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Sign as TileSign; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\SignText; use pocketmine\event\block\SignChangeEvent; use pocketmine\item\Item; @@ -71,12 +71,12 @@ class Sign extends Transparent{ if($this->facing === Facing::UP){ return $this->rotation; } - return $this->facing; + return BlockDataSerializer::writeHorizontalFacing($this->facing); } public function readStateFromData(int $id, int $stateMeta) : void{ if($id === $this->idInfo->getSecondId()){ - $this->facing = BlockDataValidator::readHorizontalFacing($stateMeta); + $this->facing = BlockDataSerializer::readHorizontalFacing($stateMeta); }else{ $this->facing = Facing::UP; $this->rotation = $stateMeta; diff --git a/src/pocketmine/block/Skull.php b/src/pocketmine/block/Skull.php index f0796b583..8bf7e454a 100644 --- a/src/pocketmine/block/Skull.php +++ b/src/pocketmine/block/Skull.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Skull as TileSkull; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\SkullType; use pocketmine\item\Item; use pocketmine\item\ItemFactory; @@ -54,11 +54,11 @@ class Skull extends Flowable{ } protected function writeStateToMeta() : int{ - return $this->facing; + return $this->facing === Facing::UP ? 1 : BlockDataSerializer::writeHorizontalFacing($this->facing); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = $stateMeta === 1 ? Facing::UP : BlockDataValidator::readHorizontalFacing($stateMeta); + $this->facing = $stateMeta === 1 ? Facing::UP : BlockDataSerializer::readHorizontalFacing($stateMeta); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/SnowLayer.php b/src/pocketmine/block/SnowLayer.php index 8c917d86c..cbf0e583c 100644 --- a/src/pocketmine/block/SnowLayer.php +++ b/src/pocketmine/block/SnowLayer.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\Fallable; use pocketmine\block\utils\FallableTrait; use pocketmine\item\Item; @@ -52,7 +52,7 @@ class SnowLayer extends Flowable implements Fallable{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->layers = BlockDataValidator::readBoundedInt("layers", $stateMeta + 1, 1, 8); + $this->layers = BlockDataSerializer::readBoundedInt("layers", $stateMeta + 1, 1, 8); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/Stair.php b/src/pocketmine/block/Stair.php index 7b84afbc6..efd6b8a3b 100644 --- a/src/pocketmine/block/Stair.php +++ b/src/pocketmine/block/Stair.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\StairShape; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; @@ -48,11 +48,11 @@ class Stair extends Transparent{ } protected function writeStateToMeta() : int{ - return (5 - $this->facing) | ($this->upsideDown ? BlockLegacyMetadata::STAIR_FLAG_UPSIDE_DOWN : 0); + return BlockDataSerializer::write5MinusHorizontalFacing($this->facing) | ($this->upsideDown ? BlockLegacyMetadata::STAIR_FLAG_UPSIDE_DOWN : 0); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::read5MinusHorizontalFacing($stateMeta); + $this->facing = BlockDataSerializer::read5MinusHorizontalFacing($stateMeta); $this->upsideDown = ($stateMeta & BlockLegacyMetadata::STAIR_FLAG_UPSIDE_DOWN) !== 0; } diff --git a/src/pocketmine/block/Sugarcane.php b/src/pocketmine/block/Sugarcane.php index ef3009365..ecdbdb3e9 100644 --- a/src/pocketmine/block/Sugarcane.php +++ b/src/pocketmine/block/Sugarcane.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; @@ -46,7 +46,7 @@ class Sugarcane extends Flowable{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->age = BlockDataValidator::readBoundedInt("age", $stateMeta, 0, 15); + $this->age = BlockDataSerializer::readBoundedInt("age", $stateMeta, 0, 15); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/Torch.php b/src/pocketmine/block/Torch.php index 1af73c2af..bbbd5b4dd 100644 --- a/src/pocketmine/block/Torch.php +++ b/src/pocketmine/block/Torch.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -40,11 +40,11 @@ class Torch extends Flowable{ } protected function writeStateToMeta() : int{ - return 6 - $this->facing; + return $this->facing === Facing::UP ? 5 : 6 - BlockDataSerializer::writeHorizontalFacing($this->facing); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = $stateMeta === 5 ? Facing::UP : BlockDataValidator::readHorizontalFacing(6 - $stateMeta); + $this->facing = $stateMeta === 5 ? Facing::UP : BlockDataSerializer::readHorizontalFacing(6 - $stateMeta); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/Trapdoor.php b/src/pocketmine/block/Trapdoor.php index 4fc3cbe99..b465f6c72 100644 --- a/src/pocketmine/block/Trapdoor.php +++ b/src/pocketmine/block/Trapdoor.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -42,13 +42,13 @@ class Trapdoor extends Transparent{ protected $top = false; protected function writeStateToMeta() : int{ - return (5 - $this->facing) | ($this->top ? BlockLegacyMetadata::TRAPDOOR_FLAG_UPPER : 0) | ($this->open ? BlockLegacyMetadata::TRAPDOOR_FLAG_OPEN : 0); + return BlockDataSerializer::write5MinusHorizontalFacing($this->facing) | ($this->top ? BlockLegacyMetadata::TRAPDOOR_FLAG_UPPER : 0) | ($this->open ? BlockLegacyMetadata::TRAPDOOR_FLAG_OPEN : 0); } public function readStateFromData(int $id, int $stateMeta) : void{ //TODO: in PC the values are reversed (facing - 2) - $this->facing = BlockDataValidator::read5MinusHorizontalFacing($stateMeta); + $this->facing = BlockDataSerializer::read5MinusHorizontalFacing($stateMeta); $this->top = ($stateMeta & BlockLegacyMetadata::TRAPDOOR_FLAG_UPPER) !== 0; $this->open = ($stateMeta & BlockLegacyMetadata::TRAPDOOR_FLAG_OPEN) !== 0; } diff --git a/src/pocketmine/block/TripwireHook.php b/src/pocketmine/block/TripwireHook.php index 1cd9be24b..69eb116b2 100644 --- a/src/pocketmine/block/TripwireHook.php +++ b/src/pocketmine/block/TripwireHook.php @@ -23,9 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; -use pocketmine\math\Bearing; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -45,13 +44,13 @@ class TripwireHook extends Flowable{ } protected function writeStateToMeta() : int{ - return Bearing::fromFacing($this->facing) | + return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing) | ($this->connected ? BlockLegacyMetadata::TRIPWIRE_HOOK_FLAG_CONNECTED : 0) | ($this->powered ? BlockLegacyMetadata::TRIPWIRE_HOOK_FLAG_POWERED : 0); } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataValidator::readLegacyHorizontalFacing($stateMeta & 0x03); + $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); $this->connected = ($stateMeta & BlockLegacyMetadata::TRIPWIRE_HOOK_FLAG_CONNECTED) !== 0; $this->powered = ($stateMeta & BlockLegacyMetadata::TRIPWIRE_HOOK_FLAG_POWERED) !== 0; } diff --git a/src/pocketmine/block/WeightedPressurePlate.php b/src/pocketmine/block/WeightedPressurePlate.php index fb3c00051..a959bf9ad 100644 --- a/src/pocketmine/block/WeightedPressurePlate.php +++ b/src/pocketmine/block/WeightedPressurePlate.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataValidator; +use pocketmine\block\utils\BlockDataSerializer; abstract class WeightedPressurePlate extends PressurePlate{ @@ -35,7 +35,7 @@ abstract class WeightedPressurePlate extends PressurePlate{ } public function readStateFromData(int $id, int $stateMeta) : void{ - $this->power = BlockDataValidator::readBoundedInt("power", $stateMeta, 0, 15); + $this->power = BlockDataSerializer::readBoundedInt("power", $stateMeta, 0, 15); } public function getStateBitmask() : int{ diff --git a/src/pocketmine/block/utils/BlockDataValidator.php b/src/pocketmine/block/utils/BlockDataSerializer.php similarity index 51% rename from src/pocketmine/block/utils/BlockDataValidator.php rename to src/pocketmine/block/utils/BlockDataSerializer.php index 476de738b..db0ae9ead 100644 --- a/src/pocketmine/block/utils/BlockDataValidator.php +++ b/src/pocketmine/block/utils/BlockDataSerializer.php @@ -23,28 +23,48 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\math\Bearing; use pocketmine\math\Facing; -final class BlockDataValidator{ +final class BlockDataSerializer{ private function __construct(){ } /** - * @param int $facing + * @param int $raw * * @return int * @throws InvalidBlockStateException */ - public static function readFacing(int $facing) : int{ - try{ - Facing::validate($facing); - }catch(\InvalidArgumentException $e){ - throw new InvalidBlockStateException("Invalid facing $facing", 0, $e); + public static function readFacing(int $raw) : int{ + static $map = [ //this is for redundancy, for when/if the FACING constant values change + 0 => Facing::DOWN, + 1 => Facing::UP, + 2 => Facing::NORTH, + 3 => Facing::SOUTH, + 4 => Facing::WEST, + 5 => Facing::EAST + ]; + if(!isset($map[$raw])){ + throw new InvalidBlockStateException("Invalid facing $raw"); } - return $facing; + return $map[$raw]; + } + + public static function writeFacing(int $facing) : int{ + static $map = [ //again, for redundancy + Facing::DOWN => 0, + Facing::UP => 1, + Facing::NORTH => 2, + Facing::SOUTH => 3, + Facing::WEST => 4, + Facing::EAST => 5 + ]; + if(!isset($map[$facing])){ + throw new \InvalidArgumentException("Invalid facing $facing"); + } + return $map[$facing]; } /** @@ -61,19 +81,43 @@ final class BlockDataValidator{ return $facing; } + public static function writeHorizontalFacing(int $facing) : int{ + if(Facing::axis($facing) === Facing::AXIS_Y){ + throw new \InvalidArgumentException("Invalid Y-axis facing"); + } + return self::writeFacing($facing); + } + /** - * @param int $facing + * @param int $raw * * @return int * @throws InvalidBlockStateException */ - public static function readLegacyHorizontalFacing(int $facing) : int{ - try{ - $facing = Bearing::toFacing($facing); - }catch(\InvalidArgumentException $e){ - throw new InvalidBlockStateException("Invalid legacy facing $facing"); + public static function readLegacyHorizontalFacing(int $raw) : int{ + static $map = [ //again, for redundancy + 0 => Facing::SOUTH, + 1 => Facing::WEST, + 2 => Facing::NORTH, + 3 => Facing::EAST + ]; + if(!isset($map[$raw])){ + throw new InvalidBlockStateException("Invalid legacy facing $raw"); } - return self::readHorizontalFacing($facing); + return $map[$raw]; + } + + public static function writeLegacyHorizontalFacing(int $facing) : int{ + static $map = [ + Facing::SOUTH => 0, + Facing::WEST => 1, + Facing::NORTH => 2, + Facing::EAST => 3 + ]; + if(!isset($map[$facing])){ + throw new \InvalidArgumentException("Invalid Y-axis facing"); + } + return $map[$facing]; } /** @@ -86,6 +130,10 @@ final class BlockDataValidator{ return self::readHorizontalFacing(5 - ($value & 0x03)); } + public static function write5MinusHorizontalFacing(int $value) : int{ + return 5 - self::writeHorizontalFacing($value); + } + 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");