Руководства / Серверы и производительность
Белый список, бан и оператор: серверные команды, которые ведут себя не так, как вы ожидаете
Включение белого списка не выкидывает уже подключённых игроков, /ban бесполезен без причины, а уровень оператора значит больше, чем сам список операторов. Детали, которые бьют по владельцам серверов.
Административные команды выглядят просто и в основном таковыми и являются. Проблемы возникают из-за трёх особенностей, которые не очевидны из синтаксиса.
Белый список не удаляет тех, кто уже зашёл, — если вы не скажете ему это сделать
/whitelist on начинает применять список к новым входам. Выкинет ли уже подключённых игроков, решает одна строка в server.properties:
enforce-whitelist=true
По умолчанию она равна false, и пока это так, игроки не из списка остаются подключёнными как через /whitelist on, так и через /whitelist reload. Установите true, и on, reload и remove будут выкидывать всех подключённых игроков, которых нет в списке. Включить белый список, не включив принудительное применение, и уйти — классическая ошибка.
Ещё две детали:
/whitelist add <name>на сервере в режиме online разрешает имя через API Mojang. На сервере в режиме offline он вместо этого добавляет в белый список offline-UUID имени, так что вручную правитьwhitelist.jsonне нужно.- Операторы обходят белый список по умолчанию — поэтому на вашем собственном аккаунте белый список никогда не проверить. Тестируйте со второго аккаунта.
/ban хочет причину, а /ban-ip — это другой список
/ban <player> [reason]
/ban-ip <address|player> [reason]
Причина необязательна, и опускать её — ошибка: именно её видит забаненный игрок, и именно её будущий вы прочитаете в /banlist, пытаясь вспомнить, за что. Без неё запись просто гласит «Banned by an operator».
/ban и /ban-ip пишут в разные файлы (banned-players.json, banned-ips.json). Помилование одного не очищает другой — вот обычная причина того, что «помилованный» игрок всё ещё не может подключиться. Используйте и /pardon, и /pardon-ip.
Уровни оператора, а не только список операторов
/op по умолчанию выдаёт уровень 4 — полный доступ, включая /stop. Эти четыре уровня реальны и настраиваются в server.properties через op-permission-level:
| Уровень | Что даёт |
|---|---|
| 1 | Обход защиты точки возрождения |
| 2 | Большинство читерских команд, командные блоки |
| 3 | Управление игроками — kick, ban, op |
| 4 | Всё, включая /stop |
Модераторам, которым нужны /kick и /ban, нужен уровень 3, а не 4. Выдача уровня 4 всем, кто помогает модерировать, — это то, как серверы стираются со взломанного аккаунта.
function-permission-level — отдельная настройка, она управляет тем, какие функции датапаков могут выполняться; оставить её на 2, когда уровень оператора равен 4, — частая причина «моя функция ничего не делает».
Команды списков
/banlist players, /banlist ips и просто /banlist существуют, и при запуске из терминала сервера они выводят в консоль, а не в чат. /whitelist list показывает только имена, без UUID — читайте whitelist.json, когда нужно проверить личность.
Соберите любую из них с аргументами в правильном порядке в конструкторе серверных админ-команд, который охватывает ban, ban-ip, pardon, kick, op, deop и whitelist в одной форме.