meta = $meta; } public function hasEntityCollision() : bool{ return true; } public function getName() : string{ return "Fire Block"; } public function getLightLevel() : int{ return 15; } public function isBreakable(Item $item) : bool{ return false; } public function canBeReplaced(Block $with = null) : bool{ return true; } public function ticksRandomly() : bool{ return true; } public function onEntityCollide(Entity $entity){ $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_FIRE, 1); $entity->attack($ev); $ev = new EntityCombustByBlockEvent($this, $entity, 8); if($entity instanceof Arrow){ $ev->setCancelled(); } Server::getInstance()->getPluginManager()->callEvent($ev); if(!$ev->isCancelled()){ $entity->setOnFire($ev->getDuration()); } } public function getDrops(Item $item) : array{ return []; } public function onUpdate(int $type){ if($type === Level::BLOCK_UPDATE_NORMAL){ for($s = 0; $s <= 5; ++$s){ $side = $this->getSide($s); if($side->getId() !== self::AIR and !($side instanceof Liquid)){ return false; } } $this->getLevel()->setBlock($this, BlockFactory::get(Block::AIR), true); return Level::BLOCK_UPDATE_NORMAL; }elseif($type === Level::BLOCK_UPDATE_RANDOM){ if($this->getSide(Vector3::SIDE_DOWN)->getId() !== self::NETHERRACK){ if(mt_rand(0, 2) === 0){ if($this->meta === 0x0F){ $this->level->setBlock($this, BlockFactory::get(Block::AIR)); }else{ $this->meta++; $this->level->setBlock($this, $this); } return Level::BLOCK_UPDATE_NORMAL; } } //TODO: fire spread } return false; } }