More tweaks to nonuke and spam prevention.

This commit is contained in:
StevenLawson 2013-08-13 13:42:43 -04:00
parent b94efb525f
commit b0090a5412
3 changed files with 30 additions and 52 deletions

View file

@ -62,8 +62,7 @@ public class TFM_BlockListener implements Listener
if (out_of_range)
{
playerdata.incrementFreecamDestroyCount();
if (playerdata.getFreecamDestroyCount() > TotalFreedomMod.freecamTriggerCount)
if (playerdata.incrementAndGetFreecamDestroyCount() > TotalFreedomMod.freecamTriggerCount)
{
TFM_Util.bcastMsg(p.getName() + " has been flagged for possible freecam nuking.", ChatColor.RED);
TFM_Util.autoEject(p, "Freecam (extended range) block breaking is not permitted on this server.");
@ -82,8 +81,7 @@ public class TFM_BlockListener implements Listener
}
else
{
playerdata.incrementBlockDestroyCount();
if (playerdata.getBlockDestroyCount() > TotalFreedomMod.nukeMonitorCountBreak)
if (playerdata.incrementAndGetBlockDestroyCount() > TotalFreedomMod.nukeMonitorCountBreak)
{
TFM_Util.bcastMsg(p.getName() + " is breaking blocks too fast!", ChatColor.RED);
TFM_Util.autoEject(p, "You are breaking blocks too fast. Nukers are not permitted on this server.");
@ -138,8 +136,7 @@ public class TFM_BlockListener implements Listener
if (out_of_range)
{
playerdata.incrementFreecamPlaceCount();
if (playerdata.getFreecamPlaceCount() > TotalFreedomMod.freecamTriggerCount)
if (playerdata.incrementAndGetFreecamPlaceCount() > TotalFreedomMod.freecamTriggerCount)
{
TFM_Util.bcastMsg(p.getName() + " has been flagged for possible freecam building.", ChatColor.RED);
TFM_Util.autoEject(p, "Freecam (extended range) block building is not permitted on this server.");
@ -158,8 +155,7 @@ public class TFM_BlockListener implements Listener
}
else
{
playerdata.incrementBlockPlaceCount();
if (playerdata.getBlockPlaceCount() > TotalFreedomMod.nukeMonitorCountPlace)
if (playerdata.incrementAndGetBlockPlaceCount() > TotalFreedomMod.nukeMonitorCountPlace)
{
TFM_Util.bcastMsg(p.getName() + " is placing blocks too fast!", ChatColor.RED);
TFM_Util.autoEject(p, "You are placing blocks too fast.");

View file

@ -30,6 +30,7 @@ import org.bukkit.util.Vector;
public class TFM_PlayerListener implements Listener
{
private static final List<String> BLOCKED_MUTED_CMDS = Arrays.asList(StringUtils.split("say,me,msg,m,tell,r,reply,mail,email", ","));
private static final int MSG_PER_HEARTBEAT = 10;
@EventHandler(priority = EventPriority.HIGH)
public void onPlayerInteract(PlayerInteractEvent event)
@ -395,18 +396,25 @@ public class TFM_PlayerListener implements Listener
String message = event.getMessage().trim();
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p);
playerdata.incrementMsgCount();
// Check for spam
if (playerdata.getMsgCount() > 10)
Long lastRan = TFM_Heartbeat.getLastRan();
if (lastRan == null || lastRan + TotalFreedomMod.HEARTBEAT_RATE * 1000L < System.currentTimeMillis())
{
TFM_Util.bcastMsg(p.getName() + " was automatically kicked for spamming chat.", ChatColor.RED);
TFM_Util.autoEject(p, "Kicked for spamming chat.");
TFM_Log.warning("Heartbeat service timeout - can't check block place/break rates.");
}
else
{
if (playerdata.incrementAndGetMsgCount() > MSG_PER_HEARTBEAT)
{
TFM_Util.bcastMsg(p.getName() + " was automatically kicked for spamming chat.", ChatColor.RED);
TFM_Util.autoEject(p, "Kicked for spamming chat.");
playerdata.resetMsgCount();
playerdata.resetMsgCount();
event.setCancelled(true);
return;
event.setCancelled(true);
return;
}
}
// Check for message repeat
@ -491,10 +499,9 @@ public class TFM_PlayerListener implements Listener
Player p = event.getPlayer();
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p);
playerdata.incrementMsgCount();
playerdata.setLastCommand(command);
if (playerdata.getMsgCount() > 10)
if (playerdata.incrementAndGetMsgCount() > MSG_PER_HEARTBEAT)
{
TFM_Util.bcastMsg(p.getName() + " was automatically kicked for spamming commands.", ChatColor.RED);
TFM_Util.autoEject(p, "Kicked for spamming commands.");

View file

@ -219,24 +219,14 @@ public class TFM_PlayerData
this.msg_count = 0;
}
public void incrementMsgCount()
public int incrementAndGetMsgCount()
{
this.msg_count++;
return this.msg_count++;
}
public int getMsgCount()
public int incrementAndGetBlockDestroyCount()
{
return msg_count;
}
public void incrementBlockDestroyCount()
{
this.block_destroy_total++;
}
public int getBlockDestroyCount()
{
return block_destroy_total;
return this.block_destroy_total++;
}
public void resetBlockDestroyCount()
@ -244,14 +234,9 @@ public class TFM_PlayerData
this.block_destroy_total = 0;
}
public void incrementBlockPlaceCount()
public int incrementAndGetBlockPlaceCount()
{
this.block_place_total++;
}
public int getBlockPlaceCount()
{
return block_place_total;
return this.block_place_total++;
}
public void resetBlockPlaceCount()
@ -259,14 +244,9 @@ public class TFM_PlayerData
this.block_place_total = 0;
}
public void incrementFreecamDestroyCount()
public int incrementAndGetFreecamDestroyCount()
{
this.freecam_destroy_count++;
}
public int getFreecamDestroyCount()
{
return freecam_destroy_count;
return this.freecam_destroy_count++;
}
public void resetFreecamDestroyCount()
@ -274,14 +254,9 @@ public class TFM_PlayerData
this.freecam_destroy_count = 0;
}
public void incrementFreecamPlaceCount()
public int incrementAndGetFreecamPlaceCount()
{
this.freecam_place_count++;
}
public int getFreecamPlaceCount()
{
return freecam_place_count;
return this.freecam_place_count++;
}
public void resetFreecamPlaceCount()