From 2dc8eb7e4fa71a2451ce71b463c39fb13a61666a Mon Sep 17 00:00:00 2001 From: jasonwynn10 Date: Tue, 7 Jan 2020 20:04:27 -0500 Subject: [PATCH 01/13] Updated to API 3 & Patched index bug --- plugin.yml | 13 +++++-------- src/Ad5001/PlayerSelectors/Main.php | 6 +++--- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/plugin.yml b/plugin.yml index ad87bb8..8160470 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,9 +1,6 @@ ---- name: PlayerSelectors -author: Ad5001 -version: 1.0 -api: [3.0.0-ALPHA9] -main: Ad5001\PlayerSelectors\Main -commands: [] -permissions: [] -... \ No newline at end of file +author: Ad5001 +version: 1.0.0 +api: +- 3.0.0 +main: Ad5001\PlayerSelectors\Main \ No newline at end of file diff --git a/src/Ad5001/PlayerSelectors/Main.php b/src/Ad5001/PlayerSelectors/Main.php index 323c111..f8cf041 100644 --- a/src/Ad5001/PlayerSelectors/Main.php +++ b/src/Ad5001/PlayerSelectors/Main.php @@ -83,14 +83,14 @@ public function execSelectors(string $m, CommandSender $sender): bool{ $params = self::$selectors[$matches[1][$index]]->acceptsModifiers() ? $this->checkArgParams($matches, $index): []; // Applying the selector $newCommandsToExecute = []; - foreach($commandsToExecute as $index => $cmd){ + foreach($commandsToExecute as $indexB => $cmd){ // Foreaching the returning commands to push them to the new commands to be executed at the next run. - foreach(self::$selectors[$matches[1][$index]]->applySelector($sender, $params) as $selectorStr){ + foreach(self::$selectors[$matches[1][$indexB]]->applySelector($sender, $params) as $selectorStr){ if(strpos($selectorStr, " ") !== -1) $selectorStr = explode(" ", $selectorStr)[count(explode(" ", $selectorStr)) - 1]; // Name w/ spaces. Match the nearest name in the player. Not perfect :/ $newCommandsToExecute[] = substr_replace($cmd, " " . $selectorStr . " ", strpos($cmd, $match), strlen($match)); } if(count($newCommandsToExecute) == 0) { - $sender->sendMessage("§cYour selector $match (" . self::$selectors[$matches[1][$index]]->getName() . ") did not mactch any player/entity."); + $sender->sendMessage("§cYour selector $match (" . self::$selectors[$matches[1][$indexB]]->getName() . ") did not match any player/entity."); return true; } } From aa2241521dfac9c6660113e1b0c563761b51e7bc Mon Sep 17 00:00:00 2001 From: poggit-bot Date: Tue, 7 Jan 2020 20:06:23 -0500 Subject: [PATCH 02/13] Create .poggit.yml Poggit-CI is enabled for this repo by @jasonwynn10 Visit the Poggit-CI page for this repo at https://poggit.pmmp.io/ci/poggit-orphanage/PlayerSelectors --- .poggit.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.poggit.yml b/.poggit.yml index da3ddbd..7decc7b 100644 --- a/.poggit.yml +++ b/.poggit.yml @@ -1,8 +1,6 @@ ---- # Poggit-CI Manifest. Open the CI at https://poggit.pmmp.io/ci/Ad5001/PlayerSelectors -branches: -- master +--- # Poggit-CI Manifest. Open the CI at https://poggit.pmmp.io/ci/poggit-orphanage/PlayerSelectors projects: PlayerSelectors: path: "" icon: icon.png -... +... \ No newline at end of file From d4f48da79cc012c1ce1b1efbd59d818506bc0094 Mon Sep 17 00:00:00 2001 From: Wertzui123 <46199283+Wertzui123@users.noreply.github.com> Date: Thu, 9 Jan 2020 21:27:58 +0100 Subject: [PATCH 03/13] Why eID? Removed the e befor the entity id --- src/Ad5001/PlayerSelectors/selector/Entities.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Ad5001/PlayerSelectors/selector/Entities.php b/src/Ad5001/PlayerSelectors/selector/Entities.php index a07b5ad..833f9bf 100644 --- a/src/Ad5001/PlayerSelectors/selector/Entities.php +++ b/src/Ad5001/PlayerSelectors/selector/Entities.php @@ -40,9 +40,9 @@ public function applySelector(CommandSender $sender, array $parameters = []): ar if($params["c"] !== 0 && count($return) == $params["c"]) continue; // Too much players if($e->getLevel()->getName() !== $params["lvl"] && $params["lvl"] !== "") continue; // Not in the right level if(!$this->checkDefaultParams($e, $params)) continue; - $return[] = "e" . $e->getId(); + $return[] = $e->getId(); } } return array_merge($return, Main::getSelector("a")->applySelector($sender, $parameters)); // Merging w/ all players so that it also adds players. } -} \ No newline at end of file +} From a30131c4fe852c5d2106f47f3c985720b83f405b Mon Sep 17 00:00:00 2001 From: Wertzui123 <46199283+Wertzui123@users.noreply.github.com> Date: Thu, 9 Jan 2020 21:30:02 +0100 Subject: [PATCH 04/13] Removed blank line at the end of the file From 3915457017cf03bd0ddf7a2e7a7b2382fceed9d7 Mon Sep 17 00:00:00 2001 From: Wertzui123 <46199283+Wertzui123@users.noreply.github.com> Date: Fri, 17 Jan 2020 13:31:32 +0100 Subject: [PATCH 05/13] Update Entities.php From 202ad996a2c02f4c109b0e17852524cfafdea1a5 Mon Sep 17 00:00:00 2001 From: jasonwynn10 Date: Sun, 30 Aug 2020 12:05:00 -0400 Subject: [PATCH 06/13] Fixed line ending --- src/Ad5001/PlayerSelectors/selector/Entities.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ad5001/PlayerSelectors/selector/Entities.php b/src/Ad5001/PlayerSelectors/selector/Entities.php index 833f9bf..c9ede79 100644 --- a/src/Ad5001/PlayerSelectors/selector/Entities.php +++ b/src/Ad5001/PlayerSelectors/selector/Entities.php @@ -45,4 +45,4 @@ public function applySelector(CommandSender $sender, array $parameters = []): ar } return array_merge($return, Main::getSelector("a")->applySelector($sender, $parameters)); // Merging w/ all players so that it also adds players. } -} +} \ No newline at end of file From c2bc3f86ef3e8ac87395aa9276af41921bacceaa Mon Sep 17 00:00:00 2001 From: jasonwynn10 Date: Sun, 30 Aug 2020 12:12:18 -0400 Subject: [PATCH 07/13] import cleanup --- src/Ad5001/PlayerSelectors/Main.php | 2 -- src/Ad5001/PlayerSelectors/selector/AllPlayers.php | 1 - src/Ad5001/PlayerSelectors/selector/Entities.php | 1 - src/Ad5001/PlayerSelectors/selector/RandomPlayer.php | 1 - src/Ad5001/PlayerSelectors/selector/SelfSelector.php | 2 -- src/Ad5001/PlayerSelectors/selector/WorldPlayers.php | 1 - 6 files changed, 8 deletions(-) diff --git a/src/Ad5001/PlayerSelectors/Main.php b/src/Ad5001/PlayerSelectors/Main.php index f8cf041..b180b09 100644 --- a/src/Ad5001/PlayerSelectors/Main.php +++ b/src/Ad5001/PlayerSelectors/Main.php @@ -5,8 +5,6 @@ use pocketmine\plugin\PluginBase; use pocketmine\event\Listener; -use pocketmine\Player; -use pocketmine\Server; use pocketmine\command\CommandSender; use pocketmine\event\player\PlayerCommandPreprocessEvent; use pocketmine\event\server\ServerCommandEvent; diff --git a/src/Ad5001/PlayerSelectors/selector/AllPlayers.php b/src/Ad5001/PlayerSelectors/selector/AllPlayers.php index a92d770..d6c8cfd 100644 --- a/src/Ad5001/PlayerSelectors/selector/AllPlayers.php +++ b/src/Ad5001/PlayerSelectors/selector/AllPlayers.php @@ -6,7 +6,6 @@ use pocketmine\command\CommandSender; use pocketmine\Server; -use pocketmine\Player; use pocketmine\level\Position; diff --git a/src/Ad5001/PlayerSelectors/selector/Entities.php b/src/Ad5001/PlayerSelectors/selector/Entities.php index c9ede79..2ada3f2 100644 --- a/src/Ad5001/PlayerSelectors/selector/Entities.php +++ b/src/Ad5001/PlayerSelectors/selector/Entities.php @@ -6,7 +6,6 @@ use pocketmine\command\CommandSender; use pocketmine\Server; -use pocketmine\Player; use pocketmine\level\Position; use Ad5001\PlayerSelectors\Main; diff --git a/src/Ad5001/PlayerSelectors/selector/RandomPlayer.php b/src/Ad5001/PlayerSelectors/selector/RandomPlayer.php index eebcd8f..7fe8b0a 100644 --- a/src/Ad5001/PlayerSelectors/selector/RandomPlayer.php +++ b/src/Ad5001/PlayerSelectors/selector/RandomPlayer.php @@ -6,7 +6,6 @@ use pocketmine\command\CommandSender; use pocketmine\Server; -use pocketmine\Player; use pocketmine\level\Position; diff --git a/src/Ad5001/PlayerSelectors/selector/SelfSelector.php b/src/Ad5001/PlayerSelectors/selector/SelfSelector.php index bf009bc..6c3d1d3 100644 --- a/src/Ad5001/PlayerSelectors/selector/SelfSelector.php +++ b/src/Ad5001/PlayerSelectors/selector/SelfSelector.php @@ -5,8 +5,6 @@ namespace Ad5001\PlayerSelectors\selector; use pocketmine\command\CommandSender; -use pocketmine\Server; -use pocketmine\Player; class SelfSelector extends Selector{ diff --git a/src/Ad5001/PlayerSelectors/selector/WorldPlayers.php b/src/Ad5001/PlayerSelectors/selector/WorldPlayers.php index 5a72ebf..548daf6 100644 --- a/src/Ad5001/PlayerSelectors/selector/WorldPlayers.php +++ b/src/Ad5001/PlayerSelectors/selector/WorldPlayers.php @@ -6,7 +6,6 @@ use pocketmine\command\CommandSender; use pocketmine\Server; -use pocketmine\Player; use pocketmine\level\Position; From aed68ca6d29a63735614ee45d4b332acb23df02f Mon Sep 17 00:00:00 2001 From: jasonwynn10 Date: Sun, 30 Aug 2020 12:12:47 -0400 Subject: [PATCH 08/13] properly return for bad coordinate ranges --- src/Ad5001/PlayerSelectors/selector/Selector.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Ad5001/PlayerSelectors/selector/Selector.php b/src/Ad5001/PlayerSelectors/selector/Selector.php index ef0edbd..4492451 100644 --- a/src/Ad5001/PlayerSelectors/selector/Selector.php +++ b/src/Ad5001/PlayerSelectors/selector/Selector.php @@ -105,9 +105,9 @@ abstract public function applySelector(CommandSender $sender, array $parameters public function checkDefaultParams(Entity $et, array $params): bool{ $dist = sqrt($et->distanceSquared(new Vector3($params["x"], $params["y"], $params["z"]))); if(($params["r"] !== 0 && $dist > $params["r"]) || $dist < $params["rm"]) return false; // Not in range - if($params["dx"] !== 0 && abs($et->x - $params["x"]) > $params["dx"]); // Not in x range - if($params["dy"] !== 0 && abs($et->y - $params["y"]) > $params["dy"]); // Not in y range - if($params["dz"] !== 0 && abs($et->z - $params["z"]) > $params["dz"]); // Not in z range + if($params["dx"] !== 0 && abs($et->x - $params["x"]) > $params["dx"]) return false; // Not in x range + if($params["dy"] !== 0 && abs($et->y - $params["y"]) > $params["dy"]) return false; // Not in y range + if($params["dz"] !== 0 && abs($et->z - $params["z"]) > $params["dz"]) return false; // Not in z range if($params["m"] !== -1 && $et instanceof Player && $et->getGamemode() !== $params["m"]) return false; // Not in the right mode. if($params["rx"] < $et->getPitch() || $et->getPitch() < $params["rxm"]) return false; // Not in range pitch if($params["ry"] < $et->getYaw() || $et->getYaw() < $params["rym"]) return false; // Not in range yaw From 6e779a8a1859f57ec4721bf3023e70b5c5126d0a Mon Sep 17 00:00:00 2001 From: jasonwynn10 Date: Sun, 30 Aug 2020 12:14:50 -0400 Subject: [PATCH 09/13] ServerCommandEvent is deprecated --- src/Ad5001/PlayerSelectors/Main.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Ad5001/PlayerSelectors/Main.php b/src/Ad5001/PlayerSelectors/Main.php index b180b09..5afb835 100644 --- a/src/Ad5001/PlayerSelectors/Main.php +++ b/src/Ad5001/PlayerSelectors/Main.php @@ -3,11 +3,12 @@ namespace Ad5001\PlayerSelectors; +use pocketmine\command\ConsoleCommandSender; +use pocketmine\event\server\CommandEvent; use pocketmine\plugin\PluginBase; use pocketmine\event\Listener; use pocketmine\command\CommandSender; use pocketmine\event\player\PlayerCommandPreprocessEvent; -use pocketmine\event\server\ServerCommandEvent; use Ad5001\PlayerSelectors\selector\Selector; @@ -56,11 +57,13 @@ public function onCommandPreProcess(PlayerCommandPreProcessEvent $event): void{ /** * When a command is executed, check for selectors * - * @param PlayerCommandPreProcessEvent $event + * @param CommandEvent $event * @priority HIGHEST * @return void */ - public function onServerCommand(ServerCommandEvent $event): void{ + public function onServerCommand(CommandEvent $event): void{ + if(!$event->getSender() instanceof ConsoleCommandSender) + return; $m = $event->getCommand(); if($this->execSelectors($m, $event->getSender())) $event->setCancelled(); } From f3efaf4202696280bff9a6c6dd45e0bf6b23a1ae Mon Sep 17 00:00:00 2001 From: jasonwynn10 Date: Sun, 30 Aug 2020 12:14:59 -0400 Subject: [PATCH 10/13] Fixed phpDoc --- src/Ad5001/PlayerSelectors/Main.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Ad5001/PlayerSelectors/Main.php b/src/Ad5001/PlayerSelectors/Main.php index 5afb835..bd6e2aa 100644 --- a/src/Ad5001/PlayerSelectors/Main.php +++ b/src/Ad5001/PlayerSelectors/Main.php @@ -106,12 +106,13 @@ public function execSelectors(string $m, CommandSender $sender): bool{ return true; } - /** - * Return all the params in an array form in a match. - * - * @param array $match - * @return void - */ + /** + * Return all the params in an array form in a match. + * + * @param array $match + * @param int $index + * @return array + */ public function checkArgParams(array $match, int $index): array{ $params = []; if(strlen($match[2][$index]) !== 0){ // Is there any command parameter? From c97d6351e126436a56021684c64690d4aa1560af Mon Sep 17 00:00:00 2001 From: jasonwynn10 Date: Sun, 30 Aug 2020 12:16:39 -0400 Subject: [PATCH 11/13] corrected variable name --- src/Ad5001/PlayerSelectors/selector/ClosestPlayer.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Ad5001/PlayerSelectors/selector/ClosestPlayer.php b/src/Ad5001/PlayerSelectors/selector/ClosestPlayer.php index abcdc87..06287ae 100644 --- a/src/Ad5001/PlayerSelectors/selector/ClosestPlayer.php +++ b/src/Ad5001/PlayerSelectors/selector/ClosestPlayer.php @@ -37,11 +37,11 @@ public function applySelector(CommandSender $sender, array $parameters = []): ar // Checking the closest player foreach($online as $p){ if($p->getLevel()->getName() == $sender->getLevel()->getName() && - (!isset($selectedP) || $p->distanceSquared($sender) < $selectorP->distanceSquared($sender))){ + (!isset($selectedP) || $p->distanceSquared($sender) < $selectedP->distanceSquared($sender))){ $selectedP = $p; } } - return [$selectorP->getName()]; + return [$selectedP->getName()]; } else { // Otherwise, just return sender's name because there's no other player. return [$sender->getName()]; From 3cdf31a1c3c5cc932fab91be57100ef4b3b88aaa Mon Sep 17 00:00:00 2001 From: jasonwynn10 Date: Sun, 30 Aug 2020 12:18:21 -0400 Subject: [PATCH 12/13] version bump for release --- plugin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.yml b/plugin.yml index 8160470..3009c87 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,6 +1,6 @@ name: PlayerSelectors author: Ad5001 -version: 1.0.0 +version: 1.0.8 api: - 3.0.0 main: Ad5001\PlayerSelectors\Main \ No newline at end of file From ec741cc8da3a6193f903be29dd26cdd930c18c87 Mon Sep 17 00:00:00 2001 From: Covered123 <58715544+JavierLeon9966@users.noreply.github.com> Date: Thu, 19 Aug 2021 18:12:02 -0300 Subject: [PATCH 13/13] Better fix for name w/ spaces --- src/Ad5001/PlayerSelectors/Main.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Ad5001/PlayerSelectors/Main.php b/src/Ad5001/PlayerSelectors/Main.php index bd6e2aa..ac96795 100644 --- a/src/Ad5001/PlayerSelectors/Main.php +++ b/src/Ad5001/PlayerSelectors/Main.php @@ -87,8 +87,7 @@ public function execSelectors(string $m, CommandSender $sender): bool{ foreach($commandsToExecute as $indexB => $cmd){ // Foreaching the returning commands to push them to the new commands to be executed at the next run. foreach(self::$selectors[$matches[1][$indexB]]->applySelector($sender, $params) as $selectorStr){ - if(strpos($selectorStr, " ") !== -1) $selectorStr = explode(" ", $selectorStr)[count(explode(" ", $selectorStr)) - 1]; // Name w/ spaces. Match the nearest name in the player. Not perfect :/ - $newCommandsToExecute[] = substr_replace($cmd, " " . $selectorStr . " ", strpos($cmd, $match), strlen($match)); + $newCommandsToExecute[] = substr_replace($cmd, " \"" . $selectorStr . "\" ", strpos($cmd, $match), strlen($match)); } if(count($newCommandsToExecute) == 0) { $sender->sendMessage("§cYour selector $match (" . self::$selectors[$matches[1][$indexB]]->getName() . ") did not match any player/entity.");