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)