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();