Minecraft Server (CraftBukkit) — базовая настройка

Это первая и вводная статья по настройке сервера Minecraft на базе лучшего серверного мода игры — СraftBukkit.

Содержание #

  • Подготовка
  • Установка и русификация
  • Запуск сервера
  • Настройка
  • Общая информация по плагинам
  • Базовые плагины

Подготовка #

Сервер будет собран под Линуксом. Впрочем только эта, первая статья будет с ним сопрягаться, остальные повествуют о плагинах, поэтому применимы к любой ОС, где можно запустить сервер.

Желательны Nginx и Mysql, базовое понимание утилиты Screen.

mkdir minecraft && cd minecraft
sudo aptitude install sun-java6-jre screen zip

Установка и русификация #

Эти операции можно автоматизировать, но перед тем как перейдём к скрипту — немного теории:

Последний рекомендуемый билд сервера — http://ci.bukkit.org/job/dev-CraftBukkit/promotion/latest/Recommended/. Нужен именно последний рекомендуемый билд, а не просто последний. Иначе делайте ручкой плагинам.

Русификатор — http://minecraft-game.ru/tag/rusifikator/.

Из русификатора нужно взять папку lang и font.txt и заменить ими файлы внутри файла .jar сервера. Это удобно сделать в менеджере архивов, так как .jar почти обычный .zip.

Скрипт делает всё это автоматически. К сожалению автор русификатора не предоставляет постоянную ссылку на последнюю версию, поэтому когда русификатор обновляется — ссылку в скрипте нужно править.

  • Скрипт скачивает последний рекомендуемый билд сервера и русификатор во временную папку.
  • Распаковывает и заменяет файлы первого нужными файлами второго.
  • Обновляет .jar файл сервера на получившийся русифицированный и удаляет временную папку.
vim scripts/upd_and_rus.sh
#!/bin/bash

mkdir -p tmp_ru && cd tmp_ru

wget http://ci.bukkit.org/job/dev-CraftBukkit/promotion/latest/Recommended/artifact/target/craftbukkit-1.0.1-R1.jar

wget http://minecraft-game.ru/wp-content/uploads/2011/11/Minecraft1.0_rus_manual.zip

unzip Minecraft1.0_rus_manual.zip \*/lang/\* \*/font.txt

