More language files

This commit is contained in:
Shoghi Cervantes 2015-04-11 12:56:38 +02:00
parent de052a79de
commit c2138aa30c
No known key found for this signature in database
GPG Key ID: 78464DB0A7837F89
32 changed files with 311 additions and 116 deletions

View File

@ -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.

View File

@ -33,7 +33,7 @@ class BanCommand extends VanillaCommand{
parent::__construct(
$name,
"Prevents the specified player from using this server",
"/ban <player> [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;
}

View File

@ -33,7 +33,7 @@ class BanIpCommand extends VanillaCommand{
parent::__construct(
$name,
"Prevents the specified IP address from using this server",
"/ban-ip <address|player> [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);
}
}

View File

@ -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;

View File

@ -32,7 +32,7 @@ class DefaultGamemodeCommand extends VanillaCommand{
parent::__construct(
$name,
"Set the default gamemode",
"/defaultgamemode <mode>"
"%commands.defaultgamemode.usage"
);
$this->setPermission("pocketmine.command.defaultgamemode");
}

View File

@ -33,7 +33,7 @@ class DeopCommand extends VanillaCommand{
parent::__construct(
$name,
"Takes the specified player's operator status",
"/deop <player>"
"%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;
}

View File

@ -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 <new 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;

View File

@ -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;
}

View File

@ -34,7 +34,7 @@ class GamemodeCommand extends VanillaCommand{
parent::__construct(
$name,
"Changes the player to a specific game mode",
"/gamemode <mode> [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;

View File

@ -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;
}

View File

@ -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 <topic> [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 <pageNumber>) " . 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{

View File

@ -33,7 +33,7 @@ class KickCommand extends VanillaCommand{
parent::__construct(
$name,
"Removes the specified player from the server",
"/kick <player> [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"));
}

View File

@ -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;

View File

@ -32,7 +32,7 @@ class MeCommand extends VanillaCommand{
parent::__construct(
$name,
"Performs the specified action in chat",
"/me <action...>"
"%commands.me.usage"
);
$this->setPermission("pocketmine.command.me");
}

View File

@ -33,7 +33,7 @@ class OpCommand extends VanillaCommand{
parent::__construct(
$name,
"Gives the specified player operator status",
"/op <player>"
"%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;
}
}

View File

@ -32,7 +32,7 @@ class PardonCommand extends VanillaCommand{
parent::__construct(
$name,
"Allows the specified player to use this server",
"/pardon <player>"
"%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;
}

View File

@ -32,7 +32,7 @@ class PardonIpCommand extends VanillaCommand{
parent::__construct(
$name,
"Allows the specified IP address to use this server",
"/pardon-ip <address>"
"%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;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -33,7 +33,7 @@ class SayCommand extends VanillaCommand{
parent::__construct(
$name,
"Broadcasts the given message as the sender",
"/say <message...>"
"%commands.say.usage"
);
$this->setPermission("pocketmine.command.say");
}

View File

@ -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;
}

View File

@ -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 <x> <y> <z>"
"%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;
}

View File

@ -34,7 +34,7 @@ class SpawnpointCommand extends VanillaCommand{
parent::__construct(
$name,
"Sets a player's spawn point",
"/spawnpoint OR /spawnpoint <player> OR /spawnpoint <player> <x> <y> <z>"
"%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!");

View File

@ -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();

View File

@ -34,7 +34,7 @@ class TeleportCommand extends VanillaCommand{
parent::__construct(
$name,
"Teleports the given player (or yourself) to another player or coordinates",
"/tp [player] <target> and/or <x> <y> <z>"
"%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;
}

View File

@ -32,7 +32,7 @@ class TellCommand extends VanillaCommand{
parent::__construct(
$name,
"Sends a private message to the given player",
"/tell <player> <message>",
"%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;

View File

@ -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 <value>\n/time add <value>\n/time start|stop"
"/time <set|add> <value> OR /time <start|stop|query>" //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]));
}

View File

@ -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) <player>\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;
}

View File

@ -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 <action ...>
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 <mode>
commands.defaultgamemode.success=The world's default game mode is now {%0}
commands.defaultgamemode.success=The world's default game mode is now {%0}
commands.op.success=Opped {%0}
commands.op.usage=/op <player>
commands.deop.success=De-opped {%0}
commands.deop.usage=/deop <player>
commands.say.usage=/say <message ...>
commands.seed.usage=/seed
commands.seed.success=Seed: {%0}
commands.ban.success=Banned player {%0}
commands.ban.usage=/ban <name> [reason ...]
commands.unban.success=Unbanned player {%0}
commands.unban.usage=/pardon <name>
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 <address|name> [reason ...]
commands.unbanip.invalid=You have entered an invalid IP address
commands.unbanip.success=Unbanned IP address {%0}
commands.unbanip.usage=/pardon-ip <address>
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 <player> [reason ...]
commands.tp.success=Teleported {%0} to {%1}
commands.tp.success.coordinates=Teleported {%0} to {%1}, {%2}, {%3}
commands.tp.usage=/tp [target player] <destination player> OR /tp [target player] <x> <y> <z> [<y-rot> <x-rot>]
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 <player>
commands.whitelist.remove.success=Removed {%0} from the whitelist
commands.whitelist.remove.usage=/whitelist remove <player>
commands.whitelist.usage=/whitelist <on|off|list|add|remove|reload>
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 <mode> [player]
commands.help.header=--- Showing help page {%0} of {%1} (/help <page>) ---
commands.help.usage=/help [page|command name]
commands.message.usage=/tell <player> <private message ...>
commands.message.sameTarget=You can't send a private message to yourself!
commands.difficulty.usage=/difficulty <new difficulty>
commands.difficulty.success=Set game difficulty to {%0}
commands.spawnpoint.usage=/spawnpoint [player] [<x> <y> <z>]
commands.spawnpoint.success=Set {%0}'s spawn point to ({%1}, {%2}, {%3})
commands.setworldspawn.usage=/setworldspawn [<x> <y> <z>]
commands.setworldspawn.success=Set the world spawn point to ({%0}, {%1}, {%2})

View File

@ -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);

View File

@ -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: