Как установить Chunky для предгенерации мира

1. Подготовка окружения на proxify.cloud

  1. Войдите в панель proxify.cloud (Proxmox VE).

  2. Выберите ваш выделенный сервер (Node) в левом дереве.

  3. Откройте вкладку Console (Консоль) или подключитесь по SSH к Ubuntu-машине:

    ssh root@<IP-вашего-сервера>
    

    Если используете контейнер (LXC) для сервера Minecraft — заходите в консоль именно этого контейнера через панель proxify.cloud (кнопка Console → Enter).

  4. Обновите пакеты и установите необходимые утилиты:

    apt update && apt upgrade -y
    apt install -y curl wget unzip screen htop
    
  5. Убедитесь, что Java 17 или 21 установлена (зависит от версии ядра сервера):

    java -version
    # Если отсутствует:
    apt install -y openjdk-21-jre-headless
    

2. Определение типа сервера и пути к файлам

На выделенном сервере proxify.cloud чаще всего используются следующие структуры:

  • Bare-metal / Systemd сервис: /opt/minecraft/ или /home/minecraft/
  • Docker-контейнер: данные смонтированы в /var/lib/docker/volumes/<volume_name>/_data
  • LXC-контейнер (внутри Proxmox): /var/lib/lxc/<CTID>/rootfs/opt/minecraft/

Проверьте, где лежит server.jar / paper.jar / fabric-server-launch.jar:

find / -name "*.jar" -path "*minecraft*" -type f 2>/dev/null | head -20

Пример типичного пути: /opt/minecraft/server.jar.

Важно: Все дальнейшие команды выполняются от пользователя, от имени которого запускается сервер (обычно minecraft или root в контейнере). Не запускайте сервер от root на хосте без необходимости.

3. Установка Chunky на Paper / Purpur / Spigot (Bukkit-подобные)

3.1. Через Plugins (рекомендуемый способ)

  1. Остановите сервер через панель proxify.cloud (Console → stop в консоли сервера) или командой:

    screen -S mc -X stuff "stop^M"
    # или systemctl stop minecraft
    
  2. Перейдите в папку плагинов:

    cd /opt/minecraft/plugins
    # или /home/minecraft/server/plugins
    
  3. Скачайте последнюю версию Chunky (под вашу версию ядра):

    # Paper 1.20.4+ (Java 21)
    wget -O Chunky.jar "https://api.modrinth.com/v2/project/chunky/version/latest?loaders=paper&game_versions=1.20.4" 2>/dev/null || \
    wget -O Chunky.jar "https://hangar.papermc.io/api/v1/projects/pop4959/Chunky/versions/latest/download"
    

    Если ссылка устарела, возьмите прямую ссылку с Modrinth или Hangar.

  4. Проверьте файл:

    ls -lh Chunky.jar
    # Должен быть ~3-5 MB
    
  5. Запустите сервер один раз для генерации конфига:

    cd /opt/minecraft
    java -Xms2G -Xmx4G -jar server.jar --nogui
    # Дождитесь "Done!", затем введите stop
    
  6. Настройте config.yml:

    nano /opt/minecraft/plugins/Chunky/config.yml
    

    Ключевые параметры (пример для предгенерации 5000 блоков радиусом):

    defaultWorldRadius: 5000
    defaultWorldShape: CIRCLE
    tasksPerTick: 100        # Нагрузка на тик (50-200 безопасно)
    pauseWhenPlayersOnline: true
    pauseWhenPlayersOnlineThreshold: 1
    autoSaveInterval: 300    # Сохранение прогресса каждые 5 мин
    

3.2. Через Modrinth/ModMenu (если используете Fabric/Quilt + Chunky mod)

Для Fabric-серверов Chunky существует как мод (не плагин).

  1. Остановите сервер.
  2. Положите .jar мод в папку mods:
    cd /opt/minecraft/mods
    wget -O chunky-fabric-1.20.4-2.4.0.jar "https://cdn.modrinth.com/data/.../chunky-fabric-1.20.4-2.4.0.jar"
    
  3. Конфиг появится в config/chunky.json после первого запуска. Редактируйте его:
    {
      "radius": 5000,
      "shape": "circle",
      "tasksPerTick": 100
    }
    

4. Установка Chunky на Forge / NeoForge (мод)

  1. Остановите сервер.
  2. Скачайте версию под Forge/NeoForge с Modrinth (файл chunky-forge-*.jar или chunky-neoforge-*.jar).
  3. Положите в папку mods:
    cd /opt/minecraft/mods
    wget -O chunky-forge-1.20.4-2.4.0.jar "https://cdn.modrinth.com/data/.../chunky-forge-1.20.4-2.4.0.jar"
    
  4. Запустите сервер → остановите → правьте config/chunky.toml или chunky-common.toml:
    radius = 5000
    shape = "circle"
    tasksPerTick = 100
    

5. Запуск предгенерации

5.1. Через игровую консоль (в Console proxify.cloud или в игре с OP)

  1. Запустите сервер:

    cd /opt/minecraft
    screen -S mc -d -m java -Xms4G -Xmx8G -jar server.jar --nogui
    # Или systemctl start minecraft
    
  2. Подключитесь к консоли:

    screen -r mc
    # Для выхода: Ctrl+A, затем D
    
  3. Выполните команды предгенерации:

    # Выбрать мир (overworld, the_nether, the_end)
    /chunky world world
    /chunky radius 5000
    /chunky shape circle
    /chunky center 0 0
    /chunky start
    
    # Прогресс
    /chunky progress
    
    # Пауза / продолжение
    /chunky pause
    /chunky continue
    
    # Отмена
    /chunky cancel
    

5.2. Предгенерация нескольких измерений последовательно

Создайте скрипт /opt/minecraft/pregen.sh для автоматизации:

cat > /opt/minecraft/pregen.sh << 'EOF'
#!/bin/bash
SCREEN_NAME="mc"
CMD="screen -S $SCREEN_NAME -X stuff"

# Функция отправки команды
send() { $CMD "$1^M"; }

send "/chunky world world"
send "/chunky radius 5000"
send "/chunky shape circle"
send "/chunky start"

# Ждем завершения (проверяем каждые 60 сек)
while screen -S $SCREEN_NAME -X hardcopy /tmp/mc_log.txt 2>/dev/null; do
    if grep -q "Generation complete" /tmp/mc_log.txt; then
        break
    fi
    sleep 60
done

# Nether (масштаб 1:8, радиус 625 = 5000 оверворлда)
send "/chunky world world_nether"
send "/chunky radius 625"
send "/chunky start"

while screen -S $SCREEN_NAME -X hardcopy /tmp/mc_log.txt 2>/dev/null; do
    if grep -q "Generation complete" /tmp/mc_log.txt; then
        break
    fi
    sleep 60
done

# End
send "/chunky world world_the_end"
send "/chunky radius 5000"
send "/chunky start"
EOF
chmod +x /opt/minecraft/pregen.sh

Запустите в фоне:

nohup /opt/minecraft/pregen.sh > /opt/minecraft/pregen.log 2>&1 &

6. Оптимизация производительности во время предгенерации

  1. JVM флаги (добавить в запускной скрипт или systemd unit):

    -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 \
    -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true
    
  2. Paper/Purpur настройки (paper-global.yml / purpur.yml):

    chunk-system:
      io-threads: 2          # На SSD/NVMe proxify.cloud ставьте 2-4
      generation-threads: 2  # Не превышайте физических ядер
    
  3. Ограничение задач Chunky (config.yml):

    tasksPerTick: 50         # Начните с 50, поднимайте до 150-200 при низком TPS
    
  4. Мониторинг (в отдельном окне screen/ssh):

    watch -n 2 'tail -20 /opt/minecraft/logs/latest.log | grep -E "TPS|chunky|Generated"'
    # Или htop для CPU/RAM
    

7. Проверка результата и очистка

  1. После завершения (Generation complete в логах) проверьте размер папки мира:

    du -sh /opt/minecraft/world
    du -sh /opt/minecraft/world_nether
    du -sh /opt/minecraft/world_the_end
    
  2. Убедитесь, что нет "дыр" — используйте плагин ChunkyBorder или команду /chunky border для визуализации границ.

  3. (Опционально) Удалите Chunky после предгенерации, чтобы не тратить ресурсы:

    rm /opt/minecraft/plugins/Chunky.jar
    # Перезапуск сервера не обязателен, плагин выгрузится на следующем рестарте
    
  4. Сделайте бэкап мира через панель proxify