1
2
Fork 0
mirror of https://github.com/mat-1/azalea.git synced 2025-08-02 06:16:04 +00:00

start adding ClientboundLevelParticlesPacket

This commit is contained in:
mat 2022-05-14 19:55:33 -05:00
parent 3f77390e26
commit 93730a550a
18 changed files with 95 additions and 58 deletions

View file

@ -157,6 +157,19 @@ pub fn derive_mcbufwritable(input: TokenStream) -> TokenStream {
create_impl_mcbufwritable(&ident, &data).into() create_impl_mcbufwritable(&ident, &data).into()
} }
#[proc_macro_derive(McBuf, attributes(var))]
pub fn derive_mcbuf(input: TokenStream) -> TokenStream {
let DeriveInput { ident, data, .. } = parse_macro_input!(input);
let writable = create_impl_mcbufwritable(&ident, &data);
let readable = create_impl_mcbufreadable(&ident, &data);
quote! {
#writable
#readable
}
.into()
}
fn as_packet_derive(input: TokenStream, state: proc_macro2::TokenStream) -> TokenStream { fn as_packet_derive(input: TokenStream, state: proc_macro2::TokenStream) -> TokenStream {
let DeriveInput { ident, data, .. } = parse_macro_input!(input); let DeriveInput { ident, data, .. } = parse_macro_input!(input);

View file

@ -1,8 +1,9 @@
use crate::mc_buf::read::{McBufReadable, Readable}; use crate::mc_buf::read::{McBufReadable, Readable};
use crate::mc_buf::write::{McBufWritable, Writable}; use crate::mc_buf::write::{McBufWritable, Writable};
use crate::mc_buf::McBufVarReadable;
use azalea_chat::component::Component; use azalea_chat::component::Component;
use azalea_core::{BlockPos, Direction, Slot}; use azalea_core::{BlockPos, Direction, Slot};
use packet_macros::{McBufReadable, McBufWritable}; use packet_macros::McBuf;
use std::io::{Read, Write}; use std::io::{Read, Write};
use std::ops::Deref; use std::ops::Deref;
use uuid::Uuid; use uuid::Uuid;
@ -32,7 +33,7 @@ impl From<&str> for UnsizedByteArray {
} }
/// Represents Java's BitSet, a list of bits. /// Represents Java's BitSet, a list of bits.
#[derive(Debug, Clone, PartialEq, Eq, Hash, McBufReadable, McBufWritable)] #[derive(Debug, Clone, PartialEq, Eq, Hash, McBuf)]
pub struct BitSet { pub struct BitSet {
data: Vec<u64>, data: Vec<u64>,
} }
@ -159,7 +160,7 @@ impl McBufWritable for EntityDataValue {
} }
} }
#[derive(Clone, Debug, Copy, McBufReadable, McBufWritable)] #[derive(Clone, Debug, Copy, McBuf)]
pub enum Pose { pub enum Pose {
Standing = 0, Standing = 0,
FallFlying = 1, FallFlying = 1,
@ -171,7 +172,7 @@ pub enum Pose {
Dying = 7, Dying = 7,
} }
#[derive(Debug, Clone, McBufReadable, McBufWritable)] #[derive(Debug, Clone, McBuf)]
pub struct VillagerData { pub struct VillagerData {
#[var] #[var]
type_: u32, type_: u32,
@ -181,7 +182,7 @@ pub struct VillagerData {
level: u32, level: u32,
} }
#[derive(Debug, Clone, McBufReadable, McBufWritable)] #[derive(Debug, Clone, McBuf)]
pub struct Particle { pub struct Particle {
#[var] #[var]
pub id: i32, pub id: i32,
@ -280,12 +281,12 @@ pub enum ParticleData {
Scrape, Scrape,
} }
#[derive(Debug, Clone, McBufReadable, McBufWritable)] #[derive(Debug, Clone, McBuf)]
pub struct BlockParticle { pub struct BlockParticle {
#[var] #[var]
pub block_state: i32, pub block_state: i32,
} }
#[derive(Debug, Clone, McBufReadable, McBufWritable)] #[derive(Debug, Clone, McBuf)]
pub struct DustParticle { pub struct DustParticle {
/// Red value, 0-1 /// Red value, 0-1
pub red: f32, pub red: f32,
@ -297,7 +298,7 @@ pub struct DustParticle {
pub scale: f32, pub scale: f32,
} }
#[derive(Debug, Clone, McBufReadable, McBufWritable)] #[derive(Debug, Clone, McBuf)]
pub struct DustColorTransitionParticle { pub struct DustColorTransitionParticle {
/// Red value, 0-1 /// Red value, 0-1
pub from_red: f32, pub from_red: f32,
@ -315,12 +316,12 @@ pub struct DustColorTransitionParticle {
pub to_blue: f32, pub to_blue: f32,
} }
#[derive(Debug, Clone, McBufReadable, McBufWritable)] #[derive(Debug, Clone, McBuf)]
pub struct ItemParticle { pub struct ItemParticle {
pub item: Slot, pub item: Slot,
} }
#[derive(Debug, Clone, McBufReadable, McBufWritable)] #[derive(Debug, Clone, McBuf)]
pub struct VibrationParticle { pub struct VibrationParticle {
pub origin: BlockPos, pub origin: BlockPos,
pub position_type: String, pub position_type: String,
@ -331,9 +332,8 @@ pub struct VibrationParticle {
pub ticks: u32, pub ticks: u32,
} }
impl McBufReadable for ParticleData { impl ParticleData {
fn read_into(buf: &mut impl Read) -> Result<Self, String> { pub fn read_from_particle_id(buf: &mut impl Read, id: u32) -> Result<Self, String> {
let id = buf.read_varint()?;
Ok(match id { Ok(match id {
0 => ParticleData::AmbientEntityEffect, 0 => ParticleData::AmbientEntityEffect,
1 => ParticleData::AngryVillager, 1 => ParticleData::AngryVillager,
@ -428,6 +428,13 @@ impl McBufReadable for ParticleData {
} }
} }
impl McBufReadable for ParticleData {
fn read_into(buf: &mut impl Read) -> Result<Self, String> {
let id = u32::var_read_into(buf)?;
ParticleData::read_from_particle_id(buf, id)
}
}
impl McBufWritable for ParticleData { impl McBufWritable for ParticleData {
fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
todo!() todo!()

View file

@ -4,10 +4,8 @@ mod definitions;
mod read; mod read;
mod write; mod write;
pub use definitions::{BitSet, EntityMetadata, UnsizedByteArray}; pub use definitions::{BitSet, EntityMetadata, ParticleData, UnsizedByteArray};
use packet_macros::{McBufReadable, McBufWritable};
pub use read::{read_varint_async, McBufReadable, McBufVarReadable, Readable}; pub use read::{read_varint_async, McBufReadable, McBufVarReadable, Readable};
use std::ops::Deref;
pub use write::{McBufVarWritable, McBufWritable, Writable}; pub use write::{McBufVarWritable, McBufWritable, Writable};
// const DEFAULT_NBT_QUOTA: u32 = 2097152; // const DEFAULT_NBT_QUOTA: u32 = 2097152;

View file

@ -1,4 +1,4 @@
use packet_macros::{GamePacket, McBufReadable, McBufWritable}; use packet_macros::{GamePacket, McBuf};
#[derive(Clone, Debug, GamePacket)] #[derive(Clone, Debug, GamePacket)]
pub struct ClientboundAnimatePacket { pub struct ClientboundAnimatePacket {
@ -9,7 +9,7 @@ pub struct ClientboundAnimatePacket {
// minecraft actually uses a u8 for this, but a varint still works and makes it // minecraft actually uses a u8 for this, but a varint still works and makes it
// so i don't have to add a special handler // so i don't have to add a special handler
#[derive(Clone, Debug, Copy, McBufReadable, McBufWritable)] #[derive(Clone, Debug, Copy, McBuf)]
pub enum AnimationAction { pub enum AnimationAction {
SwingMainHand = 0, SwingMainHand = 0,
Hurt = 1, Hurt = 1,

View file

@ -1,5 +1,5 @@
use azalea_chat::component::Component; use azalea_chat::component::Component;
use packet_macros::{GamePacket, McBufReadable, McBufWritable}; use packet_macros::{GamePacket, McBuf};
use uuid::Uuid; use uuid::Uuid;
#[derive(Clone, Debug, GamePacket)] #[derive(Clone, Debug, GamePacket)]
@ -9,7 +9,7 @@ pub struct ClientboundChatPacket {
pub sender: Uuid, pub sender: Uuid,
} }
#[derive(Clone, Debug, Copy, McBufReadable, McBufWritable)] #[derive(Clone, Debug, Copy, McBuf)]
pub enum ChatType { pub enum ChatType {
Chat = 0, Chat = 0,
System = 1, System = 1,

View file

@ -1,4 +1,4 @@
use packet_macros::{GamePacket, McBufReadable, McBufWritable}; use packet_macros::{GamePacket, McBuf};
#[derive(Clone, Debug, GamePacket)] #[derive(Clone, Debug, GamePacket)]
pub struct ClientboundGameEventPacket { pub struct ClientboundGameEventPacket {
@ -6,7 +6,7 @@ pub struct ClientboundGameEventPacket {
pub param: f32, pub param: f32,
} }
#[derive(Clone, Debug, Copy, McBufReadable, McBufWritable)] #[derive(Clone, Debug, Copy, McBuf)]
pub enum EventType { pub enum EventType {
NoRespawnBlockAvailable = 0, NoRespawnBlockAvailable = 0,
StartRaining = 1, StartRaining = 1,

View file

@ -1,4 +1,4 @@
use packet_macros::{GamePacket, McBufReadable, McBufWritable}; use packet_macros::{GamePacket, McBuf};
use super::clientbound_light_update_packet::ClientboundLightUpdatePacketData; use super::clientbound_light_update_packet::ClientboundLightUpdatePacketData;
@ -10,7 +10,7 @@ pub struct ClientboundLevelChunkWithLightPacket {
pub light_data: ClientboundLightUpdatePacketData, pub light_data: ClientboundLightUpdatePacketData,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct ClientboundLevelChunkPacketData { pub struct ClientboundLevelChunkPacketData {
pub heightmaps: azalea_nbt::Tag, pub heightmaps: azalea_nbt::Tag,
// we can't parse the data in azalea-protocol because it dependso on context from other packets // we can't parse the data in azalea-protocol because it dependso on context from other packets
@ -18,7 +18,7 @@ pub struct ClientboundLevelChunkPacketData {
pub block_entities: Vec<BlockEntity>, pub block_entities: Vec<BlockEntity>,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct BlockEntity { pub struct BlockEntity {
pub packed_xz: u8, pub packed_xz: u8,
pub y: u16, pub y: u16,

View file

@ -0,0 +1,17 @@
use crate::mc_buf::ParticleData;
use packet_macros::GamePacket;
#[derive(Clone, Debug, GamePacket)]
pub struct ClientboundLevelParticlesPacket {
pub particle_id: u32,
pub override_limiter: bool,
pub x: f64,
pub y: f64,
pub z: f64,
pub x_dist: f32,
pub y_dist: f32,
pub z_dist: f32,
pub max_speed: f32,
pub count: i32,
pub data: ParticleData,
}

View file

@ -1,5 +1,5 @@
use crate::mc_buf::BitSet; use crate::mc_buf::BitSet;
use packet_macros::{GamePacket, McBufReadable, McBufWritable}; use packet_macros::{GamePacket, McBuf};
#[derive(Clone, Debug, GamePacket)] #[derive(Clone, Debug, GamePacket)]
pub struct ClientboundLightUpdatePacket { pub struct ClientboundLightUpdatePacket {
@ -8,7 +8,7 @@ pub struct ClientboundLightUpdatePacket {
pub light_data: ClientboundLightUpdatePacketData, pub light_data: ClientboundLightUpdatePacketData,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct ClientboundLightUpdatePacketData { pub struct ClientboundLightUpdatePacketData {
trust_edges: bool, trust_edges: bool,
sky_y_mask: BitSet, sky_y_mask: BitSet,

View file

@ -1,6 +1,6 @@
use crate::mc_buf::{McBufReadable, McBufWritable, Readable, Writable}; use crate::mc_buf::{McBufReadable, McBufWritable, Readable, Writable};
use azalea_chat::component::Component; use azalea_chat::component::Component;
use packet_macros::{GamePacket, McBufReadable, McBufWritable}; use packet_macros::{GamePacket, McBuf};
use std::io::{Read, Write}; use std::io::{Read, Write};
use uuid::Uuid; use uuid::Uuid;
@ -18,14 +18,14 @@ pub enum Action {
RemovePlayer(Vec<RemovePlayer>), RemovePlayer(Vec<RemovePlayer>),
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct PlayerProperty { pub struct PlayerProperty {
name: String, name: String,
value: String, value: String,
signature: Option<String>, signature: Option<String>,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct AddPlayer { pub struct AddPlayer {
uuid: Uuid, uuid: Uuid,
name: String, name: String,
@ -37,26 +37,26 @@ pub struct AddPlayer {
display_name: Option<Component>, display_name: Option<Component>,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct UpdateGameMode { pub struct UpdateGameMode {
uuid: Uuid, uuid: Uuid,
#[var] #[var]
gamemode: u32, gamemode: u32,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct UpdateLatency { pub struct UpdateLatency {
uuid: Uuid, uuid: Uuid,
#[var] #[var]
ping: i32, ping: i32,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct UpdateDisplayName { pub struct UpdateDisplayName {
uuid: Uuid, uuid: Uuid,
display_name: Option<Component>, display_name: Option<Component>,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct RemovePlayer { pub struct RemovePlayer {
uuid: Uuid, uuid: Uuid,
} }

View file

@ -1,6 +1,6 @@
use crate::mc_buf::{McBufReadable, McBufWritable, Readable, Writable}; use crate::mc_buf::{McBufReadable, McBufWritable, Readable, Writable};
use azalea_core::resource_location::ResourceLocation; use azalea_core::resource_location::ResourceLocation;
use packet_macros::{GamePacket, McBufReadable, McBufWritable}; use packet_macros::{GamePacket, McBuf};
use std::io::{Read, Write}; use std::io::{Read, Write};
#[derive(Clone, Debug, GamePacket)] #[derive(Clone, Debug, GamePacket)]
@ -11,7 +11,7 @@ pub struct ClientboundRecipePacket {
pub to_highlight: Vec<ResourceLocation>, pub to_highlight: Vec<ResourceLocation>,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct RecipeBookSettings { pub struct RecipeBookSettings {
pub gui_open: bool, pub gui_open: bool,
pub filtering_craftable: bool, pub filtering_craftable: bool,

View file

@ -37,7 +37,7 @@ impl McBufWritable for BlockStateWithPosition {
fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
let data = (self.state as u64) << 12 let data = (self.state as u64) << 12
| ((self.pos.x as u64) << 8 | (self.pos.z as u64) << 4 | (self.pos.y as u64)); | ((self.pos.x as u64) << 8 | (self.pos.z as u64) << 4 | (self.pos.y as u64));
u64::var_write_into(&data, buf); u64::var_write_into(&data, buf)?;
Ok(()) Ok(())
} }
} }

View file

@ -1,4 +1,4 @@
use packet_macros::{GamePacket, McBufReadable, McBufWritable}; use packet_macros::{GamePacket, McBuf};
#[derive(Clone, Debug, GamePacket)] #[derive(Clone, Debug, GamePacket)]
pub struct ClientboundSoundPacket { pub struct ClientboundSoundPacket {
@ -13,7 +13,7 @@ pub struct ClientboundSoundPacket {
pub pitch: f32, pub pitch: f32,
} }
#[derive(Clone, Debug, Copy, McBufReadable, McBufWritable)] #[derive(Clone, Debug, Copy, McBuf)]
pub enum SoundSource { pub enum SoundSource {
Master = 0, Master = 0,
Music = 1, Music = 1,

View file

@ -1,7 +1,7 @@
use crate::packets::{McBufReadable, McBufWritable}; use crate::packets::{McBufReadable, McBufWritable};
use azalea_chat::component::Component; use azalea_chat::component::Component;
use azalea_core::{resource_location::ResourceLocation, Slot}; use azalea_core::{resource_location::ResourceLocation, Slot};
use packet_macros::{GamePacket, McBufReadable, McBufWritable}; use packet_macros::{GamePacket, McBuf};
use std::{ use std::{
collections::HashMap, collections::HashMap,
io::{Read, Write}, io::{Read, Write},
@ -15,7 +15,7 @@ pub struct ClientboundUpdateAdvancementsPacket {
pub progress: HashMap<ResourceLocation, AdvancementProgress>, pub progress: HashMap<ResourceLocation, AdvancementProgress>,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct Advancement { pub struct Advancement {
parent_id: Option<ResourceLocation>, parent_id: Option<ResourceLocation>,
display: Option<DisplayInfo>, display: Option<DisplayInfo>,
@ -25,7 +25,7 @@ pub struct Advancement {
// requirements_strategy: RequirementsStrategy.AND // requirements_strategy: RequirementsStrategy.AND
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct DisplayInfo { pub struct DisplayInfo {
pub title: Component, pub title: Component,
pub description: Component, pub description: Component,
@ -71,7 +71,7 @@ impl McBufWritable for DisplayFlags {
} }
} }
#[derive(Clone, Debug, Copy, McBufReadable, McBufWritable)] #[derive(Clone, Debug, Copy, McBuf)]
pub enum FrameType { pub enum FrameType {
Task = 0, Task = 0,
Challenge = 1, Challenge = 1,
@ -79,12 +79,12 @@ pub enum FrameType {
} }
// nothing is written here // nothing is written here
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct Criterion {} pub struct Criterion {}
pub type AdvancementProgress = HashMap<ResourceLocation, CriterionProgress>; pub type AdvancementProgress = HashMap<ResourceLocation, CriterionProgress>;
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct CriterionProgress { pub struct CriterionProgress {
date: Option<u64>, date: Option<u64>,
} }

View file

@ -1,6 +1,6 @@
use crate::mc_buf::{McBufReadable, McBufWritable, Readable, Writable}; use crate::mc_buf::{McBufReadable, McBufWritable, Readable, Writable};
use azalea_core::resource_location::ResourceLocation; use azalea_core::resource_location::ResourceLocation;
use packet_macros::{GamePacket, McBufReadable, McBufWritable}; use packet_macros::{GamePacket, McBuf};
use std::io::{Read, Write}; use std::io::{Read, Write};
use uuid::Uuid; use uuid::Uuid;
@ -11,14 +11,14 @@ pub struct ClientboundUpdateAttributesPacket {
pub attributes: Vec<AttributeSnapshot>, pub attributes: Vec<AttributeSnapshot>,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct AttributeSnapshot { pub struct AttributeSnapshot {
pub attribute: ResourceLocation, pub attribute: ResourceLocation,
pub base: f64, pub base: f64,
pub modifiers: Vec<Modifier>, pub modifiers: Vec<Modifier>,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct Modifier { pub struct Modifier {
pub uuid: Uuid, pub uuid: Uuid,
pub amount: f64, pub amount: f64,

View file

@ -1,7 +1,7 @@
use std::io::{Read, Write}; use std::io::{Read, Write};
use azalea_core::{resource_location::ResourceLocation, Slot}; use azalea_core::{resource_location::ResourceLocation, Slot};
use packet_macros::{GamePacket, McBufReadable, McBufWritable}; use packet_macros::{GamePacket, McBuf};
use crate::mc_buf::{McBufReadable, McBufWritable, Readable, Writable}; use crate::mc_buf::{McBufReadable, McBufWritable, Readable, Writable};
@ -16,7 +16,7 @@ pub struct Recipe {
pub data: RecipeData, pub data: RecipeData,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct ShapelessRecipe { pub struct ShapelessRecipe {
/// Used to group similar recipes together in the recipe book. /// Used to group similar recipes together in the recipe book.
/// Tag is present in recipe JSON /// Tag is present in recipe JSON
@ -68,7 +68,7 @@ impl McBufReadable for ShapedRecipe {
} }
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct CookingRecipe { pub struct CookingRecipe {
group: String, group: String,
ingredient: Ingredient, ingredient: Ingredient,
@ -77,13 +77,13 @@ pub struct CookingRecipe {
#[var] #[var]
cooking_time: u32, cooking_time: u32,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct StoneCuttingRecipe { pub struct StoneCuttingRecipe {
group: String, group: String,
ingredient: Ingredient, ingredient: Ingredient,
result: Slot, result: Slot,
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct SmithingRecipe { pub struct SmithingRecipe {
base: Ingredient, base: Ingredient,
addition: Ingredient, addition: Ingredient,
@ -116,7 +116,7 @@ pub enum RecipeData {
Smithing(SmithingRecipe), Smithing(SmithingRecipe),
} }
#[derive(Clone, Debug, McBufReadable, McBufWritable)] #[derive(Clone, Debug, McBuf)]
pub struct Ingredient { pub struct Ingredient {
pub allowed: Vec<Slot>, pub allowed: Vec<Slot>,
} }

View file

@ -16,6 +16,7 @@ pub mod clientbound_initialize_border_packet;
pub mod clientbound_keep_alive_packet; pub mod clientbound_keep_alive_packet;
pub mod clientbound_level_chunk_with_light_packet; pub mod clientbound_level_chunk_with_light_packet;
pub mod clientbound_level_event_packet; pub mod clientbound_level_event_packet;
pub mod clientbound_level_particles_packet;
pub mod clientbound_light_update_packet; pub mod clientbound_light_update_packet;
pub mod clientbound_login_packet; pub mod clientbound_login_packet;
pub mod clientbound_move_entity_pos_packet; pub mod clientbound_move_entity_pos_packet;
@ -58,10 +59,10 @@ declare_state_packets!(
0x00: clientbound_add_entity_packet::ClientboundAddEntityPacket, 0x00: clientbound_add_entity_packet::ClientboundAddEntityPacket,
0x02: clientbound_add_mob_packet::ClientboundAddMobPacket, 0x02: clientbound_add_mob_packet::ClientboundAddMobPacket,
0x04: clientbound_add_player_packet::ClientboundAddPlayerPacket, 0x04: clientbound_add_player_packet::ClientboundAddPlayerPacket,
0x6: clientbound_animate_packet::ClientboundAnimatePacket, 0x06: clientbound_animate_packet::ClientboundAnimatePacket,
0xc: clientbound_block_update_packet::ClientboundBlockUpdatePacket, 0x0c: clientbound_block_update_packet::ClientboundBlockUpdatePacket,
0x0e: clientbound_change_difficulty_packet::ClientboundChangeDifficultyPacket, 0x0e: clientbound_change_difficulty_packet::ClientboundChangeDifficultyPacket,
0xf: clientbound_chat_packet::ClientboundChatPacket, 0x0f: clientbound_chat_packet::ClientboundChatPacket,
0x12: clientbound_declare_commands_packet::ClientboundDeclareCommandsPacket, 0x12: clientbound_declare_commands_packet::ClientboundDeclareCommandsPacket,
0x14: clientbound_container_set_content_packet::ClientboundContainerSetContentPacket, 0x14: clientbound_container_set_content_packet::ClientboundContainerSetContentPacket,
0x1a: clientbound_disconnect_packet::ClientboundDisconnectPacket, 0x1a: clientbound_disconnect_packet::ClientboundDisconnectPacket,
@ -72,6 +73,7 @@ declare_state_packets!(
0x21: clientbound_keep_alive_packet::ClientboundKeepAlivePacket, 0x21: clientbound_keep_alive_packet::ClientboundKeepAlivePacket,
0x22: clientbound_level_chunk_with_light_packet::ClientboundLevelChunkWithLightPacket, 0x22: clientbound_level_chunk_with_light_packet::ClientboundLevelChunkWithLightPacket,
0x23: clientbound_level_event_packet::ClientboundLevelEventPacket, 0x23: clientbound_level_event_packet::ClientboundLevelEventPacket,
0x24: clientbound_level_particles_packet::ClientboundLevelParticlesPacket,
0x25: clientbound_light_update_packet::ClientboundLightUpdatePacket, 0x25: clientbound_light_update_packet::ClientboundLightUpdatePacket,
0x26: clientbound_login_packet::ClientboundLoginPacket, 0x26: clientbound_login_packet::ClientboundLoginPacket,
0x29: clientbound_move_entity_pos_packet::ClientboundMoveEntityPosPacket, 0x29: clientbound_move_entity_pos_packet::ClientboundMoveEntityPosPacket,

View file

@ -43,7 +43,7 @@ where
fn write(&self, buf: &mut impl Write) -> Result<(), std::io::Error>; fn write(&self, buf: &mut impl Write) -> Result<(), std::io::Error>;
} }
impl McBufReadable for ConnectionProtocol { impl crate::mc_buf::McBufReadable for ConnectionProtocol {
fn read_into(buf: &mut impl Read) -> Result<Self, String> { fn read_into(buf: &mut impl Read) -> Result<Self, String> {
ConnectionProtocol::from_i32(buf.read_varint()?) ConnectionProtocol::from_i32(buf.read_varint()?)
.ok_or_else(|| "Invalid intention".to_string()) .ok_or_else(|| "Invalid intention".to_string())