91 lines
2.2 KiB
Java
91 lines
2.2 KiB
Java
|
package net.mc_pandacraft.java.plugin.pandacraftutils.antispam;
|
||
|
|
||
|
import net.mc_pandacraft.java.plugin.pandacraftutils.PandacraftUtils;
|
||
|
|
||
|
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 org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||
|
|
||
|
public class AntispamManager implements Listener {
|
||
|
|
||
|
private AntispamPlayer[] aPlayers;
|
||
|
|
||
|
private PandacraftUtils plugin;
|
||
|
|
||
|
public AntispamManager(PandacraftUtils pl)
|
||
|
{
|
||
|
plugin = pl;
|
||
|
|
||
|
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||
|
|
||
|
aPlayers = new AntispamPlayer[plugin.getServer().getMaxPlayers()];
|
||
|
|
||
|
|
||
|
// analyse des joueurs déjà en ligne (/reload)
|
||
|
for (Player p : plugin.getServer().getOnlinePlayers())
|
||
|
onPlayerJoin(new PlayerJoinEvent(p, "")); // simule l'évènement d'arrivé d'un joueur, pour le rajouter
|
||
|
}
|
||
|
|
||
|
@EventHandler(priority=EventPriority.HIGHEST)
|
||
|
public void onAsyncPlayerChat(AsyncPlayerChatEvent event)
|
||
|
{
|
||
|
try {
|
||
|
getAPlayer(event.getPlayer()).onAsyncPlayerChat(event);
|
||
|
} catch (NullPointerException e) { }
|
||
|
}
|
||
|
|
||
|
@EventHandler(priority=EventPriority.HIGH)
|
||
|
public void onPlayerCommandPreprocess (PlayerCommandPreprocessEvent event)
|
||
|
{
|
||
|
try {
|
||
|
getAPlayer(event.getPlayer()).onPlayerCommandPreprocess(event);
|
||
|
} catch (NullPointerException e) { }
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
public AntispamPlayer getAPlayer(Player p)
|
||
|
{
|
||
|
if (p == null || !p.isOnline())
|
||
|
return null;
|
||
|
for (AntispamPlayer ap : aPlayers)
|
||
|
{
|
||
|
if (ap != null && ap.getPlayer() == p)
|
||
|
return ap;
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
@EventHandler
|
||
|
public void onPlayerJoin (PlayerJoinEvent event)
|
||
|
{
|
||
|
int i=0;
|
||
|
while (i<aPlayers.length && aPlayers[i] != null) i++;
|
||
|
if (aPlayers[i] == null) aPlayers[i] = new AntispamPlayer(plugin, event.getPlayer());
|
||
|
}
|
||
|
|
||
|
|
||
|
@EventHandler
|
||
|
public void onPlayerQuit (PlayerQuitEvent event)
|
||
|
{
|
||
|
|
||
|
for (int i=0; i<aPlayers.length; i++)
|
||
|
{
|
||
|
if (aPlayers[i] == null)
|
||
|
continue;
|
||
|
if (aPlayers[i].getPlayer() == event.getPlayer())
|
||
|
aPlayers[i] = null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|