package com.nisovin.magicspells.util; import java.util.Collections; import java.util.HashSet; import java.util.Set; import org.bukkit.entity.Player; import com.comphenix.protocol.PacketType; import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.ProtocolManager; import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketEvent; import com.nisovin.magicspells.MagicSpells; public class MessageBlocker { Set<String> blocking = Collections.synchronizedSet(new HashSet<String>()); PacketListener packetListener; public MessageBlocker() { ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager(); packetListener = new PacketListener(); protocolManager.addPacketListener(packetListener); } public void addPlayer(Player player) { blocking.add(player.getName()); } public void removePlayer(Player player) { blocking.remove(player.getName()); } public void turnOff() { if (packetListener != null) { ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager(); protocolManager.removePacketListener(packetListener); packetListener = null; } } class PacketListener extends PacketAdapter { public PacketListener() { super(MagicSpells.plugin, PacketType.Play.Server.CHAT); } @Override public void onPacketSending(PacketEvent event) { if (blocking.contains(event.getPlayer().getName())) { event.setCancelled(true); } } } }