From ef43de56e85385585940187f58848bc2fba0561a Mon Sep 17 00:00:00 2001 From: j502647092 Date: Sun, 26 Jul 2015 19:43:42 +0800 Subject: [PATCH] fix spam config error... Signed-off-by: j502647092 --- .../SimpleProtect/SimpleProtect.java | 35 +------ .../command/SimpleProtectCommand.java | 93 +++++++++++++++++++ .../citycraft/SimpleProtect/listen/Spam.java | 83 +++++------------ src/config.yml | 5 +- 4 files changed, 123 insertions(+), 93 deletions(-) create mode 100644 src/cn/citycraft/SimpleProtect/command/SimpleProtectCommand.java diff --git a/src/cn/citycraft/SimpleProtect/SimpleProtect.java b/src/cn/citycraft/SimpleProtect/SimpleProtect.java index 73afd72..794978c 100644 --- a/src/cn/citycraft/SimpleProtect/SimpleProtect.java +++ b/src/cn/citycraft/SimpleProtect/SimpleProtect.java @@ -1,13 +1,10 @@ package cn.citycraft.SimpleProtect; import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; +import cn.citycraft.SimpleProtect.command.SimpleProtectCommand; import cn.citycraft.SimpleProtect.config.Config; import cn.citycraft.SimpleProtect.listen.BreakFarm; import cn.citycraft.SimpleProtect.listen.Explosion; @@ -22,6 +19,7 @@ public class SimpleProtect extends JavaPlugin { public String servername; public String pluginname; + public Spam spam = new Spam(this); public String getfullmsg(String path) { return servername + pluginname + " " + getmessage(path); @@ -31,35 +29,10 @@ public class SimpleProtect extends JavaPlugin { return Config.getMessage(path); } - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - switch (args.length) { - case 1: - switch (args[0]) { - case "setspawn": - if (sender instanceof Player) { - Location l = ((Player) sender).getLocation(); - Config.getInstance().set("SafeNetherDoor.World", l.getWorld().getName()); - Config.getInstance().set("SafeNetherDoor.X", l.getBlockX()); - Config.getInstance().set("SafeNetherDoor.Y", l.getBlockY()); - Config.getInstance().set("SafeNetherDoor.Z", l.getBlockZ()); - sender.sendMessage(pluginname + Config.getMessage("SafeNetherDoor.Set")); - } - return true; - case "reload": - onLoad(); - sender.sendMessage(pluginname + "§a配置文件已重载!"); - } - break; - } - return false; - } - @Override public void onEnable() { getServer().getConsoleSender().sendMessage( "==========" + servername + pluginname + "=========="); - PluginManager pm = Bukkit.getPluginManager(); if (Config.getInstance().getBoolean("Tip.Enable", true)) { @@ -90,14 +63,12 @@ public class SimpleProtect extends JavaPlugin { } if (Config.getInstance().getBoolean("Spam.Enable", true)) { - Spam spam = new Spam(this); Bukkit.getPluginManager().registerEvents(spam, this); int resettime = Config.getInstance().getInt("Spam.MuteReset") * 20; Bukkit.getScheduler().runTaskTimer(this, spam, resettime, resettime); - getCommand("spam").setExecutor(spam); getLogger().info("防止玩家聊天刷屏已加载!"); } - + getCommand("simpleprotect").setExecutor(new SimpleProtectCommand(this)); getServer().getConsoleSender().sendMessage( "==========" + servername + pluginname + "=========="); new VersionChecker(this); diff --git a/src/cn/citycraft/SimpleProtect/command/SimpleProtectCommand.java b/src/cn/citycraft/SimpleProtect/command/SimpleProtectCommand.java new file mode 100644 index 0000000..1328ac6 --- /dev/null +++ b/src/cn/citycraft/SimpleProtect/command/SimpleProtectCommand.java @@ -0,0 +1,93 @@ +/** + * + */ +package cn.citycraft.SimpleProtect.command; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import cn.citycraft.SimpleProtect.SimpleProtect; +import cn.citycraft.SimpleProtect.config.Config; + +/** + * @author Administrator + * + */ +public class SimpleProtectCommand implements CommandExecutor { + + SimpleProtect plugin; + + /** + * @param simpleProtect + */ + public SimpleProtectCommand(SimpleProtect simpleProtect) { + plugin = simpleProtect; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + switch (args.length) { + case 1: + switch (args[0]) { + case "setspawn": + if (sender instanceof Player) { + Location l = ((Player) sender).getLocation(); + Config.getInstance().set("SafeNetherDoor.World", l.getWorld().getName()); + Config.getInstance().set("SafeNetherDoor.X", l.getBlockX()); + Config.getInstance().set("SafeNetherDoor.Y", l.getBlockY()); + Config.getInstance().set("SafeNetherDoor.Z", l.getBlockZ()); + sender.sendMessage(plugin.pluginname + Config.getMessage("SafeNetherDoor.Set")); + } + return true; + case "reload": + plugin.onLoad(); + sender.sendMessage(plugin.pluginname + "§a配置文件已重载!"); + return true; + case "list": + + break; + case "admin": + if (args[1].equalsIgnoreCase("on")) { + plugin.spam.setAdminchat(true); + sender.sendMessage(plugin.getfullmsg("Spam.AdminChatOn")); + return true; + } + if (args[1].equalsIgnoreCase("off")) { + plugin.spam.setAdminchat(false); + sender.sendMessage(plugin.getfullmsg("Spam.AdminChatOff")); + return true; + } + break; + } + break; + + case 2: + Player p = Bukkit.getPlayer(args[1]); + switch (args[0]) { + case "add": + if (p != null) { + plugin.spam.getCc().add(p.getName()); + sender.sendMessage(plugin.getfullmsg("Spam.MuteOn").replace("%player%", + p.getDisplayName())); + } else { + sender.sendMessage(plugin.getfullmsg("Spam.OffLine")); + } + case "del": + if (p != null && plugin.spam.getCc().contains(p.getName())) { + plugin.spam.getCc().remove(p); + sender.sendMessage(plugin.getfullmsg("Spam.MuteOff").replace("%player%", + p.getDisplayName())); + } else { + sender.sendMessage(plugin.getfullmsg("Spam.NotMute")); + } + } + break; + } + return false; + } + +} diff --git a/src/cn/citycraft/SimpleProtect/listen/Spam.java b/src/cn/citycraft/SimpleProtect/listen/Spam.java index 04d10cc..f442f27 100644 --- a/src/cn/citycraft/SimpleProtect/listen/Spam.java +++ b/src/cn/citycraft/SimpleProtect/listen/Spam.java @@ -3,12 +3,10 @@ */ package cn.citycraft.SimpleProtect.listen; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -16,19 +14,22 @@ import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import cn.citycraft.SimpleProtect.SimpleProtect; +import cn.citycraft.SimpleProtect.config.Config; /** * * @author 蒋天蓓 */ -public class Spam implements Runnable, Listener, CommandExecutor { +public class Spam implements Runnable, Listener { private final HashMap lT; private final HashMap lC; - HashMap tc = new HashMap(); - HashMap cc = new HashMap(); + HashMap tc = new HashMap(); + List cc = new ArrayList(); String AntiMsg; + boolean adminchat; + SimpleProtect plugin; public Spam(SimpleProtect main) { @@ -46,12 +47,12 @@ public class Spam implements Runnable, Listener, CommandExecutor { SaveMsg(n, s); return false; } - if (lt + plugin.getConfig().getLong("Spam.ChatWait", 1) > nt) { + if (lt + Config.getInstance().getLong("Spam.ChatWait", 1) > nt) { AntiMsg = plugin.getmessage("Spam.TooMuchChat"); return true; } if (lm.equals(s)) { - if (lt + plugin.getConfig().getLong("Spam.SameChatWait", 5) > nt) { + if (lt + Config.getInstance().getLong("Spam.SameChatWait", 5) > nt) { AntiMsg = plugin.getmessage("Spam.TooMuchSameChat"); return true; } @@ -70,12 +71,12 @@ public class Spam implements Runnable, Listener, CommandExecutor { SaveMsg(n, s); return false; } - if (lt + plugin.getConfig().getLong("Spam.CommandWait", 1) > nt) { + if (lt + Config.getInstance().getLong("Spam.CommandWait", 1) > nt) { AntiMsg = plugin.getmessage("Spam.TooMuchCommand"); return true; } if (lm.equals(s)) { - if (lt + plugin.getConfig().getLong("Spam.SameCommandWait", 3) > nt) { + if (lt + Config.getInstance().getLong("Spam.SameCommandWait", 3) > nt) { AntiMsg = plugin.getmessage("Spam.TooMuchSameCommand"); return true; } @@ -84,46 +85,8 @@ public class Spam implements Runnable, Listener, CommandExecutor { return false; } - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (command.getName().equalsIgnoreCase("sp")) { - if (args.length == 2) { - Player p = Bukkit.getPlayer(args[1]); - if (args[0].equalsIgnoreCase("add")) { - if (p != null) { - cc.put(p, p); - sender.sendMessage(plugin.getfullmsg("Spam.MuteOn").replace("%player%", - p.getDisplayName())); - } else { - sender.sendMessage(plugin.getfullmsg("Spam.OffLine")); - } - } - if (args[0].equalsIgnoreCase("del")) { - if (p != null && cc.containsKey(p)) { - cc.remove(p); - sender.sendMessage(plugin.getfullmsg("Spam.MuteOff").replace("%player%", - p.getDisplayName())); - } else { - sender.sendMessage(plugin.getfullmsg("Spam.NotMute")); - } - } - if (args[0].equalsIgnoreCase("admin")) { - if (args[1].equalsIgnoreCase("on")) { - adminchat = true; - sender.sendMessage(plugin.getfullmsg("Spam.AdminChatOn")); - return true; - } - if (args[1].equalsIgnoreCase("off")) { - adminchat = false; - sender.sendMessage(plugin.getfullmsg("Spam.AdminChatOff")); - return true; - } - } - return true; - } - return false; - } - return false; + public List getCc() { + return cc; } @EventHandler(ignoreCancelled = true) @@ -138,7 +101,7 @@ public class Spam implements Runnable, Listener, CommandExecutor { e.setCancelled(true); return; } - if (cc.containsKey(p)) { + if (cc.contains(p)) { p.sendMessage(plugin.getfullmsg("Spam.MuteMsg")); e.setCancelled(true); return; @@ -164,16 +127,16 @@ public class Spam implements Runnable, Listener, CommandExecutor { } public void put(Player p) { - if (tc.containsKey(p)) { - int t = tc.get(p); - if (t > plugin.getConfig().getLong("Spam.MuteCheck", 3)) { + if (tc.containsKey(p.getName())) { + int t = tc.get(p.getName()); + if (t > Config.getInstance().getLong("Spam.MuteCheck", 3)) { p.sendMessage(plugin.getfullmsg("Spam.MuteMsg")); - cc.put(p, p); + cc.add(p.getName()); } else { - tc.put(p, t + 1); + tc.put(p.getName(), t + 1); } } else { - tc.put(p, 1); + tc.put(p.getName(), 1); } } @@ -187,4 +150,8 @@ public class Spam implements Runnable, Listener, CommandExecutor { lT.put(n, System.currentTimeMillis() / 1000); } + public void setAdminchat(boolean adminchat) { + this.adminchat = adminchat; + } + } diff --git a/src/config.yml b/src/config.yml index c4cd723..08799c5 100644 --- a/src/config.yml +++ b/src/config.yml @@ -7,7 +7,7 @@ pluginname: '&6[&b保护系统&6]&r' #登陆提示 Tip: #是否开启 - Enable: true + Enable: false Message: - '&a服务器已开启保护功能!' - '&c将会实时监控您的操作!' @@ -45,7 +45,7 @@ SafeNetherDoor: Enable: true Tip: '&5为防止您卡在地狱门,现在将您传送回主城!' Set: '&a新的传送点已设置!' - World: world + World: world X: 0 Y: 70 Z: 0 @@ -72,4 +72,3 @@ Spam: AdminChatOff: '&c服务器已关闭管理员聊天!' AdminChat: '&c服务器已开启管理员聊天!' MuteMsg: '&c您由于多次刷屏已被禁言,请联系管理解禁!' -