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:
parent
3f77390e26
commit
93730a550a
18 changed files with 95 additions and 58 deletions
|
@ -157,6 +157,19 @@ pub fn derive_mcbufwritable(input: TokenStream) -> TokenStream {
|
|||
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 {
|
||||
let DeriveInput { ident, data, .. } = parse_macro_input!(input);
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
use crate::mc_buf::read::{McBufReadable, Readable};
|
||||
use crate::mc_buf::write::{McBufWritable, Writable};
|
||||
use crate::mc_buf::McBufVarReadable;
|
||||
use azalea_chat::component::Component;
|
||||
use azalea_core::{BlockPos, Direction, Slot};
|
||||
use packet_macros::{McBufReadable, McBufWritable};
|
||||
use packet_macros::McBuf;
|
||||
use std::io::{Read, Write};
|
||||
use std::ops::Deref;
|
||||
use uuid::Uuid;
|
||||
|
@ -32,7 +33,7 @@ impl From<&str> for UnsizedByteArray {
|
|||
}
|
||||
|
||||
/// 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 {
|
||||
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 {
|
||||
Standing = 0,
|
||||
FallFlying = 1,
|
||||
|
@ -171,7 +172,7 @@ pub enum Pose {
|
|||
Dying = 7,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, McBufReadable, McBufWritable)]
|
||||
#[derive(Debug, Clone, McBuf)]
|
||||
pub struct VillagerData {
|
||||
#[var]
|
||||
type_: u32,
|
||||
|
@ -181,7 +182,7 @@ pub struct VillagerData {
|
|||
level: u32,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, McBufReadable, McBufWritable)]
|
||||
#[derive(Debug, Clone, McBuf)]
|
||||
pub struct Particle {
|
||||
#[var]
|
||||
pub id: i32,
|
||||
|
@ -280,12 +281,12 @@ pub enum ParticleData {
|
|||
Scrape,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, McBufReadable, McBufWritable)]
|
||||
#[derive(Debug, Clone, McBuf)]
|
||||
pub struct BlockParticle {
|
||||
#[var]
|
||||
pub block_state: i32,
|
||||
}
|
||||
#[derive(Debug, Clone, McBufReadable, McBufWritable)]
|
||||
#[derive(Debug, Clone, McBuf)]
|
||||
pub struct DustParticle {
|
||||
/// Red value, 0-1
|
||||
pub red: f32,
|
||||
|
@ -297,7 +298,7 @@ pub struct DustParticle {
|
|||
pub scale: f32,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, McBufReadable, McBufWritable)]
|
||||
#[derive(Debug, Clone, McBuf)]
|
||||
pub struct DustColorTransitionParticle {
|
||||
/// Red value, 0-1
|
||||
pub from_red: f32,
|
||||
|
@ -315,12 +316,12 @@ pub struct DustColorTransitionParticle {
|
|||
pub to_blue: f32,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, McBufReadable, McBufWritable)]
|
||||
#[derive(Debug, Clone, McBuf)]
|
||||
pub struct ItemParticle {
|
||||
pub item: Slot,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, McBufReadable, McBufWritable)]
|
||||
#[derive(Debug, Clone, McBuf)]
|
||||
pub struct VibrationParticle {
|
||||
pub origin: BlockPos,
|
||||
pub position_type: String,
|
||||
|
@ -331,9 +332,8 @@ pub struct VibrationParticle {
|
|||
pub ticks: u32,
|
||||
}
|
||||
|
||||
impl McBufReadable for ParticleData {
|
||||
fn read_into(buf: &mut impl Read) -> Result<Self, String> {
|
||||
let id = buf.read_varint()?;
|
||||
impl ParticleData {
|
||||
pub fn read_from_particle_id(buf: &mut impl Read, id: u32) -> Result<Self, String> {
|
||||
Ok(match id {
|
||||
0 => ParticleData::AmbientEntityEffect,
|
||||
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 {
|
||||
fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
|
||||
todo!()
|
||||
|
|
|
@ -4,10 +4,8 @@ mod definitions;
|
|||
mod read;
|
||||
mod write;
|
||||
|
||||
pub use definitions::{BitSet, EntityMetadata, UnsizedByteArray};
|
||||
use packet_macros::{McBufReadable, McBufWritable};
|
||||
pub use definitions::{BitSet, EntityMetadata, ParticleData, UnsizedByteArray};
|
||||
pub use read::{read_varint_async, McBufReadable, McBufVarReadable, Readable};
|
||||
use std::ops::Deref;
|
||||
pub use write::{McBufVarWritable, McBufWritable, Writable};
|
||||
|
||||
// const DEFAULT_NBT_QUOTA: u32 = 2097152;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use packet_macros::{GamePacket, McBufReadable, McBufWritable};
|
||||
use packet_macros::{GamePacket, McBuf};
|
||||
|
||||
#[derive(Clone, Debug, GamePacket)]
|
||||
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
|
||||
// so i don't have to add a special handler
|
||||
#[derive(Clone, Debug, Copy, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, Copy, McBuf)]
|
||||
pub enum AnimationAction {
|
||||
SwingMainHand = 0,
|
||||
Hurt = 1,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
use azalea_chat::component::Component;
|
||||
use packet_macros::{GamePacket, McBufReadable, McBufWritable};
|
||||
use packet_macros::{GamePacket, McBuf};
|
||||
use uuid::Uuid;
|
||||
|
||||
#[derive(Clone, Debug, GamePacket)]
|
||||
|
@ -9,7 +9,7 @@ pub struct ClientboundChatPacket {
|
|||
pub sender: Uuid,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Copy, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, Copy, McBuf)]
|
||||
pub enum ChatType {
|
||||
Chat = 0,
|
||||
System = 1,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use packet_macros::{GamePacket, McBufReadable, McBufWritable};
|
||||
use packet_macros::{GamePacket, McBuf};
|
||||
|
||||
#[derive(Clone, Debug, GamePacket)]
|
||||
pub struct ClientboundGameEventPacket {
|
||||
|
@ -6,7 +6,7 @@ pub struct ClientboundGameEventPacket {
|
|||
pub param: f32,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Copy, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, Copy, McBuf)]
|
||||
pub enum EventType {
|
||||
NoRespawnBlockAvailable = 0,
|
||||
StartRaining = 1,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use packet_macros::{GamePacket, McBufReadable, McBufWritable};
|
||||
use packet_macros::{GamePacket, McBuf};
|
||||
|
||||
use super::clientbound_light_update_packet::ClientboundLightUpdatePacketData;
|
||||
|
||||
|
@ -10,7 +10,7 @@ pub struct ClientboundLevelChunkWithLightPacket {
|
|||
pub light_data: ClientboundLightUpdatePacketData,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct ClientboundLevelChunkPacketData {
|
||||
pub heightmaps: azalea_nbt::Tag,
|
||||
// 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>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct BlockEntity {
|
||||
pub packed_xz: u8,
|
||||
pub y: u16,
|
||||
|
|
|
@ -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,
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
use crate::mc_buf::BitSet;
|
||||
use packet_macros::{GamePacket, McBufReadable, McBufWritable};
|
||||
use packet_macros::{GamePacket, McBuf};
|
||||
|
||||
#[derive(Clone, Debug, GamePacket)]
|
||||
pub struct ClientboundLightUpdatePacket {
|
||||
|
@ -8,7 +8,7 @@ pub struct ClientboundLightUpdatePacket {
|
|||
pub light_data: ClientboundLightUpdatePacketData,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct ClientboundLightUpdatePacketData {
|
||||
trust_edges: bool,
|
||||
sky_y_mask: BitSet,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::mc_buf::{McBufReadable, McBufWritable, Readable, Writable};
|
||||
use azalea_chat::component::Component;
|
||||
use packet_macros::{GamePacket, McBufReadable, McBufWritable};
|
||||
use packet_macros::{GamePacket, McBuf};
|
||||
use std::io::{Read, Write};
|
||||
use uuid::Uuid;
|
||||
|
||||
|
@ -18,14 +18,14 @@ pub enum Action {
|
|||
RemovePlayer(Vec<RemovePlayer>),
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct PlayerProperty {
|
||||
name: String,
|
||||
value: String,
|
||||
signature: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct AddPlayer {
|
||||
uuid: Uuid,
|
||||
name: String,
|
||||
|
@ -37,26 +37,26 @@ pub struct AddPlayer {
|
|||
display_name: Option<Component>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct UpdateGameMode {
|
||||
uuid: Uuid,
|
||||
#[var]
|
||||
gamemode: u32,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct UpdateLatency {
|
||||
uuid: Uuid,
|
||||
#[var]
|
||||
ping: i32,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct UpdateDisplayName {
|
||||
uuid: Uuid,
|
||||
display_name: Option<Component>,
|
||||
}
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct RemovePlayer {
|
||||
uuid: Uuid,
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::mc_buf::{McBufReadable, McBufWritable, Readable, Writable};
|
||||
use azalea_core::resource_location::ResourceLocation;
|
||||
use packet_macros::{GamePacket, McBufReadable, McBufWritable};
|
||||
use packet_macros::{GamePacket, McBuf};
|
||||
use std::io::{Read, Write};
|
||||
|
||||
#[derive(Clone, Debug, GamePacket)]
|
||||
|
@ -11,7 +11,7 @@ pub struct ClientboundRecipePacket {
|
|||
pub to_highlight: Vec<ResourceLocation>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct RecipeBookSettings {
|
||||
pub gui_open: bool,
|
||||
pub filtering_craftable: bool,
|
||||
|
|
|
@ -37,7 +37,7 @@ impl McBufWritable for BlockStateWithPosition {
|
|||
fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
|
||||
let data = (self.state as u64) << 12
|
||||
| ((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(())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use packet_macros::{GamePacket, McBufReadable, McBufWritable};
|
||||
use packet_macros::{GamePacket, McBuf};
|
||||
|
||||
#[derive(Clone, Debug, GamePacket)]
|
||||
pub struct ClientboundSoundPacket {
|
||||
|
@ -13,7 +13,7 @@ pub struct ClientboundSoundPacket {
|
|||
pub pitch: f32,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Copy, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, Copy, McBuf)]
|
||||
pub enum SoundSource {
|
||||
Master = 0,
|
||||
Music = 1,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use crate::packets::{McBufReadable, McBufWritable};
|
||||
use azalea_chat::component::Component;
|
||||
use azalea_core::{resource_location::ResourceLocation, Slot};
|
||||
use packet_macros::{GamePacket, McBufReadable, McBufWritable};
|
||||
use packet_macros::{GamePacket, McBuf};
|
||||
use std::{
|
||||
collections::HashMap,
|
||||
io::{Read, Write},
|
||||
|
@ -15,7 +15,7 @@ pub struct ClientboundUpdateAdvancementsPacket {
|
|||
pub progress: HashMap<ResourceLocation, AdvancementProgress>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct Advancement {
|
||||
parent_id: Option<ResourceLocation>,
|
||||
display: Option<DisplayInfo>,
|
||||
|
@ -25,7 +25,7 @@ pub struct Advancement {
|
|||
// requirements_strategy: RequirementsStrategy.AND
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct DisplayInfo {
|
||||
pub title: 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 {
|
||||
Task = 0,
|
||||
Challenge = 1,
|
||||
|
@ -79,12 +79,12 @@ pub enum FrameType {
|
|||
}
|
||||
|
||||
// nothing is written here
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct Criterion {}
|
||||
|
||||
pub type AdvancementProgress = HashMap<ResourceLocation, CriterionProgress>;
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct CriterionProgress {
|
||||
date: Option<u64>,
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::mc_buf::{McBufReadable, McBufWritable, Readable, Writable};
|
||||
use azalea_core::resource_location::ResourceLocation;
|
||||
use packet_macros::{GamePacket, McBufReadable, McBufWritable};
|
||||
use packet_macros::{GamePacket, McBuf};
|
||||
use std::io::{Read, Write};
|
||||
use uuid::Uuid;
|
||||
|
||||
|
@ -11,14 +11,14 @@ pub struct ClientboundUpdateAttributesPacket {
|
|||
pub attributes: Vec<AttributeSnapshot>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct AttributeSnapshot {
|
||||
pub attribute: ResourceLocation,
|
||||
pub base: f64,
|
||||
pub modifiers: Vec<Modifier>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct Modifier {
|
||||
pub uuid: Uuid,
|
||||
pub amount: f64,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use std::io::{Read, Write};
|
||||
|
||||
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};
|
||||
|
||||
|
@ -16,7 +16,7 @@ pub struct Recipe {
|
|||
pub data: RecipeData,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct ShapelessRecipe {
|
||||
/// Used to group similar recipes together in the recipe book.
|
||||
/// 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 {
|
||||
group: String,
|
||||
ingredient: Ingredient,
|
||||
|
@ -77,13 +77,13 @@ pub struct CookingRecipe {
|
|||
#[var]
|
||||
cooking_time: u32,
|
||||
}
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct StoneCuttingRecipe {
|
||||
group: String,
|
||||
ingredient: Ingredient,
|
||||
result: Slot,
|
||||
}
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct SmithingRecipe {
|
||||
base: Ingredient,
|
||||
addition: Ingredient,
|
||||
|
@ -116,7 +116,7 @@ pub enum RecipeData {
|
|||
Smithing(SmithingRecipe),
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, McBufReadable, McBufWritable)]
|
||||
#[derive(Clone, Debug, McBuf)]
|
||||
pub struct Ingredient {
|
||||
pub allowed: Vec<Slot>,
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ pub mod clientbound_initialize_border_packet;
|
|||
pub mod clientbound_keep_alive_packet;
|
||||
pub mod clientbound_level_chunk_with_light_packet;
|
||||
pub mod clientbound_level_event_packet;
|
||||
pub mod clientbound_level_particles_packet;
|
||||
pub mod clientbound_light_update_packet;
|
||||
pub mod clientbound_login_packet;
|
||||
pub mod clientbound_move_entity_pos_packet;
|
||||
|
@ -58,10 +59,10 @@ declare_state_packets!(
|
|||
0x00: clientbound_add_entity_packet::ClientboundAddEntityPacket,
|
||||
0x02: clientbound_add_mob_packet::ClientboundAddMobPacket,
|
||||
0x04: clientbound_add_player_packet::ClientboundAddPlayerPacket,
|
||||
0x6: clientbound_animate_packet::ClientboundAnimatePacket,
|
||||
0xc: clientbound_block_update_packet::ClientboundBlockUpdatePacket,
|
||||
0x06: clientbound_animate_packet::ClientboundAnimatePacket,
|
||||
0x0c: clientbound_block_update_packet::ClientboundBlockUpdatePacket,
|
||||
0x0e: clientbound_change_difficulty_packet::ClientboundChangeDifficultyPacket,
|
||||
0xf: clientbound_chat_packet::ClientboundChatPacket,
|
||||
0x0f: clientbound_chat_packet::ClientboundChatPacket,
|
||||
0x12: clientbound_declare_commands_packet::ClientboundDeclareCommandsPacket,
|
||||
0x14: clientbound_container_set_content_packet::ClientboundContainerSetContentPacket,
|
||||
0x1a: clientbound_disconnect_packet::ClientboundDisconnectPacket,
|
||||
|
@ -72,6 +73,7 @@ declare_state_packets!(
|
|||
0x21: clientbound_keep_alive_packet::ClientboundKeepAlivePacket,
|
||||
0x22: clientbound_level_chunk_with_light_packet::ClientboundLevelChunkWithLightPacket,
|
||||
0x23: clientbound_level_event_packet::ClientboundLevelEventPacket,
|
||||
0x24: clientbound_level_particles_packet::ClientboundLevelParticlesPacket,
|
||||
0x25: clientbound_light_update_packet::ClientboundLightUpdatePacket,
|
||||
0x26: clientbound_login_packet::ClientboundLoginPacket,
|
||||
0x29: clientbound_move_entity_pos_packet::ClientboundMoveEntityPosPacket,
|
||||
|
|
|
@ -43,7 +43,7 @@ where
|
|||
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> {
|
||||
ConnectionProtocol::from_i32(buf.read_varint()?)
|
||||
.ok_or_else(|| "Invalid intention".to_string())
|
||||
|
|
Loading…
Add table
Reference in a new issue