类org.bukkit.help.HelpTopic源码实例Demo

下面列出了怎么用org.bukkit.help.HelpTopic的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Kettle   文件: HelpCommand.java
@Override
public List<String> tabComplete(CommandSender sender, String alias, String[] args) {
    Validate.notNull(sender, "Sender cannot be null");
    Validate.notNull(args, "Arguments cannot be null");
    Validate.notNull(alias, "Alias cannot be null");

    if (args.length == 1) {
        List<String> matchedTopics = new ArrayList<String>();
        String searchString = args[0];
        for (HelpTopic topic : Bukkit.getServer().getHelpMap().getHelpTopics()) {
            String trimmedTopic = topic.getName().startsWith("/") ? topic.getName().substring(1) : topic.getName();

            if (trimmedTopic.startsWith(searchString)) {
                matchedTopics.add(trimmedTopic);
            }
        }
        return matchedTopics;
    }
    return ImmutableList.of();
}
 
源代码2 项目: Kettle   文件: HelpYamlReader.java
/**
 * Extracts a list of all index topics from help.yml
 *
 * @return A list of index topics.
 */
public List<HelpTopic> getIndexTopics() {
    List<HelpTopic> topics = new LinkedList<HelpTopic>();
    ConfigurationSection indexTopics = helpYaml.getConfigurationSection("index-topics");
    if (indexTopics != null) {
        for (String topicName : indexTopics.getKeys(false)) {
            ConfigurationSection section = indexTopics.getConfigurationSection(topicName);
            String shortText = ChatColor.translateAlternateColorCodes(ALT_COLOR_CODE, section.getString("shortText", ""));
            String preamble = ChatColor.translateAlternateColorCodes(ALT_COLOR_CODE, section.getString("preamble", ""));
            String permission = ChatColor.translateAlternateColorCodes(ALT_COLOR_CODE, section.getString("permission", ""));
            List<String> commands = section.getStringList("commands");
            topics.add(new CustomIndexHelpTopic(server.getHelpMap(), topicName, shortText, permission, commands, preamble));
        }
    }
    return topics;
}
 
源代码3 项目: Kettle   文件: CustomIndexHelpTopic.java
@Override
public String getFullText(CommandSender sender) {
    if (futureTopics != null) {
        List<HelpTopic> topics = new LinkedList<HelpTopic>();
        for (String futureTopic : futureTopics) {
            HelpTopic topic = helpMap.getHelpTopic(futureTopic);
            if (topic != null) {
                topics.add(topic);
            }
        }
        setTopicsCollection(topics);
        futureTopics = null;
    }

    return super.getFullText(sender);
}
 
源代码4 项目: Skript   文件: ScriptCommand.java
public void registerHelp() {
	helps.clear();
	final HelpMap help = Bukkit.getHelpMap();
	final HelpTopic t = new GenericCommandHelpTopic(bukkitCommand);
	help.addTopic(t);
	helps.add(t);
	final HelpTopic aliases = help.getHelpTopic("Aliases");
	if (aliases instanceof IndexHelpTopic) {
		aliases.getFullText(Bukkit.getConsoleSender()); // CraftBukkit has a lazy IndexHelpTopic class (org.bukkit.craftbukkit.help.CustomIndexHelpTopic) - maybe its used for aliases as well
		try {
			final Field topics = IndexHelpTopic.class.getDeclaredField("allTopics");
			topics.setAccessible(true);
			@SuppressWarnings("unchecked")
			final ArrayList<HelpTopic> as = new ArrayList<>((Collection<HelpTopic>) topics.get(aliases));
			for (final String alias : activeAliases) {
				final HelpTopic at = new CommandAliasHelpTopic("/" + alias, "/" + getLabel(), help);
				as.add(at);
				helps.add(at);
			}
			Collections.sort(as, HelpTopicComparator.helpTopicComparatorInstance());
			topics.set(aliases, as);
		} catch (final Exception e) {
			Skript.outdatedError(e);//, "error registering aliases for /" + getName());
		}
	}
}
 
