package net.shockverse.survivalgames.core; import java.util.ArrayList; import java.util.List; import net.shockverse.survivalgames.SurvivalGames; import net.shockverse.survivalgames.core.Language.LangKey; import org.bukkit.entity.Player; /** * @description Handles all plugin help * @author Duker02, LegitModern, Tagette */ public class Help { private static SurvivalGames plugin; private static List<CommandHelp> helpList; private static class CommandHelp { public String name; public String desc; public String permission; public CommandHelp(String _name, String _help, String _permission) { this.name = _name; this.desc = _help; this.permission = _permission; } } public static void initialize(SurvivalGames instance) { Help.plugin = instance; helpList = new ArrayList<CommandHelp>(); registerHelp(); } public static void disable() { helpList.clear(); helpList = null; } public static void registerHelp() { // Generic command help. register("sg help", "Shows the commands for " + plugin.name + "."); if(Constants.debugAllowed) register("sg debug", "Puts you and " + plugin.name + " into debug mode.", "survivalgames.admin.debug"); register("sg reload", "Reloads the config files.", "survivalgames.admin.reload"); register("sg config get <file> (key)", "Shows the config for a <file> filtered optionally by a (key).", "survivalgames.admin.config"); register("sg config set <file> <key> <value>", "Modifys the config <file>'s <key> and sets it to <value>.", "survivalgames.admin.config"); /* Register help here. */ register("sg start (arenaNumber)", "Starts the game optionally in (arenaNumber) in 60 seconds.", "survivalgames.admin.start"); register("sg startnow (arenaNumber)", "Starts the game optionally in (arenaNumber) immediately.", "survivalgames.admin.start"); register("sg stop", "Returns everyone to lobby and ends the game.", "survivalgames.admin.stop"); register("sg deathmatch", "Starts the deathmatch.", "survivalgames.admin.deathmatch"); register("sg refillchests", "Refill all chests in the world.", "survivalgames.admin.refill"); register("sg add <player>", "Add's <player> to the game.", "survivalgames.admin.add"); register("sg inv <player>", "Opens <player>'s inventory for you to see.", "survivalgames.admin.inventory"); register("sg enable <worldName>", "Enables and loads <worldName>.", "survivalgames.admin.enable"); register("sg disable <worldName>", "Disables and unloads <worldName>.", "survivalgames.admin.disable"); register("sg worlds", "Lists off the arenas by world name.", "survivalgames.admin.edit"); register("sg addarena <worldName>", "Adds an arena if the world exists.", "survivalgames.admin.addarena"); register("sg removearena <worldName>", "Removes an arena.", "survivalgames.admin.removearena"); register("sg edit <worldName>", "Enter an arena to edit it.", "survivalgames.admin.edit"); register("sg save", "Saves changes to an arena.", "survivalgames.admin.edit"); register("sg setspawn <spawnNumber>", "Sets <spawnNumber> to where your standing for the arena your editing.", "survivalgames.admin.edit.setspawn"); register("sg delspawn <spawnNumber>", "Deletes <spawnNumber> from the arena your editing.", "survivalgames.admin.setspawn"); register("sg tpspawn <spawnNumber>", "Teleports you to spawn <spawnNumber> in the arena your editing.", "survivalgames.admin.edit.tpspawn"); register("sg spawns", "Lists the spawns in the arena your editing.", "survivalgames.admin.edit"); register("sg setdmspawn <spawnNumber>", "Sets <spawnNumber> to where your standing for the arena your editing.", "survivalgames.admin.edit.setspawn"); register("sg deldmspawn <spawnNumber>", "Deletes <spawnNumber> from the arena your editing.", "survivalgames.admin.setspawn"); register("sg tpdmspawn <spawnNumber>", "Teleports you to spawn <spawnNumber> in the arena your editing.", "survivalgames.admin.edit.tpspawn"); register("sg dmspawns", "Lists the spawns in the arena your editing.", "survivalgames.admin.edit"); register("sg timeleft", "Shows the time left before the game starts.", "survivalgames.basic.timeleft"); register("sg list", "Shows who's playing.", "survivalgames.basic.list"); register("sg vote <arenaNumber>", "Votes for the next arena to be <arenaNumber>.", "survivalgames.basic.vote"); } private static void register(String command, String help, String permission) { helpList.add(new CommandHelp(command, help, permission)); } private static void register(String command, String help) { helpList.add(new CommandHelp(command, help, "")); } public static String getReadableHelp(Player player, int page) { String readableHelp = Language.getLanguage(LangKey.noHelp); if(helpList != null){ int total = 0; if (!helpList.isEmpty()) { int maxPerPage = 5; int count = 0; int currentPage = 1; Language.setVar("page", currentPage + ""); readableHelp = Language.getLanguage(LangKey.helpTitle) + "\n"; for (CommandHelp help : helpList) { if (player == null || Perms.has(player, help.permission, true)) { Language.setVar("label", help.name); Language.setVar("desc", help.desc); readableHelp += Language.getLanguage(LangKey.helpItem) + "\n"; count++; total++; } if(count % maxPerPage == 0) { if(currentPage != page) { count = 0; currentPage++; Language.setVar("page", currentPage + ""); readableHelp = Language.getLanguage(LangKey.helpTitle) + "\n"; } else { break; } } } readableHelp = readableHelp.substring(0, readableHelp.length() - 1); } if(total == 0) { readableHelp = Language.getLanguage(LangKey.noHelp); } } return readableHelp; } }