diff --git a/src/block/inventory/DoubleChestInventory.php b/src/block/inventory/DoubleChestInventory.php index b26425eab..033a06548 100644 --- a/src/block/inventory/DoubleChestInventory.php +++ b/src/block/inventory/DoubleChestInventory.php @@ -41,7 +41,7 @@ class DoubleChestInventory extends BaseInventory implements BlockInventory, Inve parent::__construct(); } - public function getInventory(){ + public function getInventory() : self{ return $this; } diff --git a/src/block/tile/Barrel.php b/src/block/tile/Barrel.php index e6978fca9..8035947ed 100644 --- a/src/block/tile/Barrel.php +++ b/src/block/tile/Barrel.php @@ -56,17 +56,11 @@ class Barrel extends Spawnable implements Container, Nameable{ } } - /** - * @return BarrelInventory - */ - public function getInventory(){ + public function getInventory() : BarrelInventory{ return $this->inventory; } - /** - * @return BarrelInventory - */ - public function getRealInventory(){ + public function getRealInventory() : BarrelInventory{ return $this->inventory; } diff --git a/src/block/tile/BrewingStand.php b/src/block/tile/BrewingStand.php index a75b4d9f1..f5248b611 100644 --- a/src/block/tile/BrewingStand.php +++ b/src/block/tile/BrewingStand.php @@ -112,17 +112,11 @@ class BrewingStand extends Spawnable implements Container, Nameable{ } } - /** - * @return BrewingStandInventory - */ - public function getInventory(){ + public function getInventory() : BrewingStandInventory{ return $this->inventory; } - /** - * @return BrewingStandInventory - */ - public function getRealInventory(){ + public function getRealInventory() : BrewingStandInventory{ return $this->inventory; } diff --git a/src/block/tile/Chest.php b/src/block/tile/Chest.php index 6f68d4e71..d264e107d 100644 --- a/src/block/tile/Chest.php +++ b/src/block/tile/Chest.php @@ -114,20 +114,14 @@ class Chest extends Spawnable implements Container, Nameable{ $this->containerTraitBlockDestroyedHook(); } - /** - * @return ChestInventory|DoubleChestInventory - */ - public function getInventory(){ + public function getInventory() : ChestInventory|DoubleChestInventory{ if($this->isPaired() && $this->doubleInventory === null){ $this->checkPairing(); } return $this->doubleInventory instanceof DoubleChestInventory ? $this->doubleInventory : $this->inventory; } - /** - * @return ChestInventory - */ - public function getRealInventory(){ + public function getRealInventory() : ChestInventory{ return $this->inventory; } diff --git a/src/block/tile/Container.php b/src/block/tile/Container.php index b549ad137..267b92a8d 100644 --- a/src/block/tile/Container.php +++ b/src/block/tile/Container.php @@ -30,10 +30,7 @@ interface Container extends InventoryHolder{ public const TAG_ITEMS = "Items"; public const TAG_LOCK = "Lock"; - /** - * @return Inventory - */ - public function getRealInventory(); + public function getRealInventory() : Inventory; /** * Returns whether this container can be opened by an item with the given custom name. diff --git a/src/block/tile/ContainerTrait.php b/src/block/tile/ContainerTrait.php index ba8ab084a..49130d053 100644 --- a/src/block/tile/ContainerTrait.php +++ b/src/block/tile/ContainerTrait.php @@ -38,10 +38,7 @@ trait ContainerTrait{ /** @var string|null */ private $lock = null; - /** - * @return Inventory - */ - abstract public function getRealInventory(); + abstract public function getRealInventory() : Inventory; protected function loadItems(CompoundTag $tag) : void{ if(($inventoryTag = $tag->getTag(Container::TAG_ITEMS)) instanceof ListTag && $inventoryTag->getTagType() === NBT::TAG_Compound){ diff --git a/src/block/tile/Furnace.php b/src/block/tile/Furnace.php index 389e367b8..7252fa45e 100644 --- a/src/block/tile/Furnace.php +++ b/src/block/tile/Furnace.php @@ -104,17 +104,11 @@ abstract class Furnace extends Spawnable implements Container, Nameable{ } } - /** - * @return FurnaceInventory - */ - public function getInventory(){ + public function getInventory() : FurnaceInventory{ return $this->inventory; } - /** - * @return FurnaceInventory - */ - public function getRealInventory(){ + public function getRealInventory() : FurnaceInventory{ return $this->getInventory(); } diff --git a/src/block/tile/Hopper.php b/src/block/tile/Hopper.php index c5fe6f167..89fb3cc4d 100644 --- a/src/block/tile/Hopper.php +++ b/src/block/tile/Hopper.php @@ -69,17 +69,11 @@ class Hopper extends Spawnable implements Container, Nameable{ return "Hopper"; } - /** - * @return HopperInventory - */ - public function getInventory(){ + public function getInventory() : HopperInventory{ return $this->inventory; } - /** - * @return HopperInventory - */ - public function getRealInventory(){ + public function getRealInventory() : HopperInventory{ return $this->inventory; } } diff --git a/src/block/tile/ShulkerBox.php b/src/block/tile/ShulkerBox.php index a649875a9..845963c60 100644 --- a/src/block/tile/ShulkerBox.php +++ b/src/block/tile/ShulkerBox.php @@ -93,17 +93,11 @@ class ShulkerBox extends Spawnable implements Container, Nameable{ $this->facing = $facing; } - /** - * @return ShulkerBoxInventory - */ - public function getInventory(){ + public function getInventory() : ShulkerBoxInventory{ return $this->inventory; } - /** - * @return ShulkerBoxInventory - */ - public function getRealInventory(){ + public function getRealInventory() : ShulkerBoxInventory{ return $this->inventory; } diff --git a/src/command/defaults/ParticleCommand.php b/src/command/defaults/ParticleCommand.php index 072ca9dc8..9abe965ff 100644 --- a/src/command/defaults/ParticleCommand.php +++ b/src/command/defaults/ParticleCommand.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\command\defaults; -use pocketmine\block\BlockFactory; +use pocketmine\block\BlockLegacyIds; use pocketmine\color\Color; use pocketmine\command\CommandSender; use pocketmine\command\utils\InvalidCommandSyntaxException; -use pocketmine\item\ItemFactory; +use pocketmine\item\StringToItemParser; use pocketmine\item\VanillaItems; use pocketmine\lang\KnownTranslationFactory; use pocketmine\math\Vector3; @@ -70,7 +70,6 @@ use function explode; use function max; use function microtime; use function mt_rand; -use function strpos; use function strtolower; class ParticleCommand extends VanillaCommand{ @@ -114,7 +113,7 @@ class ParticleCommand extends VanillaCommand{ $count = isset($args[7]) ? max(1, (int) $args[7]) : 1; - $data = isset($args[8]) ? (int) $args[8] : null; + $data = $args[8] ?? null; $particle = $this->getParticle($name, $data); @@ -138,7 +137,7 @@ class ParticleCommand extends VanillaCommand{ return true; } - private function getParticle(string $name, ?int $data = null) : ?Particle{ + private function getParticle(string $name, ?string $data = null) : ?Particle{ switch($name){ case "explode": return new ExplodeParticle(); @@ -156,7 +155,7 @@ class ParticleCommand extends VanillaCommand{ case "crit": return new CriticalParticle(); case "smoke": - return new SmokeParticle($data ?? 0); + return new SmokeParticle((int) ($data ?? 0)); case "spell": return new EnchantParticle(new Color(0, 0, 0, 255)); //TODO: colour support case "instantspell": @@ -175,25 +174,31 @@ class ParticleCommand extends VanillaCommand{ case "lava": return new LavaParticle(); case "reddust": - return new RedstoneParticle($data ?? 1); + return new RedstoneParticle((int) ($data ?? 1)); case "snowballpoof": return new ItemBreakParticle(VanillaItems::SNOWBALL()); case "slime": return new ItemBreakParticle(VanillaItems::SLIMEBALL()); case "itembreak": - if($data !== null && $data !== 0){ - return new ItemBreakParticle(ItemFactory::getInstance()->get($data)); + if($data !== null){ + $item = StringToItemParser::getInstance()->parse($data); + if($item !== null && !$item->isNull()){ + return new ItemBreakParticle($item); + } } break; case "terrain": - if($data !== null && $data !== 0){ - return new TerrainParticle(BlockFactory::getInstance()->get($data, 0)); + if($data !== null){ + $block = StringToItemParser::getInstance()->parse($data)?->getBlock(); + if($block !== null && $block->getId() !== BlockLegacyIds::AIR){ + return new TerrainParticle($block); + } } break; case "heart": - return new HeartParticle($data ?? 0); + return new HeartParticle((int) ($data ?? 0)); case "ink": - return new InkParticle($data ?? 0); + return new InkParticle((int) ($data ?? 0)); case "droplet": return new RainSplashParticle(); case "enchantmenttable": @@ -203,26 +208,32 @@ class ParticleCommand extends VanillaCommand{ case "angryvillager": return new AngryVillagerParticle(); case "forcefield": - return new BlockForceFieldParticle($data ?? 0); + return new BlockForceFieldParticle((int) ($data ?? 0)); case "mobflame": return new EntityFlameParticle(); - } - - if(strpos($name, "iconcrack_") === 0){ - $d = explode("_", $name); - if(count($d) === 3){ - return new ItemBreakParticle(ItemFactory::getInstance()->get((int) $d[1], (int) $d[2])); - } - }elseif(strpos($name, "blockcrack_") === 0){ - $d = explode("_", $name); - if(count($d) === 2){ - return new TerrainParticle(BlockFactory::getInstance()->get(((int) $d[1]) & 0xff, ((int) $d[1]) >> 12)); - } - }elseif(strpos($name, "blockdust_") === 0){ - $d = explode("_", $name); - if(count($d) >= 4){ - return new DustParticle(new Color(((int) $d[1]) & 0xff, ((int) $d[2]) & 0xff, ((int) $d[3]) & 0xff, isset($d[4]) ? ((int) $d[4]) & 0xff : 255)); - } + case "iconcrack": + if($data !== null && ($item = StringToItemParser::getInstance()->parse($data)) !== null && !$item->isNull()){ + return new ItemBreakParticle($item); + } + break; + case "blockcrack": + if($data !== null && ($block = StringToItemParser::getInstance()->parse($data)?->getBlock()) !== null && $block->getId() !== BlockLegacyIds::AIR){ + return new TerrainParticle($block); + } + break; + case "blockdust": + if($data !== null){ + $d = explode("_", $data); + if(count($d) >= 3){ + return new DustParticle(new Color( + ((int) $d[0]) & 0xff, + ((int) $d[1]) & 0xff, + ((int) $d[2]) & 0xff, + ((int) ($d[3] ?? 255)) & 0xff + )); + } + } + break; } return null; diff --git a/src/entity/Human.php b/src/entity/Human.php index a486c9d99..3d9cdf77f 100644 --- a/src/entity/Human.php +++ b/src/entity/Human.php @@ -189,10 +189,7 @@ class Human extends Living implements ProjectileSource, InventoryHolder{ return min(100, 7 * $this->xpManager->getXpLevel()); } - /** - * @return PlayerInventory - */ - public function getInventory(){ + public function getInventory() : PlayerInventory{ return $this->inventory; } diff --git a/src/inventory/InventoryHolder.php b/src/inventory/InventoryHolder.php index ef8f0ee3e..f1c381f1b 100644 --- a/src/inventory/InventoryHolder.php +++ b/src/inventory/InventoryHolder.php @@ -25,10 +25,5 @@ namespace pocketmine\inventory; interface InventoryHolder{ - /** - * Get the object related inventory - * - * @return Inventory - */ - public function getInventory(); + public function getInventory() : Inventory; }