Update for pocketmine/math Axis refactor

This commit is contained in:
Dylan K. Taylor 2020-08-06 14:38:31 +01:00
parent 7399e6944e
commit 2b044195a5
17 changed files with 50 additions and 37 deletions

@ -1 +1 @@
Subproject commit 2f422db397509fd9d7161b0c388401ec5be5a46f Subproject commit fadde8d5b2ee97f41f4647ff2c0a97e8aa9d7af0

8
composer.lock generated
View File

@ -552,12 +552,12 @@
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/pmmp/Math.git", "url": "https://github.com/pmmp/Math.git",
"reference": "2a1a1783123c365a755f1f6d1023466d27d52795" "reference": "a7c9da52c7efcd3383073357c10d3a989bfbb3f2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/pmmp/Math/zipball/2a1a1783123c365a755f1f6d1023466d27d52795", "url": "https://api.github.com/repos/pmmp/Math/zipball/a7c9da52c7efcd3383073357c10d3a989bfbb3f2",
"reference": "2a1a1783123c365a755f1f6d1023466d27d52795", "reference": "a7c9da52c7efcd3383073357c10d3a989bfbb3f2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -579,7 +579,7 @@
"LGPL-3.0" "LGPL-3.0"
], ],
"description": "PHP library containing math related code used in PocketMine-MP", "description": "PHP library containing math related code used in PocketMine-MP",
"time": "2020-07-09T19:58:18+00:00" "time": "2020-08-06T13:19:36+00:00"
}, },
{ {
"name": "pocketmine/nbt", "name": "pocketmine/nbt",

View File

@ -33,8 +33,8 @@ use pocketmine\entity\Entity;
use pocketmine\item\enchantment\Enchantment; use pocketmine\item\enchantment\Enchantment;
use pocketmine\item\Item; use pocketmine\item\Item;
use pocketmine\item\ItemFactory; use pocketmine\item\ItemFactory;
use pocketmine\math\Axis;
use pocketmine\math\AxisAlignedBB; use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Facing;
use pocketmine\math\RayTraceResult; use pocketmine\math\RayTraceResult;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\CompoundTag;
@ -485,7 +485,7 @@ class Block{
*/ */
public function getHorizontalSides() : \Generator{ public function getHorizontalSides() : \Generator{
$world = $this->pos->getWorld(); $world = $this->pos->getWorld();
foreach($this->pos->sidesAroundAxis(Facing::AXIS_Y) as $vector3){ foreach($this->pos->sidesAroundAxis(Axis::Y) as $vector3){
yield $world->getBlock($vector3); yield $world->getBlock($vector3);
} }
} }

View File

@ -29,6 +29,7 @@ use pocketmine\block\utils\TreeType;
use pocketmine\item\Fertilizer; use pocketmine\item\Fertilizer;
use pocketmine\item\Item; use pocketmine\item\Item;
use pocketmine\item\VanillaItems; use pocketmine\item\VanillaItems;
use pocketmine\math\Axis;
use pocketmine\math\AxisAlignedBB; use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Facing; use pocketmine\math\Facing;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
@ -74,7 +75,7 @@ class CocoaBlock extends Transparent{
} }
public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{
if(Facing::axis($face) !== Facing::AXIS_Y and $blockClicked instanceof Wood and $blockClicked->getTreeType()->equals(TreeType::JUNGLE())){ if(Facing::axis($face) !== Axis::Y and $blockClicked instanceof Wood and $blockClicked->getTreeType()->equals(TreeType::JUNGLE())){
$this->facing = $face; $this->facing = $face;
return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player);
} }

View File

@ -26,6 +26,7 @@ namespace pocketmine\block;
use pocketmine\block\utils\AnyFacingTrait; use pocketmine\block\utils\AnyFacingTrait;
use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\BlockDataSerializer;
use pocketmine\item\Item; use pocketmine\item\Item;
use pocketmine\math\Axis;
use pocketmine\math\AxisAlignedBB; use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Facing; use pocketmine\math\Facing;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
@ -41,7 +42,7 @@ class EndRod extends Flowable{
protected function writeStateToMeta() : int{ protected function writeStateToMeta() : int{
$result = BlockDataSerializer::writeFacing($this->facing); $result = BlockDataSerializer::writeFacing($this->facing);
if(Facing::axis($this->facing) !== Facing::AXIS_Y){ if(Facing::axis($this->facing) !== Axis::Y){
$result ^= 1; //TODO: in PC this is always the same as facing, just PE is stupid $result ^= 1; //TODO: in PC this is always the same as facing, just PE is stupid
} }
@ -84,7 +85,7 @@ class EndRod extends Flowable{
$myAxis = Facing::axis($this->facing); $myAxis = Facing::axis($this->facing);
$bb = AxisAlignedBB::one(); $bb = AxisAlignedBB::one();
foreach([Facing::AXIS_Y, Facing::AXIS_Z, Facing::AXIS_X] as $axis){ foreach([Axis::Y, Axis::Z, Axis::X] as $axis){
if($axis === $myAxis){ if($axis === $myAxis){
continue; continue;
} }

View File

@ -23,6 +23,7 @@ declare(strict_types=1);
namespace pocketmine\block; namespace pocketmine\block;
use pocketmine\math\Axis;
use pocketmine\math\AxisAlignedBB; use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Facing; use pocketmine\math\Facing;
use function count; use function count;
@ -63,7 +64,7 @@ class Fence extends Transparent{
if($connectWest or $connectEast){ if($connectWest or $connectEast){
//X axis (west/east) //X axis (west/east)
$bbs[] = AxisAlignedBB::one() $bbs[] = AxisAlignedBB::one()
->squash(Facing::AXIS_Z, $inset) ->squash(Axis::Z, $inset)
->extend(Facing::UP, 0.5) ->extend(Facing::UP, 0.5)
->trim(Facing::WEST, $connectWest ? 0 : $inset) ->trim(Facing::WEST, $connectWest ? 0 : $inset)
->trim(Facing::EAST, $connectEast ? 0 : $inset); ->trim(Facing::EAST, $connectEast ? 0 : $inset);
@ -75,7 +76,7 @@ class Fence extends Transparent{
if($connectNorth or $connectSouth){ if($connectNorth or $connectSouth){
//Z axis (north/south) //Z axis (north/south)
$bbs[] = AxisAlignedBB::one() $bbs[] = AxisAlignedBB::one()
->squash(Facing::AXIS_X, $inset) ->squash(Axis::X, $inset)
->extend(Facing::UP, 0.5) ->extend(Facing::UP, 0.5)
->trim(Facing::NORTH, $connectNorth ? 0 : $inset) ->trim(Facing::NORTH, $connectNorth ? 0 : $inset)
->trim(Facing::SOUTH, $connectSouth ? 0 : $inset); ->trim(Facing::SOUTH, $connectSouth ? 0 : $inset);

View File

@ -28,6 +28,7 @@ use pocketmine\block\utils\HorizontalFacingTrait;
use pocketmine\entity\Entity; use pocketmine\entity\Entity;
use pocketmine\entity\Living; use pocketmine\entity\Living;
use pocketmine\item\Item; use pocketmine\item\Item;
use pocketmine\math\Axis;
use pocketmine\math\AxisAlignedBB; use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Facing; use pocketmine\math\Facing;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
@ -80,7 +81,7 @@ class Ladder extends Transparent{
} }
public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{
if(!$blockClicked->isTransparent() and Facing::axis($face) !== Facing::AXIS_Y){ if(!$blockClicked->isTransparent() and Facing::axis($face) !== Axis::Y){
$this->facing = $face; $this->facing = $face;
return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player);
} }

View File

@ -24,6 +24,7 @@ declare(strict_types=1);
namespace pocketmine\block; namespace pocketmine\block;
use pocketmine\item\Item; use pocketmine\item\Item;
use pocketmine\math\Axis;
use pocketmine\math\AxisAlignedBB; use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Facing; use pocketmine\math\Facing;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
@ -59,8 +60,8 @@ class Lantern extends Transparent{
AxisAlignedBB::one() AxisAlignedBB::one()
->trim(Facing::UP, $this->hanging ? 6 / 16 : 8 / 16) ->trim(Facing::UP, $this->hanging ? 6 / 16 : 8 / 16)
->trim(Facing::DOWN, $this->hanging ? 2 / 16 : 0) ->trim(Facing::DOWN, $this->hanging ? 2 / 16 : 0)
->squash(Facing::AXIS_X, 5 / 16) ->squash(Axis::X, 5 / 16)
->squash(Facing::AXIS_Z, 5 / 16) ->squash(Axis::Z, 5 / 16)
]; ];
} }

View File

@ -25,6 +25,7 @@ namespace pocketmine\block;
use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\BlockDataSerializer;
use pocketmine\item\Item; use pocketmine\item\Item;
use pocketmine\math\Axis;
use pocketmine\math\Facing; use pocketmine\math\Facing;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
use pocketmine\player\Player; use pocketmine\player\Player;
@ -50,9 +51,9 @@ class Lever extends Flowable{
protected function writeStateToMeta() : int{ protected function writeStateToMeta() : int{
if($this->leverPos === self::BOTTOM){ if($this->leverPos === self::BOTTOM){
$rotationMeta = Facing::axis($this->facing) === Facing::AXIS_Z ? 7 : 0; $rotationMeta = Facing::axis($this->facing) === Axis::Z ? 7 : 0;
}elseif($this->leverPos === self::TOP){ }elseif($this->leverPos === self::TOP){
$rotationMeta = Facing::axis($this->facing) === Facing::AXIS_Z ? 5 : 6; $rotationMeta = Facing::axis($this->facing) === Axis::Z ? 5 : 6;
}else{ }else{
$rotationMeta = 6 - BlockDataSerializer::writeHorizontalFacing($this->facing); $rotationMeta = 6 - BlockDataSerializer::writeHorizontalFacing($this->facing);
} }
@ -84,7 +85,7 @@ class Lever extends Flowable{
return false; return false;
} }
if(Facing::axis($face) === Facing::AXIS_Y){ if(Facing::axis($face) === Axis::Y){
if($player !== null){ if($player !== null){
$this->facing = Facing::opposite($player->getHorizontalFacing()); $this->facing = Facing::opposite($player->getHorizontalFacing());
} }

View File

@ -25,23 +25,23 @@ namespace pocketmine\block;
use pocketmine\entity\Entity; use pocketmine\entity\Entity;
use pocketmine\item\Item; use pocketmine\item\Item;
use pocketmine\math\Axis;
use pocketmine\math\AxisAlignedBB; use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Facing;
class NetherPortal extends Transparent{ class NetherPortal extends Transparent{
/** @var int */ /** @var int */
protected $axis = Facing::AXIS_X; protected $axis = Axis::X;
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){ public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? BlockBreakInfo::indestructible(0.0)); parent::__construct($idInfo, $name, $breakInfo ?? BlockBreakInfo::indestructible(0.0));
} }
public function readStateFromData(int $id, int $stateMeta) : void{ public function readStateFromData(int $id, int $stateMeta) : void{
$this->axis = $stateMeta === BlockLegacyMetadata::NETHER_PORTAL_AXIS_Z ? Facing::AXIS_Z : Facing::AXIS_X; //mojang u dumb $this->axis = $stateMeta === BlockLegacyMetadata::NETHER_PORTAL_AXIS_Z ? Axis::Z : Axis::X; //mojang u dumb
} }
protected function writeStateToMeta() : int{ protected function writeStateToMeta() : int{
return $this->axis === Facing::AXIS_Z ? BlockLegacyMetadata::NETHER_PORTAL_AXIS_Z : BlockLegacyMetadata::NETHER_PORTAL_AXIS_X; return $this->axis === Axis::Z ? BlockLegacyMetadata::NETHER_PORTAL_AXIS_Z : BlockLegacyMetadata::NETHER_PORTAL_AXIS_X;
} }
public function getStateBitmask() : int{ public function getStateBitmask() : int{
@ -57,7 +57,7 @@ class NetherPortal extends Transparent{
* @return $this * @return $this
*/ */
public function setAxis(int $axis) : self{ public function setAxis(int $axis) : self{
if($axis !== Facing::AXIS_X and $axis !== Facing::AXIS_Z){ if($axis !== Axis::X and $axis !== Axis::Z){
throw new \InvalidArgumentException("Invalid axis"); throw new \InvalidArgumentException("Invalid axis");
} }
$this->axis = $axis; $this->axis = $axis;

View File

@ -23,6 +23,7 @@ declare(strict_types=1);
namespace pocketmine\block; namespace pocketmine\block;
use pocketmine\math\Axis;
use pocketmine\math\AxisAlignedBB; use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Facing; use pocketmine\math\Facing;
use function count; use function count;
@ -51,7 +52,7 @@ class Thin extends Transparent{
$bbs = []; $bbs = [];
if(isset($this->connections[Facing::WEST]) or isset($this->connections[Facing::EAST])){ if(isset($this->connections[Facing::WEST]) or isset($this->connections[Facing::EAST])){
$bb = AxisAlignedBB::one()->squash(Facing::AXIS_Z, $inset); $bb = AxisAlignedBB::one()->squash(Axis::Z, $inset);
if(!isset($this->connections[Facing::WEST])){ if(!isset($this->connections[Facing::WEST])){
$bb->trim(Facing::WEST, $inset); $bb->trim(Facing::WEST, $inset);
@ -62,7 +63,7 @@ class Thin extends Transparent{
} }
if(isset($this->connections[Facing::NORTH]) or isset($this->connections[Facing::SOUTH])){ if(isset($this->connections[Facing::NORTH]) or isset($this->connections[Facing::SOUTH])){
$bb = AxisAlignedBB::one()->squash(Facing::AXIS_X, $inset); $bb = AxisAlignedBB::one()->squash(Axis::X, $inset);
if(!isset($this->connections[Facing::NORTH])){ if(!isset($this->connections[Facing::NORTH])){
$bb->trim(Facing::NORTH, $inset); $bb->trim(Facing::NORTH, $inset);

View File

@ -26,6 +26,7 @@ namespace pocketmine\block;
use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\BlockDataSerializer;
use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\HorizontalFacingTrait;
use pocketmine\item\Item; use pocketmine\item\Item;
use pocketmine\math\Axis;
use pocketmine\math\Facing; use pocketmine\math\Facing;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
use pocketmine\player\Player; use pocketmine\player\Player;
@ -60,7 +61,7 @@ class TripwireHook extends Flowable{
} }
public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{
if(Facing::axis($face) !== Facing::AXIS_Y){ if(Facing::axis($face) !== Axis::Y){
//TODO: check face is valid //TODO: check face is valid
$this->facing = $face; $this->facing = $face;
return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player);

View File

@ -25,6 +25,7 @@ namespace pocketmine\block;
use pocketmine\entity\Entity; use pocketmine\entity\Entity;
use pocketmine\item\Item; use pocketmine\item\Item;
use pocketmine\math\Axis;
use pocketmine\math\Facing; use pocketmine\math\Facing;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
use pocketmine\player\Player; use pocketmine\player\Player;
@ -89,7 +90,7 @@ class Vine extends Flowable{
} }
public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{
if(!$blockClicked->isSolid() or Facing::axis($face) === Facing::AXIS_Y){ if(!$blockClicked->isSolid() or Facing::axis($face) === Axis::Y){
return false; return false;
} }

View File

@ -24,6 +24,7 @@ declare(strict_types=1);
namespace pocketmine\block; namespace pocketmine\block;
use pocketmine\item\ToolTier; use pocketmine\item\ToolTier;
use pocketmine\math\Axis;
use pocketmine\math\AxisAlignedBB; use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Facing; use pocketmine\math\Facing;

View File

@ -23,6 +23,7 @@ declare(strict_types=1);
namespace pocketmine\block\utils; namespace pocketmine\block\utils;
use pocketmine\math\Axis;
use pocketmine\math\Facing; use pocketmine\math\Facing;
final class BlockDataSerializer{ final class BlockDataSerializer{
@ -69,14 +70,14 @@ final class BlockDataSerializer{
*/ */
public static function readHorizontalFacing(int $facing) : int{ public static function readHorizontalFacing(int $facing) : int{
$facing = self::readFacing($facing); $facing = self::readFacing($facing);
if(Facing::axis($facing) === Facing::AXIS_Y){ if(Facing::axis($facing) === Axis::Y){
throw new InvalidBlockStateException("Invalid Y-axis facing $facing"); throw new InvalidBlockStateException("Invalid Y-axis facing $facing");
} }
return $facing; return $facing;
} }
public static function writeHorizontalFacing(int $facing) : int{ public static function writeHorizontalFacing(int $facing) : int{
if(Facing::axis($facing) === Facing::AXIS_Y){ if(Facing::axis($facing) === Axis::Y){
throw new \InvalidArgumentException("Invalid Y-axis facing"); throw new \InvalidArgumentException("Invalid Y-axis facing");
} }
return self::writeFacing($facing); return self::writeFacing($facing);

View File

@ -25,6 +25,7 @@ namespace pocketmine\block\utils;
use pocketmine\block\Block; use pocketmine\block\Block;
use pocketmine\item\Item; use pocketmine\item\Item;
use pocketmine\math\Axis;
use pocketmine\math\Facing; use pocketmine\math\Facing;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
use pocketmine\player\Player; use pocketmine\player\Player;
@ -33,7 +34,7 @@ use pocketmine\world\BlockTransaction;
trait PillarRotationTrait{ trait PillarRotationTrait{
/** @var int */ /** @var int */
protected $axis = Facing::AXIS_Y; protected $axis = Axis::Y;
protected function getAxisMetaShift() : int{ protected function getAxisMetaShift() : int{
return 2; //default return 2; //default
@ -62,9 +63,9 @@ trait PillarRotationTrait{
protected function readAxisFromMeta(int $meta) : void{ protected function readAxisFromMeta(int $meta) : void{
static $map = [ static $map = [
0 => Facing::AXIS_Y, 0 => Axis::Y,
1 => Facing::AXIS_X, 1 => Axis::X,
2 => Facing::AXIS_Z 2 => Axis::Z
]; ];
$axis = $meta >> $this->getAxisMetaShift(); $axis = $meta >> $this->getAxisMetaShift();
if(!isset($map[$axis])){ if(!isset($map[$axis])){
@ -75,9 +76,9 @@ trait PillarRotationTrait{
protected function writeAxisToMeta() : int{ protected function writeAxisToMeta() : int{
static $bits = [ static $bits = [
Facing::AXIS_Y => 0, Axis::Y => 0,
Facing::AXIS_Z => 2, Axis::Z => 2,
Facing::AXIS_X => 1 Axis::X => 1
]; ];
return $bits[$this->axis] << $this->getAxisMetaShift(); return $bits[$this->axis] << $this->getAxisMetaShift();
} }

View File

@ -27,6 +27,7 @@ use pocketmine\block\Block;
use pocketmine\entity\Location; use pocketmine\entity\Location;
use pocketmine\entity\object\Painting; use pocketmine\entity\object\Painting;
use pocketmine\entity\object\PaintingMotive; use pocketmine\entity\object\PaintingMotive;
use pocketmine\math\Axis;
use pocketmine\math\Facing; use pocketmine\math\Facing;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
use pocketmine\player\Player; use pocketmine\player\Player;
@ -37,7 +38,7 @@ use function count;
class PaintingItem extends Item{ class PaintingItem extends Item{
public function onActivate(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector) : ItemUseResult{ public function onActivate(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector) : ItemUseResult{
if(Facing::axis($face) === Facing::AXIS_Y){ if(Facing::axis($face) === Axis::Y){
return ItemUseResult::NONE(); return ItemUseResult::NONE();
} }