Pterohost docs

Folia: многопоточный сервер Minecraft и регионный тикинг

Folia - форк Paper с регионной многопоточностью для крупных серверов. Установка, совместимые плагины, отличия от Paper и ограничения.

Кратко: Folia - форк Paper с регионной многопоточностью, который позволяет использовать несколько ядер CPU для обработки игрового мира. Подходит для крупных серверов с разреженным населением. Большинство плагинов несовместимы - перед переходом проверяйте список поддерживаемых.

Folia: многопоточный сервер Minecraft и регионный тикинг

Minecraft традиционно работает в одном потоке - и это главное узкое место любого крупного сервера. Даже самый мощный процессор не спасает, когда 500 игроков генерируют нагрузку, которую один поток просто не способен переварить. Folia, форк Paper от команды PaperMC, решает эту проблему через регионный тикинг: мир делится на независимые зоны, каждая обрабатывается в отдельном потоке. На практике это означает горизонтальное масштабирование - больше ядер CPU реально используются, а не простаивают. В 2026 году Folia стала зрелым решением с активной поддержкой, хотя экосистема плагинов всё ещё отстаёт от Paper.

Pterohost - игровой хостинг с NVMe-накопителями, DDoS-защитой и поддержкой 24/7, который отлично подходит для запуска Folia на мощных конфигурациях с несколькими ядрами. Промокод 4START даёт -20% на первый заказ. Заказать Minecraft хостинг

Что такое регионный тикинг и как работает Folia

Стандартный Minecraft-сервер обрабатывает весь мир в одном главном потоке (main thread). Каждый тик - 50 миллисекунд - сервер последовательно обходит все активные чанки, обновляет сущности, блоки, редстоун, игроков. Когда нагрузка превышает возможности одного потока, TPS (ticks per second) падает ниже 20, и игра начинает тормозить.

Folia разбивает мир на регионы - группы соседних чанков. Каждый регион живёт в собственном потоке:

  • Регионы изолированы: изменения в одном не блокируют другие
  • Количество активных регионов динамично - они создаются и объединяются по мере движения игроков
  • Каждый регион имеет собственный тик-счётчик (region tick)

Это ключевое архитектурное отличие от Paper: в Paper есть многопоточность для отдельных задач (асинхронные операции, чанк-генерация), но игровая логика остаётся однопоточной. В Folia сама игровая логика параллельна.

Thread pool и распределение нагрузки

Folia использует пул потоков (thread pool) вместо выделенных потоков на каждый регион. Размер пула настраивается в конфигурации:

# config/paper-global.yml (Folia-специфичные параметры)
threaded-regions:
  threads: 0   # 0 = автоопределение (рекомендуется)
  # или задать явно, например: threads: 8

При threads: 0 Folia сама определяет количество потоков исходя из доступных ядер. Обычно это N - 2, где N - количество логических ядер (резервирует ядра для I/O и системных задач).

Для каких серверов подходит Folia

Folia - не универсальное решение. Прирост производительности зависит от характера нагрузки.

Folia максимально эффективна когда:

  • Игроков много (200+) и они распределены по большой территории
  • Активно используется несколько независимых локаций: спавн, фармы, города вдали друг от друга
  • Сервер имеет 8+ физических ядер CPU
  • Тип сервера - SMP (survival multiplayer), анархия, большие RPG-миры

Folia даёт минимальный прирост когда:

  • Все игроки кучкуются в одном месте (хаб, мини-игры на маленьких картах)
  • Сервер маломощный (2-4 ядра)
  • Малое количество игроков (до 50)
  • Используется множество несовместимых плагинов, требующих переработки

Для мини-игр, BedWars, SkyWars Paper или Purpur остаются лучшим выбором - там все игроки концентрированы в небольших аренах, регионный тикинг ничего не даёт.

Сравнение ядер сервера

ПараметрPaperPurpurFolia
Многопоточность игровой логикиНетНетДа
Совместимость плагиновПолная (Bukkit/Spigot/Paper)Полная + extrasТолько Folia-compatible
Оптимальное число игроковДо 200До 200200+
Сложность настройкиНизкаяНизкаяСредняя
Зрелость экосистемыВысокаяВысокаяСредняя

Установка Folia

Требования

  • Java 21 (рекомендуется) или Java 17 минимум
  • ОЗУ: минимум 4 ГБ для сервера, рекомендуется 8-16 ГБ
  • CPU: 4+ физических ядра (8+ для полноценного масштабирования)
  • ОС: Linux (рекомендуется Ubuntu 22.04/Debian 12)

Шаг 1: Скачать JAR

