1.17.1 (756) protocol (#605)
https://wiki.vg/index.php?title=Protocol&oldid=16918 New and changed packets: * 1.17.1 packet id shifts, new clientbound packets * Add WindowPong new packet serverbound * Add Tags_Nested packet variant * Add TeleportPlayer_WithDismount packet variant * Add ChunkData_Biomes3D_Bitmasks packet variant * Add WindowItems_StateCarry variant, split WindowItems_i16 * Add WindowSetSlot_State packet variant * Add Explosion_VarInt packet variant * Add UpdateLight_Arrays variant * Add ResourcePackSend_Prompt variant * Add SpawnPosition_Angle variant * Add EntityProperties_VarIntVarInt variant, using VarInts in both fields * Add ClientSettings_Filtering variant * Add ClickWindow_State variant * Add EditBook packet variant * Fix many Particle packet variant definitions * server: handle TeleportPlayer_WithDismount * server: handle ChunkData_Biomes3D_Bitmasks * world: add num_sections to self.load_chunk19_or_115 * world: load_chunk19_to_117: accept 64-bit mask * metadata: add PoseData::LongJumping * protocol: update Cargo.lock for serde_json 1.0.130 * build: pin to wasm-pack 0.10.0
This commit is contained in:
parent
83bbb9fe4f
commit
cfcc7d2a1f
|
@ -134,7 +134,7 @@ jobs:
|
||||||
- name: Install wasm-pack
|
- name: Install wasm-pack
|
||||||
uses: jetli/wasm-pack-action@v0.3.0
|
uses: jetli/wasm-pack-action@v0.3.0
|
||||||
with:
|
with:
|
||||||
version: 'latest'
|
version: 'v0.10.0'
|
||||||
- name: Build binary
|
- name: Build binary
|
||||||
run: |
|
run: |
|
||||||
rustup target add wasm32-unknown-unknown
|
rustup target add wasm32-unknown-unknown
|
||||||
|
|
|
@ -24,6 +24,7 @@ Discussion forum: [https://github.com/iceiix/stevenarella/discussions](https://g
|
||||||
|
|
||||||
| Game version | Protocol version | Supported? |
|
| Game version | Protocol version | Supported? |
|
||||||
| ------ | --- | --- |
|
| ------ | --- | --- |
|
||||||
|
| 1.17.1 | 756 | ✓ |
|
||||||
| 1.16.5 | 754 | ✓ |
|
| 1.16.5 | 754 | ✓ |
|
||||||
| 1.16.4 | 754 | ✓ |
|
| 1.16.4 | 754 | ✓ |
|
||||||
| 1.16.3 | 753 | ✓ |
|
| 1.16.3 | 753 | ✓ |
|
||||||
|
|
|
@ -778,9 +778,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.127"
|
version = "1.0.130"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f03b9878abf6d14e6779d3f24f07b2cfa90352cfec4acc5aab8f1ac7f146fae8"
|
checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
|
|
|
@ -39,9 +39,9 @@ use std::io::{Read, Write};
|
||||||
use std::net::TcpStream;
|
use std::net::TcpStream;
|
||||||
use std::sync::atomic::{AtomicBool, AtomicI32, Ordering};
|
use std::sync::atomic::{AtomicBool, AtomicI32, Ordering};
|
||||||
|
|
||||||
pub const SUPPORTED_PROTOCOLS: [i32; 24] = [
|
pub const SUPPORTED_PROTOCOLS: [i32; 25] = [
|
||||||
754, 753, 751, 736, 735, 578, 575, 498, 490, 485, 480, 477, 452, 451, 404, 340, 316, 315, 210,
|
756, 754, 753, 751, 736, 735, 578, 575, 498, 490, 485, 480, 477, 452, 451, 404, 340, 316, 315,
|
||||||
109, 107, 74, 47, 5,
|
210, 109, 107, 74, 47, 5,
|
||||||
];
|
];
|
||||||
|
|
||||||
static CURRENT_PROTOCOL_VERSION: AtomicI32 = AtomicI32::new(SUPPORTED_PROTOCOLS[0]);
|
static CURRENT_PROTOCOL_VERSION: AtomicI32 = AtomicI32::new(SUPPORTED_PROTOCOLS[0]);
|
||||||
|
|
|
@ -89,6 +89,15 @@ state_packets!(
|
||||||
field action_id: u8=,
|
field action_id: u8=,
|
||||||
}
|
}
|
||||||
/// ClientSettings is sent by the client to update its current settings.
|
/// ClientSettings is sent by the client to update its current settings.
|
||||||
|
packet ClientSettings_Filtering {
|
||||||
|
field locale: String =,
|
||||||
|
field view_distance: u8 =,
|
||||||
|
field chat_mode: VarInt =,
|
||||||
|
field chat_colors: bool =,
|
||||||
|
field displayed_skin_parts: u8 =,
|
||||||
|
field main_hand: VarInt =,
|
||||||
|
field disable_text_filtering: bool =,
|
||||||
|
}
|
||||||
packet ClientSettings {
|
packet ClientSettings {
|
||||||
field locale: String =,
|
field locale: String =,
|
||||||
field view_distance: u8 =,
|
field view_distance: u8 =,
|
||||||
|
@ -137,6 +146,15 @@ state_packets!(
|
||||||
field button: u8 =,
|
field button: u8 =,
|
||||||
}
|
}
|
||||||
/// ClickWindow is sent when the client clicks in a window.
|
/// ClickWindow is sent when the client clicks in a window.
|
||||||
|
packet ClickWindow_State {
|
||||||
|
field id: u8 =,
|
||||||
|
field slot: i16 =,
|
||||||
|
field state: VarInt =,
|
||||||
|
field button: u8 =,
|
||||||
|
field mode: VarInt =,
|
||||||
|
field slots: LenPrefixed<VarInt, packet::NumberedSlot> =,
|
||||||
|
field clicked_item: Option<item::Stack> =,
|
||||||
|
}
|
||||||
packet ClickWindow {
|
packet ClickWindow {
|
||||||
field id: u8 =,
|
field id: u8 =,
|
||||||
field slot: i16 =,
|
field slot: i16 =,
|
||||||
|
@ -168,7 +186,12 @@ state_packets!(
|
||||||
field channel: String =,
|
field channel: String =,
|
||||||
field data: LenPrefixedBytes<VarShort> =,
|
field data: LenPrefixedBytes<VarShort> =,
|
||||||
}
|
}
|
||||||
packet EditBook {
|
packet EditBook_Pages {
|
||||||
|
field hand: VarInt =,
|
||||||
|
field pages: LenPrefixed<VarInt, String> =,
|
||||||
|
field title: Option<String> =,
|
||||||
|
}
|
||||||
|
packet EditBook_Item {
|
||||||
field new_book: Option<item::Stack> =,
|
field new_book: Option<item::Stack> =,
|
||||||
field is_signing: bool =,
|
field is_signing: bool =,
|
||||||
field hand: VarInt =,
|
field hand: VarInt =,
|
||||||
|
@ -346,6 +369,9 @@ state_packets!(
|
||||||
field jump: bool =,
|
field jump: bool =,
|
||||||
field unmount: bool =,
|
field unmount: bool =,
|
||||||
}
|
}
|
||||||
|
packet WindowPong {
|
||||||
|
field id: i32 =,
|
||||||
|
}
|
||||||
/// CraftingBookData is sent when the player interacts with the crafting book.
|
/// CraftingBookData is sent when the player interacts with the crafting book.
|
||||||
packet CraftingBookData {
|
packet CraftingBookData {
|
||||||
field action: VarInt =,
|
field action: VarInt =,
|
||||||
|
@ -777,6 +803,13 @@ state_packets!(
|
||||||
field metadata: types::Metadata =,
|
field metadata: types::Metadata =,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
packet SculkVibrationSignal {
|
||||||
|
field source_position: Position =,
|
||||||
|
field dest_id: String =,
|
||||||
|
field dest_position: Position = when(|p: &SculkVibrationSignal| p.dest_id == "block"),
|
||||||
|
field entity_id: VarInt = when(|p: &SculkVibrationSignal| p.dest_id == "entity"),
|
||||||
|
}
|
||||||
|
|
||||||
/// Animation is sent by the server to play an animation on a specific entity.
|
/// Animation is sent by the server to play an animation on a specific entity.
|
||||||
packet Animation {
|
packet Animation {
|
||||||
field entity_id: VarInt =,
|
field entity_id: VarInt =,
|
||||||
|
@ -890,6 +923,11 @@ state_packets!(
|
||||||
packet ServerMessage_NoPosition {
|
packet ServerMessage_NoPosition {
|
||||||
field message: format::Component =,
|
field message: format::Component =,
|
||||||
}
|
}
|
||||||
|
packet ClearTitles {
|
||||||
|
field json_data: String =,
|
||||||
|
field position: u8 =,
|
||||||
|
field sender: UUID =,
|
||||||
|
}
|
||||||
/// MultiBlockChange is used to update a batch of blocks in a single packet.
|
/// MultiBlockChange is used to update a batch of blocks in a single packet.
|
||||||
packet MultiBlockChange_Packed {
|
packet MultiBlockChange_Packed {
|
||||||
field chunk_section_pos: u64 =,
|
field chunk_section_pos: u64 =,
|
||||||
|
@ -935,6 +973,16 @@ state_packets!(
|
||||||
field number_of_slots: VarInt =,
|
field number_of_slots: VarInt =,
|
||||||
field entity_id: i32 =,
|
field entity_id: i32 =,
|
||||||
}
|
}
|
||||||
|
packet WorldBorderInit {
|
||||||
|
field x: f64 =,
|
||||||
|
field z: f64 =,
|
||||||
|
field old_diameter: f64 =,
|
||||||
|
field new_diameter: f64 =,
|
||||||
|
field speed: VarLong =,
|
||||||
|
field portal_teleport_boundary: VarInt =,
|
||||||
|
field warning_blocks: VarInt =,
|
||||||
|
field warning_time: VarInt =,
|
||||||
|
}
|
||||||
packet WindowOpen_u8 {
|
packet WindowOpen_u8 {
|
||||||
field id: u8 =,
|
field id: u8 =,
|
||||||
field ty: u8 =,
|
field ty: u8 =,
|
||||||
|
@ -949,7 +997,13 @@ state_packets!(
|
||||||
field title: format::Component =,
|
field title: format::Component =,
|
||||||
}
|
}
|
||||||
/// WindowItems sets every item in a window.
|
/// WindowItems sets every item in a window.
|
||||||
packet WindowItems {
|
packet WindowItems_StateCarry {
|
||||||
|
field id: u8 =,
|
||||||
|
field state_id: VarInt =,
|
||||||
|
field items: LenPrefixed<VarInt, Option<item::Stack>> =,
|
||||||
|
field carried_item: Option<item::Stack> =,
|
||||||
|
}
|
||||||
|
packet WindowItems_i16 {
|
||||||
field id: u8 =,
|
field id: u8 =,
|
||||||
field items: LenPrefixed<i16, Option<item::Stack>> =,
|
field items: LenPrefixed<i16, Option<item::Stack>> =,
|
||||||
}
|
}
|
||||||
|
@ -961,6 +1015,12 @@ state_packets!(
|
||||||
field value: i16 =,
|
field value: i16 =,
|
||||||
}
|
}
|
||||||
/// WindowSetSlot changes an itemstack in one of the slots in a window.
|
/// WindowSetSlot changes an itemstack in one of the slots in a window.
|
||||||
|
packet WindowSetSlot_State {
|
||||||
|
field id: u8 =,
|
||||||
|
field state_id: VarInt =,
|
||||||
|
field property: i16 =,
|
||||||
|
field item: Option<item::Stack> =,
|
||||||
|
}
|
||||||
packet WindowSetSlot {
|
packet WindowSetSlot {
|
||||||
field id: u8 =,
|
field id: u8 =,
|
||||||
field property: i16 =,
|
field property: i16 =,
|
||||||
|
@ -1021,7 +1081,17 @@ state_packets!(
|
||||||
}
|
}
|
||||||
/// Explosion is sent when an explosion is triggered (tnt, creeper etc).
|
/// Explosion is sent when an explosion is triggered (tnt, creeper etc).
|
||||||
/// This plays the effect and removes the effected blocks.
|
/// This plays the effect and removes the effected blocks.
|
||||||
packet Explosion {
|
packet Explosion_VarInt {
|
||||||
|
field x: f32 =,
|
||||||
|
field y: f32 =,
|
||||||
|
field z: f32 =,
|
||||||
|
field radius: f32 =,
|
||||||
|
field records: LenPrefixed<VarInt, packet::ExplosionRecord> =,
|
||||||
|
field velocity_x: f32 =,
|
||||||
|
field velocity_y: f32 =,
|
||||||
|
field velocity_z: f32 =,
|
||||||
|
}
|
||||||
|
packet Explosion_i32 {
|
||||||
field x: f32 =,
|
field x: f32 =,
|
||||||
field y: f32 =,
|
field y: f32 =,
|
||||||
field z: f32 =,
|
field z: f32 =,
|
||||||
|
@ -1062,6 +1132,15 @@ state_packets!(
|
||||||
}
|
}
|
||||||
/// ChunkData sends or updates a single chunk on the client. If New is set
|
/// ChunkData sends or updates a single chunk on the client. If New is set
|
||||||
/// then biome data should be sent too.
|
/// then biome data should be sent too.
|
||||||
|
packet ChunkData_Biomes3D_Bitmasks {
|
||||||
|
field chunk_x: i32 =,
|
||||||
|
field chunk_z: i32 =,
|
||||||
|
field bitmasks: LenPrefixed<VarInt, i64> =,
|
||||||
|
field heightmaps: Option<nbt::NamedTag> =,
|
||||||
|
field biomes: LenPrefixed<VarInt, VarInt> =,
|
||||||
|
field data: LenPrefixedBytes<VarInt> =,
|
||||||
|
field block_entities: LenPrefixed<VarInt, Option<nbt::NamedTag>> =,
|
||||||
|
}
|
||||||
packet ChunkData_Biomes3D_VarInt {
|
packet ChunkData_Biomes3D_VarInt {
|
||||||
field chunk_x: i32 =,
|
field chunk_x: i32 =,
|
||||||
field chunk_z: i32 =,
|
field chunk_z: i32 =,
|
||||||
|
@ -1173,14 +1252,24 @@ state_packets!(
|
||||||
field offset_z: f32 =,
|
field offset_z: f32 =,
|
||||||
field speed: f32 =,
|
field speed: f32 =,
|
||||||
field count: i32 =,
|
field count: i32 =,
|
||||||
field block_state: VarInt = when(|p: &Particle_f64| p.particle_id == 3 || p.particle_id == 23),
|
field block_state: VarInt = when(|p: &Particle_f64| p.particle_id == 4 || p.particle_id == 25),
|
||||||
field red: f32 = when(|p: &Particle_f64| p.particle_id == 14),
|
field red: f32 = when(|p: &Particle_f64| p.particle_id == 15 || p.particle_id == 16),
|
||||||
field green: f32 = when(|p: &Particle_f64| p.particle_id == 14),
|
field green: f32 = when(|p: &Particle_f64| p.particle_id == 15 || p.particle_id == 16),
|
||||||
field blue: f32 = when(|p: &Particle_f64| p.particle_id == 14),
|
field blue: f32 = when(|p: &Particle_f64| p.particle_id == 15 || p.particle_id == 16),
|
||||||
field scale: f32 = when(|p: &Particle_f64| p.particle_id == 14),
|
field scale: f32 = when(|p: &Particle_f64| p.particle_id == 15 || p.particle_id == 16),
|
||||||
field item: Option<nbt::NamedTag> = when(|p: &Particle_f64| p.particle_id == 32),
|
field to_red: f32 = when(|p: &Particle_f64| p.particle_id == 16),
|
||||||
|
field to_green: f32 = when(|p: &Particle_f64| p.particle_id == 16),
|
||||||
|
field to_blue: f32 = when(|p: &Particle_f64| p.particle_id == 16),
|
||||||
|
field item: Option<nbt::NamedTag> = when(|p: &Particle_f64| p.particle_id == 36),
|
||||||
|
field origin_x: f64 = when(|p: &Particle_f64| p.particle_id == 37),
|
||||||
|
field origin_y: f64 = when(|p: &Particle_f64| p.particle_id == 37),
|
||||||
|
field origin_z: f64 = when(|p: &Particle_f64| p.particle_id == 37),
|
||||||
|
field dest_x: f64 = when(|p: &Particle_f64| p.particle_id == 37),
|
||||||
|
field dest_y: f64 = when(|p: &Particle_f64| p.particle_id == 37),
|
||||||
|
field dest_z: f64 = when(|p: &Particle_f64| p.particle_id == 37),
|
||||||
|
field ticks: f64 = when(|p: &Particle_f64| p.particle_id == 37),
|
||||||
}
|
}
|
||||||
packet Particle_Data {
|
packet Particle_f32 {
|
||||||
field particle_id: i32 =,
|
field particle_id: i32 =,
|
||||||
field long_distance: bool =,
|
field long_distance: bool =,
|
||||||
field x: f32 =,
|
field x: f32 =,
|
||||||
|
@ -1191,30 +1280,22 @@ state_packets!(
|
||||||
field offset_z: f32 =,
|
field offset_z: f32 =,
|
||||||
field speed: f32 =,
|
field speed: f32 =,
|
||||||
field count: i32 =,
|
field count: i32 =,
|
||||||
field block_state: VarInt = when(|p: &Particle_Data| p.particle_id == 3 || p.particle_id == 23),
|
field block_state: VarInt = when(|p: &Particle_f32| p.particle_id == 4 || p.particle_id == 25),
|
||||||
field red: f32 = when(|p: &Particle_Data| p.particle_id == 14),
|
field red: f32 = when(|p: &Particle_f32| p.particle_id == 15 || p.particle_id == 16),
|
||||||
field green: f32 = when(|p: &Particle_Data| p.particle_id == 14),
|
field green: f32 = when(|p: &Particle_f32| p.particle_id == 15 || p.particle_id == 16),
|
||||||
field blue: f32 = when(|p: &Particle_Data| p.particle_id == 14),
|
field blue: f32 = when(|p: &Particle_f32| p.particle_id == 15 || p.particle_id == 16),
|
||||||
field scale: f32 = when(|p: &Particle_Data| p.particle_id == 14),
|
field scale: f32 = when(|p: &Particle_f32| p.particle_id == 15 || p.particle_id == 16),
|
||||||
field item: Option<nbt::NamedTag> = when(|p: &Particle_Data| p.particle_id == 32),
|
field to_red: f32 = when(|p: &Particle_f32| p.particle_id == 16),
|
||||||
}
|
field to_green: f32 = when(|p: &Particle_f32| p.particle_id == 16),
|
||||||
packet Particle_Data13 {
|
field to_blue: f32 = when(|p: &Particle_f32| p.particle_id == 16),
|
||||||
field particle_id: i32 =,
|
field item: Option<nbt::NamedTag> = when(|p: &Particle_f32| p.particle_id == 36),
|
||||||
field long_distance: bool =,
|
field origin_x: f64 = when(|p: &Particle_f32| p.particle_id == 37),
|
||||||
field x: f32 =,
|
field origin_y: f64 = when(|p: &Particle_f32| p.particle_id == 37),
|
||||||
field y: f32 =,
|
field origin_z: f64 = when(|p: &Particle_f32| p.particle_id == 37),
|
||||||
field z: f32 =,
|
field dest_x: f64 = when(|p: &Particle_f32| p.particle_id == 37),
|
||||||
field offset_x: f32 =,
|
field dest_y: f64 = when(|p: &Particle_f32| p.particle_id == 37),
|
||||||
field offset_y: f32 =,
|
field dest_z: f64 = when(|p: &Particle_f32| p.particle_id == 37),
|
||||||
field offset_z: f32 =,
|
field ticks: f64 = when(|p: &Particle_f32| p.particle_id == 37),
|
||||||
field speed: f32 =,
|
|
||||||
field count: i32 =,
|
|
||||||
field block_state: VarInt = when(|p: &Particle_Data13| p.particle_id == 3 || p.particle_id == 20),
|
|
||||||
field red: f32 = when(|p: &Particle_Data13| p.particle_id == 11),
|
|
||||||
field green: f32 = when(|p: &Particle_Data13| p.particle_id == 11),
|
|
||||||
field blue: f32 = when(|p: &Particle_Data13| p.particle_id == 11),
|
|
||||||
field scale: f32 = when(|p: &Particle_Data13| p.particle_id == 11),
|
|
||||||
field item: Option<nbt::NamedTag> = when(|p: &Particle_Data13| p.particle_id == 27),
|
|
||||||
}
|
}
|
||||||
packet Particle_VarIntArray {
|
packet Particle_VarIntArray {
|
||||||
field particle_id: i32 =,
|
field particle_id: i32 =,
|
||||||
|
@ -1519,6 +1600,9 @@ state_packets!(
|
||||||
field y: i32 =,
|
field y: i32 =,
|
||||||
field z: i32 =,
|
field z: i32 =,
|
||||||
}
|
}
|
||||||
|
packet WindowPing {
|
||||||
|
field id: i32 =,
|
||||||
|
}
|
||||||
/// CraftRecipeResponse is a response to CraftRecipeRequest, notifies the UI.
|
/// CraftRecipeResponse is a response to CraftRecipeRequest, notifies the UI.
|
||||||
packet CraftRecipeResponse {
|
packet CraftRecipeResponse {
|
||||||
field window_id: u8 =,
|
field window_id: u8 =,
|
||||||
|
@ -1540,6 +1624,18 @@ state_packets!(
|
||||||
field entity_id: Option<i32> = when(|p: &CombatEvent| p.event.0 == 1 || p.event.0 == 2),
|
field entity_id: Option<i32> = when(|p: &CombatEvent| p.event.0 == 1 || p.event.0 == 2),
|
||||||
field message: Option<format::Component> = when(|p: &CombatEvent| p.event.0 == 2),
|
field message: Option<format::Component> = when(|p: &CombatEvent| p.event.0 == 2),
|
||||||
}
|
}
|
||||||
|
packet CombatEventEnd {
|
||||||
|
field duration: VarInt =,
|
||||||
|
field entity_id: i32 =,
|
||||||
|
}
|
||||||
|
packet CombatEventEnter {
|
||||||
|
field empty: Vec<u8> =, // empty packet, but a field is syntactically required here
|
||||||
|
}
|
||||||
|
packet CombatEventDeath {
|
||||||
|
field player_id: VarInt =,
|
||||||
|
field entity_id: i32 =,
|
||||||
|
field message: String =,
|
||||||
|
}
|
||||||
/// PlayerInfo is sent by the server for every player connected to the server
|
/// PlayerInfo is sent by the server for every player connected to the server
|
||||||
/// to provide skin and username information as well as ping and gamemode info.
|
/// to provide skin and username information as well as ping and gamemode info.
|
||||||
packet PlayerInfo {
|
packet PlayerInfo {
|
||||||
|
@ -1562,6 +1658,16 @@ state_packets!(
|
||||||
/// TeleportPlayer is sent to change the player's position. The client is expected
|
/// TeleportPlayer is sent to change the player's position. The client is expected
|
||||||
/// to reply to the server with the same positions as contained in this packet
|
/// to reply to the server with the same positions as contained in this packet
|
||||||
/// otherwise will reject future packets.
|
/// otherwise will reject future packets.
|
||||||
|
packet TeleportPlayer_WithDismount {
|
||||||
|
field x: f64 =,
|
||||||
|
field y: f64 =,
|
||||||
|
field z: f64 =,
|
||||||
|
field yaw: f32 =,
|
||||||
|
field pitch: f32 =,
|
||||||
|
field flags: u8 =,
|
||||||
|
field teleport_id: VarInt =,
|
||||||
|
field dismount: bool =,
|
||||||
|
}
|
||||||
packet TeleportPlayer_WithConfirm {
|
packet TeleportPlayer_WithConfirm {
|
||||||
field x: f64 =,
|
field x: f64 =,
|
||||||
field y: f64 =,
|
field y: f64 =,
|
||||||
|
@ -1646,6 +1752,13 @@ state_packets!(
|
||||||
/// ResourcePackSend causes the client to check its cache for the requested
|
/// ResourcePackSend causes the client to check its cache for the requested
|
||||||
/// resource packet and download it if its missing. Once the resource pack
|
/// resource packet and download it if its missing. Once the resource pack
|
||||||
/// is obtained the client will use it.
|
/// is obtained the client will use it.
|
||||||
|
packet ResourcePackSend_Prompt {
|
||||||
|
field url: String =,
|
||||||
|
field hash: String =,
|
||||||
|
field forced: bool =,
|
||||||
|
field has_prompt_message: bool =,
|
||||||
|
field prompt_message: String = when(|p: &ResourcePackSend_Prompt| p.has_prompt_message),
|
||||||
|
}
|
||||||
packet ResourcePackSend {
|
packet ResourcePackSend {
|
||||||
field url: String =,
|
field url: String =,
|
||||||
field hash: String =,
|
field hash: String =,
|
||||||
|
@ -1706,6 +1819,9 @@ state_packets!(
|
||||||
field has_id: bool =,
|
field has_id: bool =,
|
||||||
field tab_id: String = when(|p: &SelectAdvancementTab| p.has_id),
|
field tab_id: String = when(|p: &SelectAdvancementTab| p.has_id),
|
||||||
}
|
}
|
||||||
|
packet ActionBar {
|
||||||
|
field text: String =,
|
||||||
|
}
|
||||||
/// WorldBorder configures the world's border.
|
/// WorldBorder configures the world's border.
|
||||||
packet WorldBorder {
|
packet WorldBorder {
|
||||||
field action: VarInt =,
|
field action: VarInt =,
|
||||||
|
@ -1718,6 +1834,24 @@ state_packets!(
|
||||||
field warning_time: Option<VarInt> = when(|p: &WorldBorder| p.action.0 == 3 || p.action.0 == 4),
|
field warning_time: Option<VarInt> = when(|p: &WorldBorder| p.action.0 == 3 || p.action.0 == 4),
|
||||||
field warning_blocks: Option<VarInt> = when(|p: &WorldBorder| p.action.0 == 3 || p.action.0 == 5),
|
field warning_blocks: Option<VarInt> = when(|p: &WorldBorder| p.action.0 == 3 || p.action.0 == 5),
|
||||||
}
|
}
|
||||||
|
packet WorldBorderCenter {
|
||||||
|
field x: f64 =,
|
||||||
|
field z: f64 =,
|
||||||
|
}
|
||||||
|
packet WorldBorderLerpSize {
|
||||||
|
field old_diameter: f64 =,
|
||||||
|
field new_diameter: f64 =,
|
||||||
|
field speed: VarLong =,
|
||||||
|
}
|
||||||
|
packet WorldBorderSize {
|
||||||
|
field diameter: f64 =,
|
||||||
|
}
|
||||||
|
packet WorldBorderWarningDelay {
|
||||||
|
field warning_time: VarInt =,
|
||||||
|
}
|
||||||
|
packet WorldBorderWarningReach {
|
||||||
|
field warning_blocks: VarInt =,
|
||||||
|
}
|
||||||
/// Camera causes the client to spectate the entity with the passed id.
|
/// Camera causes the client to spectate the entity with the passed id.
|
||||||
/// Use the player's id to de-spectate.
|
/// Use the player's id to de-spectate.
|
||||||
packet Camera {
|
packet Camera {
|
||||||
|
@ -1887,7 +2021,11 @@ state_packets!(
|
||||||
}
|
}
|
||||||
/// SpawnPosition is sent to change the player's current spawn point. Currently
|
/// SpawnPosition is sent to change the player's current spawn point. Currently
|
||||||
/// only used by the client for the compass.
|
/// only used by the client for the compass.
|
||||||
packet SpawnPosition {
|
packet SpawnPosition_Angle {
|
||||||
|
field location: Position =,
|
||||||
|
field angle: f32 =,
|
||||||
|
}
|
||||||
|
packet SpawnPosition_NoAngle {
|
||||||
field location: Position =,
|
field location: Position =,
|
||||||
}
|
}
|
||||||
packet SpawnPosition_i32 {
|
packet SpawnPosition_i32 {
|
||||||
|
@ -1934,6 +2072,14 @@ state_packets!(
|
||||||
field fade_stay: Option<format::Component> = when(|p: &Title_notext_component| p.action.0 == 2),
|
field fade_stay: Option<format::Component> = when(|p: &Title_notext_component| p.action.0 == 2),
|
||||||
field fade_out: Option<format::Component> = when(|p: &Title_notext_component| p.action.0 == 2),
|
field fade_out: Option<format::Component> = when(|p: &Title_notext_component| p.action.0 == 2),
|
||||||
}
|
}
|
||||||
|
packet TitleSubtitle {
|
||||||
|
field subtitle_text: String =,
|
||||||
|
}
|
||||||
|
packet TitleTimes {
|
||||||
|
field fade_in: i32 =,
|
||||||
|
field stay: i32 =,
|
||||||
|
field fade_out: i32 =,
|
||||||
|
}
|
||||||
/// UpdateSign sets or changes the text on a sign.
|
/// UpdateSign sets or changes the text on a sign.
|
||||||
packet UpdateSign {
|
packet UpdateSign {
|
||||||
field location: Position =,
|
field location: Position =,
|
||||||
|
@ -2037,7 +2183,11 @@ state_packets!(
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
/// EntityProperties updates the properties for an entity.
|
/// EntityProperties updates the properties for an entity.
|
||||||
packet EntityProperties {
|
packet EntityProperties_VarIntVarInt {
|
||||||
|
field entity_id: VarInt =,
|
||||||
|
field properties: LenPrefixed<VarInt, packet::EntityProperty> =,
|
||||||
|
}
|
||||||
|
packet EntityProperties_VarInt {
|
||||||
field entity_id: VarInt =,
|
field entity_id: VarInt =,
|
||||||
field properties: LenPrefixed<i32, packet::EntityProperty> =,
|
field properties: LenPrefixed<i32, packet::EntityProperty> =,
|
||||||
}
|
}
|
||||||
|
@ -2067,18 +2217,32 @@ state_packets!(
|
||||||
field item_tags: LenPrefixed<VarInt, packet::Tags> =,
|
field item_tags: LenPrefixed<VarInt, packet::Tags> =,
|
||||||
field fluid_tags: LenPrefixed<VarInt, packet::Tags> =,
|
field fluid_tags: LenPrefixed<VarInt, packet::Tags> =,
|
||||||
}
|
}
|
||||||
packet TagsWithEntities {
|
packet Tags_WithEntities {
|
||||||
field block_tags: LenPrefixed<VarInt, packet::Tags> =,
|
field block_tags: LenPrefixed<VarInt, packet::Tags> =,
|
||||||
field item_tags: LenPrefixed<VarInt, packet::Tags> =,
|
field item_tags: LenPrefixed<VarInt, packet::Tags> =,
|
||||||
field fluid_tags: LenPrefixed<VarInt, packet::Tags> =,
|
field fluid_tags: LenPrefixed<VarInt, packet::Tags> =,
|
||||||
field entity_tags: LenPrefixed<VarInt, packet::Tags> =,
|
field entity_tags: LenPrefixed<VarInt, packet::Tags> =,
|
||||||
}
|
}
|
||||||
|
packet Tags_Nested {
|
||||||
|
field tags: LenPrefixed<VarInt, packet::TagsGroup> =,
|
||||||
|
}
|
||||||
packet AcknowledgePlayerDigging {
|
packet AcknowledgePlayerDigging {
|
||||||
field location: Position =,
|
field location: Position =,
|
||||||
field block: VarInt =,
|
field block: VarInt =,
|
||||||
field status: VarInt =,
|
field status: VarInt =,
|
||||||
field successful: bool =,
|
field successful: bool =,
|
||||||
}
|
}
|
||||||
|
packet UpdateLight_Arrays {
|
||||||
|
field chunk_x: VarInt =,
|
||||||
|
field chunk_z: VarInt =,
|
||||||
|
field trust_edges: bool =,
|
||||||
|
field sky_light_mask: LenPrefixed<VarInt, i64> =,
|
||||||
|
field block_light_mask: LenPrefixed<VarInt, i64> =,
|
||||||
|
field empty_sky_light_mask: LenPrefixed<VarInt, i64> =,
|
||||||
|
field empty_block_light_mask: LenPrefixed<VarInt, i64> =,
|
||||||
|
field sky_light_arrays: LenPrefixed<VarInt, LenPrefixed<VarInt, u8>> =,
|
||||||
|
field block_light_arrays: LenPrefixed<VarInt, LenPrefixed<VarInt, u8>> =,
|
||||||
|
}
|
||||||
packet UpdateLight_WithTrust {
|
packet UpdateLight_WithTrust {
|
||||||
field chunk_x: VarInt =,
|
field chunk_x: VarInt =,
|
||||||
field chunk_z: VarInt =,
|
field chunk_z: VarInt =,
|
||||||
|
@ -2086,6 +2250,7 @@ state_packets!(
|
||||||
field sky_light_mask: VarInt =,
|
field sky_light_mask: VarInt =,
|
||||||
field block_light_mask: VarInt =,
|
field block_light_mask: VarInt =,
|
||||||
field empty_sky_light_mask: VarInt =,
|
field empty_sky_light_mask: VarInt =,
|
||||||
|
// TODO: this packet changed <=1.16.4, see https://wiki.vg/index.php?title=Protocol&oldid=16681#Update_Light
|
||||||
field light_arrays: Vec<u8> =,
|
field light_arrays: Vec<u8> =,
|
||||||
}
|
}
|
||||||
packet UpdateLight_NoTrust {
|
packet UpdateLight_NoTrust {
|
||||||
|
@ -3007,6 +3172,25 @@ impl Serializable for Tags {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Default)]
|
||||||
|
pub struct TagsGroup {
|
||||||
|
pub tag_type: String,
|
||||||
|
pub tags: LenPrefixed<VarInt, Tags>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Serializable for TagsGroup {
|
||||||
|
fn read_from<R: io::Read>(buf: &mut R) -> Result<Self, Error> {
|
||||||
|
Ok(TagsGroup {
|
||||||
|
tag_type: Serializable::read_from(buf)?,
|
||||||
|
tags: Serializable::read_from(buf)?,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fn write_to<W: io::Write>(&self, _: &mut W) -> Result<(), Error> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Default)]
|
#[derive(Debug, Default)]
|
||||||
pub struct Trade {
|
pub struct Trade {
|
||||||
pub input_item_1: Option<nbt::NamedTag>,
|
pub input_item_1: Option<nbt::NamedTag>,
|
||||||
|
@ -3299,3 +3483,23 @@ impl Serializable for CommandNode {
|
||||||
unimplemented!()
|
unimplemented!()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Default)]
|
||||||
|
pub struct NumberedSlot {
|
||||||
|
pub slot_number: i16,
|
||||||
|
pub slot_data: Option<item::Stack>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Serializable for NumberedSlot {
|
||||||
|
fn read_from<R: io::Read>(buf: &mut R) -> Result<Self, Error> {
|
||||||
|
Ok(NumberedSlot {
|
||||||
|
slot_number: Serializable::read_from(buf)?,
|
||||||
|
slot_data: Serializable::read_from(buf)?,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fn write_to<W: io::Write>(&self, buf: &mut W) -> Result<(), Error> {
|
||||||
|
self.slot_number.write_to(buf)?;
|
||||||
|
self.slot_data.write_to(buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ mod v1_14_4;
|
||||||
mod v1_15;
|
mod v1_15;
|
||||||
mod v1_16_1;
|
mod v1_16_1;
|
||||||
mod v1_16_4;
|
mod v1_16_4;
|
||||||
|
mod v1_17_1;
|
||||||
mod v1_7_10;
|
mod v1_7_10;
|
||||||
mod v1_8_9;
|
mod v1_8_9;
|
||||||
mod v1_9;
|
mod v1_9;
|
||||||
|
@ -26,6 +27,7 @@ mod v1_9_2;
|
||||||
pub fn protocol_name_to_protocol_version(s: String) -> i32 {
|
pub fn protocol_name_to_protocol_version(s: String) -> i32 {
|
||||||
match s.as_ref() {
|
match s.as_ref() {
|
||||||
"" => SUPPORTED_PROTOCOLS[0],
|
"" => SUPPORTED_PROTOCOLS[0],
|
||||||
|
"1.17.1" => 756,
|
||||||
"1.16.5" => 754,
|
"1.16.5" => 754,
|
||||||
"1.16.4" => 754,
|
"1.16.4" => 754,
|
||||||
"1.16.3" => 753,
|
"1.16.3" => 753,
|
||||||
|
@ -69,6 +71,7 @@ pub fn translate_internal_packet_id_for_version(
|
||||||
to_internal: bool,
|
to_internal: bool,
|
||||||
) -> i32 {
|
) -> i32 {
|
||||||
match version {
|
match version {
|
||||||
|
756 => v1_17_1::translate_internal_packet_id(state, dir, id, to_internal),
|
||||||
754 | 753 | 751 => v1_16_4::translate_internal_packet_id(state, dir, id, to_internal),
|
754 | 753 | 751 => v1_16_4::translate_internal_packet_id(state, dir, id, to_internal),
|
||||||
736 => v1_16_1::translate_internal_packet_id(state, dir, id, to_internal),
|
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),
|
735 => v1_16_1::translate_internal_packet_id(state, dir, id, to_internal),
|
||||||
|
|
|
@ -57,14 +57,14 @@ protocol_packet_ids!(
|
||||||
0x11 => ConfirmTransaction
|
0x11 => ConfirmTransaction
|
||||||
0x12 => WindowClose
|
0x12 => WindowClose
|
||||||
0x13 => WindowOpen
|
0x13 => WindowOpen
|
||||||
0x14 => WindowItems
|
0x14 => WindowItems_i16
|
||||||
0x15 => WindowProperty
|
0x15 => WindowProperty
|
||||||
0x16 => WindowSetSlot
|
0x16 => WindowSetSlot
|
||||||
0x17 => SetCooldown
|
0x17 => SetCooldown
|
||||||
0x18 => PluginMessageClientbound
|
0x18 => PluginMessageClientbound
|
||||||
0x19 => Disconnect
|
0x19 => Disconnect
|
||||||
0x1a => EntityAction
|
0x1a => EntityAction
|
||||||
0x1b => Explosion
|
0x1b => Explosion_i32
|
||||||
0x1c => ChunkUnload
|
0x1c => ChunkUnload
|
||||||
0x1d => SetCompression
|
0x1d => SetCompression
|
||||||
0x1e => ChangeGameState
|
0x1e => ChangeGameState
|
||||||
|
@ -103,14 +103,14 @@ protocol_packet_ids!(
|
||||||
0x3f => ScoreboardObjective
|
0x3f => ScoreboardObjective
|
||||||
0x40 => Teams_u8
|
0x40 => Teams_u8
|
||||||
0x41 => UpdateScore
|
0x41 => UpdateScore
|
||||||
0x42 => SpawnPosition
|
0x42 => SpawnPosition_NoAngle
|
||||||
0x43 => TimeUpdate
|
0x43 => TimeUpdate
|
||||||
0x44 => Title_notext_component
|
0x44 => Title_notext_component
|
||||||
0x45 => UpdateSign
|
0x45 => UpdateSign
|
||||||
0x46 => PlayerListHeaderFooter
|
0x46 => PlayerListHeaderFooter
|
||||||
0x47 => CollectItem_nocount
|
0x47 => CollectItem_nocount
|
||||||
0x48 => EntityTeleport_i32
|
0x48 => EntityTeleport_i32
|
||||||
0x49 => EntityProperties
|
0x49 => EntityProperties_VarInt
|
||||||
0x4a => EntityEffect
|
0x4a => EntityEffect
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ protocol_packet_ids!(
|
||||||
0x08 => ClickWindow
|
0x08 => ClickWindow
|
||||||
0x09 => CloseWindow
|
0x09 => CloseWindow
|
||||||
0x0a => PluginMessageServerbound
|
0x0a => PluginMessageServerbound
|
||||||
0x0b => EditBook
|
0x0b => EditBook_Item
|
||||||
0x0c => QueryEntityNBT
|
0x0c => QueryEntityNBT
|
||||||
0x0d => UseEntity_Hand
|
0x0d => UseEntity_Hand
|
||||||
0x0e => KeepAliveServerbound_i64
|
0x0e => KeepAliveServerbound_i64
|
||||||
|
@ -74,7 +74,7 @@ protocol_packet_ids!(
|
||||||
0x12 => ConfirmTransaction
|
0x12 => ConfirmTransaction
|
||||||
0x13 => WindowClose
|
0x13 => WindowClose
|
||||||
0x14 => WindowOpen
|
0x14 => WindowOpen
|
||||||
0x15 => WindowItems
|
0x15 => WindowItems_i16
|
||||||
0x16 => WindowProperty
|
0x16 => WindowProperty
|
||||||
0x17 => WindowSetSlot
|
0x17 => WindowSetSlot
|
||||||
0x18 => SetCooldown
|
0x18 => SetCooldown
|
||||||
|
@ -83,13 +83,13 @@ protocol_packet_ids!(
|
||||||
0x1b => Disconnect
|
0x1b => Disconnect
|
||||||
0x1c => EntityAction
|
0x1c => EntityAction
|
||||||
0x1d => NBTQueryResponse
|
0x1d => NBTQueryResponse
|
||||||
0x1e => Explosion
|
0x1e => Explosion_i32
|
||||||
0x1f => ChunkUnload
|
0x1f => ChunkUnload
|
||||||
0x20 => ChangeGameState
|
0x20 => ChangeGameState
|
||||||
0x21 => KeepAliveClientbound_i64
|
0x21 => KeepAliveClientbound_i64
|
||||||
0x22 => ChunkData_HeightMap
|
0x22 => ChunkData_HeightMap
|
||||||
0x23 => Effect
|
0x23 => Effect
|
||||||
0x24 => Particle_VarIntArray
|
0x24 => Particle_f32
|
||||||
0x25 => JoinGame_i32
|
0x25 => JoinGame_i32
|
||||||
0x26 => Maps_NoLocked
|
0x26 => Maps_NoLocked
|
||||||
0x27 => Entity
|
0x27 => Entity
|
||||||
|
@ -127,7 +127,7 @@ protocol_packet_ids!(
|
||||||
0x47 => SetPassengers
|
0x47 => SetPassengers
|
||||||
0x48 => Teams_u8
|
0x48 => Teams_u8
|
||||||
0x49 => UpdateScore
|
0x49 => UpdateScore
|
||||||
0x4a => SpawnPosition
|
0x4a => SpawnPosition_NoAngle
|
||||||
0x4b => TimeUpdate
|
0x4b => TimeUpdate
|
||||||
0x4d => StopSound
|
0x4d => StopSound
|
||||||
0x4e => SoundEffect
|
0x4e => SoundEffect
|
||||||
|
@ -136,10 +136,10 @@ protocol_packet_ids!(
|
||||||
0x51 => CollectItem
|
0x51 => CollectItem
|
||||||
0x52 => EntityTeleport_f64
|
0x52 => EntityTeleport_f64
|
||||||
0x53 => Advancements
|
0x53 => Advancements
|
||||||
0x54 => EntityProperties
|
0x54 => EntityProperties_VarInt
|
||||||
0x55 => EntityEffect
|
0x55 => EntityEffect
|
||||||
0x56 => DeclareRecipes
|
0x56 => DeclareRecipes
|
||||||
0x57 => TagsWithEntities
|
0x57 => Tags_WithEntities
|
||||||
0x58 => UpdateLight_NoTrust
|
0x58 => UpdateLight_NoTrust
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ protocol_packet_ids!(
|
||||||
0x08 => ClickWindow
|
0x08 => ClickWindow
|
||||||
0x09 => CloseWindow
|
0x09 => CloseWindow
|
||||||
0x0a => PluginMessageServerbound
|
0x0a => PluginMessageServerbound
|
||||||
0x0b => EditBook
|
0x0b => EditBook_Item
|
||||||
0x0c => QueryEntityNBT
|
0x0c => QueryEntityNBT
|
||||||
0x0d => UseEntity_Hand
|
0x0d => UseEntity_Hand
|
||||||
0x0e => KeepAliveServerbound_i64
|
0x0e => KeepAliveServerbound_i64
|
||||||
|
@ -74,7 +74,7 @@ protocol_packet_ids!(
|
||||||
0x12 => ConfirmTransaction
|
0x12 => ConfirmTransaction
|
||||||
0x13 => WindowClose
|
0x13 => WindowClose
|
||||||
0x14 => WindowOpenHorse
|
0x14 => WindowOpenHorse
|
||||||
0x15 => WindowItems
|
0x15 => WindowItems_i16
|
||||||
0x16 => WindowProperty
|
0x16 => WindowProperty
|
||||||
0x17 => WindowSetSlot
|
0x17 => WindowSetSlot
|
||||||
0x18 => SetCooldown
|
0x18 => SetCooldown
|
||||||
|
@ -83,13 +83,13 @@ protocol_packet_ids!(
|
||||||
0x1b => Disconnect
|
0x1b => Disconnect
|
||||||
0x1c => EntityAction
|
0x1c => EntityAction
|
||||||
0x1d => NBTQueryResponse
|
0x1d => NBTQueryResponse
|
||||||
0x1e => Explosion
|
0x1e => Explosion_i32
|
||||||
0x1f => ChunkUnload
|
0x1f => ChunkUnload
|
||||||
0x20 => ChangeGameState
|
0x20 => ChangeGameState
|
||||||
0x21 => KeepAliveClientbound_i64
|
0x21 => KeepAliveClientbound_i64
|
||||||
0x22 => ChunkData_HeightMap
|
0x22 => ChunkData_HeightMap
|
||||||
0x23 => Effect
|
0x23 => Effect
|
||||||
0x24 => Particle_Data13
|
0x24 => Particle_f32
|
||||||
0x25 => JoinGame_i32
|
0x25 => JoinGame_i32
|
||||||
0x26 => Maps
|
0x26 => Maps
|
||||||
0x27 => Entity
|
0x27 => Entity
|
||||||
|
@ -127,7 +127,7 @@ protocol_packet_ids!(
|
||||||
0x47 => SetPassengers
|
0x47 => SetPassengers
|
||||||
0x48 => Teams_u8
|
0x48 => Teams_u8
|
||||||
0x49 => UpdateScore
|
0x49 => UpdateScore
|
||||||
0x4a => SpawnPosition
|
0x4a => SpawnPosition_NoAngle
|
||||||
0x4b => TimeUpdate
|
0x4b => TimeUpdate
|
||||||
0x4d => StopSound
|
0x4d => StopSound
|
||||||
0x4e => SoundEffect
|
0x4e => SoundEffect
|
||||||
|
@ -136,10 +136,10 @@ protocol_packet_ids!(
|
||||||
0x51 => CollectItem
|
0x51 => CollectItem
|
||||||
0x52 => EntityTeleport_f64
|
0x52 => EntityTeleport_f64
|
||||||
0x53 => Advancements
|
0x53 => Advancements
|
||||||
0x54 => EntityProperties
|
0x54 => EntityProperties_VarInt
|
||||||
0x55 => EntityEffect
|
0x55 => EntityEffect
|
||||||
0x56 => DeclareRecipes
|
0x56 => DeclareRecipes
|
||||||
0x57 => TagsWithEntities
|
0x57 => Tags_WithEntities
|
||||||
0x58 => UpdateLight_NoTrust
|
0x58 => UpdateLight_NoTrust
|
||||||
0x59 => WindowOpen_VarInt
|
0x59 => WindowOpen_VarInt
|
||||||
0x5a => TradeList_WithoutRestock // TODO: without 1.14 added fields
|
0x5a => TradeList_WithoutRestock // TODO: without 1.14 added fields
|
||||||
|
|
|
@ -60,7 +60,7 @@ protocol_packet_ids!(
|
||||||
0x11 => ConfirmTransaction
|
0x11 => ConfirmTransaction
|
||||||
0x12 => WindowClose
|
0x12 => WindowClose
|
||||||
0x13 => WindowOpen
|
0x13 => WindowOpen
|
||||||
0x14 => WindowItems
|
0x14 => WindowItems_i16
|
||||||
0x15 => WindowProperty
|
0x15 => WindowProperty
|
||||||
0x16 => WindowSetSlot
|
0x16 => WindowSetSlot
|
||||||
0x17 => SetCooldown
|
0x17 => SetCooldown
|
||||||
|
@ -68,7 +68,7 @@ protocol_packet_ids!(
|
||||||
0x19 => NamedSoundEffect
|
0x19 => NamedSoundEffect
|
||||||
0x1a => Disconnect
|
0x1a => Disconnect
|
||||||
0x1b => EntityAction
|
0x1b => EntityAction
|
||||||
0x1c => Explosion
|
0x1c => Explosion_i32
|
||||||
0x1d => ChunkUnload
|
0x1d => ChunkUnload
|
||||||
0x1e => ChangeGameState
|
0x1e => ChangeGameState
|
||||||
0x1f => KeepAliveClientbound_VarInt
|
0x1f => KeepAliveClientbound_VarInt
|
||||||
|
@ -107,14 +107,14 @@ protocol_packet_ids!(
|
||||||
0x40 => SetPassengers
|
0x40 => SetPassengers
|
||||||
0x41 => Teams_u8
|
0x41 => Teams_u8
|
||||||
0x42 => UpdateScore
|
0x42 => UpdateScore
|
||||||
0x43 => SpawnPosition
|
0x43 => SpawnPosition_NoAngle
|
||||||
0x44 => TimeUpdate
|
0x44 => TimeUpdate
|
||||||
0x45 => Title_notext
|
0x45 => Title_notext
|
||||||
0x46 => SoundEffect
|
0x46 => SoundEffect
|
||||||
0x47 => PlayerListHeaderFooter
|
0x47 => PlayerListHeaderFooter
|
||||||
0x48 => CollectItem_nocount
|
0x48 => CollectItem_nocount
|
||||||
0x49 => EntityTeleport_f64
|
0x49 => EntityTeleport_f64
|
||||||
0x4a => EntityProperties
|
0x4a => EntityProperties_VarInt
|
||||||
0x4b => EntityEffect
|
0x4b => EntityEffect
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ protocol_packet_ids!(
|
||||||
0x11 => ConfirmTransaction
|
0x11 => ConfirmTransaction
|
||||||
0x12 => WindowClose
|
0x12 => WindowClose
|
||||||
0x13 => WindowOpen
|
0x13 => WindowOpen
|
||||||
0x14 => WindowItems
|
0x14 => WindowItems_i16
|
||||||
0x15 => WindowProperty
|
0x15 => WindowProperty
|
||||||
0x16 => WindowSetSlot
|
0x16 => WindowSetSlot
|
||||||
0x17 => SetCooldown
|
0x17 => SetCooldown
|
||||||
|
@ -68,7 +68,7 @@ protocol_packet_ids!(
|
||||||
0x19 => NamedSoundEffect
|
0x19 => NamedSoundEffect
|
||||||
0x1a => Disconnect
|
0x1a => Disconnect
|
||||||
0x1b => EntityAction
|
0x1b => EntityAction
|
||||||
0x1c => Explosion
|
0x1c => Explosion_i32
|
||||||
0x1d => ChunkUnload
|
0x1d => ChunkUnload
|
||||||
0x1e => ChangeGameState
|
0x1e => ChangeGameState
|
||||||
0x1f => KeepAliveClientbound_VarInt
|
0x1f => KeepAliveClientbound_VarInt
|
||||||
|
@ -107,14 +107,14 @@ protocol_packet_ids!(
|
||||||
0x40 => SetPassengers
|
0x40 => SetPassengers
|
||||||
0x41 => Teams_u8
|
0x41 => Teams_u8
|
||||||
0x42 => UpdateScore
|
0x42 => UpdateScore
|
||||||
0x43 => SpawnPosition
|
0x43 => SpawnPosition_NoAngle
|
||||||
0x44 => TimeUpdate
|
0x44 => TimeUpdate
|
||||||
0x45 => Title
|
0x45 => Title
|
||||||
0x46 => SoundEffect
|
0x46 => SoundEffect
|
||||||
0x47 => PlayerListHeaderFooter
|
0x47 => PlayerListHeaderFooter
|
||||||
0x48 => CollectItem
|
0x48 => CollectItem
|
||||||
0x49 => EntityTeleport_f64
|
0x49 => EntityTeleport_f64
|
||||||
0x4a => EntityProperties
|
0x4a => EntityProperties_VarInt
|
||||||
0x4b => EntityEffect
|
0x4b => EntityEffect
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,7 +63,7 @@ protocol_packet_ids!(
|
||||||
0x11 => ConfirmTransaction
|
0x11 => ConfirmTransaction
|
||||||
0x12 => WindowClose
|
0x12 => WindowClose
|
||||||
0x13 => WindowOpen
|
0x13 => WindowOpen
|
||||||
0x14 => WindowItems
|
0x14 => WindowItems_i16
|
||||||
0x15 => WindowProperty
|
0x15 => WindowProperty
|
||||||
0x16 => WindowSetSlot
|
0x16 => WindowSetSlot
|
||||||
0x17 => SetCooldown
|
0x17 => SetCooldown
|
||||||
|
@ -71,7 +71,7 @@ protocol_packet_ids!(
|
||||||
0x19 => NamedSoundEffect
|
0x19 => NamedSoundEffect
|
||||||
0x1a => Disconnect
|
0x1a => Disconnect
|
||||||
0x1b => EntityAction
|
0x1b => EntityAction
|
||||||
0x1c => Explosion
|
0x1c => Explosion_i32
|
||||||
0x1d => ChunkUnload
|
0x1d => ChunkUnload
|
||||||
0x1e => ChangeGameState
|
0x1e => ChangeGameState
|
||||||
0x1f => KeepAliveClientbound_i64
|
0x1f => KeepAliveClientbound_i64
|
||||||
|
@ -113,7 +113,7 @@ protocol_packet_ids!(
|
||||||
0x43 => SetPassengers
|
0x43 => SetPassengers
|
||||||
0x44 => Teams_u8
|
0x44 => Teams_u8
|
||||||
0x45 => UpdateScore
|
0x45 => UpdateScore
|
||||||
0x46 => SpawnPosition
|
0x46 => SpawnPosition_NoAngle
|
||||||
0x47 => TimeUpdate
|
0x47 => TimeUpdate
|
||||||
0x48 => Title
|
0x48 => Title
|
||||||
0x49 => SoundEffect
|
0x49 => SoundEffect
|
||||||
|
@ -121,7 +121,7 @@ protocol_packet_ids!(
|
||||||
0x4b => CollectItem
|
0x4b => CollectItem
|
||||||
0x4c => EntityTeleport_f64
|
0x4c => EntityTeleport_f64
|
||||||
0x4d => Advancements
|
0x4d => Advancements
|
||||||
0x4e => EntityProperties
|
0x4e => EntityProperties_VarInt
|
||||||
0x4f => EntityEffect
|
0x4f => EntityEffect
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ protocol_packet_ids!(
|
||||||
0x08 => ClickWindow
|
0x08 => ClickWindow
|
||||||
0x09 => CloseWindow
|
0x09 => CloseWindow
|
||||||
0x0a => PluginMessageServerbound
|
0x0a => PluginMessageServerbound
|
||||||
0x0b => EditBook
|
0x0b => EditBook_Item
|
||||||
0x0c => QueryEntityNBT
|
0x0c => QueryEntityNBT
|
||||||
0x0d => UseEntity_Hand
|
0x0d => UseEntity_Hand
|
||||||
0x0e => KeepAliveServerbound_i64
|
0x0e => KeepAliveServerbound_i64
|
||||||
|
@ -74,7 +74,7 @@ protocol_packet_ids!(
|
||||||
0x12 => ConfirmTransaction
|
0x12 => ConfirmTransaction
|
||||||
0x13 => WindowClose
|
0x13 => WindowClose
|
||||||
0x14 => WindowOpen
|
0x14 => WindowOpen
|
||||||
0x15 => WindowItems
|
0x15 => WindowItems_i16
|
||||||
0x16 => WindowProperty
|
0x16 => WindowProperty
|
||||||
0x17 => WindowSetSlot
|
0x17 => WindowSetSlot
|
||||||
0x18 => SetCooldown
|
0x18 => SetCooldown
|
||||||
|
@ -83,13 +83,13 @@ protocol_packet_ids!(
|
||||||
0x1b => Disconnect
|
0x1b => Disconnect
|
||||||
0x1c => EntityAction
|
0x1c => EntityAction
|
||||||
0x1d => NBTQueryResponse
|
0x1d => NBTQueryResponse
|
||||||
0x1e => Explosion
|
0x1e => Explosion_i32
|
||||||
0x1f => ChunkUnload
|
0x1f => ChunkUnload
|
||||||
0x20 => ChangeGameState
|
0x20 => ChangeGameState
|
||||||
0x21 => KeepAliveClientbound_i64
|
0x21 => KeepAliveClientbound_i64
|
||||||
0x22 => ChunkData
|
0x22 => ChunkData
|
||||||
0x23 => Effect
|
0x23 => Effect
|
||||||
0x24 => Particle_Data13
|
0x24 => Particle_f32
|
||||||
0x25 => JoinGame_i32
|
0x25 => JoinGame_i32
|
||||||
0x26 => Maps_NoLocked
|
0x26 => Maps_NoLocked
|
||||||
0x27 => Entity
|
0x27 => Entity
|
||||||
|
@ -126,7 +126,7 @@ protocol_packet_ids!(
|
||||||
0x46 => SetPassengers
|
0x46 => SetPassengers
|
||||||
0x47 => Teams_VarInt
|
0x47 => Teams_VarInt
|
||||||
0x48 => UpdateScore
|
0x48 => UpdateScore
|
||||||
0x49 => SpawnPosition
|
0x49 => SpawnPosition_NoAngle
|
||||||
0x4a => TimeUpdate
|
0x4a => TimeUpdate
|
||||||
0x4c => StopSound
|
0x4c => StopSound
|
||||||
0x4d => SoundEffect
|
0x4d => SoundEffect
|
||||||
|
@ -134,7 +134,7 @@ protocol_packet_ids!(
|
||||||
0x4f => CollectItem
|
0x4f => CollectItem
|
||||||
0x50 => EntityTeleport_f64
|
0x50 => EntityTeleport_f64
|
||||||
0x51 => Advancements
|
0x51 => Advancements
|
||||||
0x52 => EntityProperties
|
0x52 => EntityProperties_VarInt
|
||||||
0x53 => EntityEffect
|
0x53 => EntityEffect
|
||||||
0x54 => DeclareRecipes
|
0x54 => DeclareRecipes
|
||||||
0x55 => Tags
|
0x55 => Tags
|
||||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
||||||
0x09 => ClickWindow
|
0x09 => ClickWindow
|
||||||
0x0a => CloseWindow
|
0x0a => CloseWindow
|
||||||
0x0b => PluginMessageServerbound
|
0x0b => PluginMessageServerbound
|
||||||
0x0c => EditBook
|
0x0c => EditBook_Item
|
||||||
0x0d => QueryEntityNBT
|
0x0d => QueryEntityNBT
|
||||||
0x0e => UseEntity_Hand
|
0x0e => UseEntity_Hand
|
||||||
0x0f => KeepAliveServerbound_i64
|
0x0f => KeepAliveServerbound_i64
|
||||||
|
@ -76,7 +76,7 @@ protocol_packet_ids!(
|
||||||
0x11 => DeclareCommands
|
0x11 => DeclareCommands
|
||||||
0x12 => ConfirmTransaction
|
0x12 => ConfirmTransaction
|
||||||
0x13 => WindowClose
|
0x13 => WindowClose
|
||||||
0x14 => WindowItems
|
0x14 => WindowItems_i16
|
||||||
0x15 => WindowProperty
|
0x15 => WindowProperty
|
||||||
0x16 => WindowSetSlot
|
0x16 => WindowSetSlot
|
||||||
0x17 => SetCooldown
|
0x17 => SetCooldown
|
||||||
|
@ -84,14 +84,14 @@ protocol_packet_ids!(
|
||||||
0x19 => NamedSoundEffect
|
0x19 => NamedSoundEffect
|
||||||
0x1a => Disconnect
|
0x1a => Disconnect
|
||||||
0x1b => EntityAction
|
0x1b => EntityAction
|
||||||
0x1c => Explosion
|
0x1c => Explosion_i32
|
||||||
0x1d => ChunkUnload
|
0x1d => ChunkUnload
|
||||||
0x1e => ChangeGameState
|
0x1e => ChangeGameState
|
||||||
0x1f => WindowOpenHorse
|
0x1f => WindowOpenHorse
|
||||||
0x20 => KeepAliveClientbound_i64
|
0x20 => KeepAliveClientbound_i64
|
||||||
0x21 => ChunkData_HeightMap
|
0x21 => ChunkData_HeightMap
|
||||||
0x22 => Effect
|
0x22 => Effect
|
||||||
0x23 => Particle_Data
|
0x23 => Particle_f32
|
||||||
0x24 => UpdateLight_NoTrust
|
0x24 => UpdateLight_NoTrust
|
||||||
0x25 => JoinGame_i32_ViewDistance
|
0x25 => JoinGame_i32_ViewDistance
|
||||||
0x26 => Maps
|
0x26 => Maps
|
||||||
|
@ -133,7 +133,7 @@ protocol_packet_ids!(
|
||||||
0x4a => SetPassengers
|
0x4a => SetPassengers
|
||||||
0x4b => Teams_VarInt
|
0x4b => Teams_VarInt
|
||||||
0x4c => UpdateScore
|
0x4c => UpdateScore
|
||||||
0x4d => SpawnPosition
|
0x4d => SpawnPosition_NoAngle
|
||||||
0x4e => TimeUpdate
|
0x4e => TimeUpdate
|
||||||
0x4f => Title
|
0x4f => Title
|
||||||
0x50 => EntitySoundEffect
|
0x50 => EntitySoundEffect
|
||||||
|
@ -144,10 +144,10 @@ protocol_packet_ids!(
|
||||||
0x55 => CollectItem
|
0x55 => CollectItem
|
||||||
0x56 => EntityTeleport_f64
|
0x56 => EntityTeleport_f64
|
||||||
0x57 => Advancements
|
0x57 => Advancements
|
||||||
0x58 => EntityProperties
|
0x58 => EntityProperties_VarInt
|
||||||
0x59 => EntityEffect
|
0x59 => EntityEffect
|
||||||
0x5a => DeclareRecipes
|
0x5a => DeclareRecipes
|
||||||
0x5b => TagsWithEntities
|
0x5b => Tags_WithEntities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
login Login {
|
login Login {
|
||||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
||||||
0x09 => ClickWindow
|
0x09 => ClickWindow
|
||||||
0x0a => CloseWindow
|
0x0a => CloseWindow
|
||||||
0x0b => PluginMessageServerbound
|
0x0b => PluginMessageServerbound
|
||||||
0x0c => EditBook
|
0x0c => EditBook_Item
|
||||||
0x0d => QueryEntityNBT
|
0x0d => QueryEntityNBT
|
||||||
0x0e => UseEntity_Hand
|
0x0e => UseEntity_Hand
|
||||||
0x0f => KeepAliveServerbound_i64
|
0x0f => KeepAliveServerbound_i64
|
||||||
|
@ -76,7 +76,7 @@ protocol_packet_ids!(
|
||||||
0x11 => DeclareCommands
|
0x11 => DeclareCommands
|
||||||
0x12 => ConfirmTransaction
|
0x12 => ConfirmTransaction
|
||||||
0x13 => WindowClose
|
0x13 => WindowClose
|
||||||
0x14 => WindowItems
|
0x14 => WindowItems_i16
|
||||||
0x15 => WindowProperty
|
0x15 => WindowProperty
|
||||||
0x16 => WindowSetSlot
|
0x16 => WindowSetSlot
|
||||||
0x17 => SetCooldown
|
0x17 => SetCooldown
|
||||||
|
@ -84,14 +84,14 @@ protocol_packet_ids!(
|
||||||
0x19 => NamedSoundEffect
|
0x19 => NamedSoundEffect
|
||||||
0x1a => Disconnect
|
0x1a => Disconnect
|
||||||
0x1b => EntityAction
|
0x1b => EntityAction
|
||||||
0x1c => Explosion
|
0x1c => Explosion_i32
|
||||||
0x1d => ChunkUnload
|
0x1d => ChunkUnload
|
||||||
0x1e => ChangeGameState
|
0x1e => ChangeGameState
|
||||||
0x1f => WindowOpenHorse
|
0x1f => WindowOpenHorse
|
||||||
0x20 => KeepAliveClientbound_i64
|
0x20 => KeepAliveClientbound_i64
|
||||||
0x21 => ChunkData_HeightMap
|
0x21 => ChunkData_HeightMap
|
||||||
0x22 => Effect
|
0x22 => Effect
|
||||||
0x23 => Particle_Data
|
0x23 => Particle_f32
|
||||||
0x24 => UpdateLight_NoTrust
|
0x24 => UpdateLight_NoTrust
|
||||||
0x25 => JoinGame_i32_ViewDistance
|
0x25 => JoinGame_i32_ViewDistance
|
||||||
0x26 => Maps
|
0x26 => Maps
|
||||||
|
@ -133,7 +133,7 @@ protocol_packet_ids!(
|
||||||
0x4a => SetPassengers
|
0x4a => SetPassengers
|
||||||
0x4b => Teams_VarInt
|
0x4b => Teams_VarInt
|
||||||
0x4c => UpdateScore
|
0x4c => UpdateScore
|
||||||
0x4d => SpawnPosition
|
0x4d => SpawnPosition_NoAngle
|
||||||
0x4e => TimeUpdate
|
0x4e => TimeUpdate
|
||||||
0x4f => Title
|
0x4f => Title
|
||||||
0x50 => EntitySoundEffect
|
0x50 => EntitySoundEffect
|
||||||
|
@ -144,10 +144,10 @@ protocol_packet_ids!(
|
||||||
0x55 => CollectItem
|
0x55 => CollectItem
|
||||||
0x56 => EntityTeleport_f64
|
0x56 => EntityTeleport_f64
|
||||||
0x57 => Advancements
|
0x57 => Advancements
|
||||||
0x58 => EntityProperties
|
0x58 => EntityProperties_VarInt
|
||||||
0x59 => EntityEffect
|
0x59 => EntityEffect
|
||||||
0x5a => DeclareRecipes
|
0x5a => DeclareRecipes
|
||||||
0x5b => TagsWithEntities
|
0x5b => Tags_WithEntities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
login Login {
|
login Login {
|
||||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
||||||
0x09 => ClickWindow
|
0x09 => ClickWindow
|
||||||
0x0a => CloseWindow
|
0x0a => CloseWindow
|
||||||
0x0b => PluginMessageServerbound
|
0x0b => PluginMessageServerbound
|
||||||
0x0c => EditBook
|
0x0c => EditBook_Item
|
||||||
0x0d => QueryEntityNBT
|
0x0d => QueryEntityNBT
|
||||||
0x0e => UseEntity_Hand
|
0x0e => UseEntity_Hand
|
||||||
0x0f => KeepAliveServerbound_i64
|
0x0f => KeepAliveServerbound_i64
|
||||||
|
@ -76,7 +76,7 @@ protocol_packet_ids!(
|
||||||
0x11 => DeclareCommands
|
0x11 => DeclareCommands
|
||||||
0x12 => ConfirmTransaction
|
0x12 => ConfirmTransaction
|
||||||
0x13 => WindowClose
|
0x13 => WindowClose
|
||||||
0x14 => WindowItems
|
0x14 => WindowItems_i16
|
||||||
0x15 => WindowProperty
|
0x15 => WindowProperty
|
||||||
0x16 => WindowSetSlot
|
0x16 => WindowSetSlot
|
||||||
0x17 => SetCooldown
|
0x17 => SetCooldown
|
||||||
|
@ -84,14 +84,14 @@ protocol_packet_ids!(
|
||||||
0x19 => NamedSoundEffect
|
0x19 => NamedSoundEffect
|
||||||
0x1a => Disconnect
|
0x1a => Disconnect
|
||||||
0x1b => EntityAction
|
0x1b => EntityAction
|
||||||
0x1c => Explosion
|
0x1c => Explosion_i32
|
||||||
0x1d => ChunkUnload
|
0x1d => ChunkUnload
|
||||||
0x1e => ChangeGameState
|
0x1e => ChangeGameState
|
||||||
0x1f => WindowOpenHorse
|
0x1f => WindowOpenHorse
|
||||||
0x20 => KeepAliveClientbound_i64
|
0x20 => KeepAliveClientbound_i64
|
||||||
0x21 => ChunkData_HeightMap
|
0x21 => ChunkData_HeightMap
|
||||||
0x22 => Effect
|
0x22 => Effect
|
||||||
0x23 => Particle_Data
|
0x23 => Particle_f32
|
||||||
0x24 => UpdateLight_NoTrust
|
0x24 => UpdateLight_NoTrust
|
||||||
0x25 => JoinGame_i32_ViewDistance
|
0x25 => JoinGame_i32_ViewDistance
|
||||||
0x26 => Maps
|
0x26 => Maps
|
||||||
|
@ -133,7 +133,7 @@ protocol_packet_ids!(
|
||||||
0x4a => SetPassengers
|
0x4a => SetPassengers
|
||||||
0x4b => Teams_VarInt
|
0x4b => Teams_VarInt
|
||||||
0x4c => UpdateScore
|
0x4c => UpdateScore
|
||||||
0x4d => SpawnPosition
|
0x4d => SpawnPosition_NoAngle
|
||||||
0x4e => TimeUpdate
|
0x4e => TimeUpdate
|
||||||
0x4f => Title
|
0x4f => Title
|
||||||
0x50 => EntitySoundEffect
|
0x50 => EntitySoundEffect
|
||||||
|
@ -144,10 +144,10 @@ protocol_packet_ids!(
|
||||||
0x55 => CollectItem
|
0x55 => CollectItem
|
||||||
0x56 => EntityTeleport_f64
|
0x56 => EntityTeleport_f64
|
||||||
0x57 => Advancements
|
0x57 => Advancements
|
||||||
0x58 => EntityProperties
|
0x58 => EntityProperties_VarInt
|
||||||
0x59 => EntityEffect
|
0x59 => EntityEffect
|
||||||
0x5a => DeclareRecipes
|
0x5a => DeclareRecipes
|
||||||
0x5b => TagsWithEntities
|
0x5b => Tags_WithEntities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
login Login {
|
login Login {
|
||||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
||||||
0x09 => ClickWindow
|
0x09 => ClickWindow
|
||||||
0x0a => CloseWindow
|
0x0a => CloseWindow
|
||||||
0x0b => PluginMessageServerbound
|
0x0b => PluginMessageServerbound
|
||||||
0x0c => EditBook
|
0x0c => EditBook_Item
|
||||||
0x0d => QueryEntityNBT
|
0x0d => QueryEntityNBT
|
||||||
0x0e => UseEntity_Hand
|
0x0e => UseEntity_Hand
|
||||||
0x0f => KeepAliveServerbound_i64
|
0x0f => KeepAliveServerbound_i64
|
||||||
|
@ -76,7 +76,7 @@ protocol_packet_ids!(
|
||||||
0x11 => DeclareCommands
|
0x11 => DeclareCommands
|
||||||
0x12 => ConfirmTransaction
|
0x12 => ConfirmTransaction
|
||||||
0x13 => WindowClose
|
0x13 => WindowClose
|
||||||
0x14 => WindowItems
|
0x14 => WindowItems_i16
|
||||||
0x15 => WindowProperty
|
0x15 => WindowProperty
|
||||||
0x16 => WindowSetSlot
|
0x16 => WindowSetSlot
|
||||||
0x17 => SetCooldown
|
0x17 => SetCooldown
|
||||||
|
@ -84,14 +84,14 @@ protocol_packet_ids!(
|
||||||
0x19 => NamedSoundEffect
|
0x19 => NamedSoundEffect
|
||||||
0x1a => Disconnect
|
0x1a => Disconnect
|
||||||
0x1b => EntityAction
|
0x1b => EntityAction
|
||||||
0x1c => Explosion
|
0x1c => Explosion_i32
|
||||||
0x1d => ChunkUnload
|
0x1d => ChunkUnload
|
||||||
0x1e => ChangeGameState
|
0x1e => ChangeGameState
|
||||||
0x1f => WindowOpenHorse
|
0x1f => WindowOpenHorse
|
||||||
0x20 => KeepAliveClientbound_i64
|
0x20 => KeepAliveClientbound_i64
|
||||||
0x21 => ChunkData_HeightMap
|
0x21 => ChunkData_HeightMap
|
||||||
0x22 => Effect
|
0x22 => Effect
|
||||||
0x23 => Particle_Data
|
0x23 => Particle_f32
|
||||||
0x24 => UpdateLight_NoTrust
|
0x24 => UpdateLight_NoTrust
|
||||||
0x25 => JoinGame_i32_ViewDistance
|
0x25 => JoinGame_i32_ViewDistance
|
||||||
0x26 => Maps
|
0x26 => Maps
|
||||||
|
@ -133,7 +133,7 @@ protocol_packet_ids!(
|
||||||
0x4a => SetPassengers
|
0x4a => SetPassengers
|
||||||
0x4b => Teams_VarInt
|
0x4b => Teams_VarInt
|
||||||
0x4c => UpdateScore
|
0x4c => UpdateScore
|
||||||
0x4d => SpawnPosition
|
0x4d => SpawnPosition_NoAngle
|
||||||
0x4e => TimeUpdate
|
0x4e => TimeUpdate
|
||||||
0x4f => Title
|
0x4f => Title
|
||||||
0x50 => EntitySoundEffect
|
0x50 => EntitySoundEffect
|
||||||
|
@ -144,10 +144,10 @@ protocol_packet_ids!(
|
||||||
0x55 => CollectItem
|
0x55 => CollectItem
|
||||||
0x56 => EntityTeleport_f64
|
0x56 => EntityTeleport_f64
|
||||||
0x57 => Advancements
|
0x57 => Advancements
|
||||||
0x58 => EntityProperties
|
0x58 => EntityProperties_VarInt
|
||||||
0x59 => EntityEffect
|
0x59 => EntityEffect
|
||||||
0x5a => DeclareRecipes
|
0x5a => DeclareRecipes
|
||||||
0x5b => TagsWithEntities
|
0x5b => Tags_WithEntities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
login Login {
|
login Login {
|
||||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
||||||
0x09 => ClickWindow
|
0x09 => ClickWindow
|
||||||
0x0a => CloseWindow
|
0x0a => CloseWindow
|
||||||
0x0b => PluginMessageServerbound
|
0x0b => PluginMessageServerbound
|
||||||
0x0c => EditBook
|
0x0c => EditBook_Item
|
||||||
0x0d => QueryEntityNBT
|
0x0d => QueryEntityNBT
|
||||||
0x0e => UseEntity_Hand
|
0x0e => UseEntity_Hand
|
||||||
0x0f => KeepAliveServerbound_i64
|
0x0f => KeepAliveServerbound_i64
|
||||||
|
@ -76,7 +76,7 @@ protocol_packet_ids!(
|
||||||
0x11 => DeclareCommands
|
0x11 => DeclareCommands
|
||||||
0x12 => ConfirmTransaction
|
0x12 => ConfirmTransaction
|
||||||
0x13 => WindowClose
|
0x13 => WindowClose
|
||||||
0x14 => WindowItems
|
0x14 => WindowItems_i16
|
||||||
0x15 => WindowProperty
|
0x15 => WindowProperty
|
||||||
0x16 => WindowSetSlot
|
0x16 => WindowSetSlot
|
||||||
0x17 => SetCooldown
|
0x17 => SetCooldown
|
||||||
|
@ -84,14 +84,14 @@ protocol_packet_ids!(
|
||||||
0x19 => NamedSoundEffect
|
0x19 => NamedSoundEffect
|
||||||
0x1a => Disconnect
|
0x1a => Disconnect
|
||||||
0x1b => EntityAction
|
0x1b => EntityAction
|
||||||
0x1c => Explosion
|
0x1c => Explosion_i32
|
||||||
0x1d => ChunkUnload
|
0x1d => ChunkUnload
|
||||||
0x1e => ChangeGameState
|
0x1e => ChangeGameState
|
||||||
0x1f => WindowOpenHorse
|
0x1f => WindowOpenHorse
|
||||||
0x20 => KeepAliveClientbound_i64
|
0x20 => KeepAliveClientbound_i64
|
||||||
0x21 => ChunkData_HeightMap
|
0x21 => ChunkData_HeightMap
|
||||||
0x22 => Effect
|
0x22 => Effect
|
||||||
0x23 => Particle_Data
|
0x23 => Particle_f32
|
||||||
0x24 => UpdateLight_NoTrust
|
0x24 => UpdateLight_NoTrust
|
||||||
0x25 => JoinGame_i32_ViewDistance
|
0x25 => JoinGame_i32_ViewDistance
|
||||||
0x26 => Maps
|
0x26 => Maps
|
||||||
|
@ -133,7 +133,7 @@ protocol_packet_ids!(
|
||||||
0x4a => SetPassengers
|
0x4a => SetPassengers
|
||||||
0x4b => Teams_VarInt
|
0x4b => Teams_VarInt
|
||||||
0x4c => UpdateScore
|
0x4c => UpdateScore
|
||||||
0x4d => SpawnPosition
|
0x4d => SpawnPosition_NoAngle
|
||||||
0x4e => TimeUpdate
|
0x4e => TimeUpdate
|
||||||
0x4f => Title
|
0x4f => Title
|
||||||
0x50 => EntitySoundEffect
|
0x50 => EntitySoundEffect
|
||||||
|
@ -144,10 +144,10 @@ protocol_packet_ids!(
|
||||||
0x55 => CollectItem
|
0x55 => CollectItem
|
||||||
0x56 => EntityTeleport_f64
|
0x56 => EntityTeleport_f64
|
||||||
0x57 => Advancements
|
0x57 => Advancements
|
||||||
0x58 => EntityProperties
|
0x58 => EntityProperties_VarInt
|
||||||
0x59 => EntityEffect
|
0x59 => EntityEffect
|
||||||
0x5a => DeclareRecipes
|
0x5a => DeclareRecipes
|
||||||
0x5b => TagsWithEntities
|
0x5b => Tags_WithEntities
|
||||||
0x5c => AcknowledgePlayerDigging
|
0x5c => AcknowledgePlayerDigging
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
||||||
0x09 => ClickWindow
|
0x09 => ClickWindow
|
||||||
0x0a => CloseWindow
|
0x0a => CloseWindow
|
||||||
0x0b => PluginMessageServerbound
|
0x0b => PluginMessageServerbound
|
||||||
0x0c => EditBook
|
0x0c => EditBook_Item
|
||||||
0x0d => QueryEntityNBT
|
0x0d => QueryEntityNBT
|
||||||
0x0e => UseEntity_Hand
|
0x0e => UseEntity_Hand
|
||||||
0x0f => KeepAliveServerbound_i64
|
0x0f => KeepAliveServerbound_i64
|
||||||
|
@ -77,7 +77,7 @@ protocol_packet_ids!(
|
||||||
0x12 => DeclareCommands
|
0x12 => DeclareCommands
|
||||||
0x13 => ConfirmTransaction
|
0x13 => ConfirmTransaction
|
||||||
0x14 => WindowClose
|
0x14 => WindowClose
|
||||||
0x15 => WindowItems
|
0x15 => WindowItems_i16
|
||||||
0x16 => WindowProperty
|
0x16 => WindowProperty
|
||||||
0x17 => WindowSetSlot
|
0x17 => WindowSetSlot
|
||||||
0x18 => SetCooldown
|
0x18 => SetCooldown
|
||||||
|
@ -85,7 +85,7 @@ protocol_packet_ids!(
|
||||||
0x1a => NamedSoundEffect
|
0x1a => NamedSoundEffect
|
||||||
0x1b => Disconnect
|
0x1b => Disconnect
|
||||||
0x1c => EntityAction
|
0x1c => EntityAction
|
||||||
0x1d => Explosion
|
0x1d => Explosion_i32
|
||||||
0x1e => ChunkUnload
|
0x1e => ChunkUnload
|
||||||
0x1f => ChangeGameState
|
0x1f => ChangeGameState
|
||||||
0x20 => WindowOpenHorse
|
0x20 => WindowOpenHorse
|
||||||
|
@ -134,7 +134,7 @@ protocol_packet_ids!(
|
||||||
0x4b => SetPassengers
|
0x4b => SetPassengers
|
||||||
0x4c => Teams_VarInt
|
0x4c => Teams_VarInt
|
||||||
0x4d => UpdateScore
|
0x4d => UpdateScore
|
||||||
0x4e => SpawnPosition
|
0x4e => SpawnPosition_NoAngle
|
||||||
0x4f => TimeUpdate
|
0x4f => TimeUpdate
|
||||||
0x50 => Title
|
0x50 => Title
|
||||||
0x51 => EntitySoundEffect
|
0x51 => EntitySoundEffect
|
||||||
|
@ -145,10 +145,10 @@ protocol_packet_ids!(
|
||||||
0x56 => CollectItem
|
0x56 => CollectItem
|
||||||
0x57 => EntityTeleport_f64
|
0x57 => EntityTeleport_f64
|
||||||
0x58 => Advancements
|
0x58 => Advancements
|
||||||
0x59 => EntityProperties
|
0x59 => EntityProperties_VarInt
|
||||||
0x5a => EntityEffect
|
0x5a => EntityEffect
|
||||||
0x5b => DeclareRecipes
|
0x5b => DeclareRecipes
|
||||||
0x5c => TagsWithEntities
|
0x5c => Tags_WithEntities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
login Login {
|
login Login {
|
||||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
||||||
0x09 => ClickWindow
|
0x09 => ClickWindow
|
||||||
0x0a => CloseWindow
|
0x0a => CloseWindow
|
||||||
0x0b => PluginMessageServerbound
|
0x0b => PluginMessageServerbound
|
||||||
0x0c => EditBook
|
0x0c => EditBook_Item
|
||||||
0x0d => QueryEntityNBT
|
0x0d => QueryEntityNBT
|
||||||
0x0e => UseEntity_Sneakflag
|
0x0e => UseEntity_Sneakflag
|
||||||
0x0f => GenerateStructure
|
0x0f => GenerateStructure
|
||||||
|
@ -77,7 +77,7 @@ protocol_packet_ids!(
|
||||||
0x11 => DeclareCommands
|
0x11 => DeclareCommands
|
||||||
0x12 => ConfirmTransaction
|
0x12 => ConfirmTransaction
|
||||||
0x13 => WindowClose
|
0x13 => WindowClose
|
||||||
0x14 => WindowItems
|
0x14 => WindowItems_i16
|
||||||
0x15 => WindowProperty
|
0x15 => WindowProperty
|
||||||
0x16 => WindowSetSlot
|
0x16 => WindowSetSlot
|
||||||
0x17 => SetCooldown
|
0x17 => SetCooldown
|
||||||
|
@ -85,7 +85,7 @@ protocol_packet_ids!(
|
||||||
0x19 => NamedSoundEffect
|
0x19 => NamedSoundEffect
|
||||||
0x1a => Disconnect
|
0x1a => Disconnect
|
||||||
0x1b => EntityAction
|
0x1b => EntityAction
|
||||||
0x1c => Explosion
|
0x1c => Explosion_i32
|
||||||
0x1d => ChunkUnload
|
0x1d => ChunkUnload
|
||||||
0x1e => ChangeGameState
|
0x1e => ChangeGameState
|
||||||
0x1f => WindowOpenHorse
|
0x1f => WindowOpenHorse
|
||||||
|
@ -123,7 +123,7 @@ protocol_packet_ids!(
|
||||||
0x3f => SetCurrentHotbarSlot
|
0x3f => SetCurrentHotbarSlot
|
||||||
0x40 => UpdateViewPosition
|
0x40 => UpdateViewPosition
|
||||||
0x41 => UpdateViewDistance
|
0x41 => UpdateViewDistance
|
||||||
0x42 => SpawnPosition
|
0x42 => SpawnPosition_NoAngle
|
||||||
0x43 => ScoreboardDisplay
|
0x43 => ScoreboardDisplay
|
||||||
0x44 => EntityMetadata
|
0x44 => EntityMetadata
|
||||||
0x45 => EntityAttach
|
0x45 => EntityAttach
|
||||||
|
@ -145,10 +145,10 @@ protocol_packet_ids!(
|
||||||
0x55 => CollectItem
|
0x55 => CollectItem
|
||||||
0x56 => EntityTeleport_f64
|
0x56 => EntityTeleport_f64
|
||||||
0x57 => Advancements
|
0x57 => Advancements
|
||||||
0x58 => EntityProperties
|
0x58 => EntityProperties_VarInt
|
||||||
0x59 => EntityEffect
|
0x59 => EntityEffect
|
||||||
0x5a => DeclareRecipes
|
0x5a => DeclareRecipes
|
||||||
0x5b => TagsWithEntities
|
0x5b => Tags_WithEntities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
login Login {
|
login Login {
|
||||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
||||||
0x09 => ClickWindow
|
0x09 => ClickWindow
|
||||||
0x0a => CloseWindow
|
0x0a => CloseWindow
|
||||||
0x0b => PluginMessageServerbound
|
0x0b => PluginMessageServerbound
|
||||||
0x0c => EditBook
|
0x0c => EditBook_Item
|
||||||
0x0d => QueryEntityNBT
|
0x0d => QueryEntityNBT
|
||||||
0x0e => UseEntity_Sneakflag
|
0x0e => UseEntity_Sneakflag
|
||||||
0x0f => GenerateStructure
|
0x0f => GenerateStructure
|
||||||
|
@ -77,7 +77,7 @@ protocol_packet_ids!(
|
||||||
0x10 => DeclareCommands
|
0x10 => DeclareCommands
|
||||||
0x11 => ConfirmTransaction
|
0x11 => ConfirmTransaction
|
||||||
0x12 => WindowClose
|
0x12 => WindowClose
|
||||||
0x13 => WindowItems
|
0x13 => WindowItems_i16
|
||||||
0x14 => WindowProperty
|
0x14 => WindowProperty
|
||||||
0x15 => WindowSetSlot
|
0x15 => WindowSetSlot
|
||||||
0x16 => SetCooldown
|
0x16 => SetCooldown
|
||||||
|
@ -85,7 +85,7 @@ protocol_packet_ids!(
|
||||||
0x18 => NamedSoundEffect
|
0x18 => NamedSoundEffect
|
||||||
0x19 => Disconnect
|
0x19 => Disconnect
|
||||||
0x1a => EntityAction
|
0x1a => EntityAction
|
||||||
0x1b => Explosion
|
0x1b => Explosion_i32
|
||||||
0x1c => ChunkUnload
|
0x1c => ChunkUnload
|
||||||
0x1d => ChangeGameState
|
0x1d => ChangeGameState
|
||||||
0x1e => WindowOpenHorse
|
0x1e => WindowOpenHorse
|
||||||
|
@ -124,7 +124,7 @@ protocol_packet_ids!(
|
||||||
0x3f => SetCurrentHotbarSlot
|
0x3f => SetCurrentHotbarSlot
|
||||||
0x40 => UpdateViewPosition
|
0x40 => UpdateViewPosition
|
||||||
0x41 => UpdateViewDistance
|
0x41 => UpdateViewDistance
|
||||||
0x42 => SpawnPosition
|
0x42 => SpawnPosition_NoAngle
|
||||||
0x43 => ScoreboardDisplay
|
0x43 => ScoreboardDisplay
|
||||||
0x44 => EntityMetadata
|
0x44 => EntityMetadata
|
||||||
0x45 => EntityAttach
|
0x45 => EntityAttach
|
||||||
|
@ -146,10 +146,10 @@ protocol_packet_ids!(
|
||||||
0x55 => CollectItem
|
0x55 => CollectItem
|
||||||
0x56 => EntityTeleport_f64
|
0x56 => EntityTeleport_f64
|
||||||
0x57 => Advancements
|
0x57 => Advancements
|
||||||
0x58 => EntityProperties
|
0x58 => EntityProperties_VarInt
|
||||||
0x59 => EntityEffect
|
0x59 => EntityEffect
|
||||||
0x5a => DeclareRecipes
|
0x5a => DeclareRecipes
|
||||||
0x5b => TagsWithEntities
|
0x5b => Tags_WithEntities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
login Login {
|
login Login {
|
||||||
|
|
|
@ -0,0 +1,190 @@
|
||||||
|
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_Filtering
|
||||||
|
0x06 => TabComplete
|
||||||
|
0x07 => ClickWindowButton
|
||||||
|
0x08 => ClickWindow_State
|
||||||
|
0x09 => CloseWindow
|
||||||
|
0x0a => PluginMessageServerbound
|
||||||
|
0x0b => EditBook_Pages
|
||||||
|
0x0c => QueryEntityNBT
|
||||||
|
0x0d => UseEntity_Sneakflag
|
||||||
|
0x0e => GenerateStructure
|
||||||
|
0x0f => KeepAliveServerbound_i64
|
||||||
|
0x10 => LockDifficulty
|
||||||
|
0x11 => PlayerPosition
|
||||||
|
0x12 => PlayerPositionLook
|
||||||
|
0x13 => PlayerLook
|
||||||
|
0x14 => Player
|
||||||
|
0x15 => VehicleMove
|
||||||
|
0x16 => SteerBoat
|
||||||
|
0x17 => PickItem
|
||||||
|
0x18 => CraftRecipeRequest
|
||||||
|
0x19 => ClientAbilities_u8
|
||||||
|
0x1a => PlayerDigging
|
||||||
|
0x1b => PlayerAction
|
||||||
|
0x1c => SteerVehicle
|
||||||
|
0x1d => WindowPong
|
||||||
|
0x1e => SetDisplayedRecipe
|
||||||
|
0x1f => SetRecipeBookState
|
||||||
|
0x20 => NameItem
|
||||||
|
0x21 => ResourcePackStatus
|
||||||
|
0x22 => AdvancementTab
|
||||||
|
0x23 => SelectTrade
|
||||||
|
0x24 => SetBeaconEffect
|
||||||
|
0x25 => HeldItemChange
|
||||||
|
0x26 => UpdateCommandBlock
|
||||||
|
0x27 => UpdateCommandBlockMinecart
|
||||||
|
0x28 => CreativeInventoryAction
|
||||||
|
0x29 => UpdateJigsawBlock_Joint
|
||||||
|
0x2a => UpdateStructureBlock
|
||||||
|
0x2b => SetSign
|
||||||
|
0x2c => ArmSwing
|
||||||
|
0x2d => SpectateTeleport
|
||||||
|
0x2e => PlayerBlockPlacement_insideblock
|
||||||
|
0x2f => UseItem
|
||||||
|
}
|
||||||
|
clientbound Clientbound {
|
||||||
|
0x00 => SpawnObject_VarInt
|
||||||
|
0x01 => SpawnExperienceOrb
|
||||||
|
0x02 => SpawnMob_NoMeta
|
||||||
|
0x03 => SpawnPainting_VarInt
|
||||||
|
0x04 => SpawnPlayer_f64_NoMeta
|
||||||
|
0x05 => SculkVibrationSignal
|
||||||
|
0x06 => Animation
|
||||||
|
0x07 => Statistics
|
||||||
|
0x08 => AcknowledgePlayerDigging
|
||||||
|
0x09 => BlockBreakAnimation
|
||||||
|
0x0a => UpdateBlockEntity
|
||||||
|
0x0b => BlockAction
|
||||||
|
0x0c => BlockChange_VarInt
|
||||||
|
0x0d => BossBar
|
||||||
|
0x0e => ServerDifficulty_Locked
|
||||||
|
0x0f => ServerMessage_Sender
|
||||||
|
0x10 => ClearTitles
|
||||||
|
0x11 => TabCompleteReply
|
||||||
|
0x12 => DeclareCommands
|
||||||
|
0x13 => WindowClose
|
||||||
|
0x14 => WindowItems_StateCarry
|
||||||
|
0x15 => WindowProperty
|
||||||
|
0x16 => WindowSetSlot_State
|
||||||
|
0x17 => SetCooldown
|
||||||
|
0x18 => PluginMessageClientbound
|
||||||
|
0x19 => NamedSoundEffect
|
||||||
|
0x1a => Disconnect
|
||||||
|
0x1b => EntityAction
|
||||||
|
0x1c => Explosion_VarInt
|
||||||
|
0x1d => ChunkUnload
|
||||||
|
0x1e => ChangeGameState
|
||||||
|
0x1f => WindowOpenHorse
|
||||||
|
0x20 => WorldBorderInit
|
||||||
|
0x21 => KeepAliveClientbound_i64
|
||||||
|
0x22 => ChunkData_Biomes3D_Bitmasks
|
||||||
|
0x23 => Effect
|
||||||
|
0x24 => Particle_f64
|
||||||
|
0x25 => UpdateLight_Arrays
|
||||||
|
0x26 => JoinGame_WorldNames_IsHard
|
||||||
|
0x27 => Maps
|
||||||
|
0x28 => TradeList_WithRestock
|
||||||
|
0x29 => EntityMove_i16
|
||||||
|
0x2a => EntityLookAndMove_i16
|
||||||
|
0x2b => EntityLook_VarInt
|
||||||
|
0x2c => VehicleTeleport
|
||||||
|
0x2d => OpenBook
|
||||||
|
0x2e => WindowOpen_VarInt
|
||||||
|
0x2f => SignEditorOpen
|
||||||
|
0x30 => WindowPing
|
||||||
|
0x31 => CraftRecipeResponse
|
||||||
|
0x32 => PlayerAbilities
|
||||||
|
0x33 => CombatEventEnd
|
||||||
|
0x34 => CombatEventEnter
|
||||||
|
0x35 => CombatEventDeath
|
||||||
|
0x36 => PlayerInfo
|
||||||
|
0x37 => FacePlayer
|
||||||
|
0x38 => TeleportPlayer_WithDismount
|
||||||
|
0x39 => UnlockRecipes_WithBlastSmoker
|
||||||
|
0x3a => EntityDestroy
|
||||||
|
0x3b => EntityRemoveEffect
|
||||||
|
0x3c => ResourcePackSend_Prompt
|
||||||
|
0x3d => Respawn_NBT
|
||||||
|
0x3e => EntityHeadLook
|
||||||
|
0x3f => MultiBlockChange_Packed
|
||||||
|
0x40 => SelectAdvancementTab
|
||||||
|
0x41 => ActionBar
|
||||||
|
0x42 => WorldBorderCenter
|
||||||
|
0x43 => WorldBorderLerpSize
|
||||||
|
0x44 => WorldBorderSize
|
||||||
|
0x45 => WorldBorderWarningDelay
|
||||||
|
0x46 => WorldBorderWarningReach
|
||||||
|
0x47 => Camera
|
||||||
|
0x48 => SetCurrentHotbarSlot
|
||||||
|
0x49 => UpdateViewPosition
|
||||||
|
0x4a => UpdateViewDistance
|
||||||
|
0x4b => SpawnPosition_Angle
|
||||||
|
0x4c => ScoreboardDisplay
|
||||||
|
0x4d => EntityMetadata
|
||||||
|
0x4e => EntityAttach
|
||||||
|
0x4f => EntityVelocity
|
||||||
|
0x50 => EntityEquipment_Array
|
||||||
|
0x51 => SetExperience
|
||||||
|
0x52 => UpdateHealth
|
||||||
|
0x53 => ScoreboardObjective
|
||||||
|
0x54 => SetPassengers
|
||||||
|
0x55 => Teams_VarInt
|
||||||
|
0x56 => UpdateScore
|
||||||
|
0x57 => TitleSubtitle
|
||||||
|
0x58 => TimeUpdate
|
||||||
|
0x59 => Title
|
||||||
|
0x5a => TitleTimes
|
||||||
|
0x5b => EntitySoundEffect
|
||||||
|
0x5c => SoundEffect
|
||||||
|
0x5d => StopSound
|
||||||
|
0x5e => PlayerListHeaderFooter
|
||||||
|
0x5f => NBTQueryResponse
|
||||||
|
0x60 => CollectItem
|
||||||
|
0x61 => EntityTeleport_f64
|
||||||
|
0x62 => Advancements
|
||||||
|
0x63 => EntityProperties_VarIntVarInt
|
||||||
|
0x64 => EntityEffect
|
||||||
|
0x65 => DeclareRecipes
|
||||||
|
0x66 => Tags_Nested
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
|
@ -73,7 +73,7 @@ protocol_packet_ids!(
|
||||||
0x24 => BlockAction_u16
|
0x24 => BlockAction_u16
|
||||||
0x25 => BlockBreakAnimation_i32
|
0x25 => BlockBreakAnimation_i32
|
||||||
0x26 => ChunkDataBulk_17
|
0x26 => ChunkDataBulk_17
|
||||||
0x27 => Explosion
|
0x27 => Explosion_i32
|
||||||
0x28 => Effect_u8y
|
0x28 => Effect_u8y
|
||||||
0x29 => NamedSoundEffect_u8_NoCategory
|
0x29 => NamedSoundEffect_u8_NoCategory
|
||||||
0x2a => Particle_Named
|
0x2a => Particle_Named
|
||||||
|
@ -82,7 +82,7 @@ protocol_packet_ids!(
|
||||||
0x2d => WindowOpen_u8
|
0x2d => WindowOpen_u8
|
||||||
0x2e => WindowClose
|
0x2e => WindowClose
|
||||||
0x2f => WindowSetSlot
|
0x2f => WindowSetSlot
|
||||||
0x30 => WindowItems
|
0x30 => WindowItems_i16
|
||||||
0x31 => WindowProperty
|
0x31 => WindowProperty
|
||||||
0x32 => ConfirmTransaction
|
0x32 => ConfirmTransaction
|
||||||
0x33 => UpdateSign_u16
|
0x33 => UpdateSign_u16
|
||||||
|
|
|
@ -41,7 +41,7 @@ protocol_packet_ids!(
|
||||||
0x02 => ServerMessage_Position
|
0x02 => ServerMessage_Position
|
||||||
0x03 => TimeUpdate
|
0x03 => TimeUpdate
|
||||||
0x04 => EntityEquipment_u16
|
0x04 => EntityEquipment_u16
|
||||||
0x05 => SpawnPosition
|
0x05 => SpawnPosition_NoAngle
|
||||||
0x06 => UpdateHealth
|
0x06 => UpdateHealth
|
||||||
0x07 => Respawn_Gamemode
|
0x07 => Respawn_Gamemode
|
||||||
0x08 => TeleportPlayer_NoConfirm
|
0x08 => TeleportPlayer_NoConfirm
|
||||||
|
@ -68,14 +68,14 @@ protocol_packet_ids!(
|
||||||
0x1d => EntityEffect
|
0x1d => EntityEffect
|
||||||
0x1e => EntityRemoveEffect
|
0x1e => EntityRemoveEffect
|
||||||
0x1f => SetExperience
|
0x1f => SetExperience
|
||||||
0x20 => EntityProperties
|
0x20 => EntityProperties_VarInt
|
||||||
0x21 => ChunkData_NoEntities_u16
|
0x21 => ChunkData_NoEntities_u16
|
||||||
0x22 => MultiBlockChange_VarInt
|
0x22 => MultiBlockChange_VarInt
|
||||||
0x23 => BlockChange_VarInt
|
0x23 => BlockChange_VarInt
|
||||||
0x24 => BlockAction
|
0x24 => BlockAction
|
||||||
0x25 => BlockBreakAnimation
|
0x25 => BlockBreakAnimation
|
||||||
0x26 => ChunkDataBulk
|
0x26 => ChunkDataBulk
|
||||||
0x27 => Explosion
|
0x27 => Explosion_i32
|
||||||
0x28 => Effect
|
0x28 => Effect
|
||||||
0x29 => NamedSoundEffect_u8_NoCategory
|
0x29 => NamedSoundEffect_u8_NoCategory
|
||||||
0x2a => Particle_VarIntArray
|
0x2a => Particle_VarIntArray
|
||||||
|
@ -84,7 +84,7 @@ protocol_packet_ids!(
|
||||||
0x2d => WindowOpen
|
0x2d => WindowOpen
|
||||||
0x2e => WindowClose
|
0x2e => WindowClose
|
||||||
0x2f => WindowSetSlot
|
0x2f => WindowSetSlot
|
||||||
0x30 => WindowItems
|
0x30 => WindowItems_i16
|
||||||
0x31 => WindowProperty
|
0x31 => WindowProperty
|
||||||
0x32 => ConfirmTransaction
|
0x32 => ConfirmTransaction
|
||||||
0x33 => UpdateSign
|
0x33 => UpdateSign
|
||||||
|
|
|
@ -60,7 +60,7 @@ protocol_packet_ids!(
|
||||||
0x11 => ConfirmTransaction
|
0x11 => ConfirmTransaction
|
||||||
0x12 => WindowClose
|
0x12 => WindowClose
|
||||||
0x13 => WindowOpen
|
0x13 => WindowOpen
|
||||||
0x14 => WindowItems
|
0x14 => WindowItems_i16
|
||||||
0x15 => WindowProperty
|
0x15 => WindowProperty
|
||||||
0x16 => WindowSetSlot
|
0x16 => WindowSetSlot
|
||||||
0x17 => SetCooldown
|
0x17 => SetCooldown
|
||||||
|
@ -68,7 +68,7 @@ protocol_packet_ids!(
|
||||||
0x19 => NamedSoundEffect_u8
|
0x19 => NamedSoundEffect_u8
|
||||||
0x1a => Disconnect
|
0x1a => Disconnect
|
||||||
0x1b => EntityAction
|
0x1b => EntityAction
|
||||||
0x1c => Explosion
|
0x1c => Explosion_i32
|
||||||
0x1d => ChunkUnload
|
0x1d => ChunkUnload
|
||||||
0x1e => ChangeGameState
|
0x1e => ChangeGameState
|
||||||
0x1f => KeepAliveClientbound_VarInt
|
0x1f => KeepAliveClientbound_VarInt
|
||||||
|
@ -107,7 +107,7 @@ protocol_packet_ids!(
|
||||||
0x40 => SetPassengers
|
0x40 => SetPassengers
|
||||||
0x41 => Teams_u8
|
0x41 => Teams_u8
|
||||||
0x42 => UpdateScore
|
0x42 => UpdateScore
|
||||||
0x43 => SpawnPosition
|
0x43 => SpawnPosition_NoAngle
|
||||||
0x44 => TimeUpdate
|
0x44 => TimeUpdate
|
||||||
0x45 => Title_notext
|
0x45 => Title_notext
|
||||||
0x46 => UpdateSign
|
0x46 => UpdateSign
|
||||||
|
@ -115,7 +115,7 @@ protocol_packet_ids!(
|
||||||
0x48 => PlayerListHeaderFooter
|
0x48 => PlayerListHeaderFooter
|
||||||
0x49 => CollectItem_nocount
|
0x49 => CollectItem_nocount
|
||||||
0x4a => EntityTeleport_f64
|
0x4a => EntityTeleport_f64
|
||||||
0x4b => EntityProperties
|
0x4b => EntityProperties_VarInt
|
||||||
0x4c => EntityEffect
|
0x4c => EntityEffect
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ protocol_packet_ids!(
|
||||||
0x11 => ConfirmTransaction
|
0x11 => ConfirmTransaction
|
||||||
0x12 => WindowClose
|
0x12 => WindowClose
|
||||||
0x13 => WindowOpen
|
0x13 => WindowOpen
|
||||||
0x14 => WindowItems
|
0x14 => WindowItems_i16
|
||||||
0x15 => WindowProperty
|
0x15 => WindowProperty
|
||||||
0x16 => WindowSetSlot
|
0x16 => WindowSetSlot
|
||||||
0x17 => SetCooldown
|
0x17 => SetCooldown
|
||||||
|
@ -68,7 +68,7 @@ protocol_packet_ids!(
|
||||||
0x19 => NamedSoundEffect_u8
|
0x19 => NamedSoundEffect_u8
|
||||||
0x1a => Disconnect
|
0x1a => Disconnect
|
||||||
0x1b => EntityAction
|
0x1b => EntityAction
|
||||||
0x1c => Explosion
|
0x1c => Explosion_i32
|
||||||
0x1d => ChunkUnload
|
0x1d => ChunkUnload
|
||||||
0x1e => ChangeGameState
|
0x1e => ChangeGameState
|
||||||
0x1f => KeepAliveClientbound_VarInt
|
0x1f => KeepAliveClientbound_VarInt
|
||||||
|
@ -107,7 +107,7 @@ protocol_packet_ids!(
|
||||||
0x40 => SetPassengers
|
0x40 => SetPassengers
|
||||||
0x41 => Teams_u8
|
0x41 => Teams_u8
|
||||||
0x42 => UpdateScore
|
0x42 => UpdateScore
|
||||||
0x43 => SpawnPosition
|
0x43 => SpawnPosition_NoAngle
|
||||||
0x44 => TimeUpdate
|
0x44 => TimeUpdate
|
||||||
0x45 => Title_notext
|
0x45 => Title_notext
|
||||||
0x46 => UpdateSign
|
0x46 => UpdateSign
|
||||||
|
@ -115,7 +115,7 @@ protocol_packet_ids!(
|
||||||
0x48 => PlayerListHeaderFooter
|
0x48 => PlayerListHeaderFooter
|
||||||
0x49 => CollectItem_nocount
|
0x49 => CollectItem_nocount
|
||||||
0x4a => EntityTeleport_f64
|
0x4a => EntityTeleport_f64
|
||||||
0x4b => EntityProperties
|
0x4b => EntityProperties_VarInt
|
||||||
0x4c => EntityEffect
|
0x4c => EntityEffect
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -688,6 +688,7 @@ pub enum PoseData {
|
||||||
SpinAttack,
|
SpinAttack,
|
||||||
Sneaking,
|
Sneaking,
|
||||||
Dying,
|
Dying,
|
||||||
|
LongJumping,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Serializable for PoseData {
|
impl Serializable for PoseData {
|
||||||
|
@ -701,6 +702,7 @@ impl Serializable for PoseData {
|
||||||
4 => PoseData::SpinAttack,
|
4 => PoseData::SpinAttack,
|
||||||
5 => PoseData::Sneaking,
|
5 => PoseData::Sneaking,
|
||||||
6 => PoseData::Dying,
|
6 => PoseData::Dying,
|
||||||
|
7 => PoseData::LongJumping,
|
||||||
_ => panic!("unknown pose data: {}", n.0),
|
_ => panic!("unknown pose data: {}", n.0),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -595,6 +595,7 @@ impl Server {
|
||||||
KeepAliveClientbound_i64 => on_keep_alive_i64,
|
KeepAliveClientbound_i64 => on_keep_alive_i64,
|
||||||
KeepAliveClientbound_VarInt => on_keep_alive_varint,
|
KeepAliveClientbound_VarInt => on_keep_alive_varint,
|
||||||
KeepAliveClientbound_i32 => on_keep_alive_i32,
|
KeepAliveClientbound_i32 => on_keep_alive_i32,
|
||||||
|
ChunkData_Biomes3D_Bitmasks => on_chunk_data_biomes3d_bitmasks,
|
||||||
ChunkData_Biomes3D_VarInt => on_chunk_data_biomes3d_varint,
|
ChunkData_Biomes3D_VarInt => on_chunk_data_biomes3d_varint,
|
||||||
ChunkData_Biomes3D_bool => on_chunk_data_biomes3d_bool,
|
ChunkData_Biomes3D_bool => on_chunk_data_biomes3d_bool,
|
||||||
ChunkData => on_chunk_data,
|
ChunkData => on_chunk_data,
|
||||||
|
@ -611,6 +612,7 @@ impl Server {
|
||||||
MultiBlockChange_Packed => on_multi_block_change_packed,
|
MultiBlockChange_Packed => on_multi_block_change_packed,
|
||||||
MultiBlockChange_VarInt => on_multi_block_change_varint,
|
MultiBlockChange_VarInt => on_multi_block_change_varint,
|
||||||
MultiBlockChange_u16 => on_multi_block_change_u16,
|
MultiBlockChange_u16 => on_multi_block_change_u16,
|
||||||
|
TeleportPlayer_WithDismount => on_teleport_player_withdismount,
|
||||||
TeleportPlayer_WithConfirm => on_teleport_player_withconfirm,
|
TeleportPlayer_WithConfirm => on_teleport_player_withconfirm,
|
||||||
TeleportPlayer_NoConfirm => on_teleport_player_noconfirm,
|
TeleportPlayer_NoConfirm => on_teleport_player_noconfirm,
|
||||||
TeleportPlayer_OnGround => on_teleport_player_onground,
|
TeleportPlayer_OnGround => on_teleport_player_onground,
|
||||||
|
@ -1552,6 +1554,21 @@ impl Server {
|
||||||
self.entity_map.insert(entity_id, entity);
|
self.entity_map.insert(entity_id, entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn on_teleport_player_withdismount(
|
||||||
|
&mut self,
|
||||||
|
teleport: packet::play::clientbound::TeleportPlayer_WithDismount,
|
||||||
|
) {
|
||||||
|
self.on_teleport_player(
|
||||||
|
teleport.x,
|
||||||
|
teleport.y,
|
||||||
|
teleport.z,
|
||||||
|
teleport.yaw as f64,
|
||||||
|
teleport.pitch as f64,
|
||||||
|
teleport.flags,
|
||||||
|
Some(teleport.teleport_id),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
fn on_teleport_player_withconfirm(
|
fn on_teleport_player_withconfirm(
|
||||||
&mut self,
|
&mut self,
|
||||||
teleport: packet::play::clientbound::TeleportPlayer_WithConfirm,
|
teleport: packet::play::clientbound::TeleportPlayer_WithConfirm,
|
||||||
|
@ -1928,6 +1945,23 @@ impl Server {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn on_chunk_data_biomes3d_bitmasks(
|
||||||
|
&mut self,
|
||||||
|
chunk_data: packet::play::clientbound::ChunkData_Biomes3D_Bitmasks,
|
||||||
|
) {
|
||||||
|
self.world
|
||||||
|
.load_chunk117(
|
||||||
|
chunk_data.chunk_x,
|
||||||
|
chunk_data.chunk_z,
|
||||||
|
true,
|
||||||
|
chunk_data.bitmasks.data[0] as u64, // TODO: get all bitmasks
|
||||||
|
16, // TODO: get all bitmasks
|
||||||
|
chunk_data.data.data,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
self.load_block_entities(chunk_data.block_entities.data);
|
||||||
|
}
|
||||||
|
|
||||||
fn on_chunk_data_biomes3d_varint(
|
fn on_chunk_data_biomes3d_varint(
|
||||||
&mut self,
|
&mut self,
|
||||||
chunk_data: packet::play::clientbound::ChunkData_Biomes3D_VarInt,
|
chunk_data: packet::play::clientbound::ChunkData_Biomes3D_VarInt,
|
||||||
|
|
|
@ -28,6 +28,7 @@ use flate2::read::ZlibDecoder;
|
||||||
use std::cmp::Ordering;
|
use std::cmp::Ordering;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::collections::VecDeque;
|
use std::collections::VecDeque;
|
||||||
|
use std::convert::TryInto;
|
||||||
use std::hash::BuildHasherDefault;
|
use std::hash::BuildHasherDefault;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
|
|
||||||
|
@ -620,8 +621,8 @@ impl World {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn dirty_chunks_by_bitmask(&mut self, x: i32, z: i32, mask: u16) {
|
fn dirty_chunks_by_bitmask(&mut self, x: i32, z: i32, mask: u64, num_sections: usize) {
|
||||||
for i in 0..16 {
|
for i in 0..num_sections {
|
||||||
if mask & (1 << i) == 0 {
|
if mask & (1 << i) == 0 {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -637,6 +638,7 @@ impl World {
|
||||||
{
|
{
|
||||||
self.flag_section_dirty(x + pos.0, i as i32 + pos.1, z + pos.2);
|
self.flag_section_dirty(x + pos.0, i as i32 + pos.1, z + pos.2);
|
||||||
}
|
}
|
||||||
|
let i: i32 = i.try_into().unwrap();
|
||||||
self.update_range(
|
self.update_range(
|
||||||
(x << 4) - 1,
|
(x << 4) - 1,
|
||||||
(i << 4) - 1,
|
(i << 4) - 1,
|
||||||
|
@ -737,7 +739,7 @@ impl World {
|
||||||
chunk.calculate_heightmap();
|
chunk.calculate_heightmap();
|
||||||
}
|
}
|
||||||
|
|
||||||
self.dirty_chunks_by_bitmask(x, z, mask);
|
self.dirty_chunks_by_bitmask(x, z, mask.into(), 16);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -965,7 +967,7 @@ impl World {
|
||||||
chunk.calculate_heightmap();
|
chunk.calculate_heightmap();
|
||||||
}
|
}
|
||||||
|
|
||||||
self.dirty_chunks_by_bitmask(x, z, mask);
|
self.dirty_chunks_by_bitmask(x, z, mask.into(), 16);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -977,7 +979,7 @@ impl World {
|
||||||
mask: u16,
|
mask: u16,
|
||||||
data: Vec<u8>,
|
data: Vec<u8>,
|
||||||
) -> Result<(), protocol::Error> {
|
) -> Result<(), protocol::Error> {
|
||||||
self.load_chunk19_or_115(true, x, z, new, mask, data)
|
self.load_chunk19_to_117(true, x, z, new, mask.into(), 16, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn load_chunk115(
|
pub fn load_chunk115(
|
||||||
|
@ -988,17 +990,30 @@ impl World {
|
||||||
mask: u16,
|
mask: u16,
|
||||||
data: Vec<u8>,
|
data: Vec<u8>,
|
||||||
) -> Result<(), protocol::Error> {
|
) -> Result<(), protocol::Error> {
|
||||||
self.load_chunk19_or_115(false, x, z, new, mask, data)
|
self.load_chunk19_to_117(false, x, z, new, mask.into(), 16, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn load_chunk117(
|
||||||
|
&mut self,
|
||||||
|
x: i32,
|
||||||
|
z: i32,
|
||||||
|
new: bool,
|
||||||
|
mask: u64,
|
||||||
|
num_sections: usize,
|
||||||
|
data: Vec<u8>,
|
||||||
|
) -> Result<(), protocol::Error> {
|
||||||
|
self.load_chunk19_to_117(false, x, z, new, mask, num_sections, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::or_fun_call)]
|
#[allow(clippy::or_fun_call)]
|
||||||
fn load_chunk19_or_115(
|
fn load_chunk19_to_117(
|
||||||
&mut self,
|
&mut self,
|
||||||
read_biomes: bool,
|
read_biomes: bool,
|
||||||
x: i32,
|
x: i32,
|
||||||
z: i32,
|
z: i32,
|
||||||
new: bool,
|
new: bool,
|
||||||
mask: u16,
|
mask: u64,
|
||||||
|
num_sections: usize,
|
||||||
data: Vec<u8>,
|
data: Vec<u8>,
|
||||||
) -> Result<(), protocol::Error> {
|
) -> Result<(), protocol::Error> {
|
||||||
use crate::protocol::{LenPrefixed, Serializable, VarInt};
|
use crate::protocol::{LenPrefixed, Serializable, VarInt};
|
||||||
|
@ -1016,7 +1031,7 @@ impl World {
|
||||||
}
|
}
|
||||||
let chunk = self.chunks.get_mut(&cpos).unwrap();
|
let chunk = self.chunks.get_mut(&cpos).unwrap();
|
||||||
|
|
||||||
for i in 0..16 {
|
for i in 0..num_sections {
|
||||||
if chunk.sections[i].is_none() {
|
if chunk.sections[i].is_none() {
|
||||||
let mut fill_sky = chunk.sections.iter().skip(i).all(|v| v.is_none());
|
let mut fill_sky = chunk.sections.iter().skip(i).all(|v| v.is_none());
|
||||||
fill_sky &= (mask & !((1 << i) | ((1 << i) - 1))) == 0;
|
fill_sky &= (mask & !((1 << i) | ((1 << i) - 1))) == 0;
|
||||||
|
@ -1101,7 +1116,7 @@ impl World {
|
||||||
chunk.calculate_heightmap();
|
chunk.calculate_heightmap();
|
||||||
}
|
}
|
||||||
|
|
||||||
self.dirty_chunks_by_bitmask(x, z, mask);
|
self.dirty_chunks_by_bitmask(x, z, mask, num_sections);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue