Как изменить режим игры по умолчанию

Введение

Данная инструкция описывает процесс изменения режима игры по умолчанию (default gamemode) для новых игроков на сервере Minecraft, размещенном на хостинге proxify.cloud. Мы предполагаем, что у вас есть выделенный сервер под управлением Ubuntu с установленной панелью виртуализации Proxmox VE, а сам игровой сервер запущен внутри контейнера (LXC) или виртуальной машины (QEMU/KVM). Все действия выполняются через SSH-подключение к контейнеру/ВМ с игровым сервером.

Подготовка и доступ к серверу

1. Подключение через SSH

Откройте терминал (Linux/macOS) или PowerShell/Terminal (Windows) и подключитесь к контейнеру или ВМ, где запущен Minecraft-сервер.

ssh root@<IP-адрес_контейнера_или_ВМ>

Примечание: IP-адрес контейнера можно посмотреть в панели proxify.cloud (Proxmox VE) в разделе «Network» выбранного контейнера/ВМ. Если вы используете стандартный порт 22 и ключи не настроены, введите пароль root.

2. Определение пользователя и рабочей директории

Рекомендуется не запускать сервер от root. Обычно создается отдельный пользователь (например, minecraft или mcserver). Переключитесь на него:

su - minecraft

Перейдите в директорию сервера. Стандартные пути:

  • /home/minecraft/server
  • /opt/minecraft/server
  • /var/lib/minecraft/server
cd /home/minecraft/server

Проверьте содержимое, чтобы убедиться, что вы в правильной папке (должен быть файл server.properties, server.jar или скрипты запуска):

ls -la

Остановка сервера перед изменением конфигурации

3. Корректная остановка сервера

Никогда не редактируйте server.properties, пока сервер работает — изменения будут перезаписаны при сохранении мира или рестарте.

Вариант А: Через systemd (если сервер установлен как сервис)

sudo systemctl stop minecraft-server

Или, если вы под пользователем minecraft и настроен systemd user service:

systemctl --user stop minecraft-server

Вариант Б: Через screen/tmux (ручной запуск) Если сервер запущен в сессии screen с именем mc:

screen -r mc

В консоли сервера введите:

stop

Дождитесь сообщения Server stopped и нажмите Ctrl+A, затем D для отсоединения от screen.

Вариант В: Через Docker (если используется контейнер Docker внутри LXC/VM)

docker stop minecraft-server

Убедитесь, что процесс Java остановлен:

pgrep -f "server.jar"

Команда не должна возвращать PID.

Редактирование файла server.properties

4. Резервное копирование конфигурации

Перед правкой создайте бэкап:

cp server.properties server.properties.backup.$(date +%F_%H-%M-%S)

5. Изменение параметра gamemode

Откройте файл в редакторе (nano, vim или micro):

nano server.properties

Найдите строку:

gamemode=survival

Измените значение на одно из допустимых:

  • survival (0) — выживание
  • creative (1) — творческий
  • adventure (2) — приключение
  • spectator (3) — наблюдатель

Пример для творческого режима:

gamemode=creative

Совет: Можно использовать числовые ID (0-3), но строковые значения читаемы и предпочтительны в современных версиях (1.13+).

6. Настройка force-gamemode (важно)

В том же файле найдите параметр force-gamemode.

  • force-gamemode=true — игрок всегда будет спавниться в режиме, указанном в gamemode, при каждом входе на сервер. Его личный режим игнорируется.
  • force-gamemode=false (по умолчанию) — режим из gamemode применяется только при первом входе нового игрока. Далее сохраняется его личный режим.

Рекомендация: Для смены режима по умолчанию для новичков поставьте false. Если нужно форсировать режим для всех (например, мини-игра) — поставьте true.

force-gamemode=false

Сохраните файл: Ctrl+O, Enter, Ctrl+X (в nano).

Проверка связанных настроек

7. Параметр defaultgamemode (устаревший/алиас)

В старых версиях или некоторых форках (Paper, Purpur, Spigot) может встречаться параметр defaultgamemode. Он дублирует gamemode. Для единообразия установите его в то же значение:

defaultgamemode=creative

8. Настройка сложности (difficulty)

Режим игры и сложность — разные вещи, но часто меняются вместе. Проверьте:

difficulty=normal

Допустимые значения: peaceful, easy, normal, hard.

9. hardcore (хардкор)

Если hardcore=true, сервер игнорирует gamemode и ставит выживание с пермадетом. Убедитесь, что:

hardcore=false

Особенности для прокси-серверов (Velocity / BungeeCord)

