From 9093219a29ef1dc4e6e717981c25ed7fc84e9544 Mon Sep 17 00:00:00 2001 From: Matthww Date: Sun, 17 Mar 2019 20:45:56 +0100 Subject: [PATCH] Update 2.1.0 - Automatic updates of the models - Small improvements in the code --- README.md | 2 +- plugin.yml | 2 +- src/Matthww/PlayerInfo/PlayerInfo.php | 62 ++++++++----------- .../PlayerInfo/Tasks/FetchModelsTask.php | 33 ++++++++++ 4 files changed, 62 insertions(+), 37 deletions(-) create mode 100644 src/Matthww/PlayerInfo/Tasks/FetchModelsTask.php diff --git a/README.md b/README.md index c59effd..f11d270 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ We also have a shorter command:\ Name: Steve\ IP: 127.0.0.1\ -Ping: 46\ +Ping: 46ms\ OS: iOS\ Model: iPhone\ UI: Classic UI\ diff --git a/plugin.yml b/plugin.yml index 15f0ea6..a6fa030 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,5 +1,5 @@ name: PlayerInfo -version: 2.0.3 +version: 2.1.0 author: Matthww api: [3.0.0] description: Shows info about a certain player! diff --git a/src/Matthww/PlayerInfo/PlayerInfo.php b/src/Matthww/PlayerInfo/PlayerInfo.php index 1f70650..457906e 100644 --- a/src/Matthww/PlayerInfo/PlayerInfo.php +++ b/src/Matthww/PlayerInfo/PlayerInfo.php @@ -2,6 +2,9 @@ namespace Matthww\PlayerInfo; +use Matthww\PlayerInfo\Tasks\FetchModelsTask; +use Matthww\PlayerInfo\Tasks\LoadTask; +use Matthww\PlayerInfo\Tasks\SaveTask; use pocketmine\command\Command; use pocketmine\command\CommandSender; use pocketmine\command\ConsoleCommandSender; @@ -34,13 +37,17 @@ class PlayerInfo extends PluginBase implements Listener { $this->saveDefaultConfig(); } if(!file_exists($this->getDataFolder() . "models.yml")) { - $this->saveResource("models.yml", false); + $this->getLogger()->notice("downloading new models file..."); + $this->getServer()->getAsyncPool()->submitTask(new FetchModelsTask($this->getDataFolder())); + //$this->saveResource("models.yml", false); + } else { + $this->getServer()->getAsyncPool()->submitTask(new FetchModelsTask($this->getDataFolder())); + $this->getLogger()->notice("updating models file..."); } } public function onPacketReceived(DataPacketReceiveEvent $receiveEvent) { $pk = $receiveEvent->getPacket(); - if($pk instanceof LoginPacket) { $this->PlayerData[$pk->username] = $pk->clientData; } @@ -55,7 +62,7 @@ class PlayerInfo extends PluginBase implements Listener { $Controls = ["Unknown", "Mouse", "Touch", "Controller"]; $GUI = [-2 => "Minimum", -1 => "Medium", 0 => "Maximum"]; - $this->getScheduler()->scheduleTask(new Tasks\SaveTask( + $this->getScheduler()->scheduleTask(new SaveTask( $this, $player->getName(), $this->DeviceModel($cdata["DeviceModel"]), @@ -73,9 +80,8 @@ class PlayerInfo extends PluginBase implements Listener { if(isset($models[$model])) { return $models[$model]; - } else { - return $model; } + return $model; } public function onCommand(CommandSender $sender, Command $command, string $label, array $args): bool { @@ -86,35 +92,25 @@ class PlayerInfo extends PluginBase implements Listener { $Controls = ["Unknown", "Mouse", "Touch", "Controller"]; $GUI = [-2 => "Minimum", -1 => "Medium", 0 => "Maximum"]; - if($sender->hasPermission("playerinfo.use")) { - if($sender instanceof ConsoleCommandSender) { - if(isset($args[0])) { - $target = $this->getServer()->getPlayer($args[0]); - } else { - $sender->sendMessage(TF::RED . "[PlayerInfo] Please specify a player"); - return false; - } - } else { - if($sender instanceof Player and !isset($args[0])) { - $target = $sender->getPlayer(); - } else { - if($target = $this->getServer()->getPlayer($args[0])) { - //Nothing - } else { - if($this->getConfig()->get("Save") == true) { - $this->getScheduler()->scheduleTask(new Tasks\LoadTask($this, $sender, $args[0])); - return true; - } else { - $sender->sendMessage(TF::RED . "[PlayerInfo] Player is not online"); - return false; - } - } - } - } - } else { + if(!$sender->hasPermission("playerinfo.use")) { $sender->sendMessage(TF::RED . "[PlayerInfo] No permission"); return false; } + if(!isset($args[0])) { + $sender->sendMessage(TF::RED . "[PlayerInfo] Please specify a player"); + return false; + } + $target = $this->getServer()->getPlayer($args[0]); + + if(!$target instanceof Player) { + if($this->getConfig()->get("Save") == true) { + $this->getScheduler()->scheduleTask(new LoadTask($this, $sender, $args[0])); + return true; + } else { + $sender->sendMessage(TF::RED . "[PlayerInfo] Player is not online"); + return false; + } + } if($target instanceof Player) { $cdata = $this->PlayerData[$target->getName()]; $sender->sendMessage(TF::GREEN . TF::BOLD . "===" . TF::GREEN . "PlayerInfo" . TF::GREEN . TF::BOLD . "==="); @@ -149,10 +145,6 @@ class PlayerInfo extends PluginBase implements Listener { $sender->sendMessage(TF::AQUA . "Position: " . TF::RED . "X: " . $target->getFloorX() . ", Y: " . $target->getFloorY() . ", Z: " . $target->getFloorZ()); } $sender->sendMessage(TF::GREEN . TF::BOLD . "================"); - return true; - } else { - $sender->sendMessage(TF::RED . "[PlayerInfo] Player is not online"); - return false; } } return true; diff --git a/src/Matthww/PlayerInfo/Tasks/FetchModelsTask.php b/src/Matthww/PlayerInfo/Tasks/FetchModelsTask.php new file mode 100644 index 0000000..21a2624 --- /dev/null +++ b/src/Matthww/PlayerInfo/Tasks/FetchModelsTask.php @@ -0,0 +1,33 @@ +path = $path; + } + + public function onRun() { + $result = Internet::getURL("https://playerinfo.hillcraft.net/models.yml"); + if(!is_string($result)) { + $this->setResult(false); + return; + } + file_put_contents($this->path . "models.yml", $result); + $this->setResult(true); + } + + public function onCompletion(Server $server) { + if($this->getResult() === true) { + $server->getLogger()->notice("[PlayerInfo] Updated models to the latest version!"); + } else { // upon failure + $server->getLogger()->notice("[PlayerInfo] Failed to update models to the latest version!"); + } + } +}