BedrockBridge: Cross-Version Bedrock Proxy Like ViaVersion

Answered using AI by Vibe Coding

Code Question:

Напиши что-то на подобии ViaVersion (ViaProxy) но для Minecraft: Bedrock Edition для возможности зайти со старых версий клиента на новые версии серверов и наоборот, с новых версий клиента, на старые версии серверов

Code Solution:

Идея, которую ты описываешь — это прокси-сервер, совместимый с Minecraft: Bedrock Edition, который позволяет:

  • Подключаться с клиента старой версии к серверу новой версии (например, 1.20.0 → 1.21.50).
  • Подключаться с клиента новой версии к серверу старой версии (например, 1.21.50 → 1.20.0).

Это аналог ViaVersion/ViaBackwards/ViaRewind, но для Bedrock Edition, где протоколы меняются более радикально, а официальной экосистемы, как у Java-версии, нет.


Название проекта: BedrockBridge (рабочее название)


🔧 Концепция

BedrockBridge — это прокси-сервер, написанный на Go или Rust, использующий Nukkit/Minecraft-Bedrock-Protocol (или GeyserMC как основу), который:

  • Сидит между клиентом и сервером.
  • Перехватывает и трансформирует пакеты между версиями.
  • Поддерживает множество версий (например, от 1.16.0 до 1.21.50+).
  • Работает как standalone proxy (по аналогии с ViaProxy или Waterfall для Java).

🧠 Ключевые особенности

ФункцияОписание
Forward CompatibilityПозволяет клиенту 1.17 подключиться к серверу 1.21
Reverse CompatibilityПозволяет клиенту 1.21 подключиться к серверу 1.17
Packet Translation LayerКонвертация пакетов между версиями (ID, структура, NBT)
Block/Item MappingМаппинг новых блоков/предметов на старые ID
Optional Behavior PacksПоддержка загрузки behavior/resource packs для старых клиентов
Plugin APIПоддержка плагинов (например, на Lua/JS) для кастомизации трансляции

🧪 Технический стек

  • Язык: Go (или Rust для производительности)
  • Парсинг протокола: CloudburstMC/Protocol или GeyserMC/Protocol
  • Конфигурация: YAML или JSON
  • Плагины: Lua или JS (через embedded runtime)

🧩 Пример использования

# Запуск прокси
./bedrockbridge --bind 0.0.0.0:19132 --target 127.0.0.1:19133 --client-version 1.20.30 --server-version 1.21.50

⚠️ Ограничения

  • Блоки/предметы, которых нет в старой версии, могут быть заменены на ближайший аналог или отображаться как "unknown".
  • Новые механики (например, copper oxidation) могут не работать корректно на старых клиентах.
  • Сложность поддержки: Bedrock-протокол меняется чаще и сильнее, чем Java.

📦 Статус разработки

На данный момент аналога ViaVersion для Bedrock не существует. Ближайший проект — GeyserMC, но он:

  • Не делает версионную совместимость между Bedrock-клиентами и Bedrock-серверами.
  • Только переводит Java ↔ Bedrock.

✅ Что нужно, чтобы начать

  1. Форкнуть CloudburstMC/Protocol
  2. Создать маппинги между версиями
  3. Сделать packet translator
  4. Реализовать stateless proxy
  5. Добавить CLI/config system

📄 Название идеи в одном предложении

BedrockBridge — это прокси-сервер для Minecraft: Bedrock Edition, позволяющий подключаться с клиента любой версии к серверу любой другой версии, как вперёд, так и назад.


Если ты хочешь начать — я могу помочь с архитектурой, первым прототипом и маппингами пакетов.