From d79b1674eb0f0297d7ae00fd3cb912c26d89def4 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Sun, 9 Sep 2018 13:29:43 +0200 Subject: [PATCH] Fixed lowercase cmds & channel mentions Fixed commands from private mcchat being lowercased Added channel mention support (#51) Added version command (#51) --- .../commands/DiscordCommandBase.java | 1 + .../commands/VersionCommand.java | 31 +++++++++++++++++++ .../listeners/MCChatListener.java | 10 ++++-- .../discordplugin/listeners/MCListener.java | 5 +++ .../mccommands/VersionMCCommand.java | 20 ++++++++++++ src/main/resources/plugin.yml | 5 +-- 6 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 src/main/java/buttondevteam/discordplugin/commands/VersionCommand.java create mode 100644 src/main/java/buttondevteam/discordplugin/mccommands/VersionMCCommand.java diff --git a/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java b/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java index 8fd3145..34790b6 100755 --- a/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java +++ b/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java @@ -27,6 +27,7 @@ public abstract class DiscordCommandBase { commands.put("mcchat", new MCChatCommand()); commands.put("channelcon", new ChannelconCommand()); commands.put("debug", new DebugCommand()); + commands.put("version", new VersionCommand()); } public static void runCommand(String cmd, String args, IMessage message) { diff --git a/src/main/java/buttondevteam/discordplugin/commands/VersionCommand.java b/src/main/java/buttondevteam/discordplugin/commands/VersionCommand.java new file mode 100644 index 0000000..5908495 --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/commands/VersionCommand.java @@ -0,0 +1,31 @@ +package buttondevteam.discordplugin.commands; + +import buttondevteam.discordplugin.DiscordPlugin; +import lombok.val; +import sx.blah.discord.handle.obj.IMessage; + +public class VersionCommand extends DiscordCommandBase { + @Override + public String getCommandName() { + return "version"; + } + + @Override + public boolean run(IMessage message, String args) { + DiscordPlugin.sendMessageToChannel(message.getChannel(), String.join("\n", getVersion())); + return true; + } + + @Override + public String[] getHelpText() { + return VersionCommand.getVersion(); //Heh + } + + public static String[] getVersion() { + val desc = DiscordPlugin.plugin.getDescription(); + return new String[]{ // + desc.getFullName(), // + desc.getWebsite() // + }; + } +} diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index e42085f..d1838be 100755 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -477,6 +477,9 @@ public class MCChatListener implements Listener, IListener final String nick = u.getNicknameForGuild(DiscordPlugin.mainServer); dmessage = dmessage.replace(u.mention(true), "@" + (nick != null ? nick : u.getName())); } + for (IChannel ch : event.getMessage().getChannelMentions()) { + dmessage = dmessage.replace(ch.mention(), "#" + ch.getName()); // TODO: IG Formatting + } dmessage = EmojiParser.parseToAliases(dmessage, EmojiParser.FitzpatrickAction.PARSE); //Converts emoji to text- TODO: Add option to disable (resource pack?) dmessage = dmessage.replaceAll(":(\\S+)\\|type_(?:(\\d)|(1)_2):", ":$1::skin-tone-$2:"); //Convert to Discord's format so it still shows up @@ -496,7 +499,8 @@ public class MCChatListener implements Listener, IListener event.getMessage().delete(); }); //preprocessChat(dsender, dmessage); - Same is done below - final String cmdlowercased = dmessage.substring(1).toLowerCase(); + final String cmd = dmessage.substring(1); + final String cmdlowercased = cmd.toLowerCase(); if (dsender instanceof DiscordSender && Arrays.stream(UnconnectedCmds) .noneMatch(s -> cmdlowercased.equals(s) || cmdlowercased.startsWith(s + " "))) { // Command not whitelisted @@ -529,7 +533,7 @@ public class MCChatListener implements Listener, IListener if (!ch.isPresent()) Bukkit.getScheduler().runTask(DiscordPlugin.plugin, () -> { - VanillaCommandListener.runBukkitOrVanillaCommand(dsender, cmdlowercased); + VanillaCommandListener.runBukkitOrVanillaCommand(dsender, cmd); Bukkit.getLogger().info(dsender.getName() + " issued command from Discord: /" + cmdlowercased); }); else { @@ -552,7 +556,7 @@ public class MCChatListener implements Listener, IListener dsender.sendMessage("You're now talking in: " + DPUtils.sanitizeString(dsender.getMcchannel().DisplayName)); } else { // Send single message - final String msg = event.getMessage().getContent().substring(spi + 2); + final String msg = cmd.substring(spi + 1); val cmb = ChatMessage.builder(chc, dsender, user, getChatMessage.apply(msg)).fromCommand(true); if (clmd == null) TBMCChatAPI.SendChatMessage(cmb.build()); diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java index 49e337a..d6e64e3 100755 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java @@ -162,6 +162,11 @@ public class MCListener implements Listener { MCChatListener.sendSystemMessageToChat(event.getMessage()); } + /*@EventHandler + public void onYEEHAW(TBMCYEEHAWEvent event) { + MCChatListener.forAllowedCustomMCChat();event.getSender().getName()+" <:YEEHAW:"+DiscordPlugin.mainServer.getEmojiByName("YEEHAW").getStringID()+">s"//TODO: :YEEHAW:s - Change from broadcastMessage() in ButtonChat + }*/ + private static final String[] EXCLUDED_PLUGINS = {"ProtocolLib", "LibsDisguises"}; public static void callEventExcludingSome(Event event) { diff --git a/src/main/java/buttondevteam/discordplugin/mccommands/VersionMCCommand.java b/src/main/java/buttondevteam/discordplugin/mccommands/VersionMCCommand.java new file mode 100644 index 0000000..a2cacba --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/mccommands/VersionMCCommand.java @@ -0,0 +1,20 @@ +package buttondevteam.discordplugin.mccommands; + +import buttondevteam.discordplugin.commands.VersionCommand; +import buttondevteam.lib.chat.CommandClass; +import buttondevteam.lib.chat.TBMCCommandBase; +import org.bukkit.command.CommandSender; + +@CommandClass(path = "discord version") +public class VersionMCCommand extends TBMCCommandBase { + @Override + public boolean OnCommand(CommandSender commandSender, String s, String[] strings) { + commandSender.sendMessage(VersionCommand.getVersion()); + return true; + } + + @Override + public String[] GetHelpText(String s) { + return VersionCommand.getVersion(); //Heh + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 5b218e7..1c74854 100755 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,8 @@ name: DiscordPlugin main: buttondevteam.discordplugin.DiscordPlugin version: 1.0 -author: TBMCPlugins +author: NorbiPeti depend: [ButtonCore] commands: - discord: + discord: +website: 'https://github.com/TBMCPlugins/DiscordPlugin'