Staff Chat - JustKato/BukkitWiki GitHub Wiki

package net.serverloop.ChunkByteCore.diverse;

import net.serverloop.ChunkByteCore.Main;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import sun.management.Sensor;

import java.util.ArrayList;
import java.util.List;

public class StaffChat implements Listener, CommandExecutor {
    public static List<Player> chatStaff = new ArrayList<>();
    Main plugin;

    public StaffChat(Main _plugin) {
        this.plugin = _plugin;
        this.plugin.getCommand("schat").setExecutor(this::onCommand);
        this.plugin.getServer().getPluginManager().registerEvents(this, this.plugin);
    }

    @Override
    public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
        Player sender = (Player) commandSender;
        if (!sender.hasPermission("ChunkByte.admin.chat")) {
            sender.sendMessage(ChatGenerator.GenerateChatMessage(ChatColor.RED + "You do not have permissions for this command"));
            return false;
        }
        if (commandSender instanceof Player) {
            if (TogglePlayerMode((Player) commandSender)) {
                commandSender.sendMessage(ChatGenerator.GenerateChatMessage("StaffChat: ON"));
            } else {
                commandSender.sendMessage(ChatGenerator.GenerateChatMessage("StaffChat: " + ChatColor.RED + "OFF"));
            }
        } else {
            commandSender.sendMessage(ChatColor.RED + "Only players bro");
        }
        return false;
    }

    public static boolean TogglePlayerMode(Player p) {
        if (chatStaff.contains(p)) {
            chatStaff.remove(p);
            return false;
        } else {
            chatStaff.add(p);
            return true;
        }
    }

    @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
    void onChat(AsyncPlayerChatEvent event) {
        Player sender = event.getPlayer();
        if (chatStaff.contains(sender)) {
            if (!sender.hasPermission("ChunkByte.admin.chat")) {
                sender.sendMessage(ChatGenerator.GenerateChatMessage(ChatColor.RED + "You no longer have permission to use StaffChat"));
                TogglePlayerMode(sender);
                return;
            }
            String msg = event.getMessage();
            event.setCancelled(true);
            for (Player p : Bukkit.getServer().getOnlinePlayers()) {
                if (p.hasPermission("ChunkByte.admin.chat")) {
                    p.sendMessage(ChatGenerator.GenerateChatMessage(msg, ChatColor.BLUE + sender.getName()));
                }
            }
        }

    }

}
⚠️ **GitHub.com Fallback** ⚠️