Если ваша архитектура на proxify.cloud включает прокси (Velocity/BungeeCord) и несколько бэкенд-серверов:

  1. Настройку gamemode нужно менять на каждом бэкенд-сервере (Lobby, Survival, Creative и т.д.) индивидуально.
  2. Прокси не управляет игровым режимом, он только перенаправляет пакеты.
  3. Если используется плагин перемещения между серверами (например, ServerSelector), режим меняется плагинами на бэкендах.

Запуск сервера и проверка

10. Запуск сервера

Systemd:

sudo systemctl start minecraft-server
# или
systemctl --user start minecraft-server

Screen (ручной):

screen -S mc -d -m bash -c 'java -Xms4G -Xmx4G -jar server.jar nogui'

Подстройте флаги -Xms/-Xmx под выделенную RAM в панели proxify.cloud.

Docker:

docker start minecraft-server

11. Мониторинг логов запуска

Следите за консолью на наличие ошибок:

# Для systemd
journalctl -u minecraft-server -f

# Для screen
screen -r mc

# Для docker
docker logs -f minecraft-server

Дождитесь строки Done! For help, type "help" или Server started on port....

12. Тестирование в игре

  1. Зайдите на сервер новым аккаунтом (или удалите playerdata/<UUID>.dat для тестового аккаунта в папке world/playerdata).
  2. Проверьте режим командой /gamemode (должен показать новый режим).
  3. Проверьте инвентарь (в креативе — полет, креативная вкладка предметов).

Изменение режима для уже играющих игроков (опционально)

Изменение server.properties не влияет на существующих игроков. Их режим хранится в файлах world/playerdata/<UUID>.dat.

13. Смена режима конкретному игроку онлайн

В консоли сервера или в чате (если есть права OP):

/gamemode creative <ник_игрока>

14. Массовая смена режима через NBT (оффлайн)

Требуется остановленный сервер и установленный nbt инструмент (например, nbt-cli или скрипт на Python).

Пример с nbt (установка: pip install nbt):

cd /home/minecraft/server/world/playerdata
for file in *.dat; do
    nbt -f "$file" -p "playerGameType" -s 1  # 1 = creative
done

Будьте осторожно: это изменит режим ВСЕМ игрокам, включая админов.

15. Удаление playerdata для полного сброса (радикально)

rm -f /home/minecraft/server/world/playerdata/*.dat

При следующем заходе все игроки получат режим из server.properties и чистый инвентарь.

Автоматизация через скрипты (для админов proxify.cloud)

16. Скрипт быстрой смены режима

Создайте файл /home/minecraft/scripts/set_gamemode.sh:

#!/bin/bash
# Usage: ./set_gamemode.sh <survival|creative|adventure|spectator>

TARGET_MODE="$1"
PROPS_FILE="/home/minecraft/server/server.properties"
SERVICE_NAME="minecraft-server"

if [[ ! "$TARGET_MODE" =~ ^(survival|creative|adventure|spectator)$ ]]; then
    echo "Invalid mode. Use: survival, creative, adventure, spectator"
    exit 1
fi

echo "Stopping server..."
systemctl stop "$SERVICE_NAME"
sleep 5

echo "Updating $PROPS_FILE..."
sed -i "s/^gamemode=.*/gamemode=$TARGET_MODE/" "$PROPS_FILE"
sed -i "s/^defaultgamemode=.*/defaultgamemode=$TARGET_MODE/" "$PROPS_FILE"

echo "Starting server..."
systemctl start "$SERVICE_NAME"
echo "Done. Default gamemode set to $TARGET_MODE"

Сделайте исполняемым:

chmod +x /home/minecraft/scripts/set_gamemode.sh

Теперь можно менять режим одной командой:

/home/minecraft/scripts/set_gamemode.sh creative

Возможные проблемы и решения

1. Изменения не вступили в силу после рестарта

Причина: Сервер не остановился корректно (процесс завис), либо вы редактировали файл не в той директории (симлинк, другой инстанс). Решение:

  • Проверьте pwd и realpath server.properties.
  • Убейте зависший процесс: pkill -9 -f server.jar.
  • Убедитесь, что systemd-юнит указывает на правильный WorkingDirectory.

2. Игрок все равно спавнится в выживании

Причина: force-gamemode=false (по умолчанию) и у игрока уже есть файл playerdata/<UUID>.dat с сохраненным режимом. Решение:

  • Удалите файл игрока в world/playerdata/ (сбросит инвентарь и позицию).
  • Или используйте команду /gamemode creative <ник> в игре/консоли.
  • Или поставьте force-gamemode=true (но это заставит всех переключаться при каждом заходе).

3. Ошибка "Permission denied" при редактировании

Причина: Ф