idInfoFlattened = $idInfo; parent::__construct($idInfo, $name, $breakInfo); } public function getId() : int{ return $this->lit ? $this->idInfoFlattened->getSecondId() : parent::getId(); } public function readStateFromData(int $id, int $stateMeta) : void{ $this->lit = $id === $this->idInfoFlattened->getSecondId(); } public function isLit() : bool{ return $this->lit; } /** * @return $this */ public function setLit(bool $lit = true) : self{ $this->lit = $lit; return $this; } public function getLightLevel() : int{ return $this->lit ? 9 : 0; } public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ if(!$this->lit){ $this->lit = true; $this->position->getWorld()->setBlock($this->position, $this); //no return here - this shouldn't prevent block placement } return false; } public function onNearbyBlockChange() : void{ if(!$this->lit){ $this->lit = true; $this->position->getWorld()->setBlock($this->position, $this); } } public function ticksRandomly() : bool{ return true; } public function onRandomTick() : void{ if($this->lit){ $this->lit = false; $this->position->getWorld()->setBlock($this->position, $this); } } public function getDropsForCompatibleTool(Item $item) : array{ return [ VanillaItems::REDSTONE_DUST()->setCount(mt_rand(4, 5)) ]; } public function isAffectedBySilkTouch() : bool{ return true; } protected function getXpDropAmount() : int{ return mt_rand(1, 5); } }