/**
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
package tntrun.commands;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import tntrun.TNTRun;
import tntrun.arena.Arena;
import tntrun.messages.Messages;
import tntrun.utils.Stats;
public class GameCommands implements CommandExecutor {
private TNTRun plugin;
public GameCommands(TNTRun plugin) {
this.plugin = plugin;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage("§7[§6TNTRun§7] §cYou must be player");
return true;
}
Player player = (Player) sender;
if (args.length < 1){
sender.sendMessage("§7============[§6TNTRun§7]§7============");
sender.sendMessage("§7[§6TNTRun§7] §6Please use §6/tr help");
}
// help command
if (args.length == 1 && args[0].equalsIgnoreCase("help")) {
sender.sendMessage("§7============[§6TNTRun§7]§7============");
sender.sendMessage("§6/tr lobby §f- §cTeleport to lobby");
sender.sendMessage("§6/tr list §f- §cList all arenas");
sender.sendMessage("§6/tr join {arena} §f- §cJoin arena");
sender.sendMessage("§6/tr leave §f- §cLeave current arena");
sender.sendMessage("§6/tr vote §f- §cVote for current arena");
sender.sendMessage("§6/tr cmds §f- §cView all commands");
sender.sendMessage("§6/tr info §f- §cPlugin info");
sender.sendMessage("§c§lNEW! §6/tr stats §f- §cStats");
return true;
} else if (args.length == 1 && args[0].equalsIgnoreCase("lobby")) {
if (plugin.globallobby.isLobbyLocationSet()) {
if (plugin.globallobby.isLobbyLocationWorldAvailable()) {
player.teleport(plugin.globallobby.getLobbyLocation());
Messages.sendMessage(player, Messages.teleporttolobby);
} else {
player.sendMessage("§7[§6TNTRun§7] §cLobby world is unloaded or doesn't exist");
}
} else {
sender.sendMessage("§7[§6TNTRun§7] §cLobby is't set");
}
return true;
}
// list arenas
else if (args.length == 1 && args[0].equalsIgnoreCase("list")) {
StringBuilder message = new StringBuilder(200);
message.append(Messages.availablearenas);
for (Arena arena : plugin.amanager.getArenas()) {
if (arena.getStatusManager().isArenaEnabled()) {
message.append("&a" + arena.getArenaName() + " ; ");
} else {
message.append("&c" + arena.getArenaName() + " ; ");
}
}
Messages.sendMessage(player, message.toString());
return true;
}
// join arena
else if (args.length == 2 && args[0].equalsIgnoreCase("join")) {
Arena arena = plugin.amanager.getArenaByName(args[1]);
if (arena != null) {
boolean canJoin = arena.getPlayerHandler().checkJoin(player);
if (canJoin) {
arena.getPlayerHandler().spawnPlayer(player, Messages.playerjoinedtoplayer, Messages.playerjoinedtoothers);
}
return true;
} else {
sender.sendMessage("§7[§6TNTRun§7] §cArena §6" + args[0] + "§c doesn't exist");
return true;
}
}
// tntrun info
else if (args.length == 1 && args[0].equalsIgnoreCase("info")) {
sender.sendMessage("§7============[§6TNTRun§7]§7============");
sender.sendMessage("§cVersion of plugin> §6" + plugin.getDescription().getVersion());
sender.sendMessage("§cWebsite> §6http://www.spigotmc.org/resources/tntrun.7320/");
sender.sendMessage("§cAuthors> §6Shevchikden | The_TadeSK (tade159SK)");
sender.sendMessage("§7============[§6TNTRun§7]§7============");
}
// leave arena
else if (args.length == 1 && args[0].equalsIgnoreCase("stats")) {
player.sendMessage("§7============[§6TNTRun§7]§7============");
if(!plugin.usestats){
player.sendMessage("§cStats are disabled");
return true;
}
player.sendMessage("§7Played games: §6" + Stats.getPlayedGames(player));
player.sendMessage("§7Wins: §6" + Stats.getWins(player));
player.sendMessage("§7Loses: §6" + Stats.getLooses(player));
}
// leave arena
else if (args.length == 1 && args[0].equalsIgnoreCase("leave")) {
Arena arena = plugin.amanager.getPlayerArena(player.getName());
if (arena != null) {
arena.getPlayerHandler().leavePlayer(player, Messages.playerlefttoplayer, Messages.playerlefttoothers);
return true;
} else {
sender.sendMessage("§7[§6TNTRun§7] §cYou are not in arena");
return true;
}
}
// all commands
else if (args.length == 1 && args[0].equalsIgnoreCase("cmds")) {
sender.sendMessage("§7============[§6TNTRun§7]============");
sender.sendMessage("§6/trsetup setlobby §f- §cSet lobby on your location");
sender.sendMessage("§6/trsetup create {arena} §f- §cCreate new Arena");
sender.sendMessage("§6/trsetup setarena {arena} §f- §cSet bounds for arena");
sender.sendMessage("§6/trsetup setloselevel {arena} §f- §cSet looselevel bounds for arena");
sender.sendMessage("§6/trsetup setspawn {arena} §f- §cSet spawn for players on your location");
sender.sendMessage("§6/trsetup setspectate {arena} §f- §cSet spectators spawn");
sender.sendMessage("§6/trsetup finish {arena} §f- §cFinish arena and save it to config file");
sender.sendMessage("§7============[§6Other commands§7]============");
sender.sendMessage("§6/trsetup delspectate {arena} §f- §cDelete spectators spawn");
sender.sendMessage("§6/trsetup setgameleveldestroydelay {arena} {ticks} §f- §cSet a delay of removing blocks when player stepped on it");
sender.sendMessage("§6/trsetup setmaxplayers {arena} {players} §f- §cSet a max players for arena");
sender.sendMessage("§6/trsetup setminplayers {arena} {players} §f- §cSet a min players for arena");
sender.sendMessage("§6/trsetup setvotepercent {arena} {0<votepercent<1} §f- §cSet a vote percent for arena (Default: 0.75)");
sender.sendMessage("§6/trsetup settimelimit {arena} {seconds} §f- §cSet a limit for arena");
sender.sendMessage("§6/trsetup setcountdown {arena} {seconds} §f- §cSet a countdown for arena");
sender.sendMessage("§6/trsetup setitemsrewards {arena} §f- §cSet a everithing to reward (Item)");
sender.sendMessage("§6/trsetup setmoneyrewards {arena} {money} §f- §cSet a money reward for winning player");
sender.sendMessage("§6/trsetup setteleport {arena} {previous/lobby} §f- §cSet teleport when you lose or win in arena");
sender.sendMessage("§6/trsetup setdamage {arena} {on/off/zero} §f- §cSet a pvp for arena");
sender.sendMessage("§6/trsetup reloadbars §f- §cReload Bar messages");
sender.sendMessage("§6/trsetup reloadtitles §f- §cReload Title messages");
sender.sendMessage("§6/trsetup reloadmsg §f- §cReload arena messages");
sender.sendMessage("§6/trsetup reloadconfig §f- §cReload config file");
sender.sendMessage("§6/trsetup enable {arena} §f- §cEnable Arena");
sender.sendMessage("§6/trsetup disable {arena} §f- §cDisable Arena");
sender.sendMessage("§6/trsetup delete {arena} §f- §cDelete Arena");
}
// vote
else if (args.length == 1 && args[0].equalsIgnoreCase("vote")) {
Arena arena = plugin.amanager.getPlayerArena(player.getName());
if (arena != null) {
if (arena.getPlayerHandler().vote(player)) {
Messages.sendMessage(player, Messages.playervotedforstart);
} else {
Messages.sendMessage(player, Messages.playeralreadyvotedforstart);
}
return true;
} else {
sender.sendMessage("§7[§6TNTRun§7] §cYou are not in arena");
return true;
}
}
return false;
}
}