PandacraftUtils/src/net/mc_pandacraft/java/plugin/pandacraftutils/antispam/AntispamManager.java

91 lines
2.2 KiB
Java
Raw Normal View History

2014-11-22 17:18:10 +01:00
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;
}
}
}