diff --git a/src/pocketmine/block/Block.php b/src/pocketmine/block/Block.php index 0c1fd4d43..d9795e965 100644 --- a/src/pocketmine/block/Block.php +++ b/src/pocketmine/block/Block.php @@ -30,6 +30,7 @@ use pocketmine\entity\Entity; use pocketmine\item\enchantment\Enchantment; use pocketmine\item\Item; use pocketmine\item\ItemFactory; +use pocketmine\level\Level; use pocketmine\level\Position; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -466,15 +467,18 @@ class Block extends Position implements BlockIds, Metadatable{ } /** - * Sets the block position to a new Position object + * @internal * - * @param Position $v + * @param Level $level + * @param int $x + * @param int $y + * @param int $z */ - final public function position(Position $v) : void{ - $this->x = (int) $v->x; - $this->y = (int) $v->y; - $this->z = (int) $v->z; - $this->level = $v->level; + final public function position(Level $level, int $x, int $y, int $z) : void{ + $this->x = $x; + $this->y = $y; + $this->z = $z; + $this->level = $level; $this->readStateFromWorld(); } diff --git a/src/pocketmine/entity/object/FallingBlock.php b/src/pocketmine/entity/object/FallingBlock.php index f03ff9e71..9e21809f6 100644 --- a/src/pocketmine/entity/object/FallingBlock.php +++ b/src/pocketmine/entity/object/FallingBlock.php @@ -29,7 +29,6 @@ use pocketmine\block\Fallable; use pocketmine\entity\Entity; use pocketmine\event\entity\EntityBlockChangeEvent; use pocketmine\event\entity\EntityDamageEvent; -use pocketmine\level\Position; use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntTag; @@ -95,9 +94,9 @@ class FallingBlock extends Entity{ $hasUpdate = parent::entityBaseTick($tickDiff); if(!$this->isFlaggedForDespawn()){ - $pos = Position::fromObject($this->add(-$this->width / 2, $this->height, -$this->width / 2)->floor(), $this->getLevel()); + $pos = $this->add(-$this->width / 2, $this->height, -$this->width / 2)->floor(); - $this->block->position($pos); + $this->block->position($this->level, $pos->x, $pos->y, $pos->z); $blockTarget = null; if($this->block instanceof Fallable){ diff --git a/src/pocketmine/level/Level.php b/src/pocketmine/level/Level.php index 1bb06aed9..ff1370e1b 100644 --- a/src/pocketmine/level/Level.php +++ b/src/pocketmine/level/Level.php @@ -1530,13 +1530,9 @@ class Level implements ChunkManager, Metadatable{ $this->timings->setBlock->startTiming(); - if(!($pos instanceof Position)){ - $pos = $this->temporalPosition->setComponents($pos->x, $pos->y, $pos->z); - } - $block = clone $block; - $block->position($pos); + $block->position($this, $pos->x, $pos->y, $pos->z); $block->writeStateToWorld(); $chunkHash = Level::chunkHash($pos->x >> 4, $pos->z >> 4); @@ -1823,14 +1819,14 @@ class Level implements ChunkManager, Metadatable{ if($item->canBePlaced()){ $hand = $item->getBlock(); - $hand->position($blockReplace); + $hand->position($this, $blockReplace->x, $blockReplace->y, $blockReplace->z); }else{ return false; } if($hand->canBePlacedAt($blockClicked, $clickVector, $face, true)){ $blockReplace = $blockClicked; - $hand->position($blockReplace); + $hand->position($this, $blockReplace->x, $blockReplace->y, $blockReplace->z); }elseif(!$hand->canBePlacedAt($blockReplace, $clickVector, $face, false)){ return false; }