hasTag(self::TAG_ITEM_ROTATION, ByteTag::class)){ $nbt->setByte(self::TAG_ITEM_ROTATION, 0, true); } if(!$nbt->hasTag(self::TAG_ITEM_DROP_CHANCE, FloatTag::class)){ $nbt->setFloat(self::TAG_ITEM_DROP_CHANCE, 1.0, true); } parent::__construct($level, $nbt); } public function hasItem() : bool{ return !$this->getItem()->isNull(); } public function getItem() : Item{ $c = $this->namedtag->getCompoundTag(self::TAG_ITEM); if($c !== null){ return Item::nbtDeserialize($c); } return ItemFactory::get(Item::AIR, 0, 0); } public function setItem(Item $item = null){ if($item !== null and !$item->isNull()){ $this->namedtag->setTag($item->nbtSerialize(-1, self::TAG_ITEM)); }else{ $this->namedtag->removeTag(self::TAG_ITEM); } $this->onChanged(); } public function getItemRotation() : int{ return $this->namedtag->getByte(self::TAG_ITEM_ROTATION); } public function setItemRotation(int $rotation){ $this->namedtag->setByte(self::TAG_ITEM_ROTATION, $rotation); $this->onChanged(); } public function getItemDropChance() : float{ return $this->namedtag->getFloat(self::TAG_ITEM_DROP_CHANCE); } public function setItemDropChance(float $chance){ $this->namedtag->setFloat(self::TAG_ITEM_DROP_CHANCE, $chance); $this->onChanged(); } public function addAdditionalSpawnData(CompoundTag $nbt) : void{ $nbt->setTag($this->namedtag->getTag(self::TAG_ITEM_DROP_CHANCE)); $nbt->setTag($this->namedtag->getTag(self::TAG_ITEM_ROTATION)); if($this->hasItem()){ $nbt->setTag($this->namedtag->getTag(self::TAG_ITEM)); } } protected static function createAdditionalNBT(CompoundTag $nbt, Vector3 $pos, ?int $face = null, ?Item $item = null, ?Player $player = null) : void{ $nbt->setFloat(self::TAG_ITEM_DROP_CHANCE, 1.0); $nbt->setByte(self::TAG_ITEM_ROTATION, 0); } }