diff options
Diffstat (limited to 'dicore3/command/src/main/java/io/dico/dicore/command/chat/IChatHandler.java')
-rw-r--r-- | dicore3/command/src/main/java/io/dico/dicore/command/chat/IChatHandler.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/dicore3/command/src/main/java/io/dico/dicore/command/chat/IChatHandler.java b/dicore3/command/src/main/java/io/dico/dicore/command/chat/IChatHandler.java new file mode 100644 index 0000000..98283ef --- /dev/null +++ b/dicore3/command/src/main/java/io/dico/dicore/command/chat/IChatHandler.java @@ -0,0 +1,60 @@ +package io.dico.dicore.command.chat; + +import io.dico.dicore.Formatting; +import io.dico.dicore.command.CommandException; +import io.dico.dicore.command.EMessageType; +import io.dico.dicore.command.ExecutionContext; +import io.dico.dicore.command.ICommandAddress; +import org.bukkit.command.CommandSender; + +//TODO add methods to send JSON messages +public interface IChatHandler { + + default void sendMessage(ExecutionContext context, EMessageType type, String message) { + message = createMessage(context, type, message); + if (message != null) { + context.getSender().sendMessage(message); + } + } + + default void sendMessage(CommandSender sender, EMessageType type, String message) { + message = createMessage(sender, type, message); + if (message != null) { + sender.sendMessage(message); + } + } + + default void handleCommandException(CommandSender sender, ExecutionContext context, CommandException exception) { + sendMessage(context, EMessageType.EXCEPTION, exception.getMessage()); + } + + default void handleException(CommandSender sender, ExecutionContext context, Throwable exception) { + if (exception instanceof CommandException) { + handleCommandException(sender, context, (CommandException) exception); + } else { + sendMessage(sender, EMessageType.EXCEPTION, "An internal error occurred whilst executing this command"); + exception.printStackTrace(); + } + } + + default void sendHelpMessage(CommandSender sender, ExecutionContext context, ICommandAddress address, int page) { + sender.sendMessage(createHelpMessage(sender, context, address, page)); + } + + default void sendSyntaxMessage(CommandSender sender, ExecutionContext context, ICommandAddress address) { + sender.sendMessage(createSyntaxMessage(sender, context, address)); + } + + Formatting getChatFormatForType(EMessageType type); + + String getMessagePrefixForType(EMessageType type); + + String createMessage(ExecutionContext context, EMessageType type, String message); + + String createMessage(CommandSender sender, EMessageType type, String message); + + String createHelpMessage(CommandSender sender, ExecutionContext context, ICommandAddress address, int page); + + String createSyntaxMessage(CommandSender sender, ExecutionContext context, ICommandAddress address); + +} |