From 21221dfeeb147cf5e78b7e6caff507c4430d04cb Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Tue, 18 Dec 2018 00:52:02 +0100 Subject: [PATCH] NPE fix, prefix --- .../discordplugin/DiscordPlugin.java | 18 ++++++++++++++---- .../discordplugin/commands/ConnectCommand.java | 6 +++--- .../discordplugin/commands/HelpCommand.java | 7 +++---- .../discordplugin/commands/MCChatCommand.java | 7 ++++--- .../discordplugin/commands/RoleCommand.java | 2 +- .../commands/UserinfoCommand.java | 3 ++- .../discordplugin/mcchat/MCChatListener.java | 5 +++-- 7 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java index 02709d1..8c4856a 100755 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java @@ -12,7 +12,9 @@ import buttondevteam.discordplugin.mcchat.MinecraftChatModule; import buttondevteam.discordplugin.mccommands.DiscordMCCommandBase; import buttondevteam.discordplugin.mccommands.ResetMCCommand; import buttondevteam.lib.TBMCCoreAPI; +import buttondevteam.lib.architecture.ButtonPlugin; import buttondevteam.lib.architecture.Component; +import buttondevteam.lib.architecture.ConfigData; import buttondevteam.lib.chat.Channel; import buttondevteam.lib.chat.TBMCChatAPI; import buttondevteam.lib.player.ChromaGamerBase; @@ -27,7 +29,6 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.plugin.RegisteredServiceProvider; -import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitTask; import sx.blah.discord.api.ClientBuilder; import sx.blah.discord.api.IDiscordClient; @@ -49,7 +50,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; -public class DiscordPlugin extends JavaPlugin implements IListener { +public class DiscordPlugin extends ButtonPlugin implements IListener { private static final String SubredditURL = "https://www.reddit.com/r/ChromaGamers"; private static boolean stop = false; public static IDiscordClient dc; @@ -57,8 +58,17 @@ public class DiscordPlugin extends JavaPlugin implements IListener { public static boolean SafeMode = true; public static List GameRoles; + public ConfigData Prefix() { + return getData("prefix", '/'); + } + + public static char getPrefix() { + if (plugin == null) return '/'; + return plugin.Prefix().get(); + } + @Override - public void onEnable() { + public void pluginEnable() { stop = false; //If not the first time try { Bukkit.getLogger().info("Initializing DiscordPlugin..."); @@ -238,7 +248,7 @@ public class DiscordPlugin extends JavaPlugin implements IListener { public static boolean Restart; @Override - public void onDisable() { + public void pluginDisable() { stop = true; for (val entry : MCChatUtils.ConnectedSenders.entrySet()) for (val valueEntry : entry.getValue().entrySet()) diff --git a/src/main/java/buttondevteam/discordplugin/commands/ConnectCommand.java b/src/main/java/buttondevteam/discordplugin/commands/ConnectCommand.java index a339c4d..6e16c09 100755 --- a/src/main/java/buttondevteam/discordplugin/commands/ConnectCommand.java +++ b/src/main/java/buttondevteam/discordplugin/commands/ConnectCommand.java @@ -30,7 +30,7 @@ public class ConnectCommand extends DiscordCommandBase { return false; if (args.contains(" ")) { DiscordPlugin.sendMessageToChannel(message.getChannel(), - "Too many arguments.\nUsage: connect "); + "Too many arguments.\nUsage: " + DiscordPlugin.getPrefix() + "connect "); return true; } if (WaitingToConnect.inverse().containsKey(message.getAuthor().getStringID())) { @@ -68,8 +68,8 @@ public class ConnectCommand extends DiscordCommandBase { public String[] getHelpText() { return new String[] { // "---- Connect command ----", // - "This commands let's you connect your acoount with a Minecraft account. This'd allow using the Minecraft chat and other things.", // - "Usage: connect " // + "This command lets you connect your account with a Minecraft account. This allows using the Minecraft chat and other things.", // + "Usage: /connect " // }; } diff --git a/src/main/java/buttondevteam/discordplugin/commands/HelpCommand.java b/src/main/java/buttondevteam/discordplugin/commands/HelpCommand.java index 29aff28..bcef6ea 100755 --- a/src/main/java/buttondevteam/discordplugin/commands/HelpCommand.java +++ b/src/main/java/buttondevteam/discordplugin/commands/HelpCommand.java @@ -3,7 +3,6 @@ package buttondevteam.discordplugin.commands; import buttondevteam.discordplugin.DiscordPlugin; import sx.blah.discord.handle.obj.IMessage; -import java.util.Arrays; import java.util.stream.Collectors; public class HelpCommand extends DiscordCommandBase { @@ -19,11 +18,11 @@ public class HelpCommand extends DiscordCommandBase { if (args.length() == 0) DiscordPlugin.sendMessageToChannel(message.getChannel(), "Available commands:\n" + DiscordCommandBase.commands.values().stream() - .map(dc -> dc.getCommandName()).collect(Collectors.joining("\n"))); + .map(dc -> DiscordPlugin.getPrefix() + dc.getCommandName()).collect(Collectors.joining("\n"))); else DiscordPlugin.sendMessageToChannel(message.getChannel(), (argdc = DiscordCommandBase.commands.get(args)) == null ? "Command not found: " + args - : Arrays.stream(argdc.getHelpText()).collect(Collectors.joining("\n"))); + : String.join("\n", argdc.getHelpText())); return true; } @@ -32,7 +31,7 @@ public class HelpCommand extends DiscordCommandBase { return new String[] { // "---- Help command ----", // "Shows some info about a command or lists the available commands.", // - "Usage: help [command]"// + "Usage: " + DiscordPlugin.getPrefix() + "help [command]"// }; } diff --git a/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java index 7a5b7c8..24c6390 100755 --- a/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java +++ b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java @@ -25,7 +25,7 @@ public class MCChatCommand extends DiscordCommandBase { MCChatPrivate.privateMCChat(message.getChannel(), mcchat, message.getAuthor(), user); DiscordPlugin.sendMessageToChannel(message.getChannel(), "Minecraft chat " + (mcchat // - ? "enabled. Use '/mcchat' again to turn it off." // + ? "enabled. Use '" + DiscordPlugin.getPrefix() + "mcchat' again to turn it off." // : "disabled.")); } catch (Exception e) { TBMCCoreAPI.SendException("Error while setting mcchat for user" + message.getAuthor().getName(), e); @@ -36,8 +36,9 @@ public class MCChatCommand extends DiscordCommandBase { @Override public String[] getHelpText() { return new String[] { // - "mcchat enables or disables the Minecraft chat in private messages.", // - "It can be useful if you don't want your messages to be visible, for example when talking a private channel." // + DiscordPlugin.getPrefix() + "mcchat enables or disables the Minecraft chat in private messages.", // + "It can be useful if you don't want your messages to be visible, for example when talking in a private channel.", // + "You can also run all of the ingame commands you have access to using this command, if you have your accounts connected." // }; // TODO: Pin channel switching to indicate the current channel } diff --git a/src/main/java/buttondevteam/discordplugin/commands/RoleCommand.java b/src/main/java/buttondevteam/discordplugin/commands/RoleCommand.java index 3978c6a..a7f2bf5 100755 --- a/src/main/java/buttondevteam/discordplugin/commands/RoleCommand.java +++ b/src/main/java/buttondevteam/discordplugin/commands/RoleCommand.java @@ -86,7 +86,7 @@ public class RoleCommand extends DiscordCommandBase { public String[] getHelpText() { return new String[]{ // "Add or remove game roles from yourself.", // - "Usage: role add|remove or role list", // + "Usage: " + DiscordPlugin.getPrefix() + "role add|remove or role list", // }; } diff --git a/src/main/java/buttondevteam/discordplugin/commands/UserinfoCommand.java b/src/main/java/buttondevteam/discordplugin/commands/UserinfoCommand.java index b0608ed..b1dbf8b 100755 --- a/src/main/java/buttondevteam/discordplugin/commands/UserinfoCommand.java +++ b/src/main/java/buttondevteam/discordplugin/commands/UserinfoCommand.java @@ -91,7 +91,8 @@ public class UserinfoCommand extends DiscordCommandBase { "---- User information ----", // "Shows some information about users, from Discord, from Minecraft or from Reddit if they have these accounts connected.", // "If used without args, shows your info.", // - "Usage: userinfo [username/nickname[#tag]/ping]\nExamples:\nuserinfo ChromaBot\nuserinfo ChromaBot#6338\nuserinfo @ChromaBot#6338" // + "Usage: " + DiscordPlugin.getPrefix() + "userinfo [username/nickname[#tag]/ping]", // + "Examples:\n" + DiscordPlugin.getPrefix() + "userinfo ChromaBot\n" + DiscordPlugin.getPrefix() + "userinfo ChromaBot#6338\n" + DiscordPlugin.getPrefix() + "userinfo @ChromaBot#6338" // }; } diff --git a/src/main/java/buttondevteam/discordplugin/mcchat/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/mcchat/MCChatListener.java index f81c01d..15489e5 100755 --- a/src/main/java/buttondevteam/discordplugin/mcchat/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/mcchat/MCChatListener.java @@ -382,8 +382,9 @@ public class MCChatListener implements Listener, IListener } else {// Not a command if (dmessage.length() == 0 && event.getMessage().getAttachments().size() == 0 && !event.getChannel().isPrivate() && event.getMessage().isSystemMessage()) { - val rtr = clmd != null ? clmd.mcchannel.filteranderrormsg.apply(clmd.dcp) : dsender.getChromaUser().channel().get().filteranderrormsg.apply(dsender); - TBMCChatAPI.SendSystemMessage(clmd != null ? clmd.mcchannel : dsender.getChromaUser().channel().get(), rtr.score, rtr.groupID, + val rtr = clmd != null ? clmd.mcchannel.getRTR(clmd.dcp) + : dsender.getChromaUser().channel().get().getRTR(dsender); + TBMCChatAPI.SendSystemMessage(clmd != null ? clmd.mcchannel : dsender.getChromaUser().channel().get(), rtr, (dsender instanceof Player ? ((Player) dsender).getDisplayName() : dsender.getName()) + " pinned a message on Discord."); }