Официальные сборки Folia публикуются на GitHub в репозитории PaperMC:

# Проверить актуальную версию на https://github.com/PaperMC/Folia/releases
# Пример для Minecraft 1.21.x
wget https://github.com/PaperMC/Folia/releases/download/1.21.4-build-XX/folia-1.21.4-XX.jar -O folia.jar

Альтернативно через API PaperMC (если Folia включена в официальные builds):

# Через официальный Paper API
curl -o folia.jar "https://api.papermc.io/v2/projects/folia/versions/1.21.4/builds/latest/downloads/folia-1.21.4-latest.jar"

Шаг 2: Создать структуру директории

mkdir -p /opt/minecraft/folia
cd /opt/minecraft/folia
mv ~/folia.jar .

Шаг 3: Скрипт запуска

Создайте start.sh:

#!/bin/bash
java \
  -Xms4G \
  -Xmx8G \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC \
  -XX:+AlwaysPreTouch \
  -XX:G1NewSizePercent=30 \
  -XX:G1MaxNewSizePercent=40 \
  -XX:G1HeapRegionSize=8M \
  -XX:G1ReservePercent=20 \
  -XX:G1HeapWastePercent=5 \
  -XX:G1MixedGCCountTarget=4 \
  -XX:InitiatingHeapOccupancyPercent=15 \
  -XX:G1MixedGCLiveThresholdPercent=90 \
  -XX:G1RSetUpdatingPauseTimePercent=5 \
  -XX:SurvivorRatio=32 \
  -XX:+PerfDisableSharedMem \
  -XX:MaxTenuringThreshold=1 \
  -Dusing.aikars.flags=https://mcflags.emc.gs \
  -jar folia.jar nogui
chmod +x start.sh

Шаг 4: Первый запуск и EULA

./start.sh
# Сервер создаст eula.txt и остановится
sed -i 's/eula=false/eula=true/' eula.txt
./start.sh
# Теперь сервер запустится полностью

Ключевые отличия конфигурации от Paper

Folia наследует конфигурацию Paper, но добавляет ряд специфичных параметров.

config/paper-global.yml

threaded-regions:
  threads: 0          # автоопределение
  tick-region-timeout: 120  # таймаут в секундах

server.properties - важные параметры

# Для Folia рекомендуется увеличить view-distance с осторожностью
view-distance=8
simulation-distance=6
# Меньшие значения = меньше нагрузка на каждый регион

Мониторинг регионов

Folia добавляет команды для мониторинга состояния регионов:

/regionstats         - общая статистика по регионам
/tps                 - TPS (выводится per-region)

Обратите внимание: /tps в Folia показывает TPS отдельно для каждого региона, а не одно глобальное значение. Это важно при диагностике лагов.

Совместимость плагинов: главная проблема Folia

Это самое критичное ограничение. Большинство плагинов для Paper используют Bukkit API с предположением об однопоточности - они напрямую обращаются к игровым объектам из асинхронных задач или используют BukkitRunnable способами, несовместимыми с Folia.

Почему плагины ломаются

В Folia нет “главного потока” в привычном понимании. Каждый регион имеет свой поток. Если плагин пытается изменить блок или сущность из неправильного потока - это вызовет ошибку или непредсказуемое поведение.

Folia предоставляет новый API для планирования задач:

// Старый способ (Paper) - НЕ работает в Folia для regional задач:
Bukkit.getScheduler().runTask(plugin, runnable);

// Новый способ (Folia):
entity.getScheduler().run(plugin, task -> {
    // код выполняется в потоке региона сущности
}, null);

// Для глобальных задач:
Bukkit.getGlobalRegionScheduler().run(plugin, task -> {
    // глобальный поток
});

Плагины с поддержкой Folia (актуально на 2026)

ПлагинСтатусПримечание
LuckPermsПолная поддержкаОфициально совместим
sparkПолная поддержкаПрофайлер, рекомендуется
EssentialsXЧастичнаяТребует актуальную версию dev-build
CoreProtectПоддерживаетсяЛогирование блоков работает
VaultЧастичнаяЭкономика работает, некоторые функции ограничены
WorldGuardЭкспериментальнаяЗащита регионов, но не все фичи
GriefPreventionВ разработкеПроверяйте актуальность
PlaceholderAPIПоддерживаетсяБольшинство плейсхолдеров работает

Не работают без модификации: большинство плагинов для мини-игр, сложные плагины экономики, многие NPC-плагины (Citizens в стандартной версии), устаревшие плагины без обновлений с 2023 года.

