Как оптимизировать сервер Purpur
1. Подготовка окружения на proxify.cloud
- Зайдите в панель proxify.cloud → раздел «Выделенные серверы» → выберите ваш сервер → вкладка Console (или подключитесь по SSH).
- Обновите систему и установите необходимые пакеты:
apt update && apt upgrade -y apt install -y openjdk-21-jre-headless screen htop iotop ncdu jq curl wget git unzip - Проверьте версию Java (Purpur 1.20.4+ требует Java 21):
java -version # Ожидаемый вывод: openjdk version "21.x.x" - Создайте пользователя для сервера (без sudo-прав):
adduser --disabled-password --gecos "" mcuser su - mcuser mkdir -p ~/server && cd ~/server
2. Скачивание и базовая настройка Purpur
- Получите последнюю стабильную сборку через API PaperMC (Purpur использует тот же API):
VERSION=$(curl -s https://api.purpurmc.org/v2/purpur | jq -r '.versions[-1]') BUILD=$(curl -s "https://api.purpurmc.org/v2/purpur/${VERSION}" | jq -r '.builds[-1]') JAR_NAME="purpur-${VERSION}-${BUILD}.jar" curl -o "purpur.jar" "https://api.purpurmc.org/v2/purpur/${VERSION}/${BUILD}/download" - Примите EULA и создайте стартовый скрипт:
echo "eula=true" > eula.txt cat > start.sh << 'EOF' #!/bin/bash # Настройки JVM для выделенного сервера на proxify.cloud (пример под 32GB RAM, оставьте 2-4GB под ОС) HEAP="28G" JAVA_ARGS=( -Xms${HEAP} -Xmx${HEAP} -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 -Daikars.new.flags=true -jar purpur.jar --nogui ) exec java "${JAVA_ARGS[@]}" EOF chmod +x start.sh - Первый запуск для генерации конфигов:
./start.sh # Дождитесь "Done (X.Xs)! For help, type "help"", затем введите stop
3. Настройка server.properties (ключевые параметры)
Откройте файл и измените следующие значения:
nano server.properties
# Сеть и производительность
network-compression-threshold=256
max-tick-time=60000
enable-jmx-monitoring=false
use-native-transport=true
region-file-compression=deflate
# Игровые механики (снижение нагрузки)
view-distance=6
simulation-distance=5
entity-broadcast-range-percentage=80
mob-spawn-range=4
max-entity-cramming=16
# Античит и эксплойты
enable-command-block=false
force-gamemode=true
hardcore=false
white-list=false
enforce-whitelist=false
spawn-protection=16
max-players=100
online-mode=true
prevent-proxy-connections=true
rate-limit=0
Совет: На proxify.cloud с NVMe дисками
region-file-compression=deflateдает лучший баланс CPU/IO, чем zstd.
4. Оптимизация purpur.yml — основные секции
Файл находится в корне сервера. Редактируйте только указанные параметры, остальные оставьте по умолчанию.
4.1. Тики и сущности (ticks, entities)
ticks:
# Частота обновления сущностей (меньше = менее плавно, выше FPS сервера)
entity-per-tick:
animal: 2
monster: 2
villager: 1
flying: 2
water: 2
misc: 1
entities:
# Отключение ИИ для дальних мобов
activate-ai:
only-if-player-in-range: true
activation-dist: 32
# Лимиты спавна (жестче, чем в spigot.yml)
spawn-limits:
monster: 50
animal: 8
water-creature: 3
water-ambient: 2
ambient: 1
axolotls: 3
underground-water-creature: 3
# Удаление застрявших/бесполезных сущностей
auto-remove:
dropped-items:
enabled: true
threshold: 150
interval: 30
arrow-despawn-rate: 300
experience-orb-despawn-rate: 300
# Оптимизация сенсоров (Purpur-specific)
use-vanilla-entity-targeting: false
disable-creeper-lingering-effect: true
disable-ender-dragon-death-sound: true
4.2. Чанки и генерация (chunks, generation)
chunks:
# Задержка выгрузки чанков (в тиках) — критично для RAM
delay-chunk-unloads-by: 10s
# Макс. чанков на тик для сохранения (снижает лаги автосейва)
max-auto-save-chunks-per-tick: 8
# Предзагрузка чанков при телепорте
player-chunk-load-threads: 2
generation:
# Отключение генерации структур, если не нужны (экономит CPU при эксплоре)
generate-structures: true
# Кэширование высот (ускоряет генерацию)
cache-heightmaps: true
4.3. Хопперы и контейнеры (hoppers, containers)
hoppers:
# Объединение предметов в хопперах (менее частые проверки)
cooldown-when-full: true
push-limit: 64
transfer-cooldown: 8
# Отключение проверки контейнеров над хоппером (риск дюпов, но +TPS)
ignore-occluding-blocks: false
containers:
# Оптимизация шалкеров/сундуков
shulker-box:
allow-entity-inside: false
4.4. Игроки и античит (players, anti-cheat)
players:
# Отправка пакетов только для видимых чанков
send-full-position-update-when-moving: false
# Отключение анимации еды/потения для других (сетевой трафик)
disable-chest-cat-detection: true
# Лимит команд в секунду (защита от спама)
command-spam-limit: 20
anti-cheat:
# Встроенный античит Purpur (легче плагинов)
enabled: true
# Настройки для высокой нагрузки
movement:
max-ping-millis: 250
max-tps-penalty: 10.0
5. Настройка paper-global.yml (наследуется Purpur)
Файл: config/paper-global.yml. Создайте, если отсутствует.
verbose: false
config-version: 1.20.4
settings:
# Оптимизация пулов потоков
use-faster-eigencraft-redstone: true
use-alternative-keepalive: true
# Отключение ненужных проверок
disable-chest-cat-detection: true
disable-creeper-lingering-effect: true
# Кэширование рецептов
cache-recipe-results: true
# Оптимизация карты
maps:
item-frame-cursor-limit: 16
item-frame-cursor-update-frequency: 10
# Контейнеры
container-update-tick-rate: 1
# Хопперы (дополнительно к purpur.yml)
hopper:
disable-move-event: true
ignore-occluding-blocks: false
# Энтити
entity:
max-entity-collisions: 2
zombie-aggressive-towards-villager-when-lagging: false
# Спавн
spawn:
alt-item-despawn-rate:
enabled: true
items:
cobblestone: 300
dirt: 300
stone: 300
spawn-limits:
ambient: -1
axolotls: -1
creature: -1
monster: -1
underground_water_creature: -1
water_ambient: -1
water_creature: -1
# Чанки
chunk-loading:
async-chunk-loading: true
chunk-load-threads: 2
# Логирование (убираем спам в консоль)
log:
log-named-deaths: false
log-player-ip-addresses: false
6. Настройка spigot.yml (дополнительные лимиты)
settings:
save-user-cache-on-stop-only: true
moved-wrongly-threshold: 0.0625
moved-too-quickly-threshold: 100.0
timeout-time: 60
restart-on-crash: true
restart-script: ./start.sh
netty-threads: 4
bungeecord: false
sample-count: 12
player-shuffle: 0
user-cache-size: 1000
int-cache-limit: 1024
# Критично для больших ферм
filter-creative-items: true
commands:
log: false
tab-complete: 0
send-namespaced: false
replace-commands:
- "minecraft:give"
- "minecraft:gamemode"
- "minecraft:tp"
- "minecraft:teleport"
messages:
whitelist: "Сервер на техническом обслуживании."
unknown-command: "Неизвестная команда."
server-full: "Сервер полон."
stats:
disable-saving: false
forced-stats: {}
advancements:
disable-saving: false
disabled: []
world-settings:
default:
verbose: false
# Спавн мобов (Purpur переопределяет, но оставим совместимость)
spawn-limits:
monsters: 50
animals: 8
water-animals: 3
water-ambient: 2
ambient: 1
# Чанки
chunks-per-tick:
Комментарии (0)