diff --git a/src/pocketmine/PocketMine.php b/src/pocketmine/PocketMine.php index 0361b9817..bc38ad95b 100644 --- a/src/pocketmine/PocketMine.php +++ b/src/pocketmine/PocketMine.php @@ -34,7 +34,7 @@ namespace { } echo str_repeat(" ", $cnt) . "}" . PHP_EOL; break; - case is_integer($var): + case is_int($var): echo str_repeat(" ", $cnt) . "int(" . $var . ")" . PHP_EOL; break; case is_float($var): @@ -74,7 +74,7 @@ namespace pocketmine { const VERSION = "1.5dev"; const API_VERSION = "1.12.0"; const CODENAME = "活発(Kappatsu)フグ(Fugu)"; - const MINECRAFT_VERSION = "v0.11.0 alpha build 1"; + const MINECRAFT_VERSION = "v0.11.0 alpha build 2"; /* * Startup code. Do not look at it, it may harm you. diff --git a/src/pocketmine/command/defaults/BanCommand.php b/src/pocketmine/command/defaults/BanCommand.php index 4ecbe95b7..a22269ac4 100644 --- a/src/pocketmine/command/defaults/BanCommand.php +++ b/src/pocketmine/command/defaults/BanCommand.php @@ -33,7 +33,7 @@ class BanCommand extends VanillaCommand{ parent::__construct( $name, "Prevents the specified player from using this server", - "/ban [reason...]" + "%commands.ban.usage" ); $this->setPermission("pocketmine.command.ban.player"); } @@ -55,10 +55,10 @@ class BanCommand extends VanillaCommand{ $sender->getServer()->getNameBans()->addBan($name, $reason, null, $sender->getName()); if(($player = $sender->getServer()->getPlayerExact($name)) instanceof Player){ - $player->kick("Banned by admin."); + $player->kick($reason !== "" ? "Banned by admin. Reason: " . $reason : "Banned by admin."); } - Command::broadcastCommandMessage($sender, "Banned player " . $name); + Command::broadcastCommandMessage($sender, new TranslationContainer("%commands.ban.success", [$player->getName()])); return true; } diff --git a/src/pocketmine/command/defaults/BanIpCommand.php b/src/pocketmine/command/defaults/BanIpCommand.php index 78f62cf55..0ce80b8a8 100644 --- a/src/pocketmine/command/defaults/BanIpCommand.php +++ b/src/pocketmine/command/defaults/BanIpCommand.php @@ -33,7 +33,7 @@ class BanIpCommand extends VanillaCommand{ parent::__construct( $name, "Prevents the specified IP address from using this server", - "/ban-ip [reason...]" + "%commands.banip.usage" ); $this->setPermission("pocketmine.command.ban.ip"); } @@ -54,11 +54,15 @@ class BanIpCommand extends VanillaCommand{ if(preg_match("/^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$/", $value)){ $this->processIPBan($value, $sender, $reason); + + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.banip.success", [$value])); }else{ if(($player = $sender->getServer()->getPlayer($value)) instanceof Player){ $this->processIPBan($player->getAddress(), $sender, $reason); + + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.banip.success.players", [$player->getAddress(), $player->getName()])); }else{ - $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); + $sender->sendMessage(new TranslationContainer("commands.banip.invalid")); return false; } @@ -72,12 +76,10 @@ class BanIpCommand extends VanillaCommand{ foreach($sender->getServer()->getOnlinePlayers() as $player){ if($player->getAddress() === $ip){ - $player->kick("You have been IP banned."); + $player->kick($reason !== "" ? $reason : "IP banned."); } } $sender->getServer()->getNetwork()->blockAddress($ip, -1); - - Command::broadcastCommandMessage($sender, "Banned IP Address " . $ip); } } \ No newline at end of file diff --git a/src/pocketmine/command/defaults/BanListCommand.php b/src/pocketmine/command/defaults/BanListCommand.php index 29324faa3..a57329227 100644 --- a/src/pocketmine/command/defaults/BanListCommand.php +++ b/src/pocketmine/command/defaults/BanListCommand.php @@ -22,6 +22,7 @@ namespace pocketmine\command\defaults; use pocketmine\command\CommandSender; +use pocketmine\event\TranslationContainer; class BanListCommand extends VanillaCommand{ @@ -30,7 +31,7 @@ class BanListCommand extends VanillaCommand{ parent::__construct( $name, "View all players banned from this server", - "/banlist [ips|players]" + "%commands.banlist.usage" ); $this->setPermission("pocketmine.command.ban.list"); } @@ -46,6 +47,10 @@ class BanListCommand extends VanillaCommand{ $list = $sender->getServer()->getIPBans(); }elseif($args[0] === "players"){ $list = $sender->getServer()->getNameBans(); + }else{ + $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); + + return false; } } @@ -55,7 +60,12 @@ class BanListCommand extends VanillaCommand{ $message .= $entry->getName() . ", "; } - $sender->sendMessage("There are " . count($list) . " total banned players:"); + if($args[0] === "ips"){ + $sender->sendMessage("commands.banlist.ips", [count($list)]); + }else{ + $sender->sendMessage("commands.banlist.players", [count($list)]); + } + $sender->sendMessage(substr($message, 0, -2)); return true; diff --git a/src/pocketmine/command/defaults/DefaultGamemodeCommand.php b/src/pocketmine/command/defaults/DefaultGamemodeCommand.php index a89bcbb4a..9a0cf612e 100644 --- a/src/pocketmine/command/defaults/DefaultGamemodeCommand.php +++ b/src/pocketmine/command/defaults/DefaultGamemodeCommand.php @@ -32,7 +32,7 @@ class DefaultGamemodeCommand extends VanillaCommand{ parent::__construct( $name, "Set the default gamemode", - "/defaultgamemode " + "%commands.defaultgamemode.usage" ); $this->setPermission("pocketmine.command.defaultgamemode"); } diff --git a/src/pocketmine/command/defaults/DeopCommand.php b/src/pocketmine/command/defaults/DeopCommand.php index 3e5d2570b..b9895e507 100644 --- a/src/pocketmine/command/defaults/DeopCommand.php +++ b/src/pocketmine/command/defaults/DeopCommand.php @@ -33,7 +33,7 @@ class DeopCommand extends VanillaCommand{ parent::__construct( $name, "Takes the specified player's operator status", - "/deop " + "%commands.deop.usage" ); $this->setPermission("pocketmine.command.op.take"); } @@ -54,9 +54,9 @@ class DeopCommand extends VanillaCommand{ $player = $sender->getServer()->getOfflinePlayer($name); $player->setOp(false); if($player instanceof Player){ - $player->sendMessage(TextFormat::YELLOW . "You are no longer op!"); + $player->sendMessage(TextFormat::GRAY . "You are no longer op!"); } - Command::broadcastCommandMessage($sender, "De-opped " . $player->getName()); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.deop.success", [$player->getName()])); return true; } diff --git a/src/pocketmine/command/defaults/DifficultyCommand.php b/src/pocketmine/command/defaults/DifficultyCommand.php index f581da36a..88ea457a1 100644 --- a/src/pocketmine/command/defaults/DifficultyCommand.php +++ b/src/pocketmine/command/defaults/DifficultyCommand.php @@ -21,6 +21,7 @@ namespace pocketmine\command\defaults; +use pocketmine\command\Command; use pocketmine\command\CommandSender; use pocketmine\event\TranslationContainer; use pocketmine\network\protocol\SetDifficultyPacket; @@ -33,7 +34,7 @@ class DifficultyCommand extends VanillaCommand{ parent::__construct( $name, "Sets the game difficulty", - "/difficulty " + "%commands.difficulty.usage" ); $this->setPermission("pocketmine.command.difficulty"); } @@ -57,12 +58,16 @@ class DifficultyCommand extends VanillaCommand{ if($difficulty !== -1){ $sender->getServer()->setConfigInt("difficulty", $difficulty); + $pk = new SetDifficultyPacket(); $pk->difficulty = $sender->getServer()->getDifficulty(); Server::broadcastPacket($sender->getServer()->getOnlinePlayers(), $pk); - $sender->sendMessage("Set difficulty to " . $difficulty); + + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.difficulty.success", [$difficulty])); }else{ - $sender->sendMessage("Unknown difficulty"); + $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); + + return false; } return true; diff --git a/src/pocketmine/command/defaults/EffectCommand.php b/src/pocketmine/command/defaults/EffectCommand.php index 31e08f322..3b7ebb769 100644 --- a/src/pocketmine/command/defaults/EffectCommand.php +++ b/src/pocketmine/command/defaults/EffectCommand.php @@ -53,7 +53,7 @@ class EffectCommand extends VanillaCommand{ $player = $sender->getServer()->getPlayer($args[0]); if($player === null){ - $sender->sendMessage(TextFormat::RED . "Player {$args[0]} not found"); + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.player.notFound")); return true; } diff --git a/src/pocketmine/command/defaults/GamemodeCommand.php b/src/pocketmine/command/defaults/GamemodeCommand.php index 7d33ea78c..22808853e 100644 --- a/src/pocketmine/command/defaults/GamemodeCommand.php +++ b/src/pocketmine/command/defaults/GamemodeCommand.php @@ -34,7 +34,7 @@ class GamemodeCommand extends VanillaCommand{ parent::__construct( $name, "Changes the player to a specific game mode", - "/gamemode [player]" + "%commands.gamemode.usage" ); $this->setPermission("pocketmine.command.gamemode"); } @@ -62,7 +62,7 @@ class GamemodeCommand extends VanillaCommand{ if(isset($args[1])){ $target = $sender->getServer()->getPlayer($args[1]); if($target === null){ - $sender->sendMessage("Can't find player " . $args[1]); + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.player.notFound")); return true; } @@ -72,21 +72,15 @@ class GamemodeCommand extends VanillaCommand{ return true; } + $target->setGamemode($gameMode); if($gameMode !== $target->getGamemode()){ - $target->setGamemode($gameMode); - if($gameMode !== $target->getGamemode()){ - $sender->sendMessage("Game mode change for " . $target->getName() . " failed!"); - }else{ - if($target === $sender){ - Command::broadcastCommandMessage($sender, "Set own gamemode to " . strtolower(Server::getGamemodeString($gameMode)) . " mode"); - }else{ - Command::broadcastCommandMessage($sender, "Set " . $target->getName() . "'s gamemode to " . strtolower(Server::getGamemodeString($gameMode)) . " mode"); - } - } + $sender->sendMessage("Game mode change for " . $target->getName() . " failed!"); }else{ - $sender->sendMessage($target->getName() . " already has game mode " . strtolower(Server::getGamemodeString($gameMode))); - - return true; + if($target === $sender){ + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.gamemode.success.self", [Server::getGamemodeString($gameMode)])); + }else{ + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.gamemode.success.other", [$target->getName(), Server::getGamemodeString($gameMode)])); + } } return true; diff --git a/src/pocketmine/command/defaults/GiveCommand.php b/src/pocketmine/command/defaults/GiveCommand.php index 92bcd69de..1013fa04d 100644 --- a/src/pocketmine/command/defaults/GiveCommand.php +++ b/src/pocketmine/command/defaults/GiveCommand.php @@ -69,7 +69,7 @@ class GiveCommand extends VanillaCommand{ //TODO: overflow $player->getInventory()->addItem(clone $item); }else{ - $sender->sendMessage(TextFormat::RED . "Can't find player " . $args[0]); + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.player.notFound")); return true; } diff --git a/src/pocketmine/command/defaults/HelpCommand.php b/src/pocketmine/command/defaults/HelpCommand.php index a26d951a8..55a32782e 100644 --- a/src/pocketmine/command/defaults/HelpCommand.php +++ b/src/pocketmine/command/defaults/HelpCommand.php @@ -24,6 +24,7 @@ namespace pocketmine\command\defaults; use pocketmine\command\Command; use pocketmine\command\CommandSender; use pocketmine\command\ConsoleCommandSender; +use pocketmine\event\TranslationContainer; use pocketmine\utils\TextFormat; class HelpCommand extends VanillaCommand{ @@ -32,7 +33,7 @@ class HelpCommand extends VanillaCommand{ parent::__construct( $name, "Shows the help menu", - "/help [pageNumber]\n/help [pageNumber]", + "%commands.help.usage", ["?"] ); $this->setPermission("pocketmine.command.help"); @@ -77,13 +78,12 @@ class HelpCommand extends VanillaCommand{ if($pageNumber < 1){ $pageNumber = 1; } - $message = TextFormat::RED . "-" . TextFormat::RESET . " Showing help page " . $pageNumber . " of " . count($commands) . " (/help ) " . TextFormat::RED . "-" . TextFormat::RESET . "\n"; + $sender->sendMessage(new TranslationContainer("commands.help.header", [$pageNumber, count($commands)])); if(isset($commands[$pageNumber - 1])){ foreach($commands[$pageNumber - 1] as $command){ - $message .= TextFormat::DARK_GREEN . "/" . $command->getName() . ": " . TextFormat::WHITE . $command->getDescription() . "\n"; + $sender->sendMessage(TextFormat::DARK_GREEN . "/" . $command->getName() . ": " . TextFormat::WHITE . $command->getDescription()); } } - $sender->sendMessage($message); return true; }else{ diff --git a/src/pocketmine/command/defaults/KickCommand.php b/src/pocketmine/command/defaults/KickCommand.php index 63b889f33..1861e6240 100644 --- a/src/pocketmine/command/defaults/KickCommand.php +++ b/src/pocketmine/command/defaults/KickCommand.php @@ -33,7 +33,7 @@ class KickCommand extends VanillaCommand{ parent::__construct( $name, "Removes the specified player from the server", - "/kick [reason...]" + "%commands.kick.usage" ); $this->setPermission("pocketmine.command.kick"); } @@ -55,12 +55,12 @@ class KickCommand extends VanillaCommand{ if(($player = $sender->getServer()->getPlayer($name)) instanceof Player){ $player->kick($reason); if(strlen($reason) >= 1){ - Command::broadcastCommandMessage($sender, "Kicked " . $player->getName() . " from the game: '{$reason}'"); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.kick.success.reason", [$player->getName(), $reason])); }else{ - Command::broadcastCommandMessage($sender, "Kicked " . $player->getName() . " from the game."); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.kick.success", [$player->getName()])); } }else{ - $sender->sendMessage($name . " not found."); + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.player.notFound")); } diff --git a/src/pocketmine/command/defaults/KillCommand.php b/src/pocketmine/command/defaults/KillCommand.php index 9934afc17..0260ec8a0 100644 --- a/src/pocketmine/command/defaults/KillCommand.php +++ b/src/pocketmine/command/defaults/KillCommand.php @@ -21,8 +21,10 @@ namespace pocketmine\command\defaults; +use pocketmine\command\Command; use pocketmine\command\CommandSender; use pocketmine\event\entity\EntityDamageEvent; +use pocketmine\event\TranslationContainer; use pocketmine\Player; use pocketmine\utils\TextFormat; @@ -32,10 +34,10 @@ class KillCommand extends VanillaCommand{ parent::__construct( $name, "Commits suicide, only usable as a player", - "/kill", + "/kill [player]", ["suicide"] ); - $this->setPermission("pocketmine.command.kill"); + $this->setPermission("pocketmine.command.kill.self;pocketmine.command.kill.other"); } public function execute(CommandSender $sender, $currentAlias, array $args){ @@ -43,7 +45,46 @@ class KillCommand extends VanillaCommand{ return true; } + if(count($args) >= 2){ + $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); + + return false; + } + + if(count($args) === 1){ + if(!$sender->hasPermission("pocketmine.kill.other")){ + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.permission")); + + return true; + } + + $player = $sender->getServer()->getPlayer($args[0]); + + if($player instanceof Player){ + $sender->getServer()->getPluginManager()->callEvent($ev = new EntityDamageEvent($player, EntityDamageEvent::CAUSE_SUICIDE, 1000)); + + if($ev->isCancelled()){ + return true; + } + + $player->setLastDamageCause($ev); + $player->setHealth(0); + + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.kill.successful", [$player->getName()])); + }else{ + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.player.notFound")); + } + + return true; + } + if($sender instanceof Player){ + if(!$sender->hasPermission("pocketmine.kill.self")){ + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.permission")); + + return true; + } + $sender->getServer()->getPluginManager()->callEvent($ev = new EntityDamageEvent($sender, EntityDamageEvent::CAUSE_SUICIDE, 1000)); if($ev->isCancelled()){ @@ -52,9 +93,11 @@ class KillCommand extends VanillaCommand{ $sender->setLastDamageCause($ev); $sender->setHealth(0); - $sender->sendMessage("Ouch. That look like it hurt."); + $sender->sendMessage(new TranslationContainer("commands.kill.successful", [$sender->getName()])); }else{ - $sender->sendMessage(TextFormat::RED . "You can only perform this command as a player"); + $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); + + return false; } return true; diff --git a/src/pocketmine/command/defaults/MeCommand.php b/src/pocketmine/command/defaults/MeCommand.php index d9e870ceb..cb0ba2424 100644 --- a/src/pocketmine/command/defaults/MeCommand.php +++ b/src/pocketmine/command/defaults/MeCommand.php @@ -32,7 +32,7 @@ class MeCommand extends VanillaCommand{ parent::__construct( $name, "Performs the specified action in chat", - "/me " + "%commands.me.usage" ); $this->setPermission("pocketmine.command.me"); } diff --git a/src/pocketmine/command/defaults/OpCommand.php b/src/pocketmine/command/defaults/OpCommand.php index 5361290e9..2e3195165 100644 --- a/src/pocketmine/command/defaults/OpCommand.php +++ b/src/pocketmine/command/defaults/OpCommand.php @@ -33,7 +33,7 @@ class OpCommand extends VanillaCommand{ parent::__construct( $name, "Gives the specified player operator status", - "/op " + "%commands.op.usage" ); $this->setPermission("pocketmine.command.op.give"); } @@ -52,12 +52,11 @@ class OpCommand extends VanillaCommand{ $name = array_shift($args); $player = $sender->getServer()->getOfflinePlayer($name); - Command::broadcastCommandMessage($sender, "Opped " . $player->getName()); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.op.success", [$player->getName()])); if($player instanceof Player){ - $player->sendMessage("You are now op!"); + $player->sendMessage(TextFormat::GRAY . "You are now op!"); } $player->setOp(true); - return true; } } \ No newline at end of file diff --git a/src/pocketmine/command/defaults/PardonCommand.php b/src/pocketmine/command/defaults/PardonCommand.php index 59726cc98..b08dc0917 100644 --- a/src/pocketmine/command/defaults/PardonCommand.php +++ b/src/pocketmine/command/defaults/PardonCommand.php @@ -32,7 +32,7 @@ class PardonCommand extends VanillaCommand{ parent::__construct( $name, "Allows the specified player to use this server", - "/pardon " + "%commands.unban.usage" ); $this->setPermission("pocketmine.command.unban.player"); } @@ -50,7 +50,7 @@ class PardonCommand extends VanillaCommand{ $sender->getServer()->getNameBans()->remove($args[0]); - Command::broadcastCommandMessage($sender, "Pardoned " . $args[0]); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.unban.success", $args[0])); return true; } diff --git a/src/pocketmine/command/defaults/PardonIpCommand.php b/src/pocketmine/command/defaults/PardonIpCommand.php index 913b46561..434603b7c 100644 --- a/src/pocketmine/command/defaults/PardonIpCommand.php +++ b/src/pocketmine/command/defaults/PardonIpCommand.php @@ -32,7 +32,7 @@ class PardonIpCommand extends VanillaCommand{ parent::__construct( $name, "Allows the specified IP address to use this server", - "/pardon-ip
" + "%commands.unbanip.usage" ); $this->setPermission("pocketmine.command.unban.ip"); } @@ -50,9 +50,9 @@ class PardonIpCommand extends VanillaCommand{ if(preg_match("/^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$/", $args[0])){ $sender->getServer()->getIPBans()->remove($args[0]); - Command::broadcastCommandMessage($sender, "Pardoned IP " . $args[0]); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.unbanip.success", $args[0])); }else{ - $sender->sendMessage("Invalid IP"); + $sender->sendMessage(new TranslationContainer("commands.unbanip.invalid")); } return true; diff --git a/src/pocketmine/command/defaults/SaveCommand.php b/src/pocketmine/command/defaults/SaveCommand.php index f69a62770..02d07de06 100644 --- a/src/pocketmine/command/defaults/SaveCommand.php +++ b/src/pocketmine/command/defaults/SaveCommand.php @@ -23,6 +23,7 @@ namespace pocketmine\command\defaults; use pocketmine\command\Command; use pocketmine\command\CommandSender; +use pocketmine\event\TranslationContainer; class SaveCommand extends VanillaCommand{ @@ -31,7 +32,7 @@ class SaveCommand extends VanillaCommand{ parent::__construct( $name, "Saves the server to disk", - "/save-all" + "%commands.save.usage" ); $this->setPermission("pocketmine.command.save.perform"); } @@ -41,7 +42,7 @@ class SaveCommand extends VanillaCommand{ return true; } - Command::broadcastCommandMessage($sender, "Forcing save..."); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.save.start")); foreach($sender->getServer()->getOnlinePlayers() as $player){ $player->save(); @@ -51,7 +52,7 @@ class SaveCommand extends VanillaCommand{ $level->save(true); } - Command::broadcastCommandMessage($sender, "Save complete."); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.save.success")); return true; } diff --git a/src/pocketmine/command/defaults/SaveOffCommand.php b/src/pocketmine/command/defaults/SaveOffCommand.php index 001b65bc6..1d4856f8b 100644 --- a/src/pocketmine/command/defaults/SaveOffCommand.php +++ b/src/pocketmine/command/defaults/SaveOffCommand.php @@ -23,6 +23,7 @@ namespace pocketmine\command\defaults; use pocketmine\command\Command; use pocketmine\command\CommandSender; +use pocketmine\event\TranslationContainer; class SaveOffCommand extends VanillaCommand{ @@ -31,7 +32,7 @@ class SaveOffCommand extends VanillaCommand{ parent::__construct( $name, "Disables server autosaving", - "/save-off" + "%commands.save-off.usage" ); $this->setPermission("pocketmine.command.save.disable"); } @@ -43,7 +44,7 @@ class SaveOffCommand extends VanillaCommand{ $sender->getServer()->setAutoSave(false); - Command::broadcastCommandMessage($sender, "Disabled level saving"); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.save.disabled")); return true; } diff --git a/src/pocketmine/command/defaults/SaveOnCommand.php b/src/pocketmine/command/defaults/SaveOnCommand.php index bd205355f..196600396 100644 --- a/src/pocketmine/command/defaults/SaveOnCommand.php +++ b/src/pocketmine/command/defaults/SaveOnCommand.php @@ -23,6 +23,7 @@ namespace pocketmine\command\defaults; use pocketmine\command\Command; use pocketmine\command\CommandSender; +use pocketmine\event\TranslationContainer; class SaveOnCommand extends VanillaCommand{ @@ -31,7 +32,7 @@ class SaveOnCommand extends VanillaCommand{ parent::__construct( $name, "Enables server autosaving", - "/save-on" + "%commands.save-on.usage" ); $this->setPermission("pocketmine.command.save.enable"); } @@ -43,7 +44,7 @@ class SaveOnCommand extends VanillaCommand{ $sender->getServer()->setAutoSave(true); - Command::broadcastCommandMessage($sender, "Enabled level saving"); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.save.enabled")); return true; } diff --git a/src/pocketmine/command/defaults/SayCommand.php b/src/pocketmine/command/defaults/SayCommand.php index 4b56e2dce..15ebf0146 100644 --- a/src/pocketmine/command/defaults/SayCommand.php +++ b/src/pocketmine/command/defaults/SayCommand.php @@ -33,7 +33,7 @@ class SayCommand extends VanillaCommand{ parent::__construct( $name, "Broadcasts the given message as the sender", - "/say " + "%commands.say.usage" ); $this->setPermission("pocketmine.command.say"); } diff --git a/src/pocketmine/command/defaults/SeedCommand.php b/src/pocketmine/command/defaults/SeedCommand.php index 6a0cdc31f..8c4e856be 100644 --- a/src/pocketmine/command/defaults/SeedCommand.php +++ b/src/pocketmine/command/defaults/SeedCommand.php @@ -22,6 +22,7 @@ namespace pocketmine\command\defaults; use pocketmine\command\CommandSender; +use pocketmine\event\TranslationContainer; use pocketmine\Player; @@ -31,7 +32,7 @@ class SeedCommand extends VanillaCommand{ parent::__construct( $name, "Shows the world seed", - "/seed" + "%commands.seed.usage" ); $this->setPermission("pocketmine.command.seed"); } @@ -46,7 +47,7 @@ class SeedCommand extends VanillaCommand{ }else{ $seed = $sender->getServer()->getDefaultLevel()->getSeed(); } - $sender->sendMessage("Seed: " . $seed); + $sender->sendMessage(new TranslationContainer("commands.seed.success", [$seed])); return true; } diff --git a/src/pocketmine/command/defaults/SetWorldSpawnCommand.php b/src/pocketmine/command/defaults/SetWorldSpawnCommand.php index a732d3469..3d2c76811 100644 --- a/src/pocketmine/command/defaults/SetWorldSpawnCommand.php +++ b/src/pocketmine/command/defaults/SetWorldSpawnCommand.php @@ -34,7 +34,7 @@ class SetWorldSpawnCommand extends VanillaCommand{ parent::__construct( $name, "Sets a worlds's spawn point. If no coordinates are specified, the player's coordinates will be used.", - "/setworldspawn OR /setworldspawn " + "%commands.setworldspawn.usage" ); $this->setPermission("pocketmine.command.setworldspawn"); } @@ -64,7 +64,7 @@ class SetWorldSpawnCommand extends VanillaCommand{ $level->setSpawnLocation($pos); - Command::broadcastCommandMessage($sender, "Set world " . $level->getName() . "'s spawnpoint to " . $pos->x . ", " . $pos->y . ", " . $pos->z); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.setworldspawn.success", [round($pos->x, 2), round($pos->y, 2), round($pos->z, 2)])); return true; } diff --git a/src/pocketmine/command/defaults/SpawnpointCommand.php b/src/pocketmine/command/defaults/SpawnpointCommand.php index 71574d56d..708481ad5 100644 --- a/src/pocketmine/command/defaults/SpawnpointCommand.php +++ b/src/pocketmine/command/defaults/SpawnpointCommand.php @@ -34,7 +34,7 @@ class SpawnpointCommand extends VanillaCommand{ parent::__construct( $name, "Sets a player's spawn point", - "/spawnpoint OR /spawnpoint OR /spawnpoint " + "%commands.spawnpoint.usage" ); $this->setPermission("pocketmine.command.spawnpoint"); } @@ -57,7 +57,7 @@ class SpawnpointCommand extends VanillaCommand{ }else{ $target = $sender->getServer()->getPlayer($args[0]); if($target === null){ - $sender->sendMessage(TextFormat::RED . "Can't find player " . $args[0]); + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.player.notFound")); return true; } @@ -72,7 +72,8 @@ class SpawnpointCommand extends VanillaCommand{ $y = $this->getRelativeDouble($pos->y, $sender, $args[2], 0, 128); $z = $this->getRelativeDouble($pos->z, $sender, $args[3]); $target->setSpawn(new Position($x, $y, $z, $level)); - Command::broadcastCommandMessage($sender, "Set " . $target->getDisplayName() . "'s spawnpoint to " . $x . ", " . $y . ", " . $z); + + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.spawnpoint.success", [$target->getName(), round($x, 2), round($y, 2), round($z, 2)])); return true; } @@ -80,8 +81,8 @@ class SpawnpointCommand extends VanillaCommand{ if($sender instanceof Player){ $pos = new Position((int) $sender->x, (int) $sender->y, (int) $sender->z, $sender->getLevel()); $target->setSpawn($pos); - Command::broadcastCommandMessage($sender, "Set " . $target->getDisplayName() . "'s spawnpoint to " . $pos->x . ", " . $pos->y . ", " . $pos->z); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.spawnpoint.success", [$target->getName(), round($pos->x, 2), round($pos->y, 2), round($pos->z, 2)])); return true; }else{ $sender->sendMessage(TextFormat::RED . "Please provide a player!"); diff --git a/src/pocketmine/command/defaults/StopCommand.php b/src/pocketmine/command/defaults/StopCommand.php index d559bf153..b0f439da6 100644 --- a/src/pocketmine/command/defaults/StopCommand.php +++ b/src/pocketmine/command/defaults/StopCommand.php @@ -23,6 +23,7 @@ namespace pocketmine\command\defaults; use pocketmine\command\Command; use pocketmine\command\CommandSender; +use pocketmine\event\TranslationContainer; class StopCommand extends VanillaCommand{ @@ -31,7 +32,7 @@ class StopCommand extends VanillaCommand{ parent::__construct( $name, "Stops the server, with optional reason", - "/stop [reason]" + "%commands.stop.usage" ); $this->setPermission("pocketmine.command.stop"); } @@ -41,14 +42,7 @@ class StopCommand extends VanillaCommand{ return true; } - Command::broadcastCommandMessage($sender, "Stopping the server..."); - - $reason = implode(" ", $args); - if($reason !== ""){ - foreach($sender->getServer()->getOnlinePlayers() as $player){ - $player->kick($reason); - } - } + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.stop.start")); $sender->getServer()->shutdown(); diff --git a/src/pocketmine/command/defaults/TeleportCommand.php b/src/pocketmine/command/defaults/TeleportCommand.php index 539036b3e..2a07cec92 100644 --- a/src/pocketmine/command/defaults/TeleportCommand.php +++ b/src/pocketmine/command/defaults/TeleportCommand.php @@ -34,7 +34,7 @@ class TeleportCommand extends VanillaCommand{ parent::__construct( $name, "Teleports the given player (or yourself) to another player or coordinates", - "/tp [player] and/or " + "%commands.tp.usage" ); $this->setPermission("pocketmine.command.teleport"); } @@ -44,7 +44,7 @@ class TeleportCommand extends VanillaCommand{ return true; } - if(count($args) < 1 or count($args) > 4){ + if(count($args) < 1 or count($args) > 6){ $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); return true; @@ -89,16 +89,29 @@ class TeleportCommand extends VanillaCommand{ if(count($args) < 3){ $origin->teleport($target); - Command::broadcastCommandMessage($sender, "Teleported " . $origin->getDisplayName() . " to " . $target->getDisplayName()); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.tp.success", [$origin->getName(), $target->getName()])); return true; }elseif($target->getLevel() !== null){ - $pos = count($args) === 4 ? 1 : 0; + if(count($args) === 4 or count($args) === 6){ + $pos = 1; + }else{ + $pos = 0; + } + $x = $this->getRelativeDouble($target->x, $sender, $args[$pos++]); $y = $this->getRelativeDouble($target->y, $sender, $args[$pos++], 0, 128); - $z = $this->getRelativeDouble($target->z, $sender, $args[$pos]); - $target->teleport(new Vector3($x, $y, $z)); - Command::broadcastCommandMessage($sender, "Teleported " . $target->getDisplayName() . " to " . round($x, 2) . ", " . round($y, 2) . ", " . round($z, 2)); + $z = $this->getRelativeDouble($target->z, $sender, $args[$pos++]); + $yaw = $target->getYaw(); + $pitch = $target->getPitch(); + + if(count($args) === 6 or (count($args) === 5 and $pos === 3)){ + $yaw = $args[$pos++]; + $pitch = $args[$pos++]; + } + + $target->teleport(new Vector3($x, $y, $z), $yaw, $pitch); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.tp.success.coordinates", [$target->getName(), round($x, 2), round($y, 2), round($z, 2)])); return true; } diff --git a/src/pocketmine/command/defaults/TellCommand.php b/src/pocketmine/command/defaults/TellCommand.php index 889fa19b6..e6072d729 100644 --- a/src/pocketmine/command/defaults/TellCommand.php +++ b/src/pocketmine/command/defaults/TellCommand.php @@ -32,7 +32,7 @@ class TellCommand extends VanillaCommand{ parent::__construct( $name, "Sends a private message to the given player", - "/tell ", + "%commands.message.usage", ["w", "msg"] ); $this->setPermission("pocketmine.command.tell"); @@ -53,11 +53,16 @@ class TellCommand extends VanillaCommand{ $player = $sender->getServer()->getPlayer($name); + if($player === $sender){ + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.message.sameTarget")); + return true; + } + if($player instanceof Player){ - $sender->sendMessage("[me -> " . $player->getName() . "] " . implode(" ", $args)); - $player->sendMessage("[" . $sender->getName() . " -> me] " . implode(" ", $args)); + $sender->sendMessage("[".$this->getName()." -> " . $player->getDisplayName() . "] " . implode(" ", $args)); + $player->sendMessage("[" . ($sender instanceof Player ? $sender->getDisplayName() : $sender->getName()) . " -> ".$this->getName()."] " . implode(" ", $args)); }else{ - $sender->sendMessage("There's no player by that name online."); + $sender->sendMessage(new TranslationContainer("commands.generic.player.notFound")); } return true; diff --git a/src/pocketmine/command/defaults/TimeCommand.php b/src/pocketmine/command/defaults/TimeCommand.php index c84a30157..27848fe08 100644 --- a/src/pocketmine/command/defaults/TimeCommand.php +++ b/src/pocketmine/command/defaults/TimeCommand.php @@ -25,6 +25,7 @@ use pocketmine\command\Command; use pocketmine\command\CommandSender; use pocketmine\event\TranslationContainer; use pocketmine\level\Level; +use pocketmine\Player; use pocketmine\utils\TextFormat; class TimeCommand extends VanillaCommand{ @@ -33,7 +34,7 @@ class TimeCommand extends VanillaCommand{ parent::__construct( $name, "Changes the time on each world", - "/time set \n/time add \n/time start|stop" + "/time OR /time " //No translation, different! ); $this->setPermission("pocketmine.command.time.add;pocketmine.command.time.set;pocketmine.command.time.start;pocketmine.command.time.stop"); } @@ -47,7 +48,7 @@ class TimeCommand extends VanillaCommand{ if($args[0] === "start"){ if(!$sender->hasPermission("pocketmine.command.time.start")){ - $sender->sendMessage(TextFormat::RED . "You don't have permission to restart the time"); + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.permission")); return true; } @@ -60,7 +61,7 @@ class TimeCommand extends VanillaCommand{ return true; }elseif($args[0] === "stop"){ if(!$sender->hasPermission("pocketmine.command.time.stop")){ - $sender->sendMessage(TextFormat::RED . "You don't have permission to stop the time"); + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.permission")); return true; } @@ -71,6 +72,19 @@ class TimeCommand extends VanillaCommand{ } Command::broadcastCommandMessage($sender, "Stopped the time"); return true; + }elseif($args[0] === "query"){ + if(!$sender->hasPermission("pocketmine.command.time.query")){ + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.permission")); + + return true; + } + if($sender instanceof Player){ + $level = $sender->getLevel(); + }else{ + $level = $sender->getServer()->getDefaultLevel(); + } + $sender->sendMessage(new TranslationContainer("commands.time.query", [$level->getTime()])); + return true; } @@ -82,7 +96,7 @@ class TimeCommand extends VanillaCommand{ if($args[0] === "set"){ if(!$sender->hasPermission("pocketmine.command.time.set")){ - $sender->sendMessage(TextFormat::RED . "You don't have permission to set the time"); + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.permission")); return true; } @@ -100,10 +114,10 @@ class TimeCommand extends VanillaCommand{ $level->setTime($value); $level->checkTime(); } - Command::broadcastCommandMessage($sender, "Set time to " . $value); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.time.set", [$value])); }elseif($args[0] === "add"){ if(!$sender->hasPermission("pocketmine.command.time.add")){ - $sender->sendMessage(TextFormat::RED . "You don't have permission to add the time"); + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.permission")); return true; } @@ -114,7 +128,7 @@ class TimeCommand extends VanillaCommand{ $level->setTime($level->getTime() + $value); $level->checkTime(); } - Command::broadcastCommandMessage($sender, "Added " . $value . " to time"); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.time.add", [$value])); }else{ $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); } diff --git a/src/pocketmine/command/defaults/WhitelistCommand.php b/src/pocketmine/command/defaults/WhitelistCommand.php index c9a828b61..a6206dc8d 100644 --- a/src/pocketmine/command/defaults/WhitelistCommand.php +++ b/src/pocketmine/command/defaults/WhitelistCommand.php @@ -23,6 +23,7 @@ namespace pocketmine\command\defaults; use pocketmine\command\Command; use pocketmine\command\CommandSender; +use pocketmine\event\TranslationContainer; use pocketmine\utils\TextFormat; class WhitelistCommand extends VanillaCommand{ @@ -31,7 +32,7 @@ class WhitelistCommand extends VanillaCommand{ parent::__construct( $name, "Manages the list of players allowed to use this server", - "/whitelist (add|remove) \n/whitelist (on|off|list|reload)" + "%commands.whitelist.usage" ); $this->setPermission("pocketmine.command.whitelist.reload;pocketmine.command.whitelist.enable;pocketmine.command.whitelist.disable;pocketmine.command.whitelist.list;pocketmine.command.whitelist.add;pocketmine.command.whitelist.remove"); } @@ -41,61 +42,75 @@ class WhitelistCommand extends VanillaCommand{ return true; } + if(count($args) === 0 or count($args) > 2){ + $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); + return true; + } + if(count($args) === 1){ if($this->badPerm($sender, strtolower($args[0]))){ - return true; + return false; } switch(strtolower($args[0])){ case "reload": $sender->getServer()->reloadWhitelist(); - Command::broadcastCommandMessage($sender, "Reloaded white-list from file"); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.whitelist.reloaded")); return true; case "on": $sender->getServer()->setConfigBool("white-list", true); - Command::broadcastCommandMessage($sender, "Turned on white-listing"); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.whitelist.enabled")); return true; case "off": $sender->getServer()->setConfigBool("white-list", false); - Command::broadcastCommandMessage($sender, "Turned off white-listing"); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.whitelist.disabled")); return true; case "list": $result = ""; + $count = 0; foreach($sender->getServer()->getWhitelisted()->getAll(true) as $player){ $result .= $player . ", "; + ++$count; } - $sender->sendMessage("White-listed players: " . substr($result, 0, -2)); + $sender->sendMessage(new TranslationContainer("commands.whitelist.list", [$count, $count])); + $sender->sendMessage(substr($result, 0, -2)); return true; + + case "add": + $sender->sendMessage(new TranslationContainer("commands.generic.usage", ["%commands.whitelist.add.usage"])); + return true; + + case "remove": + $sender->sendMessage(new TranslationContainer("commands.generic.usage", ["%commands.whitelist.remove.usage"])); + return true; } }elseif(count($args) === 2){ if($this->badPerm($sender, strtolower($args[0]))){ - return true; + return false; } switch(strtolower($args[0])){ case "add": $sender->getServer()->getOfflinePlayer($args[1])->setWhitelisted(true); - Command::broadcastCommandMessage($sender, "Added " . $args[1] . " to white-list"); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.whitelist.add.success", [$args[1]])); return true; case "remove": $sender->getServer()->getOfflinePlayer($args[1])->setWhitelisted(false); - Command::broadcastCommandMessage($sender, "Removed " . $args[1] . " from white-list"); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.whitelist.remove.success", [$args[1]])); return true; } } - $sender->sendMessage(TextFormat::RED . "Usage:\n" . $this->usageMessage); - return true; } private function badPerm(CommandSender $sender, $perm){ if(!$sender->hasPermission("pocketmine.command.whitelist.$perm")){ - $sender->sendMessage(TextFormat::RED . "You do not have permission to perform this action."); + $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.permission")); return true; } diff --git a/src/pocketmine/lang/base/en.ini b/src/pocketmine/lang/base/en.ini index 8a51b86a6..6ccc7c109 100644 --- a/src/pocketmine/lang/base/en.ini +++ b/src/pocketmine/lang/base/en.ini @@ -20,8 +20,6 @@ disconnectionScreen.serverFull=Server is full! disconnectionScreen.noReason=Disconnected from server disconnectionScreen.invalidSkin=Invalid skin! - - death.fell.accident.generic={%0} fell from a high place death.attack.inFire={%0} went up in flames death.attack.onFire={%0} burned to death @@ -75,8 +73,15 @@ potion.saturation=Saturation commands.generic.exception=An unknown error occurred while attempting to perform this command commands.generic.permission=You do not have permission to use this command commands.generic.notFound=Unknown command. Try /help for a list of commands +commands.generic.player.notFound=That player cannot be found commands.generic.usage=Usage: {%0} +commands.time.added=Added {%0} to the time +commands.time.set=Set the time to {%0} +commands.time.query=Time is {%0} + +commands.me.usage=/me + commands.give.item.notFound=There is no such item with name {%0} commands.give.success=Given {%0} * {%1} to {%2} @@ -94,5 +99,87 @@ commands.particle.notFound=Unknown effect name {%0} commands.players.usage=/list commands.players.list=There are {%0}/{%1} players online: +commands.kill.successful=Killed {%0} + +commands.banlist.ips=There are %d total banned IP addresses: +commands.banlist.players=There are {%0} total banned players: +commands.banlist.usage=/banlist [ips|players] + commands.defaultgamemode.usage=/defaultgamemode -commands.defaultgamemode.success=The world's default game mode is now {%0} \ No newline at end of file +commands.defaultgamemode.success=The world's default game mode is now {%0} + +commands.op.success=Opped {%0} +commands.op.usage=/op + +commands.deop.success=De-opped {%0} +commands.deop.usage=/deop + +commands.say.usage=/say + +commands.seed.usage=/seed +commands.seed.success=Seed: {%0} + +commands.ban.success=Banned player {%0} +commands.ban.usage=/ban [reason ...] + +commands.unban.success=Unbanned player {%0} +commands.unban.usage=/pardon + +commands.banip.invalid=You have entered an invalid IP address or a player that is not online +commands.banip.success=Banned IP address {%0} +commands.banip.success.players=Banned IP address {%0} belonging to {%1} +commands.banip.usage=/ban-ip [reason ...] + +commands.unbanip.invalid=You have entered an invalid IP address +commands.unbanip.success=Unbanned IP address {%0} +commands.unbanip.usage=/pardon-ip
+ +commands.save.usage=/save-all +commands.save-on.usage=/save-on +commands.save-off.usage=/save-off +commands.save.enabled=Turned on world auto-saving +commands.save.disabled=Turned off world auto-saving +commands.save.start=Saving... +commands.save.success=Saved the world + +commands.stop.usage=/stop +commands.stop.start=Stopping the server + +commands.kick.success=Kicked {%0} from the game +commands.kick.success.reason=Kicked {%0} from the game: '{%1}' +commands.kick.usage=/kick [reason ...] + +commands.tp.success=Teleported {%0} to {%1} +commands.tp.success.coordinates=Teleported {%0} to {%1}, {%2}, {%3} +commands.tp.usage=/tp [target player] OR /tp [target player] [ ] + +commands.whitelist.list=There are {%0} (out of {%1} seen) whitelisted players: +commands.whitelist.enabled=Turned on the whitelist +commands.whitelist.disabled=Turned off the whitelist +commands.whitelist.reloaded=Reloaded the whitelist +commands.whitelist.add.success=Added {%0} to the whitelist +commands.whitelist.add.usage=/whitelist add +commands.whitelist.remove.success=Removed {%0} from the whitelist +commands.whitelist.remove.usage=/whitelist remove +commands.whitelist.usage=/whitelist + +commands.gamemode.success.self=Set own game mode to {%0} +commands.gamemode.success.other=Set {%0}'s game mode to {%1} +commands.gamemode.usage=/gamemode [player] + +commands.help.header=--- Showing help page {%0} of {%1} (/help ) --- +commands.help.usage=/help [page|command name] + +commands.message.usage=/tell +commands.message.sameTarget=You can't send a private message to yourself! + +commands.difficulty.usage=/difficulty +commands.difficulty.success=Set game difficulty to {%0} + +commands.spawnpoint.usage=/spawnpoint [player] [ ] +commands.spawnpoint.success=Set {%0}'s spawn point to ({%1}, {%2}, {%3}) + +commands.setworldspawn.usage=/setworldspawn [ ] +commands.setworldspawn.success=Set the world spawn point to ({%0}, {%1}, {%2}) + + diff --git a/src/pocketmine/permission/DefaultPermissions.php b/src/pocketmine/permission/DefaultPermissions.php index 3c66a069b..17965bd74 100644 --- a/src/pocketmine/permission/DefaultPermissions.php +++ b/src/pocketmine/permission/DefaultPermissions.php @@ -90,8 +90,14 @@ abstract class DefaultPermissions{ self::registerPermission(new Permission(self::ROOT . ".command.time.set", "Allows the user to change the time"), $time); self::registerPermission(new Permission(self::ROOT . ".command.time.start", "Allows the user to restart the time"), $time); self::registerPermission(new Permission(self::ROOT . ".command.time.stop", "Allows the user to stop the time"), $time); + self::registerPermission(new Permission(self::ROOT . ".command.time.query", "Allows the user query the time"), $time); $time->recalculatePermissibles(); + $kill = self::registerPermission(new Permission(self::ROOT . ".command.kill", "Allows the user to kill players", Permission::DEFAULT_OP), $commands); + self::registerPermission(new Permission(self::ROOT . ".command.kill.self", "Allows the user to commit suicide", Permission::DEFAULT_TRUE), $kill); + self::registerPermission(new Permission(self::ROOT . ".command.kill.other", "Allows the user to kill other players"), $kill); + $kill->recalculatePermissibles(); + self::registerPermission(new Permission(self::ROOT . ".command.kill", "Allows the user to commit suicide", Permission::DEFAULT_TRUE), $commands); self::registerPermission(new Permission(self::ROOT . ".command.me", "Allows the user to perform a chat action", Permission::DEFAULT_TRUE), $commands); self::registerPermission(new Permission(self::ROOT . ".command.tell", "Allows the user to privately message another player", Permission::DEFAULT_TRUE), $commands); diff --git a/src/pocketmine/resources/pocketmine.yml b/src/pocketmine/resources/pocketmine.yml index 6469c4ef5..a98f6a261 100644 --- a/src/pocketmine/resources/pocketmine.yml +++ b/src/pocketmine/resources/pocketmine.yml @@ -4,6 +4,8 @@ # New settings/defaults won't appear automatically on this file when upgrading. settings: + #Language code for server-side localization + language: "en" shutdown-message: "Server closed" #Allow listing plugins via Query query-plugins: true @@ -15,6 +17,7 @@ settings: send-usage: true #Number of AsyncTask workers. #Used for plugin asynchronous tasks, world generation, compression and web communication. + #Set this approximately to your number of cores. async-workers: 2 network: