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
|
||||
uses: jetli/wasm-pack-action@v0.3.0
|
||||
with:
|
||||
version: 'latest'
|
||||
version: 'v0.10.0'
|
||||
- name: Build binary
|
||||
run: |
|
||||
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? |
|
||||
| ------ | --- | --- |
|
||||
| 1.17.1 | 756 | ✓ |
|
||||
| 1.16.5 | 754 | ✓ |
|
||||
| 1.16.4 | 754 | ✓ |
|
||||
| 1.16.3 | 753 | ✓ |
|
||||
|
|
|
@ -778,9 +778,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.127"
|
||||
version = "1.0.130"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f03b9878abf6d14e6779d3f24f07b2cfa90352cfec4acc5aab8f1ac7f146fae8"
|
||||
checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913"
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
|
|
|
@ -39,9 +39,9 @@ use std::io::{Read, Write};
|
|||
use std::net::TcpStream;
|
||||
use std::sync::atomic::{AtomicBool, AtomicI32, Ordering};
|
||||
|
||||
pub const SUPPORTED_PROTOCOLS: [i32; 24] = [
|
||||
754, 753, 751, 736, 735, 578, 575, 498, 490, 485, 480, 477, 452, 451, 404, 340, 316, 315, 210,
|
||||
109, 107, 74, 47, 5,
|
||||
pub const SUPPORTED_PROTOCOLS: [i32; 25] = [
|
||||
756, 754, 753, 751, 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]);
|
||||
|
|
|
@ -89,6 +89,15 @@ state_packets!(
|
|||
field action_id: u8=,
|
||||
}
|
||||
/// 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 {
|
||||
field locale: String =,
|
||||
field view_distance: u8 =,
|
||||
|
@ -137,6 +146,15 @@ state_packets!(
|
|||
field button: u8 =,
|
||||
}
|
||||
/// 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 {
|
||||
field id: u8 =,
|
||||
field slot: i16 =,
|
||||
|
@ -168,7 +186,12 @@ state_packets!(
|
|||
field channel: String =,
|
||||
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 is_signing: bool =,
|
||||
field hand: VarInt =,
|
||||
|
@ -346,6 +369,9 @@ state_packets!(
|
|||
field jump: bool =,
|
||||
field unmount: bool =,
|
||||
}
|
||||
packet WindowPong {
|
||||
field id: i32 =,
|
||||
}
|
||||
/// CraftingBookData is sent when the player interacts with the crafting book.
|
||||
packet CraftingBookData {
|
||||
field action: VarInt =,
|
||||
|
@ -777,6 +803,13 @@ state_packets!(
|
|||
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.
|
||||
packet Animation {
|
||||
field entity_id: VarInt =,
|
||||
|
@ -890,6 +923,11 @@ state_packets!(
|
|||
packet ServerMessage_NoPosition {
|
||||
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.
|
||||
packet MultiBlockChange_Packed {
|
||||
field chunk_section_pos: u64 =,
|
||||
|
@ -935,6 +973,16 @@ state_packets!(
|
|||
field number_of_slots: VarInt =,
|
||||
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 {
|
||||
field id: u8 =,
|
||||
field ty: u8 =,
|
||||
|
@ -949,7 +997,13 @@ state_packets!(
|
|||
field title: format::Component =,
|
||||
}
|
||||
/// 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 items: LenPrefixed<i16, Option<item::Stack>> =,
|
||||
}
|
||||
|
@ -961,6 +1015,12 @@ state_packets!(
|
|||
field value: i16 =,
|
||||
}
|
||||
/// 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 {
|
||||
field id: u8 =,
|
||||
field property: i16 =,
|
||||
|
@ -1021,7 +1081,17 @@ state_packets!(
|
|||
}
|
||||
/// Explosion is sent when an explosion is triggered (tnt, creeper etc).
|
||||
/// 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 y: f32 =,
|
||||
field z: f32 =,
|
||||
|
@ -1062,6 +1132,15 @@ 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_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 {
|
||||
field chunk_x: i32 =,
|
||||
field chunk_z: i32 =,
|
||||
|
@ -1166,21 +1245,31 @@ state_packets!(
|
|||
field particle_id: i32 =,
|
||||
field long_distance: bool =,
|
||||
field x: f64 =,
|
||||
field y: f64=,
|
||||
field y: f64 =,
|
||||
field z: f64 =,
|
||||
field offset_x: f32 =,
|
||||
field offset_y: f32 =,
|
||||
field offset_z: f32 =,
|
||||
field speed: f32 =,
|
||||
field count: i32 =,
|
||||
field block_state: VarInt = when(|p: &Particle_f64| p.particle_id == 3 || p.particle_id == 23),
|
||||
field red: f32 = when(|p: &Particle_f64| p.particle_id == 14),
|
||||
field green: f32 = when(|p: &Particle_f64| p.particle_id == 14),
|
||||
field blue: f32 = when(|p: &Particle_f64| p.particle_id == 14),
|
||||
field scale: f32 = when(|p: &Particle_f64| p.particle_id == 14),
|
||||
field item: Option<nbt::NamedTag> = when(|p: &Particle_f64| p.particle_id == 32),
|
||||
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 == 15 || p.particle_id == 16),
|
||||
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 == 15 || p.particle_id == 16),
|
||||
field scale: f32 = when(|p: &Particle_f64| p.particle_id == 15 || p.particle_id == 16),
|
||||
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 long_distance: bool =,
|
||||
field x: f32 =,
|
||||
|
@ -1191,30 +1280,22 @@ state_packets!(
|
|||
field offset_z: f32 =,
|
||||
field speed: f32 =,
|
||||
field count: i32 =,
|
||||
field block_state: VarInt = when(|p: &Particle_Data| p.particle_id == 3 || p.particle_id == 23),
|
||||
field red: f32 = when(|p: &Particle_Data| p.particle_id == 14),
|
||||
field green: f32 = when(|p: &Particle_Data| p.particle_id == 14),
|
||||
field blue: f32 = when(|p: &Particle_Data| p.particle_id == 14),
|
||||
field scale: f32 = when(|p: &Particle_Data| p.particle_id == 14),
|
||||
field item: Option<nbt::NamedTag> = when(|p: &Particle_Data| p.particle_id == 32),
|
||||
}
|
||||
packet Particle_Data13 {
|
||||
field particle_id: i32 =,
|
||||
field long_distance: bool =,
|
||||
field x: f32 =,
|
||||
field y: f32 =,
|
||||
field z: f32 =,
|
||||
field offset_x: f32 =,
|
||||
field offset_y: f32 =,
|
||||
field offset_z: f32 =,
|
||||
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),
|
||||
field block_state: VarInt = when(|p: &Particle_f32| p.particle_id == 4 || p.particle_id == 25),
|
||||
field red: f32 = when(|p: &Particle_f32| p.particle_id == 15 || p.particle_id == 16),
|
||||
field green: f32 = when(|p: &Particle_f32| p.particle_id == 15 || p.particle_id == 16),
|
||||
field blue: f32 = when(|p: &Particle_f32| p.particle_id == 15 || p.particle_id == 16),
|
||||
field scale: f32 = when(|p: &Particle_f32| p.particle_id == 15 || p.particle_id == 16),
|
||||
field to_red: f32 = when(|p: &Particle_f32| p.particle_id == 16),
|
||||
field to_green: f32 = when(|p: &Particle_f32| p.particle_id == 16),
|
||||
field to_blue: f32 = when(|p: &Particle_f32| p.particle_id == 16),
|
||||
field item: Option<nbt::NamedTag> = when(|p: &Particle_f32| p.particle_id == 36),
|
||||
field origin_x: f64 = when(|p: &Particle_f32| p.particle_id == 37),
|
||||
field origin_y: f64 = when(|p: &Particle_f32| p.particle_id == 37),
|
||||
field origin_z: f64 = when(|p: &Particle_f32| p.particle_id == 37),
|
||||
field dest_x: f64 = when(|p: &Particle_f32| p.particle_id == 37),
|
||||
field dest_y: f64 = when(|p: &Particle_f32| p.particle_id == 37),
|
||||
field dest_z: f64 = when(|p: &Particle_f32| p.particle_id == 37),
|
||||
field ticks: f64 = when(|p: &Particle_f32| p.particle_id == 37),
|
||||
}
|
||||
packet Particle_VarIntArray {
|
||||
field particle_id: i32 =,
|
||||
|
@ -1519,6 +1600,9 @@ state_packets!(
|
|||
field y: i32 =,
|
||||
field z: i32 =,
|
||||
}
|
||||
packet WindowPing {
|
||||
field id: i32 =,
|
||||
}
|
||||
/// CraftRecipeResponse is a response to CraftRecipeRequest, notifies the UI.
|
||||
packet CraftRecipeResponse {
|
||||
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 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
|
||||
/// to provide skin and username information as well as ping and gamemode info.
|
||||
packet PlayerInfo {
|
||||
|
@ -1562,6 +1658,16 @@ state_packets!(
|
|||
/// 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
|
||||
/// 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 {
|
||||
field x: f64 =,
|
||||
field y: f64 =,
|
||||
|
@ -1646,6 +1752,13 @@ state_packets!(
|
|||
/// ResourcePackSend causes the client to check its cache for the requested
|
||||
/// resource packet and download it if its missing. Once the resource pack
|
||||
/// 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 {
|
||||
field url: String =,
|
||||
field hash: String =,
|
||||
|
@ -1706,6 +1819,9 @@ state_packets!(
|
|||
field has_id: bool =,
|
||||
field tab_id: String = when(|p: &SelectAdvancementTab| p.has_id),
|
||||
}
|
||||
packet ActionBar {
|
||||
field text: String =,
|
||||
}
|
||||
/// WorldBorder configures the world's border.
|
||||
packet WorldBorder {
|
||||
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_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.
|
||||
/// Use the player's id to de-spectate.
|
||||
packet Camera {
|
||||
|
@ -1887,7 +2021,11 @@ state_packets!(
|
|||
}
|
||||
/// SpawnPosition is sent to change the player's current spawn point. Currently
|
||||
/// 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 =,
|
||||
}
|
||||
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_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.
|
||||
packet UpdateSign {
|
||||
field location: Position =,
|
||||
|
@ -2037,7 +2183,11 @@ state_packets!(
|
|||
*/
|
||||
}
|
||||
/// 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 properties: LenPrefixed<i32, packet::EntityProperty> =,
|
||||
}
|
||||
|
@ -2067,18 +2217,32 @@ state_packets!(
|
|||
field item_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 item_tags: LenPrefixed<VarInt, packet::Tags> =,
|
||||
field fluid_tags: LenPrefixed<VarInt, packet::Tags> =,
|
||||
field entity_tags: LenPrefixed<VarInt, packet::Tags> =,
|
||||
}
|
||||
packet Tags_Nested {
|
||||
field tags: LenPrefixed<VarInt, packet::TagsGroup> =,
|
||||
}
|
||||
packet AcknowledgePlayerDigging {
|
||||
field location: Position =,
|
||||
field block: VarInt =,
|
||||
field status: VarInt =,
|
||||
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 {
|
||||
field chunk_x: VarInt =,
|
||||
field chunk_z: VarInt =,
|
||||
|
@ -2086,6 +2250,7 @@ state_packets!(
|
|||
field sky_light_mask: VarInt =,
|
||||
field block_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> =,
|
||||
}
|
||||
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)]
|
||||
pub struct Trade {
|
||||
pub input_item_1: Option<nbt::NamedTag>,
|
||||
|
@ -3299,3 +3483,23 @@ impl Serializable for CommandNode {
|
|||
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_16_1;
|
||||
mod v1_16_4;
|
||||
mod v1_17_1;
|
||||
mod v1_7_10;
|
||||
mod v1_8_9;
|
||||
mod v1_9;
|
||||
|
@ -26,6 +27,7 @@ mod v1_9_2;
|
|||
pub fn protocol_name_to_protocol_version(s: String) -> i32 {
|
||||
match s.as_ref() {
|
||||
"" => SUPPORTED_PROTOCOLS[0],
|
||||
"1.17.1" => 756,
|
||||
"1.16.5" => 754,
|
||||
"1.16.4" => 754,
|
||||
"1.16.3" => 753,
|
||||
|
@ -69,6 +71,7 @@ pub fn translate_internal_packet_id_for_version(
|
|||
to_internal: bool,
|
||||
) -> i32 {
|
||||
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),
|
||||
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),
|
||||
|
|
|
@ -57,14 +57,14 @@ protocol_packet_ids!(
|
|||
0x11 => ConfirmTransaction
|
||||
0x12 => WindowClose
|
||||
0x13 => WindowOpen
|
||||
0x14 => WindowItems
|
||||
0x14 => WindowItems_i16
|
||||
0x15 => WindowProperty
|
||||
0x16 => WindowSetSlot
|
||||
0x17 => SetCooldown
|
||||
0x18 => PluginMessageClientbound
|
||||
0x19 => Disconnect
|
||||
0x1a => EntityAction
|
||||
0x1b => Explosion
|
||||
0x1b => Explosion_i32
|
||||
0x1c => ChunkUnload
|
||||
0x1d => SetCompression
|
||||
0x1e => ChangeGameState
|
||||
|
@ -103,14 +103,14 @@ protocol_packet_ids!(
|
|||
0x3f => ScoreboardObjective
|
||||
0x40 => Teams_u8
|
||||
0x41 => UpdateScore
|
||||
0x42 => SpawnPosition
|
||||
0x42 => SpawnPosition_NoAngle
|
||||
0x43 => TimeUpdate
|
||||
0x44 => Title_notext_component
|
||||
0x45 => UpdateSign
|
||||
0x46 => PlayerListHeaderFooter
|
||||
0x47 => CollectItem_nocount
|
||||
0x48 => EntityTeleport_i32
|
||||
0x49 => EntityProperties
|
||||
0x49 => EntityProperties_VarInt
|
||||
0x4a => EntityEffect
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ protocol_packet_ids!(
|
|||
0x08 => ClickWindow
|
||||
0x09 => CloseWindow
|
||||
0x0a => PluginMessageServerbound
|
||||
0x0b => EditBook
|
||||
0x0b => EditBook_Item
|
||||
0x0c => QueryEntityNBT
|
||||
0x0d => UseEntity_Hand
|
||||
0x0e => KeepAliveServerbound_i64
|
||||
|
@ -74,7 +74,7 @@ protocol_packet_ids!(
|
|||
0x12 => ConfirmTransaction
|
||||
0x13 => WindowClose
|
||||
0x14 => WindowOpen
|
||||
0x15 => WindowItems
|
||||
0x15 => WindowItems_i16
|
||||
0x16 => WindowProperty
|
||||
0x17 => WindowSetSlot
|
||||
0x18 => SetCooldown
|
||||
|
@ -83,13 +83,13 @@ protocol_packet_ids!(
|
|||
0x1b => Disconnect
|
||||
0x1c => EntityAction
|
||||
0x1d => NBTQueryResponse
|
||||
0x1e => Explosion
|
||||
0x1e => Explosion_i32
|
||||
0x1f => ChunkUnload
|
||||
0x20 => ChangeGameState
|
||||
0x21 => KeepAliveClientbound_i64
|
||||
0x22 => ChunkData_HeightMap
|
||||
0x23 => Effect
|
||||
0x24 => Particle_VarIntArray
|
||||
0x24 => Particle_f32
|
||||
0x25 => JoinGame_i32
|
||||
0x26 => Maps_NoLocked
|
||||
0x27 => Entity
|
||||
|
@ -127,7 +127,7 @@ protocol_packet_ids!(
|
|||
0x47 => SetPassengers
|
||||
0x48 => Teams_u8
|
||||
0x49 => UpdateScore
|
||||
0x4a => SpawnPosition
|
||||
0x4a => SpawnPosition_NoAngle
|
||||
0x4b => TimeUpdate
|
||||
0x4d => StopSound
|
||||
0x4e => SoundEffect
|
||||
|
@ -136,10 +136,10 @@ protocol_packet_ids!(
|
|||
0x51 => CollectItem
|
||||
0x52 => EntityTeleport_f64
|
||||
0x53 => Advancements
|
||||
0x54 => EntityProperties
|
||||
0x54 => EntityProperties_VarInt
|
||||
0x55 => EntityEffect
|
||||
0x56 => DeclareRecipes
|
||||
0x57 => TagsWithEntities
|
||||
0x57 => Tags_WithEntities
|
||||
0x58 => UpdateLight_NoTrust
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ protocol_packet_ids!(
|
|||
0x08 => ClickWindow
|
||||
0x09 => CloseWindow
|
||||
0x0a => PluginMessageServerbound
|
||||
0x0b => EditBook
|
||||
0x0b => EditBook_Item
|
||||
0x0c => QueryEntityNBT
|
||||
0x0d => UseEntity_Hand
|
||||
0x0e => KeepAliveServerbound_i64
|
||||
|
@ -74,7 +74,7 @@ protocol_packet_ids!(
|
|||
0x12 => ConfirmTransaction
|
||||
0x13 => WindowClose
|
||||
0x14 => WindowOpenHorse
|
||||
0x15 => WindowItems
|
||||
0x15 => WindowItems_i16
|
||||
0x16 => WindowProperty
|
||||
0x17 => WindowSetSlot
|
||||
0x18 => SetCooldown
|
||||
|
@ -83,13 +83,13 @@ protocol_packet_ids!(
|
|||
0x1b => Disconnect
|
||||
0x1c => EntityAction
|
||||
0x1d => NBTQueryResponse
|
||||
0x1e => Explosion
|
||||
0x1e => Explosion_i32
|
||||
0x1f => ChunkUnload
|
||||
0x20 => ChangeGameState
|
||||
0x21 => KeepAliveClientbound_i64
|
||||
0x22 => ChunkData_HeightMap
|
||||
0x23 => Effect
|
||||
0x24 => Particle_Data13
|
||||
0x24 => Particle_f32
|
||||
0x25 => JoinGame_i32
|
||||
0x26 => Maps
|
||||
0x27 => Entity
|
||||
|
@ -127,7 +127,7 @@ protocol_packet_ids!(
|
|||
0x47 => SetPassengers
|
||||
0x48 => Teams_u8
|
||||
0x49 => UpdateScore
|
||||
0x4a => SpawnPosition
|
||||
0x4a => SpawnPosition_NoAngle
|
||||
0x4b => TimeUpdate
|
||||
0x4d => StopSound
|
||||
0x4e => SoundEffect
|
||||
|
@ -136,10 +136,10 @@ protocol_packet_ids!(
|
|||
0x51 => CollectItem
|
||||
0x52 => EntityTeleport_f64
|
||||
0x53 => Advancements
|
||||
0x54 => EntityProperties
|
||||
0x54 => EntityProperties_VarInt
|
||||
0x55 => EntityEffect
|
||||
0x56 => DeclareRecipes
|
||||
0x57 => TagsWithEntities
|
||||
0x57 => Tags_WithEntities
|
||||
0x58 => UpdateLight_NoTrust
|
||||
0x59 => WindowOpen_VarInt
|
||||
0x5a => TradeList_WithoutRestock // TODO: without 1.14 added fields
|
||||
|
|
|
@ -60,7 +60,7 @@ protocol_packet_ids!(
|
|||
0x11 => ConfirmTransaction
|
||||
0x12 => WindowClose
|
||||
0x13 => WindowOpen
|
||||
0x14 => WindowItems
|
||||
0x14 => WindowItems_i16
|
||||
0x15 => WindowProperty
|
||||
0x16 => WindowSetSlot
|
||||
0x17 => SetCooldown
|
||||
|
@ -68,7 +68,7 @@ protocol_packet_ids!(
|
|||
0x19 => NamedSoundEffect
|
||||
0x1a => Disconnect
|
||||
0x1b => EntityAction
|
||||
0x1c => Explosion
|
||||
0x1c => Explosion_i32
|
||||
0x1d => ChunkUnload
|
||||
0x1e => ChangeGameState
|
||||
0x1f => KeepAliveClientbound_VarInt
|
||||
|
@ -107,14 +107,14 @@ protocol_packet_ids!(
|
|||
0x40 => SetPassengers
|
||||
0x41 => Teams_u8
|
||||
0x42 => UpdateScore
|
||||
0x43 => SpawnPosition
|
||||
0x43 => SpawnPosition_NoAngle
|
||||
0x44 => TimeUpdate
|
||||
0x45 => Title_notext
|
||||
0x46 => SoundEffect
|
||||
0x47 => PlayerListHeaderFooter
|
||||
0x48 => CollectItem_nocount
|
||||
0x49 => EntityTeleport_f64
|
||||
0x4a => EntityProperties
|
||||
0x4a => EntityProperties_VarInt
|
||||
0x4b => EntityEffect
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ protocol_packet_ids!(
|
|||
0x11 => ConfirmTransaction
|
||||
0x12 => WindowClose
|
||||
0x13 => WindowOpen
|
||||
0x14 => WindowItems
|
||||
0x14 => WindowItems_i16
|
||||
0x15 => WindowProperty
|
||||
0x16 => WindowSetSlot
|
||||
0x17 => SetCooldown
|
||||
|
@ -68,7 +68,7 @@ protocol_packet_ids!(
|
|||
0x19 => NamedSoundEffect
|
||||
0x1a => Disconnect
|
||||
0x1b => EntityAction
|
||||
0x1c => Explosion
|
||||
0x1c => Explosion_i32
|
||||
0x1d => ChunkUnload
|
||||
0x1e => ChangeGameState
|
||||
0x1f => KeepAliveClientbound_VarInt
|
||||
|
@ -107,14 +107,14 @@ protocol_packet_ids!(
|
|||
0x40 => SetPassengers
|
||||
0x41 => Teams_u8
|
||||
0x42 => UpdateScore
|
||||
0x43 => SpawnPosition
|
||||
0x43 => SpawnPosition_NoAngle
|
||||
0x44 => TimeUpdate
|
||||
0x45 => Title
|
||||
0x46 => SoundEffect
|
||||
0x47 => PlayerListHeaderFooter
|
||||
0x48 => CollectItem
|
||||
0x49 => EntityTeleport_f64
|
||||
0x4a => EntityProperties
|
||||
0x4a => EntityProperties_VarInt
|
||||
0x4b => EntityEffect
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ protocol_packet_ids!(
|
|||
0x11 => ConfirmTransaction
|
||||
0x12 => WindowClose
|
||||
0x13 => WindowOpen
|
||||
0x14 => WindowItems
|
||||
0x14 => WindowItems_i16
|
||||
0x15 => WindowProperty
|
||||
0x16 => WindowSetSlot
|
||||
0x17 => SetCooldown
|
||||
|
@ -71,7 +71,7 @@ protocol_packet_ids!(
|
|||
0x19 => NamedSoundEffect
|
||||
0x1a => Disconnect
|
||||
0x1b => EntityAction
|
||||
0x1c => Explosion
|
||||
0x1c => Explosion_i32
|
||||
0x1d => ChunkUnload
|
||||
0x1e => ChangeGameState
|
||||
0x1f => KeepAliveClientbound_i64
|
||||
|
@ -113,7 +113,7 @@ protocol_packet_ids!(
|
|||
0x43 => SetPassengers
|
||||
0x44 => Teams_u8
|
||||
0x45 => UpdateScore
|
||||
0x46 => SpawnPosition
|
||||
0x46 => SpawnPosition_NoAngle
|
||||
0x47 => TimeUpdate
|
||||
0x48 => Title
|
||||
0x49 => SoundEffect
|
||||
|
@ -121,7 +121,7 @@ protocol_packet_ids!(
|
|||
0x4b => CollectItem
|
||||
0x4c => EntityTeleport_f64
|
||||
0x4d => Advancements
|
||||
0x4e => EntityProperties
|
||||
0x4e => EntityProperties_VarInt
|
||||
0x4f => EntityEffect
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ protocol_packet_ids!(
|
|||
0x08 => ClickWindow
|
||||
0x09 => CloseWindow
|
||||
0x0a => PluginMessageServerbound
|
||||
0x0b => EditBook
|
||||
0x0b => EditBook_Item
|
||||
0x0c => QueryEntityNBT
|
||||
0x0d => UseEntity_Hand
|
||||
0x0e => KeepAliveServerbound_i64
|
||||
|
@ -74,7 +74,7 @@ protocol_packet_ids!(
|
|||
0x12 => ConfirmTransaction
|
||||
0x13 => WindowClose
|
||||
0x14 => WindowOpen
|
||||
0x15 => WindowItems
|
||||
0x15 => WindowItems_i16
|
||||
0x16 => WindowProperty
|
||||
0x17 => WindowSetSlot
|
||||
0x18 => SetCooldown
|
||||
|
@ -83,13 +83,13 @@ protocol_packet_ids!(
|
|||
0x1b => Disconnect
|
||||
0x1c => EntityAction
|
||||
0x1d => NBTQueryResponse
|
||||
0x1e => Explosion
|
||||
0x1e => Explosion_i32
|
||||
0x1f => ChunkUnload
|
||||
0x20 => ChangeGameState
|
||||
0x21 => KeepAliveClientbound_i64
|
||||
0x22 => ChunkData
|
||||
0x23 => Effect
|
||||
0x24 => Particle_Data13
|
||||
0x24 => Particle_f32
|
||||
0x25 => JoinGame_i32
|
||||
0x26 => Maps_NoLocked
|
||||
0x27 => Entity
|
||||
|
@ -126,7 +126,7 @@ protocol_packet_ids!(
|
|||
0x46 => SetPassengers
|
||||
0x47 => Teams_VarInt
|
||||
0x48 => UpdateScore
|
||||
0x49 => SpawnPosition
|
||||
0x49 => SpawnPosition_NoAngle
|
||||
0x4a => TimeUpdate
|
||||
0x4c => StopSound
|
||||
0x4d => SoundEffect
|
||||
|
@ -134,7 +134,7 @@ protocol_packet_ids!(
|
|||
0x4f => CollectItem
|
||||
0x50 => EntityTeleport_f64
|
||||
0x51 => Advancements
|
||||
0x52 => EntityProperties
|
||||
0x52 => EntityProperties_VarInt
|
||||
0x53 => EntityEffect
|
||||
0x54 => DeclareRecipes
|
||||
0x55 => Tags
|
||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
|||
0x09 => ClickWindow
|
||||
0x0a => CloseWindow
|
||||
0x0b => PluginMessageServerbound
|
||||
0x0c => EditBook
|
||||
0x0c => EditBook_Item
|
||||
0x0d => QueryEntityNBT
|
||||
0x0e => UseEntity_Hand
|
||||
0x0f => KeepAliveServerbound_i64
|
||||
|
@ -76,7 +76,7 @@ protocol_packet_ids!(
|
|||
0x11 => DeclareCommands
|
||||
0x12 => ConfirmTransaction
|
||||
0x13 => WindowClose
|
||||
0x14 => WindowItems
|
||||
0x14 => WindowItems_i16
|
||||
0x15 => WindowProperty
|
||||
0x16 => WindowSetSlot
|
||||
0x17 => SetCooldown
|
||||
|
@ -84,14 +84,14 @@ protocol_packet_ids!(
|
|||
0x19 => NamedSoundEffect
|
||||
0x1a => Disconnect
|
||||
0x1b => EntityAction
|
||||
0x1c => Explosion
|
||||
0x1c => Explosion_i32
|
||||
0x1d => ChunkUnload
|
||||
0x1e => ChangeGameState
|
||||
0x1f => WindowOpenHorse
|
||||
0x20 => KeepAliveClientbound_i64
|
||||
0x21 => ChunkData_HeightMap
|
||||
0x22 => Effect
|
||||
0x23 => Particle_Data
|
||||
0x23 => Particle_f32
|
||||
0x24 => UpdateLight_NoTrust
|
||||
0x25 => JoinGame_i32_ViewDistance
|
||||
0x26 => Maps
|
||||
|
@ -133,7 +133,7 @@ protocol_packet_ids!(
|
|||
0x4a => SetPassengers
|
||||
0x4b => Teams_VarInt
|
||||
0x4c => UpdateScore
|
||||
0x4d => SpawnPosition
|
||||
0x4d => SpawnPosition_NoAngle
|
||||
0x4e => TimeUpdate
|
||||
0x4f => Title
|
||||
0x50 => EntitySoundEffect
|
||||
|
@ -144,10 +144,10 @@ protocol_packet_ids!(
|
|||
0x55 => CollectItem
|
||||
0x56 => EntityTeleport_f64
|
||||
0x57 => Advancements
|
||||
0x58 => EntityProperties
|
||||
0x58 => EntityProperties_VarInt
|
||||
0x59 => EntityEffect
|
||||
0x5a => DeclareRecipes
|
||||
0x5b => TagsWithEntities
|
||||
0x5b => Tags_WithEntities
|
||||
}
|
||||
}
|
||||
login Login {
|
||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
|||
0x09 => ClickWindow
|
||||
0x0a => CloseWindow
|
||||
0x0b => PluginMessageServerbound
|
||||
0x0c => EditBook
|
||||
0x0c => EditBook_Item
|
||||
0x0d => QueryEntityNBT
|
||||
0x0e => UseEntity_Hand
|
||||
0x0f => KeepAliveServerbound_i64
|
||||
|
@ -76,7 +76,7 @@ protocol_packet_ids!(
|
|||
0x11 => DeclareCommands
|
||||
0x12 => ConfirmTransaction
|
||||
0x13 => WindowClose
|
||||
0x14 => WindowItems
|
||||
0x14 => WindowItems_i16
|
||||
0x15 => WindowProperty
|
||||
0x16 => WindowSetSlot
|
||||
0x17 => SetCooldown
|
||||
|
@ -84,14 +84,14 @@ protocol_packet_ids!(
|
|||
0x19 => NamedSoundEffect
|
||||
0x1a => Disconnect
|
||||
0x1b => EntityAction
|
||||
0x1c => Explosion
|
||||
0x1c => Explosion_i32
|
||||
0x1d => ChunkUnload
|
||||
0x1e => ChangeGameState
|
||||
0x1f => WindowOpenHorse
|
||||
0x20 => KeepAliveClientbound_i64
|
||||
0x21 => ChunkData_HeightMap
|
||||
0x22 => Effect
|
||||
0x23 => Particle_Data
|
||||
0x23 => Particle_f32
|
||||
0x24 => UpdateLight_NoTrust
|
||||
0x25 => JoinGame_i32_ViewDistance
|
||||
0x26 => Maps
|
||||
|
@ -133,7 +133,7 @@ protocol_packet_ids!(
|
|||
0x4a => SetPassengers
|
||||
0x4b => Teams_VarInt
|
||||
0x4c => UpdateScore
|
||||
0x4d => SpawnPosition
|
||||
0x4d => SpawnPosition_NoAngle
|
||||
0x4e => TimeUpdate
|
||||
0x4f => Title
|
||||
0x50 => EntitySoundEffect
|
||||
|
@ -144,10 +144,10 @@ protocol_packet_ids!(
|
|||
0x55 => CollectItem
|
||||
0x56 => EntityTeleport_f64
|
||||
0x57 => Advancements
|
||||
0x58 => EntityProperties
|
||||
0x58 => EntityProperties_VarInt
|
||||
0x59 => EntityEffect
|
||||
0x5a => DeclareRecipes
|
||||
0x5b => TagsWithEntities
|
||||
0x5b => Tags_WithEntities
|
||||
}
|
||||
}
|
||||
login Login {
|
||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
|||
0x09 => ClickWindow
|
||||
0x0a => CloseWindow
|
||||
0x0b => PluginMessageServerbound
|
||||
0x0c => EditBook
|
||||
0x0c => EditBook_Item
|
||||
0x0d => QueryEntityNBT
|
||||
0x0e => UseEntity_Hand
|
||||
0x0f => KeepAliveServerbound_i64
|
||||
|
@ -76,7 +76,7 @@ protocol_packet_ids!(
|
|||
0x11 => DeclareCommands
|
||||
0x12 => ConfirmTransaction
|
||||
0x13 => WindowClose
|
||||
0x14 => WindowItems
|
||||
0x14 => WindowItems_i16
|
||||
0x15 => WindowProperty
|
||||
0x16 => WindowSetSlot
|
||||
0x17 => SetCooldown
|
||||
|
@ -84,14 +84,14 @@ protocol_packet_ids!(
|
|||
0x19 => NamedSoundEffect
|
||||
0x1a => Disconnect
|
||||
0x1b => EntityAction
|
||||
0x1c => Explosion
|
||||
0x1c => Explosion_i32
|
||||
0x1d => ChunkUnload
|
||||
0x1e => ChangeGameState
|
||||
0x1f => WindowOpenHorse
|
||||
0x20 => KeepAliveClientbound_i64
|
||||
0x21 => ChunkData_HeightMap
|
||||
0x22 => Effect
|
||||
0x23 => Particle_Data
|
||||
0x23 => Particle_f32
|
||||
0x24 => UpdateLight_NoTrust
|
||||
0x25 => JoinGame_i32_ViewDistance
|
||||
0x26 => Maps
|
||||
|
@ -133,7 +133,7 @@ protocol_packet_ids!(
|
|||
0x4a => SetPassengers
|
||||
0x4b => Teams_VarInt
|
||||
0x4c => UpdateScore
|
||||
0x4d => SpawnPosition
|
||||
0x4d => SpawnPosition_NoAngle
|
||||
0x4e => TimeUpdate
|
||||
0x4f => Title
|
||||
0x50 => EntitySoundEffect
|
||||
|
@ -144,10 +144,10 @@ protocol_packet_ids!(
|
|||
0x55 => CollectItem
|
||||
0x56 => EntityTeleport_f64
|
||||
0x57 => Advancements
|
||||
0x58 => EntityProperties
|
||||
0x58 => EntityProperties_VarInt
|
||||
0x59 => EntityEffect
|
||||
0x5a => DeclareRecipes
|
||||
0x5b => TagsWithEntities
|
||||
0x5b => Tags_WithEntities
|
||||
}
|
||||
}
|
||||
login Login {
|
||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
|||
0x09 => ClickWindow
|
||||
0x0a => CloseWindow
|
||||
0x0b => PluginMessageServerbound
|
||||
0x0c => EditBook
|
||||
0x0c => EditBook_Item
|
||||
0x0d => QueryEntityNBT
|
||||
0x0e => UseEntity_Hand
|
||||
0x0f => KeepAliveServerbound_i64
|
||||
|
@ -76,7 +76,7 @@ protocol_packet_ids!(
|
|||
0x11 => DeclareCommands
|
||||
0x12 => ConfirmTransaction
|
||||
0x13 => WindowClose
|
||||
0x14 => WindowItems
|
||||
0x14 => WindowItems_i16
|
||||
0x15 => WindowProperty
|
||||
0x16 => WindowSetSlot
|
||||
0x17 => SetCooldown
|
||||
|
@ -84,14 +84,14 @@ protocol_packet_ids!(
|
|||
0x19 => NamedSoundEffect
|
||||
0x1a => Disconnect
|
||||
0x1b => EntityAction
|
||||
0x1c => Explosion
|
||||
0x1c => Explosion_i32
|
||||
0x1d => ChunkUnload
|
||||
0x1e => ChangeGameState
|
||||
0x1f => WindowOpenHorse
|
||||
0x20 => KeepAliveClientbound_i64
|
||||
0x21 => ChunkData_HeightMap
|
||||
0x22 => Effect
|
||||
0x23 => Particle_Data
|
||||
0x23 => Particle_f32
|
||||
0x24 => UpdateLight_NoTrust
|
||||
0x25 => JoinGame_i32_ViewDistance
|
||||
0x26 => Maps
|
||||
|
@ -133,7 +133,7 @@ protocol_packet_ids!(
|
|||
0x4a => SetPassengers
|
||||
0x4b => Teams_VarInt
|
||||
0x4c => UpdateScore
|
||||
0x4d => SpawnPosition
|
||||
0x4d => SpawnPosition_NoAngle
|
||||
0x4e => TimeUpdate
|
||||
0x4f => Title
|
||||
0x50 => EntitySoundEffect
|
||||
|
@ -144,10 +144,10 @@ protocol_packet_ids!(
|
|||
0x55 => CollectItem
|
||||
0x56 => EntityTeleport_f64
|
||||
0x57 => Advancements
|
||||
0x58 => EntityProperties
|
||||
0x58 => EntityProperties_VarInt
|
||||
0x59 => EntityEffect
|
||||
0x5a => DeclareRecipes
|
||||
0x5b => TagsWithEntities
|
||||
0x5b => Tags_WithEntities
|
||||
}
|
||||
}
|
||||
login Login {
|
||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
|||
0x09 => ClickWindow
|
||||
0x0a => CloseWindow
|
||||
0x0b => PluginMessageServerbound
|
||||
0x0c => EditBook
|
||||
0x0c => EditBook_Item
|
||||
0x0d => QueryEntityNBT
|
||||
0x0e => UseEntity_Hand
|
||||
0x0f => KeepAliveServerbound_i64
|
||||
|
@ -76,7 +76,7 @@ protocol_packet_ids!(
|
|||
0x11 => DeclareCommands
|
||||
0x12 => ConfirmTransaction
|
||||
0x13 => WindowClose
|
||||
0x14 => WindowItems
|
||||
0x14 => WindowItems_i16
|
||||
0x15 => WindowProperty
|
||||
0x16 => WindowSetSlot
|
||||
0x17 => SetCooldown
|
||||
|
@ -84,14 +84,14 @@ protocol_packet_ids!(
|
|||
0x19 => NamedSoundEffect
|
||||
0x1a => Disconnect
|
||||
0x1b => EntityAction
|
||||
0x1c => Explosion
|
||||
0x1c => Explosion_i32
|
||||
0x1d => ChunkUnload
|
||||
0x1e => ChangeGameState
|
||||
0x1f => WindowOpenHorse
|
||||
0x20 => KeepAliveClientbound_i64
|
||||
0x21 => ChunkData_HeightMap
|
||||
0x22 => Effect
|
||||
0x23 => Particle_Data
|
||||
0x23 => Particle_f32
|
||||
0x24 => UpdateLight_NoTrust
|
||||
0x25 => JoinGame_i32_ViewDistance
|
||||
0x26 => Maps
|
||||
|
@ -133,7 +133,7 @@ protocol_packet_ids!(
|
|||
0x4a => SetPassengers
|
||||
0x4b => Teams_VarInt
|
||||
0x4c => UpdateScore
|
||||
0x4d => SpawnPosition
|
||||
0x4d => SpawnPosition_NoAngle
|
||||
0x4e => TimeUpdate
|
||||
0x4f => Title
|
||||
0x50 => EntitySoundEffect
|
||||
|
@ -144,10 +144,10 @@ protocol_packet_ids!(
|
|||
0x55 => CollectItem
|
||||
0x56 => EntityTeleport_f64
|
||||
0x57 => Advancements
|
||||
0x58 => EntityProperties
|
||||
0x58 => EntityProperties_VarInt
|
||||
0x59 => EntityEffect
|
||||
0x5a => DeclareRecipes
|
||||
0x5b => TagsWithEntities
|
||||
0x5b => Tags_WithEntities
|
||||
0x5c => AcknowledgePlayerDigging
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
|||
0x09 => ClickWindow
|
||||
0x0a => CloseWindow
|
||||
0x0b => PluginMessageServerbound
|
||||
0x0c => EditBook
|
||||
0x0c => EditBook_Item
|
||||
0x0d => QueryEntityNBT
|
||||
0x0e => UseEntity_Hand
|
||||
0x0f => KeepAliveServerbound_i64
|
||||
|
@ -77,7 +77,7 @@ protocol_packet_ids!(
|
|||
0x12 => DeclareCommands
|
||||
0x13 => ConfirmTransaction
|
||||
0x14 => WindowClose
|
||||
0x15 => WindowItems
|
||||
0x15 => WindowItems_i16
|
||||
0x16 => WindowProperty
|
||||
0x17 => WindowSetSlot
|
||||
0x18 => SetCooldown
|
||||
|
@ -85,7 +85,7 @@ protocol_packet_ids!(
|
|||
0x1a => NamedSoundEffect
|
||||
0x1b => Disconnect
|
||||
0x1c => EntityAction
|
||||
0x1d => Explosion
|
||||
0x1d => Explosion_i32
|
||||
0x1e => ChunkUnload
|
||||
0x1f => ChangeGameState
|
||||
0x20 => WindowOpenHorse
|
||||
|
@ -134,7 +134,7 @@ protocol_packet_ids!(
|
|||
0x4b => SetPassengers
|
||||
0x4c => Teams_VarInt
|
||||
0x4d => UpdateScore
|
||||
0x4e => SpawnPosition
|
||||
0x4e => SpawnPosition_NoAngle
|
||||
0x4f => TimeUpdate
|
||||
0x50 => Title
|
||||
0x51 => EntitySoundEffect
|
||||
|
@ -145,10 +145,10 @@ protocol_packet_ids!(
|
|||
0x56 => CollectItem
|
||||
0x57 => EntityTeleport_f64
|
||||
0x58 => Advancements
|
||||
0x59 => EntityProperties
|
||||
0x59 => EntityProperties_VarInt
|
||||
0x5a => EntityEffect
|
||||
0x5b => DeclareRecipes
|
||||
0x5c => TagsWithEntities
|
||||
0x5c => Tags_WithEntities
|
||||
}
|
||||
}
|
||||
login Login {
|
||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
|||
0x09 => ClickWindow
|
||||
0x0a => CloseWindow
|
||||
0x0b => PluginMessageServerbound
|
||||
0x0c => EditBook
|
||||
0x0c => EditBook_Item
|
||||
0x0d => QueryEntityNBT
|
||||
0x0e => UseEntity_Sneakflag
|
||||
0x0f => GenerateStructure
|
||||
|
@ -77,7 +77,7 @@ protocol_packet_ids!(
|
|||
0x11 => DeclareCommands
|
||||
0x12 => ConfirmTransaction
|
||||
0x13 => WindowClose
|
||||
0x14 => WindowItems
|
||||
0x14 => WindowItems_i16
|
||||
0x15 => WindowProperty
|
||||
0x16 => WindowSetSlot
|
||||
0x17 => SetCooldown
|
||||
|
@ -85,7 +85,7 @@ protocol_packet_ids!(
|
|||
0x19 => NamedSoundEffect
|
||||
0x1a => Disconnect
|
||||
0x1b => EntityAction
|
||||
0x1c => Explosion
|
||||
0x1c => Explosion_i32
|
||||
0x1d => ChunkUnload
|
||||
0x1e => ChangeGameState
|
||||
0x1f => WindowOpenHorse
|
||||
|
@ -123,7 +123,7 @@ protocol_packet_ids!(
|
|||
0x3f => SetCurrentHotbarSlot
|
||||
0x40 => UpdateViewPosition
|
||||
0x41 => UpdateViewDistance
|
||||
0x42 => SpawnPosition
|
||||
0x42 => SpawnPosition_NoAngle
|
||||
0x43 => ScoreboardDisplay
|
||||
0x44 => EntityMetadata
|
||||
0x45 => EntityAttach
|
||||
|
@ -145,10 +145,10 @@ protocol_packet_ids!(
|
|||
0x55 => CollectItem
|
||||
0x56 => EntityTeleport_f64
|
||||
0x57 => Advancements
|
||||
0x58 => EntityProperties
|
||||
0x58 => EntityProperties_VarInt
|
||||
0x59 => EntityEffect
|
||||
0x5a => DeclareRecipes
|
||||
0x5b => TagsWithEntities
|
||||
0x5b => Tags_WithEntities
|
||||
}
|
||||
}
|
||||
login Login {
|
||||
|
|
|
@ -20,7 +20,7 @@ protocol_packet_ids!(
|
|||
0x09 => ClickWindow
|
||||
0x0a => CloseWindow
|
||||
0x0b => PluginMessageServerbound
|
||||
0x0c => EditBook
|
||||
0x0c => EditBook_Item
|
||||
0x0d => QueryEntityNBT
|
||||
0x0e => UseEntity_Sneakflag
|
||||
0x0f => GenerateStructure
|
||||
|
@ -77,7 +77,7 @@ protocol_packet_ids!(
|
|||
0x10 => DeclareCommands
|
||||
0x11 => ConfirmTransaction
|
||||
0x12 => WindowClose
|
||||
0x13 => WindowItems
|
||||
0x13 => WindowItems_i16
|
||||
0x14 => WindowProperty
|
||||
0x15 => WindowSetSlot
|
||||
0x16 => SetCooldown
|
||||
|
@ -85,7 +85,7 @@ protocol_packet_ids!(
|
|||
0x18 => NamedSoundEffect
|
||||
0x19 => Disconnect
|
||||
0x1a => EntityAction
|
||||
0x1b => Explosion
|
||||
0x1b => Explosion_i32
|
||||
0x1c => ChunkUnload
|
||||
0x1d => ChangeGameState
|
||||
0x1e => WindowOpenHorse
|
||||
|
@ -124,7 +124,7 @@ protocol_packet_ids!(
|
|||
0x3f => SetCurrentHotbarSlot
|
||||
0x40 => UpdateViewPosition
|
||||
0x41 => UpdateViewDistance
|
||||
0x42 => SpawnPosition
|
||||
0x42 => SpawnPosition_NoAngle
|
||||
0x43 => ScoreboardDisplay
|
||||
0x44 => EntityMetadata
|
||||
0x45 => EntityAttach
|
||||
|
@ -146,10 +146,10 @@ protocol_packet_ids!(
|
|||
0x55 => CollectItem
|
||||
0x56 => EntityTeleport_f64
|
||||
0x57 => Advancements
|
||||
0x58 => EntityProperties
|
||||
0x58 => EntityProperties_VarInt
|
||||
0x59 => EntityEffect
|
||||
0x5a => DeclareRecipes
|
||||
0x5b => TagsWithEntities
|
||||
0x5b => Tags_WithEntities
|
||||
}
|
||||
}
|
||||
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
|
||||
0x25 => BlockBreakAnimation_i32
|
||||
0x26 => ChunkDataBulk_17
|
||||
0x27 => Explosion
|
||||
0x27 => Explosion_i32
|
||||
0x28 => Effect_u8y
|
||||
0x29 => NamedSoundEffect_u8_NoCategory
|
||||
0x2a => Particle_Named
|
||||
|
@ -82,7 +82,7 @@ protocol_packet_ids!(
|
|||
0x2d => WindowOpen_u8
|
||||
0x2e => WindowClose
|
||||
0x2f => WindowSetSlot
|
||||
0x30 => WindowItems
|
||||
0x30 => WindowItems_i16
|
||||
0x31 => WindowProperty
|
||||
0x32 => ConfirmTransaction
|
||||
0x33 => UpdateSign_u16
|
||||
|
|
|
@ -41,7 +41,7 @@ protocol_packet_ids!(
|
|||
0x02 => ServerMessage_Position
|
||||
0x03 => TimeUpdate
|
||||
0x04 => EntityEquipment_u16
|
||||
0x05 => SpawnPosition
|
||||
0x05 => SpawnPosition_NoAngle
|
||||
0x06 => UpdateHealth
|
||||
0x07 => Respawn_Gamemode
|
||||
0x08 => TeleportPlayer_NoConfirm
|
||||
|
@ -68,14 +68,14 @@ protocol_packet_ids!(
|
|||
0x1d => EntityEffect
|
||||
0x1e => EntityRemoveEffect
|
||||
0x1f => SetExperience
|
||||
0x20 => EntityProperties
|
||||
0x20 => EntityProperties_VarInt
|
||||
0x21 => ChunkData_NoEntities_u16
|
||||
0x22 => MultiBlockChange_VarInt
|
||||
0x23 => BlockChange_VarInt
|
||||
0x24 => BlockAction
|
||||
0x25 => BlockBreakAnimation
|
||||
0x26 => ChunkDataBulk
|
||||
0x27 => Explosion
|
||||
0x27 => Explosion_i32
|
||||
0x28 => Effect
|
||||
0x29 => NamedSoundEffect_u8_NoCategory
|
||||
0x2a => Particle_VarIntArray
|
||||
|
@ -84,7 +84,7 @@ protocol_packet_ids!(
|
|||
0x2d => WindowOpen
|
||||
0x2e => WindowClose
|
||||
0x2f => WindowSetSlot
|
||||
0x30 => WindowItems
|
||||
0x30 => WindowItems_i16
|
||||
0x31 => WindowProperty
|
||||
0x32 => ConfirmTransaction
|
||||
0x33 => UpdateSign
|
||||
|
|
|
@ -60,7 +60,7 @@ protocol_packet_ids!(
|
|||
0x11 => ConfirmTransaction
|
||||
0x12 => WindowClose
|
||||
0x13 => WindowOpen
|
||||
0x14 => WindowItems
|
||||
0x14 => WindowItems_i16
|
||||
0x15 => WindowProperty
|
||||
0x16 => WindowSetSlot
|
||||
0x17 => SetCooldown
|
||||
|
@ -68,7 +68,7 @@ protocol_packet_ids!(
|
|||
0x19 => NamedSoundEffect_u8
|
||||
0x1a => Disconnect
|
||||
0x1b => EntityAction
|
||||
0x1c => Explosion
|
||||
0x1c => Explosion_i32
|
||||
0x1d => ChunkUnload
|
||||
0x1e => ChangeGameState
|
||||
0x1f => KeepAliveClientbound_VarInt
|
||||
|
@ -107,7 +107,7 @@ protocol_packet_ids!(
|
|||
0x40 => SetPassengers
|
||||
0x41 => Teams_u8
|
||||
0x42 => UpdateScore
|
||||
0x43 => SpawnPosition
|
||||
0x43 => SpawnPosition_NoAngle
|
||||
0x44 => TimeUpdate
|
||||
0x45 => Title_notext
|
||||
0x46 => UpdateSign
|
||||
|
@ -115,7 +115,7 @@ protocol_packet_ids!(
|
|||
0x48 => PlayerListHeaderFooter
|
||||
0x49 => CollectItem_nocount
|
||||
0x4a => EntityTeleport_f64
|
||||
0x4b => EntityProperties
|
||||
0x4b => EntityProperties_VarInt
|
||||
0x4c => EntityEffect
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ protocol_packet_ids!(
|
|||
0x11 => ConfirmTransaction
|
||||
0x12 => WindowClose
|
||||
0x13 => WindowOpen
|
||||
0x14 => WindowItems
|
||||
0x14 => WindowItems_i16
|
||||
0x15 => WindowProperty
|
||||
0x16 => WindowSetSlot
|
||||
0x17 => SetCooldown
|
||||
|
@ -68,7 +68,7 @@ protocol_packet_ids!(
|
|||
0x19 => NamedSoundEffect_u8
|
||||
0x1a => Disconnect
|
||||
0x1b => EntityAction
|
||||
0x1c => Explosion
|
||||
0x1c => Explosion_i32
|
||||
0x1d => ChunkUnload
|
||||
0x1e => ChangeGameState
|
||||
0x1f => KeepAliveClientbound_VarInt
|
||||
|
@ -107,7 +107,7 @@ protocol_packet_ids!(
|
|||
0x40 => SetPassengers
|
||||
0x41 => Teams_u8
|
||||
0x42 => UpdateScore
|
||||
0x43 => SpawnPosition
|
||||
0x43 => SpawnPosition_NoAngle
|
||||
0x44 => TimeUpdate
|
||||
0x45 => Title_notext
|
||||
0x46 => UpdateSign
|
||||
|
@ -115,7 +115,7 @@ protocol_packet_ids!(
|
|||
0x48 => PlayerListHeaderFooter
|
||||
0x49 => CollectItem_nocount
|
||||
0x4a => EntityTeleport_f64
|
||||
0x4b => EntityProperties
|
||||
0x4b => EntityProperties_VarInt
|
||||
0x4c => EntityEffect
|
||||
}
|
||||
}
|
||||
|
|
|
@ -688,6 +688,7 @@ pub enum PoseData {
|
|||
SpinAttack,
|
||||
Sneaking,
|
||||
Dying,
|
||||
LongJumping,
|
||||
}
|
||||
|
||||
impl Serializable for PoseData {
|
||||
|
@ -701,6 +702,7 @@ impl Serializable for PoseData {
|
|||
4 => PoseData::SpinAttack,
|
||||
5 => PoseData::Sneaking,
|
||||
6 => PoseData::Dying,
|
||||
7 => PoseData::LongJumping,
|
||||
_ => panic!("unknown pose data: {}", n.0),
|
||||
})
|
||||
}
|
||||
|
|
|
@ -595,6 +595,7 @@ impl Server {
|
|||
KeepAliveClientbound_i64 => on_keep_alive_i64,
|
||||
KeepAliveClientbound_VarInt => on_keep_alive_varint,
|
||||
KeepAliveClientbound_i32 => on_keep_alive_i32,
|
||||
ChunkData_Biomes3D_Bitmasks => on_chunk_data_biomes3d_bitmasks,
|
||||
ChunkData_Biomes3D_VarInt => on_chunk_data_biomes3d_varint,
|
||||
ChunkData_Biomes3D_bool => on_chunk_data_biomes3d_bool,
|
||||
ChunkData => on_chunk_data,
|
||||
|
@ -611,6 +612,7 @@ impl Server {
|
|||
MultiBlockChange_Packed => on_multi_block_change_packed,
|
||||
MultiBlockChange_VarInt => on_multi_block_change_varint,
|
||||
MultiBlockChange_u16 => on_multi_block_change_u16,
|
||||
TeleportPlayer_WithDismount => on_teleport_player_withdismount,
|
||||
TeleportPlayer_WithConfirm => on_teleport_player_withconfirm,
|
||||
TeleportPlayer_NoConfirm => on_teleport_player_noconfirm,
|
||||
TeleportPlayer_OnGround => on_teleport_player_onground,
|
||||
|
@ -1552,6 +1554,21 @@ impl Server {
|
|||
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(
|
||||
&mut self,
|
||||
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(
|
||||
&mut self,
|
||||
chunk_data: packet::play::clientbound::ChunkData_Biomes3D_VarInt,
|
||||
|
|
|
@ -28,6 +28,7 @@ use flate2::read::ZlibDecoder;
|
|||
use std::cmp::Ordering;
|
||||
use std::collections::HashMap;
|
||||
use std::collections::VecDeque;
|
||||
use std::convert::TryInto;
|
||||
use std::hash::BuildHasherDefault;
|
||||
use std::io::Read;
|
||||
|
||||
|
@ -620,8 +621,8 @@ impl World {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn dirty_chunks_by_bitmask(&mut self, x: i32, z: i32, mask: u16) {
|
||||
for i in 0..16 {
|
||||
fn dirty_chunks_by_bitmask(&mut self, x: i32, z: i32, mask: u64, num_sections: usize) {
|
||||
for i in 0..num_sections {
|
||||
if mask & (1 << i) == 0 {
|
||||
continue;
|
||||
}
|
||||
|
@ -637,6 +638,7 @@ impl World {
|
|||
{
|
||||
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(
|
||||
(x << 4) - 1,
|
||||
(i << 4) - 1,
|
||||
|
@ -737,7 +739,7 @@ impl World {
|
|||
chunk.calculate_heightmap();
|
||||
}
|
||||
|
||||
self.dirty_chunks_by_bitmask(x, z, mask);
|
||||
self.dirty_chunks_by_bitmask(x, z, mask.into(), 16);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -965,7 +967,7 @@ impl World {
|
|||
chunk.calculate_heightmap();
|
||||
}
|
||||
|
||||
self.dirty_chunks_by_bitmask(x, z, mask);
|
||||
self.dirty_chunks_by_bitmask(x, z, mask.into(), 16);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -977,7 +979,7 @@ impl World {
|
|||
mask: u16,
|
||||
data: Vec<u8>,
|
||||
) -> 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(
|
||||
|
@ -988,17 +990,30 @@ impl World {
|
|||
mask: u16,
|
||||
data: Vec<u8>,
|
||||
) -> 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)]
|
||||
fn load_chunk19_or_115(
|
||||
fn load_chunk19_to_117(
|
||||
&mut self,
|
||||
read_biomes: bool,
|
||||
x: i32,
|
||||
z: i32,
|
||||
new: bool,
|
||||
mask: u16,
|
||||
mask: u64,
|
||||
num_sections: usize,
|
||||
data: Vec<u8>,
|
||||
) -> Result<(), protocol::Error> {
|
||||
use crate::protocol::{LenPrefixed, Serializable, VarInt};
|
||||
|
@ -1016,7 +1031,7 @@ impl World {
|
|||
}
|
||||
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() {
|
||||
let mut fill_sky = chunk.sections.iter().skip(i).all(|v| v.is_none());
|
||||
fill_sky &= (mask & !((1 << i) | ((1 << i) - 1))) == 0;
|
||||
|
@ -1101,7 +1116,7 @@ impl World {
|
|||
chunk.calculate_heightmap();
|
||||
}
|
||||
|
||||
self.dirty_chunks_by_bitmask(x, z, mask);
|
||||
self.dirty_chunks_by_bitmask(x, z, mask, num_sections);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue