Major MainCommand refactor; other general refactoring

This commit is contained in:
cervinakuy committed 2022-10-23 14:56:09 -07:00
1 parent 4479c259ac
commit ab167cf2bb
3 files changed
+361 -367

No files matched your search

@@ -43,453 +43,455 @@ public class MainCommand implements CommandExecutor {
public boolean onCommand(CommandSender sender, Command command, String alias, String[] args) {
if (args.length == 0) {
sender.sendMessage(Toolkit.translate("&7[&b&lKIT-PVP&7]"));
sender.sendMessage(Toolkit.translate("&7Version: &b" + plugin.getDescription().getVersion()));
sender.sendMessage(Toolkit.translate("&7Developer: &bCervinakuy"));
sender.sendMessage(Toolkit.translate("&7Commands: &b/kp help"));
sender.sendMessage(Toolkit.translate("&7Download: &bbit.ly/KP-Download"));
executeInfoCommand(sender);
return true;
} else if (args.length == 1) {
if (args[0].equalsIgnoreCase("help")) {
sender.sendMessage(Toolkit.translate("&3&m &r &b&lKIT-PVP &3Created by Cervinakuy &3&m "));
sender.sendMessage(Toolkit.translate(" "));
sender.sendMessage(Toolkit.translate("&7- &b/kp &7Displays information about KitPvP."));
sender.sendMessage(Toolkit.translate("&7- &b/kp help &7Displays the help message."));
sender.sendMessage(Toolkit.translate("&7- &b/kp reload &7Reloads the configuration files."));
sender.sendMessage(Toolkit.translate("&7- &b/kp debug &7Prints debug information."));
sender.sendMessage(Toolkit.translate("&7- &b/kp addspawn &7Adds a spawn to an arena."));
sender.sendMessage(Toolkit.translate("&7- &b/kp arena <arena> &7Teleports you to a different arena."));
sender.sendMessage(Toolkit.translate("&7- &b/kp delarena &7Removes an arena."));
sender.sendMessage(Toolkit.translate("&7- &b/kp spawn &7Teleports you to the local arena spawn."));
sender.sendMessage(Toolkit.translate("&7- &b/kp create <kitName> &7Creates a kit from your inventory."));
sender.sendMessage(Toolkit.translate("&7- &b/kp delete <kitName> &7Deletes an existing kit."));
sender.sendMessage(Toolkit.translate("&7- &b/kp preview <kitName> &7Preview the contents of a kit."));
sender.sendMessage(Toolkit.translate("&7- &b/kp kits &7Lists all available kits."));
sender.sendMessage(Toolkit.translate("&7- &b/kp kit <kitName> &7Select a kit."));
sender.sendMessage(Toolkit.translate("&7- &b/kp kit <kitName> <player> &7Attempts to select a kit for a player."));
sender.sendMessage(Toolkit.translate("&7- &b/kp clear &7Clears your current kit."));
sender.sendMessage(Toolkit.translate("&7- &b/kp clear <player> &7Clears a kit for a player."));
sender.sendMessage(Toolkit.translate("&7- &b/kp stats &7View your stats."));
sender.sendMessage(Toolkit.translate("&7- &b/kp stats <player> &7View the stats of another player."));
sender.sendMessage(Toolkit.translate("&7- &b/kp menu &7Displays the kits menu."));
sender.sendMessage(Toolkit.translate("&7- &b/kp setstats <player> <type> <amount> &7Change stats of a player."));
sender.sendMessage(Toolkit.translate("&7- &b/kp export &7Exports all stats to the new storage format."));
sender.sendMessage(Toolkit.translate(" "));
sender.sendMessage(Toolkit.translate("&3&m "));
executeHelpCommand(sender);
return true;
} else if (args[0].equalsIgnoreCase("reload") && hasPermission(sender, "kp.command.reload")) {
resources.reload();
CacheManager.clearCaches();
arena.getMenus().getKitMenu().clearCache();
sender.sendMessage(messages.getString("Messages.Commands.Reload"));
executeReloadCommand(sender);
return true;
} else if (args[0].equalsIgnoreCase("debug") && hasPermission(sender, "kp.command.debug")) {
String names = "";
for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
names += plugin.getName() + " ";
}
sender.sendMessage(Toolkit.translate("&7[&b&lKIT-PVP&7] &aServer Version: &7" + Bukkit.getBukkitVersion()) + " " + (Bukkit.getVersion().contains("Spigot") ? "(Spigot)" : "(Other)"));
sender.sendMessage(Toolkit.translate("&7[&b&lKIT-PVP&7] &aPlugin Version: &7" + plugin.getDescription().getVersion() + " " + (plugin.needsUpdate() ? "&c(Requires Update)" : "&a(Latest Version)")));
sender.sendMessage(Toolkit.translate("&7[&b&lKIT-PVP&7] &aSpawn Set: " + (config.contains("Arenas") ? "&aConfigured" : "&cUnconfigured")));
sender.sendMessage(Toolkit.translate("&7[&b&lKIT-PVP&7] &aSupport Discord: &7https://discord.gg/Hfej6UR8Bk"));
sender.sendMessage(Toolkit.translate("&7[&b&lKIT-PVP&7] &aPlugin List: &7" + names));
executeDebugCommand(sender);
return true;
} else if (args[0].equalsIgnoreCase("export") && hasPermission(sender, "kp.command.export")) {
File statsFile = new File(plugin.getDataFolder().getAbsolutePath() + "/stats.yml");
if (statsFile.exists()) {
sender.sendMessage(Toolkit.translate("%prefix% &7Exporting data, this may take a while..."));
new BukkitRunnable() {
@Override
public void run() {
plugin.getDatabase().exportStats();
}
}.runTaskAsynchronously(plugin);
sender.sendMessage(Toolkit.translate("%prefix% &aStats successfully exported to database."));
} else {
sender.sendMessage(Toolkit.translate("%prefix% &cNo stats.yml was found to export from."));
}
executeExportCommand(sender);
return true;
} else if (args[0].equalsIgnoreCase("kits") && hasPermission(sender, "kp.command.kits")) {
String message = "";
for (String kitName : resources.getPluginDirectoryFiles("kits", false)) {
String[] fileName = kitName.split(".yml", 2);
message += fileName[0] + ", ";
}
message = message.substring(0, message.length() - 2);
sender.sendMessage(messages.getString("Messages.Commands.Kits").replace("%kits%", message));
executeKitsCommand(sender);
return true;
}
} else if (args.length == 2) {
if (args[0].equalsIgnoreCase("clear") && hasPermission(sender, "kp.command.clear.other")) {
String playerName = args[1];
Player target = Bukkit.getPlayer(playerName);
if (target != null && Toolkit.inArena(target)) {
clearKit(target);
target.sendMessage(messages.getString("Messages.Commands.Cleared"));
sender.sendMessage(messages.getString("Messages.Commands.ClearedOther").replace("%player%", target.getName()));
} else {
sender.sendMessage(messages.getString("Messages.Error.Offline"));
}
executeClearCommandOther(sender, args);
return true;
} else if (args[0].equalsIgnoreCase("delete") && hasPermission(sender, "kp.command.delete")) {
String kitName = args[1];
if (arena.getKits().isKit(kitName)) {
arena.getKits().deleteKit(kitName);
sender.sendMessage(messages.getString("Messages.Commands.Delete")
.replace("%kit%", kitName));
} else {
sender.sendMessage(messages.getString("Messages.Error.Lost"));
}
executeDeleteKitCommand(sender, args);
return true;
} else if (args[0].equalsIgnoreCase("stats") && hasPermission(sender, "kp.command.stats.other")) {
String targetName = args[1];
if (plugin.getDatabase().isPlayerRegistered(targetName)) {
sendStatsMessage(sender, targetName);
} else {
sender.sendMessage(messages.getString("Messages.Error.Offline"));
}
executeStatsCommandOther(sender, args);
return true;
}
} else if (args.length == 3) {
if (args[0].equalsIgnoreCase("kit") && hasPermission(sender, "kp.command.kit.other")) {
String kitName = args[1];
String playerName = args[2];
Player target = Bukkit.getPlayer(playerName);
if (target != null && Toolkit.inArena(target)) {
Kit kitToGive = arena.getKits().getKitByName(kitName);
arena.getKits().attemptToGiveKitToPlayer(target, kitToGive);
sender.sendMessage(messages.getString("Messages.Commands.KitOther").replace("%player%", playerName).replace("%kit%", kitName));
} else {
sender.sendMessage(messages.getString("Messages.Error.Offline"));
}
executeKitCommand(sender, args);
return true;
}
} else if (args.length == 4) {
if (args[0].equalsIgnoreCase("setstats") && hasPermission(sender, "kp.command.setstats")) {
String playerName = args[1];
String statsIdentifier = args[2];
String possibleAmount = args[3];
if (statsIdentifier.equalsIgnoreCase("kills") ||
statsIdentifier.equalsIgnoreCase("deaths") ||
statsIdentifier.equalsIgnoreCase("level") ||
statsIdentifier.equalsIgnoreCase("experience")) {
if (StringUtils.isNumeric(possibleAmount)) {
String playerUUID = plugin.getDatabase().usernameToUUID(playerName);
if (playerUUID != null) {
int amount = Integer.parseInt(possibleAmount);
arena.getStats().setStat(statsIdentifier, playerName, amount);
arena.getStats().pushCachedStatsToDatabase(playerName, false);
sender.sendMessage(resources.getMessages().getString("Messages.Commands.SetStats")
.replace("%player%", playerName)
.replace("%amount%", String.valueOf(amount))
.replace("%type%", statsIdentifier));
return true;
} else {
sender.sendMessage(resources.getMessages().getString("Messages.Error.Offline"));
}
} else {
sender.sendMessage(resources.getMessages().getString("Messages.Error.InvalidNumber")
.replace("%number%", possibleAmount));
}
} else {
sender.sendMessage(resources.getMessages().getString("Messages.Error.InvalidType")
.replace("%type%", statsIdentifier)
.replace("%types%", "kills, deaths, level, experience"));
}
executeSetStatsCommand(sender, args);
return true;
}
}
if (sender instanceof Player) {
Player p = (Player) sender;
if (args.length == 1) {
if (args[0].equalsIgnoreCase("stats") && hasPermission(sender, "kp.command.stats")) {
sendStatsMessage(p, p.getName());
executeStatsCommandSelf(p);
return true;
} else if (args[0].equalsIgnoreCase("menu") && hasPermission(sender, "kp.command.menu")) {
arena.getMenus().getKitMenu().open(p);
executeMenuCommand(p);
return true;
} else if (args[0].equalsIgnoreCase("spawn") && hasPermission(sender, "kp.command.spawn")) {
if (config.contains("Arenas." + p.getWorld().getName())) {
if (!spawnUsers.contains(p.getName())) {
spawnUsers.add(p.getName());
p.sendMessage(messages.getString("Messages.Commands.Teleporting"));
XSound.play(p, "ENTITY_ITEM_PICKUP, 1, -1");
Location beforeLocation = p.getLocation();
new BukkitRunnable() {
public int time = config.getInt("Spawn.Time") + 1;
@Override
public void run() {
time--;
if (time != 0) {
if (p.getGameMode() != GameMode.SPECTATOR) {
p.sendMessage(messages.getString("Messages.Commands.Time").replace("%time%", String.valueOf(time)));
XSound.play(p, "BLOCK_NOTE_BLOCK_SNARE, 1, 1");
if (beforeLocation.getBlockX() != p.getLocation().getBlockX() || beforeLocation.getBlockY() != p.getLocation().getBlockY() || beforeLocation.getBlockZ() != p.getLocation().getBlockZ()) {
p.sendMessage(messages.getString("Messages.Error.Moved"));
spawnUsers.remove(p.getName());
cancel();
}
} else {
spawnUsers.remove(p.getName());
cancel();
}
} else {
p.sendMessage(messages.getString("Messages.Commands.Teleport"));
arena.toSpawn(p, p.getWorld().getName());
if (config.getBoolean("Arena.ClearKitOnCommandSpawn")) {
clearKit(p);
}
spawnUsers.remove(p.getName());
XSound.play(p, "ENTITY_ENDERMAN_TELEPORT, 1, 1");
cancel();
}
}
}.runTaskTimer(plugin, 0L, 20L);
}
} else {
p.sendMessage(messages.getString("Messages.Error.Arena").replace("%arena%", p.getWorld().getName()));
}
executeSpawnCommand(p);
return true;
} else if (args[0].equalsIgnoreCase("clear") && hasPermission(sender, "kp.command.clear")) {
clearKit(p);
p.sendMessage(messages.getString("Messages.Commands.Cleared"));
executeClearCommandSelf(p);
return true;
} else if (args[0].equalsIgnoreCase("addspawn") && hasPermission(p, "kp.command.addspawn")) {
String arenaName = p.getWorld().getName();
int spawnNumber = Toolkit.getNextAvailable(config, "Arenas." + arenaName, 1000, false, 1);
Toolkit.saveLocationToResource(config, "Arenas." + arenaName + "." + spawnNumber, p.getLocation());
p.sendMessage(messages.getString("Messages.Commands.Added")
.replace("%number%", String.valueOf(spawnNumber))
.replace("%arena%", arenaName));
XSound.play(p, "ENTITY_ZOMBIE_ATTACK_WOODEN_DOOR, 1, 1");
executeAddSpawnCommand(p);
return true;
} else if (args[0].equalsIgnoreCase("delarena") && hasPermission(sender, "kp.command.delarena")) {
String arenaName = p.getWorld().getName();
if (config.contains("Arenas." + arenaName)) {
config.set("Arenas." + arenaName, null);
plugin.saveConfig();
p.sendMessage(messages.getString("Messages.Commands.Removed").replace("%arena%", arenaName));
XSound.play(p, "ENTITY_ZOMBIE_ATTACK_WOODEN_DOOR, 1, 1");
} else {
p.sendMessage(messages.getString("Messages.Error.Arena"));
}
executeDeleteArenaCommand(p);
return true;
}
} else if (args.length == 2) {
if (args[0].equalsIgnoreCase("arena") && hasPermission(sender, "kp.command.spawn")) {
String arenaName = args[1];
if (resources.getConfig().getBoolean("Arena.PreventArenaSignUseWithKit")) {
if (arena.getKits().hasKit(p.getName())) {
p.sendMessage(messages.getString("Messages.Error.KitInvalid"));
return true;
}
}
arena.toSpawn(p, arenaName);
executeArenaCommand(p, args);
return true;
} else if (args[0].equalsIgnoreCase("preview") && hasPermission(sender, "kp.command.preview")) {
String kitName = args[1];
if (arena.getKits().isKit(kitName)) {
Kit kitToPreview = arena.getKits().getKitByName(kitName);
arena.getMenus().getPreviewMenu().open(p, kitToPreview, resources);
} else {
p.sendMessage(messages.getString("Messages.Error.Lost"));
}
} else if (args[0].equalsIgnoreCase("create") && hasPermission(sender, "kp.command.create")) {
String kitName = args[1];
if (!arena.getKits().isKit(kitName)) {
arena.getKits().createKit(p, kitName);
p.sendMessage(messages.getString("Messages.Commands.Create")
.replace("%kit%", kitName));
} else {
p.sendMessage(messages.getString("Messages.Error.Exists"));
}
} else if (args[0].equalsIgnoreCase("kit")/* && hasPermission(sender, "kp.command.kit")*/) {
if (Toolkit.inArena(p)) {
String kitName = args[1];
Kit kitToGive = arena.getKits().getKitByName(kitName);
arena.getKits().attemptToGiveKitToPlayer(p, kitToGive);
} else {
p.sendMessage(messages.getString("Messages.Error.Location"));
}
executePreviewCommand(p, args);
return true;
} else if (args[0].equalsIgnoreCase("create") && hasPermission(sender, "kp.command.create")) {
executeCreateKitCommand(p, args);
return true;
} else if (args[0].equalsIgnoreCase("kit")) {
executeKitCommandSelf(p, args);
return true;
}
}
} else {
sender.sendMessage(messages.getString("Messages.General.Player"));
sender.sendMessage(messages.fetchString("Messages.General.Player"));
return true;
}
return false;
}
private void executeInfoCommand(CommandSender sender) {
sender.sendMessage(Toolkit.translate("&7[&b&lKIT-PVP&7]"));
sender.sendMessage(Toolkit.translate("&7Version: &b" + plugin.getDescription().getVersion()));
sender.sendMessage(Toolkit.translate("&7Developer: &bCervinakuy"));
sender.sendMessage(Toolkit.translate("&7Commands: &b/kp help"));
sender.sendMessage(Toolkit.translate("&7Download: &bbit.ly/KP-Download"));
}
private void executeHelpCommand(CommandSender sender) {
sender.sendMessage(Toolkit.translate("&3&m &r &b&lKIT-PVP &3Created by Cervinakuy &3&m "));
sender.sendMessage(Toolkit.translate(" "));
sender.sendMessage(Toolkit.translate("&7- &b/kp &7Displays information about KitPvP."));
sender.sendMessage(Toolkit.translate("&7- &b/kp help &7Displays the help message."));
sender.sendMessage(Toolkit.translate("&7- &b/kp reload &7Reloads the configuration files."));
sender.sendMessage(Toolkit.translate("&7- &b/kp debug &7Prints debug information."));
sender.sendMessage(Toolkit.translate("&7- &b/kp addspawn &7Adds a spawn to an arena."));
sender.sendMessage(Toolkit.translate("&7- &b/kp arena <arena> &7Teleports you to a different arena."));
sender.sendMessage(Toolkit.translate("&7- &b/kp delarena &7Removes an arena."));
sender.sendMessage(Toolkit.translate("&7- &b/kp spawn &7Teleports you to the local arena spawn."));
sender.sendMessage(Toolkit.translate("&7- &b/kp create <kitName> &7Creates a kit from your inventory."));
sender.sendMessage(Toolkit.translate("&7- &b/kp delete <kitName> &7Deletes an existing kit."));
sender.sendMessage(Toolkit.translate("&7- &b/kp preview <kitName> &7Preview the contents of a kit."));
sender.sendMessage(Toolkit.translate("&7- &b/kp kits &7Lists all available kits."));
sender.sendMessage(Toolkit.translate("&7- &b/kp kit <kitName> &7Select a kit."));
sender.sendMessage(Toolkit.translate("&7- &b/kp kit <kitName> <player> &7Attempts to select a kit for a player."));
sender.sendMessage(Toolkit.translate("&7- &b/kp clear &7Clears your current kit."));
sender.sendMessage(Toolkit.translate("&7- &b/kp clear <player> &7Clears a kit for a player."));
sender.sendMessage(Toolkit.translate("&7- &b/kp stats &7View your stats."));
sender.sendMessage(Toolkit.translate("&7- &b/kp stats <player> &7View the stats of another player."));
sender.sendMessage(Toolkit.translate("&7- &b/kp menu &7Displays the kits menu."));
sender.sendMessage(Toolkit.translate("&7- &b/kp setstats <player> <type> <amount> &7Change stats of a player."));
sender.sendMessage(Toolkit.translate("&7- &b/kp export &7Exports all stats to the new storage format."));
sender.sendMessage(Toolkit.translate(" "));
sender.sendMessage(Toolkit.translate("&3&m "));
}
private void executeReloadCommand(CommandSender sender) {
resources.reload();
CacheManager.clearCaches();
arena.getMenus().getKitMenu().clearCache();
sender.sendMessage(messages.fetchString("Messages.Commands.Reload"));
}
private void executeDebugCommand(CommandSender sender) {
String names = "";
for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
names += plugin.getName() + " ";
}
sender.sendMessage(Toolkit.translate("&7[&b&lKIT-PVP&7] &aServer Version: &7" + Bukkit.getBukkitVersion()) + " " + (Bukkit.getVersion().contains("Spigot") ? "(Spigot)" : "(Other)"));
sender.sendMessage(Toolkit.translate("&7[&b&lKIT-PVP&7] &aPlugin Version: &7" + plugin.getDescription().getVersion() + " " + (plugin.needsUpdate() ? "&c(Requires Update)" : "&a(Latest Version)")));
sender.sendMessage(Toolkit.translate("&7[&b&lKIT-PVP&7] &aSpawn Set: " + (config.contains("Arenas") ? "&aConfigured" : "&cUnconfigured")));
sender.sendMessage(Toolkit.translate("&7[&b&lKIT-PVP&7] &aSupport Discord: &7https://discord.gg/Hfej6UR8Bk"));
sender.sendMessage(Toolkit.translate("&7[&b&lKIT-PVP&7] &aPlugin List: &7" + names));
}
private void executeExportCommand(CommandSender sender) {
File statsFile = new File(plugin.getDataFolder().getAbsolutePath() + "/stats.yml");
if (statsFile.exists()) {
sender.sendMessage(Toolkit.translate("%prefix% &7Exporting data, this may take a while..."));
new BukkitRunnable() {
@Override
public void run() {
plugin.getDatabase().exportStats();
}
}.runTaskAsynchronously(plugin);
sender.sendMessage(Toolkit.translate("%prefix% &aStats successfully exported to database."));
} else {
sender.sendMessage(Toolkit.translate("%prefix% &cNo stats.yml was found to export from."));
}
}
private void executeKitsCommand(CommandSender sender) {
String message = "";
for (String kitName : resources.getPluginDirectoryFiles("kits", false)) {
String[] fileName = kitName.split(".yml", 2);
message += fileName[0] + ", ";
}
message = message.substring(0, message.length() - 2);
sender.sendMessage(messages.fetchString("Messages.Commands.Kits").replace("%kits%", message));
}
private void executeClearCommandOther(CommandSender sender, String[] args) {
String playerName = args[1];
Player target = Bukkit.getPlayer(playerName);
if (target != null && Toolkit.inArena(target)) {
clearKit(target);
target.sendMessage(messages.fetchString("Messages.Commands.Cleared"));
sender.sendMessage(messages.fetchString("Messages.Commands.ClearedOther").replace("%player%", target.getName()));
} else {
sender.sendMessage(messages.fetchString("Messages.Error.Offline"));
}
}
private void executeDeleteKitCommand(CommandSender sender, String[] args) {
String kitName = args[1];
if (arena.getKits().isKit(kitName)) {
arena.getKits().deleteKit(kitName);
sender.sendMessage(messages.fetchString("Messages.Commands.Delete")
.replace("%kit%", kitName));
} else {
sender.sendMessage(messages.fetchString("Messages.Error.Lost"));
}
}
private void executeStatsCommandOther(CommandSender sender, String[] args) {
String targetName = args[1];
if (plugin.getDatabase().isPlayerRegistered(targetName)) {
sendStatsMessage(sender, targetName);
} else {
sender.sendMessage(messages.fetchString("Messages.Error.Offline"));
}
}
private void executeKitCommand(CommandSender sender, String[] args) {
String kitName = args[1];
String playerName = args[2];
Player target = Bukkit.getPlayer(playerName);
if (target != null && Toolkit.inArena(target)) {
Kit kitToGive = arena.getKits().getKitByName(kitName);
arena.getKits().attemptToGiveKitToPlayer(target, kitToGive);
sender.sendMessage(messages.fetchString("Messages.Commands.KitOther").replace("%player%", playerName).replace("%kit%", kitName));
} else {
sender.sendMessage(messages.fetchString("Messages.Error.Offline"));
}
}
private void executeSetStatsCommand(CommandSender sender, String[] args) {
String playerName = args[1];
String statsIdentifier = args[2];
String possibleAmount = args[3];
if (statsIdentifier.equalsIgnoreCase("kills") ||
statsIdentifier.equalsIgnoreCase("deaths") ||
statsIdentifier.equalsIgnoreCase("level") ||
statsIdentifier.equalsIgnoreCase("experience")) {
if (!StringUtils.isNumeric(possibleAmount)) {
sender.sendMessage(resources.getMessages().fetchString("Messages.Error.InvalidNumber")
.replace("%number%", possibleAmount));
}
String playerUUID = plugin.getDatabase().usernameToUUID(playerName);
if (playerUUID == null) {
sender.sendMessage(resources.getMessages().fetchString("Messages.Error.Offline"));
}
int amount = Integer.parseInt(possibleAmount);
arena.getStats().setStat(statsIdentifier, playerName, amount);
arena.getStats().pushCachedStatsToDatabase(playerName, false);
sender.sendMessage(resources.getMessages().fetchString("Messages.Commands.SetStats")
.replace("%player%", playerName)
.replace("%amount%", String.valueOf(amount))
.replace("%type%", statsIdentifier));
} else {
sender.sendMessage(resources.getMessages().fetchString("Messages.Error.InvalidType")
.replace("%type%", statsIdentifier)
.replace("%types%", "kills, deaths, level, experience"));
}
}
private void executeStatsCommandSelf(Player p) {
sendStatsMessage(p, p.getName());
}
private void executeMenuCommand(Player p) {
arena.getMenus().getKitMenu().open(p);
}
private void executeSpawnCommand(Player p) {
if (!config.contains("Arenas." + p.getWorld().getName())) {
p.sendMessage(messages.fetchString("Messages.Error.Arena").replace("%arena%", p.getWorld().getName()));
}
if (spawnUsers.contains(p.getName())) {
return;
}
p.sendMessage(messages.fetchString("Messages.Commands.Teleporting"));
spawnUsers.add(p.getName());
XSound.play(p, "ENTITY_ITEM_PICKUP, 1, -1");
Location beforeLocation = p.getLocation();
new BukkitRunnable() {
public int time = config.getInt("Spawn.Time") + 1;
@Override
public void run() {
time--;
if (time != 0) {
if (p.getGameMode() != GameMode.SPECTATOR) {
p.sendMessage(messages.fetchString("Messages.Commands.Time")
.replace("%time%", String.valueOf(time)));
XSound.play(p, "BLOCK_NOTE_BLOCK_SNARE, 1, 1");
if (beforeLocation.getBlockX() != p.getLocation().getBlockX() ||
beforeLocation.getBlockY() != p.getLocation().getBlockY() ||
beforeLocation.getBlockZ() != p.getLocation().getBlockZ()) {
p.sendMessage(messages.fetchString("Messages.Error.Moved"));
spawnUsers.remove(p.getName());
cancel();
}
} else {
spawnUsers.remove(p.getName());
cancel();
}
} else {
p.sendMessage(messages.fetchString("Messages.Commands.Teleport"));
arena.toSpawn(p, p.getWorld().getName());
if (config.getBoolean("Arena.ClearKitOnCommandSpawn")) {
clearKit(p);
}
spawnUsers.remove(p.getName());
XSound.play(p, "ENTITY_ENDERMAN_TELEPORT, 1, 1");
cancel();
}
}
}.runTaskTimer(plugin, 0L, 20L);
}
private void executeClearCommandSelf(Player p) {
clearKit(p);
p.sendMessage(messages.fetchString("Messages.Commands.Cleared"));
}
private void executeAddSpawnCommand(Player p) {
String arenaName = p.getWorld().getName();
int spawnNumber = Toolkit.getNextAvailable(config, "Arenas." + arenaName, 1000, false, 1);
Toolkit.saveLocationToResource(config, "Arenas." + arenaName + "." + spawnNumber, p.getLocation());
p.sendMessage(messages.fetchString("Messages.Commands.Added")
.replace("%number%", String.valueOf(spawnNumber))
.replace("%arena%", arenaName));
XSound.play(p, "ENTITY_ZOMBIE_ATTACK_WOODEN_DOOR, 1, 1");
}
private void executeDeleteArenaCommand(Player p) {
String arenaName = p.getWorld().getName();
if (config.contains("Arenas." + arenaName)) {
config.set("Arenas." + arenaName, null);
plugin.saveConfig();
p.sendMessage(messages.fetchString("Messages.Commands.Removed").replace("%arena%", arenaName));
XSound.play(p, "ENTITY_ZOMBIE_ATTACK_WOODEN_DOOR, 1, 1");
} else {
p.sendMessage(messages.fetchString("Messages.Error.Arena"));
}
}
private void executeArenaCommand(Player p, String[] args) {
String arenaName = args[1];
if (resources.getConfig().getBoolean("Arena.PreventArenaSignUseWithKit")) {
if (arena.getKits().hasKit(p.getName())) {
p.sendMessage(messages.fetchString("Messages.Error.KitInvalid"));
return;
}
}
arena.toSpawn(p, arenaName);
}
private void executePreviewCommand(Player p, String[] args) {
String kitName = args[1];
if (arena.getKits().isKit(kitName)) {
Kit kitToPreview = arena.getKits().getKitByName(kitName);
arena.getMenus().getPreviewMenu().open(p, kitToPreview, resources);
} else {
p.sendMessage(messages.fetchString("Messages.Error.Lost"));
}
}
private void executeCreateKitCommand(Player p, String[] args) {
String kitName = args[1];
if (!arena.getKits().isKit(kitName)) {
arena.getKits().createKit(p, kitName);
p.sendMessage(messages.fetchString("Messages.Commands.Create")
.replace("%kit%", kitName));
} else {
p.sendMessage(messages.fetchString("Messages.Error.Exists"));
}
}
private void executeKitCommandSelf(Player p, String[] args) {
if (Toolkit.inArena(p)) {
String kitName = args[1];
Kit kitToGive = arena.getKits().getKitByName(kitName);
arena.getKits().attemptToGiveKitToPlayer(p, kitToGive);
} else {
p.sendMessage(messages.fetchString("Messages.Error.Location"));
}
}
private boolean hasPermission(CommandSender sender, String permission) {
if (sender.hasPermission(permission)) {
return true;
}
sender.sendMessage(messages.getString("Messages.General.Permission").replace("%permission%", permission));
return false;
sender.sendMessage(messages.fetchString("Messages.General.Permission").replace("%permission%", permission));
return false;
}
private void clearKit(Player p) {
p.getInventory().setArmorContents(null);
p.getInventory().clear();
@@ -505,15 +507,12 @@ public class MainCommand implements CommandExecutor {
}
arena.getKits().resetKit(p.getName());
}
private void sendStatsMessage(CommandSender receiver, String username) {
for (String line : messages.getStringList("Messages.Stats.Message")) {
receiver.sendMessage(arena.getUtilities().replaceBuiltInPlaceholdersIfPresent(line, username));
}
}
}
@@ -15,7 +15,6 @@ import org.bukkit.potion.PotionEffect;
public class PreviewMenu {
private Menu create(Kit kit, Resources resources) {
Menu previewMenu = new Menu("Previewing: " + kit.getName(), new PreviewHolder(), 54);
// ARMOR //
@@ -84,16 +83,13 @@ public class PreviewMenu {
CacheManager.getPreviewMenuCache().put(kit.getName(), previewMenu);
return previewMenu;
}
public void open(Player p, Kit kit, Resources resources) {
Menu previewMenu = CacheManager.getPreviewMenuCache().containsKey(kit.getName()) ?
CacheManager.getPreviewMenuCache().get(kit.getName()) : create(kit, resources);
previewMenu.openMenu(p);
}
}
@@ -97,9 +97,8 @@ public class Resource extends YamlConfiguration {
}
}
@Override
public String getString(String path) {
String string = super.getString(path);
public String fetchString(String path) {
String string = super.getString(path);
if (string != null) {
string = ChatColor.translateAlternateColorCodes('&',
@@ -110,7 +109,7 @@ public class Resource extends YamlConfiguration {
}
return string;
}
}
@Override
public List<String> getStringList(String path) {