源代码5 项目: Skript   文件: ScriptCommand.java
public void unregisterHelp() {
	Bukkit.getHelpMap().getHelpTopics().removeAll(helps);
	final HelpTopic aliases = Bukkit.getHelpMap().getHelpTopic("Aliases");
	if (aliases != null && aliases instanceof IndexHelpTopic) {
		try {
			final Field topics = IndexHelpTopic.class.getDeclaredField("allTopics");
			topics.setAccessible(true);
			@SuppressWarnings("unchecked")
			final ArrayList<HelpTopic> as = new ArrayList<>((Collection<HelpTopic>) topics.get(aliases));
			as.removeAll(helps);
			topics.set(aliases, as);
		} catch (final Exception e) {
			Skript.outdatedError(e);//, "error unregistering aliases for /" + getName());
		}
	}
	helps.clear();
}
 
源代码6 项目: Thermos   文件: HelpYamlReader.java
/**
 * Extracts a list of all index topics from help.yml
 *
 * @return A list of index topics.
 */
public List<HelpTopic> getIndexTopics() {
    List<HelpTopic> topics = new LinkedList<HelpTopic>();
    ConfigurationSection indexTopics = helpYaml.getConfigurationSection("index-topics");
    if (indexTopics != null) {
        for (String topicName : indexTopics.getKeys(false)) {
            ConfigurationSection section = indexTopics.getConfigurationSection(topicName);
            String shortText = ChatColor.translateAlternateColorCodes(ALT_COLOR_CODE, section.getString("shortText", ""));
            String preamble = ChatColor.translateAlternateColorCodes(ALT_COLOR_CODE, section.getString("preamble", ""));
            String permission = ChatColor.translateAlternateColorCodes(ALT_COLOR_CODE, section.getString("permission", ""));
            List<String> commands = section.getStringList("commands");
            topics.add(new CustomIndexHelpTopic(server.getHelpMap(), topicName, shortText, permission, commands, preamble));
        }
    }
    return topics;
}
 
源代码7 项目: Thermos   文件: CustomIndexHelpTopic.java
@Override
public String getFullText(CommandSender sender) {
    if (futureTopics != null) {
        List<HelpTopic> topics = new LinkedList<HelpTopic>();
        for (String futureTopic : futureTopics) {
            HelpTopic topic = helpMap.getHelpTopic(futureTopic);
            if (topic != null) {
                topics.add(topic);
            }
        }
        setTopicsCollection(topics);
        futureTopics = null;
    }

    return super.getFullText(sender);
}
 
源代码8 项目: Kettle   文件: HelpCommand.java
protected HelpTopic findPossibleMatches(String searchString) {
    int maxDistance = (searchString.length() / 5) + 3;
    Set<HelpTopic> possibleMatches = new TreeSet<HelpTopic>(HelpTopicComparator.helpTopicComparatorInstance());

    if (searchString.startsWith("/")) {
        searchString = searchString.substring(1);
    }

    for (HelpTopic topic : Bukkit.getServer().getHelpMap().getHelpTopics()) {
        String trimmedTopic = topic.getName().startsWith("/") ? topic.getName().substring(1) : topic.getName();

        if (trimmedTopic.length() < searchString.length()) {
            continue;
        }

        if (Character.toLowerCase(trimmedTopic.charAt(0)) != Character.toLowerCase(searchString.charAt(0))) {
            continue;
        }

        if (damerauLevenshteinDistance(searchString, trimmedTopic.substring(0, searchString.length())) < maxDistance) {
            possibleMatches.add(topic);
        }
    }

    if (possibleMatches.size() > 0) {
        return new IndexHelpTopic("Search", null, null, possibleMatches, "Search for: " + searchString);
    } else {
        return null;
    }
}
 
源代码9 项目: Kettle   文件: HelpYamlReader.java
/**
 * Extracts a list of all general help topics from help.yml
 *
 * @return A list of general topics.
 */
