1.16.1 protocol support (736) (#345)

* Update shifted packet ids

* Add new smithing recipe type

* Also support 1.16 (735), same packets as 1.16.1 (736)

New packets:

* GenerateStructure

New packet variants:

* UseEntity_Sneakflag, split from UseEntity_Hand

* ClientAbilities_u8, split from ClientAbilities_f32

* UpdateJigsawBlock_Joint, split from UpdateJigsawBlock_Type

* ServerMessage_Sender, split from ServerMessage_Position

* ChunkData_Biomes3D_bool, split from ChunkData_Biomes3D

* JoinGame_WorldNames, split from JoinGame_HashedSeed_Respawn

* Respawn_WorldName, split from Respawn_Gamemode

* EntityEquipment_VarInt renamed

* UpdateLight_WithTrust, split from UpdateLight_NoTrust

* LoginSuccess_UUID, split from LoginSuccess_String
This commit is contained in:
ice_iix 2020-06-27 18:39:59 -07:00
parent 0670e76e0c
commit 0626888197
23 changed files with 475 additions and 129 deletions

View File

@ -23,6 +23,8 @@ Join with your favorite IRC client or [Matrix](https://matrix.to/#/#_espernet_#s
| Game version | Protocol version | Supported? |
| ------ | --- | --- |
| 1.16.1 | 736 | ✓ |
| 1.16 | 735 | ✓ |
| 1.15.2 | 578 | ✓ |
| 1.15.1 | 575 | ✓ |
| 1.14.4 | 498 | ✓ |

View File

@ -43,8 +43,9 @@ use std::net::TcpStream;
use std::sync::atomic::{AtomicBool, AtomicI32, Ordering};
use std::time::{Duration, Instant};
pub const SUPPORTED_PROTOCOLS: [i32; 19] = [
578, 575, 498, 490, 485, 480, 477, 452, 451, 404, 340, 316, 315, 210, 109, 107, 74, 47, 5,
pub const SUPPORTED_PROTOCOLS: [i32; 21] = [
736, 735, 578, 575, 498, 490, 485, 480, 477, 452, 451, 404, 340, 316, 315, 210, 109, 107, 74,
47, 5,
];
static CURRENT_PROTOCOL_VERSION: AtomicI32 = AtomicI32::new(SUPPORTED_PROTOCOLS[0]);

View File

@ -179,13 +179,22 @@ state_packets!(
}
/// UseEntity is sent when the user interacts (right clicks) or attacks
/// (left clicks) an entity.
packet UseEntity {
packet UseEntity_Sneakflag {
field target_id: VarInt =,
field ty: VarInt =,
field target_x: f32 = when(|p: &UseEntity| p.ty.0 == 2),
field target_y: f32 = when(|p: &UseEntity| p.ty.0 == 2),
field target_z: f32 = when(|p: &UseEntity| p.ty.0 == 2),
field hand: VarInt = when(|p: &UseEntity| p.ty.0 == 0 || p.ty.0 == 2),
field target_x: f32 = when(|p: &UseEntity_Sneakflag| p.ty.0 == 2),
field target_y: f32 = when(|p: &UseEntity_Sneakflag| p.ty.0 == 2),
field target_z: f32 = when(|p: &UseEntity_Sneakflag| p.ty.0 == 2),
field hand: VarInt = when(|p: &UseEntity_Sneakflag| p.ty.0 == 0 || p.ty.0 == 2),
field sneaking: bool =,
}
packet UseEntity_Hand {
field target_id: VarInt =,
field ty: VarInt =,
field target_x: f32 = when(|p: &UseEntity_Hand| p.ty.0 == 2),
field target_y: f32 = when(|p: &UseEntity_Hand| p.ty.0 == 2),
field target_z: f32 = when(|p: &UseEntity_Hand| p.ty.0 == 2),
field hand: VarInt = when(|p: &UseEntity_Hand| p.ty.0 == 0 || p.ty.0 == 2),
}
packet UseEntity_Handsfree {
field target_id: VarInt =,
@ -198,6 +207,12 @@ state_packets!(
field target_id: i32 =,
field ty: u8 =,
}
/// Sent when Generate is pressed on the Jigsaw Block interface.
packet GenerateStructure {
field location: Position =,
field levels: VarInt =,
field keep_jigsaws: bool =,
}
/// KeepAliveServerbound is sent by a client as a response to a
/// KeepAliveClientbound. If the client doesn't reply the server
/// may disconnect the client.
@ -280,11 +295,14 @@ state_packets!(
}
/// ClientAbilities is used to modify the players current abilities.
/// Currently flying is the only one
packet ClientAbilities {
packet ClientAbilities_f32 {
field flags: u8 =,
field flying_speed: f32 =,
field walking_speed: f32 =,
}
packet ClientAbilities_u8 {
field flags: u8 =,
}
/// PlayerDigging is sent when the client starts/stops digging a block.
/// It also can be sent for droppping items and eating/shooting.
packet PlayerDigging {
@ -381,7 +399,15 @@ state_packets!(
field slot: i16 =,
field clicked_item: Option<item::Stack> =,
}
packet UpdateJigsawBlock {
packet UpdateJigsawBlock_Joint {
field location: Position =,
field name: String =,
field target: String =,
field pool: String =,
field final_state: String =,
field joint_type: String =,
}
packet UpdateJigsawBlock_Type {
field location: Position =,
field attachment_type: String =,
field target_pool: String =,
@ -840,7 +866,13 @@ state_packets!(
/// ServerMessage is a message sent by the server. It could be from a player
/// or just a system message. The Type field controls the location the
/// message is displayed at and when the message is displayed.
packet ServerMessage {
packet ServerMessage_Sender {
field message: format::Component =,
/// 0 - Chat message, 1 - System message, 2 - Action bar message
field position: u8 =,
field sender: UUID =,
}
packet ServerMessage_Position {
field message: format::Component =,
/// 0 - Chat message, 1 - System message, 2 - Action bar message
field position: u8 =,
@ -1015,6 +1047,17 @@ state_packets!(
}
/// ChunkData sends or updates a single chunk on the client. If New is set
/// then biome data should be sent too.
packet ChunkData_Biomes3D_bool {
field chunk_x: i32 =,
field chunk_z: i32 =,
field new: bool =,
field ignore_old_data: bool =,
field bitmask: VarInt =,
field heightmaps: Option<nbt::NamedTag> =,
field biomes: Biomes3D = when(|p: &ChunkData_Biomes3D_bool| p.new),
field data: LenPrefixedBytes<VarInt> =,
field block_entities: LenPrefixed<VarInt, Option<nbt::NamedTag>> =,
}
packet ChunkData_Biomes3D {
field chunk_x: i32 =,
field chunk_z: i32 =,
@ -1157,6 +1200,38 @@ state_packets!(
}
/// JoinGame is sent after completing the login process. This
/// sets the initial state for the client.
packet JoinGame_WorldNames {
/// The entity id the client will be referenced by
field entity_id: i32 =,
/// The starting gamemode of the client
field gamemode: u8 =,
/// The previous gamemode of the client
field previous_gamemode: u8 =,
/// Identifiers for all worlds on the server
field world_names: LenPrefixed<VarInt, String> =,
/// Represents a dimension registry
field dimension_codec: Option<nbt::NamedTag> =,
/// The dimension the client is starting in
field dimension: String =,
/// The world being spawned into
field world_name: String =,
/// Truncated SHA-256 hash of world's seed
field hashed_seed: i64 =,
/// The max number of players on the server
field max_players: u8 =,
/// The render distance (2-32)
field view_distance: VarInt =,
/// Whether the client should reduce the amount of debug
/// information it displays in F3 mode
field reduced_debug_info: bool =,
/// Whether to prompt or immediately respawn
field enable_respawn_screen: bool =,
/// Whether the world is in debug mode
field is_debug: bool =,
/// Whether the world is a superflat world
field is_flat: bool =,
}
packet JoinGame_HashedSeed_Respawn {
/// The entity id the client will be referenced by
field entity_id: i32 =,
@ -1476,7 +1551,7 @@ state_packets!(
field hash: String =,
}
/// Respawn is sent to respawn the player after death or when they move worlds.
packet Respawn {
packet Respawn_Gamemode {
field dimension: i32 =,
field difficulty: u8 =,
field gamemode: u8 =,
@ -1489,6 +1564,16 @@ state_packets!(
field gamemode: u8 =,
field level_type: String =,
}
packet Respawn_WorldName {
field dimension: String =,
field world_name: String =,
field hashed_seed: i64 =,
field gamemode: u8 =,
field previous_gamemode: u8 =,
field is_debug: bool =,
field is_flat: bool =,
field copy_metadata: bool =,
}
/// EntityHeadLook rotates an entity's head to the new angle.
packet EntityHeadLook {
field entity_id: VarInt =,
@ -1583,7 +1668,7 @@ state_packets!(
/// EntityEquipment is sent to display an item on an entity, like a sword
/// or armor. Slot 0 is the held item and slots 1 to 4 are boots, leggings
/// chestplate and helmet respectively.
packet EntityEquipment {
packet EntityEquipment_VarInt {
field entity_id: VarInt =,
field slot: VarInt =,
field item: Option<item::Stack> =,
@ -1880,7 +1965,16 @@ state_packets!(
field status: VarInt =,
field successful: bool =,
}
packet UpdateLight {
packet UpdateLight_WithTrust {
field chunk_x: VarInt =,
field chunk_z: VarInt =,
field trust_edges: bool =,
field sky_light_mask: VarInt =,
field block_light_mask: VarInt =,
field empty_sky_light_mask: VarInt =,
field light_arrays: Vec<u8> =,
}
packet UpdateLight_NoTrust {
field chunk_x: VarInt =,
field chunk_z: VarInt =,
field sky_light_mask: VarInt =,
@ -1965,11 +2059,15 @@ state_packets!(
/// LoginSuccess is sent by the server if the player successfully
/// authenicates with the session servers (online mode) or straight
/// after LoginStart (offline mode).
packet LoginSuccess {
packet LoginSuccess_String {
/// String encoding of a uuid (with hyphens)
field uuid: String =,
field username: String =,
}
packet LoginSuccess_UUID {
field uuid: UUID =,
field username: String =,
}
/// SetInitialCompression sets the compression threshold during the
/// login state.
packet SetInitialCompression {
@ -2590,6 +2688,11 @@ pub enum RecipeData {
ingredient: RecipeIngredient,
result: Option<item::Stack>,
},
Smithing {
base: RecipeIngredient,
addition: RecipeIngredient,
result: Option<item::Stack>,
},
}
impl Default for RecipeData {
@ -2704,6 +2807,11 @@ impl Serializable for Recipe {
ingredient: Serializable::read_from(buf)?,
result: Serializable::read_from(buf)?,
},
"minecraft:smithing" => RecipeData::Smithing {
base: Serializable::read_from(buf)?,
addition: Serializable::read_from(buf)?,
result: Serializable::read_from(buf)?,
},
_ => panic!("unrecognized recipe type: {}", ty),
};

View File

@ -13,6 +13,7 @@ mod v1_14_2;
mod v1_14_3;
mod v1_14_4;
mod v1_15;
mod v1_16_1;
mod v1_7_10;
mod v1_8_9;
mod v1_9;
@ -24,6 +25,8 @@ mod v1_9_2;
pub fn protocol_name_to_protocol_version(s: String) -> i32 {
match s.as_ref() {
"" => SUPPORTED_PROTOCOLS[0],
"1.16.1" => 736,
"1.16" => 735,
"1.15.2" => 578,
"1.15.1" => 575,
"1.14.4" => 498,
@ -61,6 +64,8 @@ pub fn translate_internal_packet_id_for_version(
to_internal: bool,
) -> i32 {
match version {
736 => v1_16_1::translate_internal_packet_id(state, dir, id, to_internal),
735 => v1_16_1::translate_internal_packet_id(state, dir, id, to_internal),
578 => v1_15::translate_internal_packet_id(state, dir, id, to_internal),
575 => v1_15::translate_internal_packet_id(state, dir, id, to_internal),
498 => v1_14_4::translate_internal_packet_id(state, dir, id, to_internal),

View File

@ -17,13 +17,13 @@ protocol_packet_ids!(
0x06 => ClickWindow_u8
0x07 => CloseWindow
0x08 => PluginMessageServerbound
0x09 => UseEntity
0x09 => UseEntity_Hand
0x0a => KeepAliveServerbound_VarInt
0x0b => PlayerPosition
0x0c => PlayerPositionLook
0x0d => PlayerLook
0x0e => Player
0x0f => ClientAbilities
0x0f => ClientAbilities_f32
0x10 => PlayerDigging_u8
0x11 => PlayerAction
0x12 => SteerVehicle
@ -52,7 +52,7 @@ protocol_packet_ids!(
0x0c => BossBar
0x0d => ServerDifficulty
0x0e => TabCompleteReply
0x0f => ServerMessage
0x0f => ServerMessage_Position
0x10 => MultiBlockChange_VarInt
0x11 => ConfirmTransaction
0x12 => WindowClose
@ -88,7 +88,7 @@ protocol_packet_ids!(
0x30 => EntityDestroy
0x31 => EntityRemoveEffect
0x32 => ResourcePackSend
0x33 => Respawn
0x33 => Respawn_Gamemode
0x34 => EntityHeadLook
0x35 => WorldBorder
0x36 => Camera
@ -97,7 +97,7 @@ protocol_packet_ids!(
0x39 => EntityMetadata
0x3a => EntityAttach_leashed
0x3b => EntityVelocity
0x3c => EntityEquipment
0x3c => EntityEquipment_VarInt
0x3d => SetExperience
0x3e => UpdateHealth
0x3f => ScoreboardObjective
@ -122,7 +122,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
}
}

View File

@ -21,7 +21,7 @@ protocol_packet_ids!(
0x0a => PluginMessageServerbound
0x0b => EditBook
0x0c => QueryEntityNBT
0x0d => UseEntity
0x0d => UseEntity_Hand
0x0e => KeepAliveServerbound_i64
0x0f => Player
0x10 => PlayerPosition
@ -31,7 +31,7 @@ protocol_packet_ids!(
0x14 => SteerBoat
0x15 => PickItem
0x16 => CraftRecipeRequest
0x17 => ClientAbilities
0x17 => ClientAbilities_f32
0x18 => PlayerDigging
0x19 => PlayerAction
0x1a => SteerVehicle
@ -67,7 +67,7 @@ protocol_packet_ids!(
0x0b => BlockChange_VarInt
0x0c => BossBar
0x0d => ServerDifficulty
0x0e => ServerMessage
0x0e => ServerMessage_Position
0x0f => MultiBlockChange_VarInt
0x10 => TabCompleteReply
0x11 => DeclareCommands
@ -110,7 +110,7 @@ protocol_packet_ids!(
0x36 => EntityDestroy
0x37 => EntityRemoveEffect
0x38 => ResourcePackSend
0x39 => Respawn
0x39 => Respawn_Gamemode
0x3a => EntityHeadLook
0x3b => SelectAdvancementTab
0x3c => WorldBorder
@ -120,7 +120,7 @@ protocol_packet_ids!(
0x40 => EntityMetadata
0x41 => EntityAttach
0x42 => EntityVelocity
0x43 => EntityEquipment
0x43 => EntityEquipment_VarInt
0x44 => SetExperience
0x45 => UpdateHealth
0x46 => ScoreboardObjective
@ -140,7 +140,7 @@ protocol_packet_ids!(
0x55 => EntityEffect
0x56 => DeclareRecipes
0x57 => TagsWithEntities
0x58 => UpdateLight
0x58 => UpdateLight_NoTrust
}
}
login Login {
@ -152,7 +152,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
0x04 => LoginPluginRequest
}

View File

@ -21,7 +21,7 @@ protocol_packet_ids!(
0x0a => PluginMessageServerbound
0x0b => EditBook
0x0c => QueryEntityNBT
0x0d => UseEntity
0x0d => UseEntity_Hand
0x0e => KeepAliveServerbound_i64
0x0f => Player
0x10 => PlayerPosition
@ -31,7 +31,7 @@ protocol_packet_ids!(
0x14 => SteerBoat
0x15 => PickItem
0x16 => CraftRecipeRequest
0x17 => ClientAbilities
0x17 => ClientAbilities_f32
0x18 => PlayerDigging
0x19 => PlayerAction
0x1a => SteerVehicle
@ -67,7 +67,7 @@ protocol_packet_ids!(
0x0b => BlockChange_VarInt
0x0c => BossBar
0x0d => ServerDifficulty
0x0e => ServerMessage
0x0e => ServerMessage_Position
0x0f => MultiBlockChange_VarInt
0x10 => TabCompleteReply
0x11 => DeclareCommands
@ -110,7 +110,7 @@ protocol_packet_ids!(
0x36 => EntityDestroy
0x37 => EntityRemoveEffect
0x38 => ResourcePackSend
0x39 => Respawn
0x39 => Respawn_Gamemode
0x3a => EntityHeadLook
0x3b => SelectAdvancementTab
0x3c => WorldBorder
@ -120,7 +120,7 @@ protocol_packet_ids!(
0x40 => EntityMetadata
0x41 => EntityAttach
0x42 => EntityVelocity
0x43 => EntityEquipment
0x43 => EntityEquipment_VarInt
0x44 => SetExperience
0x45 => UpdateHealth
0x46 => ScoreboardObjective
@ -140,7 +140,7 @@ protocol_packet_ids!(
0x55 => EntityEffect
0x56 => DeclareRecipes
0x57 => TagsWithEntities
0x58 => UpdateLight
0x58 => UpdateLight_NoTrust
0x59 => WindowOpen_VarInt
0x5a => TradeList_WithoutRestock // TODO: without 1.14 added fields
}
@ -154,7 +154,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
0x04 => LoginPluginRequest
}

View File

@ -18,7 +18,7 @@ protocol_packet_ids!(
0x07 => ClickWindow
0x08 => CloseWindow
0x09 => PluginMessageServerbound
0x0a => UseEntity
0x0a => UseEntity_Hand
0x0b => KeepAliveServerbound_VarInt
0x0c => PlayerPosition
0x0d => PlayerPositionLook
@ -26,7 +26,7 @@ protocol_packet_ids!(
0x0f => Player
0x10 => VehicleMove
0x11 => SteerBoat
0x12 => ClientAbilities
0x12 => ClientAbilities_f32
0x13 => PlayerDigging
0x14 => PlayerAction
0x15 => SteerVehicle
@ -55,7 +55,7 @@ protocol_packet_ids!(
0x0c => BossBar
0x0d => ServerDifficulty
0x0e => TabCompleteReply
0x0f => ServerMessage
0x0f => ServerMessage_Position
0x10 => MultiBlockChange_VarInt
0x11 => ConfirmTransaction
0x12 => WindowClose
@ -91,7 +91,7 @@ protocol_packet_ids!(
0x30 => EntityDestroy
0x31 => EntityRemoveEffect
0x32 => ResourcePackSend
0x33 => Respawn
0x33 => Respawn_Gamemode
0x34 => EntityHeadLook
0x35 => WorldBorder
0x36 => Camera
@ -100,7 +100,7 @@ protocol_packet_ids!(
0x39 => EntityMetadata
0x3a => EntityAttach
0x3b => EntityVelocity
0x3c => EntityEquipment
0x3c => EntityEquipment_VarInt
0x3d => SetExperience
0x3e => UpdateHealth
0x3f => ScoreboardObjective
@ -126,7 +126,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
}
}

View File

@ -18,7 +18,7 @@ protocol_packet_ids!(
0x07 => ClickWindow
0x08 => CloseWindow
0x09 => PluginMessageServerbound
0x0a => UseEntity
0x0a => UseEntity_Hand
0x0b => KeepAliveServerbound_VarInt
0x0c => PlayerPosition
0x0d => PlayerPositionLook
@ -26,7 +26,7 @@ protocol_packet_ids!(
0x0f => Player
0x10 => VehicleMove
0x11 => SteerBoat
0x12 => ClientAbilities
0x12 => ClientAbilities_f32
0x13 => PlayerDigging
0x14 => PlayerAction
0x15 => SteerVehicle
@ -55,7 +55,7 @@ protocol_packet_ids!(
0x0c => BossBar
0x0d => ServerDifficulty
0x0e => TabCompleteReply
0x0f => ServerMessage
0x0f => ServerMessage_Position
0x10 => MultiBlockChange_VarInt
0x11 => ConfirmTransaction
0x12 => WindowClose
@ -91,7 +91,7 @@ protocol_packet_ids!(
0x30 => EntityDestroy
0x31 => EntityRemoveEffect
0x32 => ResourcePackSend
0x33 => Respawn
0x33 => Respawn_Gamemode
0x34 => EntityHeadLook
0x35 => WorldBorder
0x36 => Camera
@ -100,7 +100,7 @@ protocol_packet_ids!(
0x39 => EntityMetadata
0x3a => EntityAttach
0x3b => EntityVelocity
0x3c => EntityEquipment
0x3c => EntityEquipment_VarInt
0x3d => SetExperience
0x3e => UpdateHealth
0x3f => ScoreboardObjective
@ -126,7 +126,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
}
}

View File

@ -18,7 +18,7 @@ protocol_packet_ids!(
0x07 => ClickWindow
0x08 => CloseWindow
0x09 => PluginMessageServerbound
0x0a => UseEntity
0x0a => UseEntity_Hand
0x0b => KeepAliveServerbound_i64
0x0c => Player
0x0d => PlayerPosition
@ -27,7 +27,7 @@ protocol_packet_ids!(
0x10 => VehicleMove
0x11 => SteerBoat
0x12 => CraftRecipeRequest
0x13 => ClientAbilities
0x13 => ClientAbilities_f32
0x14 => PlayerDigging
0x15 => PlayerAction
0x16 => SteerVehicle
@ -58,7 +58,7 @@ protocol_packet_ids!(
0x0c => BossBar
0x0d => ServerDifficulty
0x0e => TabCompleteReply
0x0f => ServerMessage
0x0f => ServerMessage_Position
0x10 => MultiBlockChange_VarInt
0x11 => ConfirmTransaction
0x12 => WindowClose
@ -96,7 +96,7 @@ protocol_packet_ids!(
0x32 => EntityDestroy
0x33 => EntityRemoveEffect
0x34 => ResourcePackSend
0x35 => Respawn
0x35 => Respawn_Gamemode
0x36 => EntityHeadLook
0x37 => SelectAdvancementTab
0x38 => WorldBorder
@ -106,7 +106,7 @@ protocol_packet_ids!(
0x3c => EntityMetadata
0x3d => EntityAttach
0x3e => EntityVelocity
0x3f => EntityEquipment
0x3f => EntityEquipment_VarInt
0x40 => SetExperience
0x41 => UpdateHealth
0x42 => ScoreboardObjective
@ -133,7 +133,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
}
}

View File

@ -21,7 +21,7 @@ protocol_packet_ids!(
0x0a => PluginMessageServerbound
0x0b => EditBook
0x0c => QueryEntityNBT
0x0d => UseEntity
0x0d => UseEntity_Hand
0x0e => KeepAliveServerbound_i64
0x0f => Player
0x10 => PlayerPosition
@ -31,7 +31,7 @@ protocol_packet_ids!(
0x14 => SteerBoat
0x15 => PickItem
0x16 => CraftRecipeRequest
0x17 => ClientAbilities
0x17 => ClientAbilities_f32
0x18 => PlayerDigging
0x19 => PlayerAction
0x1a => SteerVehicle
@ -67,7 +67,7 @@ protocol_packet_ids!(
0x0b => BlockChange_VarInt
0x0c => BossBar
0x0d => ServerDifficulty
0x0e => ServerMessage
0x0e => ServerMessage_Position
0x0f => MultiBlockChange_VarInt
0x10 => TabCompleteReply
0x11 => DeclareCommands
@ -109,7 +109,7 @@ protocol_packet_ids!(
0x35 => EntityDestroy
0x36 => EntityRemoveEffect
0x37 => ResourcePackSend
0x38 => Respawn
0x38 => Respawn_Gamemode
0x39 => EntityHeadLook
0x3a => SelectAdvancementTab
0x3b => WorldBorder
@ -119,7 +119,7 @@ protocol_packet_ids!(
0x3f => EntityMetadata
0x40 => EntityAttach
0x41 => EntityVelocity
0x42 => EntityEquipment
0x42 => EntityEquipment_VarInt
0x43 => SetExperience
0x44 => UpdateHealth
0x45 => ScoreboardObjective
@ -149,7 +149,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
0x04 => LoginPluginRequest
}

View File

@ -22,7 +22,7 @@ protocol_packet_ids!(
0x0b => PluginMessageServerbound
0x0c => EditBook
0x0d => QueryEntityNBT
0x0e => UseEntity
0x0e => UseEntity_Hand
0x0f => KeepAliveServerbound_i64
0x10 => LockDifficulty
0x11 => PlayerPosition
@ -33,7 +33,7 @@ protocol_packet_ids!(
0x16 => SteerBoat
0x17 => PickItem
0x18 => CraftRecipeRequest
0x19 => ClientAbilities
0x19 => ClientAbilities_f32
0x1a => PlayerDigging
0x1b => PlayerAction
0x1c => SteerVehicle
@ -47,7 +47,7 @@ protocol_packet_ids!(
0x24 => UpdateCommandBlock
0x25 => UpdateCommandBlockMinecart
0x26 => CreativeInventoryAction
0x27 => UpdateJigsawBlock
0x27 => UpdateJigsawBlock_Type
0x28 => UpdateStructureBlock
0x29 => SetSign
0x2a => ArmSwing
@ -70,7 +70,7 @@ protocol_packet_ids!(
0x0b => BlockChange_VarInt
0x0c => BossBar
0x0d => ServerDifficulty_Locked
0x0e => ServerMessage
0x0e => ServerMessage_Position
0x0f => MultiBlockChange_VarInt
0x10 => TabCompleteReply
0x11 => DeclareCommands
@ -92,7 +92,7 @@ protocol_packet_ids!(
0x21 => ChunkData_HeightMap
0x22 => Effect
0x23 => Particle_Data
0x24 => UpdateLight
0x24 => UpdateLight_NoTrust
0x25 => JoinGame_i32_ViewDistance
0x26 => Maps
0x27 => TradeList_WithoutRestock
@ -114,7 +114,7 @@ protocol_packet_ids!(
0x37 => EntityDestroy
0x38 => EntityRemoveEffect
0x39 => ResourcePackSend
0x3a => Respawn
0x3a => Respawn_Gamemode
0x3b => EntityHeadLook
0x3c => SelectAdvancementTab
0x3d => WorldBorder
@ -126,7 +126,7 @@ protocol_packet_ids!(
0x43 => EntityMetadata
0x44 => EntityAttach
0x45 => EntityVelocity
0x46 => EntityEquipment
0x46 => EntityEquipment_VarInt
0x47 => SetExperience
0x48 => UpdateHealth
0x49 => ScoreboardObjective
@ -159,7 +159,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
0x04 => LoginPluginRequest
}

View File

@ -22,7 +22,7 @@ protocol_packet_ids!(
0x0b => PluginMessageServerbound
0x0c => EditBook
0x0d => QueryEntityNBT
0x0e => UseEntity
0x0e => UseEntity_Hand
0x0f => KeepAliveServerbound_i64
0x10 => LockDifficulty
0x11 => PlayerPosition
@ -33,7 +33,7 @@ protocol_packet_ids!(
0x16 => SteerBoat
0x17 => PickItem
0x18 => CraftRecipeRequest
0x19 => ClientAbilities
0x19 => ClientAbilities_f32
0x1a => PlayerDigging
0x1b => PlayerAction
0x1c => SteerVehicle
@ -47,7 +47,7 @@ protocol_packet_ids!(
0x24 => UpdateCommandBlock
0x25 => UpdateCommandBlockMinecart
0x26 => CreativeInventoryAction
0x27 => UpdateJigsawBlock
0x27 => UpdateJigsawBlock_Type
0x28 => UpdateStructureBlock
0x29 => SetSign
0x2a => ArmSwing
@ -70,7 +70,7 @@ protocol_packet_ids!(
0x0b => BlockChange_VarInt
0x0c => BossBar
0x0d => ServerDifficulty_Locked
0x0e => ServerMessage
0x0e => ServerMessage_Position
0x0f => MultiBlockChange_VarInt
0x10 => TabCompleteReply
0x11 => DeclareCommands
@ -92,7 +92,7 @@ protocol_packet_ids!(
0x21 => ChunkData_HeightMap
0x22 => Effect
0x23 => Particle_Data
0x24 => UpdateLight
0x24 => UpdateLight_NoTrust
0x25 => JoinGame_i32_ViewDistance
0x26 => Maps
0x27 => TradeList_WithoutRestock
@ -114,7 +114,7 @@ protocol_packet_ids!(
0x37 => EntityDestroy
0x38 => EntityRemoveEffect
0x39 => ResourcePackSend
0x3a => Respawn
0x3a => Respawn_Gamemode
0x3b => EntityHeadLook
0x3c => SelectAdvancementTab
0x3d => WorldBorder
@ -126,7 +126,7 @@ protocol_packet_ids!(
0x43 => EntityMetadata
0x44 => EntityAttach
0x45 => EntityVelocity
0x46 => EntityEquipment
0x46 => EntityEquipment_VarInt
0x47 => SetExperience
0x48 => UpdateHealth
0x49 => ScoreboardObjective
@ -159,7 +159,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
0x04 => LoginPluginRequest
}

View File

@ -22,7 +22,7 @@ protocol_packet_ids!(
0x0b => PluginMessageServerbound
0x0c => EditBook
0x0d => QueryEntityNBT
0x0e => UseEntity
0x0e => UseEntity_Hand
0x0f => KeepAliveServerbound_i64
0x10 => LockDifficulty
0x11 => PlayerPosition
@ -33,7 +33,7 @@ protocol_packet_ids!(
0x16 => SteerBoat
0x17 => PickItem
0x18 => CraftRecipeRequest
0x19 => ClientAbilities
0x19 => ClientAbilities_f32
0x1a => PlayerDigging
0x1b => PlayerAction
0x1c => SteerVehicle
@ -47,7 +47,7 @@ protocol_packet_ids!(
0x24 => UpdateCommandBlock
0x25 => UpdateCommandBlockMinecart
0x26 => CreativeInventoryAction
0x27 => UpdateJigsawBlock
0x27 => UpdateJigsawBlock_Type
0x28 => UpdateStructureBlock
0x29 => SetSign
0x2a => ArmSwing
@ -70,7 +70,7 @@ protocol_packet_ids!(
0x0b => BlockChange_VarInt
0x0c => BossBar
0x0d => ServerDifficulty_Locked
0x0e => ServerMessage
0x0e => ServerMessage_Position
0x0f => MultiBlockChange_VarInt
0x10 => TabCompleteReply
0x11 => DeclareCommands
@ -92,7 +92,7 @@ protocol_packet_ids!(
0x21 => ChunkData_HeightMap
0x22 => Effect
0x23 => Particle_Data
0x24 => UpdateLight
0x24 => UpdateLight_NoTrust
0x25 => JoinGame_i32_ViewDistance
0x26 => Maps
0x27 => TradeList_WithoutRestock
@ -114,7 +114,7 @@ protocol_packet_ids!(
0x37 => EntityDestroy
0x38 => EntityRemoveEffect
0x39 => ResourcePackSend
0x3a => Respawn
0x3a => Respawn_Gamemode
0x3b => EntityHeadLook
0x3c => SelectAdvancementTab
0x3d => WorldBorder
@ -126,7 +126,7 @@ protocol_packet_ids!(
0x43 => EntityMetadata
0x44 => EntityAttach
0x45 => EntityVelocity
0x46 => EntityEquipment
0x46 => EntityEquipment_VarInt
0x47 => SetExperience
0x48 => UpdateHealth
0x49 => ScoreboardObjective
@ -159,7 +159,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
0x04 => LoginPluginRequest
}

View File

@ -22,7 +22,7 @@ protocol_packet_ids!(
0x0b => PluginMessageServerbound
0x0c => EditBook
0x0d => QueryEntityNBT
0x0e => UseEntity
0x0e => UseEntity_Hand
0x0f => KeepAliveServerbound_i64
0x10 => LockDifficulty
0x11 => PlayerPosition
@ -33,7 +33,7 @@ protocol_packet_ids!(
0x16 => SteerBoat
0x17 => PickItem
0x18 => CraftRecipeRequest
0x19 => ClientAbilities
0x19 => ClientAbilities_f32
0x1a => PlayerDigging
0x1b => PlayerAction
0x1c => SteerVehicle
@ -47,7 +47,7 @@ protocol_packet_ids!(
0x24 => UpdateCommandBlock
0x25 => UpdateCommandBlockMinecart
0x26 => CreativeInventoryAction
0x27 => UpdateJigsawBlock
0x27 => UpdateJigsawBlock_Type
0x28 => UpdateStructureBlock
0x29 => SetSign
0x2a => ArmSwing
@ -70,7 +70,7 @@ protocol_packet_ids!(
0x0b => BlockChange_VarInt
0x0c => BossBar
0x0d => ServerDifficulty_Locked
0x0e => ServerMessage
0x0e => ServerMessage_Position
0x0f => MultiBlockChange_VarInt
0x10 => TabCompleteReply
0x11 => DeclareCommands
@ -92,7 +92,7 @@ protocol_packet_ids!(
0x21 => ChunkData_HeightMap
0x22 => Effect
0x23 => Particle_Data
0x24 => UpdateLight
0x24 => UpdateLight_NoTrust
0x25 => JoinGame_i32_ViewDistance
0x26 => Maps
0x27 => TradeList_WithRestock
@ -114,7 +114,7 @@ protocol_packet_ids!(
0x37 => EntityDestroy
0x38 => EntityRemoveEffect
0x39 => ResourcePackSend
0x3a => Respawn
0x3a => Respawn_Gamemode
0x3b => EntityHeadLook
0x3c => SelectAdvancementTab
0x3d => WorldBorder
@ -126,7 +126,7 @@ protocol_packet_ids!(
0x43 => EntityMetadata
0x44 => EntityAttach
0x45 => EntityVelocity
0x46 => EntityEquipment
0x46 => EntityEquipment_VarInt
0x47 => SetExperience
0x48 => UpdateHealth
0x49 => ScoreboardObjective
@ -159,7 +159,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
0x04 => LoginPluginRequest
}

View File

@ -22,7 +22,7 @@ protocol_packet_ids!(
0x0b => PluginMessageServerbound
0x0c => EditBook
0x0d => QueryEntityNBT
0x0e => UseEntity
0x0e => UseEntity_Hand
0x0f => KeepAliveServerbound_i64
0x10 => LockDifficulty
0x11 => PlayerPosition
@ -33,7 +33,7 @@ protocol_packet_ids!(
0x16 => SteerBoat
0x17 => PickItem
0x18 => CraftRecipeRequest
0x19 => ClientAbilities
0x19 => ClientAbilities_f32
0x1a => PlayerDigging
0x1b => PlayerAction
0x1c => SteerVehicle
@ -47,7 +47,7 @@ protocol_packet_ids!(
0x24 => UpdateCommandBlock
0x25 => UpdateCommandBlockMinecart
0x26 => CreativeInventoryAction
0x27 => UpdateJigsawBlock
0x27 => UpdateJigsawBlock_Type
0x28 => UpdateStructureBlock
0x29 => SetSign
0x2a => ArmSwing
@ -70,7 +70,7 @@ protocol_packet_ids!(
0x0b => BlockChange_VarInt
0x0c => BossBar
0x0d => ServerDifficulty_Locked
0x0e => ServerMessage
0x0e => ServerMessage_Position
0x0f => MultiBlockChange_VarInt
0x10 => TabCompleteReply
0x11 => DeclareCommands
@ -92,7 +92,7 @@ protocol_packet_ids!(
0x21 => ChunkData_HeightMap
0x22 => Effect
0x23 => Particle_Data
0x24 => UpdateLight
0x24 => UpdateLight_NoTrust
0x25 => JoinGame_i32_ViewDistance
0x26 => Maps
0x27 => TradeList_WithRestock
@ -114,7 +114,7 @@ protocol_packet_ids!(
0x37 => EntityDestroy
0x38 => EntityRemoveEffect
0x39 => ResourcePackSend
0x3a => Respawn
0x3a => Respawn_Gamemode
0x3b => EntityHeadLook
0x3c => SelectAdvancementTab
0x3d => WorldBorder
@ -126,7 +126,7 @@ protocol_packet_ids!(
0x43 => EntityMetadata
0x44 => EntityAttach
0x45 => EntityVelocity
0x46 => EntityEquipment
0x46 => EntityEquipment_VarInt
0x47 => SetExperience
0x48 => UpdateHealth
0x49 => ScoreboardObjective
@ -160,7 +160,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
0x04 => LoginPluginRequest
}

View File

@ -22,7 +22,7 @@ protocol_packet_ids!(
0x0b => PluginMessageServerbound
0x0c => EditBook
0x0d => QueryEntityNBT
0x0e => UseEntity
0x0e => UseEntity_Hand
0x0f => KeepAliveServerbound_i64
0x10 => LockDifficulty
0x11 => PlayerPosition
@ -33,7 +33,7 @@ protocol_packet_ids!(
0x16 => SteerBoat
0x17 => PickItem
0x18 => CraftRecipeRequest
0x19 => ClientAbilities
0x19 => ClientAbilities_f32
0x1a => PlayerDigging
0x1b => PlayerAction
0x1c => SteerVehicle
@ -47,7 +47,7 @@ protocol_packet_ids!(
0x24 => UpdateCommandBlock
0x25 => UpdateCommandBlockMinecart
0x26 => CreativeInventoryAction
0x27 => UpdateJigsawBlock
0x27 => UpdateJigsawBlock_Type
0x28 => UpdateStructureBlock
0x29 => SetSign
0x2a => ArmSwing
@ -71,7 +71,7 @@ protocol_packet_ids!(
0x0c => BlockChange_VarInt
0x0d => BossBar
0x0e => ServerDifficulty_Locked
0x0f => ServerMessage
0x0f => ServerMessage_Position
0x10 => MultiBlockChange_VarInt
0x11 => TabCompleteReply
0x12 => DeclareCommands
@ -93,7 +93,7 @@ protocol_packet_ids!(
0x22 => ChunkData_Biomes3D
0x23 => Effect
0x24 => Particle_f64
0x25 => UpdateLight
0x25 => UpdateLight_NoTrust
0x26 => JoinGame_HashedSeed_Respawn
0x27 => Maps
0x28 => TradeList_WithRestock
@ -127,7 +127,7 @@ protocol_packet_ids!(
0x44 => EntityMetadata
0x45 => EntityAttach
0x46 => EntityVelocity
0x47 => EntityEquipment
0x47 => EntityEquipment_VarInt
0x48 => SetExperience
0x49 => UpdateHealth
0x4a => ScoreboardObjective
@ -160,7 +160,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
0x04 => LoginPluginRequest
}

View File

@ -0,0 +1,178 @@
protocol_packet_ids!(
handshake Handshaking {
serverbound Serverbound {
0x00 => Handshake
}
clientbound Clientbound {
}
}
play Play {
serverbound Serverbound {
0x00 => TeleportConfirm
0x01 => QueryBlockNBT
0x02 => SetDifficulty
0x03 => ChatMessage
0x04 => ClientStatus
0x05 => ClientSettings
0x06 => TabComplete
0x07 => ConfirmTransactionServerbound
0x08 => ClickWindowButton
0x09 => ClickWindow
0x0a => CloseWindow
0x0b => PluginMessageServerbound
0x0c => EditBook
0x0d => QueryEntityNBT
0x0e => UseEntity_Sneakflag
0x0f => GenerateStructure
0x10 => KeepAliveServerbound_i64
0x11 => LockDifficulty
0x12 => PlayerPosition
0x13 => PlayerPositionLook
0x14 => PlayerLook
0x15 => Player
0x16 => VehicleMove
0x17 => SteerBoat
0x18 => PickItem
0x19 => CraftRecipeRequest
0x1a => ClientAbilities_u8
0x1b => PlayerDigging
0x1c => PlayerAction
0x1d => SteerVehicle
0x1e => CraftingBookData
0x1f => NameItem
0x20 => ResourcePackStatus
0x21 => AdvancementTab
0x22 => SelectTrade
0x23 => SetBeaconEffect
0x24 => HeldItemChange
0x25 => UpdateCommandBlock
0x26 => UpdateCommandBlockMinecart
0x27 => CreativeInventoryAction
0x28 => UpdateJigsawBlock_Joint
0x29 => UpdateStructureBlock
0x2a => SetSign
0x2b => ArmSwing
0x2c => SpectateTeleport
0x2d => PlayerBlockPlacement_insideblock
0x2e => UseItem
}
clientbound Clientbound {
0x00 => SpawnObject_VarInt
0x01 => SpawnExperienceOrb
0x02 => SpawnMob_NoMeta
0x03 => SpawnPainting_VarInt
0x04 => SpawnPlayer_f64_NoMeta
0x05 => Animation
0x06 => Statistics
0x07 => AcknowledgePlayerDigging
0x08 => BlockBreakAnimation
0x09 => UpdateBlockEntity
0x0a => BlockAction
0x0b => BlockChange_VarInt
0x0c => BossBar
0x0d => ServerDifficulty_Locked
0x0e => ServerMessage_Sender
0x0f => MultiBlockChange_VarInt
0x10 => TabCompleteReply
0x11 => DeclareCommands
0x12 => ConfirmTransaction
0x13 => WindowClose
0x14 => WindowItems
0x15 => WindowProperty
0x16 => WindowSetSlot
0x17 => SetCooldown
0x18 => PluginMessageClientbound
0x19 => NamedSoundEffect
0x1a => Disconnect
0x1b => EntityAction
0x1c => Explosion
0x1d => ChunkUnload
0x1e => ChangeGameState
0x1f => WindowOpenHorse
0x20 => KeepAliveClientbound_i64
0x21 => ChunkData_Biomes3D_bool
0x22 => Effect
0x23 => Particle_f64
0x24 => UpdateLight_WithTrust
0x25 => JoinGame_WorldNames
0x26 => Maps
0x27 => TradeList_WithRestock
0x28 => EntityMove_i16
0x29 => EntityLookAndMove_i16
0x2a => EntityLook_VarInt
0x2b => Entity
0x2c => VehicleTeleport
0x2d => OpenBook
0x2e => WindowOpen_VarInt
0x2f => SignEditorOpen
0x30 => CraftRecipeResponse
0x31 => PlayerAbilities
0x32 => CombatEvent
0x33 => PlayerInfo
0x34 => FacePlayer
0x35 => TeleportPlayer_WithConfirm
0x36 => UnlockRecipes_WithSmelting
0x37 => EntityDestroy
0x38 => EntityRemoveEffect
0x39 => ResourcePackSend
0x3a => Respawn_WorldName
0x3b => EntityHeadLook
0x3c => SelectAdvancementTab
0x3d => WorldBorder
0x3e => Camera
0x3f => SetCurrentHotbarSlot
0x40 => UpdateViewPosition
0x41 => UpdateViewDistance
0x42 => SpawnPosition
0x43 => ScoreboardDisplay
0x44 => EntityMetadata
0x45 => EntityAttach
0x46 => EntityVelocity
0x47 => EntityEquipment_VarInt // TODO: changed to an array, but earlier than 1.16.1
0x48 => SetExperience
0x49 => UpdateHealth
0x4a => ScoreboardObjective
0x4b => SetPassengers
0x4c => Teams_VarInt
0x4d => UpdateScore
0x4e => TimeUpdate
0x4f => Title
0x50 => EntitySoundEffect
0x51 => SoundEffect
0x52 => StopSound
0x53 => PlayerListHeaderFooter
0x54 => NBTQueryResponse
0x55 => CollectItem
0x56 => EntityTeleport_f64
0x57 => Advancements
0x58 => EntityProperties
0x59 => EntityEffect
0x5a => DeclareRecipes
0x5b => TagsWithEntities
}
}
login Login {
serverbound Serverbound {
0x00 => LoginStart
0x01 => EncryptionResponse
0x02 => LoginPluginResponse
}
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess_UUID
0x03 => SetInitialCompression
0x04 => LoginPluginRequest
}
}
status Status {
serverbound Serverbound {
0x00 => StatusRequest
0x01 => StatusPing
}
clientbound Clientbound {
0x00 => StatusResponse
0x01 => StatusPong
}
}
);

View File

@ -27,7 +27,7 @@ protocol_packet_ids!(
0x10 => CreativeInventoryAction
0x11 => EnchantItem
0x12 => SetSign_i16y
0x13 => ClientAbilities
0x13 => ClientAbilities_f32
0x14 => TabComplete_NoAssume_NoTarget
0x15 => ClientSettings_u8_Handsfree_Difficulty
0x16 => ClientStatus_u8
@ -41,7 +41,7 @@ protocol_packet_ids!(
0x04 => EntityEquipment_u16_i32
0x05 => SpawnPosition_i32
0x06 => UpdateHealth_u16
0x07 => Respawn
0x07 => Respawn_Gamemode
0x08 => TeleportPlayer_OnGround
0x09 => SetCurrentHotbarSlot
0x0a => EntityUsedBed_i32
@ -110,7 +110,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest_i16
0x02 => LoginSuccess
0x02 => LoginSuccess_String
}
}
status Status {

View File

@ -27,7 +27,7 @@ protocol_packet_ids!(
0x10 => CreativeInventoryAction
0x11 => EnchantItem
0x12 => SetSign
0x13 => ClientAbilities
0x13 => ClientAbilities_f32
0x14 => TabComplete_NoAssume
0x15 => ClientSettings_u8_Handsfree
0x16 => ClientStatus
@ -38,12 +38,12 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => KeepAliveClientbound_VarInt
0x01 => JoinGame_i8
0x02 => ServerMessage
0x02 => ServerMessage_Position
0x03 => TimeUpdate
0x04 => EntityEquipment_u16
0x05 => SpawnPosition
0x06 => UpdateHealth
0x07 => Respawn
0x07 => Respawn_Gamemode
0x08 => TeleportPlayer_NoConfirm
0x09 => SetCurrentHotbarSlot
0x0a => EntityUsedBed
@ -120,7 +120,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
}
}

View File

@ -18,7 +18,7 @@ protocol_packet_ids!(
0x07 => ClickWindow
0x08 => CloseWindow
0x09 => PluginMessageServerbound
0x0a => UseEntity
0x0a => UseEntity_Hand
0x0b => KeepAliveServerbound_VarInt
0x0c => PlayerPosition
0x0d => PlayerPositionLook
@ -26,7 +26,7 @@ protocol_packet_ids!(
0x0f => Player
0x10 => VehicleMove
0x11 => SteerBoat
0x12 => ClientAbilities
0x12 => ClientAbilities_f32
0x13 => PlayerDigging
0x14 => PlayerAction
0x15 => SteerVehicle
@ -55,7 +55,7 @@ protocol_packet_ids!(
0x0c => BossBar
0x0d => ServerDifficulty
0x0e => TabCompleteReply
0x0f => ServerMessage
0x0f => ServerMessage_Position
0x10 => MultiBlockChange_VarInt
0x11 => ConfirmTransaction
0x12 => WindowClose
@ -91,7 +91,7 @@ protocol_packet_ids!(
0x30 => EntityDestroy
0x31 => EntityRemoveEffect
0x32 => ResourcePackSend
0x33 => Respawn
0x33 => Respawn_Gamemode
0x34 => EntityHeadLook
0x35 => WorldBorder
0x36 => Camera
@ -100,7 +100,7 @@ protocol_packet_ids!(
0x39 => EntityMetadata
0x3a => EntityAttach
0x3b => EntityVelocity
0x3c => EntityEquipment
0x3c => EntityEquipment_VarInt
0x3d => SetExperience
0x3e => UpdateHealth
0x3f => ScoreboardObjective
@ -127,7 +127,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
}
}

View File

@ -18,7 +18,7 @@ protocol_packet_ids!(
0x07 => ClickWindow
0x08 => CloseWindow
0x09 => PluginMessageServerbound
0x0a => UseEntity
0x0a => UseEntity_Hand
0x0b => KeepAliveServerbound_VarInt
0x0c => PlayerPosition
0x0d => PlayerPositionLook
@ -26,7 +26,7 @@ protocol_packet_ids!(
0x0f => Player
0x10 => VehicleMove
0x11 => SteerBoat
0x12 => ClientAbilities
0x12 => ClientAbilities_f32
0x13 => PlayerDigging
0x14 => PlayerAction
0x15 => SteerVehicle
@ -55,7 +55,7 @@ protocol_packet_ids!(
0x0c => BossBar
0x0d => ServerDifficulty
0x0e => TabCompleteReply
0x0f => ServerMessage
0x0f => ServerMessage_Position
0x10 => MultiBlockChange_VarInt
0x11 => ConfirmTransaction
0x12 => WindowClose
@ -91,7 +91,7 @@ protocol_packet_ids!(
0x30 => EntityDestroy
0x31 => EntityRemoveEffect
0x32 => ResourcePackSend
0x33 => Respawn
0x33 => Respawn_Gamemode
0x34 => EntityHeadLook
0x35 => WorldBorder
0x36 => Camera
@ -100,7 +100,7 @@ protocol_packet_ids!(
0x39 => EntityMetadata
0x3a => EntityAttach
0x3b => EntityVelocity
0x3c => EntityEquipment
0x3c => EntityEquipment_VarInt
0x3d => SetExperience
0x3e => UpdateHealth
0x3f => ScoreboardObjective
@ -127,7 +127,7 @@ protocol_packet_ids!(
clientbound Clientbound {
0x00 => LoginDisconnect
0x01 => EncryptionRequest
0x02 => LoginSuccess
0x02 => LoginSuccess_String
0x03 => SetInitialCompression
}
}

View File

@ -147,7 +147,7 @@ impl Server {
verify_token = Rc::new(val.verify_token.data);
break;
}
protocol::packet::Packet::LoginSuccess(val) => {
protocol::packet::Packet::LoginSuccess_String(val) => {
warn!("Server is running in offline mode");
debug!("Login: {} {}", val.username, val.uuid);
let mut read = conn.clone();
@ -164,6 +164,24 @@ impl Server {
Some(rx),
));
}
// TODO: avoid duplication
protocol::packet::Packet::LoginSuccess_UUID(val) => {
warn!("Server is running in offline mode");
debug!("Login: {} {:?}", val.username, val.uuid);
let mut read = conn.clone();
let mut write = conn.clone();
read.state = protocol::State::Play;
write.state = protocol::State::Play;
let rx = Self::spawn_reader(read);
return Ok(Server::new(
protocol_version,
forge_mods,
val.uuid,
resources,
Some(write),
Some(rx),
));
}
protocol::packet::Packet::LoginDisconnect(val) => {
return Err(protocol::Error::Disconnect(val.reason))
}
@ -210,8 +228,15 @@ impl Server {
read.set_compresssion(val.threshold.0);
write.set_compresssion(val.threshold.0);
}
protocol::packet::Packet::LoginSuccess(val) => {
protocol::packet::Packet::LoginSuccess_String(val) => {
debug!("Login: {} {}", val.username, val.uuid);
uuid = protocol::UUID::from_str(&val.uuid);
read.state = protocol::State::Play;
write.state = protocol::State::Play;
break;
}
protocol::packet::Packet::LoginSuccess_UUID(val) => {
debug!("Login: {} {:?}", val.username, val.uuid);
uuid = val.uuid;
read.state = protocol::State::Play;
write.state = protocol::State::Play;
@ -229,7 +254,7 @@ impl Server {
Ok(Server::new(
protocol_version,
forge_mods,
protocol::UUID::from_str(&uuid),
uuid,
resources,
Some(write),
Some(rx),
@ -482,16 +507,19 @@ impl Server {
self pck {
PluginMessageClientbound_i16 => on_plugin_message_clientbound_i16,
PluginMessageClientbound => on_plugin_message_clientbound_1,
JoinGame_WorldNames => on_game_join_worldnames,
JoinGame_HashedSeed_Respawn => on_game_join_hashedseed_respawn,
JoinGame_i32_ViewDistance => on_game_join_i32_viewdistance,
JoinGame_i32 => on_game_join_i32,
JoinGame_i8 => on_game_join_i8,
JoinGame_i8_NoDebug => on_game_join_i8_nodebug,
Respawn => on_respawn,
Respawn_Gamemode => on_respawn_gamemode,
Respawn_HashedSeed => on_respawn_hashedseed,
Respawn_WorldName => on_respawn_worldname,
KeepAliveClientbound_i64 => on_keep_alive_i64,
KeepAliveClientbound_VarInt => on_keep_alive_varint,
KeepAliveClientbound_i32 => on_keep_alive_i32,
ChunkData_Biomes3D_bool => on_chunk_data_biomes3d_bool,
ChunkData => on_chunk_data,
ChunkData_Biomes3D => on_chunk_data_biomes3d,
ChunkData_HeightMap => on_chunk_data_heightmap,
@ -942,6 +970,10 @@ impl Server {
}
}
fn on_game_join_worldnames(&mut self, join: packet::play::clientbound::JoinGame_WorldNames) {
self.on_game_join(join.gamemode, join.entity_id)
}
fn on_game_join_hashedseed_respawn(
&mut self,
join: packet::play::clientbound::JoinGame_HashedSeed_Respawn,
@ -1007,7 +1039,11 @@ impl Server {
self.respawn(respawn.gamemode)
}
fn on_respawn(&mut self, respawn: packet::play::clientbound::Respawn) {
fn on_respawn_gamemode(&mut self, respawn: packet::play::clientbound::Respawn_Gamemode) {
self.respawn(respawn.gamemode)
}
fn on_respawn_worldname(&mut self, respawn: packet::play::clientbound::Respawn_WorldName) {
self.respawn(respawn.gamemode)
}
@ -1726,6 +1762,22 @@ impl Server {
}
}
fn on_chunk_data_biomes3d_bool(
&mut self,
chunk_data: packet::play::clientbound::ChunkData_Biomes3D_bool,
) {
self.world
.load_chunk115(
chunk_data.chunk_x,
chunk_data.chunk_z,
chunk_data.new,
chunk_data.bitmask.0 as u16,
chunk_data.data.data,
)
.unwrap();
self.load_block_entities(chunk_data.block_entities.data);
}
fn on_chunk_data_biomes3d(
&mut self,
chunk_data: packet::play::clientbound::ChunkData_Biomes3D,