Fixed a bunch of missed Position->getLevel() usages

these were not in the usage search because PhpStorm decided to refer to ChunkLoader->getLevel() for any Player references, which caused them to only show when that was searched.

There's also an undetected LSP violation with ChunkLoader because it requires returning Level and Position->getLevel() returns Level|null. I don't know why PHPStan doesn't complain about that.
This commit is contained in:
Dylan K. Taylor 2020-05-19 21:01:18 +01:00
parent dc9351b024
commit da4a2d8552
13 changed files with 19 additions and 71 deletions

View File

@ -521,7 +521,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
}
public function spawnTo(Player $player) : void{
if($this->spawned and $player->spawned and $this->isAlive() and $player->isAlive() and $player->getLevel() === $this->level and $player->canSee($this) and !$this->isSpectator()){
if($this->spawned and $player->spawned and $this->isAlive() and $player->isAlive() and $player->getLevelNonNull() === $this->level and $player->canSee($this) and !$this->isSpectator()){
parent::spawnTo($player);
}
}

View File

@ -91,7 +91,7 @@ class ParticleCommand extends VanillaCommand{
}
if($sender instanceof Player){
$level = $sender->getLevel();
$level = $sender->getLevelNonNull();
$pos = new Vector3(
$this->getRelativeDouble($sender->getX(), $sender, $args[1]),
$this->getRelativeDouble($sender->getY(), $sender, $args[2], 0, Level::Y_MAX),

View File

@ -44,7 +44,7 @@ class SeedCommand extends VanillaCommand{
}
if($sender instanceof Player){
$seed = $sender->getLevel()->getSeed();
$seed = $sender->getLevelNonNull()->getSeed();
}else{
$seed = $sender->getServer()->getDefaultLevel()->getSeed();
}

View File

@ -51,7 +51,7 @@ class SetWorldSpawnCommand extends VanillaCommand{
if(count($args) === 0){
if($sender instanceof Player){
$level = $sender->getLevel();
$level = $sender->getLevelNonNull();
$pos = (new Vector3($sender->x, $sender->y, $sender->z))->round();
}else{
$sender->sendMessage(TextFormat::RED . "You can only perform this command as a player");

View File

@ -71,7 +71,7 @@ class SpawnpointCommand extends VanillaCommand{
if(count($args) === 4){
if($target->isValid()){
$level = $target->getLevel();
$level = $target->getLevelNonNull();
$pos = $sender instanceof Player ? $sender->getPosition() : $level->getSpawnLocation();
$x = $this->getRelativeDouble($pos->x, $sender, $args[1]);
$y = $this->getRelativeDouble($pos->y, $sender, $args[2], 0, Level::Y_MAX);
@ -84,7 +84,7 @@ class SpawnpointCommand extends VanillaCommand{
}
}elseif(count($args) <= 1){
if($sender instanceof Player){
$pos = new Position($sender->getFloorX(), $sender->getFloorY(), $sender->getFloorZ(), $sender->getLevel());
$pos = new Position($sender->getFloorX(), $sender->getFloorY(), $sender->getFloorZ(), $sender->getLevelNonNull());
$target->setSpawn($pos);
Command::broadcastCommandMessage($sender, new TranslationContainer("commands.spawnpoint.success", [$target->getName(), round($pos->x, 2), round($pos->y, 2), round($pos->z, 2)]));

View File

@ -77,7 +77,7 @@ class TimeCommand extends VanillaCommand{
return true;
}
if($sender instanceof Player){
$level = $sender->getLevel();
$level = $sender->getLevelNonNull();
}else{
$level = $sender->getServer()->getDefaultLevel();
}

View File

@ -64,7 +64,7 @@ class Bow extends Tool{
$p = $diff / 20;
$baseForce = min((($p ** 2) + $p * 2) / 3, 1);
$entity = Entity::createEntity("Arrow", $player->getLevel(), $nbt, $player, $baseForce >= 1);
$entity = Entity::createEntity("Arrow", $player->getLevelNonNull(), $nbt, $player, $baseForce >= 1);
if($entity instanceof Projectile){
$infinity = $this->hasEnchantment(Enchantment::INFINITY);
if($entity instanceof ArrowEntity){
@ -110,7 +110,7 @@ class Bow extends Tool{
$ev->getProjectile()->flagForDespawn();
}else{
$ev->getProjectile()->spawnToAll();
$player->getLevel()->broadcastLevelSoundEvent($player, LevelSoundEventPacket::SOUND_BOW);
$player->getLevelNonNull()->broadcastLevelSoundEvent($player, LevelSoundEventPacket::SOUND_BOW);
}
}else{
$entity->spawnToAll();

View File

@ -62,8 +62,8 @@ class Bucket extends Item implements MaybeConsumable{
$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());
$player->getLevelNonNull()->setBlock($blockClicked, BlockFactory::get(Block::AIR), true, true);
$player->getLevelNonNull()->broadcastLevelSoundEvent($blockClicked->add(0.5, 0.5, 0.5), $blockClicked->getBucketFillSound());
if($player->isSurvival()){
if($stack->getCount() === 0){
$player->getInventory()->setItemInHand($ev->getItem());
@ -84,8 +84,8 @@ class Bucket extends Item implements MaybeConsumable{
$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($blockReplace->add(0.5, 0.5, 0.5), $resultBlock->getBucketEmptySound());
$player->getLevelNonNull()->setBlock($blockReplace, $resultBlock->getFlowingForm(), true, true);
$player->getLevelNonNull()->broadcastLevelSoundEvent($blockReplace->add(0.5, 0.5, 0.5), $resultBlock->getBucketEmptySound());
if($player->isSurvival()){
$player->getInventory()->setItemInHand($ev->getItem());

View File

@ -28,7 +28,6 @@ use pocketmine\block\BlockFactory;
use pocketmine\math\Vector3;
use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
use pocketmine\Player;
use function assert;
class FlintSteel extends Tool{
public function __construct(int $meta = 0){
@ -37,8 +36,7 @@ class FlintSteel extends Tool{
public function onActivate(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector) : bool{
if($blockReplace->getId() === self::AIR){
$level = $player->getLevel();
assert($level !== null);
$level = $player->getLevelNonNull();
$level->setBlock($blockReplace, BlockFactory::get(Block::FIRE), true);
$level->broadcastLevelSoundEvent($blockReplace->add(0.5, 0.5, 0.5), LevelSoundEventPacket::SOUND_IGNITE);

View File

@ -99,7 +99,7 @@ class PaintingItem extends Item{
$this->pop();
$entity->spawnToAll();
$player->getLevel()->broadcastLevelEvent($blockReplace->add(0.5, 0.5, 0.5), LevelEventPacket::EVENT_SOUND_ITEMFRAME_PLACE); //item frame and painting have the same sound
$player->getLevelNonNull()->broadcastLevelEvent($blockReplace->add(0.5, 0.5, 0.5), LevelEventPacket::EVENT_SOUND_ITEMFRAME_PLACE); //item frame and painting have the same sound
return true;
}

View File

@ -49,7 +49,7 @@ abstract class ProjectileItem extends Item{
$nbt = Entity::createBaseNBT($player->add(0, $player->getEyeHeight(), 0), $directionVector, $player->yaw, $player->pitch);
$this->addExtraTags($nbt);
$projectile = Entity::createEntity($this->getProjectileEntityType(), $player->getLevel(), $nbt, $player);
$projectile = Entity::createEntity($this->getProjectileEntityType(), $player->getLevelNonNull(), $nbt, $player);
if($projectile !== null){
$projectile->setMotion($projectile->getMotion()->multiply($this->getThrowForce()));
}
@ -64,7 +64,7 @@ abstract class ProjectileItem extends Item{
}else{
$projectile->spawnToAll();
$player->getLevel()->broadcastLevelSoundEvent($player, LevelSoundEventPacket::SOUND_THROW, 0, EntityIds::PLAYER);
$player->getLevelNonNull()->broadcastLevelSoundEvent($player, LevelSoundEventPacket::SOUND_THROW, 0, EntityIds::PLAYER);
}
}elseif($projectile !== null){
$projectile->spawnToAll();

View File

@ -41,7 +41,7 @@ class SpawnEgg extends Item{
$nbt->setString("CustomName", $this->getCustomName());
}
$entity = Entity::createEntity($this->meta, $player->getLevel(), $nbt);
$entity = Entity::createEntity($this->meta, $player->getLevelNonNull(), $nbt);
if($entity instanceof Entity){
$this->pop();

View File

@ -597,7 +597,7 @@ parameters:
-
message: "#^Cannot call method getSeed\\(\\) on pocketmine\\\\level\\\\Level\\|null\\.$#"
count: 2
count: 1
path: ../../../src/pocketmine/command/defaults/SeedCommand.php
-
@ -605,11 +605,6 @@ parameters:
count: 1
path: ../../../src/pocketmine/command/defaults/SetWorldSpawnCommand.php
-
message: "#^Cannot call method getSpawnLocation\\(\\) on pocketmine\\\\level\\\\Level\\|null\\.$#"
count: 1
path: ../../../src/pocketmine/command/defaults/SpawnpointCommand.php
-
message: "#^Parameter \\#1 \\$name of method pocketmine\\\\Server\\:\\:getPlayer\\(\\) expects string, string\\|null given\\.$#"
count: 1
@ -845,11 +840,6 @@ parameters:
count: 1
path: ../../../src/pocketmine/entity/Living.php
-
message: "#^Cannot call method getDifficulty\\(\\) on pocketmine\\\\level\\\\Level\\|null\\.$#"
count: 1
path: ../../../src/pocketmine/entity/Living.php
-
message: "#^Cannot call method dropExperience\\(\\) on pocketmine\\\\level\\\\Level\\|null\\.$#"
count: 1
@ -1030,31 +1020,11 @@ parameters:
count: 1
path: ../../../src/pocketmine/item/Banner.php
-
message: "#^Parameter \\#2 \\$level of static method pocketmine\\\\entity\\\\Entity\\:\\:createEntity\\(\\) expects pocketmine\\\\level\\\\Level, pocketmine\\\\level\\\\Level\\|null given\\.$#"
count: 1
path: ../../../src/pocketmine/item/Bow.php
-
message: "#^Cannot call method broadcastLevelSoundEvent\\(\\) on pocketmine\\\\level\\\\Level\\|null\\.$#"
count: 1
path: ../../../src/pocketmine/item/Bow.php
-
message: "#^Cannot call method spawnToAll\\(\\) on pocketmine\\\\entity\\\\Entity\\|null\\.$#"
count: 1
path: ../../../src/pocketmine/item/Bow.php
-
message: "#^Cannot call method setBlock\\(\\) on pocketmine\\\\level\\\\Level\\|null\\.$#"
count: 2
path: ../../../src/pocketmine/item/Bucket.php
-
message: "#^Cannot call method broadcastLevelSoundEvent\\(\\) on pocketmine\\\\level\\\\Level\\|null\\.$#"
count: 2
path: ../../../src/pocketmine/item/Bucket.php
-
message: "#^Parameter \\#1 \\$effectType of class pocketmine\\\\entity\\\\EffectInstance constructor expects pocketmine\\\\entity\\\\Effect, pocketmine\\\\entity\\\\Effect\\|null given\\.$#"
count: 2
@ -1075,11 +1045,6 @@ parameters:
count: 1
path: ../../../src/pocketmine/item/PaintingItem.php
-
message: "#^Cannot call method broadcastLevelEvent\\(\\) on pocketmine\\\\level\\\\Level\\|null\\.$#"
count: 1
path: ../../../src/pocketmine/item/PaintingItem.php
-
message: "#^Parameter \\#1 \\$effectType of class pocketmine\\\\entity\\\\EffectInstance constructor expects pocketmine\\\\entity\\\\Effect, pocketmine\\\\entity\\\\Effect\\|null given\\.$#"
count: 1
@ -1090,16 +1055,6 @@ parameters:
count: 32
path: ../../../src/pocketmine/item/Potion.php
-
message: "#^Parameter \\#2 \\$level of static method pocketmine\\\\entity\\\\Entity\\:\\:createEntity\\(\\) expects pocketmine\\\\level\\\\Level, pocketmine\\\\level\\\\Level\\|null given\\.$#"
count: 1
path: ../../../src/pocketmine/item/ProjectileItem.php
-
message: "#^Cannot call method broadcastLevelSoundEvent\\(\\) on pocketmine\\\\level\\\\Level\\|null\\.$#"
count: 1
path: ../../../src/pocketmine/item/ProjectileItem.php
-
message: "#^Parameter \\#1 \\$effectType of class pocketmine\\\\entity\\\\EffectInstance constructor expects pocketmine\\\\entity\\\\Effect, pocketmine\\\\entity\\\\Effect\\|null given\\.$#"
count: 3
@ -1115,11 +1070,6 @@ parameters:
count: 1
path: ../../../src/pocketmine/item/RottenFlesh.php
-
message: "#^Parameter \\#2 \\$level of static method pocketmine\\\\entity\\\\Entity\\:\\:createEntity\\(\\) expects pocketmine\\\\level\\\\Level, pocketmine\\\\level\\\\Level\\|null given\\.$#"
count: 1
path: ../../../src/pocketmine/item/SpawnEgg.php
-
message: "#^Parameter \\#1 \\$effectType of class pocketmine\\\\entity\\\\EffectInstance constructor expects pocketmine\\\\entity\\\\Effect, pocketmine\\\\entity\\\\Effect\\|null given\\.$#"
count: 1