meta = $meta; } public function hasEntityCollision(){ return true; } public function getName(){ return "Fire Block"; } public function getLightLevel(){ return 15; } public function isBreakable(Item $item){ return false; } public function canBeReplaced(){ return true; } public function onEntityCollide(Entity $entity){ $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_FIRE, 1); $entity->attack($ev->getFinalDamage(), $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){ return []; } public function onUpdate($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, new 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, new Air()); }else{ $this->meta++; $this->level->setBlock($this, $this); } return Level::BLOCK_UPDATE_NORMAL; } } } return false; } }