Skip to content
Перейти к содержимому
Вернуться в блог
Endstone: Теперь мощь серверов Paper для Bedrock

Endstone: Теперь мощь серверов Paper для Bedrock

Alexandru Maftei
Alexandru Maftei
@ice
Обновлено
13 просмотров
TL;DR:Endstone привносит инфраструктуру плагинов в серверы Minecraft Bedrock, позволяя писать плагины на Python и C++ с доступом к более 60 событиям, командам и системам разрешений - при полной совместимости с оригинальным Bedrock.
GitHub · Проект сообщества Minecraft

endstone (EndstoneMC/endstone)

Высокопроизводительный сервер Minecraft Bedrock с родной API для плагинов на C++ и Python

Поддержать на GitHub ⭐
⭐ 623 звёзды💻 C++📜 Apache-2.0

Хотели ли вы когда-нибудь запустить сервер Bedrock с возможностями настройки Java Edition's Paper? Endstone заполняет этот пробел, предоставляя поддержку плагинов и глубокий контроль сервером, сохраняя целостность совместимости с оригиналом.

Что делает Endstone

Будем честны: стандартные серверы Bedrock ограничены. Вы не можете отменить события, контролировать пакеты или изменять ядро игровой логики, как в Paper или Spigot. Endstone меняет это, располагаясь между вами и самим Bedrock, перехватывая события и предлагая полный API для плагинов. Это не система дополнений или движок скриптов. Это правильный сервер-оболочка с архитектурной мощью, которой годами пользуются игроки Java.

Интересная часть? Это действительно заменяемое решение. Ваши файлы мира, конфигурации, существующая настройка Bedrock - всё работает. Нет необходимости в миграции. Просто установите Endstone, укажите путь к вашему миру и начните загружать плагины. Основной сервер Bedrock работает незамеченным под капотом, поэтому стандартные функции остаются целыми и надёжными.

Под капотом - это C++, выполняющее тяжёлую работу. Проект имеет 623 звёзд на GitHub и активное развитие (последняя версия поддерживает Bedrock 1.26.12). Сам API плагинов опирается на закономерности дизайна, знакомые разработчикам Bukkit - если вы раньше писали плагины для Paper, модель сразу станет понятна.


Почему использовать это

Очевидный случай: вы управляете сервером Bedrock и хотите добавить кастомные команды, системы разрешений или механики игровой логики без написания с нуля собственного дополнения. Endstone занимается инфраструктурой - событиями, табло, формами, доступом к инвентарю, данным игрока - чтобы вы могли сосредоточиться на логике.

Конкретные примеры. Предположим, вы хотите систему уровней, где игроки зарабатывают XP и открывают команды. В стандартном Bedrock вы боретесь с ограничениями дополнений. С Endstone вы пишете обработчик событий, который отслеживает урон игрока, рассчитывает XP, обновляет табло и динамически присваивает разрешения. Несколько десятков строк Python - и готово. Вы также могли бы реализовать полную экономическую систему, кастомную механику боя, события в подземельях или ранжированное соперничество PvP.

Другой подход: связь между серверами. Вы управляете Bedrock, но хотите, чтобы игроки могли подключаться из серверов Java Edition через прокси-инструменты. Контроль пакетов в Endstone позволяет перехватывать и изменять последовательности подключения, косметику и другие межверсионные конфликты. Это не гладко работает сразу, но возможно в пределах, недоступных чистому Bedrock.

Windows или Linux. Поддержка Docker существует. Python 3.10+ на Windows 10+ или Ubuntu 22.04+ / Debian 12+. Это достаточно гибко для большинства хостингов. И если вам нужна производительность C++ для критического плагина, API поддерживает это тоже.


Начало работы

Установка требует трёх команд:

bash
pip install endstone
endstone

Всё. Менеджер пакетов Python скачивает релизный бинарник (в зависимости от вашей платформы), а запуск `endstone` стартует сервер в текущей директории. Он сгенерирует серверную конфигурацию и папку `plugins`.

Для вашего первого плагина создайте файл Python в этой папке. Вот минимальный пример:

python
from endstone.plugin import Plugin
from endstone.event import event_handler, PlayerJoinEvent

class MyPlugin(Plugin):
 api_version = "0.10"

 def on_enable(self):
 self.logger.info("MyPlugin enabled!")
 self.register_events(self)

 @event_handler
 def on_player_join(self, event: PlayerJoinEvent):
 event.player.send_message(f"Добро пожаловать, {event.player.name}!")

