LinearReader
Сделай так, чтобы миры Minecraft занимали меньше места.
- Загрузчики
- FabricNeoForgeForge
- Скачиваний на Modrinth
- 3,8 тыс.
- Подписчиков на Modrinth
- 18
- версий
- 86
- Обновлён
- 17 сентября 202617 сент.
- Опубликован
- в 2026
Коротко о моде
Ставится только на сервер; игрокам ставить не нужно
LinearReader
LinearReader — это серверный мод для Minecraft, который уменьшает размер вашего мира без негативного влияния на геймплей. В основном это достигается за счёт использования Linear Region File Format от Xymb вместо формата файлов Anvil из Minecraft, а также за счёт применения Zstd для сжатия вместо алгоритма Zlib, используемого в ванильном Minecraft.
Как уменьшается размер мира?
Linear Region File Format от Xymb уже является большим шагом вперёд по сравнению с форматом региональных файлов ванильного Minecraft и значительно уменьшает размеры миров. Ещё одно необходимое улучшение — это алгоритм сжатия и уровень сжатия. Высокие уровни сжатия требуют больше ресурсов и времени, что не идеально для активного сервера, а низкие уровни, очевидно, экономят меньше места. Поэтому возник вопрос: как LinearReader может обеспечить скорость низкоуровневого сжатия и экономию места высокоуровневого? LinearReader решает это, разделяя работу на два отдельных этапа. Живые записи быстро сжимаются с низкими уровнями Zstd, оставляя процессору достаточно ресурсов для работы Minecraft. Затем, когда сервер простаивает, LinearReader безопасно пересжимает региональные файлы с гораздо более глубоким сжатием.
Бенчмарки сжатия
Чтобы показать выигрыш LinearReader в объёме хранилища и объяснить, почему высокий уровень сжатия не используется во время живых записей, я провёл бенчмарки для формата Anvil с Zlib на стандартном уровне сжатия Java (который использует ванильный Minecraft), Zstd уровня 4 (который LinearReader обычно использует для живых записей) и Zstd уровня 22 (который LinearReader использует для пересжатия). Подробнее о бенчмарках см. в директории benchmarks/.
| Датасет | Формат | Исходный | Сжатый | Коэффициент сжатия | Скорость сжатия | Скорость распаковки |
|---|---|---|---|---|---|---|
| Overworld | Anvil/Zlib 6 | 9.51 GB | 8.38 GB | 5.44x | 75.7 MB/s | 1271.3 MB/s |
| Overworld | LinearReader (Zstd 4) | 9.51 GB | 6.21 GB | 7.39x | 585.5 MB/s | 1412.8 MB/s |
| Overworld | LinearReader (Zstd 22) | 9.51 GB | 4.28 GB | 10.71x | 4.4 MB/s | 1589.2 MB/s |
| End (в основном пустота) | Anvil/Zlib 6 | 2.33 GB | 2.16 GB | 3.66x | 188.4 MB/s | 1576.4 MB/s |
| End (в основном пустота) | LinearReader (Zstd 4) | 2.33 GB | 244 MB | 33.20x | 1811.1 MB/s | 4062.7 MB/s |
| End (в основном пустота) | LinearReader (Zstd 22) | 2.33 Gb | 141 MB | 57.50x | 10.1 MB/s | 6166.9 MB/s |
| Tectonic + Terralith | Anvil/Zlib 6 | 2.89 GB | 2.56 GB | 5.97x | 84.1 MB/s | 1338.1 MB/s |
| Tectonic + Terralith | LinearReader (Zstd 4) | 2.89 GB | 1.80 GB | 8.49x | 735.8 MB/s | 1742.8 MB/s |
| Tectonic + Terralith | LinearReader (Zstd 22) | 2.89 GB | 1.24 GB | 12.37x | 4.4 MB/s | 1787.3 MB/s |
Как показано в таблице выше, LinearReader + Zstd достигает лучшего сжатия, сохраняя при этом высокую скорость сжатия и распаковки во время обычного геймплея (Zstd 22 используется для пересжатия, которое не активно во время обычного геймплея).
Другие возможности
LinearReader не просто заменяет формат файлов и алгоритм сжатия Minecraft, он также включает множество других функций, таких как:
- Система резервного копирования: LinearReader может автоматически создавать резервные копии региональных файлов, которые можно использовать при необходимости.
- Система кэширования: настраиваемое количество недавно использованных региональных файлов остаётся в кэше в памяти, что снижает количество чтений с диска и распаковок.
- Система очистки чанков: LinearReader может искать пустые, бесполезные чанки, которые можно безопасно удалить. Действуют строгие правила, гарантирующие, что удаляются только действительно бесполезные чанки.
- Адаптивная политика во время работы: LinearReader может настраивать определённые параметры, чтобы игра работала плавно.
Создан с учётом серверов
Будучи серверным модом, LinearReader старается быть максимально полезным и информативным для администраторов серверов. Есть команды, такие как bench и health, для просмотра бенчмарков и внутренних метрик, а также файл конфигурации, позволяющий настроить параметры под конкретный сервер. (LinearReader также работает в одиночной игре, и игроки в одиночной игре имеют доступ ко всем тем же функциям, что и администраторы серверов.)
Модовые серверы
LinearReader стремится быть совместимым с как можно большим количеством модов. Большинство модов будут работать как есть, но любые моды, которые изменяют часть системы хранения Minecraft или требуют чтения файлов с диска, скорее всего, работать не будут. Моды, которые читают данные чанков из оперативной памяти, скорее всего, будут работать. Список совместимых/несовместимых модов можно найти в вики.
Если вы найдёте мод, несовместимый с LinearReader (и он ещё не указан как несовместимый), пожалуйста, создайте issue в моём репозитории на GitHub.
Установка и удаление
Для установки просто скачайте LinearReader с CurseForge или Modrinth, поместите .jar-файл в папку mods — и всё готово. Дальше LinearReader всё сделает сам. Для удаления выполните команду /linearreader export-mca start, чтобы конвертировать .linear-файлы вашего мира обратно в .mca, замените ваши .linear-файлы регионов свежими .mca-файлами и удалите LinearReader.
Безопасность данных
Перед установкой LinearReader рекомендуется создать резервную копию мира, так как LinearReader сильно меняет внутренний движок хранения Minecraft, и любые баги, связанные с хранением, могут повредить ваш мир. Поэтому, пожалуйста, делайте резервные копии вашего мира.
Где узнать больше
Этот README не содержит полного и подробного описания всех возможностей LinearReader. Я настоятельно рекомендую прочитать вики, чтобы полностью понять всё, что может предложить LinearReader. Кроме того, вы можете задать вопрос в репозитории на GitHub, оставив issue. Также можно воспользоваться разделом комментариев на CurseForge.
Статус разработки
LinearReader 1.3.0, вероятно, станет последним крупным обновлением. Я больше не планирую добавлять много нового в LinearReader. Однако в ближайшем будущем я планирую поддерживать LinearReader в актуальном состоянии для последних релизов Minecraft. Я по-прежнему буду стараться отвечать на issues на GitHub, и при необходимости могут выходить хотфиксы или небольшие обновления, но моё намерение — прекратить серьёзную разработку LinearReader (с моей стороны) после выпуска версии 1.3.0.
Примечание об ИИ
Для написания кода этого мода использовался ИИ. Всё тестируется вручную перед новым релизом. Если вы столкнётесь с какими-либо проблемами, пожалуйста, сообщите о них на GitHub, и я постараюсь решить их как можно быстрее. Для получения дополнительной информации об использовании ИИ в этом моде обратитесь к AI_USAGE.md.
Частые вопросы
Как установить LinearReader?
Установите Fabric под свою версию Minecraft, скачайте LinearReader под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть LinearReader?
У LinearReader есть сборки для Minecraft 1.20–26.3.
Нужен ли LinearReader на сервере?
Ставится только на сервер; игрокам ставить не нужно