public List<HelpTopic> getGeneralTopics() {
    List<HelpTopic> topics = new LinkedList<HelpTopic>();
    ConfigurationSection generalTopics = helpYaml.getConfigurationSection("general-topics");
    if (generalTopics != null) {
        for (String topicName : generalTopics.getKeys(false)) {
            ConfigurationSection section = generalTopics.getConfigurationSection(topicName);
            String shortText = ChatColor.translateAlternateColorCodes(ALT_COLOR_CODE, section.getString("shortText", ""));
            String fullText = ChatColor.translateAlternateColorCodes(ALT_COLOR_CODE, section.getString("fullText", ""));
            String permission = section.getString("permission", "");
            topics.add(new CustomHelpTopic(topicName, shortText, fullText, permission));
        }
    }
    return topics;
}
 
源代码10 项目: Kettle   文件: CommandAliasHelpTopic.java
@Override
public String getFullText(CommandSender forWho) {
    StringBuilder sb = new StringBuilder(shortText);
    HelpTopic aliasForTopic = helpMap.getHelpTopic(aliasFor);
    if (aliasForTopic != null) {
        sb.append("\n");
        sb.append(aliasForTopic.getFullText(forWho));
    }
    return sb.toString();
}
 
源代码11 项目: Kettle   文件: CommandAliasHelpTopic.java
@Override
public boolean canSee(CommandSender commandSender) {
    if (amendedPermission == null) {
        HelpTopic aliasForTopic = helpMap.getHelpTopic(aliasFor);
        if (aliasForTopic != null) {
            return aliasForTopic.canSee(commandSender);
        } else {
            return false;
        }
    } else {
        return commandSender.hasPermission(amendedPermission);
    }
}
 
源代码12 项目: Skript   文件: Commands.java
@Override
public String getFullText(final CommandSender forWho) {
	final StringBuilder sb = new StringBuilder(shortText);
	final HelpTopic aliasForTopic = helpMap.getHelpTopic(aliasFor);
	if (aliasForTopic != null) {
		sb.append("\n");
		sb.append(aliasForTopic.getFullText(forWho));
	}
	return "" + sb.toString();
}
 
源代码13 项目: Thermos   文件: HelpYamlReader.java
/**
 * Extracts a list of all general help topics from help.yml
 *
 * @return A list of general topics.
 */
public List<HelpTopic> getGeneralTopics() {
    List<HelpTopic> topics = new LinkedList<HelpTopic>();
    ConfigurationSection generalTopics = helpYaml.getConfigurationSection("general-topics");
    if (generalTopics != null) {
        for (String topicName : generalTopics.getKeys(false)) {
            ConfigurationSection section = generalTopics.getConfigurationSection(topicName);
            String shortText = ChatColor.translateAlternateColorCodes(ALT_COLOR_CODE, section.getString("shortText", ""));
            String fullText = ChatColor.translateAlternateColorCodes(ALT_COLOR_CODE, section.getString("fullText", ""));
            String permission = section.getString("permission", "");
            topics.add(new CustomHelpTopic(topicName, shortText, fullText, permission));
        }
    }
    return topics;
}
 
源代码14 项目: Thermos   文件: CommandAliasHelpTopic.java
@Override
public String getFullText(CommandSender forWho) {
    StringBuilder sb = new StringBuilder(shortText);
    HelpTopic aliasForTopic = helpMap.getHelpTopic(aliasFor);
    if (aliasForTopic != null) {
        sb.append("\n");
        sb.append(aliasForTopic.getFullText(forWho));
    }
    return sb.toString();
}
 
源代码15 项目: Thermos   文件: CommandAliasHelpTopic.java
@Override
public boolean canSee(CommandSender commandSender) {
    if (amendedPermission == null) {
        HelpTopic aliasForTopic = helpMap.getHelpTopic(aliasFor);
        if (aliasForTopic != null) {
            return aliasForTopic.canSee(commandSender);
        } else {
            return false;
        }
    } else {
        return commandSender.hasPermission(amendedPermission);
    }
}
 
