package de.web.basman93; import java.util.ArrayList; import java.util.List; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerLoginEvent.Result; import org.bukkit.plugin.java.JavaPlugin; public class KickPlayerOnJoin extends JavaPlugin implements Listener { private boolean active = true; private FileConfiguration config = getConfig(); private List playerlist = new ArrayList(); private final String prefix = ChatColor.GRAY + "[K" + ChatColor.DARK_GRAY + "P" + ChatColor.GRAY + "OJ] "; @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if(command.getName().equalsIgnoreCase("kickplayeronjoin")) { if(args.length > 0 && args[0].equalsIgnoreCase("on") && cop(sender, "kpoj.mode")) { sender.sendMessage(prefix + "activated"); active = true; save(); } else if(args.length > 0 && args[0].equalsIgnoreCase("off") && cop(sender, "kpoj.mode")) { sender.sendMessage(prefix + "deactivated"); active = false; save(); } else if(args.length > 0 && args[0].equalsIgnoreCase("help") && cop(sender, "kpoj.help")) { sender.sendMessage(prefix + "--------------- HELP ---------------"); sender.sendMessage(prefix + "/kpoj - shows version & status"); sender.sendMessage(prefix + "/kpoj help - shows this help info"); sender.sendMessage(prefix + "/kpoj off - deactivate this plugin"); sender.sendMessage(prefix + "/kpoj on - activate this plugin"); sender.sendMessage(prefix + "------------------------------------"); } else if(args.length > 1 && args[0].equalsIgnoreCase("add") && cop(sender, "kpoj.add")) { for(int i = 1; i < args.length; i++) { if(playerlist.contains(args[i])) { sender.sendMessage(prefix + args[i] + " is already in the whitelist!"); } else { playerlist.add(args[i]); sender.sendMessage(prefix + args[i] + " add to whitelist!"); } } save(); } else if(args.length > 1 && args[0].equalsIgnoreCase("del") && cop(sender, "kpoj.del")) { for(int i = 1; i < args.length; i++) { if(playerlist.contains(args[i])) { playerlist.remove(args[i]); sender.sendMessage(prefix + args[i] + " removed from the whitelist!"); } else { sender.sendMessage(prefix + args[i] + " is not in the whitelist!"); } } save(); } else if(args.length > 0 && args[0].equalsIgnoreCase("reload") && cop(sender, "kpoj.reload")) { reloadConfig(); config = getConfig(); playerlist = config.getStringList("Player"); active = config.getBoolean("Check"); } else if(args.length > 0 && args[0].equalsIgnoreCase("list") && cop(sender, "kpoj.list")) { String buffer = playerlist.isEmpty() ? "" : playerlist.get(0); for(int i = 1; i < playerlist.size(); i++) { buffer += ", " + playerlist.get(i); } sender.sendMessage(prefix + "Players: " + buffer); } else { sender.sendMessage(prefix + "Version: " + getDescription().getVersion()); if(cop(sender, "kpoj.info")) sender.sendMessage(prefix + "Active: " + (active ? ChatColor.GREEN + "yes" : ChatColor.RED + "no")); if(sender.hasPermission("kpoj.info") && sender instanceof Player) sender.sendMessage(prefix + "Status: " + (playerlist.contains(sender.getName()) ? ChatColor.GREEN + "Allowed" : ChatColor.RED + "Disallowed")); } return true; } return false; } @Override public void onEnable() { saveDefaultConfig(); playerlist = config.getStringList("Player"); active = config.getBoolean("Check"); getServer().getPluginManager().registerEvents(this, this); } @EventHandler public void onPlayerLogin(PlayerLoginEvent event) { if(!playerlist.contains(event.getPlayer().getName()) && active) { event.disallow(Result.KICK_WHITELIST, "You are not whitelisted on this server!"); getServer().broadcastMessage(event.getPlayer().getName()); } } private boolean cop(CommandSender sender, String perm) { return sender.hasPermission(perm) || !(sender instanceof Player); } private void save() { config.set("Check", active); config.set("Player", playerlist); saveConfig(); } }