Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix it ty #11

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
6 changes: 2 additions & 4 deletions .poggit.yml
Original file line number Diff line number Diff line change
@@ -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
...
...
13 changes: 5 additions & 8 deletions plugin.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
---
name: PlayerSelectors
author: Ad5001
version: 1.0
api: [3.0.0-ALPHA9]
main: Ad5001\PlayerSelectors\Main
commands: []
permissions: []
...
author: Ad5001
version: 1.0.8
api:
- 3.0.0
main: Ad5001\PlayerSelectors\Main
33 changes: 17 additions & 16 deletions src/Ad5001/PlayerSelectors/Main.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@

namespace Ad5001\PlayerSelectors;

use pocketmine\command\ConsoleCommandSender;
use pocketmine\event\server\CommandEvent;
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;


use Ad5001\PlayerSelectors\selector\Selector;
Expand Down Expand Up @@ -58,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();
}
Expand All @@ -83,14 +84,13 @@ 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){
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));
foreach(self::$selectors[$matches[1][$indexB]]->applySelector($sender, $params) as $selectorStr){
$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;
}
}
Expand All @@ -105,12 +105,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?
Expand Down
1 change: 0 additions & 1 deletion src/Ad5001/PlayerSelectors/selector/AllPlayers.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

use pocketmine\command\CommandSender;
use pocketmine\Server;
use pocketmine\Player;
use pocketmine\level\Position;


Expand Down
4 changes: 2 additions & 2 deletions src/Ad5001/PlayerSelectors/selector/ClosestPlayer.php
Original file line number Diff line number Diff line change
Expand Up @@ -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()];
Expand Down
3 changes: 1 addition & 2 deletions src/Ad5001/PlayerSelectors/selector/Entities.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

use pocketmine\command\CommandSender;
use pocketmine\Server;
use pocketmine\Player;
use pocketmine\level\Position;

use Ad5001\PlayerSelectors\Main;
Expand Down Expand Up @@ -40,7 +39,7 @@ 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.
Expand Down
1 change: 0 additions & 1 deletion src/Ad5001/PlayerSelectors/selector/RandomPlayer.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

use pocketmine\command\CommandSender;
use pocketmine\Server;
use pocketmine\Player;
use pocketmine\level\Position;


Expand Down
6 changes: 3 additions & 3 deletions src/Ad5001/PlayerSelectors/selector/Selector.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 0 additions & 2 deletions src/Ad5001/PlayerSelectors/selector/SelfSelector.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
namespace Ad5001\PlayerSelectors\selector;

use pocketmine\command\CommandSender;
use pocketmine\Server;
use pocketmine\Player;

class SelfSelector extends Selector{

Expand Down
1 change: 0 additions & 1 deletion src/Ad5001/PlayerSelectors/selector/WorldPlayers.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

use pocketmine\command\CommandSender;
use pocketmine\Server;
use pocketmine\Player;
use pocketmine\level\Position;


Expand Down