源代码16 项目: Kettle   文件: HelpCommand.java
@Override
public boolean execute(CommandSender sender, String currentAlias, String[] args) {
    if (!testPermission(sender)) return true;

    String command;
    int pageNumber;
    int pageHeight;
    int pageWidth;

    if (args.length == 0) {
        command = "";
        pageNumber = 1;
    } else if (NumberUtils.isDigits(args[args.length - 1])) {
        command = StringUtils.join(ArrayUtils.subarray(args, 0, args.length - 1), " ");
        try {
            pageNumber = NumberUtils.createInteger(args[args.length - 1]);
        } catch (NumberFormatException exception) {
            pageNumber = 1;
        }
        if (pageNumber <= 0) {
            pageNumber = 1;
        }
    } else {
        command = StringUtils.join(args, " ");
        pageNumber = 1;
    }

    if (sender instanceof ConsoleCommandSender) {
        pageHeight = ChatPaginator.UNBOUNDED_PAGE_HEIGHT;
        pageWidth = ChatPaginator.UNBOUNDED_PAGE_WIDTH;
    } else {
        pageHeight = ChatPaginator.CLOSED_CHAT_PAGE_HEIGHT - 1;
        pageWidth = ChatPaginator.GUARANTEED_NO_WRAP_CHAT_PAGE_WIDTH;
    }

    HelpMap helpMap = Bukkit.getServer().getHelpMap();
    HelpTopic topic = helpMap.getHelpTopic(command);

    if (topic == null) {
        topic = helpMap.getHelpTopic("/" + command);
    }

    if (topic == null) {
        topic = findPossibleMatches(command);
    }

    if (topic == null || !topic.canSee(sender)) {
        sender.sendMessage(ChatColor.RED + "No help for " + command);
        return true;
    }

    ChatPaginator.ChatPage page = ChatPaginator.paginate(topic.getFullText(sender), pageNumber, pageWidth, pageHeight);

    StringBuilder header = new StringBuilder();
    header.append(ChatColor.YELLOW);
    header.append("--------- ");
    header.append(ChatColor.WHITE);
    header.append("Help: ");
    header.append(topic.getName());
    header.append(" ");
    if (page.getTotalPages() > 1) {
        header.append("(");
        header.append(page.getPageNumber());
        header.append("/");
        header.append(page.getTotalPages());
        header.append(") ");
    }
    header.append(ChatColor.YELLOW);
    for (int i = header.length(); i < ChatPaginator.GUARANTEED_NO_WRAP_CHAT_PAGE_WIDTH; i++) {
        header.append("-");
    }
    sender.sendMessage(header.toString());

    sender.sendMessage(page.getLines());

    return true;
}
 
public HelpTopic createTopic(MultipleCommandAlias multipleCommandAlias) {
    return new MultipleCommandAliasHelpTopic(multipleCommandAlias);
}
 
源代码18 项目: Kettle   文件: CustomIndexHelpTopic.java
public CustomIndexHelpTopic(HelpMap helpMap, String name, String shortText, String permission, List<String> futureTopics, String preamble) {
    super(name, shortText, permission, new HashSet<HelpTopic>(), preamble);
    this.helpMap = helpMap;
    this.futureTopics = futureTopics;
}
 
源代码19 项目: intake   文件: BukkitHelpTopic.java
@Override
public HelpTopic createTopic(BukkitCommand command) {
  return new BukkitHelpTopic(command);
}
 
public HelpTopic createTopic(MultipleCommandAlias multipleCommandAlias) {
    return new MultipleCommandAliasHelpTopic(multipleCommandAlias);
}
 
源代码21 项目: Thermos   文件: CustomIndexHelpTopic.java
public CustomIndexHelpTopic(HelpMap helpMap, String name, String shortText, String permission, List<String> futureTopics, String preamble) {
    super(name, shortText, permission, new HashSet<HelpTopic>(), preamble);
    this.helpMap = helpMap;
    this.futureTopics = futureTopics;
}
 
 类所在包
 类方法
 同包方法