diff --git a/galaxy/src/main/java/com/alttd/chat/commands/MuteServer.java b/galaxy/src/main/java/com/alttd/chat/commands/MuteServer.java
index dae9826..c57ebda 100644
--- a/galaxy/src/main/java/com/alttd/chat/commands/MuteServer.java
+++ b/galaxy/src/main/java/com/alttd/chat/commands/MuteServer.java
@@ -3,7 +3,9 @@ package com.alttd.chat.commands;
import com.alttd.chat.ChatPlugin;
import com.alttd.chat.config.Config;
import com.alttd.chat.util.Utility;
+import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
+import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
@@ -16,19 +18,28 @@ public class MuteServer implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if(!(sender instanceof Player)) { // must be a player
+ if(!(sender instanceof Player player)) { // must be a player
return true;
}
new BukkitRunnable() {
@Override
public void run() {
- UUID uuid = ((Player) sender).getUniqueId();
+ UUID uuid = player.getUniqueId();
if (!Utility.hasPermission(uuid, Config.SERVERMUTEPERMISSION)) {
sender.sendMessage(MiniMessage.get().parse("You don't have permission to use this command."));
return;
}
+
ChatPlugin.getInstance().toggleServerMuted();
- sender.sendMessage(MiniMessage.get().parse("You have " + (!Utility.hasPermission(uuid, Config.GCPERMISSION) ? "muted" : "unmuted") + " chat for this server.")); // TODO load from config and minimessage
+
+ Component component;
+ if (ChatPlugin.getInstance().serverMuted()) {
+ component = MiniMessage.get().parse(Utility.getDisplayName(player.getUniqueId(), player.getName()) + " muted chat.");
+ } else {
+ component = MiniMessage.get().parse(Utility.getDisplayName(player.getUniqueId(), player.getName()) + " un-muted chat.");
+ }
+
+ Bukkit.getOnlinePlayers().forEach(player -> player.sendMessage(component));
}
}.runTaskAsynchronously(ChatPlugin.getInstance());
return false;
diff --git a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java
index 6f191ef..f012388 100755
--- a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java
+++ b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java
@@ -77,13 +77,14 @@ public class ChatHandler {
return;
}
- if (Database.get().isPlayerMuted(player.getUniqueId(), null) || ChatPlugin.getInstance().serverMuted()) {
+ if (Database.get().isPlayerMuted(player.getUniqueId(), null) || (ChatPlugin.getInstance().serverMuted() && !player.hasPermission("chat.bypass-server-muted"))) {
MiniMessage miniMessage = MiniMessage.get();
+ Component blockedNotification = miniMessage.parse("[GC Muted] "
+ + Utility.getDisplayName(player.getUniqueId(), player.getName())
+ + " tried to say: "
+ + message + "");
+
Bukkit.getOnlinePlayers().forEach(a ->{
- Component blockedNotification = miniMessage.parse("[GC Muted] "
- + Utility.getDisplayName(player.getUniqueId(), player.getName())
- + " tried to say: "
- + message + "");
if (a.hasPermission("chat.alert-blocked")) {
a.sendMessage(blockedNotification);//TODO make configurable (along with all the messages)
}
diff --git a/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java b/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java
index 90046d5..633b05b 100755
--- a/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java
+++ b/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java
@@ -1,5 +1,6 @@
package com.alttd.chat.listeners;
+import com.alttd.chat.ChatPlugin;
import com.alttd.chat.config.Config;
import com.alttd.chat.handler.ChatHandler;
import com.alttd.chat.managers.ChatUserManager;
@@ -9,11 +10,13 @@ import com.alttd.chat.util.GalaxyUtility;
import com.alttd.chat.util.Utility;
import io.papermc.paper.chat.ChatRenderer;
import io.papermc.paper.event.player.AsyncChatEvent;
+import litebans.api.Database;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.serializer.plain.PlainComponentSerializer;
+import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -26,6 +29,25 @@ public class ChatListener implements Listener, ChatRenderer {
@EventHandler(ignoreCancelled = true)
public void onPlayerChat(AsyncChatEvent event) {
+
+ if (ChatPlugin.getInstance().serverMuted() && !event.getPlayer().hasPermission("chat.bypass-server-muted")) {
+ event.setCancelled(true);
+
+ Player player = event.getPlayer();
+ MiniMessage miniMessage = MiniMessage.get();
+ Component blockedNotification = miniMessage.parse("[Chat Muted] "
+ + Utility.getDisplayName(player.getUniqueId(), player.getName())
+ + " tried to say: "
+ + PlainComponentSerializer.plain().serialize(event.message()) + "");
+
+ Bukkit.getOnlinePlayers().forEach(a ->{
+ if (a.hasPermission("chat.alert-blocked")) {
+ a.sendMessage(blockedNotification);//TODO make configurable (along with all the messages)
+ }
+ });
+ return;
+ }
+
Player player = event.getPlayer();
ChatUser user = ChatUserManager.getChatUser(player.getUniqueId());