diff --git a/README.md b/README.md index e6d38ce..fb3f1a1 100644 --- a/README.md +++ b/README.md @@ -22,39 +22,33 @@ SimpleWarp is the original warp plugin for PocketMine-MP. It allows players to m ## Permissions ```yaml simplewarp: - default: op - children: - simplewarp.command: - default: op - children: - simplewarp.command.list: - default: true - children: - simplewarp.command.list.xyz: - default: op - simplewarp.command.list.visual: - default: op - simplewarp.command.addwarp: - default: op - simplewarp.command.delwarp: - default: op - simplewarp.command.warp: - default: true - children: - simplewarp.command.warp.other: - default: op - simplewarp.command.openwarp: - default: op - simplewarp.command.closewarp: - default: op - simplewarp.command.closewarp: - default: op - simplewarp.essentials.notice: - default: op - description: Recieve messages when their is warp conflict in Essentials - simplewarp.warp: - default: op - description: Allows usage of all warps + default: op + simplewarp.command: + default: op + simplewarp.command.list: + default: true + simplewarp.command.list.xyz: + default: op + simplewarp.command.list.visual: + default: op + simplewarp.command.addwarp: + default: op + simplewarp.command.delwarp: + default: op + simplewarp.command.warp: + default: true + simplewarp.command.warp.other: + default: op + simplewarp.command.openwarp: + default: op + simplewarp.command.closewarp: + default: op + simplewarp.essentials.notice: + default: op + description: Recieve messages when their is warp conflict in Essentials + simplewarp.warp: + default: op + description: Allows usage of all warps ``` ## API diff --git a/plugin.yml b/plugin.yml index 17f27b5..c52e660 100644 --- a/plugin.yml +++ b/plugin.yml @@ -3,40 +3,35 @@ name: SimpleWarp main: falkirks\simplewarp\SimpleWarp version: 4.0.1 author: Falkirks -api: [3.0.0, 4.0.0] +api: [4.0.0] load: POSTWORLD softdepend: ["FastTransfer", "SlowTransfer", "EssentialsPE"] permissions: simplewarp: default: op - children: - simplewarp.command: - default: op - children: - simplewarp.command.list: - default: true - children: - simplewarp.command.list.xyz: - default: op - simplewarp.command.list.visual: - default: op - simplewarp.command.addwarp: - default: op - simplewarp.command.delwarp: - default: op - simplewarp.command.warp: - default: true - simplewarp.command.warp.other: - default: op - simplewarp.command.openwarp: - default: op - simplewarp.command.closewarp: - default: op - simplewarp.command.closewarp: - default: op - simplewarp.essentials.notice: - default: op - description: Recieve messages when their is warp conflict in Essentials - simplewarp.warp: - default: op - description: Allows usage of all warps + simplewarp.command: + default: op + simplewarp.command.list: + default: true + simplewarp.command.list.xyz: + default: op + simplewarp.command.list.visual: + default: op + simplewarp.command.addwarp: + default: op + simplewarp.command.delwarp: + default: op + simplewarp.command.warp: + default: true + simplewarp.command.warp.other: + default: op + simplewarp.command.openwarp: + default: op + simplewarp.command.closewarp: + default: op + simplewarp.essentials.notice: + default: op + description: Recieve messages when their is warp conflict in Essentials + simplewarp.warp: + default: op + description: Allows usage of all warps diff --git a/src/falkirks/simplewarp/Destination.php b/src/falkirks/simplewarp/Destination.php index 5eb3710..76833c0 100644 --- a/src/falkirks/simplewarp/Destination.php +++ b/src/falkirks/simplewarp/Destination.php @@ -5,8 +5,8 @@ use falkirks\simplewarp\api\SimpleWarpAPI; use falkirks\simplewarp\utils\WeakPosition; -use pocketmine\level\Position; -use pocketmine\Player; +use pocketmine\world\Position; +use pocketmine\player\Player; use pocketmine\plugin\PluginBase; use pocketmine\Server; use pocketmine\utils\TextFormat; @@ -54,7 +54,7 @@ public function teleport(Player $player){ $player->teleport($this->position); } else{ - $player->sendMessage($this->getApi()->executeTranslationItem("level-not-loaded-warp")); + $player->sendMessage($this->getApi()->executeTranslationItem("world-not-loaded-warp")); } } else{ @@ -63,7 +63,7 @@ public function teleport(Player $player){ $player->transfer($this->address, $this->port); } elseif($plugin instanceof PluginBase && $plugin->isEnabled()){ - $plugin->transferPlayer($player, $this->address, $this->port); + $player->transfer($this->address, $this->port); } else{ $player->getServer()->getPluginManager()->getPlugin("SimpleWarp")->getLogger()->warning("In order to use warps to other servers, you must install " . TextFormat::AQUA . "FastTransfer" . TextFormat::RESET . " or use a newer PocketMine version."); @@ -98,16 +98,16 @@ public function getPort(){ public function toString(){ if($this->isInternal()) { if($this->position instanceof WeakPosition){ - $levelName = $this->position->levelName; + $worldName = $this->position->worldName; } else{ - $levelName = $this->position->getLevel()->getName(); + $worldName = $this->position->getWorld()->getFolderName(); } if($this->getApi()->getConfigItem("display-exact-coordinates")) { - return "(X: {$this->getPosition()->x}, Y: {$this->getPosition()->y}, Z: {$this->getPosition()->z}, LEVEL: {$levelName})"; + return "(X: {$this->getPosition()->x}, Y: {$this->getPosition()->y}, Z: {$this->getPosition()->z}, LEVEL: {$worldName})"; } else{ - return "(X: {$this->getPosition()->getFloorX()}, Y: {$this->getPosition()->getFloorY()}, Z: {$this->getPosition()->getFloorZ()}, LEVEL: " . $levelName . ")"; + return "(X: {$this->getPosition()->getFloorX()}, Y: {$this->getPosition()->getFloorY()}, Z: {$this->getPosition()->getFloorZ()}, LEVEL: " . $worldName . ")"; } } return "(IP: {$this->getAddress()}, PORT: {$this->getPort()})"; diff --git a/src/falkirks/simplewarp/SimpleWarp.php b/src/falkirks/simplewarp/SimpleWarp.php index 7d70e33..eff75ea 100644 --- a/src/falkirks/simplewarp/SimpleWarp.php +++ b/src/falkirks/simplewarp/SimpleWarp.php @@ -35,7 +35,7 @@ class SimpleWarp extends PluginBase{ /** @var Command[] */ private $commands; - public function onEnable(){ + public function onEnable(): void { $this->saveDefaultConfig(); $this->api = new SimpleWarpAPI($this); @@ -82,7 +82,7 @@ public function onEnable(){ //TODO add negative response (in next version because I don't know if this works) } } - public function onDisable(){ + public function onDisable(): void { $this->warpManager->saveAll(); $this->warpManager = null; diff --git a/src/falkirks/simplewarp/Warp.php b/src/falkirks/simplewarp/Warp.php index 55a77fc..0bba371 100644 --- a/src/falkirks/simplewarp/Warp.php +++ b/src/falkirks/simplewarp/Warp.php @@ -4,9 +4,7 @@ use falkirks\simplewarp\event\PlayerWarpEvent; use falkirks\simplewarp\permission\SimpleWarpPermissions; use pocketmine\command\CommandSender; -use pocketmine\metadata\Metadatable; -use pocketmine\Player; -use pocketmine\plugin\Plugin; +use pocketmine\player\Player; use pocketmine\Server; /** @@ -32,7 +30,7 @@ public function __construct(WarpManager $manager, $name, Destination $destinatio } public function teleport(Player $player){ $ev = new PlayerWarpEvent($player, $this); - $this->getServer()->getPluginManager()->callEvent($ev); + $ev->call(); if($ev->isCancelled()){ return; } diff --git a/src/falkirks/simplewarp/WarpManager.php b/src/falkirks/simplewarp/WarpManager.php index 8df5126..41f8e1b 100644 --- a/src/falkirks/simplewarp/WarpManager.php +++ b/src/falkirks/simplewarp/WarpManager.php @@ -7,9 +7,8 @@ use falkirks\simplewarp\store\Reloadable; use falkirks\simplewarp\store\Saveable; use falkirks\simplewarp\utils\WeakPosition; -use pocketmine\level\Level; -use pocketmine\level\Position; -use pocketmine\network\protocol\DataPacket; +use pocketmine\world\World; +use pocketmine\world\Position; use pocketmine\utils\TextFormat; use Traversable; @@ -191,7 +190,7 @@ protected function warpToData(Warp $warp){ "x" => $pos->getX(), "y" => $pos->getY(), "z" => $pos->getZ(), - "level" => ($pos instanceof WeakPosition ? $pos->getLevelName() : $pos->getLevel()->getName()), + "world" => ($pos instanceof WeakPosition ? $pos->getWorldName() : $pos->getWorld()->getFolderName()), "public" => $warp->isPublic(), ]; } diff --git a/src/falkirks/simplewarp/api/SimpleWarpAPI.php b/src/falkirks/simplewarp/api/SimpleWarpAPI.php index 4cfbb7a..b30166f 100644 --- a/src/falkirks/simplewarp/api/SimpleWarpAPI.php +++ b/src/falkirks/simplewarp/api/SimpleWarpAPI.php @@ -7,7 +7,7 @@ use falkirks\simplewarp\SimpleWarp; use falkirks\simplewarp\Warp; use falkirks\simplewarp\WarpManager; -use pocketmine\Player; +use pocketmine\player\Player; use pocketmine\plugin\PluginBase; /** @@ -121,9 +121,9 @@ public function warpPlayerTo(Player $player, $name): bool{ * Checks if a player has permission to use a warp * @param Player $player * @param $name - * @return bool + * @return null|bool */ - public function canPlayerUse(Player $player, $name): bool{ + public function canPlayerUse(Player $player, $name): ?bool{ $warp = $this->getWarp($name); if($warp instanceof Warp){ return $warp->canUse($player); diff --git a/src/falkirks/simplewarp/command/AddWarpCommand.php b/src/falkirks/simplewarp/command/AddWarpCommand.php index 96936d6..3b2bb0e 100644 --- a/src/falkirks/simplewarp/command/AddWarpCommand.php +++ b/src/falkirks/simplewarp/command/AddWarpCommand.php @@ -6,21 +6,18 @@ use falkirks\simplewarp\Destination; use falkirks\simplewarp\event\WarpAddEvent; use falkirks\simplewarp\permission\SimpleWarpPermissions; -use falkirks\simplewarp\SimpleWarp; use falkirks\simplewarp\utils\WeakPosition; use falkirks\simplewarp\Version; use falkirks\simplewarp\Warp; -use pocketmine\command\Command; use pocketmine\command\CommandSender; -use pocketmine\command\PluginIdentifiableCommand; -use pocketmine\level\Level; -use pocketmine\level\Position; -use pocketmine\Player; -use pocketmine\utils\TextFormat; +use pocketmine\world\Position; +use pocketmine\player\Player; use pocketmine\plugin\Plugin; +use pocketmine\world\World; class AddWarpCommand extends SimpleWarpCommand { - private $api; + + private SimpleWarpAPI $api; public function __construct(SimpleWarpAPI $api) { parent::__construct($api->executeTranslationItem("addwarp-cmd"), $api->executeTranslationItem("addwarp-desc"), $api->executeTranslationItem("addwarp-usage")); @@ -31,8 +28,6 @@ public function __construct(SimpleWarpAPI $api) { * @param CommandSender $sender * @param string $commandLabel * @param string[] $args - * - * @return mixed */ public function execute(CommandSender $sender, string $commandLabel, array $args) { if (parent::execute($sender, $commandLabel, $args)) { @@ -43,12 +38,12 @@ public function execute(CommandSender $sender, string $commandLabel, array $args $sender->sendMessage($this->api->executeTranslationItem("addwarp-ess-prefix-warning")); } if (isset($args[3])) { - $level = (isset($args[4]) ? $this->api->getSimpleWarp()->getServer()->getLevelByName($args[4]) : $this->api->getSimpleWarp()->getServer()->getDefaultLevel()); - if ($level instanceof Level) { - $dest = new Destination(new WeakPosition($args[1], $args[2], $args[3], $level->getName())); + $world = (isset($args[4]) ? $this->api->getSimpleWarp()->getServer()->getWorldManager()->getWorldByName($args[4]) : $this->api->getSimpleWarp()->getServer()->getWorldManager()->getDefaultWorld()); + if ($world instanceof World) { + $dest = new Destination(new WeakPosition($args[1], $args[2], $args[3], $world->getFolderName())); $warp = new Warp($this->api->getWarpManager(), $args[0], $dest); $ev = new WarpAddEvent($sender, $warp); - $this->getPlugin()->getServer()->getPluginManager()->callEvent($ev); + $ev->call(); if (!$ev->isCancelled()) { $this->api->getWarpManager()[$args[0]] = $warp; $sender->sendMessage($this->api->executeTranslationItem("warp-added-xyz", $args[0], $dest->toString())); @@ -58,14 +53,14 @@ public function execute(CommandSender $sender, string $commandLabel, array $args } } else { - $sender->sendMessage($this->api->executeTranslationItem("level-not-loaded")); + $sender->sendMessage($this->api->executeTranslationItem("world-not-loaded")); } } elseif (isset($args[2])) { $dest = new Destination($args[1], $args[2]); $warp = new Warp($this->api->getWarpManager(), $args[0], $dest); $ev = new WarpAddEvent($sender, $warp); - $this->getPlugin()->getServer()->getPluginManager()->callEvent($ev); + $ev->call(); if (!$ev->isCancelled()) { $this->api->getWarpManager()[$args[0]] = $warp; $sender->sendMessage($this->api->executeTranslationItem("warp-added-server", $args[0], $dest->toString())); @@ -78,11 +73,11 @@ public function execute(CommandSender $sender, string $commandLabel, array $args } } elseif (isset($args[1])) { - if (($player = $this->api->getSimpleWarp()->getServer()->getPlayer($args[1])) instanceof Player) { - $dest = new Destination(new Position($player->getX(), $player->getY(), $player->getZ(), $player->getLevel())); + if (($player = $this->api->getSimpleWarp()->getServer()->getPlayerExact($args[1])) instanceof Player) { + $dest = new Destination($player->getPosition()); $warp = new Warp($this->api->getWarpManager(), $args[0], $dest); $ev = new WarpAddEvent($sender, $warp); - $this->getPlugin()->getServer()->getPluginManager()->callEvent($ev); + $ev->call(); if (!$ev->isCancelled()) { $this->api->getWarpManager()[$args[0]] = $warp; $sender->sendMessage($this->api->executeTranslationItem("warp-added-player", $args[0], $dest->toString())); @@ -97,10 +92,10 @@ public function execute(CommandSender $sender, string $commandLabel, array $args } else { if ($sender instanceof Player) { - $dest = new Destination(new Position($sender->getX(), $sender->getY(), $sender->getZ(), $sender->getLevel())); + $dest = new Destination($sender->getPosition()); $warp = new Warp($this->api->getWarpManager(), $args[0], $dest); $ev = new WarpAddEvent($sender, $warp); - $this->getPlugin()->getServer()->getPluginManager()->callEvent($ev); + $ev->call(); if (!$ev->isCancelled()) { $this->api->getWarpManager()[$args[0]] = $warp; $sender->sendMessage($this->api->executeTranslationItem("warp-added-self", $args[0], $dest->toString())); @@ -129,15 +124,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args } } - public function generateCustomCommandData(Player $player) { - return parent::generateCustomCommandData($player); // TODO: Change the autogenerated stub - } - - - /** - * @return \pocketmine\plugin\Plugin - */ - public function getPlugin(): Plugin{ + public function getOwningPlugin(): Plugin{ return $this->api->getSimpleWarp(); } } \ No newline at end of file diff --git a/src/falkirks/simplewarp/command/CloseWarpCommand.php b/src/falkirks/simplewarp/command/CloseWarpCommand.php index 97b6bba..a7f6a3d 100644 --- a/src/falkirks/simplewarp/command/CloseWarpCommand.php +++ b/src/falkirks/simplewarp/command/CloseWarpCommand.php @@ -5,17 +5,13 @@ use falkirks\simplewarp\api\SimpleWarpAPI; use falkirks\simplewarp\event\WarpCloseEvent; use falkirks\simplewarp\permission\SimpleWarpPermissions; -use falkirks\simplewarp\SimpleWarp; use falkirks\simplewarp\Version; use falkirks\simplewarp\Warp; -use pocketmine\command\Command; use pocketmine\command\CommandSender; -use pocketmine\command\PluginIdentifiableCommand; -use pocketmine\utils\TextFormat; use pocketmine\plugin\Plugin; class CloseWarpCommand extends SimpleWarpCommand { - private $api; + private SimpleWarpAPI $api; public function __construct(SimpleWarpAPI $api){ parent::__construct($api->executeTranslationItem("closewarp-cmd"), $api->executeTranslationItem("closewarp-desc"), $api->executeTranslationItem("closewarp-usage")); $this->api = $api; @@ -25,8 +21,6 @@ public function __construct(SimpleWarpAPI $api){ * @param CommandSender $sender * @param string $commandLabel * @param string[] $args - * - * @return mixed */ public function execute(CommandSender $sender, string $commandLabel, array $args) { if(parent::execute($sender, $commandLabel, $args)) { @@ -36,7 +30,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args /** @var Warp $warp */ $warp = $this->api->getWarpManager()[$args[0]]; $ev = new WarpCloseEvent($sender, $warp); - $this->getPlugin()->getServer()->getPluginManager()->callEvent($ev); + $ev->call(); if (!$ev->isCancelled()) { $warp->setPublic(false); $sender->sendMessage($this->api->executeTranslationItem("closed-warp-1", $args[0])); @@ -61,11 +55,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args } } - - /** - * @return \pocketmine\plugin\Plugin - */ - public function getPlugin(): Plugin{ + public function getOwningPlugin(): Plugin{ return $this->api->getSimpleWarp(); } } \ No newline at end of file diff --git a/src/falkirks/simplewarp/command/DelWarpCommand.php b/src/falkirks/simplewarp/command/DelWarpCommand.php index b005d18..70dc76d 100644 --- a/src/falkirks/simplewarp/command/DelWarpCommand.php +++ b/src/falkirks/simplewarp/command/DelWarpCommand.php @@ -5,16 +5,12 @@ use falkirks\simplewarp\api\SimpleWarpAPI; use falkirks\simplewarp\event\WarpDeleteEvent; use falkirks\simplewarp\permission\SimpleWarpPermissions; -use falkirks\simplewarp\SimpleWarp; use falkirks\simplewarp\Version; -use pocketmine\command\Command; use pocketmine\command\CommandSender; -use pocketmine\command\PluginIdentifiableCommand; -use pocketmine\utils\TextFormat; use pocketmine\plugin\Plugin; class DelWarpCommand extends SimpleWarpCommand { - protected $api; + protected SimpleWarpAPI $api; public function __construct(SimpleWarpAPI $api){ parent::__construct($api->executeTranslationItem("delwarp-cmd"), $api->executeTranslationItem("delwarp-desc"), $api->executeTranslationItem("delwarp-usage")); $this->api = $api; @@ -24,8 +20,6 @@ public function __construct(SimpleWarpAPI $api){ * @param CommandSender $sender * @param string $commandLabel * @param string[] $args - * - * @return mixed */ public function execute(CommandSender $sender, string $commandLabel, array $args) { if(parent::execute($sender, $commandLabel, $args)) { @@ -33,7 +27,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args if (isset($args[0])) { if (isset($this->api->getWarpManager()[$args[0]])) { $ev = new WarpDeleteEvent($sender, $this->api->getWarpManager()[$args[0]]); - $this->getPlugin()->getServer()->getPluginManager()->callEvent($ev); + $ev->call(); if (!$ev->isCancelled()) { unset($this->api->getWarpManager()[$args[0]]); $sender->sendMessage($this->api->executeTranslationItem("warp-deleted", $args[0])); @@ -57,11 +51,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args } } - - /** - * @return \pocketmine\plugin\Plugin - */ - public function getPlugin(): Plugin{ + public function getOwningPlugin(): Plugin{ return $this->api->getSimpleWarp(); } } \ No newline at end of file diff --git a/src/falkirks/simplewarp/command/ListWarpsCommand.php b/src/falkirks/simplewarp/command/ListWarpsCommand.php index 272e671..a363bbc 100644 --- a/src/falkirks/simplewarp/command/ListWarpsCommand.php +++ b/src/falkirks/simplewarp/command/ListWarpsCommand.php @@ -4,18 +4,15 @@ use falkirks\simplewarp\api\SimpleWarpAPI; use falkirks\simplewarp\permission\SimpleWarpPermissions; -use falkirks\simplewarp\SimpleWarp; use falkirks\simplewarp\Warp; -use pocketmine\command\Command; use pocketmine\command\CommandSender; -use pocketmine\command\PluginIdentifiableCommand; -use pocketmine\level\particle\FloatingTextParticle; -use pocketmine\Player; +use pocketmine\world\particle\FloatingTextParticle; +use pocketmine\player\Player; use pocketmine\utils\TextFormat; use pocketmine\plugin\Plugin; class ListWarpsCommand extends SimpleWarpCommand { - private $api; + private SimpleWarpAPI $api; public function __construct(SimpleWarpAPI $api){ parent::__construct($api->executeTranslationItem("listwarps-cmd"), $api->executeTranslationItem("listwarps-desc"), $api->executeTranslationItem("listwarps-usage")); $this->api = $api; @@ -25,8 +22,6 @@ public function __construct(SimpleWarpAPI $api){ * @param CommandSender $sender * @param string $commandLabel * @param string[] $args - * - * @return mixed */ public function execute(CommandSender $sender, string $commandLabel, array $args) { if(parent::execute($sender, $commandLabel, $args)) { @@ -35,7 +30,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args /** @var Warp[] $iterator */ $iterator = $this->api->getWarpManager(); foreach ($iterator as $w) { - if ($w->canUse($sender)) { + if (!is_null($w) && $w->canUse($sender)) { $ret .= " * " . $w->getName() . " "; if ($sender->hasPermission(SimpleWarpPermissions::LIST_WARPS_COMMAND_XYZ)) { $dest = $w->getDestination(); @@ -49,9 +44,9 @@ public function execute(CommandSender $sender, string $commandLabel, array $args */ if ($sender instanceof Player && $sender->hasPermission(SimpleWarpPermissions::LIST_WARPS_COMMAND_VISUAL) && isset($args[0]) && $args[0] === "v") { foreach ($iterator as $warp) { - if ($warp->getDestination()->isInternal() && $warp->getDestination()->getPosition()->getLevel() === $sender->getLevel()) { - $particle = new FloatingTextParticle($warp->getDestination()->getPosition(), "(X: {$warp->getDestination()->getPosition()->getFloorX()}}, Y: {$warp->getDestination()->getPosition()->getFloorY()}, Z: {$warp->getDestination()->getPosition()->getFloorZ()}, LEVEL: {$warp->getDestination()->getPosition()->getLevel()->getName()})", "WARP: " . TextFormat::AQUA . $warp->getName() . TextFormat::RESET); - $sender->getLevel()->addParticle($particle, [$sender]); + if ($warp->getDestination()->isInternal() && $warp->getDestination()->getPosition()->getWorld() === $sender->getWorld()) { + $particle = new FloatingTextParticle("(X: {$warp->getDestination()->getPosition()->getFloorX()}}, Y: {$warp->getDestination()->getPosition()->getFloorY()}, Z: {$warp->getDestination()->getPosition()->getFloorZ()}, WORLD: {$warp->getDestination()->getPosition()->getWorld()->getDisplayName()})", "WARP: " . TextFormat::AQUA . $warp->getName() . TextFormat::RESET); + $sender->getWorld()->addParticle($warp->getDestination()->getPosition(), $particle, [$sender]); } } } @@ -63,11 +58,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args } } - - /** - * @return \pocketmine\plugin\Plugin - */ - public function getPlugin(): Plugin{ + public function getOwningPlugin(): Plugin{ return $this->api->getSimpleWarp(); } } \ No newline at end of file diff --git a/src/falkirks/simplewarp/command/OpenWarpCommand.php b/src/falkirks/simplewarp/command/OpenWarpCommand.php index 0a55c4f..eb0817f 100644 --- a/src/falkirks/simplewarp/command/OpenWarpCommand.php +++ b/src/falkirks/simplewarp/command/OpenWarpCommand.php @@ -5,17 +5,13 @@ use falkirks\simplewarp\api\SimpleWarpAPI; use falkirks\simplewarp\event\WarpOpenEvent; use falkirks\simplewarp\permission\SimpleWarpPermissions; -use falkirks\simplewarp\SimpleWarp; use falkirks\simplewarp\Version; use falkirks\simplewarp\Warp; -use pocketmine\command\Command; use pocketmine\command\CommandSender; -use pocketmine\command\PluginIdentifiableCommand; -use pocketmine\utils\TextFormat; use pocketmine\plugin\Plugin; class OpenWarpCommand extends SimpleWarpCommand { - private $api; + private SimpleWarpAPI $api; public function __construct(SimpleWarpAPI $api){ parent::__construct($api->executeTranslationItem("openwarp-cmd"), $api->executeTranslationItem("openwarp-desc"), $api->executeTranslationItem("openwarp-usage")); $this->api = $api; @@ -25,8 +21,6 @@ public function __construct(SimpleWarpAPI $api){ * @param CommandSender $sender * @param string $commandLabel * @param string[] $args - * - * @return mixed */ public function execute(CommandSender $sender, string $commandLabel, array $args) { if(parent::execute($sender, $commandLabel, $args)) { @@ -36,7 +30,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args /** @var Warp $warp */ $warp = $this->api->getWarpManager()[$args[0]]; $ev = new WarpOpenEvent($sender, $warp); - $this->getPlugin()->getServer()->getPluginManager()->callEvent($ev); + $ev->call(); if (!$ev->isCancelled()) { $warp->setPublic(true); $sender->sendMessage($this->api->executeTranslationItem("opened-warp-1", $args[0])); @@ -61,11 +55,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args } } - - /** - * @return \pocketmine\plugin\Plugin - */ - public function getPlugin(): Plugin{ + public function getOwningPlugin(): Plugin{ return $this->api->getSimpleWarp(); } } \ No newline at end of file diff --git a/src/falkirks/simplewarp/command/SimpleWarpCommand.php b/src/falkirks/simplewarp/command/SimpleWarpCommand.php index 456a99e..46af3b6 100644 --- a/src/falkirks/simplewarp/command/SimpleWarpCommand.php +++ b/src/falkirks/simplewarp/command/SimpleWarpCommand.php @@ -2,15 +2,11 @@ namespace falkirks\simplewarp\command; -use falkirks\simplewarp\SimpleWarp; use pocketmine\command\Command; use pocketmine\command\CommandSender; -use pocketmine\command\PluginIdentifiableCommand; -use pocketmine\plugin\PluginException; -use pocketmine\utils\TextFormat; -use pocketmine\plugin\Plugin; +use pocketmine\plugin\PluginOwned; -abstract class SimpleWarpCommand extends Command implements PluginIdentifiableCommand { +abstract class SimpleWarpCommand extends Command implements PluginOwned { /** * @param CommandSender $sender @@ -20,12 +16,10 @@ abstract class SimpleWarpCommand extends Command implements PluginIdentifiableCo * @return mixed */ public function execute(CommandSender $sender, string $commandLabel, array $args) { - if($this->getPlugin()->isDisabled()){ - $sender->sendMessage($this->getPlugin()->getApi()->executeTranslationItem("plugin-disabled")); + if($this->getOwningPlugin()->isDisabled()){ + $sender->sendMessage($this->getOwningPlugin()->getApi()->executeTranslationItem("plugin-disabled")); return false; } return true; } - - public abstract function getPlugin(): Plugin; } \ No newline at end of file diff --git a/src/falkirks/simplewarp/command/WarpCommand.php b/src/falkirks/simplewarp/command/WarpCommand.php index 99aa26f..e54c703 100644 --- a/src/falkirks/simplewarp/command/WarpCommand.php +++ b/src/falkirks/simplewarp/command/WarpCommand.php @@ -8,21 +8,16 @@ use falkirks\simplewarp\task\CommandWarpTask; use falkirks\simplewarp\Version; use falkirks\simplewarp\Warp; -use pocketmine\command\Command; use pocketmine\command\CommandSender; -use pocketmine\command\PluginIdentifiableCommand; -use pocketmine\level\particle\ExplodeParticle; -use pocketmine\level\particle\FloatingTextParticle; -use pocketmine\level\particle\SmokeParticle; -use pocketmine\level\Position; +use pocketmine\world\particle\SmokeParticle; +use pocketmine\world\Position; use pocketmine\math\Vector3; -use pocketmine\Player; +use pocketmine\player\Player; use pocketmine\utils\Random; -use pocketmine\utils\TextFormat; use pocketmine\plugin\Plugin; class WarpCommand extends SimpleWarpCommand { - protected $api; + protected SimpleWarpAPI $api; public function __construct(SimpleWarpAPI $api) { parent::__construct($api->executeTranslationItem("warp-cmd"), $api->executeTranslationItem("warp-desc"), $api->executeTranslationItem("warp-usage")); @@ -33,21 +28,22 @@ public function __construct(SimpleWarpAPI $api) { * @param CommandSender $sender * @param string $commandLabel * @param string[] $args - * - * @return mixed */ public function execute(CommandSender $sender, string $commandLabel, array $args) { if (parent::execute($sender, $commandLabel, $args)) { if ($sender->hasPermission(SimpleWarpPermissions::WARP_COMMAND)) { if (isset($args[0])) { if (isset($this->api->getWarpManager()[$args[0]])) { + /** @var SimpleWarp $plugin */ + $plugin = $this->getOwningPlugin(); if (isset($args[1])) { if ($sender->hasPermission(SimpleWarpPermissions::WARP_OTHER_COMMAND)) { - if (($player = $this->api->getSimpleWarp()->getServer()->getPlayer($args[1])) instanceof Player) { + if (($player = $this->api->getSimpleWarp()->getServer()->getPlayerExact($args[1])) instanceof Player) { /** @var Warp $warp */ $warp = $this->api->getWarpManager()[$args[0]]; if ($warp->canUse($sender)) { - $task = new CommandWarpTask($this->getPlugin(), $warp, $player, $sender); + + $task = new CommandWarpTask($plugin, $warp, $player, $sender); $task->run(); } else { @@ -66,7 +62,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args /** @var Warp $warp */ $warp = $this->api->getWarpManager()[$args[0]]; if ($warp->canUse($sender)) { - $task = new CommandWarpTask($this->getPlugin(), $warp, $sender, $sender); + $task = new CommandWarpTask($plugin, $warp, $sender, $sender); $task->run(); } else { @@ -97,21 +93,18 @@ public function displaySmoke(Position $pos) { //particle smoke 120 71 124 1 1 1 35 200 $random = new Random((int)(microtime(true) * 1000) + mt_rand()); - $particle = new SmokeParticle(new Vector3($pos->x, $pos->y + 0.7, $pos->z), 200); + $particle = new SmokeParticle(200); for ($i = 0; $i < 35; ++$i) { - $particle->setComponents( + $vec = new Vector3( $pos->x + $random->nextSignedFloat(), $pos->y + $random->nextSignedFloat(), $pos->z + $random->nextSignedFloat() ); - $pos->getLevel()->addParticle($particle); + $pos->getWorld()->addParticle($vec, $particle); } } - /** - * @return \pocketmine\plugin\Plugin - */ - public function getPlugin(): Plugin{ + public function getOwningPlugin(): Plugin{ return $this->api->getSimpleWarp(); } } \ No newline at end of file diff --git a/src/falkirks/simplewarp/command/WarpReportCommand.php b/src/falkirks/simplewarp/command/WarpReportCommand.php index 78df390..5f70820 100644 --- a/src/falkirks/simplewarp/command/WarpReportCommand.php +++ b/src/falkirks/simplewarp/command/WarpReportCommand.php @@ -3,21 +3,14 @@ namespace falkirks\simplewarp\command; use falkirks\simplewarp\api\SimpleWarpAPI; -use falkirks\simplewarp\event\WarpCloseEvent; use falkirks\simplewarp\permission\SimpleWarpPermissions; -use falkirks\simplewarp\SimpleWarp; -use falkirks\simplewarp\Version; -use falkirks\simplewarp\Warp; -use pocketmine\command\Command; use pocketmine\command\CommandSender; -use pocketmine\command\ConsoleCommandSender; -use pocketmine\command\PluginIdentifiableCommand; -use pocketmine\utils\TextFormat; +use pocketmine\console\ConsoleCommandSender; use pocketmine\utils\Utils; use pocketmine\plugin\Plugin; class WarpReportCommand extends SimpleWarpCommand { - private $api; + private SimpleWarpAPI $api; public function __construct(SimpleWarpAPI $api){ parent::__construct($api->executeTranslationItem("warpreport-cmd"), $api->executeTranslationItem("warpreport-desc"), $api->executeTranslationItem("warpreport-usage")); $this->api = $api; @@ -27,13 +20,11 @@ public function __construct(SimpleWarpAPI $api){ * @param CommandSender $sender * @param string $commandLabel * @param string[] $args - * - * @return mixed */ public function execute(CommandSender $sender, string $commandLabel, array $args) { if(parent::execute($sender, $commandLabel, $args)) { if ($sender->hasPermission(SimpleWarpPermissions::WARP_REPORT_COMMAND)) { - $data = $this->getPlugin()->getDebugDumpFactory()->generate(); + $data = $this->getOwningPlugin()->getDebugDumpFactory()->generate(); if ($sender instanceof ConsoleCommandSender) { $issueContent = "\n\n(Explain your problem here)\n\n```\n$data\n```"; $url = "https://github.com/Falkirks/SimpleWarp/issues/new" . (count($args) > 0 ? "?title=" . urlencode(implode(" ", $args)) . "\&" : "?") . "body=" . urlencode($issueContent); @@ -61,15 +52,10 @@ public function execute(CommandSender $sender, string $commandLabel, array $args else { $sender->sendMessage($this->api->executeTranslationItem("warpreport-noperm")); } - return true; } } - - /** - * @return \pocketmine\plugin\Plugin - */ - public function getPlugin(): Plugin{ + public function getOwningPlugin(): Plugin{ return $this->api->getSimpleWarp(); } } \ No newline at end of file diff --git a/src/falkirks/simplewarp/command/essentials/EssentialsDelWarpCommand.php b/src/falkirks/simplewarp/command/essentials/EssentialsDelWarpCommand.php index 807a900..ad869a7 100644 --- a/src/falkirks/simplewarp/command/essentials/EssentialsDelWarpCommand.php +++ b/src/falkirks/simplewarp/command/essentials/EssentialsDelWarpCommand.php @@ -50,7 +50,7 @@ private function getEssWarpName($loader, $string){ } private function getEssAPI(){ - $ess = $this->getPlugin()->getServer()->getPluginManager()->getPlugin("EssentialsPE"); + $ess = $this->getOwningPlugin()->getServer()->getPluginManager()->getPlugin("EssentialsPE"); if(method_exists($ess, "getAPI")){ return $ess->getAPI(); } diff --git a/src/falkirks/simplewarp/event/PlayerWarpEvent.php b/src/falkirks/simplewarp/event/PlayerWarpEvent.php index a45d989..7395b11 100644 --- a/src/falkirks/simplewarp/event/PlayerWarpEvent.php +++ b/src/falkirks/simplewarp/event/PlayerWarpEvent.php @@ -5,10 +5,14 @@ use falkirks\simplewarp\Destination; use falkirks\simplewarp\Warp; use pocketmine\event\Cancellable; +use pocketmine\event\CancellableTrait; use pocketmine\event\player\PlayerEvent; -use pocketmine\Player; +use pocketmine\player\Player; class PlayerWarpEvent extends PlayerEvent implements Cancellable{ + + use CancellableTrait; + public static $handlerList = null; /** @var Warp */ private $warp; diff --git a/src/falkirks/simplewarp/event/WarpAddEvent.php b/src/falkirks/simplewarp/event/WarpAddEvent.php index 2c5f489..aa6a283 100644 --- a/src/falkirks/simplewarp/event/WarpAddEvent.php +++ b/src/falkirks/simplewarp/event/WarpAddEvent.php @@ -5,8 +5,12 @@ use falkirks\simplewarp\Warp; use pocketmine\command\CommandSender; use pocketmine\event\Cancellable; +use pocketmine\event\CancellableTrait; class WarpAddEvent extends WarpEvent implements Cancellable{ + + use CancellableTrait; + public static $handlerList = null; /** @var CommandSender */ private $sender; diff --git a/src/falkirks/simplewarp/event/WarpCloseEvent.php b/src/falkirks/simplewarp/event/WarpCloseEvent.php index 722bc9b..186a4cb 100644 --- a/src/falkirks/simplewarp/event/WarpCloseEvent.php +++ b/src/falkirks/simplewarp/event/WarpCloseEvent.php @@ -5,8 +5,12 @@ use falkirks\simplewarp\Warp; use pocketmine\command\CommandSender; use pocketmine\event\Cancellable; +use pocketmine\event\CancellableTrait; class WarpCloseEvent extends WarpEvent implements Cancellable{ + + use CancellableTrait; + public static $handlerList = null; /** @var CommandSender */ private $sender; diff --git a/src/falkirks/simplewarp/event/WarpDeleteEvent.php b/src/falkirks/simplewarp/event/WarpDeleteEvent.php index b12b916..e3aa3e8 100644 --- a/src/falkirks/simplewarp/event/WarpDeleteEvent.php +++ b/src/falkirks/simplewarp/event/WarpDeleteEvent.php @@ -5,8 +5,12 @@ use falkirks\simplewarp\Warp; use pocketmine\command\CommandSender; use pocketmine\event\Cancellable; +use pocketmine\event\CancellableTrait; class WarpDeleteEvent extends WarpEvent implements Cancellable{ + + use CancellableTrait; + public static $handlerList = null; /** @var CommandSender */ diff --git a/src/falkirks/simplewarp/event/WarpOpenEvent.php b/src/falkirks/simplewarp/event/WarpOpenEvent.php index 5c3f5e6..9855158 100644 --- a/src/falkirks/simplewarp/event/WarpOpenEvent.php +++ b/src/falkirks/simplewarp/event/WarpOpenEvent.php @@ -6,8 +6,12 @@ use falkirks\simplewarp\Warp; use pocketmine\command\CommandSender; use pocketmine\event\Cancellable; +use pocketmine\event\CancellableTrait; class WarpOpenEvent extends WarpEvent implements Cancellable{ + + use CancellableTrait; + public static $handlerList = null; /** @var CommandSender */ diff --git a/src/falkirks/simplewarp/lang/TranslationManager.php b/src/falkirks/simplewarp/lang/TranslationManager.php index 6e0091a..2fb0e52 100644 --- a/src/falkirks/simplewarp/lang/TranslationManager.php +++ b/src/falkirks/simplewarp/lang/TranslationManager.php @@ -41,8 +41,9 @@ public function execute($name, ...$args): string{ protected function registerDefaults(){ $this->registerDefault("addwarp-cmd", "addwarp"); $this->registerDefault("addwarp-desc", "Add new warps."); - $this->registerDefault("addwarp-usage", "/addwarp [ | |]"); + $this->registerDefault("addwarp-usage", "/addwarp [ | |]"); $this->registerDefault("addwarp-event-cancelled", "A plugin has cancelled the creation of this warp."); + $this->registerDefault("addwarp-no-perm", TextFormat::RED . "You don't have permission to use this command" . TextFormat::RESET); $this->registerDefault("closewarp-cmd", "closewarp"); $this->registerDefault("closewarp-desc", "Close existing warps."); @@ -75,7 +76,7 @@ protected function registerDefaults(){ $this->registerDefault("warp-added-server", "You have created a warp called " . TextFormat::AQUA . "%s" . TextFormat::RESET . " %s"); $this->registerDefault("warp-added-self", "You have created a warp called " . TextFormat::AQUA . "%s" . TextFormat::RESET . " %s"); - $this->registerDefault("level-not-loaded", TextFormat::RED . "You specified a level which isn't loaded.\nPlease see http://bit.ly/levelerror for explanation." . TextFormat::RESET); + $this->registerDefault("world-not-loaded", TextFormat::RED . "You specified a world which isn't loaded.\nPlease see http://bit.ly/levelerror for explanation." . TextFormat::RESET); $this->registerDefault("needs-external-warps", "This warp needs " . TextFormat::AQUA . "FastTransfer" . TextFormat::RESET . " or a newer version of PocketMine."); @@ -104,7 +105,7 @@ protected function registerDefaults(){ $this->registerDefault("warp-done", "You have been warped"); $this->registerDefault("warp-noperm", TextFormat::RED . "You don't have permission to use this command" . TextFormat::RESET); - $this->registerDefault("level-not-loaded-warp", "The warp you are using is attached to a level which isn't loaded"); + $this->registerDefault("world-not-loaded-warp", "The warp you are using is attached to a world which isn't loaded"); $this->registerDefault("ess-warp-doesnt-exist", TextFormat::RED . "That warp doesn't exist." . TextFormat::RESET); $this->registerDefault("ess-warp-conflict", "The warp called " . TextFormat::AQUA . "%s" . TextFormat::RESET . " exists in both " . TextFormat::AQUA . "EssentialsPE" . TextFormat::RESET . " and " . TextFormat::AQUA . "SimpleWarp" . TextFormat::RESET . ". The one from " . TextFormat::AQUA . "SimpleWarp" . TextFormat::RESET . " will be used by default. If you wish to use the " . TextFormat::AQUA . "EssentialsPE" . TextFormat::RESET . " warp, prefix the warp name with " . TextFormat::DARK_AQUA . "ess:" . TextFormat::RESET); diff --git a/src/falkirks/simplewarp/task/CommandWarpTask.php b/src/falkirks/simplewarp/task/CommandWarpTask.php index 896a2cb..0f2ed28 100644 --- a/src/falkirks/simplewarp/task/CommandWarpTask.php +++ b/src/falkirks/simplewarp/task/CommandWarpTask.php @@ -5,11 +5,10 @@ use falkirks\simplewarp\SimpleWarp; use falkirks\simplewarp\Warp; use pocketmine\command\CommandSender; -use pocketmine\level\particle\SmokeParticle; -use pocketmine\level\Position; +use pocketmine\world\particle\SmokeParticle; +use pocketmine\world\Position; use pocketmine\math\Vector3; -use pocketmine\network\mcpe\protocol\PlaySoundPacket; -use pocketmine\Player; +use pocketmine\player\Player; use pocketmine\utils\Random; class CommandWarpTask extends PlayerWarpTask{ @@ -33,11 +32,9 @@ public function __construct(SimpleWarp $plugin, Warp $warp, Player $player, Comm /** * Actions to execute when run * - * @param $currentTick - * * @return void */ - public function onRun(int $currentTick){ + public function onRun(): void { if($this->player instanceof Player && $this->player->isOnline()){ if(!$this->getSimpleWarp()->getConfig()->get("hold-still-enabled") || $this->player->getPosition()->equals($this->position)) { @@ -69,14 +66,14 @@ public function displaySmoke(Position $pos){ //particle smoke 120 71 124 1 1 1 35 200 $random = new Random((int) (microtime(true) * 1000) + mt_rand()); - $particle = new SmokeParticle(new Vector3($pos->x, $pos->y + 0.7, $pos->z), 200); + $particle = new SmokeParticle(200); for($i = 0; $i < 35; ++$i){ - $particle->setComponents( + $vec = new Vector3( $pos->x + $random->nextSignedFloat(), $pos->y + $random->nextSignedFloat(), $pos->z + $random->nextSignedFloat() ); - $pos->getLevel()->addParticle($particle); + $pos->getWorld()->addParticle($vec, $particle); } } diff --git a/src/falkirks/simplewarp/task/PlayerWarpTask.php b/src/falkirks/simplewarp/task/PlayerWarpTask.php index 1953b01..72d720e 100644 --- a/src/falkirks/simplewarp/task/PlayerWarpTask.php +++ b/src/falkirks/simplewarp/task/PlayerWarpTask.php @@ -4,7 +4,7 @@ use falkirks\simplewarp\SimpleWarp; use falkirks\simplewarp\Warp; -use pocketmine\Player; +use pocketmine\player\Player; use pocketmine\scheduler\Task; class PlayerWarpTask extends Task { @@ -23,11 +23,9 @@ public function __construct(SimpleWarp $plugin, Warp $warp, Player $player){ /** * Actions to execute when run * - * @param $currentTick - * * @return void */ - public function onRun(int $currentTick){ + public function onRun(): void { if($this->player instanceof Player && $this->player->isOnline()){ if(!$this->getSimpleWarp()->getConfig()->get("hold-still-enabled") || $this->player->getPosition()->equals($this->position)){ $this->warp->teleport($this->player); diff --git a/src/falkirks/simplewarp/utils/WeakPosition.php b/src/falkirks/simplewarp/utils/WeakPosition.php index 0c1d784..b9a4058 100644 --- a/src/falkirks/simplewarp/utils/WeakPosition.php +++ b/src/falkirks/simplewarp/utils/WeakPosition.php @@ -2,8 +2,8 @@ namespace falkirks\simplewarp\utils; -use pocketmine\level\Level; -use pocketmine\level\Position; +use pocketmine\world\World; +use pocketmine\world\Position; use pocketmine\Server; /** @@ -14,24 +14,24 @@ * @package falkirks\simplewarp\utils */ class WeakPosition extends Position{ - public $level; - public $levelName; + public $world; + public $worldName; public function __construct(float $x = 0, float $y = 0, float $z = 0, $levelName){ parent::__construct($x, $y, $z, null); - $this->levelName = $levelName; + $this->worldName = $levelName; } public function isValid(): bool { - return Server::getInstance()->getLevelByName($this->levelName) instanceof Level; + return Server::getInstance()->getWorldManager()->getWorldByName($this->worldName) instanceof World; } public function updateProperties(){ - $this->level = $this->getLevel(); + $this->world = $this->getWorld(); } - public function getLevel(): Level{ - return Server::getInstance()->getLevelByName($this->levelName); + public function getWorld(): World{ + return Server::getInstance()->getWorldManager()->getWorldByName($this->worldName); } - public function getLevelName(){ - return $this->levelName; + public function getWorldName(){ + return $this->worldName; } } \ No newline at end of file