meta === Block::AIR ? 16 : 1; //empty buckets stack to 16 } public function getFuelTime() : int{ if($this->meta === Block::LAVA or $this->meta === Block::FLOWING_LAVA){ return 20000; } return 0; } public function onActivate(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector) : bool{ $resultBlock = BlockFactory::get($this->meta); if($resultBlock instanceof Air){ if($blockClicked instanceof Liquid and $blockClicked->getDamage() === 0){ $stack = clone $this; $stack->pop(); $resultItem = ItemFactory::get(Item::BUCKET, $blockClicked->getFlowingForm()->getId()); $ev = new PlayerBucketFillEvent($player, $blockReplace, $face, $this, $resultItem); $ev->call(); if(!$ev->isCancelled()){ $player->getLevel()->setBlock($blockClicked, BlockFactory::get(Block::AIR), true, true); $player->getLevel()->broadcastLevelSoundEvent($blockClicked->add(0.5, 0.5, 0.5), $blockClicked->getBucketFillSound()); if($player->isSurvival()){ if($stack->getCount() === 0){ $player->getInventory()->setItemInHand($ev->getItem()); }else{ $player->getInventory()->setItemInHand($stack); $player->getInventory()->addItem($ev->getItem()); } }else{ $player->getInventory()->addItem($ev->getItem()); } return true; }else{ $player->getInventory()->sendContents($player); } } }elseif($resultBlock instanceof Liquid and $blockReplace->canBeReplaced()){ $ev = new PlayerBucketEmptyEvent($player, $blockReplace, $face, $this, ItemFactory::get(Item::BUCKET)); $ev->call(); if(!$ev->isCancelled()){ $player->getLevel()->setBlock($blockReplace, $resultBlock->getFlowingForm(), true, true); $player->getLevel()->broadcastLevelSoundEvent($blockClicked->add(0.5, 0.5, 0.5), $resultBlock->getBucketEmptySound()); if($player->isSurvival()){ $player->getInventory()->setItemInHand($ev->getItem()); } return true; }else{ $player->getInventory()->sendContents($player); } } return false; } public function getResidue(){ return ItemFactory::get(Item::BUCKET, 0, 1); } public function getAdditionalEffects() : array{ return []; } public function canBeConsumed() : bool{ return $this->meta === 1; //Milk } public function onConsume(Living $consumer){ $consumer->removeAllEffects(); } }