Add configuration packets and bump protocol version
This commit is contained in:
parent
7fc1c70292
commit
a9324e5290
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Composition is a new Minecraft server written from the ground-up in Rust.
|
Composition is a new Minecraft server written from the ground-up in Rust.
|
||||||
|
|
||||||
Composition is targeting Minecraft version 1.21.1, protocol version 767.
|
Composition is targeting Minecraft version 1.21.5, protocol version 770.
|
||||||
The main goal is to get a working server, then optimize for speed
|
The main goal is to get a working server, then optimize for speed
|
||||||
(multi-threading/kubernetes/etc).
|
(multi-threading/kubernetes/etc).
|
||||||
|
|
||||||
|
@ -9,6 +9,6 @@ services:
|
|||||||
- "25565:25565"
|
- "25565:25565"
|
||||||
environment:
|
environment:
|
||||||
EULA: "TRUE"
|
EULA: "TRUE"
|
||||||
VERSION: "1.21.1"
|
VERSION: "1.21.5"
|
||||||
ONLINE_MODE: "false"
|
ONLINE_MODE: "false"
|
||||||
NETWORK_COMPRESSION_THRESHOLD: "-1"
|
NETWORK_COMPRESSION_THRESHOLD: "-1"
|
||||||
|
@ -20,8 +20,8 @@ use std::time::Instant;
|
|||||||
use tokio_util::sync::CancellationToken;
|
use tokio_util::sync::CancellationToken;
|
||||||
use tracing::{error, info};
|
use tracing::{error, info};
|
||||||
|
|
||||||
pub const PROTOCOL_VERSION: i32 = 767;
|
pub const PROTOCOL_VERSION: i32 = 770;
|
||||||
pub const GAME_VERSION: &str = "1.21.1";
|
pub const GAME_VERSION: &str = "1.21.5";
|
||||||
|
|
||||||
/// A globally accessible instant of Composition's start time.
|
/// A globally accessible instant of Composition's start time.
|
||||||
///
|
///
|
||||||
|
@ -64,7 +64,10 @@ macro_rules! packets {
|
|||||||
ClientState::Disconnected => false,
|
ClientState::Disconnected => false,
|
||||||
}
|
}
|
||||||
})(packet_body)?;
|
})(packet_body)?;
|
||||||
trace!("Parsing packet: {:?} {:?} {:02x} ({} bytes)", direction, client_state, *packet_id, packet_body.len());
|
trace!("Parsing packet: {:?} {:?} {:02x} ({} bytes) {}",
|
||||||
|
direction, client_state, *packet_id, packet_body.len(),
|
||||||
|
packet_body.iter().map(|b| format!("{:02x}", b)).collect::<Vec<_>>().join("")
|
||||||
|
);
|
||||||
let (_, packet) = Packet::body_parser(client_state, direction, packet_id)(packet_body)?;
|
let (_, packet) = Packet::body_parser(client_state, direction, packet_id)(packet_body)?;
|
||||||
// trace!("Parsed packet: {:?}", packet);
|
// trace!("Parsed packet: {:?}", packet);
|
||||||
Ok((input, packet))
|
Ok((input, packet))
|
||||||
@ -111,7 +114,9 @@ macro_rules! packets {
|
|||||||
match self {
|
match self {
|
||||||
Packet::Handshake(handshake) => Some(handshake.next_state),
|
Packet::Handshake(handshake) => Some(handshake.next_state),
|
||||||
Packet::LoginAcknowledged(_) => Some(ClientState::Configuration),
|
Packet::LoginAcknowledged(_) => Some(ClientState::Configuration),
|
||||||
|
Packet::AcknowledgeFinishConfiguration(_) => Some(ClientState::Play),
|
||||||
Packet::LoginDisconnect(_) => Some(ClientState::Disconnected),
|
Packet::LoginDisconnect(_) => Some(ClientState::Disconnected),
|
||||||
|
Packet::ConfigurationDisconnect(_) => Some(ClientState::Disconnected),
|
||||||
Packet::PlayDisconnect(_) => Some(ClientState::Disconnected),
|
Packet::PlayDisconnect(_) => Some(ClientState::Disconnected),
|
||||||
Packet::PingResponse(_) => Some(ClientState::Disconnected),
|
Packet::PingResponse(_) => Some(ClientState::Disconnected),
|
||||||
_ => None,
|
_ => None,
|
||||||
@ -246,11 +251,102 @@ packets!(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
configuration Configuration {
|
configuration Configuration {
|
||||||
serverbound Serverbound {}
|
serverbound Serverbound {
|
||||||
|
packet ConfigurationClientInformation 0x00 {
|
||||||
|
field locale: String,
|
||||||
|
field view_distance: i8,
|
||||||
|
field chat_mode: VarInt,
|
||||||
|
field chat_colors: bool,
|
||||||
|
field displayed_skin_parts: u8,
|
||||||
|
field main_hand: VarInt,
|
||||||
|
field enable_text_filtering: bool,
|
||||||
|
field allow_server_listing: bool,
|
||||||
|
field particle_status: VarInt,
|
||||||
|
}
|
||||||
|
packet ConfigurationCookieResponse 0x01 {
|
||||||
|
field key: String,
|
||||||
|
field payload: Option<Vec<u8>>,
|
||||||
|
}
|
||||||
|
packet ConfigurationServerboundPluginMessage 0x02 {
|
||||||
|
field channel: String,
|
||||||
|
rest data,
|
||||||
|
}
|
||||||
|
packet AcknowledgeFinishConfiguration 0x03 {}
|
||||||
|
packet ConfigurationServerboundKeepAlive 0x04 {
|
||||||
|
field payload: i64,
|
||||||
|
}
|
||||||
|
packet ConfigurationPong 0x05 {
|
||||||
|
field payload: i32,
|
||||||
|
}
|
||||||
|
packet ConfigurationResourcePackResponse 0x06 {
|
||||||
|
field uuid: Uuid,
|
||||||
|
field result: VarInt,
|
||||||
|
}
|
||||||
|
packet ServerboundKnownPacks 0x07 {
|
||||||
|
// TODO: Implement
|
||||||
|
rest data,
|
||||||
|
}
|
||||||
|
}
|
||||||
clientbound Clientbound {
|
clientbound Clientbound {
|
||||||
|
packet ConfigurationCookieRequest 0x00 {
|
||||||
|
field key: String,
|
||||||
|
}
|
||||||
|
packet ConfigurationClientboundPluginMessage 0x01 {
|
||||||
|
field channel: String,
|
||||||
|
rest data,
|
||||||
|
}
|
||||||
packet ConfigurationDisconnect 0x02 {
|
packet ConfigurationDisconnect 0x02 {
|
||||||
field reason: Chat,
|
field reason: Chat,
|
||||||
}
|
}
|
||||||
|
packet FinishConfiguration 0x03 {}
|
||||||
|
packet ConfigurationClientboundKeepAlive 0x04 {
|
||||||
|
field payload: i64,
|
||||||
|
}
|
||||||
|
packet ConfigurationPing 0x05 {
|
||||||
|
field payload: i32,
|
||||||
|
}
|
||||||
|
packet ResetChat 0x06 {}
|
||||||
|
packet RegistryData 0x07 {
|
||||||
|
// TODO: Implement
|
||||||
|
rest data,
|
||||||
|
}
|
||||||
|
packet ConfigurationRemoveResourcePack 0x08 {
|
||||||
|
field uuid: Option<Uuid>,
|
||||||
|
}
|
||||||
|
packet ConfigurationAddResourcePack 0x09 {
|
||||||
|
field uuid: Uuid,
|
||||||
|
field url: String,
|
||||||
|
field hash: String,
|
||||||
|
field forced: bool,
|
||||||
|
field prompt: Option<Chat>,
|
||||||
|
}
|
||||||
|
packet ConfigurationStoreCookie 0x0A {
|
||||||
|
field key: String,
|
||||||
|
field payload: Vec<u8>,
|
||||||
|
}
|
||||||
|
packet ConfigurationTransfer 0x0B {
|
||||||
|
field host: String,
|
||||||
|
field port: u16,
|
||||||
|
}
|
||||||
|
packet FeatureFlags 0x0C {
|
||||||
|
field feature_flags: Vec<String>,
|
||||||
|
}
|
||||||
|
packet ConfigurationUpdateTags 0x0D {
|
||||||
|
// TODO: Implement
|
||||||
|
rest data,
|
||||||
|
}
|
||||||
|
packet ClientboundKnownPacks 0x0E {
|
||||||
|
// TODO: Implement
|
||||||
|
rest data,
|
||||||
|
}
|
||||||
|
packet ConfigurationCustomReportDetails 0x0F {
|
||||||
|
// TODO: Implement
|
||||||
|
rest data,
|
||||||
|
}
|
||||||
|
packet ConfigurationServerLinks 0x10 {
|
||||||
|
// TODO: Implement
|
||||||
|
rest data,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
play Play {
|
play Play {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user