Bucket: Fixed appearing empty when picking up still liquids

Buckets already affected by this bug will still appear empty until used. After that they'll work fine.
This commit is contained in:
Dylan K. Taylor 2018-01-03 14:22:53 +00:00
parent db52501462
commit 33352638a9
4 changed files with 22 additions and 2 deletions

View File

@ -48,6 +48,14 @@ class Lava extends Liquid{
return "Lava"; return "Lava";
} }
public function getStillForm() : Block{
return BlockFactory::get(Block::STILL_LAVA, $this->meta);
}
public function getFlowingForm() : Block{
return BlockFactory::get(Block::FLOWING_LAVA, $this->meta);
}
public function tickRate() : int{ public function tickRate() : int{
return 30; return 30;
} }

View File

@ -76,6 +76,10 @@ abstract class Liquid extends Transparent{
return []; return [];
} }
abstract public function getStillForm() : Block;
abstract public function getFlowingForm() : Block;
public function getFluidHeightPercent(){ public function getFluidHeightPercent(){
$d = $this->meta; $d = $this->meta;
if($d >= 8){ if($d >= 8){

View File

@ -44,6 +44,14 @@ class Water extends Liquid{
return 2; return 2;
} }
public function getStillForm() : Block{
return BlockFactory::get(Block::STILL_WATER, $this->meta);
}
public function getFlowingForm() : Block{
return BlockFactory::get(Block::FLOWING_WATER, $this->meta);
}
public function tickRate() : int{ public function tickRate() : int{
return 5; return 5;
} }

View File

@ -59,7 +59,7 @@ class Bucket extends Item implements Consumable{
$stack = clone $this; $stack = clone $this;
$resultItem = $stack->pop(); $resultItem = $stack->pop();
$resultItem->setDamage($blockClicked->getId()); $resultItem->setDamage($blockClicked->getFlowingForm()->getId());
$player->getServer()->getPluginManager()->callEvent($ev = new PlayerBucketFillEvent($player, $blockReplace, $face, $this, $resultItem)); $player->getServer()->getPluginManager()->callEvent($ev = new PlayerBucketFillEvent($player, $blockReplace, $face, $this, $resultItem));
if(!$ev->isCancelled()){ if(!$ev->isCancelled()){
$player->getLevel()->setBlock($blockClicked, BlockFactory::get(Block::AIR), true, true); $player->getLevel()->setBlock($blockClicked, BlockFactory::get(Block::AIR), true, true);
@ -84,7 +84,7 @@ class Bucket extends Item implements Consumable{
$resultItem->setDamage(0); $resultItem->setDamage(0);
$player->getServer()->getPluginManager()->callEvent($ev = new PlayerBucketEmptyEvent($player, $blockReplace, $face, $this, $resultItem)); $player->getServer()->getPluginManager()->callEvent($ev = new PlayerBucketEmptyEvent($player, $blockReplace, $face, $this, $resultItem));
if(!$ev->isCancelled()){ if(!$ev->isCancelled()){
$player->getLevel()->setBlock($blockReplace, $resultBlock, true, true); $player->getLevel()->setBlock($blockReplace, $resultBlock->getFlowingForm(), true, true);
if($player->isSurvival()){ if($player->isSurvival()){
$player->getInventory()->setItemInHand($ev->getItem()); $player->getInventory()->setItemInHand($ev->getItem());
} }