Скачать Better Whitelist — Minecraft Моды — MetaMods

Better Whitelist

Активный

Установок

0

Последнее обновление

2 недели назад

Версии

1.19.4 — 1.21.9
Клиент и сервер
Fabric
Управление

Better Whitelist

Better Whitelist предлагает гибкую систему вайтлиста для вашего сервера Minecraft, которую можно настроить под конкретные нужды.

Требования к установке: Мод должен быть установлен как на сервере, так и на всех клиентах, подключающихся к нему.

Настройка через μScript: Конфигурация вайтлиста осуществляется с помощью языка μScript, но для работы с ним не требуется глубоких знаний программирования. При первом запуске сервера с установленным модом автоматически создается файл конфигурации с подробными инструкциями.

Пример простой конфигурации:

// преобразование мода в упрощенное представление для экономии трафика
simplify = { mod -> { id = mod.id, version = mod.version } }

// все не-серверные моды, присутствующие на сервере
sharedMods = mods::values()
  ::filter({ v -> v.environment != 'server' & v.id != 'java' })
  ::map(simplify)

// проверка наличия у клиента правильных версий всех не-серверных модов сервера
clientMissing = challenge({ arg ->
  arg::filter({ v -> !mods::values()::anyMatch({ m -> v.id == m.id & v.version == m.version }) })
}, sharedMods)
assert(clientMissing::isEmpty(), 'Вам не хватает необходимых модов: ' || clientMissing)

// проверка отсутствия у клиента дополнительных модов, которые требуются на сервере
clientAdditional = challenge({ arg, fn ->
  clientSideMods = mods::values()::filter({ v -> v.environment != 'client' & v.id != 'java' })
  clientSideMods::filter({ v -> !arg::anyMatch({ m -> v.id == m.id & v.version == m.version }) })::map(fn)
}, sharedMods, simplify)
assert(clientAdditional::isEmpty(), 'У вас есть неподдерживаемые моды: ' || clientAdditional)

// фильтрация ресурспаков для блокировки X-Ray пакетов
bannedWords = listOf('xray', 'x-ray', 'cheat')
assert(!challenge({ ->
  resourcePacks::map({ pack -> pack.name || ' ' || pack.displayName || ' ' || pack.description })
})::anyMatch({ v -> bannedWords::anyMatch({ word -> v::toLower()::contains(word) }) }), "Пожалуйста, не читерите, " || user.name)

Доступные возможности в скриптах:

  • Все методы из стандартной библиотеки μScript (включая работу с датой/временем, что позволяет создавать временные вайтлисты, черные списки или обратные отсчеты)
  • resourcePacks (только клиент): список ресурспаков с полями name, displayName и description
  • println('сообщение') (оба): функция для отладки
  • mods (оба): список загруженных модов с теми же полями, что и результат mod()
  • mod('id') (оба): информация о конкретном моде (или null): id, name, description, authors (список строк), contributors (список строк), version, environment (client, server или *), license, contact (как в FMJ), depends (список строк)
  • assert(bool) (сервер): проверка истинности условия с киком игрока при ложном результате (опционально можно добавить сообщение вторым параметром)
  • challenge({->closure}, дополнительные аргументы...) (сервер): отправка замыкания на клиент для выполнения там. Аргументы могут содержать другие замыкания.
  • user (сервер): информация о пользователе, пытающемся войти, а именно его id и name
Участники проекта
JFronny

JFronny

Разработчик

Создан: 14 мар 2023

ID: 12904