1
0
mirror of https://e.coding.net/circlecloud/SimpleProtect.git synced 2024-11-22 01:49:03 +00:00

complete spam class...

Signed-off-by: j502647092 <jtb1@163.com>
This commit is contained in:
j502647092 2015-07-26 18:02:17 +08:00
parent 417b1ff950
commit 1661e5cf99
4 changed files with 43 additions and 31 deletions

View File

@ -92,7 +92,8 @@ public class SimpleProtect extends JavaPlugin {
if (Config.getInstance().getBoolean("Spam.Enable", true)) { if (Config.getInstance().getBoolean("Spam.Enable", true)) {
Spam spam = new Spam(this); Spam spam = new Spam(this);
Bukkit.getPluginManager().registerEvents(spam, this); Bukkit.getPluginManager().registerEvents(spam, this);
Bukkit.getScheduler().runTaskTimer(this, spam, 20, 20); int resettime = Config.getInstance().getInt("Spam.MuteReset") * 20;
Bukkit.getScheduler().runTaskTimer(this, spam, resettime, resettime);
getCommand("spam").setExecutor(spam); getCommand("spam").setExecutor(spam);
getLogger().info("防止玩家聊天刷屏已加载!"); getLogger().info("防止玩家聊天刷屏已加载!");
} }

View File

@ -47,12 +47,12 @@ public class Spam implements Runnable, Listener, CommandExecutor {
return false; return false;
} }
if (lt + plugin.getConfig().getLong("Spam.ChatWait", 1) > nt) { if (lt + plugin.getConfig().getLong("Spam.ChatWait", 1) > nt) {
AntiMsg = "请不要短时间内发送大量消息!"; AntiMsg = plugin.getmessage("Spam.TooMuchChat");
return true; return true;
} }
if (lm.equals(s)) { if (lm.equals(s)) {
if (lt + plugin.getConfig().getLong("Spam.SameChatWait", 5) > nt) { if (lt + plugin.getConfig().getLong("Spam.SameChatWait", 5) > nt) {
AntiMsg = "请不要短时间内发送重复的消息!"; AntiMsg = plugin.getmessage("Spam.TooMuchSameChat");
return true; return true;
} }
} }
@ -71,12 +71,12 @@ public class Spam implements Runnable, Listener, CommandExecutor {
return false; return false;
} }
if (lt + plugin.getConfig().getLong("Spam.CommandWait", 1) > nt) { if (lt + plugin.getConfig().getLong("Spam.CommandWait", 1) > nt) {
AntiMsg = "请不要短时间内发送大量命令"; AntiMsg = plugin.getmessage("Spam.TooMuchCommand");
return true; return true;
} }
if (lm.equals(s)) { if (lm.equals(s)) {
if (lt + plugin.getConfig().getLong("Spam.SameCommandWait", 3) > nt) { if (lt + plugin.getConfig().getLong("Spam.SameCommandWait", 3) > nt) {
AntiMsg = "请不要短时间内发送相同的命令"; AntiMsg = plugin.getmessage("Spam.TooMuchSameCommand");
return true; return true;
} }
} }
@ -86,40 +86,36 @@ public class Spam implements Runnable, Listener, CommandExecutor {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (command.getName().equalsIgnoreCase("spam")) { if (command.getName().equalsIgnoreCase("sp")) {
if (!sender.hasPermission("spam.admin")) {
sender.sendMessage(plugin.servername + " " + plugin.getmessage("no-permission"));
return true;
}
if (args.length == 2) { if (args.length == 2) {
Player p = Bukkit.getPlayer(args[1]); Player p = Bukkit.getPlayer(args[1]);
if (args[0].equalsIgnoreCase("add")) { if (args[0].equalsIgnoreCase("add")) {
if (p != null) { if (p != null) {
cc.put(p, p); cc.put(p, p);
sender.sendMessage(plugin.servername + " §c已禁止玩家 " + p.getDisplayName() sender.sendMessage(plugin.getfullmsg("Spam.MuteOn").replace("%player%",
+ " §c聊天"); p.getDisplayName()));
} else { } else {
sender.sendMessage(plugin.servername + " §c玩家不存在或不在线"); sender.sendMessage(plugin.getfullmsg("Spam.OffLine"));
} }
} }
if (args[0].equalsIgnoreCase("del")) { if (args[0].equalsIgnoreCase("del")) {
if (p != null && cc.containsKey(p)) { if (p != null && cc.containsKey(p)) {
cc.remove(p); cc.remove(p);
sender.sendMessage(plugin.servername + " §a已允许玩家 " + p.getDisplayName() sender.sendMessage(plugin.getfullmsg("Spam.MuteOff").replace("%player%",
+ " §a聊天"); p.getDisplayName()));
} else { } else {
sender.sendMessage(plugin.servername + " §c玩家未被禁言或不存在"); sender.sendMessage(plugin.getfullmsg("Spam.NotMute"));
} }
} }
if (args[0].equalsIgnoreCase("admin")) { if (args[0].equalsIgnoreCase("admin")) {
if (args[1].equalsIgnoreCase("on")) { if (args[1].equalsIgnoreCase("on")) {
adminchat = true; adminchat = true;
sender.sendMessage(plugin.servername + " §a服务器已开启管理员聊天"); sender.sendMessage(plugin.getfullmsg("Spam.AdminChatOn"));
return true; return true;
} }
if (args[1].equalsIgnoreCase("off")) { if (args[1].equalsIgnoreCase("off")) {
adminchat = false; adminchat = false;
sender.sendMessage(plugin.servername + " §c服务器已关闭管理员聊天"); sender.sendMessage(plugin.getfullmsg("Spam.AdminChatOff"));
return true; return true;
} }
} }
@ -135,20 +131,20 @@ public class Spam implements Runnable, Listener, CommandExecutor {
Player p = e.getPlayer(); Player p = e.getPlayer();
String n = p.getName(); String n = p.getName();
String s = e.getMessage(); String s = e.getMessage();
if (p.hasPermission("fcp.ignore.spam")) if (p.hasPermission("sp.ignore.spam"))
return; return;
if (adminchat) { if (adminchat) {
p.sendMessage(plugin.servername + " §c服务器已开启管理员聊天"); p.sendMessage(plugin.getfullmsg("Spam.AdminChat"));
e.setCancelled(true); e.setCancelled(true);
return; return;
} }
if (cc.containsKey(p)) { if (cc.containsKey(p)) {
p.sendMessage(plugin.servername + " §c您已被禁言请联系管理员解禁"); p.sendMessage(plugin.getfullmsg("Spam.MuteMsg"));
e.setCancelled(true); e.setCancelled(true);
return; return;
} }
if (AntiChat(n, s)) { if (AntiChat(n, s)) {
p.sendMessage(plugin.servername + "§6[§4刷屏检测§6] §c" + AntiMsg); p.sendMessage(plugin.servername + plugin.pluginname + AntiMsg);
e.setCancelled(true); e.setCancelled(true);
put(p); put(p);
} }
@ -159,11 +155,10 @@ public class Spam implements Runnable, Listener, CommandExecutor {
Player p = e.getPlayer(); Player p = e.getPlayer();
String n = p.getName(); String n = p.getName();
String s = e.getMessage(); String s = e.getMessage();
if (p.hasPermission("fcp.ignore.spam")) if (p.hasPermission("sp.ignore.spam"))
return; return;
if (CommandWait(n, s)) { if (CommandWait(n, s)) {
put(p); p.sendMessage(plugin.servername + plugin.pluginname + AntiMsg);
p.sendMessage(plugin.servername + "§6[§4命令检测§6] §c" + AntiMsg);
e.setCancelled(true); e.setCancelled(true);
} }
} }
@ -171,8 +166,8 @@ public class Spam implements Runnable, Listener, CommandExecutor {
public void put(Player p) { public void put(Player p) {
if (tc.containsKey(p)) { if (tc.containsKey(p)) {
int t = tc.get(p); int t = tc.get(p);
if (t > plugin.getConfig().getLong("Spam.KickCheck", 3)) { if (t > plugin.getConfig().getLong("Spam.MuteCheck", 3)) {
p.sendMessage(plugin.servername + " §c您由于多次刷屏已被禁言请联系管理解禁"); p.sendMessage(plugin.getfullmsg("Spam.MuteMsg"));
cc.put(p, p); cc.put(p, p);
} else { } else {
tc.put(p, t + 1); tc.put(p, t + 1);

View File

@ -58,6 +58,18 @@ Spam:
SameChatWait: 8 SameChatWait: 8
CommandWait: 2 CommandWait: 2
SameCommandWait: 3 SameCommandWait: 3
KickCheck: 3 MuteCheck: 3
KickReset: 10 MuteReset: 3
TooMuchChat: '请不要短时间内发送大量消息'
TooMuchSameChat: '请不要短时间内发送相同的信息'
TooMuchCommand: '请不要短时间内发送大量命令'
TooMuchSameCommand: '请不要短时间内发送相同的命令'
MuteOn: '&a已允许玩家 %player% &a聊天'
MuteOff: '§c已禁止玩家 %player% §c聊天'
OffLine: '&c玩家不存在或不在线'
NotMute: '&c玩家未被禁言或不存在'
AdminChatOn: '&a服务器已开启管理员聊天'
AdminChatOff: '&c服务器已关闭管理员聊天'
AdminChat: '&c服务器已开启管理员聊天'
MuteMsg: '&c您由于多次刷屏已被禁言请联系管理解禁'

View File

@ -25,9 +25,13 @@ permissions:
children: children:
sp.ignore.highredstone: true sp.ignore.highredstone: true
sp.ignore.nightvision: true sp.ignore.nightvision: true
sp.ignore.spam: true
sp.ignore.nightvision: sp.ignore.nightvision:
description: 允许零亮度挖矿! description: 允许零亮度挖矿!
default: op default: op
sp.ignore.highredstone: sp.ignore.highredstone:
description: 允许忽略高频检测限制! description: 允许忽略高频检测限制!
default: op default: op
sp.ignore.spam:
description: 允许忽略刷屏限制!
default: op