diff --git a/src/PocketMine/Server.php b/src/PocketMine/Server.php index f8405b68a7..b0048e188f 100644 --- a/src/PocketMine/Server.php +++ b/src/PocketMine/Server.php @@ -33,6 +33,7 @@ use PocketMine\Command\PluginCommand; use PocketMine\Command\SimpleCommandMap; use PocketMine\Entity\Entity; use PocketMine\Event\Event; +use PocketMine\Event\HandlerList; use PocketMine\Event\Server\PacketReceiveEvent; use PocketMine\Event\Server\PacketSendEvent; use PocketMine\Item\Item; @@ -672,6 +673,7 @@ class Server{ $level->unload(true); } + HandlerList::unregisterAll(); $this->scheduler->cancelAllTasks(); $this->scheduler->mainThreadHeartbeat(PHP_INT_MAX); diff --git a/src/PocketMine/command/SimpleCommandMap.php b/src/PocketMine/command/SimpleCommandMap.php index 3a64a72f43..b2378f3cba 100644 --- a/src/PocketMine/command/SimpleCommandMap.php +++ b/src/PocketMine/command/SimpleCommandMap.php @@ -23,6 +23,7 @@ namespace PocketMine\Command; use PocketMine\Command\Defaults\PluginsCommand; use PocketMine\Command\Defaults\StopCommand; +use PocketMine\Command\Defaults\TellCommand; use PocketMine\Command\Defaults\VanillaCommand; use PocketMine\Command\Defaults\VersionCommand; use PocketMine\Command\Defaults\SeedCommand; @@ -53,6 +54,7 @@ class SimpleCommandMap implements CommandMap{ $this->register("pocketmine", new SeedCommand("seed")); $this->register("pocketmine", new HelpCommand("help")); $this->register("pocketmine", new StopCommand("stop")); + $this->register("pocketmine", new TellCommand("tell")); } diff --git a/src/PocketMine/command/defaults/TellCommand.php b/src/PocketMine/command/defaults/TellCommand.php new file mode 100644 index 0000000000..b7de801b99 --- /dev/null +++ b/src/PocketMine/command/defaults/TellCommand.php @@ -0,0 +1,64 @@ + ", + ["w", "msg"] + ); + $this->setPermission("pocketmine.command.tell"); + } + + public function execute(CommandSender $sender, $currentAlias, array $args){ + if(!$this->testPermission($sender)){ + return true; + } + + if(count($args) < 2){ + $sender->sendMessage(TextFormat::RED . "Usage: ".$this->usageMessage); + return false; + } + + $name = strtolower(array_shift($args)); + + $player = Player::get($name, true, false); + + if($player instanceof Player){ + $sender->sendMessage("[me -> ".$player->getName()."] ".implode($args)); + $player->sendMessage("[".$sender->getName()." -> me] ".implode($args)); + }else{ + $sender->sendMessage("There's no player by that name online."); + } + + return true; + } +} \ No newline at end of file diff --git a/src/PocketMine/event/Event.php b/src/PocketMine/event/Event.php index 274b00c19b..4270b0fcbc 100644 --- a/src/PocketMine/event/Event.php +++ b/src/PocketMine/event/Event.php @@ -19,6 +19,9 @@ * */ +/** + * Event related classes + */ namespace PocketMine\Event; abstract class Event{ diff --git a/src/PocketMine/permission/Permission.php b/src/PocketMine/permission/Permission.php index 4224b29d72..b56df1b3f4 100644 --- a/src/PocketMine/permission/Permission.php +++ b/src/PocketMine/permission/Permission.php @@ -19,6 +19,9 @@ * */ +/** + * Permission related classes + */ namespace PocketMine\Permission; use PocketMine\Server; diff --git a/src/PocketMine/plugin/Plugin.php b/src/PocketMine/plugin/Plugin.php index 1674a1b925..f987b2f5b7 100644 --- a/src/PocketMine/plugin/Plugin.php +++ b/src/PocketMine/plugin/Plugin.php @@ -19,6 +19,9 @@ * */ +/** + * Plugin related classes + */ namespace PocketMine\Plugin; diff --git a/src/PocketMine/scheduler/ServerScheduler.php b/src/PocketMine/scheduler/ServerScheduler.php index 9710e38b39..3b0b7e5004 100644 --- a/src/PocketMine/scheduler/ServerScheduler.php +++ b/src/PocketMine/scheduler/ServerScheduler.php @@ -19,6 +19,9 @@ * */ +/** + * Task scheduling related classes + */ namespace PocketMine\Scheduler; use PocketMine\Plugin\Plugin;