Поместите его в `plugins/`, перезапустите сервер, и в логах увидите „MyPlugin enabled!”. Игроки, подключающиеся, получат приветственное сообщение. Всё это цикл обратной связи.

Проект предоставляет шаблоны для Python и C++ если вы хотите структурированную основу. Но честно говоря, пример плагина выше достаточно мал, чтобы скопировать и начать экспериментировать.


Что делает его мощным

Объём API существенный. Мы говорим о более 60 событиях, охватывающих подключение игроков, разрушение блоков, получение урона, открытие инвентаря, чат и многое другое. Команды работают с встроенным парсингом команд Bedrock (без необходимости кастомного парсинга строк). Вы получаете табло, формы (интерактивный UI-систему), разрешения, доступ к инвентарю, данные игрока и данные мира.

Контроль пакетов - это то, где Endstone отличается от других решений. Вы можете слушать низкоуровневые сетевые пакеты до их обработки сервером. Это открывает двери для анти-чита, хаков совместимости между версиями и тонкого отмены событий. Измените пакет в полёте, и изменение нормально распространится.

Автоматически оставаться совместимым с последними выпусками Bedrock? Философия дизайна отдает предпочтение поддержке ежемесячных релизов Minecraft вместо игры в догонялки. Релиз v0.11.3 добавил поддержку реестра BlockType и исправил несколько ошибок сериализации пакетов, вызывающих отключения. Это темп, на котором вы сможете рассчитывать - быстрые итерации, поддерживающие API актуальным.


Что может поймать людей

Плагины на Python удобны, но медленнее, чем C++. Если вы строите что-то, работающее на каждом тике для тысяч игроков, C++ - ваш ответ. Но для событий, срабатывающих периодически (подключение игрока, чат, кастомные команды), Python достаточно быстр.

Миры, созданные в чистом Bedrock, будут работать, но если у вас есть резервные копии реалма или мир-специфичные данные вне папки уровня (например, метаданные резервной копии реалма), вам, возможно, потребуется ручная миграция. Endstone обрабатывает формат мира родно - это просто окружающая инфраструктура, которая иногда требует调整.

Также помните, что вы запускаете **Bedrock**-сервер, а не Java. Это важно для доступности плагинов. Многие популярные плагины для Java (Essentials, Vault, библиотеки форматирования чата) не имеют аналогов для Bedrock. Вам придётся писать больше с нуля. Сообщество меньше, но растёт, а официальные репозитории шаблонов дают стартовые точки.


Как это сравнивается с альтернативами

PocketMine и Nukkit - старые реализации серверов Bedrock. Они не запускают родной Bedrock под капотом - вместо этого они переименовали сервер с нуля. Это означает больше контроля, но и больше обслуживания, медленнее обновления и иногда тонкие различия в поведении. Endstone оборачивает реальный Bedrock, поэтому стандартные функции гарантированно сохраняются.

Официальное скриптинг-аддон ограничено по дизайну. Оно отлично подходит для косметики и простой логики, но не может подключаться к сервер-уровню событий или систем разрешений. Endstone - лучший выбор, если вам нужный контроль.

Если вы на Java Edition, Paper (или Spigot/Bukkit) по-прежнему остаётся золотым стандартом и всегда будет таковым. Endstone специально для сообществ Bedrock, нуждающихся в инфраструктуре плагинов.


Примечания к реальному запуску

Запустите его в Docker для чистой изоляции и обновлений. Запустите его за обратным прокси, если вы публикуете его публично (Bedrock использует UDP, поэтому ваша конфигурация брандмауэра важна). И перед развертыванием чего-либо в продакшн протестируйте плагины локально. Разработочная настройка Endstone достаточно проста, чтобы итерировать на ноутбуке.

Для хостинга публичного сервера рассмотрите использование наших бесплатных инструментов DNS, предлагаемых на Minecraft.How's бесплатном DNS-сервисе, чтобы управлять доменом сервера надёжно и дёшево. И если вы поддерживаете белый список, Minecraft Whitelist Creator упрощает генерацию и управление списком игроков.

Проверьте сообщество Discord (ссылка на GitHub-репо) перед тем, как застрянете. Разработчики отвечают быстро, и вы найдёте примеры плагинов и советы по развертыванию от людей, управляющих живыми серверами.

Об авторе
Alexandru Maftei
Alexandru MafteiВедущий автор

Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.

Поделитесь с друзьями!

Комментарии

Пока нет комментариев. Станьте первым, кто поделится своим мнением!

We use cookies to improve your experience. By continuing to use this site, you agree to our use of cookies. Read our Privacy Policy