diff --git a/pom.xml b/pom.xml
index 40f2734..299d605 100755
--- a/pom.xml
+++ b/pom.xml
@@ -183,7 +183,7 @@
com.discord4j
discord4j-core
- 3.0.11
+ 3.0.12
diff --git a/src/main/java/buttondevteam/discordplugin/mcchat/MCChatUtils.java b/src/main/java/buttondevteam/discordplugin/mcchat/MCChatUtils.java
index 6c085db..6b1c61d 100644
--- a/src/main/java/buttondevteam/discordplugin/mcchat/MCChatUtils.java
+++ b/src/main/java/buttondevteam/discordplugin/mcchat/MCChatUtils.java
@@ -1,6 +1,7 @@
package buttondevteam.discordplugin.mcchat;
import buttondevteam.core.ComponentManager;
+import buttondevteam.core.MainPlugin;
import buttondevteam.discordplugin.*;
import buttondevteam.discordplugin.broadcaster.GeneralEventBroadcasterModule;
import buttondevteam.lib.TBMCCoreAPI;
@@ -13,6 +14,7 @@ import lombok.RequiredArgsConstructor;
import lombok.val;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
@@ -30,6 +32,7 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Optional;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.logging.Level;
@@ -81,13 +84,27 @@ public class MCChatUtils {
String[] s = topic.split("\\n----\\n");
if (s.length < 3)
return;
- s[0] = Bukkit.getOnlinePlayers().size() + " player" + (Bukkit.getOnlinePlayers().size() != 1 ? "s" : "")
- + " online";
+ String gid;
+ if (lmd instanceof MCChatCustom.CustomLMD)
+ gid = ((MCChatCustom.CustomLMD) lmd).groupID;
+ else //If we're not using a custom chat then it's either can ("everyone") or can't (null) see at most
+ gid = buttondevteam.core.component.channel.Channel.GROUP_EVERYONE; // (Though it's a public chat then rn)
+ AtomicInteger C = new AtomicInteger();
s[s.length - 1] = "Players: " + Bukkit.getOnlinePlayers().stream()
+ .filter(p -> gid.equals(lmd.mcchannel.getGroupID(p))) //If they can see it
+ .filter(MCChatUtils::checkEssentials)
+ .filter(p -> C.incrementAndGet() > 0) //Always true
.map(p -> DPUtils.sanitizeString(p.getDisplayName())).collect(Collectors.joining(", "));
+ s[0] = C + " player" + (C.get() != 1 ? "s" : "") + " online";
((TextChannel) lmd.channel).edit(tce -> tce.setTopic(String.join("\n----\n", s)).setReason("Player list update")).subscribe(); //Don't wait
}
+ private static boolean checkEssentials(Player p) {
+ var ess = MainPlugin.ess;
+ if (ess == null) return true;
+ return !ess.getUser(p).isHidden();
+ }
+
public static T addSender(HashMap> senders,
User user, T sender) {
return addSender(senders, user.getId().asString(), sender);
diff --git a/src/main/java/buttondevteam/discordplugin/mcchat/MCListener.java b/src/main/java/buttondevteam/discordplugin/mcchat/MCListener.java
index c3ad14a..144304d 100644
--- a/src/main/java/buttondevteam/discordplugin/mcchat/MCListener.java
+++ b/src/main/java/buttondevteam/discordplugin/mcchat/MCListener.java
@@ -3,7 +3,9 @@ package buttondevteam.discordplugin.mcchat;
import buttondevteam.discordplugin.*;
import buttondevteam.lib.TBMCSystemChatEvent;
import buttondevteam.lib.architecture.ConfigData;
-import buttondevteam.lib.player.*;
+import buttondevteam.lib.player.TBMCPlayer;
+import buttondevteam.lib.player.TBMCPlayerBase;
+import buttondevteam.lib.player.TBMCYEEHAWEvent;
import com.earth2me.essentials.CommandSource;
import discord4j.core.object.entity.Role;
import discord4j.core.object.util.Snowflake;
@@ -18,9 +20,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
-import org.bukkit.event.player.PlayerCommandSendEvent;
-import org.bukkit.event.player.PlayerKickEvent;
-import org.bukkit.event.player.PlayerLoginEvent;
+import org.bukkit.event.player.*;
import org.bukkit.event.player.PlayerLoginEvent.Result;
import org.bukkit.event.server.BroadcastMessageEvent;
import org.bukkit.event.server.TabCompleteEvent;
@@ -45,12 +45,12 @@ class MCListener implements Listener {
}
@EventHandler(priority = EventPriority.LOWEST)
- public void onPlayerJoin(TBMCPlayerJoinEvent e) {
+ public void onPlayerJoin(PlayerJoinEvent e) {
if (e.getPlayer() instanceof DiscordConnectedPlayer)
return; // Don't show the joined message for the fake player
Bukkit.getScheduler().runTaskAsynchronously(DiscordPlugin.plugin, () -> {
final Player p = e.getPlayer();
- DiscordPlayer dp = e.GetPlayer().getAs(DiscordPlayer.class);
+ DiscordPlayer dp = TBMCPlayerBase.getPlayer(p.getUniqueId(), TBMCPlayer.class).getAs(DiscordPlayer.class);
if (dp != null) {
DiscordPlugin.dc.getUserById(Snowflake.of(dp.getDiscordID())).flatMap(user -> user.getPrivateChannel().flatMap(chan -> module.chatChannelMono().flatMap(cc -> {
MCChatUtils.addSender(MCChatUtils.OnlineSenders, dp.getDiscordID(),
@@ -60,14 +60,15 @@ class MCListener implements Listener {
return Mono.empty();
}))).subscribe();
}
- final String message = e.GetPlayer().PlayerName().get() + " joined the game";
- MCChatUtils.forAllowedCustomAndAllMCChat(MCChatUtils.send(message), e.getPlayer(), ChannelconBroadcast.JOINLEAVE, true);
+ final String message = e.getJoinMessage();
+ if (message != null && message.trim().length() > 0)
+ MCChatUtils.forAllowedCustomAndAllMCChat(MCChatUtils.send(message), e.getPlayer(), ChannelconBroadcast.JOINLEAVE, true);
ChromaBot.getInstance().updatePlayerList();
});
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onPlayerLeave(TBMCPlayerQuitEvent e) {
+ public void onPlayerLeave(PlayerQuitEvent e) {
if (e.getPlayer() instanceof DiscordConnectedPlayer)
return; // Only care about real users
MCChatUtils.OnlineSenders.entrySet()
@@ -78,8 +79,9 @@ class MCListener implements Listener {
.ifPresent(MCChatUtils::callLoginEvents));
Bukkit.getScheduler().runTaskLaterAsynchronously(DiscordPlugin.plugin,
ChromaBot.getInstance()::updatePlayerList, 5);
- final String message = e.GetPlayer().PlayerName().get() + " left the game";
- MCChatUtils.forAllowedCustomAndAllMCChat(MCChatUtils.send(message), e.getPlayer(), ChannelconBroadcast.JOINLEAVE, true);
+ final String message = e.getQuitMessage();
+ if (message != null && message.trim().length() > 0)
+ MCChatUtils.forAllowedCustomAndAllMCChat(MCChatUtils.send(message), e.getPlayer(), ChannelconBroadcast.JOINLEAVE, true);
}
@EventHandler(priority = EventPriority.HIGHEST)
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index e045c2b..f7ffcf1 100755
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,8 +1,10 @@
name: Chroma-Discord
main: buttondevteam.discordplugin.DiscordPlugin
-version: 1.0
+version: '1.0'
author: NorbiPeti
depend: [ChromaCore]
+softdepend:
+ - Essentials
commands:
discord:
website: 'https://github.com/TBMCPlugins/DiscordPlugin'