falling){ return false; } $colliding = null; foreach(Facing::ALL as $side){ if($side === Facing::DOWN){ continue; } $blockSide = $this->getSide($side); if($blockSide instanceof Water){ $colliding = $blockSide; break; } } if($colliding !== null){ if($this->decay === 0){ $this->liquidCollide($colliding, VanillaBlocks::OBSIDIAN()); return true; }elseif($this->decay <= 4){ $this->liquidCollide($colliding, VanillaBlocks::COBBLESTONE()); return true; } } return false; } protected function flowIntoBlock(Block $block, int $newFlowDecay, bool $falling) : void{ if($block instanceof Water){ $block->liquidCollide($this, VanillaBlocks::STONE()); }else{ parent::flowIntoBlock($block, $newFlowDecay, $falling); } } public function onEntityInside(Entity $entity) : bool{ $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_LAVA, 4); $entity->attack($ev); $ev = new EntityCombustByBlockEvent($this, $entity, 15); $ev->call(); if(!$ev->isCancelled()){ $entity->setOnFire($ev->getDuration()); } $entity->resetFallDistance(); return true; } }