diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java b/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java index 2889a0a..de9caea 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java @@ -106,7 +106,7 @@ public class DiscordPlayerSender extends DiscordSenderBase implements Player { @Override public String getName() { - return user.getDisplayName(DiscordPlugin.mainServer); + return player.getName(); } // Find: " (\w+)\(\) \{\s+\/\/ TO\DO Auto-generated method stub\s+return null;" - Replace: " $1() { return player.$1();" diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java index 24be49a..96e0f23 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java @@ -47,7 +47,6 @@ public class DiscordPlugin extends JavaPlugin implements IListener { } else { lastannouncementtime = getConfig().getLong("lastannouncementtime"); lastseentime = getConfig().getLong("lastseentime"); - Test = getConfig().getBoolean("test", true); saveConfig(); } ClientBuilder cb = new ClientBuilder(); @@ -59,6 +58,7 @@ public class DiscordPlugin extends JavaPlugin implements IListener { MCChatListener mcchat = new MCChatListener(); dc.getDispatcher().registerListener(mcchat); TBMCCoreAPI.RegisterEventsForExceptions(mcchat, this); + dc.getDispatcher().registerListener(new AutoUpdaterListener()); Bukkit.getPluginManager().registerEvents(new ExceptionListener(), this); TBMCCoreAPI.RegisterEventsForExceptions(new MCListener(), this); TBMCChatAPI.AddCommands(this, DiscordMCCommandBase.class); @@ -74,11 +74,10 @@ public class DiscordPlugin extends JavaPlugin implements IListener { public static IChannel chatchannel; public static IChannel issuechannel; public static IChannel botroomchannel; + public static IChannel officechannel; public static IGuild mainServer; public static IGuild devServer; - public static boolean Test = true; - @Override public void handle(ReadyEvent event) { try { @@ -88,13 +87,14 @@ public class DiscordPlugin extends JavaPlugin implements IListener { devServer = event.getClient().getGuildByID("219529124321034241"); Thread.sleep(100); } while ((mainServer == null || devServer == null) && retryc++ < 10); - if (!Test) { + if (!TBMCCoreAPI.IsTestServer()) { botchannel = mainServer.getChannelByID("209720707188260864"); // bot annchannel = mainServer.getChannelByID("126795071927353344"); // announcements genchannel = mainServer.getChannelByID("125813020357165056"); // general chatchannel = mainServer.getChannelByID("249663564057411596"); // minecraft_chat issuechannel = devServer.getChannelByID("219643416496046081"); // server-issues - botroomchannel = devServer.getChannelByID("239519012529111040");// bot-room + botroomchannel = devServer.getChannelByID("239519012529111040"); // bot-room + officechannel = devServer.getChannelByID("219626707458457603"); // developers-office dc.changeStatus(Status.game("on TBMC")); } else { botchannel = devServer.getChannelByID("239519012529111040"); // bot-room @@ -103,6 +103,7 @@ public class DiscordPlugin extends JavaPlugin implements IListener { botroomchannel = botchannel;// bot-room issuechannel = botchannel; // bot-room chatchannel = devServer.getChannelByID("248185455508455424"); // minecraft_chat_test + officechannel = devServer.getChannelByID("219626707458457603"); // developers-office dc.changeStatus(Status.game("testing")); } Bukkit.getScheduler().runTaskAsynchronously(this, @@ -143,6 +144,7 @@ public class DiscordPlugin extends JavaPlugin implements IListener { private long lastannouncementtime = 0; private long lastseentime = 0; + public static final String DELIVERED_REACTION = "✅"; private void AnnouncementGetterThreadMethod() { while (!stop) { @@ -208,8 +210,8 @@ public class DiscordPlugin extends JavaPlugin implements IListener { e2.printStackTrace(); } try { - return channel - .sendMessage(Test ? "*The following message is from a test server*\n" + message : message); + return channel.sendMessage(TBMCCoreAPI.IsTestServer() && channel != chatchannel + ? "*The following message is from a test server*\n" + message : message); } catch (RateLimitException e) { try { Thread.sleep(e.getRetryDelay()); diff --git a/src/main/java/buttondevteam/discordplugin/DiscordSender.java b/src/main/java/buttondevteam/discordplugin/DiscordSender.java index 33fb168..c9ad56e 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordSender.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordSender.java @@ -90,6 +90,8 @@ public class DiscordSender extends DiscordSenderBase implements CommandSender { @Override public String getName() { + if (user == null) + return "Discord user"; return user.getDisplayName(DiscordPlugin.mainServer); } diff --git a/src/main/java/buttondevteam/discordplugin/DiscordSenderBase.java b/src/main/java/buttondevteam/discordplugin/DiscordSenderBase.java index 65bfd10..172b738 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordSenderBase.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordSenderBase.java @@ -14,6 +14,9 @@ import sx.blah.discord.handle.obj.IChannel; import sx.blah.discord.handle.obj.IUser; public abstract class DiscordSenderBase implements IDiscordSender { + /** + * May be null. + */ protected IUser user; protected IChannel channel; @@ -27,6 +30,11 @@ public abstract class DiscordSenderBase implements IDiscordSender { private volatile String msgtosend = ""; private volatile BukkitTask sendtask; + /** + * Returns the user. May be null. + * + * @return The user or null. + */ public IUser getUser() { return user; } @@ -51,7 +59,7 @@ public abstract class DiscordSenderBase implements IDiscordSender { if (sendtask == null) sendtask = Bukkit.getScheduler().runTaskLaterAsynchronously(DiscordPlugin.plugin, () -> { DiscordPlugin.sendMessageToChannel(channel, - (!broadcast ? user.mention() + "\n" : "") + msgtosend.trim()); + (!broadcast && user != null ? user.mention() + "\n" : "") + msgtosend.trim()); sendtask = null; msgtosend = ""; }, 10); // Waits a half second to gather all/most of the different messages diff --git a/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java b/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java new file mode 100644 index 0000000..0c14ce8 --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java @@ -0,0 +1,33 @@ +package buttondevteam.discordplugin.listeners; + +import buttondevteam.discordplugin.DiscordPlugin; +import buttondevteam.discordplugin.DiscordSender; +import buttondevteam.lib.TBMCCoreAPI; +import sx.blah.discord.api.events.IListener; +import sx.blah.discord.handle.impl.events.MessageReceivedEvent; +import sx.blah.discord.util.RateLimitException; + +public class AutoUpdaterListener implements IListener { + @Override + public void handle(MessageReceivedEvent event) { + if (!event.getMessage().getChannel().getID().equals(DiscordPlugin.officechannel.getID())) + return; + if (!"239123781401051138".equals(event.getMessage().getWebhookID())) + return; + if (event.getMessage().getEmbedded().size() == 0) + return; + final String title = event.getMessage().getEmbedded().get(0).getTitle(); + if (!title.contains("new commit")) + return; + String branch = title.substring(title.indexOf(':') + 1, title.indexOf(']')); + String project = title.substring(title.indexOf('[') + 1, title.indexOf(':')); + if (branch.equals("master") || (TBMCCoreAPI.IsTestServer() && branch.equals("dev"))) + if (TBMCCoreAPI.UpdatePlugin(project, new DiscordSender(null, DiscordPlugin.chatchannel), branch)) + try { + event.getMessage().addReaction(DiscordPlugin.DELIVERED_REACTION); + } catch (RateLimitException e) { // TODO: Handle + } catch (Exception e) { + TBMCCoreAPI.SendException("An error occured while reacting to plugin update!", e); + } + } +} diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index b53a3e4..69ee4cd 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -19,14 +19,9 @@ import sx.blah.discord.api.events.IListener; import sx.blah.discord.handle.impl.events.MessageReceivedEvent; import sx.blah.discord.handle.obj.IReaction; import sx.blah.discord.handle.obj.IUser; -import sx.blah.discord.util.DiscordException; -import sx.blah.discord.util.EmbedBuilder; -import sx.blah.discord.util.MissingPermissionsException; import sx.blah.discord.util.RateLimitException; public class MCChatListener implements Listener, IListener { - private static final String DELIVERED_REACTION = "✅"; - @EventHandler // Minecraft public void onMCChat(TBMCChatEvent e) { if (e.isCancelled()) @@ -100,10 +95,10 @@ public class MCChatListener implements Listener, IListener dmessage + (event.getMessage().getAttachments().size() > 0 ? "\n" + event.getMessage() .getAttachments().stream().map(a -> a.getUrl()).collect(Collectors.joining("\n")) : "")); - event.getMessage().addReaction(DELIVERED_REACTION); + event.getMessage().addReaction(DiscordPlugin.DELIVERED_REACTION); event.getMessage().getChannel().getMessages().stream().forEach(m -> { try { - final IReaction reaction = m.getReactionByName(DELIVERED_REACTION); + final IReaction reaction = m.getReactionByName(DiscordPlugin.DELIVERED_REACTION); if (reaction != null) { while (true) try { @@ -111,7 +106,8 @@ public class MCChatListener implements Listener, IListener Thread.sleep(100); break; } catch (RateLimitException e) { - Thread.sleep(e.getRetryDelay()); + if (e.getRetryDelay() > 0) + Thread.sleep(e.getRetryDelay()); } } } catch (Exception e) { diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java index cf38145..0b31068 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java @@ -12,7 +12,6 @@ import buttondevteam.discordplugin.commands.ConnectCommand; import buttondevteam.lib.TBMCPlayerGetInfoEvent; import buttondevteam.lib.TBMCPlayerJoinEvent; import buttondevteam.lib.TBMCPlayerQuitEvent; -import buttondevteam.lib.TBMCYEEHAWEvent; import net.ess3.api.events.AfkStatusChangeEvent; import sx.blah.discord.handle.obj.IUser; import sx.blah.discord.handle.obj.Status.StatusType;