搬运一批Bedrock wiki内容,完善翻译
This commit is contained in:
3
docs/wiki/servers/index.md
Normal file
3
docs/wiki/servers/index.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Servers & Realms
|
||||
---
|
||||
126
docs/wiki/servers/raknet-and-mcpe.md
Normal file
126
docs/wiki/servers/raknet-and-mcpe.md
Normal file
@@ -0,0 +1,126 @@
|
||||
---
|
||||
title: RakNet and MCPE
|
||||
mentions:
|
||||
- ZestiiSpaghett
|
||||
- MedicalJewel105
|
||||
- SmokeyStack
|
||||
- ThomasOrs
|
||||
- Adrian8115
|
||||
---
|
||||
|
||||
Minecraft Bedrock uses a protocol known as [RakNet](http://www.jenkinssoftware.com/)
|
||||
Unlike Minecraft Java edition, Bedrock uses UDP on the port 19132
|
||||
|
||||
You can find a list of Minecraft Bedrock server softwares [here](/servers/server-software#active-software).
|
||||
|
||||
## RakNet Notes
|
||||
|
||||
- All strings are prefixed with an unsigned short depicting their length.
|
||||
- The offline message id will always be: 00ffff00fefefefefdfdfdfd12345678 (hex) - this series of bytes will be referred to as *Magic*
|
||||
- The offline message id is sent with unconnected messages such as unconnected pings and pongs.
|
||||
- The GUIDS used by RakNet are 8 bytes long.
|
||||
- The first byte is used to identify the type of message.
|
||||
|
||||
## Data Types
|
||||
|
||||
| Type | Size | Range | Notes |
|
||||
| -------------- | ---- | --------------- | -------------------------------------------------------------- |
|
||||
| Byte | 1 | 0-255 | An unsigned integer |
|
||||
| Long | 8 | -2^63 to 2^63-1 | Signed 64 bit integer |
|
||||
| Magic | 16 | | 00ffff00fefefefefdfdfdfd12345678 - Will always be those bytes |
|
||||
| Short | 2 | -32768 to 32767 | |
|
||||
| Unsigned Short | 2 | 0 to 65535 | |
|
||||
| String | N/A | N/A | A string prefixed by a short which depicts the length. |
|
||||
| Boolean | 1 | 0-1 | 0x00 is False while 0x01 is True |
|
||||
| Address | 7 | | 1 byte for the ip version 4/6, 4 for the IP and 2 for the port |
|
||||
| uint24le | 3 | | 3-byte little-endian unsigned integer |
|
||||
|
||||
## Contents
|
||||
|
||||
<Checklist>
|
||||
|
||||
- [x] Unconnected Pings
|
||||
- [x] Unconnected Pongs
|
||||
- [x] Open Connection Request 1
|
||||
- [x] Open Connection Reply 1
|
||||
- [x] Open Connection Request 2
|
||||
- [x] Open Connection Reply 2
|
||||
- **From here on, the RakNet connection is established and all RakNet messages are contained in a [Frame Set Packet](https://wiki.vg/Raknet_Protocol#Frame_Set_Packet).**
|
||||
- [x] Connection Request
|
||||
- [x] Connection Request Accepted
|
||||
|
||||
</Checklist>
|
||||
|
||||
### Unconnected Pings
|
||||
|
||||
Minecraft Bedrock will send out a message to all listed servers (and the local network) to check if any games are available and retrieve the MOTD from the game. These messages are known as unconnected pings and are structured in this format:
|
||||
|
||||
`0x01 | client alive time in ms (unsigned long long) | magic | client GUID`
|
||||
|
||||
### Unconnected Pongs
|
||||
|
||||
After this message, the server will respond with something called an unconnected pong. The reason these messages are unconnected is because the client has not established a connection to the server. This is the format of an unconnected pong:
|
||||
|
||||
`0x1c | client alive time in ms (recorded from previous ping) | server GUID | string length | Edition (MCPE or MCEE for Education Edition);MOTD line 1;Protocol Version;Version Name;Player Count;Max Player Count;Server Unique ID;MOTD line 2;Game mode;Game mode (numeric);Port (IPv4);Port (IPv6);`
|
||||
|
||||
Example:
|
||||
|
||||
`MCPE;Dedicated Server;527;1.19.1;0;10;13253860892328930865;Bedrock level;Survival;1;19132;19133;`
|
||||
|
||||
The client doesn't seem to use the gamemode or the numeric value for the gamemode.
|
||||
|
||||
### Open Connection Request 1
|
||||
|
||||
The client sends this when attempting to join the server
|
||||
|
||||
`0x05 | Magic | Protocol version (currently 10 or 0x0a) | RakNet Null Padding`
|
||||
|
||||
The null padding seems to be used to discover the maximum packet size the network can handle.
|
||||
|
||||
The client will send this to the server with decreasing null padding until the server responds with a
|
||||
|
||||
## Open Connection Reply 1
|
||||
|
||||
The server responds with this once the client attempts to join
|
||||
|
||||
`0x06 | magic | server GUID | use encryption boolean (normally false) | RakNet Null Padding Size (Unsigned short, I use 1400)`
|
||||
|
||||
This is the first half of the handshake between the client and the server.
|
||||
|
||||
### Open Connection Request 2
|
||||
|
||||
The client responds with this after they receive the open connection reply 1 packet.
|
||||
|
||||
`0x07 | magic | server address | RakNet Null Padding Size | client GUID`
|
||||
|
||||
### Open Connection Reply 2
|
||||
|
||||
This is the last part of the handshake between the client and the server.
|
||||
|
||||
`0x08 | magic | server GUID | client address | Null Padding Size | use encryption`
|
||||
|
||||
### Connection Request
|
||||
|
||||
This is the part where the client sends the connection request.
|
||||
|
||||
`0x09 | client GUID | Request timestamp (Long) | Secure (Boolean, I use 0x00)`
|
||||
|
||||
### Connection Request Accepted
|
||||
|
||||
The server sends this packet in response to the incoming connection request.
|
||||
|
||||
`0x10 | client Address | System index (Short, unknown what this does. 0 works as a value) | System adresses ([]Address) | Request timestamp (Long) | Accepted timestamp (Long)`
|
||||
|
||||
## Sources
|
||||
::: tip
|
||||
If you are interested and want to read more about it here is the documentation for the Bedrock Protocol and RakNet:
|
||||
|
||||
[RakNet Protocol Documentation](https://wiki.vg/Raknet_Protocol)
|
||||
|
||||
[Newer Bedrock Protocol Documentation for 1.20.50](https://prismarinejs.github.io/minecraft-data/?d=protocol&v=bedrock_1.20.50) [(by PrismarineJS)](https://prismarinejs.github.io) :::
|
||||
|
||||
::: warning
|
||||
There is also the old Bedrock Protocol Wiki which might possibly be outdated!
|
||||
[Bedrock Protocol Documentation](https://wiki.vg/Bedrock_Protocol) :::
|
||||
|
||||
This page is a WIP, feel free to contribute as it is still being worked on.
|
||||
212
docs/wiki/servers/server-software.md
Normal file
212
docs/wiki/servers/server-software.md
Normal file
@@ -0,0 +1,212 @@
|
||||
---
|
||||
title: Bedrock Server Software
|
||||
mentions:
|
||||
- SirLich
|
||||
- DevGod6969
|
||||
- NhanAZ
|
||||
- SmokeyStack
|
||||
- Joemanasdawd
|
||||
- mdisprgrm
|
||||
- Superice666
|
||||
- GreenFrogMCBE
|
||||
- KanadeDev
|
||||
- HUYDGD
|
||||
- TheItsNameless
|
||||
- hvlhx
|
||||
- SmokeyStack
|
||||
- ProtectorYT364
|
||||
- ThomasOrs
|
||||
- lapismyt
|
||||
- ModMaker101
|
||||
- Misledwater79
|
||||
- AzaleeX
|
||||
---
|
||||
|
||||
Minecraft servers allow players to play online or via a local area network with other people. This is very common within Java Edition Minecraft, but is also possible on Bedrock. [You can download the official Mojang BDS software here.](https://www.minecraft.net/en-us/download/server/bedrock).
|
||||
|
||||
Alongside the Vanilla BDS offering, many community projects exist, in a variety of languages.
|
||||
|
||||
## Software by Language
|
||||
|
||||
| Language | Status |
|
||||
| ---------- | -------------------------------------------------------------------- |
|
||||
| PHP | [Still Active](#php) : 4 < [Discontinued](#php-1) : 38 |
|
||||
| Java | [Still Active](#java) : 4 < [Discontinued](#java-1) : 14 |
|
||||
| C++ | [Still Active](#c) : 1 < [Discontinued](#c-1) : 5 |
|
||||
| TypeScript | [Still Active](#typescript) : 4 < [Discontinued](#typescript-1) : 1 |
|
||||
| Go | [Still Active](#go) : 1 < [Discontinued](#go-1) : 5 |
|
||||
| JavaScript | [Still Active](#javascript) : 1 < [Discontinued](#javascript-1) : 6 |
|
||||
| Rust | [Still Active](#rust) : 1 < [Discontinued](#rust-1) : 1 |
|
||||
| C# | Still Active : 0 < [Discontinued](#c-2) : 3 |
|
||||
| C | Still Active : 0 < [Discontinued](#c-3) : 1 |
|
||||
| Python | [Still Active](#python) : 1 < [Discontinued](#python-1) : 2 |
|
||||
| D | Still Active : 0 < [Discontinued](#d) : 1 |
|
||||
| Kotlin | Still Active : 0 < [Discontinued](#kotlin) : 1 |
|
||||
|
||||
## Active Software
|
||||
### C++
|
||||
|
||||
- [LiteLoader](https://github.com/LiteLDev/LiteLoaderBDS)
|
||||
|
||||
### Go
|
||||
|
||||
- [DragonFly](https://github.com/df-mc/dragonfly)
|
||||
|
||||
### Java
|
||||
|
||||
- [JukeBoxMC](https://github.com/LucGamesYT/JukeboxMC)
|
||||
- [NukkitX-version](https://github.com/NukkitX/Nukkit)
|
||||
- [Nukkit PetteriM1 Edition](https://github.com/PetteriM1/NukkitPetteriM1Edition)
|
||||
- [PowerNukkitX](https://github.com/PowerNukkitX/PowerNukkitX)
|
||||
|
||||
### TypeScript
|
||||
|
||||
- [BDSX](https://github.com/bdsx/bdsx)
|
||||
- [JSPrismarine](https://github.com/JSPrismarine/JSPrismarine)
|
||||
- [PowerAllay](https://github.com/PowerAllay/PowerAllay)
|
||||
- [Serenity](https://github.com/SerenityJS)
|
||||
|
||||
### JavaScript
|
||||
|
||||
- [GreenFrogMCBE](https://github.com/GreenFrogMCBE/GreenFrogMCBE)
|
||||
|
||||
### Rust
|
||||
|
||||
- [Netrex](https://github.com/NetrexMC/Netrex)
|
||||
|
||||
### PHP
|
||||
|
||||
- [BetterAltay](https://github.com/Benedikt05/BetterAltay)
|
||||
- [PocketMine-MP](https://github.com/pmmp/PocketMine-MP)
|
||||
- [NetherGamesMC/PocketMine-MP](https://github.com/NetherGamesMC/PocketMine-MP)
|
||||
- [Symply](https://github.com/SymplyX/Symply)
|
||||
- [SynapseNet](https://github.com/DANIHEX/SynapseNet)
|
||||
|
||||
### Python
|
||||
|
||||
- [PieMC](https://github.com/PieMC-Dev/PieMC)
|
||||
|
||||
## Discontinued Software
|
||||
|
||||
### C++
|
||||
|
||||
- [AllayBE](https://github.com/AllayBE/AllayBE)
|
||||
- [BedrockPowder](https://github.com/BedrockPowder/BedrockPowder)
|
||||
- [Cenisys](https://github.com/iTXTech/Cenisys)
|
||||
- [CenisysPro](https://github.com/GenisysPro/CenisysPro)
|
||||
- [Element Zero](https://github.com/Element-0/ElementZero)
|
||||
|
||||
### C#
|
||||
|
||||
- [MiNET](https://github.com/NiclasOlofsson/MiNET)
|
||||
- [NetherServ](https://github.com/protosleep/NetherServ)
|
||||
- [Terac](https://github.com/TeracMC/Terac)
|
||||
|
||||
### C
|
||||
|
||||
- [Podrum](https://github.com/Podrum/Podrum)
|
||||
|
||||
### D
|
||||
|
||||
- [Selery](https://github.com/sel-project/selery)
|
||||
|
||||
### Go
|
||||
|
||||
- [GoMine](https://github.com/Irmine/GoMine)
|
||||
- [Magic-Alpaca](https://github.com/PocketMiner92/Magic-Alpaca)
|
||||
- [Rockit-LMS](https://github.com/cr0sh/Rockit-LMS)
|
||||
- [Saddle](https://github.com/saddlemc/saddle)
|
||||
- [SpecterGO](https://github.com/SpecterTeam/SpecterGO)
|
||||
|
||||
### Java
|
||||
|
||||
- [BukkitPE](https://github.com/BukkitPE/BukkitPE)
|
||||
- [DiamondCore](https://github.com/DRAGKILLS/DiamondCore)
|
||||
- [Dragonet](https://github.com/DragonetMC/Dragonet)
|
||||
- [Dragonet-Legacy](https://github.com/DragonetMC/Dragonet-Legacy)
|
||||
- [GoMint](https://github.com/GoMint/GoMint)
|
||||
- [Jenisys3](https://github.com/FrontierDevs/Jenisys3)
|
||||
- [MagmaBlock](https://github.com/PrismarineMC/MagmaBlock)
|
||||
- [MCPEBukkit](https://github.com/MCPEBukkit/MCPEBukkit)
|
||||
- [MineTurtle](https://github.com/MCPEBukkit/MineTurtle)
|
||||
- [Nukkit](https://github.com/Nukkit/Nukkit)
|
||||
- [PowerNukkit](https://github.com/PowerNukkit/PowerNukkit)
|
||||
- [SpiderMine](https://github.com/QuantumWorks/SpiderMine)
|
||||
- [Terracotta](https://github.com/TerracottaMC/Terracotta)
|
||||
- [voxelwind](https://github.com/voxelwind/voxelwind)
|
||||
|
||||
|
||||
### JavaScript
|
||||
|
||||
- [BlueBird](https://github.com/BlueBirdMC/Server)
|
||||
- [DirtServer](https://github.com/Falkirks/DirtServer)
|
||||
- [MineJS](https://github.com/organization/MineJS)
|
||||
- [NodeMine](https://github.com/NodeMine/NodeMine)
|
||||
- [Numerous-alpaca](https://github.com/numerous-alpaca/numerous-alpaca)
|
||||
- [PocketNode](https://github.com/PocketNode/PocketNode)
|
||||
|
||||
### TypeScript
|
||||
|
||||
- [LeafMCBE](https://github.com/LeafMCBE/LeafMCBE)
|
||||
|
||||
### Kotlin
|
||||
|
||||
- [Kookie](https://github.com/organization/Kookie)
|
||||
|
||||
### PHP
|
||||
|
||||
- [able-mp](https://github.com/AbleUnion/able-mp)
|
||||
- [Altay](https://github.com/TuranicTeam/Altay)
|
||||
- [AtmosPE](https://github.com/AtmosPE/AtmosPE)
|
||||
- [BlueLight](https://github.com/BlueLightJapan/BlueLight)
|
||||
- [ClearSky](https://github.com/ClearSkyTeam/ClearSky)
|
||||
- [ClearSkyTeam/PocketMine-MP](https://github.com/ClearSkyTeam/PocketMine-MP)
|
||||
- [CoreminePE](https://github.com/starfury1927/CoreminePE)
|
||||
- [DevMine](https://github.com/MineCode-Devs/DevMine)
|
||||
- [DragMine](https://github.com/DragMineTeam/DragMine)
|
||||
- [DualNova](https://github.com/DualNova-Team/DualNova)
|
||||
- [Elywing](https://github.com/H4PM/Elywing)
|
||||
- [Elco-MP](https://github.com/elco-mp/Elco-MP)
|
||||
- [Endako](https://github.com/LeronDoesGM/Endako)
|
||||
- [EskoBE](https://github.com/MCPE357/EskoBE)
|
||||
- [Extropy](https://github.com/ConflictPE/Extropy)
|
||||
- [Freven](https://github.com/FrevenTeam/Freven)
|
||||
- [FrontierEdge](https://github.com/FrontierDevs/FrontierEdge)
|
||||
- [FuryMine](https://github.com/XFuryMCPE/FuryMine)
|
||||
- [Genisys](https://github.com/iTXTech/Genisys)
|
||||
- [GenisysPro](https://github.com/GenisysPro/GenisysPro)
|
||||
- [Hydracon](https://github.com/E-DevPM/Hydracon)
|
||||
- [ImagicalMine](https://github.com/ImagicalMine/ImagicalMine)
|
||||
- [Leveryl](https://github.com/LeverylTeam/Leveryl)
|
||||
- [LikeMP](https://github.com/LikeMP-BE/LikeMP)
|
||||
- [LiteCore](https://github.com/LiteCoreTeam/LiteCore-public)
|
||||
- [MechNetwork](https://github.com/MechRalph04/MechNetwork)
|
||||
- [NekoMine-MP](https://github.com/Nekiechan/NekoMine-MP)
|
||||
- [OpenTouch](https://github.com/pooooooon/OpenTouch)
|
||||
- [ShadePE](https://github.com/ExplodingPE/ShadePE)
|
||||
- [PocketMinePlusPlus-Legacy](https://github.com/PrismarineMC/PocketMinePlusPlus-Legacy)
|
||||
- [Prismarine-0.12](https://github.com/PrismarineMC/Prismarine-0.12)
|
||||
- [SkyLightPM](https://github.com/SkyLightMCPE/SkyLightPM)
|
||||
- [StarrySky](https://github.com/StarrySky-PE/StarrySky)
|
||||
- [Steadfast-Hybrid](https://github.com/yungtechboy1/Steadfast-Hybrid)
|
||||
- [SteadFast2](https://github.com/Hydreon/Steadfast2)
|
||||
- [T-STAR](https://github.com/TaleStar/T-STAR)
|
||||
- [Turanic](https://github.com/TuranicTeam/Turanic)
|
||||
- [WolfMC](https://github.com/Wolf-MC/WolfMC)
|
||||
|
||||
### Python
|
||||
|
||||
- [AlphaMC](https://github.com/Suppert/AlphaMC)
|
||||
- [PodrumLegacy](https://github.com/Podrum/PodrumLegacy)
|
||||
|
||||
### Rust
|
||||
|
||||
- [Limonite](https://github.com/iTXTech/limonite)
|
||||
|
||||
## Licensing
|
||||
|
||||
:::tip License
|
||||
This page is licensed under the `GNU Lesser General Public License v3.0`.
|
||||
|
||||
The original source was authored `xinghao2003`, and may be [found here.](https://github.com/xinghao2003/MCBE-ServerSoftware-List)
|
||||
:::
|
||||
Reference in New Issue
Block a user