mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-01 23:59:53 +00:00
Adjust Sugar Cane to break when there is no water (#6486)
This commit is contained in:
parent
a75d4687ce
commit
8474eaf5f1
@ -36,7 +36,9 @@ use pocketmine\world\Position;
|
|||||||
|
|
||||||
class Sugarcane extends Flowable{
|
class Sugarcane extends Flowable{
|
||||||
use AgeableTrait;
|
use AgeableTrait;
|
||||||
use StaticSupportTrait;
|
use StaticSupportTrait {
|
||||||
|
onNearbyBlockChange as onSupportBlockChange;
|
||||||
|
}
|
||||||
|
|
||||||
public const MAX_AGE = 15;
|
public const MAX_AGE = 15;
|
||||||
|
|
||||||
@ -97,7 +99,13 @@ class Sugarcane extends Flowable{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function onRandomTick() : void{
|
public function onRandomTick() : void{
|
||||||
if(!$this->getSide(Facing::DOWN)->hasSameTypeId($this)){
|
$down = $this->getSide(Facing::DOWN);
|
||||||
|
if(!$down->hasSameTypeId($this)){
|
||||||
|
if(!$this->hasNearbyWater($down)){
|
||||||
|
$this->position->getWorld()->useBreakOn($this->position, createParticles: true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if($this->age === self::MAX_AGE){
|
if($this->age === self::MAX_AGE){
|
||||||
$this->grow($this->position);
|
$this->grow($this->position);
|
||||||
}else{
|
}else{
|
||||||
@ -123,4 +131,23 @@ class Sugarcane extends Flowable{
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function hasNearbyWater(Block $down) : bool{
|
||||||
|
foreach($down->getHorizontalSides() as $sideBlock){
|
||||||
|
$blockId = $sideBlock->getTypeId();
|
||||||
|
if($blockId === BlockTypeIds::WATER || $blockId === BlockTypeIds::FROSTED_ICE){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onNearbyBlockChange() : void{
|
||||||
|
$down = $this->getSide(Facing::DOWN);
|
||||||
|
if(!$down->hasSameTypeId($this) && !$this->hasNearbyWater($down)){
|
||||||
|
$this->position->getWorld()->useBreakOn($this->position, createParticles: true);
|
||||||
|
}else{
|
||||||
|
$this->onSupportBlockChange();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user