41    public function getBucketFillSound() : 
Sound{
 
   45    public function getBucketEmptySound() : Sound{
 
   46        return new BucketEmptyLavaSound();
 
   49    public function tickRate() : int{
 
   60    private function getAdjacentBlocksExceptDown() : \
Generator{
 
   61        foreach(
Facing::ALL as $side){
 
   62            if($side === Facing::DOWN){
 
   65            yield $this->getSide($side);
 
   69    protected function checkForHarden() : bool{
 
   73        foreach($this->getAdjacentBlocksExceptDown() as $colliding){
 
   74            if($colliding instanceof Water){
 
   75                if($this->decay === 0){
 
   76                    $this->liquidCollide($colliding, VanillaBlocks::OBSIDIAN());
 
   78                }elseif($this->decay <= 4){
 
   79                    $this->liquidCollide($colliding, VanillaBlocks::COBBLESTONE());
 
   85        if($this->getSide(Facing::DOWN)->getTypeId() === BlockTypeIds::SOUL_SOIL){
 
   86            foreach($this->getAdjacentBlocksExceptDown() as $colliding){
 
   87                if($colliding->getTypeId() === BlockTypeIds::BLUE_ICE){
 
   88                    $this->liquidCollide($colliding, VanillaBlocks::BASALT());
 
   97    protected function flowIntoBlock(Block $block, 
int $newFlowDecay, 
bool $falling) : void{
 
   98        if($block instanceof Water){
 
   99            $block->liquidCollide($this, VanillaBlocks::STONE());
 
  101            parent::flowIntoBlock($block, $newFlowDecay, $falling);
 
  107        $entity->attack($ev);
 
  112        if(!$ev->isCancelled()){
 
  113            $entity->setOnFire($ev->getDuration());
 
  116        $entity->resetFallDistance();