From ec5265f054095f99373f67973ca8dddf1312ec2d Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Mon, 28 Nov 2016 18:00:43 +0100 Subject: [PATCH] Added DiscordSender, fixing and adding things - It allows putting the Discord name in the chat and other plugins' commands to work with it - It will now only forward the general chat from MC - It will no longer echo the message sent from Discord --- pom.xml | 2 +- .../discordplugin/DiscordPlugin.java | 4 +- .../discordplugin/DiscordSender.java | 115 ++++++++++++++++++ .../listeners/MCChatListener.java | 15 ++- 4 files changed, 128 insertions(+), 8 deletions(-) create mode 100644 src/main/java/buttondevteam/discordplugin/DiscordSender.java diff --git a/pom.xml b/pom.xml index 28bb95a..fa8a648 100644 --- a/pom.xml +++ b/pom.xml @@ -120,7 +120,7 @@ org.spigotmc spigot-api - 1.9.2-R0.1-SNAPSHOT + 1.11-R0.1-SNAPSHOT provided diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java index 8f8cd71..61c4943 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java @@ -80,14 +80,14 @@ public class DiscordPlugin extends JavaPlugin implements IListener { public static IChannel issuechannel; public static IChannel debugchannel; public static IChannel botroomchannel; + public static IGuild mainServer; + public static IGuild devServer; public static boolean Test = true; @Override public void handle(ReadyEvent event) { try { - IGuild mainServer; - IGuild devServer; do { mainServer = event.getClient().getGuildByID("125813020357165056"); devServer = event.getClient().getGuildByID("219529124321034241"); diff --git a/src/main/java/buttondevteam/discordplugin/DiscordSender.java b/src/main/java/buttondevteam/discordplugin/DiscordSender.java new file mode 100644 index 0000000..12374d9 --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/DiscordSender.java @@ -0,0 +1,115 @@ +package buttondevteam.discordplugin; + +import java.util.Set; + +import org.bukkit.Bukkit; +import org.bukkit.Server; +import org.bukkit.command.CommandSender; +import org.bukkit.permissions.PermissibleBase; +import org.bukkit.permissions.Permission; +import org.bukkit.permissions.PermissionAttachment; +import org.bukkit.permissions.PermissionAttachmentInfo; +import org.bukkit.plugin.Plugin; + +import buttondevteam.lib.TBMCCoreAPI; +import sx.blah.discord.handle.obj.IUser; + +public class DiscordSender implements CommandSender { + private PermissibleBase perm = new PermissibleBase(this); + private IUser user; + + public DiscordSender(IUser user) { + this.user = user; + } + + @Override + public boolean isPermissionSet(String name) { + return perm.isPermissionSet(name); + } + + @Override + public boolean isPermissionSet(Permission perm) { + return this.perm.isPermissionSet(perm); + } + + @Override + public boolean hasPermission(String name) { + return perm.hasPermission(name); + } + + @Override + public boolean hasPermission(Permission perm) { + return this.perm.hasPermission(perm); + } + + @Override + public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value) { + return perm.addAttachment(plugin, name, value); + } + + @Override + public PermissionAttachment addAttachment(Plugin plugin) { + return perm.addAttachment(plugin); + } + + @Override + public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks) { + return perm.addAttachment(plugin, name, value, ticks); + } + + @Override + public PermissionAttachment addAttachment(Plugin plugin, int ticks) { + return perm.addAttachment(plugin, ticks); + } + + @Override + public void removeAttachment(PermissionAttachment attachment) { + perm.removeAttachment(attachment); + } + + @Override + public void recalculatePermissions() { + perm.recalculatePermissions(); + } + + @Override + public Set getEffectivePermissions() { + return perm.getEffectivePermissions(); + } + + @Override + public boolean isOp() { + return perm.isOp(); + } + + @Override + public void setOp(boolean value) { + perm.setOp(value); + } + + @Override + public void sendMessage(String message) { + try { + DiscordPlugin.sendMessageToChannel(user.getOrCreatePMChannel(), message); + } catch (Exception e) { + TBMCCoreAPI.SendException("An error occured while sending message to DiscordSender", e); + } + } + + @Override + public void sendMessage(String[] messages) { + for (String message : messages) + sendMessage(message); + } + + @Override + public Server getServer() { + return Bukkit.getServer(); + } + + @Override + public String getName() { + return user.getDisplayName(DiscordPlugin.mainServer); + } + +} diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index a0669e6..2e9f0fc 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -5,6 +5,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import buttondevteam.discordplugin.DiscordPlugin; +import buttondevteam.discordplugin.DiscordSender; import buttondevteam.lib.TBMCChatEvent; import buttondevteam.lib.chat.Channel; import buttondevteam.lib.chat.TBMCChatAPI; @@ -12,17 +13,21 @@ import sx.blah.discord.api.events.IListener; import sx.blah.discord.handle.impl.events.MessageReceivedEvent; public class MCChatListener implements Listener, IListener { - @EventHandler + @EventHandler // Minecraft public void onMCChat(TBMCChatEvent e) { - DiscordPlugin.sendMessageToChannel(DiscordPlugin.chatchannel, - "[" + e.getChannel().DisplayName + "] <" + e.getSender().getName() + "> " + e.getMessage()); + if (e.getSender() instanceof DiscordSender) + return; + if (e.getChannel().equals(Channel.GlobalChat)) + DiscordPlugin.sendMessageToChannel(DiscordPlugin.chatchannel, + "<" + e.getSender().getName() + "> " + e.getMessage()); } - @Override + @Override // Discord public void handle(MessageReceivedEvent event) { if (event.getMessage().getAuthor().isBot()) return; if (event.getMessage().getChannel().getID().equals(DiscordPlugin.chatchannel.getID())) - TBMCChatAPI.SendChatMessage(Channel.GlobalChat, Bukkit.getConsoleSender(), event.getMessage().getContent()); + TBMCChatAPI.SendChatMessage(Channel.GlobalChat, new DiscordSender(event.getMessage().getAuthor()), + event.getMessage().getContent()); } }