import java.text.SimpleDateFormat; import java.util.Date; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitRunnable; public class Check extends JavaPlugin implements Listener { public static FileConfiguration c; public void onEnable(){ getServer().getPluginManager().registerEvents(this, this); c = getConfig(); c.addDefault("kick", false); c.options().copyDefaults(true); saveConfig(); Bukkit.getServer().getLogger().info("[PiratedCheck] 初始化完成"); getServer().getScheduler().runTaskTimer(this, new Runnable(){ @Override public void run() { saveConfig(); } }, 0L, 12000L); } public void onDisable(){ Bukkit.getServer().getLogger().info("[PiratedCheck] 插件關閉"); saveConfig(); } public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { CommandSender p = sender; if(sender.hasPermission("Pirated.admin")){ if(args.length == 0){ Help(p); }else if(args.length == 1){ if(args[0].equalsIgnoreCase("Reload")){ reloadConfig(); p.sendMessage("§a重載完成"); }else if(args[0].equalsIgnoreCase("clear")){ c.set("Log." + sender.getName(), null); p.sendMessage("§a巳清除可疑的Ip記錄"); return true; }else{ Help(p); } }else if(args.length == 2){ if(args[0].equalsIgnoreCase("Ip")){ if(c.get("Player." + args[1]) != null){ p.sendMessage("§aIP " + c.getString("Player." + args[1])); }else{ p.sendMessage("§a查不到此玩家"); } }else if(args[0].equalsIgnoreCase("Reset")){ c.set("Player." + args[1], null); c.set("Log." + args[1], null); p.sendMessage("§a重設完成"); }else if(args[0].equalsIgnoreCase("clear")){ c.set("Log." + args[1], null); p.sendMessage("§a巳經清除 " + args[1] + " 可疑的Ip記錄"); }else if(args[0].equalsIgnoreCase("kick")){ if(args[1].equalsIgnoreCase("true")){ c.set("kick", true); }else if(args[1].equalsIgnoreCase("false")){ c.set("kick", false); }else{ p.sendMessage("§a/check kick [true|false]"); } }else{ Help(p); } } saveConfig(); return true; }if(args.length == 1){ if(args[0].equalsIgnoreCase("clear")){ c.set("Log." + sender.getName(), null); p.sendMessage("§a巳清除可疑的Ip記錄"); return true; } } return false; } @EventHandler public void onPlayerJoinEvent(PlayerJoinEvent e){ String ip = e.getPlayer().getAddress().getHostString(); if(c.get("Player." + e.getPlayer().getName()) == null){ new BukkitRunnable(){ public void run(){ if(e.getPlayer().isOnline()){ c.set("Player." + e.getPlayer().getName(), ip); e.getPlayer().sendMessage("§a已儲存你的IP地置以作防盜之用"); saveConfig(); } } }.runTaskLater(this, 1200); }else if(c.getString("Player." + e.getPlayer().getName()).equals(ip)){ if(c.get("Log." + e.getPlayer().getName()) != null){ e.getPlayer().sendMessage("§a在其他地方曾經登入--"); e.getPlayer().sendMessage(c.getString("Log." + e.getPlayer().getName())); e.getPlayer().sendMessage("§a\n如果你更換電腦而轉換Ip\n請聯絡管理員跟進\n使用/check clear 清除可疑的Ip記錄"); } }else{ if(c.getBoolean("kick") == true){ e.getPlayer().kickPlayer("你使用不是平常登入的Ip而被§4踢出§f\n如你認為有誤請聯絡§4管理員"); }else{ e.getPlayer().sendMessage("§a你使用不是平常登入的Ip登入\n你的登入將會被記錄\n如你認為有誤請聯絡管理員"); } String str = ""; if(c.get("Log." + e.getPlayer().getName()) != null){ str = c.getString("Log." + e.getPlayer().getName()) + "\n"; str = str + new SimpleDateFormat("MM月dd日 HH:mm").format(new Date()) + " 從Ip:" + ip + "登入你的帳號"; }else{ str = new SimpleDateFormat("MM月dd日 HH:mm").format(new Date()) + " 從Ip:" + ip + "登入你的帳號"; } c.set("Log." + e.getPlayer().getName(), str); } } public void Help(CommandSender p){ p.sendMessage("§a----- §6PiratedCheck 幫助 §a-----"); p.sendMessage("§a/check ip <Player> §f- 查看玩家經常使用的Ip"); p.sendMessage("§a/check reset <Player> §f- 重設玩家的所有Ip記錄"); p.sendMessage("§a/check clear <Player> §f- 清除可疑的Ip記錄"); p.sendMessage("§a/check kick [true|false] §f- 設定是否因不同Ip登入而踢出"); p.sendMessage("§a/check reload §f- 重載插件"); }}
2015年9月1日 星期二
Minecraft 水桶插件(踢出不是你登入的電腦IP) OpenScource
訂閱:
意見 (Atom)