Minecraft Руководство

Как выборочно удалить чанки на копии мира Minecraft Java: утилита MCA Selector и очистка карты

Выборочное удаление чанков на сервере Minecraft Java: использование MCA Selector, фильтрация по InhabitedTime, защита баз игроков по координатам и синхронная очистка каталогов region, poi и entities.

Как выборочно удалить чанки на копии мира Minecraft Java: утилита MCA Selector и очистка карты

Миры выделенных серверов Minecraft Java в процессе длительной эксплуатации неизбежно сталкиваются с проблемой неконтролируемого разрастания дискового пространства. Путешествия игроков на элитрах, поиск редких биомов или структур генерируют тысячи квадратных километров местности, большинство из которых посещаются ровно один раз. Разросшиеся файлы регионов (.mca) замедляют создание резервных копий, увеличивают время синхронизации и создают избыточную нагрузку на дисковую подсистему хоста.

Прямое удаление случайных файлов из каталога region/ недопустимо: такой подход гарантированно приведёт к дырам в ландшафте, обнулению построек игроков и рассинхронизации структур. Безопасная оптимизация требует выборочной обрезки чанков на основе времени пребывания игроков (InhabitedTime) и защищённых координат с помощью специализированных инструментов, таких как MCA Selector.

Подготовка оффлайн-копии мира и замер дискового пространства#

Любые манипуляции с бинарной структурой регионов Anvil категорически запрещено выполнять на работающем сервере. Серверный процесс Minecraft держит открытые файловые дескрипторы для файлов регионов и периодически сбрасывает грязные страницы памяти на диск. Попытка модифицировать файлы в этот момент приведёт к повреждению структуры заголовков чанков.

Перед началом процедуры сервер останавливается через системный менеджер, фиксируется текущий объём каталога мира с помощью утилиты du, а затем создаётся полная резервная копия в изолированную директорию:

bash
systemctl stop minecraft-paper.service
du -sh /srv/minecraft/paper/world
rsync -aAXv --delete /srv/minecraft/paper/world/ /srv/minecraft/backworlds/world-pre-trim/

Создание точной копии через rsync с сохранением расширенных атрибутов (-aAXv) гарантирует возможность мгновенного отката в случае непредвиденного сбоя фильтра.

Критерии выборки чанков: InhabitedTime и исключение координат#

Формат сохранения чанков Minecraft сохраняет в NBT-структуре параметр InhabitedTime — совокупное игровое время (в тиках), проведённое всеми игроками внутри данного чанка. Чанки, через которые игрок просто пролетел со скоростью элитр, имеют значение InhabitedTime менее 1200–2400 тиков (1–2 минуты), в то время как базы, фермы и склады накапливают десятки часов присутствия.

Однако полагаться исключительно на таймер рискованно: недавно построенный отдалённый форпост мог быть посещён лишь на несколько секунд. Поэтому в MCA Selector применяется составное логическое правило: удаляются только чанки с низким InhabitedTime, расположенные за пределами радиуса защиты спавна и известных баз игроков.

Утилиту MCA Selector можно запускать в пакетном CLI-режиме на сервере либо локально через графический интерфейс:

bash
java -jar /opt/mcaselector/mcaselector-2.4.jar \
  --mode delete \
  --world /srv/minecraft/paper/world \
  --query "InhabitedTime < 120 and (x < -1024 or x > 1024 or z < -1024 or z > 1024)"

В приведённом выражении чанки в радиусе 1024 блоков от нулевых координат (мирового спавна) полностью исключены из удаления независимо от времени активности, что защищает центральную инфраструктуру сервера.

Синхронная очистка каталогов region, poi и entities#

Распространённая ошибка администраторов — удаление регионов только в корневой папке world/region/. Начиная с версии Minecraft 1.14 и 1.17, структуры данных разделены на три независимых дерева каталогов:

  1. region/ — блоки, тайлы и высота ландшафта;
  2. poi/ (Points of Interest) — точки привязки профессий жителей, кровати, колокола и порталы Нижнего мира;
  3. entities/ — сущности, мобы, лодки и рамки предметов.

Если удалить чанк из region/, но оставить устаревшие записи в poi/ или entities/, при повторной генерации местности сервером возникнут критические коллизии: жители не смогут привязаться к рабочим местам, а сущности продублируются или вызовут краш тика.

Корректный инструмент (включая MCA Selector) очищает все три каталога синхронно. Проверить согласованность количества файлов регионов в каталогах измерений можно стандартными средствами командной строки:

bash
ls -1 /srv/minecraft/paper/world/region | wc -l
ls -1 /srv/minecraft/paper/world/poi | wc -l
ls -1 /srv/minecraft/paper/world/entities | wc -l

Количество файлов в poi и entities может быть меньше или равно количеству файлов в region, так как регионы без сущностей или точек интереса не создаются на диске.

Запуск сервера, аудит прав доступа и валидация местности#

После завершения обрезки необходимо восстановить корректные права владения файлами. Если утилита запускалась под пользователем root, созданные или обновлённые индексные файлы регионов могут оказаться недоступны для чтения демону minecraft.

Выполняется рекурсивный chown, повторный замер размера каталога мира и запуск службы:

bash
chown -R minecraft:minecraft /srv/minecraft/paper/world
du -sh /srv/minecraft/paper/world
systemctl start minecraft-paper.service

После старта сервера администратор должен войти в игру и проинспектировать пограничные зоны: стыки между старыми сохранёнными чанками и удалёнными областями должны генерироваться бесшовно благодаря встроенной системе блендинга биомов (Biome Blending), появившейся в 1.18.

Для поддержания стабильной производительности и минимизации накладных расходов на дисковые операции рекомендуется разворачивать сервер на готовой игровой платформе, где оптимизация ввода-вывода и управление хранилищем автоматизированы.

Источники#