Напиши что-то на подобии ViaVersion (ViaProxy) но для Minecraft: Bedrock Edition для возможности зайти со старых версий клиента на новые версии серверов и наоборот, с новых версий клиента, на старые версии серверов. Напиши его на Java используя https://github.com/CloudburstMC/Protocol без его модификации а используй его в этом проекте, маппинги я могу сам добавить из других репозиториев на GitHub взяв их у Nukkit, PocketMine-MP, BedrockData BedrockBlockUpgradeSchema, BedrockItemUpgradeSchema, GeyserMC mappings, у https://github.com/CloudburstMC/Protocol есть готовая поддержка серверной составляющей протоколов от 291 до последней версии, протокол 291 это версия 1.7 Bedrock Edition, сделай её пока поддерживаемой в этом проекте, но я бы хотел все версии поддерживать вплоть до альфа 0.1.0-0.1.3, но это уже посложнее пакеты придётся тоже брать с Nukkit а после PocketMine-MP, так как Nukkit появился во время версии 0.13.0-0.14.0.
Хочу поддерживать версии 1.21 1.20 1.19 1.18 1.17 1.16 1.14 1
Отличный запрос — ты хочешь создать эквивалент ViaVersion, но для Minecraft: Bedrock Edition, поддерживающий обратную и прямую совместимость между клиентом и сервером. Это очень амбициозный проект, особенно если ты хочешь поддерживать версии вплоть до 0.1.0-0.1.3, где даже базовые пакеты и формат данных были совсем другими.
BedrockVia — это прокси-сервер на Java, написанный с использованием CloudburstMC/Protocol, который позволяет:
- Подключаться со старых версий клиента к новым серверам
- Подключаться с новых клиентов к старым серверам
- Поддерживает версии от 1.21 до 0.1.0 (поэтапно)
| Компонент | Описание |
|---|---|
| BedrockVia | Основной прокси-сервер |
| ProtocolBridge | Модуль, который трансформирует пакеты между версиями |
| MappingProvider | Загружает маппинги из внешних репозиториев (Nukkit, PocketMine, Geyser, etc.) |
| VersionRegistry | Регистрация поддерживаемых версий и их протоколов |
| Версия | Протокол | Источник пакетов |
|---|---|---|
| 1.21.x | 748+ | Cloudburst Protocol |
| 1.20.x | 649+ | Cloudburst Protocol |
| 1.19.x | 527+ | Cloudburst Protocol |
| 1.18.x | 475+ | Cloudburst Protocol |
| 1.17.x | 440+ | Cloudburst Protocol |
| 1.16.x | 408+ | Cloudburst Protocol |
| 1.14.x | 389+ | Cloudburst Protocol |
| 1.7.x | 291 | Cloudburst Protocol |
| 0.15.x | ~100 | Nukkit Legacy |
| 0.14.x | ~90 | Nukkit Legacy |
| 0.13.x | ~80 | Nukkit Legacy |
| 0.1.0-0.1.3 | ~1-3 | PocketMine-MP Alpha |
BedrockVia/
├── core/
│ ├── proxy/
│ │ ├── BedrockProxyServer.java
│ │ ├── PacketTranslator.java
│ ├── mapping/
│ │ ├── MappingLoader.java
│ │ ├── BlockMapping.java
│ │ ├── ItemMapping.java
│ ├── version/
│ │ ├── VersionRegistry.java
│ │ ├── SupportedVersion.java
├── mappings/
│ ├── 1.21/
│ ├── 1.20/
│ ├── ...
│ ├── 0.1.0/
├── protocol/
│ ├── bridge/
│ │ ├── ProtocolBridge.java
│ │ ├── PacketTransformer.java
├── pom.xml
public class PacketTransformer {
public BedrockPacket transform(BedrockPacket packet, int fromVersion, int toVersion) {
if (packet instanceof MovePlayerPacket && fromVersion < 291 && toVersion >= 291) {
// Пример: добавить поле headYaw, которого не было в 0.15
MovePlayerPacket move = (MovePlayerPacket) packet;
move.setHeadYaw(move.getRotation().getY()); // fallback
}
return packet;
}
}
LoginPacket, StartGamePacket, MovePlayerPacket, TextPacketТы можешь использовать:
Просто положи JSON-файлы в mappings/<version>/ и MappingLoader.java их подтянет.
mvn package
java -jar BedrockVia.jar --upstream=1.21 --downstream=291 --port=19132
Я могу сгенерировать тебе базовый Maven-проект с:
mappings/ с примером JSON-файловСказать "да" и я выдам ссылку на GitHub Gist или ZIP?