From 08fae9b73b77a813e6cac8e61cd96537dc0fe7b6 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Sun, 22 Oct 2017 02:58:11 +0200 Subject: [PATCH] Implemented player list + Fixed early msg error - The description of the mcchat channel now contains the list of online players - Fixed error if someone said something on Discord when the plugin wasn't ready (Left the debug msgs in and had to force close Eclipse so it doesn't get pushed) --- .../discordplugin/DiscordPlugin.java | 45 +++++++++++++------ .../listeners/MCChatListener.java | 2 + .../discordplugin/listeners/MCListener.java | 2 + 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java index 9c3dc77..5cfe61d 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java @@ -4,9 +4,11 @@ import java.awt.Color; import java.io.File; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.List; import java.util.Random; +import java.util.stream.Collectors; import org.bukkit.Bukkit; import org.bukkit.event.player.PlayerQuitEvent; @@ -143,6 +145,20 @@ public class DiscordPlugin extends JavaPlugin implements IListener { "The plugin refuses to load until you change the token to the testing account.")); Bukkit.getPluginManager().disablePlugin(this); } + TBMCCoreAPI.SendUnsentExceptions(); + TBMCCoreAPI.SendUnsentDebugMessages(); + if (!TBMCCoreAPI.IsTestServer()) { + final Calendar currentCal = Calendar.getInstance(); + final Calendar newCal = Calendar.getInstance(); + currentCal.set(currentCal.get(Calendar.YEAR), currentCal.get(Calendar.MONTH), + currentCal.get(Calendar.DAY_OF_MONTH), 4, 10); + if (currentCal.get(Calendar.DAY_OF_MONTH) % 9 == 0 && currentCal.before(newCal)) { + Random rand = new Random(); + sendMessageToChannel(dc.getChannels().get(rand.nextInt(dc.getChannels().size())), + "You could make a religion out of this"); + } + } + updatePlayerList(); } }, 0, 10); for (IListener listener : CommandListener.getListeners()) @@ -157,19 +173,6 @@ public class DiscordPlugin extends JavaPlugin implements IListener { TBMCCoreAPI.RegisterUserClass(DiscordPlayer.class); new Thread(this::AnnouncementGetterThreadMethod).start(); setupProviders(); - TBMCCoreAPI.SendUnsentExceptions(); - TBMCCoreAPI.SendUnsentDebugMessages(); - if (!TBMCCoreAPI.IsTestServer()) { - final Calendar currentCal = Calendar.getInstance(); - final Calendar newCal = Calendar.getInstance(); - currentCal.set(currentCal.get(Calendar.YEAR), currentCal.get(Calendar.MONTH), - currentCal.get(Calendar.DAY_OF_MONTH), 4, 10); - if (currentCal.get(Calendar.DAY_OF_MONTH) % 9 == 0 && currentCal.before(newCal)) { - Random rand = new Random(); - sendMessageToChannel(dc.getChannels().get(rand.nextInt(dc.getChannels().size())), - "You could make a religion out of this"); - } - } /* * IDiscordOAuth doa = new DiscordOAuthBuilder(dc).withClientID("226443037893591041") .withClientSecret(getConfig().getString("appsecret")) .withRedirectUrl("https://" + * (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") + ":8081/callback") .withScopes(Scope.IDENTIFY).withHttpServerOptions(new HttpServerOptions().setPort(8081)) @@ -355,4 +358,20 @@ public class DiscordPlugin extends JavaPlugin implements IListener { return null; return RequestBuffer.request(action).get(); // Let the pros handle this } + + public static void updatePlayerList() { + perform(() -> { + String[] s = chatchannel.getTopic().split("\\n----\\n"); + //System.out.println("Len: " + s.length); + //System.out.println("s0: " + s[0]); + if (s.length < 3) + return; + s[0] = Bukkit.getOnlinePlayers().size() + " player" + (Bukkit.getOnlinePlayers().size() != 1 ? "s" : "") + + " online"; + s[s.length - 1] = "Players: " + Bukkit.getOnlinePlayers().stream() + .map(p -> DiscordPlugin.sanitizeString(p.getDisplayName())).collect(Collectors.joining(", ")); + //System.out.println("s0 after: " + s[0]); + chatchannel.changeTopic(Arrays.stream(s).collect(Collectors.joining("\n----\n"))); + }); + } } diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index 04ecaea..c5f71ef 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -222,6 +222,8 @@ public class MCChatListener implements Listener, IListener @Override // Discord public void handle(MessageReceivedEvent event) { + if (DiscordPlugin.SafeMode) + return; val author = event.getMessage().getAuthor(); val user = DiscordPlayer.getUser(author.getStringID(), DiscordPlayer.class); if (!event.getMessage().getChannel().getStringID().equals(DiscordPlugin.chatchannel.getStringID()) diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java index 5361559..6407a5a 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java @@ -61,6 +61,7 @@ public class MCListener implements Listener { } MCChatListener.sendSystemMessageToChat(e.GetPlayer().PlayerName().get() + " joined the game"); MCChatListener.ListC = 0; + DiscordPlugin.updatePlayerList(); } @EventHandler(priority = EventPriority.HIGHEST) @@ -73,6 +74,7 @@ public class MCListener implements Listener { .filter(s -> s.getUniqueId().equals(e.getPlayer().getUniqueId())).findAny() .ifPresent(dcp -> callEventExcluding(new PlayerJoinEvent(dcp, ""), "ProtocolLib")); MCChatListener.sendSystemMessageToChat(e.GetPlayer().PlayerName().get() + " left the game"); + DiscordPlugin.updatePlayerList(); } @EventHandler