LimboManager/src/main/java/wtf/beatrice/limbomanager/listeners/PlayerChecker.java

87 lines
2.3 KiB
Java

package wtf.beatrice.limbomanager.listeners;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntitySpawnEvent;
import org.bukkit.event.inventory.*;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import wtf.beatrice.limbomanager.LimboManager;
public class PlayerChecker implements Listener
{
// this class performs various checks on player join and quit to ensure general safety.
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event)
{
// remove join msg
event.setJoinMessage(null);
LimboManager plugin = LimboManager.getInstance();
Player joiner = event.getPlayer();
// hide player from everyone and hide everyone from player
for(Player otherPlayer : Bukkit.getServer().getOnlinePlayers())
{
otherPlayer.hidePlayer(plugin, joiner);
joiner.hidePlayer(plugin, otherPlayer);
}
// disable flight
joiner.setAllowFlight(false);
joiner.setFlying(false);
// set gamemode
joiner.setGameMode(GameMode.CREATIVE);
// clear inventory
joiner.getInventory().clear();
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event)
{
event.setQuitMessage(null);
}
@EventHandler
public void onEntityCreate(EntitySpawnEvent event)
{
// disable ALL entities
if(event.getEntity().getType() != EntityType.PLAYER)
{
event.setCancelled(true);
}
}
@EventHandler
public void onEntityDamage(EntityDamageEvent event)
{
event.setCancelled(true);
}
@EventHandler
public void onInventoryEvent(InventoryEvent event)
{
if(event instanceof Cancellable)
{
if(!(event instanceof InventoryCloseEvent) &&
!(event instanceof InventoryClickEvent) &&
!(event instanceof InventoryDragEvent) &&
!(event instanceof InventoryOpenEvent))
{
((Cancellable) event).setCancelled(true);
}
}
}
}