Перейти к содержимому

MekDefender

Мод защиты сервера на NeoForge для Minecraft 1.21.1 + Mekanism. Один проект mekdefender и один JAR обеспечивают:загрузку чанков с учётом владельца для машин с Anchor Upgrade и Dimensional Stabilizer;ограниченную синхронизацию последнего состояния для четырёх проверенно безопасных

NeoForge
Загрузчики
NeoForge
Скачиваний на Modrinth
115
Подписчиков на Modrinth
0
версия
1
Обновлён
27 июля 202627 июл.
Опубликован
в 2026

Коротко о моде

Работает на NeoForge
Для Minecraft 1.21.1
Ставится только на сервер; игрокам ставить не нужно
Последняя версия — 1.2.0 от 27 июля 2026
Нужен Mekanism
Лицензия MIT — бесплатно
Где нужен
В игрене нуженНа сервереобязателен

Ставится только на сервер; игрокам ставить не нужно

Версии игры1.21.1
Описание переведено автоматическиПоказать оригинал (EN)

MekDefender

Мод защиты сервера для NeoForge для Minecraft 1.21.1 + Mekanism. Один проект mekdefender и один JAR предоставляют:

  • загрузку чанков с учётом владельца для машин с Anchor Upgrade и Dimensional Stabilizer;
  • ограниченную синхронизацию последнего состояния для четырёх проверенных безопасных S2C-payload'ов Mekanism.

Политика загрузки чанков

Когда владелец выходит из игры, Mekanism освобождает его тикеты загрузчика немедленно или после настроенного льготного периода. Восстановление при входе ограничено по частоте. Загрузчик без владельца по умолчанию отключён; Dimensional Stabilizer без владельца/офлайн также пропускает расход энергии. MekDefender не владеет контроллером тикетов или форматом сохранения Mekanism. Изменения тикетов по-прежнему используют код Mekanism. Единственный изолированный сохранённый кэш — world/data/mekdefender_loaders.dat (владелец → позиции загрузчиков). Удаление этого мода удаляет его миксины, и Mekanism возвращается к обычному поведению; осиротевший кэш игнорируется.

Граница безопасности синхронизации Mekanism

Объединять можно только эти заменяемые каналы абсолютного состояния:

  • mekanism:update_tile
  • mekanism:network_scale
  • mekanism:fluid_network
  • mekanism:chemical_network QIO, транспортер, GUI/контейнер/инвентарь, конфигурация, безопасность, экипировка, данные игрока, C2S, ванильные, неизвестные payload'ы и смешанные пакеты проходят без изменений. Классификация payload'ов, контракты вызовов Mixin Mekanism, точки инъекции, повторная валидация отслеживания, разрешение живых объектов и поведение fail-open — это фиксированные правила безопасности, а не конфигурация администратора. Байтовые бюджеты обучаются на фактических размерах S2C-пакетов, создаваемых кодировщиком пакетов Minecraft до сжатия, фрейминга и шифрования. Каждый канал ведёт EWMA; initialEstimatedBytes используется только до поступления реальных образцов. Если обученный размер превышает настроенный burst, начисление бюджета ограничивается этим burst, чтобы последнее состояние не могло откладываться бесконечно. Диагностика сохраняет сырую EWMA. Байтовая телеметрия опциональна и никогда не участвует в решении об отмене оригинальной отправки Mekanism. Режим синхронизации по умолчанию — OBSERVE, который записывает статистику без отмены отправок Mekanism. Используйте /mekdefender mode enforce для переопределения в памяти во время выполнения после проверки совместимости и статистики. Уже принятые финальные состояния безопасно сливаются при отключении режима или канала.

Единая конфигурация

Единственный файл конфигурации генерируется для игрового/серверного инстанса по пути:

config/mekdefender-server.toml

Он использует schemaVersion = 2 и содержит:

  • chunkLoading.*: политика владельца, льготный период, бюджет перезагрузки при входе и отладочное логирование;
  • `sync.channels..*`: независимое включение, интервал, дедлайн и оценка байтов;
  • sync.budget.*: бюджеты токенов payload'ов и оценочных байтов на игрока/глобальные;
  • sync.scheduler.*: лимиты очереди, пакетов, исходной работы, эпохи, интервала и просрочки;
  • sync.pressure.*: пороги мягкого/критического давления и восстановления;
  • sync.circuitBreaker.*: ограниченное окно внутренних сбоев и безопасный резервный режим;
  • sync.metrics.*: окна hotspot/таймингов, EWMA фактических закодированных байтов и значения по умолчанию для A/B с реальными клиентами;
  • logging.* и permissions.*: логирование cooldown/переходов и уровни OP для чтения/администрирования. Загрузка и перезагрузка атомарны. Неизвестные секции или ключи, дублирующиеся объявления, неверные типы, значения вне диапазона, неправильная схема и противоречивые значения между полями отклоняют всю перезагрузку с ошибкой с указанием номера строки; предыдущий живой снимок остаётся активным.

Игровые команды

/mekdefender status [compact|verbose]
/mekdefender compatibility
/mekdefender top [seconds] [limit]
/mekdefender channel <tile|scale|fluid|chemical>
/mekdefender player <name>
/mekdefender config <show|validate>
/mekdefender ab <status|start <seconds>|cancel>
/mekdefender mode <off|observe|enforce>
/mekdefender reload
/mekdefender resetstats

