meta = $meta; } public function getHardness() : float{ return 1; } public function isSolid() : bool{ return false; } public function getName() : string{ return "Standing Banner"; } protected function recalculateBoundingBox() : ?AxisAlignedBB{ return null; } public function place(Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $facePos, Player $player = null) : bool{ if($face !== Vector3::SIDE_DOWN){ if($face === Vector3::SIDE_UP and $player !== null){ $this->meta = floor((($player->yaw + 180) * 16 / 360) + 0.5) & 0x0f; $this->getLevel()->setBlock($blockReplace, $this, true); }else{ $this->meta = $face; $this->getLevel()->setBlock($blockReplace, BlockFactory::get(Block::WALL_BANNER, $this->meta), true); } Tile::createTile(Tile::BANNER, $this->getLevel(), TileBanner::createNBT($this, $face, $item, $player)); return true; } return false; } public function onUpdate(int $type){ if($type === Level::BLOCK_UPDATE_NORMAL){ if($this->getSide(Vector3::SIDE_DOWN)->getId() === self::AIR){ $this->getLevel()->useBreakOn($this); return Level::BLOCK_UPDATE_NORMAL; } } return false; } public function getToolType() : int{ return Tool::TYPE_AXE; } public function getVariantBitmask() : int{ return 0; } public function getDrops(Item $item) : array{ $tile = $this->level->getTile($this); $drop = ItemFactory::get(Item::BANNER, ($tile instanceof TileBanner ? $tile->getBaseColor() : 0)); if($tile instanceof TileBanner and ($patterns = $tile->namedtag->getListTag(TileBanner::TAG_PATTERNS)) !== null and $patterns->getCount() > 0){ $drop->setNamedTagEntry($patterns); } return [$drop]; } }