Skip to content

Commit

Permalink
Add additional Messaging support for sorting help commands and editin…
Browse files Browse the repository at this point in the history
…g the error colour
  • Loading branch information
fullwall committed Sep 24, 2019
1 parent f77db02 commit c611a0f
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 20 deletions.
17 changes: 11 additions & 6 deletions src/main/java/net/citizensnpcs/api/command/CommandManager.java
Expand Up @@ -5,6 +5,7 @@
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
Expand Down Expand Up @@ -293,6 +294,7 @@ private List<String> getLines(CommandSender sender, String baseCommand) {
processed.add(info);
}
}
Collections.sort(lines);
return lines;
}

Expand Down Expand Up @@ -420,14 +422,18 @@ private void registerMethods(Class<?> clazz, Method parent, Object obj) {
}

private void sendHelp(CommandSender sender, String name, int page) throws CommandException {
if (name.equalsIgnoreCase("npc"))
if (name.equalsIgnoreCase("npc")) {
name = "NPC";
}
Paginator paginator = new Paginator()
.header(ChatColor.GREEN + capitalize(name) + " " + Messaging.tr(CommandMessages.COMMAND_HELP_HEADER));
for (String line : getLines(sender, name.toLowerCase()))
.header(ChatColor.GREEN + capitalize(name) + " " + Messaging.tr(CommandMessages.COMMAND_HELP_HEADER))
.console(sender instanceof ConsoleCommandSender);
for (String line : getLines(sender, name.toLowerCase())) {
paginator.addLine(line);
if (!paginator.sendPage(sender, page))
}
if (!paginator.sendPage(sender, page)) {
throw new CommandException(CommandMessages.COMMAND_PAGE_MISSING, page);
}
}

private void sendSpecificHelp(CommandSender sender, String rootCommand, String modifier) throws CommandException {
Expand Down Expand Up @@ -541,8 +547,7 @@ else if (m == 0)
return p[n];
}

private static final String COMMAND_FORMAT = "<7>/<c>%s%s <7>- <e>%s";

private static final String COMMAND_FORMAT = "<7>/{{%s%s <7>- [[%s";
// Logger for general errors.
private static final Logger logger = Logger.getLogger(CommandManager.class.getCanonicalName());
}
16 changes: 10 additions & 6 deletions src/main/java/net/citizensnpcs/api/util/Messaging.java
Expand Up @@ -47,10 +47,12 @@ public String format(LogRecord rec) {
}
}

public static void configure(File debugFile, boolean debug, String messageColour, String highlightColour) {
public static void configure(File debugFile, boolean debug, String messageColour, String highlightColour,
String errorColour) {
DEBUG = debug;
MESSAGE_COLOUR = messageColour;
HIGHLIGHT_COLOUR = highlightColour;
MESSAGE_COLOUR = Colorizer.parseColors(messageColour);
HIGHLIGHT_COLOUR = Colorizer.parseColors(highlightColour);
ERROR_COLOUR = Colorizer.parseColors(errorColour);

if (Bukkit.getLogger() != null) {
LOGGER = Bukkit.getLogger();
Expand Down Expand Up @@ -95,7 +97,7 @@ public static void logTr(String key, Object... msg) {

private static String prettify(String message) {
String trimmed = message.trim();
String messageColour = Colorizer.parseColors(MESSAGE_COLOUR);
String messageColour = MESSAGE_COLOUR;
if (!trimmed.isEmpty()) {
if (trimmed.charAt(0) == ChatColor.COLOR_CHAR) {
ChatColor test = ChatColor.getByChar(trimmed.substring(1, 2));
Expand All @@ -107,7 +109,8 @@ private static String prettify(String message) {
message = messageColour + message;
}
}
message = message.replace("[[", Colorizer.parseColors(HIGHLIGHT_COLOUR));
message = message.replace("[[", HIGHLIGHT_COLOUR);
message = message.replace("{{", ERROR_COLOUR);
return CHAT_NEWLINE.matcher(message).replaceAll("<n>]]").replace("]]", messageColour);
}

Expand All @@ -116,7 +119,7 @@ public static void send(CommandSender sender, Object... msg) {
}

public static void sendError(CommandSender sender, Object... msg) {
send(sender, ChatColor.RED.toString() + SPACE.join(msg));
send(sender, ERROR_COLOUR + SPACE.join(msg));
}

public static void sendErrorTr(CommandSender sender, String key, Object... msg) {
Expand Down Expand Up @@ -176,6 +179,7 @@ public static String tryTranslate(Object possible) {
private static final Splitter CHAT_NEWLINE_SPLITTER = Splitter.on(CHAT_NEWLINE);
private static boolean DEBUG = false;
private static Logger DEBUG_LOGGER;
private static String ERROR_COLOUR = ChatColor.RED.toString();
private static String HIGHLIGHT_COLOUR = ChatColor.YELLOW.toString();
private static Logger LOGGER = Logger.getLogger("Citizens");
private static String MESSAGE_COLOUR = ChatColor.GREEN.toString();
Expand Down
23 changes: 15 additions & 8 deletions src/main/java/net/citizensnpcs/api/util/Paginator.java
Expand Up @@ -6,39 +6,46 @@
import org.bukkit.command.CommandSender;

public class Paginator {
private boolean console;
private String header;
private final List<String> lines = new ArrayList<String>();

public void addLine(String line) {
lines.add(line);
}

public Paginator console(boolean console) {
this.console = console;
return this;
}

public Paginator header(String header) {
this.header = header;
return this;
}

public boolean sendPage(CommandSender sender, int page) {
int pages = (int) (Math.ceil((double) lines.size() / LINES_PER_PAGE) == 0 ? 1
: Math.ceil((double) lines.size() / LINES_PER_PAGE));
int linesPerPage = console ? 200 : LINES_PER_PAGE;
int pages = (int) (Math.ceil((double) lines.size() / linesPerPage) == 0 ? 1
: Math.ceil((double) lines.size() / linesPerPage));
if (page <= 0 || page > pages)
return false;

int startIndex = LINES_PER_PAGE * page - LINES_PER_PAGE;
int endIndex = page * LINES_PER_PAGE;
int startIndex = linesPerPage * page - linesPerPage;
int endIndex = page * linesPerPage;

Messaging.send(sender, wrapHeader("<e>" + header + " <f>" + page + "/" + pages));
Messaging.send(sender, wrapHeader("[[" + header + " <f>" + page + "/" + pages));

if (lines.size() < endIndex)
endIndex = lines.size();
for (String line : lines.subList(startIndex, endIndex))
for (String line : lines.subList(startIndex, endIndex)) {
Messaging.send(sender, line);
}
return true;
}

public static String wrapHeader(Object string) {
String highlight = "<e>";
return highlight + "=====[ " + string.toString() + highlight + " ]=====";
return "[[=====[ " + string.toString() + " [[]=====";
}

private static final int LINES_PER_PAGE = 9;
Expand Down

0 comments on commit c611a0f

Please sign in to comment.