mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-26 05:14:05 +00:00
Bed::setOccupied() no longer sets itself into the world
setting itself into the world is very annoying when trying to simply set up a blockstate.
This commit is contained in:
parent
764f92c456
commit
060c300d50
@ -106,12 +106,6 @@ class Bed extends Transparent{
|
||||
|
||||
public function setOccupied(bool $occupied = true) : void{
|
||||
$this->occupied = $occupied;
|
||||
$this->pos->getWorld()->setBlock($this->pos, $this, false);
|
||||
|
||||
if(($other = $this->getOtherHalf()) !== null){
|
||||
$other->occupied = $occupied;
|
||||
$this->pos->getWorld()->setBlock($other->pos, $other, false);
|
||||
}
|
||||
}
|
||||
|
||||
private function getOtherHalfSide() : int{
|
||||
@ -165,6 +159,13 @@ class Bed extends Transparent{
|
||||
|
||||
}
|
||||
|
||||
public function onNearbyBlockChange() : void{
|
||||
if(($other = $this->getOtherHalf()) !== null and $other->occupied !== $this->occupied){
|
||||
$this->occupied = $other->occupied;
|
||||
$this->pos->getWorld()->setBlock($this->pos, $this);
|
||||
}
|
||||
}
|
||||
|
||||
public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{
|
||||
if($item instanceof ItemBed){ //TODO: the item should do this
|
||||
$this->color = $item->getColor();
|
||||
|
@ -954,6 +954,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
|
||||
|
||||
if($b instanceof Bed){
|
||||
$b->setOccupied();
|
||||
$this->getWorld()->setBlock($pos, $b);
|
||||
}
|
||||
|
||||
$this->sleeping = $pos;
|
||||
@ -970,6 +971,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
|
||||
$b = $this->getWorld()->getBlock($this->sleeping);
|
||||
if($b instanceof Bed){
|
||||
$b->setOccupied(false);
|
||||
$this->getWorld()->setBlock($this->sleeping, $b);
|
||||
}
|
||||
(new PlayerBedLeaveEvent($this, $b))->call();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user