Bedrock Dedicated Server (BDS) - собственный сервер Mojang для Minecraft Bedrock Edition, той версии, что работает на Windows, телефонах, Xbox, PlayStation и Switch. Он бесплатно скачивается для Windows и Ubuntu Linux, не имеет API плагинов, настраивается через файл server.properties, у которого с Java-версией общее только имя, и слушает UDP-порт 19132. Скачайте, распакуйте, задайте имя мира, игровой режим и allowlist, откройте порт и запустите bedrock_server. Две вещи стоит знать заранее: игроки на консолях не могут ввести адрес сервера без обходного пути, а всё, что выходит за рамки ванильной игры, делается аддонами (пакетами поведения и ресурсов), а не плагинами.
Если вы ещё выбираете между Bedrock и Java, сначала прочитайте статью хостинг Bedrock или Java: для смешанных компаний сервер Java с Geyser часто оказывается лучшим ответом. Здесь предполагается, что вам нужен именно BDS.
Что такое BDS и чем он не является#
BDS - тот же игровой движок, что и в клиенте Bedrock, упакованный в сервер без графики. Он в точности запускает официальную игру, синхронно с версией клиента, и служит эталоном того, как должен вести себя мультиплеер Bedrock.
Чего в нём нет:
- API плагинов. Ни Bukkit, ни Paper, ни аналогов Spigot. Настройка делается через аддоны - пакеты на основе данных и JavaScript через Script API от Mojang.
- RCON или протокола запросов, на который можно положиться. Администрирование - это консоль сервера и команды оператора, набираемые в игре.
- Терпимости к версиям. Клиенты должны быть той же версии, что и сервер. Если телефон обновился во вторник, а сервер нет, этот телефон не сможет зайти, пока сервер не догонит.
- Официальной поддержки Mac и других дистрибутивов Linux. Он собран для Windows и Ubuntu. Другие современные дистрибутивы Linux обычно его запускают, но это не гарантируется.
Существуют сторонние серверы Bedrock, у которых есть API плагинов, - PocketMine-MP, серверы семейства Nukkit, - но это повторные реализации игры, а не BDS, и они отстают от ванильной игры и отличаются от неё во многих деталях. Есть и проекты, которые добавляют слой плагинов поверх самого BDS, например Endstone и LeviLamina. О них стоит знать; но это ещё одна подвижная часть, которая ломается при каждом обновлении Bedrock.
Требования и потребление ресурсов#
При том же числе игроков BDS легче сервера Java, в основном потому, что написан на C++, а не работает на JVM с её накладными расходами на heap. Но и он растёт вместе с дальностью прорисовки, сущностями и загруженной областью.
| Игроки | RAM | CPU | Примечания |
|---|---|---|---|
| 1-5 | 1-2 ГБ | 1 ядро | Семья или несколько друзей |
| 5-15 | 2-4 ГБ | 2 ядра | Держите view-distance умеренным |
| 15-30 | 4-6 ГБ | 2-3 ядра | Важны tick-distance и сущности |
| 30+ | 6 ГБ+ | 3+ ядра | Основную нагрузку дают большие постройки и фермы |
Диск: сам сервер занимает несколько сотен мегабайт; миры растут по мере исследования и обычно весят от нескольких сотен мегабайт до нескольких гигабайт. BDS использует больше одного потока (max-threads управляет пулом рабочих потоков), но симуляция мира всё равно любит быстрые одиночные ядра, как объясняется в статье CPU или RAM для игровых серверов.
Установка и первый запуск#
Скачайте zip для Windows или Ubuntu с официальной страницы загрузки сервера Bedrock на minecraft.net. Принятие условий лицензии - часть загрузки. Распакуйте архив в пустую папку.
В Linux:
$ mkdir ~/bedrock && cd ~/bedrock$ unzip ~/Downloads/bedrock-server-*.zip$ LD_LIBRARY_PATH=. ./bedrock_serverLD_LIBRARY_PATH=. говорит серверу загружать библиотеки, которые лежат в его собственной папке. В Windows запустите bedrock_server.exe.
Первый запуск создаёт мир, указанный в level-name, и выводит:
[INFO] Starting Server[INFO] Version: 1.21.x[INFO] Level Name: Bedrock level[INFO] IPv4 supported, port: 19132: Used for gameplay and LAN discovery[INFO] IPv6 supported, port: 19133: Used for gameplay[INFO] Server started.Структура папки после первого запуска:
| Путь | Что это |
|---|---|
server.properties | Все настройки сервера |
allowlist.json | Игроки, которым разрешён вход, когда allowlist включён |
permissions.json | Уровни оператора и участника по XUID |
worlds/<level-name>/ | Мир: db/, level.dat, levelname.txt, списки пакетов |
behavior_packs/, resource_packs/ | Пакеты, доступные мирам |
bedrock_server / .exe | Исполняемый файл сервера |
Обновление BDS - это скачивание нового zip и копирование его поверх установки с сохранением server.properties, allowlist.json, permissions.json и worlds/. Обновления выходят часто, а отставший сервер не пускает ни одного обновившегося клиента. Перед каждым обновлением делайте резервную копию worlds/.
server.properties: важные ключи#
Файл - простые строки key=value, по одной на строке, и сервер поставляет его полностью с комментариями. Ключи, которые вы действительно будете менять:
| Ключ | По умолчанию | Что делает |
|---|---|---|
server-name | Dedicated Server | Имя в списке LAN и в информации о сервере |
gamemode | survival | survival, creative или adventure |
force-gamemode | false | Принудительно ставить игрокам режим сервера при входе |
difficulty | easy | peaceful, easy, normal, hard |
allow-cheats | false | Можно ли использовать команды в игре |
max-players | 10 | Лимит одновременных игроков |
online-mode | true | Требовать аутентификацию Xbox Live |
allow-list | false | Заходить могут только игроки из allowlist.json |
server-port | 19132 | UDP-порт IPv4 |
server-portv6 | 19133 | UDP-порт IPv6 |
view-distance | 32 | Максимальная дальность прорисовки в чанках |
tick-distance | 4 | Радиус симуляции в чанках (4-12) |
player-idle-timeout | 30 | Через сколько минут кикать неактивных игроков, 0 отключает |
max-threads | 8 | Рабочие потоки, 0 - сколько возможно |
level-name | Bedrock level | Имя папки мира в worlds/ |
level-seed | пусто | Сид для нового мира |
default-player-permission-level | member | visitor, member или operator для новых игроков |
texturepack-required | false | Заставлять клиентов использовать пакеты ресурсов мира |
content-log-file-enabled | false | Писать ошибки аддонов в файл лога |
Заметки из практики:
- `view-distance=32` - слишком много для большинства серверов. Это максимум; клиенты запрашивают меньше, но телефон с прорисовкой 32 чанка создаёт много работы. Для загруженного сервера
10-16хватает с запасом. - `tick-distance` - главный рычаг производительности. Он определяет, насколько далеко вокруг каждого игрока симулируется мир - урожай, мобы, редстоун. Значение по умолчанию
4уже экономное; повышение до8и выше ради ферм обходится дорого. - `allow-cheats=true` нужен для команд в игре, в том числе для операторов. Заодно он отключает достижения в этом мире. Решите это до того, как игрокам станет не всё равно.
- `online-mode=true` должен оставаться включённым на любом сервере, доступном из интернета. Если выключить, кто угодно сможет зайти под любым именем.
- Ключи движения и античита -
server-authoritative-movementи порогиplayer-movement-*- меняют имена и допустимые значения от версии к версии. Оставьте значения по умолчанию из вашей версии, если только не боретесь с конкретной проблемой читов на движение, и перед правкой сверьтесь с комментариями в своём файле. - `compression-threshold` и `compression-algorithm` меняют трафик на CPU. Значения по умолчанию подходят.
Java-версия этого файла описана в статье server.properties простыми словами; копировать ключи между ними бесполезно.
Порт 19132 и подключение#
| Порт | Протокол | Назначение |
|---|---|---|
19132 | UDP | Игра по IPv4 и обнаружение в LAN |
19133 | UDP | Игра по IPv6 |
Bedrock работает поверх RakNet по UDP. Правило файрвола для TCP ему ничего не даёт - это самая частая причина, по которой сервер BDS работает нормально, но до него нельзя достучаться. Если у хоста нет IPv6, второй порт можно игнорировать. Общий случай разобран в статье порты игровых серверов.
Телефоны, Windows и другие клиенты на ПК подключаются через Play, затем Servers, затем Add Server: имя, адрес и порт. Клиенты Bedrock не следуют SRV-записям, как это делает Java, поэтому адрес - это IP или имя хоста с A-записью, а порт нужно вводить, если он не 19132.
Xbox, PlayStation и Switch не могут добавлять свои серверы из меню; они показывают только рекомендуемые серверы. Сообщества обходят это двумя способами. Первый - DNS-перенаправление: DNS консоли направляется на сервис (самый известный - BedrockConnect), который перехватывает имя хоста рекомендуемого сервера и показывает меню, где можно ввести любой адрес. Второй - трансляция через список друзей: отдельный инструмент входит в аккаунт Xbox и делает так, что сервер выглядит как мир друга, к которому можно присоединиться. Оба способа работают, оба неофициальные, и оба могут сломаться, когда Microsoft что-то поменяет. Будьте честны с игроками на консолях, прежде чем обещать им сервер.
Allowlist и операторы#
Записи allowlist управляются из консоли; файл allowlist.json сервер пишет сам:
allowlist onallowlist add Steve_Playsallowlist remove Griefer123allowlist listallowlist reloadИгроки добавляются по gamertag, а их XUID сервер заполняет при первом входе. При allow-list=true всех, кого нет в файле, не пускают.
Статус оператора хранится в permissions.json и привязан к XUID, а не к gamertag:
[ { "permission": "operator", "xuid": "2535412345678901" }, { "permission": "member", "xuid": "2535498765432109" }]Проще всего выполнить в консоли op <gamertag> после того, как игрок зашёл: команда сама запишет файл. Если правите вручную, после этого выполните permission reload. XUID появляется в консоли, когда игрок подключается.
Полезные команды консоли:
| Команда | Действие |
|---|---|
op <name> / deop <name> | Выдать или снять оператора |
kick <name> <reason> | Выгнать игрока |
list | Игроки в сети |
allowlist ... | Как выше |
permission list / permission reload | Показать или перечитать permissions.json |
changesetting allow-cheats true | Изменить некоторые настройки без перезапуска |
save hold / save query / save resume | Подготовить согласованную резервную копию |
stop | Сохранить и выключить |
Команды в игре, доступные операторам, - стандартный набор команд Bedrock (/gamerule, /tp, /give и так далее), и для них нужен allow-cheats=true.
Аддоны: пакеты поведения и пакеты ресурсов#
Аналог модов и плагинов в Bedrock - аддон: пакет поведения (сущности, предметы, рецепты, лут, скрипты) и часто пакет ресурсов (текстуры, модели, звуки). Файл .mcpack или .mcaddon - это zip.
- Распакуйте пакет. У каждого пакета есть
manifest.jsonс разделомheader, в котором указаныuuidиversion. - Скопируйте пакеты поведения в
behavior_packs/, а пакеты ресурсов - вresource_packs/. - Подключите их к миру. В
worlds/<level-name>/создайте или отредактируйтеworld_behavior_packs.jsonиworld_resource_packs.json:
[ { "pack_id": "5b1d4a8e-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "version": [1, 0, 0] }]pack_id - это uuid из заголовка манифеста пакета, а version - версия из заголовка в виде массива. То же самое сделайте для пакета ресурсов в его собственном файле.
- Установите
texturepack-required=true, если клиенты должны скачать пакет ресурсов, чтобы корректно зайти. - Перезапустите сервер и следите за консолью. На время тестирования включите
content-log-file-enabled=true: ошибки пакетов пишутся туда, а не в основной вывод.
Многие аддоны зависят от экспериментальных функций, а это настройки мира, а не сервера. Надёжный способ их включить - создать мир на клиенте с включёнными экспериментами и применёнными пакетами, а затем загрузить этот мир на сервер. Учтите, что эксперименты могут меняться или исчезать между версиями и способны сломать мир при обновлении.
Marketplace - отдельная история: контент из Marketplace лицензирован на аккаунт покупателя, не предназначен для размещения на сервере и зашифрован так, что BDS не работает с ним для третьих лиц.
Перенос мира на сервер#
Мир Bedrock - это папка со случайным на вид именем, внутри которой лежат db/ (база LevelDB с чанками), level.dat и levelname.txt. В Windows клиентские миры находятся в папке com.mojang, в games/com.mojang/minecraftWorlds/; точное родительское расположение менялось между версиями клиента для Windows, так что если по старому пути пусто, поищите minecraftWorlds. На телефонах используйте экспорт в самой игре, чтобы получить файл .mcworld - zip той же папки.
- Остановите сервер.
- Загрузите папку мира в
worlds/по SFTP. Переименуйте папку во что-нибудь читаемое. - Укажите в
level-nameровно это имя папки. - Запустите сервер и проверьте, что он загружает мир, а не создаёт новый.
Один процесс BDS запускает один мир. Аналога Multiverse из Java нет, как нет и прокси, который переносил бы игроков между серверами Bedrock, как Velocity делает для Java, поэтому сообщество, которому нужны мир выживания и креативный мир, запускает два сервера на двух портах, а игроки добавляют оба в свой список. Переключение level-name на другую папку с перезапуском действительно меняет мир, но вместе с ним переезжают все, кто на сервере.
Проверьте, что несёт с собой загруженный мир. Игровые правила, флаг читов, экспериментальные переключатели и собственные списки пакетов мира хранятся в мире, а не на сервере. Мир, в котором в одиночной игре были включены читы, сохраняет отключённые достижения независимо от allow-cheats на сервере, а миру, построенному с аддоном, нужны пакеты этого аддона в папках пакетов сервера, иначе его сущности и блоки пропадут.
Резервные копии и обновления#
Мир - это база данных LevelDB, в которую постоянно идёт запись. Копирование во время записи может дать сломанную копию. Для этого в BDS есть встроенная процедура:
save hold- приостановить запись.save query- повторяйте, пока сервер не сообщит, что файлы готовы, и не перечислит их с длинами.- Скопируйте перечисленные файлы, обрезав каждый до указанной длины.
save resume- запись продолжается.
Вручную это муторно. Простая безопасная альтернатива - остановить сервер, скопировать worlds/ и снова запустить, в час, когда никто не играет. Почему доказать, что восстановление работает, важнее, чем снять копию, объясняется в статье резервные копии, которые действительно восстанавливаются.
Устранение проблем#
Игроки вообще не могут подключиться. Порт не открыт для UDP, или сервер слушает не тот порт, который вводят игроки. Проверьте строку при запуске, где сообщается порт.
«Outdated server» или «Outdated client». Несовпадение версий. Обновите сервер или дождитесь, пока обновятся игроки.
«You need to authenticate to Microsoft services.» Клиент не вошёл в аккаунт Microsoft, а этого требует online-mode=true.
Сервер игнорирует изменения в `server.properties`. Большинство настроек читается при запуске. Перезапускайте сервер после правок; changesetting работает лишь с немногими.
Аддон ничего не делает. pack_id или версия не совпадают с манифестом, в JSON синтаксическая ошибка, или пакету нужны эксперименты, которых нет в мире. Проверьте content log.
Игроки на консолях не находят сервер. Консоли не могут добавлять серверы без обходного пути. См. раздел о подключении.
FAQ#
Bedrock Dedicated Server бесплатный?
Да, он бесплатно скачивается с minecraft.net на условиях лицензии Mojang. Игрокам всё равно нужна своя копия Minecraft Bedrock.
Можно ли запускать плагины на Bedrock Dedicated Server?
Штатно нет. Вместо этого в BDS есть аддоны и Script API от Mojang. Сторонние проекты добавляют слой плагинов, а у альтернативных серверов вроде PocketMine-MP есть свои плагины, но всё это уже не ванильный BDS.
Какой порт использует сервер Bedrock?
По умолчанию UDP 19132 для IPv4 и UDP 19133 для IPv6, задаются через server-port и server-portv6.
Могут ли игроки Java зайти на сервер Bedrock?
Нет. Возможно обратное: игроки Bedrock могут зайти на сервер Java через Geyser. Для смешанной компании обычно стоит выбрать именно такую схему.
Как заходят игроки на Xbox и PlayStation?
Напрямую никак, потому что консольные версии показывают только рекомендуемые серверы. Обходные пути сообщества используют DNS-перенаправление или трансляцию через список друзей. Они работают, но неофициальны и могут сломаться.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.