import java.util.*;
public class AntiCheat {
private Set<String> illegalMods;
private Set<String> suspiciousActions;
private Map<Player, Long> resourceCounts;
public AntiCheat() {
illegalMods = new HashSet<String>();
illegalMods.add("X-ray");
illegalMods.add("Fly");
illegalMods.add("KillAura");
illegalMods.add("GodMode");
suspiciousActions = new HashSet<String>();
suspiciousActions.add("Teleport");
suspiciousActions.add("FastBreak");
suspiciousActions.add("NoClip");
resourceCounts = new HashMap<Player, Long>();
}
public void onPlayerJoin(Player player) {
if (!player.isUpdated()) {
player.kick("Ваш клиент не обновлен до последней версии. Пожалуйста, обновите клиент и повторите попытку подключения.");
}
}
public void onPlayerAction(Player player, String action) {
if (suspiciousActions.contains(action)) {
notifyAdmins("Игрок " + player.getName() + " выполнил подозрительное действие: " + action);
}
for (String mod : illegalMods) {
if (player.getMods().contains(mod)) {
player.kick("Вы были отключены от сервера за использование запрещенной модификации: " + mod);
break;
}
}
long currentCount = player.getResourceCount();
if (resourceCounts.containsKey(player)) {
long previousCount = resourceCounts.get(player);
if (currentCount > previousCount * 2) {
player.kick("Вы были отключены от сервера за накрутку ресурсов.");
}
}
resourceCounts.put(player, currentCount);
}
private void notifyAdmins(String message) {
for (Player admin : getAdmins()) {
admin.sendMessage(message);
}
}
public void onPlayerLeave(Player player) {
resourceCounts.remove(player);
}
private List<Player> getAdmins() {
List<Player> admins = new ArrayList<Player>();
for (Player player : getOnlinePlayers()) {
if (player.isOp()) {
admins.add(player);
}
}
return admins;
}
private List<Player> getOnlinePlayers() {
return Bukkit.getOnlinePlayers();
}
}