diff --git a/src/pocketmine/block/IronTrapdoor.php b/src/pocketmine/block/IronTrapdoor.php index c2844d51b..abd90c5fa 100644 --- a/src/pocketmine/block/IronTrapdoor.php +++ b/src/pocketmine/block/IronTrapdoor.php @@ -21,20 +21,12 @@ namespace pocketmine\block; -use pocketmine\item\Item; use pocketmine\item\Tool; -use pocketmine\math\AxisAlignedBB; -use pocketmine\level\sound\DoorSound; -use pocketmine\Player; -class IronTrapdoor extends Transparent{ +class IronTrapdoor extends Trapdoor{ protected $id = self::IRON_TRAPDOOR; - public function __construct($meta = 0){ - $this->meta = $meta; - } - public function getName(){ return "Iron Trapdoor"; } @@ -43,114 +35,6 @@ class IronTrapdoor extends Transparent{ return 5; } - public function canBeActivated(){ - return true; - } - - protected function recalculateBoundingBox(){ - - $damage = $this->getDamage(); - - $f = 0.1875; - - if(($damage & 0x08) > 0){ - $bb = new AxisAlignedBB( - $this->x, - $this->y + 1 - $f, - $this->z, - $this->x + 1, - $this->y + 1, - $this->z + 1 - ); - }else{ - $bb = new AxisAlignedBB( - $this->x, - $this->y, - $this->z, - $this->x + 1, - $this->y + $f, - $this->z + 1 - ); - } - - if(($damage & 0x04) > 0){ - if(($damage & 0x03) === 0){ - $bb->setBounds( - $this->x, - $this->y, - $this->z + 1 - $f, - $this->x + 1, - $this->y + 1, - $this->z + 1 - ); - }elseif(($damage & 0x03) === 1){ - $bb->setBounds( - $this->x, - $this->y, - $this->z, - $this->x + 1, - $this->y + 1, - $this->z + $f - ); - } - if(($damage & 0x03) === 2){ - $bb->setBounds( - $this->x + 1 - $f, - $this->y, - $this->z, - $this->x + 1, - $this->y + 1, - $this->z + 1 - ); - } - if(($damage & 0x03) === 3){ - $bb->setBounds( - $this->x, - $this->y, - $this->z, - $this->x + $f, - $this->y + 1, - $this->z + 1 - ); - } - } - - return $bb; - } - - public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null){ - if(($target->isTransparent() === false or $target->getId() === self::SLAB) and $face !== 0 and $face !== 1){ - $faces = [ - 2 => 0, - 3 => 1, - 4 => 2, - 5 => 3, - ]; - $this->meta = $faces[$face] & 0x03; - if($fy > 0.5){ - $this->meta |= 0x08; - } - $this->getLevel()->setBlock($block, $this, true, true); - - return true; - } - - return false; - } - - public function getDrops(Item $item){ - return [ - [$this->id, 0, 1], - ]; - } - - public function onActivate(Item $item, Player $player = null){ - $this->meta ^= 0x04; - $this->getLevel()->setBlock($this, $this, true); - $this->level->addSound(new DoorSound($this)); - return true; - } - public function getToolType(){ return Tool::TYPE_PICKAXE; } diff --git a/src/pocketmine/block/Trapdoor.php b/src/pocketmine/block/Trapdoor.php index 370cef37d..fffe8ee84 100644 --- a/src/pocketmine/block/Trapdoor.php +++ b/src/pocketmine/block/Trapdoor.php @@ -28,6 +28,13 @@ use pocketmine\level\sound\DoorSound; use pocketmine\Player; class Trapdoor extends Transparent{ + const MASK_UPPER = 0x04; + const MASK_OPENED = 0x08; + const MASK_SIDE = 0x03; + const MASK_SIDE_SOUTH = 2; + const MASK_SIDE_NORTH = 3; + const MASK_SIDE_EAST = 0; + const MASK_SIDE_WEST = 1; protected $id = self::TRAPDOOR; @@ -53,7 +60,7 @@ class Trapdoor extends Transparent{ $f = 0.1875; - if(($damage & 0x08) > 0){ + if(($damage & self::MASK_UPPER) > 0){ $bb = new AxisAlignedBB( $this->x, $this->y + 1 - $f, @@ -73,8 +80,8 @@ class Trapdoor extends Transparent{ ); } - if(($damage & 0x04) > 0){ - if(($damage & 0x03) === 0){ + if(($damage & self::MASK_OPENED) > 0){ + if(($damage & 0x03) === self::MASK_SIDE_NORTH){ $bb->setBounds( $this->x, $this->y, @@ -83,7 +90,7 @@ class Trapdoor extends Transparent{ $this->y + 1, $this->z + 1 ); - }elseif(($damage & 0x03) === 1){ + }elseif(($damage & 0x03) === self::MASK_SIDE_SOUTH){ $bb->setBounds( $this->x, $this->y, @@ -93,7 +100,7 @@ class Trapdoor extends Transparent{ $this->z + $f ); } - if(($damage & 0x03) === 2){ + if(($damage & 0x03) === self::MASK_SIDE_WEST){ $bb->setBounds( $this->x + 1 - $f, $this->y, @@ -103,7 +110,7 @@ class Trapdoor extends Transparent{ $this->z + 1 ); } - if(($damage & 0x03) === 3){ + if(($damage & 0x03) === self::MASK_SIDE_EAST){ $bb->setBounds( $this->x, $this->y, @@ -121,14 +128,15 @@ class Trapdoor extends Transparent{ public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null){ if(($target->isTransparent() === false or $target->getId() === self::SLAB) and $face !== 0 and $face !== 1){ $faces = [ - 2 => 0, - 3 => 1, - 4 => 2, - 5 => 3, + self::SIDE_SOUTH => self::MASK_SIDE_SOUTH, + self::SIDE_NORTH => self::MASK_SIDE_NORTH, + self::SIDE_EAST => self::MASK_SIDE_EAST, + self::SIDE_WEST => self::MASK_SIDE_WEST, ]; - $this->meta = $faces[$face] & 0x03; + echo $face, PHP_EOL, $faces[$face], PHP_EOL; + $this->meta = $faces[$face] & self::MASK_SIDE; if($fy > 0.5){ - $this->meta |= 0x08; + $this->meta |= self::MASK_UPPER; } $this->getLevel()->setBlock($block, $this, true, true); @@ -145,7 +153,7 @@ class Trapdoor extends Transparent{ } public function onActivate(Item $item, Player $player = null){ - $this->meta ^= 0x04; + $this->meta ^= self::MASK_OPENED; $this->getLevel()->setBlock($this, $this, true); $this->level->addSound(new DoorSound($this)); return true;