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 != null && 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<HelpTopic>((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()); } } }
public CommandAliasHelpTopic(String alias, String aliasFor, HelpMap helpMap) { this.aliasFor = aliasFor.startsWith("/") ? aliasFor : "/" + aliasFor; this.helpMap = helpMap; this.name = alias.startsWith("/") ? alias : "/" + alias; Validate.isTrue(!this.name.equals(this.aliasFor), "Command " + this.name + " cannot be alias for itself"); this.shortText = ChatColor.YELLOW + "Alias for " + ChatColor.WHITE + this.aliasFor; }
@Nullable public static String getOutput(@Nullable Object object) { if (object == null) { return null; } if (object instanceof String) { return (String) object; } else if (object instanceof Collection) { return handleCollection((Collection) object); } else if (object instanceof Map) { return handleMap((Map) object); } else if (object.getClass().isArray()) { return handleArray(object); } else if (object instanceof OfflinePlayer) { return handleOfflinePlayer((OfflinePlayer) object); } else if (object instanceof BlockState) { return handleBlockState((BlockState) object); } else if (object instanceof Inventory) { return handleInventory((Inventory) object); } else if (object instanceof WorldBorder) { return handleWorldBorder((WorldBorder) object); } else if (object instanceof CommandSender) { return handleCommandSender((CommandSender) object); } else if (object instanceof Messenger) { return handleMessenger((Messenger) object); } else if (object instanceof HelpMap) { return handleHelpMap((HelpMap) object); } else { return String.valueOf(object); } }
@Nonnull private static String handleHelpMap(HelpMap helpMap) { StringBuilder returnString = new StringBuilder("["); for (HelpTopic topic : helpMap.getHelpTopics()) { returnString.append("{").append(topic.getName()).append(", ").append(topic.getShortText()).append("}\n"); } return returnString.append("]").toString(); }
@Test public void testHelpMap() { HelpTopic topicTacos = new TestHelpTopic("taco", "Makes tacos", "taco.taco"); HelpTopic topicDebuggery = new TestHelpTopic("debuggery", "Exposes API stuffs", "d.g"); HelpMap helpMap = new TestHelpMap(topicTacos, topicDebuggery); String out = OutputFormatter.getOutput(helpMap); assertNotNull(out); assertTrue(out.contains(topicTacos.getName())); assertTrue(out.contains(topicTacos.getShortText())); assertTrue(out.contains(topicDebuggery.getName())); assertTrue(out.contains(topicDebuggery.getShortText())); }
public CommandAliasHelpTopic(final String alias, final String aliasFor, final HelpMap helpMap) { this.aliasFor = aliasFor.startsWith("/") ? aliasFor : "/" + aliasFor; this.helpMap = helpMap; name = alias.startsWith("/") ? alias : "/" + alias; Validate.isTrue(!name.equals(this.aliasFor), "Command " + name + " cannot be alias for itself"); shortText = ChatColor.YELLOW + "Alias for " + ChatColor.WHITE + this.aliasFor; }
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; }
@Override public HelpMap getHelpMap() { return helpMap; }
@Override public HelpMap getHelpMap() { // TODO Auto-generated method stub throw new UnimplementedOperationException(); }
@Override public HelpMap getHelpMap() { throw new UnsupportedOperationException(); }
@Override public HelpMap getHelpMap() { return null; // TODO: Create help map implementation once commands are done. }
@Override public HelpMap getHelpMap() { // TODO Auto-generated method stub return null; }
@Override public HelpMap getHelpMap() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. }
/** * @see Server#getHelpMap() */ public static HelpMap getHelpMap() { return server.getHelpMap(); }
@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; }
@Override public HelpMap getHelpMap() { return null; }