Как проверить совместимость плагина

  1. Открыть GitHub/SpigotMC страницу плагина
  2. Поискать по тегу folia или упоминание “Folia support” в описании
  3. Проверить issues/changelog на слова “folia”, “threaded”, “region”
  4. Тестировать на staging-сервере перед продакшном

Ограничения Folia

Помимо совместимости плагинов, у Folia есть технические ограничения, которые нужно знать:

Нет гарантии порядка тиков между регионами. Если игрок перемещается между регионами, возможны edge-case баги, которых нет в Paper. Команда PaperMC активно фиксит подобные проблемы.

Редстоун на границах регионов может работать непредсказуемо. Сложные редстоун-машины, пересекающие границу двух регионов, могут вести себя иначе, чем в Paper.

Телепортация требует синхронизации между регионами - это немного сложнее, чем в Paper, хотя и прозрачно для игрока в большинстве случаев.

Отладка сложнее. Многопоточные баги труднее воспроизвести и диагностировать. Используйте spark для профилирования.

Обновления медленнее. Folia обновляется на новые версии Minecraft с задержкой по сравнению с Paper, потому что требует более сложной адаптации ядра.

Оптимизация Folia под нагрузку

Настройка thread pool

Для сервера с 16 ядрами разумная конфигурация:

# config/paper-global.yml
threaded-regions:
  threads: 12   # оставляем 4 ядра на I/O, систему, JVM

Размер регионов

Folia автоматически управляет размером регионов, но вы можете влиять косвенно через simulation-distance в server.properties. Меньший simulation distance = меньше чанков в регионе = легче параллелизировать.

Рекомендуемые JVM-флаги для Folia

Флаги Aikar (из скрипта выше) оптимальны. Дополнительно для серверов с большим количеством регионов:

-XX:+UseNUMA                    # если сервер на NUMA-архитектуре
-XX:ConcGCThreads=4             # потоки для конкурентной GC

Мониторинг производительности

Установите spark - единственный профайлер с полноценной поддержкой Folia:

# Скачать spark с https://spark.lucko.me/
# Установить в папку plugins/
# В игре:
/spark profiler start --timeout 60
/spark profiler info

Spark покажет нагрузку per-region, что позволяет найти проблемный регион.

Переход с Paper на Folia

Если у вас уже работает Paper-сервер, переход возможен с сохранением данных.

Пошаговый процесс

# 1. Сделать полный бэкап
cp -r /opt/minecraft/paper /opt/minecraft/paper-backup-$(date +%Y%m%d)

# 2. Скачать Folia JAR
wget -O /opt/minecraft/folia/folia.jar <URL>

# 3. Скопировать данные (мир, игроки, config)
cp -r /opt/minecraft/paper/world /opt/minecraft/folia/
cp -r /opt/minecraft/paper/world_nether /opt/minecraft/folia/
cp -r /opt/minecraft/paper/world_the_end /opt/minecraft/folia/
cp /opt/minecraft/paper/server.properties /opt/minecraft/folia/

# 4. Убрать Paper-специфичные плагины, оставить только Folia-compatible
# 5. Запустить и проверить логи на ошибки

Что проверить после запуска

  • Логи на java.lang.IllegalStateException - признак несовместимого плагина
  • TPS через /tps в первые минуты под нагрузкой
  • Редстоун-машины вблизи границ регионов
  • Работу телепортации и варпов

Связанные материалы

Если вы оптимизируете сервер, ознакомьтесь с руководством по оптимизации Minecraft-сервера - там разобраны флаги JVM, настройки Paper и работа с GC. Для понимания различий между ядрами (Paper, Purpur, Spigot) читайте статью какое ядро выбрать для сервера Minecraft. Если планируете запускать несколько серверов с Folia за прокси, изучите настройку Velocity - он полностью совместим с Folia-серверами.

Заключение

Folia - серьёзный инструмент для владельцев крупных серверов, которые упёрлись в потолок производительности Paper. Регионный тикинг реально работает и даёт ощутимый прирост TPS на серверах с разреженным населением и мощным многоядерным процессором. Главная цена - сломанная экосистема плагинов: переход с Paper потребует аудита и замены многих компонентов. В 2026 году совместимость улучшилась, но всё ещё далека от Paper. Если у вас небольшой сервер или вы зависите от специфичных плагинов - оставайтесь на Paper или Purpur. Если сервер большой, нагрузка реальная, и вы готовы к техническому погружению - Folia стоит попробовать на staging-среде, оценить совместимость, и только потом переводить прод.

Pterohost - хостинг Minecraft-серверов с мощными процессорами, поддержкой Folia и круглосуточной технической помощью. Промокод 4START даёт -20% на первый заказ. Заказать Minecraft хостинг