From 68e69782ee022f531967955c042f14042e94cdad Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Sun, 23 Dec 2018 23:50:13 +0100 Subject: [PATCH] Well, not everything Fixed some private mcchat issues Fixed #85 --- .../discordplugin/listeners/MCListener.java | 2 +- .../discordplugin/mcchat/MCChatListener.java | 3 ++- .../discordplugin/mcchat/MCChatPrivate.java | 14 ++++++++++---- .../discordplugin/mcchat/MCListener.java | 6 ++++++ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java index b36414d..a39d5fc 100755 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java @@ -38,7 +38,7 @@ public class MCListener implements Listener { DiscordPlugin.Restart = !e.getCommand().equalsIgnoreCase("stop"); // The variable is always true except if stopped } - private static final String[] EXCLUDED_PLUGINS = {"ProtocolLib", "LibsDisguises"}; + private static final String[] EXCLUDED_PLUGINS = {"ProtocolLib", "LibsDisguises", "JourneyMapServer"}; //TODO: Make configurable public static void callEventExcludingSome(Event event) { callEventExcluding(event, false, EXCLUDED_PLUGINS); diff --git a/src/main/java/buttondevteam/discordplugin/mcchat/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/mcchat/MCChatListener.java index 98eb523..882921b 100755 --- a/src/main/java/buttondevteam/discordplugin/mcchat/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/mcchat/MCChatListener.java @@ -240,7 +240,8 @@ public class MCChatListener implements Listener { && !(ev.getMessage().getChannel().isPrivate() && MCChatPrivate.isMinecraftChatEnabled(author.getStringID())) && !hasCustomChat) return false; //Chat isn't enabled on this channel - if (hasCustomChat && ev.getMessage().getContent().length() < "/mcchat<>".length() + if (ev.getMessage().getChannel().isPrivate() //Only in private chat + && ev.getMessage().getContent().length() < "/mcchat<>".length() && ev.getMessage().getContent().replace("/", "") .equalsIgnoreCase("mcchat")) //Either mcchat or /mcchat return false; //Allow disabling the chat if needed diff --git a/src/main/java/buttondevteam/discordplugin/mcchat/MCChatPrivate.java b/src/main/java/buttondevteam/discordplugin/mcchat/MCChatPrivate.java index 8356b44..99c1740 100644 --- a/src/main/java/buttondevteam/discordplugin/mcchat/MCChatPrivate.java +++ b/src/main/java/buttondevteam/discordplugin/mcchat/MCChatPrivate.java @@ -2,9 +2,11 @@ package buttondevteam.discordplugin.mcchat; import buttondevteam.discordplugin.DiscordConnectedPlayer; import buttondevteam.discordplugin.DiscordPlayer; +import buttondevteam.discordplugin.DiscordPlugin; import buttondevteam.lib.player.TBMCPlayer; import lombok.val; import org.bukkit.Bukkit; +import org.bukkit.event.Event; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import sx.blah.discord.handle.obj.IChannel; @@ -31,13 +33,13 @@ public class MCChatPrivate { val sender = new DiscordConnectedPlayer(user, channel, mcp.getUUID(), op.getName()); MCChatUtils.addSender(MCChatUtils.ConnectedSenders, user, sender); if (p == null)// Player is offline - If the player is online, that takes precedence - callEventExcludingSome(new PlayerJoinEvent(sender, "")); + callEventSync(new PlayerJoinEvent(sender, "")); } else { val sender = MCChatUtils.removeSender(MCChatUtils.ConnectedSenders, channel, user); if (p == null)// Player is offline - If the player is online, that takes precedence - callEventExcludingSome(new PlayerQuitEvent(sender, "")); + callEventSync(new PlayerQuitEvent(sender, "")); } - } + } // ---- PermissionsEx warning is normal on logout ---- if (!start) MCChatUtils.lastmsgfromd.remove(channel.getLongID()); return start // @@ -57,7 +59,11 @@ public class MCChatPrivate { public static void logoutAll() { for (val entry : MCChatUtils.ConnectedSenders.entrySet()) for (val valueEntry : entry.getValue().entrySet()) - callEventExcludingSome(new PlayerQuitEvent(valueEntry.getValue(), "")); + callEventExcludingSome(new PlayerQuitEvent(valueEntry.getValue(), "")); //This is sync MCChatUtils.ConnectedSenders.clear(); } + + private static void callEventSync(Event event) { + Bukkit.getScheduler().runTask(DiscordPlugin.plugin, () -> callEventExcludingSome(event)); + } } diff --git a/src/main/java/buttondevteam/discordplugin/mcchat/MCListener.java b/src/main/java/buttondevteam/discordplugin/mcchat/MCListener.java index 2e2d089..2c5fdb0 100644 --- a/src/main/java/buttondevteam/discordplugin/mcchat/MCListener.java +++ b/src/main/java/buttondevteam/discordplugin/mcchat/MCListener.java @@ -9,6 +9,7 @@ import com.earth2me.essentials.CommandSource; import lombok.val; import net.ess3.api.events.AfkStatusChangeEvent; import net.ess3.api.events.MuteStatusChangeEvent; +import net.ess3.api.events.NickChangeEvent; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -144,4 +145,9 @@ class MCListener implements Listener { //Channel channel = ChromaGamerBase.getFromSender(event.getSender()).channel().get(); - TODO MCChatUtils.forAllMCChat(MCChatUtils.send(name + " <:YEEHAW:" + DiscordPlugin.mainServer.getEmojiByName("YEEHAW").getStringID() + ">s")); } + + @EventHandler + public void onNickChange(NickChangeEvent event) { + MCChatUtils.updatePlayerList(); + } }