From 9e99252817a2ddce741288e147556bc4b5235663 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 11 Jun 2017 10:56:16 +0100 Subject: [PATCH] Improved ListCommand and fixed crash when no players are online I <3 closures --- .../command/defaults/ListCommand.php | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/pocketmine/command/defaults/ListCommand.php b/src/pocketmine/command/defaults/ListCommand.php index 7945f5d29..550347b7e 100644 --- a/src/pocketmine/command/defaults/ListCommand.php +++ b/src/pocketmine/command/defaults/ListCommand.php @@ -43,18 +43,14 @@ class ListCommand extends VanillaCommand{ return true; } - $online = ""; - $onlineCount = 0; + $playerNames = array_map(function(Player $player){ + return $player->getName(); + }, array_filter($sender->getServer()->getOnlinePlayers(), function(Player $player) use ($sender){ + return $player->isOnline() and (!($sender instanceof Player) or $sender->canSee($player)); + })); - foreach($sender->getServer()->getOnlinePlayers() as $player){ - if($player->isOnline() and (!($sender instanceof Player) or $sender->canSee($player))){ - $online .= $player->getDisplayName() . ", "; - ++$onlineCount; - } - } - - $sender->sendMessage(new TranslationContainer("commands.players.list", [$onlineCount, $sender->getServer()->getMaxPlayers()])); - $sender->sendMessage(substr($online, 0, -2)); + $sender->sendMessage(new TranslationContainer("commands.players.list", [count($playerNames), $sender->getServer()->getMaxPlayers()])); + $sender->sendMessage(implode(", ", $playerNames)); return true; }