MAC disabled with Tournament Mode
Bridges TM game desc fix
This commit is contained in:
parent
e818662161
commit
395a5d2c08
|
@ -36,9 +36,11 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||||
public class AntiHack extends MiniPlugin
|
public class AntiHack extends MiniPlugin
|
||||||
{
|
{
|
||||||
private static Object _antiHackLock = new Object();
|
private static Object _antiHackLock = new Object();
|
||||||
|
|
||||||
public static AntiHack Instance;
|
public static AntiHack Instance;
|
||||||
|
|
||||||
|
private boolean _enabled = true;
|
||||||
|
|
||||||
public Punish Punish;
|
public Punish Punish;
|
||||||
public Portal Portal;
|
public Portal Portal;
|
||||||
|
|
||||||
|
@ -66,7 +68,7 @@ public class AntiHack extends MiniPlugin
|
||||||
public int FlightTriggerCancel = 2000;
|
public int FlightTriggerCancel = 2000;
|
||||||
|
|
||||||
public ArrayList<Detector> _detectors;
|
public ArrayList<Detector> _detectors;
|
||||||
|
|
||||||
private AntiHackRepository _repository;
|
private AntiHackRepository _repository;
|
||||||
|
|
||||||
protected AntiHack(JavaPlugin plugin, Punish punish, Portal portal)
|
protected AntiHack(JavaPlugin plugin, Punish punish, Portal portal)
|
||||||
|
@ -94,6 +96,9 @@ public class AntiHack extends MiniPlugin
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void playerMove(PlayerMoveEvent event)
|
public void playerMove(PlayerMoveEvent event)
|
||||||
{
|
{
|
||||||
|
if (!_enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
synchronized (_antiHackLock)
|
synchronized (_antiHackLock)
|
||||||
{
|
{
|
||||||
_lastMoveEvent.put(event.getPlayer(), System.currentTimeMillis());
|
_lastMoveEvent.put(event.getPlayer(), System.currentTimeMillis());
|
||||||
|
@ -103,6 +108,9 @@ public class AntiHack extends MiniPlugin
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void playerTeleport(PlayerTeleportEvent event)
|
public void playerTeleport(PlayerTeleportEvent event)
|
||||||
{
|
{
|
||||||
|
if (!_enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
synchronized (_antiHackLock)
|
synchronized (_antiHackLock)
|
||||||
{
|
{
|
||||||
_ignore.put(event.getPlayer(), System.currentTimeMillis() + 2000);
|
_ignore.put(event.getPlayer(), System.currentTimeMillis() + 2000);
|
||||||
|
@ -112,6 +120,9 @@ public class AntiHack extends MiniPlugin
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void playerVelocity(PlayerVelocityEvent event)
|
public void playerVelocity(PlayerVelocityEvent event)
|
||||||
{
|
{
|
||||||
|
if (!_enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
synchronized (_antiHackLock)
|
synchronized (_antiHackLock)
|
||||||
{
|
{
|
||||||
_velocityEvent.add(event.getPlayer());
|
_velocityEvent.add(event.getPlayer());
|
||||||
|
@ -121,22 +132,25 @@ public class AntiHack extends MiniPlugin
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void playerToggleFly(PlayerToggleFlightEvent event)
|
public void playerToggleFly(PlayerToggleFlightEvent event)
|
||||||
{
|
{
|
||||||
|
if (!_enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
synchronized (_antiHackLock)
|
synchronized (_antiHackLock)
|
||||||
{
|
{
|
||||||
if (!_suspicion.containsKey(player))
|
if (!_suspicion.containsKey(player))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//Remove all infractions within last 2 seconds.
|
//Remove all infractions within last 2 seconds.
|
||||||
for (ArrayList<Long> offenseList : _suspicion.get(player).values())
|
for (ArrayList<Long> offenseList : _suspicion.get(player).values())
|
||||||
{
|
{
|
||||||
Iterator<Long> offenseIterator = offenseList.iterator();
|
Iterator<Long> offenseIterator = offenseList.iterator();
|
||||||
|
|
||||||
while (offenseIterator.hasNext())
|
while (offenseIterator.hasNext())
|
||||||
{
|
{
|
||||||
long time = offenseIterator.next();
|
long time = offenseIterator.next();
|
||||||
|
|
||||||
if (!UtilTime.elapsed(time, FlightTriggerCancel))
|
if (!UtilTime.elapsed(time, FlightTriggerCancel))
|
||||||
offenseIterator.remove();
|
offenseIterator.remove();
|
||||||
}
|
}
|
||||||
|
@ -147,12 +161,18 @@ public class AntiHack extends MiniPlugin
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void playerQuit(PlayerQuitEvent event)
|
public void playerQuit(PlayerQuitEvent event)
|
||||||
{
|
{
|
||||||
|
if (!_enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
ResetAll(event.getPlayer());
|
ResetAll(event.getPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void startIgnore(PlayerMoveEvent event)
|
public void startIgnore(PlayerMoveEvent event)
|
||||||
{
|
{
|
||||||
|
if (!_enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
synchronized (_antiHackLock)
|
synchronized (_antiHackLock)
|
||||||
|
@ -161,12 +181,12 @@ public class AntiHack extends MiniPlugin
|
||||||
{
|
{
|
||||||
setIgnore(player, 2000);
|
setIgnore(player, 2000);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Initial Move (or Lag) Ignore
|
//Initial Move (or Lag) Ignore
|
||||||
if (_lastMoveEvent.containsKey(player))
|
if (_lastMoveEvent.containsKey(player))
|
||||||
{
|
{
|
||||||
long timeBetweenPackets = System.currentTimeMillis() - _lastMoveEvent.get(player);
|
long timeBetweenPackets = System.currentTimeMillis() - _lastMoveEvent.get(player);
|
||||||
|
|
||||||
if (timeBetweenPackets > 500)
|
if (timeBetweenPackets > 500)
|
||||||
{
|
{
|
||||||
setIgnore(player, 5000);
|
setIgnore(player, 5000);
|
||||||
|
@ -186,7 +206,7 @@ public class AntiHack extends MiniPlugin
|
||||||
//Already ignoring for a longer period
|
//Already ignoring for a longer period
|
||||||
if (_ignore.containsKey(player) && _ignore.get(player) > System.currentTimeMillis() + time)
|
if (_ignore.containsKey(player) && _ignore.get(player) > System.currentTimeMillis() + time)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//Add Ignore
|
//Add Ignore
|
||||||
_ignore.put(player, System.currentTimeMillis() + time);
|
_ignore.put(player, System.currentTimeMillis() + time);
|
||||||
}
|
}
|
||||||
|
@ -217,13 +237,13 @@ public class AntiHack extends MiniPlugin
|
||||||
//Add Offense
|
//Add Offense
|
||||||
if (!_suspicion.containsKey(player))
|
if (!_suspicion.containsKey(player))
|
||||||
_suspicion.put(player, new HashMap<String, ArrayList<Long>>());
|
_suspicion.put(player, new HashMap<String, ArrayList<Long>>());
|
||||||
|
|
||||||
if (!_suspicion.get(player).containsKey(type))
|
if (!_suspicion.get(player).containsKey(type))
|
||||||
_suspicion.get(player).put(type, new ArrayList<Long>());
|
_suspicion.get(player).put(type, new ArrayList<Long>());
|
||||||
|
|
||||||
_suspicion.get(player).get(type).add(System.currentTimeMillis());
|
_suspicion.get(player).get(type).add(System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Player admin : UtilServer.getPlayers())
|
for (Player admin : UtilServer.getPlayers())
|
||||||
if (admin.isOp() && UtilGear.isMat(admin.getItemInHand(), Material.PAPER))
|
if (admin.isOp() && UtilGear.isMat(admin.getItemInHand(), Material.PAPER))
|
||||||
UtilPlayer.message(admin, C.cRed + C.Bold + player.getName() + " suspected for " + type + ".");
|
UtilPlayer.message(admin, C.cRed + C.Bold + player.getName() + " suspected for " + type + ".");
|
||||||
|
@ -235,6 +255,9 @@ public class AntiHack extends MiniPlugin
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void processOffenses(UpdateEvent event)
|
public void processOffenses(UpdateEvent event)
|
||||||
{
|
{
|
||||||
|
if (!_enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
if (event.getType() != UpdateType.SEC)
|
if (event.getType() != UpdateType.SEC)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -244,18 +267,18 @@ public class AntiHack extends MiniPlugin
|
||||||
{
|
{
|
||||||
if (!_offense.containsKey(player))
|
if (!_offense.containsKey(player))
|
||||||
_offense.put(player, new HashMap<String, ArrayList<Long>>());
|
_offense.put(player, new HashMap<String, ArrayList<Long>>());
|
||||||
|
|
||||||
for (String type : _suspicion.get(player).keySet())
|
for (String type : _suspicion.get(player).keySet())
|
||||||
{
|
{
|
||||||
if (!_offense.get(player).containsKey(type))
|
if (!_offense.get(player).containsKey(type))
|
||||||
_offense.get(player).put(type, new ArrayList<Long>());
|
_offense.get(player).put(type, new ArrayList<Long>());
|
||||||
|
|
||||||
Iterator<Long> offenseIterator = _suspicion.get(player).get(type).iterator();
|
Iterator<Long> offenseIterator = _suspicion.get(player).get(type).iterator();
|
||||||
|
|
||||||
while (offenseIterator.hasNext())
|
while (offenseIterator.hasNext())
|
||||||
{
|
{
|
||||||
long time = offenseIterator.next();
|
long time = offenseIterator.next();
|
||||||
|
|
||||||
//Suspicion turns into Offense
|
//Suspicion turns into Offense
|
||||||
if (UtilTime.elapsed(time, FlightTriggerCancel))
|
if (UtilTime.elapsed(time, FlightTriggerCancel))
|
||||||
{
|
{
|
||||||
|
@ -271,6 +294,9 @@ public class AntiHack extends MiniPlugin
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void generateReports(UpdateEvent event)
|
public void generateReports(UpdateEvent event)
|
||||||
{
|
{
|
||||||
|
if (!_enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
if (event.getType() != UpdateType.SLOW)
|
if (event.getType() != UpdateType.SLOW)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -280,7 +306,7 @@ public class AntiHack extends MiniPlugin
|
||||||
{
|
{
|
||||||
String out = "";
|
String out = "";
|
||||||
int total = 0;
|
int total = 0;
|
||||||
|
|
||||||
for (String type : _offense.get(player).keySet())
|
for (String type : _offense.get(player).keySet())
|
||||||
{
|
{
|
||||||
//Remove Old Offenses
|
//Remove Old Offenses
|
||||||
|
@ -288,27 +314,27 @@ public class AntiHack extends MiniPlugin
|
||||||
while (offenseIterator.hasNext())
|
while (offenseIterator.hasNext())
|
||||||
{
|
{
|
||||||
long time = offenseIterator.next();
|
long time = offenseIterator.next();
|
||||||
|
|
||||||
if (UtilTime.elapsed(time, 300000))
|
if (UtilTime.elapsed(time, 300000))
|
||||||
offenseIterator.remove();
|
offenseIterator.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Count
|
//Count
|
||||||
int count = _offense.get(player).get(type).size();
|
int count = _offense.get(player).get(type).size();
|
||||||
total += count;
|
total += count;
|
||||||
|
|
||||||
out += count + " " + type + ", ";
|
out += count + " " + type + ", ";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (out.length() > 0)
|
if (out.length() > 0)
|
||||||
out = out.substring(0, out.length() - 2);
|
out = out.substring(0, out.length() - 2);
|
||||||
|
|
||||||
String severity = "";
|
String severity = "";
|
||||||
if (total > 24) severity = "Extreme";
|
if (total > 24) severity = "Extreme";
|
||||||
else if (total > 16) severity = "High";
|
else if (total > 16) severity = "High";
|
||||||
else if (total > 8) severity = "Medium";
|
else if (total > 8) severity = "Medium";
|
||||||
else severity = "Low";
|
else severity = "Low";
|
||||||
|
|
||||||
//Send Report
|
//Send Report
|
||||||
sendReport(player, out, severity);
|
sendReport(player, out, severity);
|
||||||
}
|
}
|
||||||
|
@ -321,31 +347,31 @@ public class AntiHack extends MiniPlugin
|
||||||
{
|
{
|
||||||
player.kickPlayer(
|
player.kickPlayer(
|
||||||
C.cGold + "Mineplex Anti-Cheat" + "\n" +
|
C.cGold + "Mineplex Anti-Cheat" + "\n" +
|
||||||
C.cWhite + "You were kicked for suspicious movement." + "\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 + "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 + "If you were not cheating, you will not be banned."
|
||||||
);
|
);
|
||||||
|
|
||||||
UtilServer.broadcast(F.main("MAC", player.getName() + " was kicked for suspicious movement."));
|
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());
|
ServerListPingEvent event = new ServerListPingEvent(null, Bukkit.getServer().getMotd(), Bukkit.getServer().getOnlinePlayers().length, Bukkit.getServer().getMaxPlayers());
|
||||||
GetPluginManager().callEvent(event);
|
GetPluginManager().callEvent(event);
|
||||||
|
|
||||||
String motd = event.getMotd();
|
String motd = event.getMotd();
|
||||||
String game = "N/A";
|
String game = "N/A";
|
||||||
String map = "N/A";
|
String map = "N/A";
|
||||||
|
|
||||||
String[] args = motd.split("\\|");
|
String[] args = motd.split("\\|");
|
||||||
|
|
||||||
if (args.length > 0)
|
if (args.length > 0)
|
||||||
motd = args[0];
|
motd = args[0];
|
||||||
|
|
||||||
if (args.length > 2)
|
if (args.length > 2)
|
||||||
game = args[2];
|
game = args[2];
|
||||||
|
|
||||||
if (args.length > 3)
|
if (args.length > 3)
|
||||||
map = args[3];
|
map = args[3];
|
||||||
|
|
||||||
_repository.saveOffense(player, motd, game, map, report);
|
_repository.saveOffense(player, motd, game, map, report);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -357,30 +383,33 @@ public class AntiHack extends MiniPlugin
|
||||||
_ignore.remove(player);
|
_ignore.remove(player);
|
||||||
_velocityEvent.remove(player);
|
_velocityEvent.remove(player);
|
||||||
_lastMoveEvent.remove(player);
|
_lastMoveEvent.remove(player);
|
||||||
|
|
||||||
|
|
||||||
_offense.remove(player);
|
_offense.remove(player);
|
||||||
_suspicion.remove(player);
|
_suspicion.remove(player);
|
||||||
|
|
||||||
for (Detector detector : _detectors)
|
for (Detector detector : _detectors)
|
||||||
detector.Reset(player);
|
detector.Reset(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void cleanupPlayers(UpdateEvent event)
|
public void cleanupPlayers(UpdateEvent event)
|
||||||
{
|
{
|
||||||
|
if (!_enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
if (event.getType() != UpdateType.SLOW)
|
if (event.getType() != UpdateType.SLOW)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (Iterator<Entry<Player, Long>> playerIterator = _ignore.entrySet().iterator(); playerIterator.hasNext();)
|
for (Iterator<Entry<Player, Long>> playerIterator = _ignore.entrySet().iterator(); playerIterator.hasNext();)
|
||||||
{
|
{
|
||||||
Player player = playerIterator.next().getKey();
|
Player player = playerIterator.next().getKey();
|
||||||
|
|
||||||
if (!player.isOnline() || player.isDead() || !player.isValid())
|
if (!player.isOnline() || player.isDead() || !player.isValid())
|
||||||
{
|
{
|
||||||
playerIterator.remove();
|
playerIterator.remove();
|
||||||
|
|
||||||
_velocityEvent.remove(player);
|
_velocityEvent.remove(player);
|
||||||
_lastMoveEvent.remove(player);
|
_lastMoveEvent.remove(player);
|
||||||
|
|
||||||
|
@ -397,4 +426,10 @@ public class AntiHack extends MiniPlugin
|
||||||
{
|
{
|
||||||
return _offense;
|
return _offense;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetEnabled(boolean b)
|
||||||
|
{
|
||||||
|
_enabled = b;
|
||||||
|
System.out.println("MAC Disabled");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,7 @@ import mineplex.minecraft.game.core.fire.Fire;
|
||||||
import mineplex.core.MiniPlugin;
|
import mineplex.core.MiniPlugin;
|
||||||
import mineplex.core.itemstack.ItemStackFactory;
|
import mineplex.core.itemstack.ItemStackFactory;
|
||||||
import mineplex.core.account.CoreClientManager;
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.antihack.AntiHack;
|
||||||
import mineplex.core.antistack.AntiStack;
|
import mineplex.core.antistack.AntiStack;
|
||||||
import mineplex.core.blockrestore.BlockRestore;
|
import mineplex.core.blockrestore.BlockRestore;
|
||||||
import mineplex.core.blood.Blood;
|
import mineplex.core.blood.Blood;
|
||||||
|
@ -121,7 +122,12 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
||||||
super("Game Manager", plugin);
|
super("Game Manager", plugin);
|
||||||
|
|
||||||
_serverConfig = serverConfig;
|
_serverConfig = serverConfig;
|
||||||
|
|
||||||
|
if (serverConfig.Tournament)
|
||||||
|
{
|
||||||
|
AntiHack.Instance.SetEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
//Modules
|
//Modules
|
||||||
_antistack = antistack;
|
_antistack = antistack;
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ public abstract class Game implements Listener
|
||||||
|
|
||||||
//Game
|
//Game
|
||||||
private GameType _gameType;
|
private GameType _gameType;
|
||||||
private String[] _gameDesc;
|
protected String[] _gameDesc;
|
||||||
|
|
||||||
//Map
|
//Map
|
||||||
private ArrayList<String> _files;
|
private ArrayList<String> _files;
|
||||||
|
|
|
@ -156,7 +156,18 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
|
|
||||||
//Tournament
|
//Tournament
|
||||||
if (Manager.IsTournamentServer())
|
if (Manager.IsTournamentServer())
|
||||||
|
{
|
||||||
QuitOut = false;
|
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();
|
_tournament = Manager.IsTournamentServer();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue