Added player commands, better console API and implemented future player chat

This commit is contained in:
Shoghi Cervantes Pueyo
2013-02-07 09:23:37 +01:00
parent 72388fa3cb
commit c2e55941d8
6 changed files with 186 additions and 131 deletions

View File

@ -45,21 +45,26 @@ class BanAPI{
$this->server->api->console->register("whitelist", "Manages White-listing", array($this, "commandHandler"));
}
public function commandHandler($cmd, $params){
public function commandHandler($cmd, $params, $issuer){
$output = "";
switch($cmd){
case "kick":
if(!isset($params[0])){
console("[INFO] Usage: /kick <playername> [reason]");
$output .= "Usage: /kick <playername> [reason]\n";
}else{
$name = array_shift($params);
$player = $this->server->api->player->get($name);
if($player === false){
console("[ERROR] Player \"".$name."\" does not exist");
$output .= "Player \"".$name."\" does not exist\n";
}else{
$reason = implode(" ", $params);
$reason = $reason == "" ? "No reason":$reason;
$player->close("You have been kicked: ".$reason);
console("[INFO] Player \"".$player->username."\" has been kicked: $reason");
if($issuer instanceof Player){
$this->server->api->chat->broadcast($player->username." has been kicked by ".$issuer->username.": $reason\n");
}else{
$this->server->api->chat->broadcast($player->username." has been kicked: $reason\n");
}
}
}
break;
@ -70,34 +75,34 @@ class BanAPI{
$user = trim(implode(" ", $params));
$this->whitelist->remove($user);
$this->whitelist->save();
console("[INFO] Player \"$user\" removed from white-list");
$output .= "Player \"$user\" removed from white-list\n";
break;
case "add":
$user = trim(implode(" ", $params));
$this->whitelist->set($user);
$this->whitelist->save();
console("[INFO] Player \"$user\" added to white-list");
$output .= "Player \"$user\" added to white-list\n";
break;
case "reload":
$this->whitelist = $this->load(FILE_PATH."white-list.txt", CONFIG_LIST);
break;
case "list":
console("[INFO] White-list: ".implode(", ", $this->whitelist->getAll(true)));
$output .= "White-list: ".implode(", ", $this->whitelist->getAll(true))."\n";
break;
case "on":
case "true":
case "1":
console("[INFO] White-list turned on");
$output .= "White-list turned on\n";
$this->server->api->setProperty("white-list", true);
break;
case "off":
case "false":
case "0":
console("[INFO] White-list turned off");
$output .= "White-list turned off\n";
$this->server->api->setProperty("white-list", false);
break;
default:
console("[INFO] Usage: /whitelist <on | off | add | remove | reload | list> [username]");
$output .= "Usage: /whitelist <on | off | add | remove | reload | list> [username]\n";
break;
}
break;
@ -109,23 +114,23 @@ class BanAPI{
$ip = trim(implode($params));
$this->bannedIPs->remove($ip);
$this->bannedIPs->save();
console("[INFO] IP \"$ip\" removed from ban list");
$output .= "IP \"$ip\" removed from ban list\n";
break;
case "add":
case "ban":
$ip = trim(implode($params));
$this->bannedIPs->set($ip);
$this->bannedIPs->save();
console("[INFO] IP \"$ip\" added to ban list");
$output .= "IP \"$ip\" added to ban list\n";
break;
case "reload":
$this->bannedIPs = new Config(FILE_PATH."banned-ips.txt", CONFIG_LIST);
break;
case "list":
console("[INFO] IP ban list: ".implode(", ", $this->bannedIPs->getAll(true)));
$output .= "IP ban list: ".implode(", ", $this->bannedIPs->getAll(true))."\n";
break;
default:
console("[INFO] Usage: /banip <add | remove | list | reload> [IP]");
$output .= "Usage: /banip <add | remove | list | reload> [IP]\n";
break;
}
break;
@ -137,7 +142,7 @@ class BanAPI{
$user = trim(implode($params));
$this->banned->remove($user);
$this->banned->save();
console("[INFO] Player \"$user\" removed from ban list");
$output .= "Player \"$user\" removed from ban list\n";
break;
case "add":
case "ban":
@ -149,20 +154,26 @@ class BanAPI{
$player->close("You have been banned");
}
$this->server->api->chat->broadcast("$user has been banned");
console("[INFO] Player \"$user\" added to ban list");
if($issuer instanceof Player){
$this->server->api->chat->broadcast($user." has been banned by ".$issuer->username."\n");
}else{
$this->server->api->chat->broadcast($user." has been banned\n");
}
$output .= "Player \"$user\" added to ban list\n";
break;
case "reload":
$this->banned = new Config(FILE_PATH."banned.txt", CONFIG_LIST);
break;
case "list":
console("[INFO] Ban list: ".implode(", ", $this->banned->getAll(true)));
$output .= "Ban list: ".implode(", ", $this->banned->getAll(true))."\n";
break;
default:
console("[INFO] Usage: /ban <add | remove | list | reload> [player]");
$output .= "Usage: /ban <add | remove | list | reload> [player]\n";
break;
}
break;
}
return $output;
}
public function ban($username){