22declare(strict_types=1);
28use pocketmine\block\utils\AnyFacingTrait;
29use pocketmine\block\utils\SupportType;
45 $shulker = $this->position->getWorld()->getTile($this->position);
46 if($shulker instanceof TileShulkerBox){
47 $shulker->setFacing($this->facing);
52 parent::readStateFromWorld();
53 $shulker = $this->position->getWorld()->getTile($this->position);
54 if($shulker instanceof TileShulkerBox){
55 $this->facing = $shulker->getFacing();
66 $this->facing = $face;
68 return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player);
71 private function addDataFromTile(TileShulkerBox $tile,
Item $item) : void{
72 $shulkerNBT = $tile->getCleanedNBT();
73 if($shulkerNBT !==
null){
77 $item->setCustomName($tile->getName());
82 $drop = $this->asItem();
83 if(($tile = $this->position->getWorld()->getTile($this->position)) instanceof TileShulkerBox){
84 $this->addDataFromTile($tile, $drop);
90 $result = parent::getPickedItem($addUserData);
91 if($addUserData && ($tile = $this->position->getWorld()->getTile($this->position)) instanceof TileShulkerBox){
92 $this->addDataFromTile($tile, $result);
98 if($player instanceof
Player){
100 $shulker = $this->position->getWorld()->getTile($this->position);
101 if($shulker instanceof TileShulkerBox){
103 $this->getSide($this->facing)->isSolid() ||
104 !$shulker->canOpenWith($item->getCustomName())
109 $player->setCurrentWindow($shulker->getInventory());
117 return SupportType::NONE;
getSupportType(int $facing)
getDropsForCompatibleTool(Item $item)
describeBlockOnlyState(RuntimeDataDescriber $w)
getPickedItem(bool $addUserData=false)
onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player=null, array &$returnedItems=[])
place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player=null)
setNamedTag(CompoundTag $tag)