liquid = $liquid; } public function getMaxStackSize() : int{ return 1; } public function getFuelTime() : int{ if($this->liquid instanceof Lava){ return 20000; } return 0; } public function getFuelResidue() : Item{ return VanillaItems::BUCKET(); } public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, array &$returnedItems) : ItemUseResult{ if(!$blockReplace->canBeReplaced()){ return ItemUseResult::NONE(); } //TODO: move this to generic placement logic $resultBlock = clone $this->liquid; $ev = new PlayerBucketEmptyEvent($player, $blockReplace, $face, $this, VanillaItems::BUCKET()); $ev->call(); if(!$ev->isCancelled()){ $player->getWorld()->setBlock($blockReplace->getPosition(), $resultBlock->getFlowingForm()); $player->getWorld()->addSound($blockReplace->getPosition()->add(0.5, 0.5, 0.5), $resultBlock->getBucketEmptySound()); $this->pop(); $returnedItems[] = $ev->getItem(); return ItemUseResult::SUCCESS(); } return ItemUseResult::FAIL(); } public function getLiquid() : Liquid{ return $this->liquid; } }