Created
November 10, 2021 00:16
-
-
Save Kamillaova/a3b54d4a26317d4801ee6c3097d79631 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package kamillaova.botscommand; | |
import net.md_5.bungee.api.CommandSender; | |
import net.md_5.bungee.api.plugin.Plugin; | |
import net.md_5.bungee.api.scheduler.ScheduledTask; | |
import java.util.concurrent.TimeUnit; | |
@SuppressWarnings("unused") // Убрать предупреждение Class 'BotsProtection' is never used | |
public class BotsProtection extends Plugin { | |
private int lastJoinedPlayers = 0; // Сколько зашло игроков в пред. проверке (Строка 31) | |
private int joinedPlayers = 0; // Сколько игроков зашло за 30 сек (Строка 30) | |
private ScheduledTask checkTask; // Скорее всего не нужно, но пусть будет. Для остановки таска проверки при отключении плагина (Чек — | |
// строку 56 | |
private boolean isProtectionOn = false; // Статус защиты | |
// Проверка - защита от ботов (bf protection) | |
@Override | |
public void onEnable() { // Запускается при включении сервера | |
CommandSender console = getProxy().getConsole(); // Получает отправителя команд "КОНСОЛЬ", можно заинлайнить, делаю так чтоб — | |
// строки 37 и 44 были короче | |
checkTask = getProxy().getScheduler() | |
.schedule(this, () -> { // Таск который запускается каждые 30 (30L, SECONDS) секунд, в нем собственно и идут все проверки. | |
joinedPlayers = getProxy().getOnlineCount() - lastJoinedPlayers; // Сколько игроков зашло с пред. проверки | |
lastJoinedPlayers = getProxy().getOnlineCount(); // Установка текущ кол ва игроков для след. проверки | |
if (joinedPlayers > 70) { // Если кол во зашедших игроков больше 70 - то | |
if (!isProtectionOn) { // Проверить включеня ли щас проверка, если нет - то | |
isProtectionOn = true; // Устанавливается статус что проверка включена | |
getProxy().getPluginManager() | |
.dispatchCommand(console, "bf protection on"); // Отправляет команду от имени консоли | |
getProxy().getScheduler() | |
.schedule(this, () -> { // Запускает таск на отключение проверки через 5 минут (5L, MINUTES) | |
if (joinedPlayers < 70) { // Если кол во зашедших игроков было меньше 70 - отключить проверку | |
isProtectionOn = false; // Устанавливается статус проверки - отключена | |
getProxy().getPluginManager() | |
.dispatchCommand(console, "bf protection off"); // Отправляет команду от имени консоли | |
} // Если больше - ничего не делать, если что, след такой же таск запустится через 30 секунд | |
}, 5L, TimeUnit.MINUTES); // 5L (задержка) через сколько TimeUnit (Тут - минуты) он запустится | |
} // Если проверка включена - ниччего не делать | |
} // Если кол во зашедших игроков меньше 70 - ничего не делать | |
}, 0L, 30L, TimeUnit.SECONDS); // 30L (период) раз в сколько TimeUnit (Тут - секунды) таск будет запускаться | |
} | |
// Если что, L на конце числа означает то, что тип числа - long (по умолчанию - int) | |
@Override | |
public void onDisable() { | |
checkTask.cancel(); // Отключение таска на проверку, не знаю зачем. | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment