MAC disabled with Tournament Mode

Bridges TM game desc fix
This commit is contained in:
Chiss 2014-05-03 11:47:15 +10:00
parent e818662161
commit 395a5d2c08
4 changed files with 94 additions and 42 deletions

View File

@ -36,9 +36,11 @@ import org.bukkit.plugin.java.JavaPlugin;
public class AntiHack extends MiniPlugin
{
private static Object _antiHackLock = new Object();
public static AntiHack Instance;
private boolean _enabled = true;
public Punish Punish;
public Portal Portal;
@ -66,7 +68,7 @@ public class AntiHack extends MiniPlugin
public int FlightTriggerCancel = 2000;
public ArrayList<Detector> _detectors;
private AntiHackRepository _repository;
protected AntiHack(JavaPlugin plugin, Punish punish, Portal portal)
@ -94,6 +96,9 @@ public class AntiHack extends MiniPlugin
@EventHandler
public void playerMove(PlayerMoveEvent event)
{
if (!_enabled)
return;
synchronized (_antiHackLock)
{
_lastMoveEvent.put(event.getPlayer(), System.currentTimeMillis());
@ -103,6 +108,9 @@ public class AntiHack extends MiniPlugin
@EventHandler
public void playerTeleport(PlayerTeleportEvent event)
{
if (!_enabled)
return;
synchronized (_antiHackLock)
{
_ignore.put(event.getPlayer(), System.currentTimeMillis() + 2000);
@ -112,6 +120,9 @@ public class AntiHack extends MiniPlugin
@EventHandler
public void playerVelocity(PlayerVelocityEvent event)
{
if (!_enabled)
return;
synchronized (_antiHackLock)
{
_velocityEvent.add(event.getPlayer());
@ -121,22 +132,25 @@ public class AntiHack extends MiniPlugin
@EventHandler
public void playerToggleFly(PlayerToggleFlightEvent event)
{
if (!_enabled)
return;
Player player = event.getPlayer();
synchronized (_antiHackLock)
{
if (!_suspicion.containsKey(player))
return;
//Remove all infractions within last 2 seconds.
for (ArrayList<Long> offenseList : _suspicion.get(player).values())
{
Iterator<Long> offenseIterator = offenseList.iterator();
while (offenseIterator.hasNext())
{
long time = offenseIterator.next();
if (!UtilTime.elapsed(time, FlightTriggerCancel))
offenseIterator.remove();
}
@ -147,12 +161,18 @@ public class AntiHack extends MiniPlugin
@EventHandler
public void playerQuit(PlayerQuitEvent event)
{
if (!_enabled)
return;
ResetAll(event.getPlayer());
}
@EventHandler
public void startIgnore(PlayerMoveEvent event)
{
if (!_enabled)
return;
Player player = event.getPlayer();
synchronized (_antiHackLock)
@ -161,12 +181,12 @@ public class AntiHack extends MiniPlugin
{
setIgnore(player, 2000);
}
//Initial Move (or Lag) Ignore
if (_lastMoveEvent.containsKey(player))
{
long timeBetweenPackets = System.currentTimeMillis() - _lastMoveEvent.get(player);
if (timeBetweenPackets > 500)
{
setIgnore(player, 5000);
@ -186,7 +206,7 @@ public class AntiHack extends MiniPlugin
//Already ignoring for a longer period
if (_ignore.containsKey(player) && _ignore.get(player) > System.currentTimeMillis() + time)
return;
//Add Ignore
_ignore.put(player, System.currentTimeMillis() + time);
}
@ -217,13 +237,13 @@ public class AntiHack extends MiniPlugin
//Add Offense
if (!_suspicion.containsKey(player))
_suspicion.put(player, new HashMap<String, ArrayList<Long>>());
if (!_suspicion.get(player).containsKey(type))
_suspicion.get(player).put(type, new ArrayList<Long>());
_suspicion.get(player).get(type).add(System.currentTimeMillis());
}
for (Player admin : UtilServer.getPlayers())
if (admin.isOp() && UtilGear.isMat(admin.getItemInHand(), Material.PAPER))
UtilPlayer.message(admin, C.cRed + C.Bold + player.getName() + " suspected for " + type + ".");
@ -235,6 +255,9 @@ public class AntiHack extends MiniPlugin
@EventHandler
public void processOffenses(UpdateEvent event)
{
if (!_enabled)
return;
if (event.getType() != UpdateType.SEC)
return;
@ -244,18 +267,18 @@ public class AntiHack extends MiniPlugin
{
if (!_offense.containsKey(player))
_offense.put(player, new HashMap<String, ArrayList<Long>>());
for (String type : _suspicion.get(player).keySet())
{
if (!_offense.get(player).containsKey(type))
_offense.get(player).put(type, new ArrayList<Long>());
Iterator<Long> offenseIterator = _suspicion.get(player).get(type).iterator();
while (offenseIterator.hasNext())
{
long time = offenseIterator.next();
//Suspicion turns into Offense
if (UtilTime.elapsed(time, FlightTriggerCancel))
{
@ -271,6 +294,9 @@ public class AntiHack extends MiniPlugin
@EventHandler
public void generateReports(UpdateEvent event)
{
if (!_enabled)
return;
if (event.getType() != UpdateType.SLOW)
return;
@ -280,7 +306,7 @@ public class AntiHack extends MiniPlugin
{
String out = "";
int total = 0;
for (String type : _offense.get(player).keySet())
{
//Remove Old Offenses
@ -288,27 +314,27 @@ public class AntiHack extends MiniPlugin
while (offenseIterator.hasNext())
{
long time = offenseIterator.next();
if (UtilTime.elapsed(time, 300000))
offenseIterator.remove();
}
//Count
int count = _offense.get(player).get(type).size();
total += count;
out += count + " " + type + ", ";
}
if (out.length() > 0)
out = out.substring(0, out.length() - 2);
String severity = "";
if (total > 24) severity = "Extreme";
else if (total > 16) severity = "High";
else if (total > 8) severity = "Medium";
else severity = "Low";
//Send Report
sendReport(player, out, severity);
}
@ -321,31 +347,31 @@ public class AntiHack extends MiniPlugin
{
player.kickPlayer(
C.cGold + "Mineplex Anti-Cheat" + "\n" +
C.cWhite + "You were kicked for suspicious movement." + "\n" +
C.cWhite + "Cheating will result in a " + C.cRed + "Permanent Ban" + C.cWhite + "." + "\n" +
C.cWhite + "If you were not cheating, you will not be banned."
C.cWhite + "You were kicked for suspicious movement." + "\n" +
C.cWhite + "Cheating will result in a " + C.cRed + "Permanent Ban" + C.cWhite + "." + "\n" +
C.cWhite + "If you were not cheating, you will not be banned."
);
UtilServer.broadcast(F.main("MAC", player.getName() + " was kicked for suspicious movement."));
ServerListPingEvent event = new ServerListPingEvent(null, Bukkit.getServer().getMotd(), Bukkit.getServer().getOnlinePlayers().length, Bukkit.getServer().getMaxPlayers());
GetPluginManager().callEvent(event);
String motd = event.getMotd();
String game = "N/A";
String map = "N/A";
String[] args = motd.split("\\|");
if (args.length > 0)
motd = args[0];
if (args.length > 2)
game = args[2];
if (args.length > 3)
map = args[3];
_repository.saveOffense(player, motd, game, map, report);
}
}
@ -357,30 +383,33 @@ public class AntiHack extends MiniPlugin
_ignore.remove(player);
_velocityEvent.remove(player);
_lastMoveEvent.remove(player);
_offense.remove(player);
_suspicion.remove(player);
for (Detector detector : _detectors)
detector.Reset(player);
}
}
@EventHandler
public void cleanupPlayers(UpdateEvent event)
{
if (!_enabled)
return;
if (event.getType() != UpdateType.SLOW)
return;
for (Iterator<Entry<Player, Long>> playerIterator = _ignore.entrySet().iterator(); playerIterator.hasNext();)
{
Player player = playerIterator.next().getKey();
if (!player.isOnline() || player.isDead() || !player.isValid())
{
playerIterator.remove();
_velocityEvent.remove(player);
_lastMoveEvent.remove(player);
@ -397,4 +426,10 @@ public class AntiHack extends MiniPlugin
{
return _offense;
}
public void SetEnabled(boolean b)
{
_enabled = b;
System.out.println("MAC Disabled");
}
}

View File

@ -50,6 +50,7 @@ import mineplex.minecraft.game.core.fire.Fire;
import mineplex.core.MiniPlugin;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.account.CoreClientManager;
import mineplex.core.antihack.AntiHack;
import mineplex.core.antistack.AntiStack;
import mineplex.core.blockrestore.BlockRestore;
import mineplex.core.blood.Blood;
@ -121,7 +122,12 @@ public class ArcadeManager extends MiniPlugin implements IRelation
super("Game Manager", plugin);
_serverConfig = serverConfig;
if (serverConfig.Tournament)
{
AntiHack.Instance.SetEnabled(false);
}
//Modules
_antistack = antistack;

View File

@ -64,7 +64,7 @@ public abstract class Game implements Listener
//Game
private GameType _gameType;
private String[] _gameDesc;
protected String[] _gameDesc;
//Map
private ArrayList<String> _files;

View File

@ -156,7 +156,18 @@ public class Bridge extends TeamGame implements OreObsfucation
//Tournament
if (Manager.IsTournamentServer())
{
QuitOut = false;
_gameDesc = new String[]
{
"Gather resources and prepare for combat.",
"After 10 minutes, The Bridges will emerge.",
"Special loot is located in the center.",
"Team with the most kills wins!"
};
}
_tournament = Manager.IsTournamentServer();
}