mv to\ jar/* .

zip -j craftbukkit-1.0.1-R1.jar lang/\* font.txt

mv -f craftbukkit-1.0.1-R1.jar ../

cd ../ && rm -rf tmp_ru

Делаем скрипт исполняемым и запускаем:

chmod +x upd_and_rus.sh && scripts/upd_and_rus.sh

Итак, мы получили рекомендуемый билд и русифицировали его.

Подписка на последний рекомендуемый билд #

Чтобы узнать о выходе новых версий можно использовать эти rss ленты:

http://forums.bukkit.org/forums/bukkit-news.2/index.rss — все новости. Я предпочитаю этот вариант.
http://ci.bukkit.org/other/latest_recommended.rss — только последни билды.

Или, если вы предпочитаете получать сообщения на почту, вступить в эту группу:

http://groups.google.com/group/bukkit_announce

Запуск сервера #

Запускать сервер тоже будем скриптом и обернём в screen. Скрипт запускает сервер и перезапускает если он уже запущен.

vim scripts/minecraft.sh
#!/bin/bash
screen -X -S minecraft quit

cd `/dobroservers/minecraft
screen -A -m -d -S minecraft java -Xincgc -Xmx1G -jar craftbukkit-1.0.1-R1.jar
chmod +x minecraft.sh

Запускайте сервер:

scripts/minecraft.sh

Файлов после этого прибавится, в том числе будут созданы файлы настроек.

Настройка #

server.properties #

vim server.properties

Оффлайн режим (ваша гавань открыта для корсаров):

online-mode=false

Сложность, диапазон 0-3:

difficulty=2

Название сервера:

server-name=Dobroserver

Описание сервера:

motd=

Это вторая строчка, перед подключением к серверу.

Документация по server.properties.

bukkit.yml #

В этом файле можно настроить базу данных и алиасы.

Первые удобнее настраивать плагином, а вот базу указать можно:

Меняем БД на Mysql:

database:
  username: minecraft
  isolation: SERIALIZABLE
  driver: com.mysql.jdbc.Driver
  password: pass
  url: jdbc:mysql://localhost:3306/minecraft

Здесь мы указываем настройки Mysql, чтобы не указывать их для каждого плагина отдельно. На будущее, пока не все плагины могут брать настройки отсюда.

Многие из них предлагают на выбор хранить базу данных в Mysql или локально. Первый вариант всегда лучше. Во-первых он намного быстрее, во-вторых работать с базой будет проще — например если плагин создаст дубликаты записей и вам нужно будет это исправить.

Для удобства храните все данные плагинов в одной базе, но используйте для разных плагинов префиксы, например lwc_ для LWC.

Документация по bukkit.yml.

Применение настроек #

Чтобы применить настройки, сервер нужно перезапустить:

/scripts/minecraft.sh

Скрипт просто убьёт сервер и запустит заново — изменения мира не сохранятся.

Сейчас это абсолютно не критично, в начале на сервере сидите только вы, да и то не строете, а проверяете работает ли он.

А если бы на сервере играли другие игроки более правильно было бы перезапускать так:

screen -x minecraft

save-all
stop

/scripts/minecraft.sh

Однако в будущем для перезапусков будет использоваться отдельный плагин, который будет сохранять всё сам, о нём будет рассказано чуть позже.

Подключитесь к серверу и проверьте всё ли нормально.

Общая информация о плагинах #

Плагины можно найти на dev.bukkit.org, обычно информация об установке и использовании находится в самом топике.

Чтобы включить плагин скопируйте .jar в папку plugins и перезапустите сервер, хотя обычно можно обойтись командой reload. После этого может появиться папка plugins/, в ней хранятся настройки (как правило в .yml) и локальные базы данных.

Некоторые плагины идут сразу с настройками в комплекте (папка , соответсвенно её нужно скопировать в plugins), некоторые работают вообще без папки с настройками.

Никогда не используйте символы табуляции при редактировании .yml, сервер просто не будет запускаться. Чтобы рекурсивно заменить табуляцию на четыре пробела во всех .yml файлах используйте этот скрипт:

vim convert_tabs.sh
#!/bin/bash

find ~/dobroservers/minecraft -name "*.yml" |while read line
do
expand --tabs=4 $line > $line.new
mv $line.new $line
done
chmod +x convert_tabs.sh

Он удобен, если вы работает в редакторе, который автоматически вставляет табы.

Список всех плагинов покажет команда plugins.

Базовые плагины #

[RemoteToolkit]:(http://forums.bukkit.org/threads/admn-remotetoolkit-r10-a12-restarts-crash-detection-auto-saves-remote-console-1337.674/) #

Король перезапуска. Не плагин, а обёртка сервера в комплекте с плагином.

  • Автоматичекий перезапуск сервера через заданные интервалы или в заданное время (позволяет избежать утечек памяти).
  • Перезапуск сервера из игры.
  • Настраиваемые предупреждения о грядущих перезапусках.

Скопируйте содержимое serverdir в корень сервера.

Удалите rtoolkit.bat и открывайте rtoolkit.sh, чтобы изменить его следующим образом:

vim +/user rtoolkit.sh
#!/bin/bash
screen -XS minecraft quit

USER=user
PASS=pass

DIRECTORY=$(cd "`dirname "$0"`" && pwd)
(cd "$DIRECTORY"; screen -AmdS minecraft java -Xmx30M -Xms30M -XX:MaxPermSize=40M -jar Minecraft_RKit.jar ${USER}:${PASS})

Это скрипт контейнера, который будет управлять сервером. Теперь, чтобы запускать сервер используйте именно его, а не minecraft.sh.

Отключим удалённый доступ:

vim +/telnet-enabled toolkit/remote.properties
telnet-enabled=false

И настроим параметры сервера:

vim toolkit/wrapper.properties

Сервер, который будет запускать обёртка:

minecraft-server-jar=craftbukkit-1.0.1-R1.jar

Выделяемая память:

initial-heap-size=1024M
maximum-heap-size=1024M

Предупреждения перед перезапуском и выключением:

server-restart-alerts=3m,1m
toolkit-autoshutdown-alerts=3m,1m

Интервал автоматической перезагрузки сервера, чем меньше у вас оперативной памяти, тем чаще нужно перезагружать сервер (оптимальным значением будет 6-8 часов):

server-restart-delay=8h

Если у вас достаточно оперативной памяти — сервер лучше перезапускать раз в сутки, рано утром, я использую именно этот вариант.

Для этого указываем время в формате HH:MM:

server-restart-delay=06:00

Перезапускайте сервер скриптом rtoolkit.sh и подключайтесь к нему. Теперь вы можете перезапускать его из игры:

/restartsrv username:password

Можно не вводить имя, тогда команда будет использовать имя игрока вводящего команду:

/restartsrv password

Или из консоли:

.restart

Backup #

Плагин делает бэкапы. Причина по которой я использую этот плагин, а не только внешний скрипт в том, что когда на сервере нет игроков бэкапы создаваться прекращают. Это очень удобно.

vim plugins/Backup/config.yml

Интервал в минутах:

backupinterval: 60

Количество сохраняемых файлов:

maxbackups: 12

[Plugin Info]:http://dev.bukkit.org/server-mods/plugin-info/ #

Генерирует .txt или выводит в консоль список плагинов и их версий. Позволяет быстро оценить, какой плагин нужно обновить.

Плагин нужен потому, что встроенная команда plugins не показывает версии.

vim /plugins/PluginInfo/settings.yml

Отключите .xml

xmlSaveEnabled: false

И включите .txt список

txtSaveEnabled: true

И по желанию задайте произвольный путь для генерации списка:

outputFolder: /home/ksevelyar/www/dobroserver.ru/minecraft

Список можно посмотреть и из консоли:

plugi l all

Minequery:http://minestatus.net/minequery #

Плагин для интеграции с http://minestatus.net/

Настройки не требует, позволяет использовать информеры.

CommandHelper #

Чтобы плагин работал — сначала установите WorldEdit:http://dev.bukkit.org/server-mods/worldedit/, внутриигровой редактор карты.

О нём будет сказ в отдельной статье, пока просто скопируйте WorldEdit.jar и CommandHelper.jar в папку plugins и перезагрузите плагины командой reload.

В файле config.txt находится множество примеров базовых скриптов и алиасов, советую переименовать его в config.txt.examples, создать новый пустой файл config.txt и наполнять его по мере необходимости:

mv plugins/CommandHelper/config.txt plugins/CommandHelper/config.txt.examples
vim plugins/CommandHelper/config.txt

Одна команда:

/save = /save-all

Макрос из двух команд:

/ver = /plugi l all \
/version

Добавить комментарий