Вывод status и channel разделяет исходные запросы/замены/материализацию от единиц постановки в очередь/замены/отправки получателям. Отображаемые проценты сокращения источника и получателя, таким образом, являются отношениями однотипных единиц. configuredMode и runtimeMode в памяти показываются отдельно. Уровни OP для чтения и изменения настраиваются независимо. `/mekdefender ab start ` требует настроенного числа реальных клиентов, не FakePlayer (по умолчанию два). Он прогревает и измеряет равные окна OBSERVE и ENFORCE, затем восстанавливает предыдущий режим выполнения. Отчёт сравнивает фактические закодированные S2C-байты и пакеты до сжатия, средний/p95 MSPT, производный TPS и среднюю/p95 задержку игрока. Трафик во время прогрева исключается; число клиентов ниже настроенного минимума или фаза без безопасного трафика Mekanism помечает сравнение как недействительное. Для 30-минутного окна на фазу (около часа плюс прогревы) держите оба клиента на одном репрезентативном маршруте и запустите:

/mekdefender ab start 1800

Если настроенное число внутренних сбоев планировщика/хуков происходит внутри окна circuit breaker во время enforcement, оптимизатор переключается на настроенный безопасный режим и перестаёт принимать новую работу. Уже принятые финальные состояния всё равно сливаются. Администратор должен явно выполнить команду режима, чтобы сбросить breaker и снова включить enforcement. При устойчивом давлении сокета обновления абсолютного состояния жидкости и химии сохраняют приоритет, а обновления tile и scale остаются ограниченными и подчиняются принципу последней записи. Они возобновляются с новейшим состоянием после восстановления; это защищает сервер, но не является строгой гарантией доставки в реальном времени.

Измеренный эффект оптимизации

Финальный интеграционный JAR был протестирован на Youer 1.21.1-4a57297f с NeoForge 21.1.241, Mekanism 10.7.19.85, миром с живыми буферизованными сетями Mekanism и двумя фиксированными получателями FakePlayer:

sourceRequested=25005
sourceReplaced=24981
payloadMaterialized=24
recipientSent=48
players=24/24
schedulerP95Ms=0.1887
networkIndexRebuilds=7
networkIndexScanned=21
networkIndexHits=72
failOpen=0

Это 99.904% коэффициент объединения источника: 24,981 / 25,005 = 99.904%. С ровно двумя получателями та же контролируемая нагрузка

было отправлено 50 010 несгруппированных сообщений получателям; MekDefender отправил 48 — это тоже снижение на 99,904% для той фиксированной тестовой топологии. Результат демонстрирует путь оптимизации при нагрузке сети с большим числом повторов; это не универсальная гарантия снижения. Реальная экономия в продакшене зависит от частоты обновлений, настроенных интервалов, отслеживания игроков и фактической активности машины и сети. Используйте команду A/B с реальным клиентом выше, чтобы измерить конкретный сервер.

Сборка и тесты

Требуется JDK 21:

./gradlew test build integrationTestJar

Артефакт релиза — build/libs/mekdefender-1.2.0.jar. mekdefender-1.2.0-integration-test.jar — отдельный тестовый вариант с одноразовым миром, и он никогда не включается в релизный JAR. При сборке скачивается mekanism:Mekanism:1.21.1-10.7.19.85 с ModMaven как воспроизводимая базовая версия для компиляции и тестов. Этот артефакт не ограничивает совместимость во время выполнения, и Mekanism не входит в состав MekDefender. Для дополнительного запуска сервера разработки нужна тестируемая сборка Mekanism в run/mods/. Тестовые обвязки, включаемые свойствами:

  • -Dmekdefender.integrationTest=true: вход/выход владельца, энергия и восстановление при входе;
  • -Dmekdefender.syncIntegrationTest=true: стресс-тест планировщика синхронизации Mek с двумя FakePlayer.

Совместимость

  • Minecraft 1.21.1
  • NeoForge 21.1.194 или новее в линейке 1.21.1
  • Сборка Mekanism для Minecraft 1.21.1, сохраняющая необходимые контракты Mixin
  • Java 21 Общий плагин совместимости проверяет только методы, поля и места вызовов, преобразуемые Mixin'ами загрузки чанков и синхронизации. Несвязанные изменения байткода Mekanism остаются совместимыми. Совместимость сообщается по каждой функции: отсутствующий контракт преобразования отключает только эту функцию и оставляет её в режиме сквозного прохождения. Эталонная сборка была протестирована с Mekanism 10.7.19.85, а также прошла дымовой тест в чистом сервере разработки NeoForge 21.1.241, не только в Youer; формальная приёмка в продакшене всё ещё требует релизного JAR и реальных клиентов под репрезентативной нагрузкой.

Частые вопросы

Как установить MekDefender?

Установите NeoForge под свою версию Minecraft, скачайте MekDefender под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть MekDefender?

У MekDefender есть сборки для Minecraft 1.21.1.

Нужен ли MekDefender на сервере?

Ставится только на сервер; игрокам ставить не нужно

Лицензия и источник
MIT Licenseможно свободно использовать и распространять с указанием автора
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее