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()
|
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);
|
||||||
|
|
||||||
|
|
|
@ -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!()
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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 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,
|
||||||
|
|
|
@ -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,
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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>,
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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>,
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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())
|
||||||
|
|
Loading…
Add table
Reference in a new issue