22declare(strict_types=1);
26use pocketmine\block\utils\HorizontalFacingTrait;
27use pocketmine\block\utils\SupportType;
38 use HorizontalFacingTrait;
40 protected bool $open =
false;
41 protected bool $top =
false;
44 $w->horizontalFacing($this->facing);
46 $w->bool($this->open);
49 public function isOpen() : bool{ return $this->open; }
52 public function setOpen(
bool $open) : self{
57 public function isTop() : bool{ return $this->top; }
60 public function setTop(
bool $top) : self{
73 return SupportType::NONE;
78 $this->facing = Facing::opposite($player->getHorizontalFacing());
80 if(($clickVector->y > 0.5 && $face !== Facing::UP) || $face === Facing::DOWN){
84 return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player);
88 $this->open = !$this->open;
89 $world = $this->position->getWorld();
90 $world->setBlock($this->position, $this);
91 $world->addSound($this->position,
new DoorSound());
onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player=null, array &$returnedItems=[])
getSupportType(int $facing)
describeBlockOnlyState(RuntimeDataDescriber $w)
recalculateCollisionBoxes()
place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player=null)