From 26b69eae33e73fbef6249cb110699a9677f160c4 Mon Sep 17 00:00:00 2001 From: Alexander Medvedev Date: Sun, 23 Feb 2025 13:35:22 +0100 Subject: [PATCH] Minior packet changes --- pumpkin-macros/src/lib.rs | 21 +------------------ pumpkin-protocol/src/bytebuf/serializer.rs | 2 +- .../src/client/config/add_resource_pack.rs | 4 ++-- .../src/client/config/config_disconnect.rs | 8 +++---- .../src/client/config/cookie_request.rs | 4 ++-- .../src/client/config/finish_config.rs | 21 +++++-------------- .../src/client/config/known_packs.rs | 4 ++-- .../src/client/config/plugin_message.rs | 4 ++-- .../src/client/config/registry_data.rs | 4 ++-- .../src/client/config/server_links.rs | 4 ++-- .../src/client/config/store_cookie.rs | 4 ++-- .../src/client/config/transfer.rs | 4 ++-- .../src/client/config/update_tags.rs | 4 ++-- .../src/client/login/cookie_request.rs | 4 ++-- .../src/client/login/encryption_request.rs | 8 +++---- .../src/client/login/login_disconnect.rs | 8 +++---- .../src/client/login/login_success.rs | 4 ++-- .../src/client/login/plugin_request.rs | 4 ++-- .../src/client/login/set_compression.rs | 8 +++---- .../src/client/play/acknowledge_block.rs | 8 +++---- pumpkin-protocol/src/client/play/actionbar.rs | 4 ++-- .../src/client/play/block_destroy_stage.rs | 4 ++-- .../src/client/play/block_entity_data.rs | 4 ++-- .../src/client/play/block_event.rs | 4 ++-- .../src/client/play/block_update.rs | 4 ++-- .../src/client/play/boss_event.rs | 4 ++-- .../src/client/play/center_chunk.rs | 4 ++-- .../src/client/play/change_difficulty.rs | 4 ++-- .../src/client/play/chunk_data.rs | 4 ++-- .../src/client/play/clear_title.rs | 4 ++-- .../src/client/play/close_container.rs | 4 ++-- .../src/client/play/combat_death.rs | 4 ++-- .../src/client/play/command_suggestions.rs | 4 ++-- pumpkin-protocol/src/client/play/commands.rs | 4 ++-- .../src/client/play/cookie_request.rs | 4 ++-- .../src/client/play/damage_event.rs | 4 ++-- .../src/client/play/disconnect.rs | 16 +++++++------- .../src/client/play/disguised_chat_message.rs | 4 ++-- .../src/client/play/display_objective.rs | 4 ++-- .../src/client/play/entity_animation.rs | 4 ++-- .../src/client/play/entity_metadata.rs | 4 ++-- .../src/client/play/entity_sound_effect.rs | 4 ++-- .../src/client/play/entity_status.rs | 8 +++---- .../src/client/play/entity_velocity.rs | 12 +++++------ .../src/client/play/game_event.rs | 8 +++---- pumpkin-protocol/src/client/play/head_rot.rs | 8 +++---- .../src/client/play/hurt_animation.rs | 16 +++++++------- .../client/play/initialize_world_border.rs | 4 ++-- .../src/client/play/keep_alive.rs | 8 +++---- .../src/client/play/level_event.rs | 8 +++---- pumpkin-protocol/src/client/play/login.rs | 4 ++-- .../src/client/play/open_screen.rs | 4 ++-- .../src/client/play/open_sign_editor.rs | 4 ++-- pumpkin-protocol/src/client/play/particle.rs | 4 ++-- .../src/client/play/ping_response.rs | 8 +++---- .../src/client/play/player_abilities.rs | 4 ++-- .../src/client/play/player_chat_message.rs | 4 ++-- .../src/client/play/player_info_update.rs | 4 ++-- .../src/client/play/player_position.rs | 4 ++-- .../src/client/play/player_remove.rs | 4 ++-- .../src/client/play/remove_entities.rs | 4 ++-- .../src/client/play/reset_score.rs | 4 ++-- pumpkin-protocol/src/client/play/respawn.rs | 8 +++---- .../src/client/play/server_links.rs | 4 ++-- .../src/client/play/set_border_center.rs | 4 ++-- .../src/client/play/set_border_lerp_size.rs | 4 ++-- .../src/client/play/set_border_size.rs | 4 ++-- .../client/play/set_border_warning_delay.rs | 4 ++-- .../play/set_border_warning_distance.rs | 4 ++-- .../src/client/play/set_container_content.rs | 4 ++-- .../src/client/play/set_container_property.rs | 4 ++-- .../src/client/play/set_container_slot.rs | 4 ++-- .../src/client/play/set_equipment.rs | 4 ++-- .../src/client/play/set_experience.rs | 4 ++-- .../src/client/play/set_health.rs | 4 ++-- .../src/client/play/set_held_item.rs | 4 ++-- pumpkin-protocol/src/client/play/set_time.rs | 4 ++-- pumpkin-protocol/src/client/play/set_title.rs | 4 ++-- .../src/client/play/sound_effect.rs | 4 ++-- .../src/client/play/spawn_entity.rs | 4 ++-- .../src/client/play/store_cookie.rs | 4 ++-- pumpkin-protocol/src/client/play/subtitle.rs | 4 ++-- .../src/client/play/system_chat_message.rs | 4 ++-- pumpkin-protocol/src/client/play/take_item.rs | 4 ++-- .../src/client/play/teleport_entity.rs | 4 ++-- pumpkin-protocol/src/client/play/transfer.rs | 12 +++++------ .../src/client/play/unload_chunk.rs | 4 ++-- .../src/client/play/update_entity_pos.rs | 4 ++-- .../src/client/play/update_entity_pos_rot.rs | 4 ++-- .../src/client/play/update_entity_rot.rs | 4 ++-- .../src/client/play/update_mob_effect.rs | 4 ++-- .../src/client/play/update_objectives.rs | 4 ++-- .../src/client/play/update_score.rs | 4 ++-- .../src/client/play/worldevent.rs | 4 ++-- .../src/client/status/ping_response.rs | 8 +++---- .../src/client/status/status_response.rs | 8 +++---- pumpkin-protocol/src/packet_encoder.rs | 4 ++-- .../config/acknowledge_finish_config.rs | 9 ++++---- .../src/server/config/client_information.rs | 7 ++++--- .../src/server/config/cookie_response.rs | 4 ++-- .../src/server/config/known_packs.rs | 7 ++++--- .../src/server/config/plugin_message.rs | 4 ++-- pumpkin-protocol/src/server/handshake/mod.rs | 21 +++++++++++++------ .../src/server/login/cookie_response.rs | 4 ++-- .../src/server/login/encryption_response.rs | 4 ++-- .../src/server/login/login_response.rs | 11 +++++----- .../src/server/login/login_start.rs | 14 ++++++++++--- .../src/server/login/plugin_response.rs | 4 ++-- .../src/server/play/chat_command.rs | 7 ++++--- .../src/server/play/chat_message.rs | 4 ++-- .../src/server/play/click_container.rs | 4 ++-- .../src/server/play/client_command.rs | 4 ++-- .../src/server/play/client_information.rs | 7 ++++--- .../src/server/play/client_tick_end.rs | 7 +++---- .../src/server/play/close_container.rs | 8 +++---- .../src/server/play/command_suggestion.rs | 4 ++-- .../src/server/play/confirm_teleport.rs | 7 ++++--- .../src/server/play/cookie_response.rs | 4 ++-- pumpkin-protocol/src/server/play/interact.rs | 4 ++-- .../src/server/play/keep_alive.rs | 8 +++---- pumpkin-protocol/src/server/play/pick_item.rs | 6 +++--- .../src/server/play/ping_request.rs | 8 +++---- .../src/server/play/player_abilities.rs | 4 ++-- .../src/server/play/player_action.rs | 4 ++-- .../src/server/play/player_command.rs | 4 ++-- .../src/server/play/player_ground.rs | 8 +++---- .../src/server/play/player_input.rs | 4 ++-- .../src/server/play/player_loaded.rs | 5 ++--- .../src/server/play/player_position.rs | 4 ++-- .../server/play/player_position_rotation.rs | 4 ++-- .../src/server/play/player_rotation.rs | 4 ++-- .../src/server/play/set_creative_slot.rs | 4 ++-- .../src/server/play/set_held_item.rs | 8 +++---- pumpkin-protocol/src/server/play/swing_arm.rs | 7 ++++--- .../src/server/play/update_sign.rs | 4 ++-- pumpkin-protocol/src/server/play/use_item.rs | 4 ++-- .../src/server/play/use_item_on.rs | 4 ++-- .../src/server/status/ping_request.rs | 7 ++++--- .../src/server/status/status_request.rs | 11 +++++----- pumpkin/src/command/commands/transfer.rs | 4 ++-- pumpkin/src/entity/combat.rs | 2 +- pumpkin/src/entity/player.rs | 4 ++-- pumpkin/src/net/mod.rs | 13 ++++++------ pumpkin/src/net/packet/config.rs | 10 ++++----- pumpkin/src/net/packet/handshake.rs | 4 ++-- pumpkin/src/net/packet/login.rs | 18 ++++++++-------- 146 files changed, 413 insertions(+), 419 deletions(-) diff --git a/pumpkin-macros/src/lib.rs b/pumpkin-macros/src/lib.rs index 45607f7ad..c4c24f6e3 100644 --- a/pumpkin-macros/src/lib.rs +++ b/pumpkin-macros/src/lib.rs @@ -154,26 +154,7 @@ pub fn send_cancellable(input: TokenStream) -> TokenStream { } #[proc_macro_attribute] -pub fn client_packet(input: TokenStream, item: TokenStream) -> TokenStream { - let ast: syn::DeriveInput = syn::parse(item.clone()).unwrap(); - let name = &ast.ident; - let (impl_generics, ty_generics, _) = ast.generics.split_for_impl(); - - let input: proc_macro2::TokenStream = input.into(); - let item: proc_macro2::TokenStream = item.into(); - - let code = quote! { - #item - impl #impl_generics crate::bytebuf::packet::Packet for #name #ty_generics { - const PACKET_ID: i32 = #input; - } - }; - - code.into() -} - -#[proc_macro_attribute] -pub fn server_packet(input: TokenStream, item: TokenStream) -> TokenStream { +pub fn packet(input: TokenStream, item: TokenStream) -> TokenStream { let ast: syn::DeriveInput = syn::parse(item.clone()).unwrap(); let name = &ast.ident; let (impl_generics, ty_generics, _) = ast.generics.split_for_impl(); diff --git a/pumpkin-protocol/src/bytebuf/serializer.rs b/pumpkin-protocol/src/bytebuf/serializer.rs index c0ae298a5..3c900d7e9 100644 --- a/pumpkin-protocol/src/bytebuf/serializer.rs +++ b/pumpkin-protocol/src/bytebuf/serializer.rs @@ -207,7 +207,7 @@ impl ser::Serializer for &mut Serializer { unimplemented!() } fn serialize_unit_struct(self, _name: &'static str) -> Result { - todo!() + Ok(()) } fn serialize_unit_variant( self, diff --git a/pumpkin-protocol/src/client/config/add_resource_pack.rs b/pumpkin-protocol/src/client/config/add_resource_pack.rs index d9b934ed9..4bd492b0a 100644 --- a/pumpkin-protocol/src/client/config/add_resource_pack.rs +++ b/pumpkin-protocol/src/client/config/add_resource_pack.rs @@ -1,12 +1,12 @@ use pumpkin_util::text::TextComponent; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use pumpkin_data::packet::clientbound::CONFIG_RESOURCE_PACK_PUSH; #[derive(Serialize)] -#[client_packet(CONFIG_RESOURCE_PACK_PUSH)] +#[packet(CONFIG_RESOURCE_PACK_PUSH)] pub struct CConfigAddResourcePack<'a> { uuid: uuid::Uuid, url: &'a str, diff --git a/pumpkin-protocol/src/client/config/config_disconnect.rs b/pumpkin-protocol/src/client/config/config_disconnect.rs index 65e86a191..387d69798 100644 --- a/pumpkin-protocol/src/client/config/config_disconnect.rs +++ b/pumpkin-protocol/src/client/config/config_disconnect.rs @@ -1,9 +1,9 @@ -use pumpkin_macros::client_packet; - use pumpkin_data::packet::clientbound::CONFIG_DISCONNECT; +use pumpkin_macros::packet; +use serde::Deserialize; -#[derive(serde::Serialize)] -#[client_packet(CONFIG_DISCONNECT)] +#[derive(serde::Serialize, Deserialize)] +#[packet(CONFIG_DISCONNECT)] pub struct CConfigDisconnect<'a> { reason: &'a str, } diff --git a/pumpkin-protocol/src/client/config/cookie_request.rs b/pumpkin-protocol/src/client/config/cookie_request.rs index f32011fdc..799990ae3 100644 --- a/pumpkin-protocol/src/client/config/cookie_request.rs +++ b/pumpkin-protocol/src/client/config/cookie_request.rs @@ -1,10 +1,10 @@ use pumpkin_data::packet::clientbound::CONFIG_COOKIE_REQUEST; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use crate::codec::identifier::Identifier; #[derive(serde::Serialize)] -#[client_packet(CONFIG_COOKIE_REQUEST)] +#[packet(CONFIG_COOKIE_REQUEST)] /// Requests a cookie that was previously stored. pub struct CCookieRequest<'a> { key: &'a Identifier, diff --git a/pumpkin-protocol/src/client/config/finish_config.rs b/pumpkin-protocol/src/client/config/finish_config.rs index 7dc0d978d..74e0d7085 100644 --- a/pumpkin-protocol/src/client/config/finish_config.rs +++ b/pumpkin-protocol/src/client/config/finish_config.rs @@ -1,18 +1,7 @@ use pumpkin_data::packet::clientbound::CONFIG_FINISH_CONFIGURATION; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; +use serde::Serialize; -#[derive(serde::Serialize)] -#[client_packet(CONFIG_FINISH_CONFIGURATION)] -pub struct CFinishConfig {} - -impl Default for CFinishConfig { - fn default() -> Self { - Self::new() - } -} - -impl CFinishConfig { - pub fn new() -> Self { - Self {} - } -} +#[derive(Serialize)] +#[packet(CONFIG_FINISH_CONFIGURATION)] +pub struct CFinishConfig; diff --git a/pumpkin-protocol/src/client/config/known_packs.rs b/pumpkin-protocol/src/client/config/known_packs.rs index 931d61e87..bc659f9f1 100644 --- a/pumpkin-protocol/src/client/config/known_packs.rs +++ b/pumpkin-protocol/src/client/config/known_packs.rs @@ -1,10 +1,10 @@ use bytes::BufMut; use pumpkin_data::packet::clientbound::CONFIG_SELECT_KNOWN_PACKS; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use crate::{ClientPacket, KnownPack, bytebuf::ByteBufMut}; -#[client_packet(CONFIG_SELECT_KNOWN_PACKS)] +#[packet(CONFIG_SELECT_KNOWN_PACKS)] pub struct CKnownPacks<'a> { known_packs: &'a [KnownPack<'a>], } diff --git a/pumpkin-protocol/src/client/config/plugin_message.rs b/pumpkin-protocol/src/client/config/plugin_message.rs index 95464bc70..9ec4a2563 100644 --- a/pumpkin-protocol/src/client/config/plugin_message.rs +++ b/pumpkin-protocol/src/client/config/plugin_message.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::CONFIG_CUSTOM_PAYLOAD; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(CONFIG_CUSTOM_PAYLOAD)] +#[packet(CONFIG_CUSTOM_PAYLOAD)] pub struct CPluginMessage<'a> { channel: &'a str, data: &'a [u8], diff --git a/pumpkin-protocol/src/client/config/registry_data.rs b/pumpkin-protocol/src/client/config/registry_data.rs index 3181b4dce..735c72e91 100644 --- a/pumpkin-protocol/src/client/config/registry_data.rs +++ b/pumpkin-protocol/src/client/config/registry_data.rs @@ -1,11 +1,11 @@ use bytes::BufMut; use pumpkin_data::packet::clientbound::CONFIG_REGISTRY_DATA; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::{ClientPacket, bytebuf::ByteBufMut, codec::identifier::Identifier}; -#[client_packet(CONFIG_REGISTRY_DATA)] +#[packet(CONFIG_REGISTRY_DATA)] pub struct CRegistryData<'a> { registry_id: &'a Identifier, entries: &'a [RegistryEntry], diff --git a/pumpkin-protocol/src/client/config/server_links.rs b/pumpkin-protocol/src/client/config/server_links.rs index 32bf22cdf..923493ff2 100644 --- a/pumpkin-protocol/src/client/config/server_links.rs +++ b/pumpkin-protocol/src/client/config/server_links.rs @@ -1,10 +1,10 @@ use crate::{Link, VarInt}; use pumpkin_data::packet::clientbound::CONFIG_SERVER_LINKS; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(CONFIG_SERVER_LINKS)] +#[packet(CONFIG_SERVER_LINKS)] pub struct CConfigServerLinks<'a> { links_count: &'a VarInt, links: &'a [Link<'a>], diff --git a/pumpkin-protocol/src/client/config/store_cookie.rs b/pumpkin-protocol/src/client/config/store_cookie.rs index 860549006..38788d42e 100644 --- a/pumpkin-protocol/src/client/config/store_cookie.rs +++ b/pumpkin-protocol/src/client/config/store_cookie.rs @@ -1,9 +1,9 @@ use crate::{VarInt, codec::identifier::Identifier}; use pumpkin_data::packet::clientbound::CONFIG_STORE_COOKIE; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; #[derive(serde::Serialize)] -#[client_packet(CONFIG_STORE_COOKIE)] +#[packet(CONFIG_STORE_COOKIE)] /// Stores some arbitrary data on the client, which persists between server transfers. /// The Notchian (vanilla) client only accepts cookies of up to 5 kiB in size. pub struct CStoreCookie<'a> { diff --git a/pumpkin-protocol/src/client/config/transfer.rs b/pumpkin-protocol/src/client/config/transfer.rs index c7aa76fcf..6c2dd5d55 100644 --- a/pumpkin-protocol/src/client/config/transfer.rs +++ b/pumpkin-protocol/src/client/config/transfer.rs @@ -1,10 +1,10 @@ use crate::VarInt; use pumpkin_data::packet::clientbound::CONFIG_TRANSFER; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(CONFIG_TRANSFER)] +#[packet(CONFIG_TRANSFER)] pub struct CTransfer<'a> { host: &'a str, port: &'a VarInt, diff --git a/pumpkin-protocol/src/client/config/update_tags.rs b/pumpkin-protocol/src/client/config/update_tags.rs index 5bee3dcf6..83d02efeb 100644 --- a/pumpkin-protocol/src/client/config/update_tags.rs +++ b/pumpkin-protocol/src/client/config/update_tags.rs @@ -4,7 +4,7 @@ use pumpkin_data::{ packet::clientbound::CONFIG_UPDATE_TAGS, tag::{RegistryKey, TAGS}, }; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_world::block::registry; use crate::{ @@ -13,7 +13,7 @@ use crate::{ codec::{identifier::Identifier, var_int::VarInt}, }; -#[client_packet(CONFIG_UPDATE_TAGS)] +#[packet(CONFIG_UPDATE_TAGS)] pub struct CUpdateTags<'a> { tags: &'a [pumpkin_data::tag::RegistryKey], } diff --git a/pumpkin-protocol/src/client/login/cookie_request.rs b/pumpkin-protocol/src/client/login/cookie_request.rs index 0d8564a4c..e08844892 100644 --- a/pumpkin-protocol/src/client/login/cookie_request.rs +++ b/pumpkin-protocol/src/client/login/cookie_request.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::LOGIN_COOKIE_REQUEST; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::codec::identifier::Identifier; #[derive(Serialize)] -#[client_packet(LOGIN_COOKIE_REQUEST)] +#[packet(LOGIN_COOKIE_REQUEST)] /// Requests a cookie that was previously stored. pub struct CLoginCookieRequest<'a> { key: &'a Identifier, diff --git a/pumpkin-protocol/src/client/login/encryption_request.rs b/pumpkin-protocol/src/client/login/encryption_request.rs index 91ac9cc00..f03d08239 100644 --- a/pumpkin-protocol/src/client/login/encryption_request.rs +++ b/pumpkin-protocol/src/client/login/encryption_request.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::LOGIN_HELLO; -use pumpkin_macros::client_packet; -use serde::Serialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; use crate::VarInt; -#[derive(Serialize)] -#[client_packet(LOGIN_HELLO)] +#[derive(Serialize, Deserialize)] +#[packet(LOGIN_HELLO)] pub struct CEncryptionRequest<'a> { server_id: &'a str, // 20 public_key_length: VarInt, diff --git a/pumpkin-protocol/src/client/login/login_disconnect.rs b/pumpkin-protocol/src/client/login/login_disconnect.rs index b2499f776..a5205ebf3 100644 --- a/pumpkin-protocol/src/client/login/login_disconnect.rs +++ b/pumpkin-protocol/src/client/login/login_disconnect.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::LOGIN_LOGIN_DISCONNECT; -use pumpkin_macros::client_packet; -use serde::Serialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; -#[derive(Serialize)] -#[client_packet(LOGIN_LOGIN_DISCONNECT)] +#[derive(Serialize, Deserialize)] +#[packet(LOGIN_LOGIN_DISCONNECT)] pub struct CLoginDisconnect<'a> { json_reason: &'a str, } diff --git a/pumpkin-protocol/src/client/login/login_success.rs b/pumpkin-protocol/src/client/login/login_success.rs index 600e7abab..50f1cc3e6 100644 --- a/pumpkin-protocol/src/client/login/login_success.rs +++ b/pumpkin-protocol/src/client/login/login_success.rs @@ -1,10 +1,10 @@ use bytes::BufMut; use pumpkin_data::packet::clientbound::LOGIN_LOGIN_FINISHED; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use crate::{ClientPacket, Property, bytebuf::ByteBufMut}; -#[client_packet(LOGIN_LOGIN_FINISHED)] +#[packet(LOGIN_LOGIN_FINISHED)] pub struct CLoginSuccess<'a> { pub uuid: &'a uuid::Uuid, pub username: &'a str, // 16 diff --git a/pumpkin-protocol/src/client/login/plugin_request.rs b/pumpkin-protocol/src/client/login/plugin_request.rs index 97fea6330..6333a1fa1 100644 --- a/pumpkin-protocol/src/client/login/plugin_request.rs +++ b/pumpkin-protocol/src/client/login/plugin_request.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::LOGIN_CUSTOM_QUERY; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(LOGIN_CUSTOM_QUERY)] +#[packet(LOGIN_CUSTOM_QUERY)] pub struct CLoginPluginRequest<'a> { message_id: VarInt, channel: &'a str, diff --git a/pumpkin-protocol/src/client/login/set_compression.rs b/pumpkin-protocol/src/client/login/set_compression.rs index 3b572f000..d7917aede 100644 --- a/pumpkin-protocol/src/client/login/set_compression.rs +++ b/pumpkin-protocol/src/client/login/set_compression.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::LOGIN_LOGIN_COMPRESSION; -use pumpkin_macros::client_packet; -use serde::Serialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; use crate::VarInt; -#[derive(Serialize)] -#[client_packet(LOGIN_LOGIN_COMPRESSION)] +#[derive(Serialize, Deserialize)] +#[packet(LOGIN_LOGIN_COMPRESSION)] pub struct CSetCompression { threshold: VarInt, } diff --git a/pumpkin-protocol/src/client/play/acknowledge_block.rs b/pumpkin-protocol/src/client/play/acknowledge_block.rs index 2d86fe002..83b4a69df 100644 --- a/pumpkin-protocol/src/client/play/acknowledge_block.rs +++ b/pumpkin-protocol/src/client/play/acknowledge_block.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_BLOCK_CHANGED_ACK; -use pumpkin_macros::client_packet; -use serde::Serialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; use crate::VarInt; -#[derive(Serialize)] -#[client_packet(PLAY_BLOCK_CHANGED_ACK)] +#[derive(Serialize, Deserialize)] +#[packet(PLAY_BLOCK_CHANGED_ACK)] pub struct CAcknowledgeBlockChange { sequence_id: VarInt, } diff --git a/pumpkin-protocol/src/client/play/actionbar.rs b/pumpkin-protocol/src/client/play/actionbar.rs index 6242f329b..b59a843fe 100644 --- a/pumpkin-protocol/src/client/play/actionbar.rs +++ b/pumpkin-protocol/src/client/play/actionbar.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_SET_ACTION_BAR_TEXT; use pumpkin_util::text::TextComponent; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_SET_ACTION_BAR_TEXT)] +#[packet(PLAY_SET_ACTION_BAR_TEXT)] pub struct CActionBar<'a> { action_bar: &'a TextComponent, } diff --git a/pumpkin-protocol/src/client/play/block_destroy_stage.rs b/pumpkin-protocol/src/client/play/block_destroy_stage.rs index dcf5b71ba..232e0958c 100644 --- a/pumpkin-protocol/src/client/play/block_destroy_stage.rs +++ b/pumpkin-protocol/src/client/play/block_destroy_stage.rs @@ -1,13 +1,13 @@ use pumpkin_data::packet::clientbound::PLAY_BLOCK_DESTRUCTION; use pumpkin_util::math::position::BlockPos; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_BLOCK_DESTRUCTION)] +#[packet(PLAY_BLOCK_DESTRUCTION)] pub struct CSetBlockDestroyStage { entity_id: VarInt, location: BlockPos, diff --git a/pumpkin-protocol/src/client/play/block_entity_data.rs b/pumpkin-protocol/src/client/play/block_entity_data.rs index 5d843c4dd..1a031f4e8 100644 --- a/pumpkin-protocol/src/client/play/block_entity_data.rs +++ b/pumpkin-protocol/src/client/play/block_entity_data.rs @@ -1,12 +1,12 @@ use pumpkin_data::packet::clientbound::PLAY_BLOCK_ENTITY_DATA; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::math::position::BlockPos; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_BLOCK_ENTITY_DATA)] +#[packet(PLAY_BLOCK_ENTITY_DATA)] pub struct CBlockEntityData { location: BlockPos, r#type: VarInt, diff --git a/pumpkin-protocol/src/client/play/block_event.rs b/pumpkin-protocol/src/client/play/block_event.rs index 30e0f969f..3414231d8 100644 --- a/pumpkin-protocol/src/client/play/block_event.rs +++ b/pumpkin-protocol/src/client/play/block_event.rs @@ -1,13 +1,13 @@ use pumpkin_data::packet::clientbound::PLAY_BLOCK_EVENT; use pumpkin_util::math::position::BlockPos; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_BLOCK_EVENT)] +#[packet(PLAY_BLOCK_EVENT)] pub struct CBlockAction<'a> { location: &'a BlockPos, action_id: u8, diff --git a/pumpkin-protocol/src/client/play/block_update.rs b/pumpkin-protocol/src/client/play/block_update.rs index ddc067425..b0f09b800 100644 --- a/pumpkin-protocol/src/client/play/block_update.rs +++ b/pumpkin-protocol/src/client/play/block_update.rs @@ -1,13 +1,13 @@ use pumpkin_data::packet::clientbound::PLAY_BLOCK_UPDATE; use pumpkin_util::math::position::BlockPos; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_BLOCK_UPDATE)] +#[packet(PLAY_BLOCK_UPDATE)] pub struct CBlockUpdate<'a> { location: &'a BlockPos, block_id: VarInt, diff --git a/pumpkin-protocol/src/client/play/boss_event.rs b/pumpkin-protocol/src/client/play/boss_event.rs index f103f184a..bf6cfd72e 100644 --- a/pumpkin-protocol/src/client/play/boss_event.rs +++ b/pumpkin-protocol/src/client/play/boss_event.rs @@ -3,9 +3,9 @@ use crate::client::play::bossevent_action::BosseventAction; use crate::{ClientPacket, VarInt}; use bytes::BufMut; use pumpkin_data::packet::clientbound::PLAY_BOSS_EVENT; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; -#[client_packet(PLAY_BOSS_EVENT)] +#[packet(PLAY_BOSS_EVENT)] pub struct CBossEvent<'a> { pub uuid: &'a uuid::Uuid, pub action: BosseventAction, diff --git a/pumpkin-protocol/src/client/play/center_chunk.rs b/pumpkin-protocol/src/client/play/center_chunk.rs index 02b447b4b..ee5eca3ac 100644 --- a/pumpkin-protocol/src/client/play/center_chunk.rs +++ b/pumpkin-protocol/src/client/play/center_chunk.rs @@ -1,10 +1,10 @@ use pumpkin_data::packet::clientbound::PLAY_SET_CHUNK_CACHE_CENTER; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use crate::VarInt; #[derive(serde::Serialize)] -#[client_packet(PLAY_SET_CHUNK_CACHE_CENTER)] +#[packet(PLAY_SET_CHUNK_CACHE_CENTER)] pub struct CCenterChunk { pub chunk_x: VarInt, pub chunk_z: VarInt, diff --git a/pumpkin-protocol/src/client/play/change_difficulty.rs b/pumpkin-protocol/src/client/play/change_difficulty.rs index 91498c195..5b6fce837 100644 --- a/pumpkin-protocol/src/client/play/change_difficulty.rs +++ b/pumpkin-protocol/src/client/play/change_difficulty.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::PLAY_CHANGE_DIFFICULTY; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_CHANGE_DIFFICULTY)] +#[packet(PLAY_CHANGE_DIFFICULTY)] pub struct CChangeDifficulty { difficulty: u8, locked: bool, diff --git a/pumpkin-protocol/src/client/play/chunk_data.rs b/pumpkin-protocol/src/client/play/chunk_data.rs index 053d6c3b6..27df4c0cb 100644 --- a/pumpkin-protocol/src/client/play/chunk_data.rs +++ b/pumpkin-protocol/src/client/play/chunk_data.rs @@ -2,13 +2,13 @@ use crate::{ClientPacket, VarInt, bytebuf::ByteBufMut, codec::bit_set::BitSet}; use bytes::{BufMut, BytesMut}; use pumpkin_data::packet::clientbound::PLAY_LEVEL_CHUNK_WITH_LIGHT; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_world::{ DIRECT_PALETTE_BITS, chunk::{ChunkData, SUBCHUNKS_COUNT}, }; -#[client_packet(PLAY_LEVEL_CHUNK_WITH_LIGHT)] +#[packet(PLAY_LEVEL_CHUNK_WITH_LIGHT)] pub struct CChunkData<'a>(pub &'a ChunkData); impl ClientPacket for CChunkData<'_> { diff --git a/pumpkin-protocol/src/client/play/clear_title.rs b/pumpkin-protocol/src/client/play/clear_title.rs index 3716721e2..f36511c54 100644 --- a/pumpkin-protocol/src/client/play/clear_title.rs +++ b/pumpkin-protocol/src/client/play/clear_title.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::PLAY_CLEAR_TITLES; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_CLEAR_TITLES)] +#[packet(PLAY_CLEAR_TITLES)] pub struct CClearTtitle { reset: bool, } diff --git a/pumpkin-protocol/src/client/play/close_container.rs b/pumpkin-protocol/src/client/play/close_container.rs index 284020212..a0c522043 100644 --- a/pumpkin-protocol/src/client/play/close_container.rs +++ b/pumpkin-protocol/src/client/play/close_container.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_CONTAINER_CLOSE; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_CONTAINER_CLOSE)] +#[packet(PLAY_CONTAINER_CLOSE)] pub struct CCloseContainer { window_id: VarInt, } diff --git a/pumpkin-protocol/src/client/play/combat_death.rs b/pumpkin-protocol/src/client/play/combat_death.rs index a2b9522e4..ae56f8f55 100644 --- a/pumpkin-protocol/src/client/play/combat_death.rs +++ b/pumpkin-protocol/src/client/play/combat_death.rs @@ -1,12 +1,12 @@ use pumpkin_data::packet::clientbound::PLAY_PLAYER_COMBAT_KILL; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::text::TextComponent; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_PLAYER_COMBAT_KILL)] +#[packet(PLAY_PLAYER_COMBAT_KILL)] pub struct CCombatDeath<'a> { player_id: VarInt, message: &'a TextComponent, diff --git a/pumpkin-protocol/src/client/play/command_suggestions.rs b/pumpkin-protocol/src/client/play/command_suggestions.rs index 59fe097d6..063bd92d4 100644 --- a/pumpkin-protocol/src/client/play/command_suggestions.rs +++ b/pumpkin-protocol/src/client/play/command_suggestions.rs @@ -1,11 +1,11 @@ use bytes::BufMut; use pumpkin_data::packet::clientbound::PLAY_COMMAND_SUGGESTIONS; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::text::TextComponent; use crate::{ClientPacket, VarInt, bytebuf::ByteBufMut}; -#[client_packet(PLAY_COMMAND_SUGGESTIONS)] +#[packet(PLAY_COMMAND_SUGGESTIONS)] pub struct CCommandSuggestions { id: VarInt, start: VarInt, diff --git a/pumpkin-protocol/src/client/play/commands.rs b/pumpkin-protocol/src/client/play/commands.rs index 09cf7628d..b8194a083 100644 --- a/pumpkin-protocol/src/client/play/commands.rs +++ b/pumpkin-protocol/src/client/play/commands.rs @@ -1,10 +1,10 @@ use bytes::BufMut; use pumpkin_data::packet::clientbound::PLAY_COMMANDS; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use crate::{ClientPacket, VarInt, bytebuf::ByteBufMut}; -#[client_packet(PLAY_COMMANDS)] +#[packet(PLAY_COMMANDS)] pub struct CCommands<'a> { pub nodes: Vec>, pub root_node_index: VarInt, diff --git a/pumpkin-protocol/src/client/play/cookie_request.rs b/pumpkin-protocol/src/client/play/cookie_request.rs index 1618accde..47eb6d9f3 100644 --- a/pumpkin-protocol/src/client/play/cookie_request.rs +++ b/pumpkin-protocol/src/client/play/cookie_request.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_COOKIE_REQUEST; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::codec::identifier::Identifier; #[derive(Serialize)] -#[client_packet(PLAY_COOKIE_REQUEST)] +#[packet(PLAY_COOKIE_REQUEST)] /// Requests a cookie that was previously stored. pub struct CPlayCookieRequest<'a> { key: &'a Identifier, diff --git a/pumpkin-protocol/src/client/play/damage_event.rs b/pumpkin-protocol/src/client/play/damage_event.rs index 976610946..32cf036af 100644 --- a/pumpkin-protocol/src/client/play/damage_event.rs +++ b/pumpkin-protocol/src/client/play/damage_event.rs @@ -1,12 +1,12 @@ use pumpkin_data::packet::clientbound::PLAY_DAMAGE_EVENT; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::math::vector3::Vector3; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_DAMAGE_EVENT)] +#[packet(PLAY_DAMAGE_EVENT)] pub struct CDamageEvent { entity_id: VarInt, source_type_id: VarInt, diff --git a/pumpkin-protocol/src/client/play/disconnect.rs b/pumpkin-protocol/src/client/play/disconnect.rs index 5bc3e6cf8..c3ec8f6f3 100644 --- a/pumpkin-protocol/src/client/play/disconnect.rs +++ b/pumpkin-protocol/src/client/play/disconnect.rs @@ -1,17 +1,17 @@ use pumpkin_data::packet::clientbound::PLAY_DISCONNECT; use pumpkin_util::text::TextComponent; -use pumpkin_macros::client_packet; -use serde::Serialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; -#[derive(Serialize)] -#[client_packet(PLAY_DISCONNECT)] -pub struct CPlayDisconnect<'a> { - reason: &'a TextComponent, +#[derive(Serialize, Deserialize)] +#[packet(PLAY_DISCONNECT)] +pub struct CPlayDisconnect { + reason: TextComponent, } -impl<'a> CPlayDisconnect<'a> { - pub fn new(reason: &'a TextComponent) -> Self { +impl CPlayDisconnect { + pub fn new(reason: TextComponent) -> Self { Self { reason } } } diff --git a/pumpkin-protocol/src/client/play/disguised_chat_message.rs b/pumpkin-protocol/src/client/play/disguised_chat_message.rs index 324dc537a..74cb13704 100644 --- a/pumpkin-protocol/src/client/play/disguised_chat_message.rs +++ b/pumpkin-protocol/src/client/play/disguised_chat_message.rs @@ -1,13 +1,13 @@ use pumpkin_data::packet::clientbound::PLAY_DISGUISED_CHAT; use pumpkin_util::text::TextComponent; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_DISGUISED_CHAT)] +#[packet(PLAY_DISGUISED_CHAT)] pub struct CDisguisedChatMessage<'a> { message: &'a TextComponent, chat_type: VarInt, diff --git a/pumpkin-protocol/src/client/play/display_objective.rs b/pumpkin-protocol/src/client/play/display_objective.rs index 5a24a205c..233e73ce7 100644 --- a/pumpkin-protocol/src/client/play/display_objective.rs +++ b/pumpkin-protocol/src/client/play/display_objective.rs @@ -1,13 +1,13 @@ use pumpkin_data::{ packet::clientbound::PLAY_SET_DISPLAY_OBJECTIVE, scoreboard::ScoreboardDisplaySlot, }; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_SET_DISPLAY_OBJECTIVE)] +#[packet(PLAY_SET_DISPLAY_OBJECTIVE)] pub struct CDisplayObjective<'a> { position: VarInt, score_name: &'a str, diff --git a/pumpkin-protocol/src/client/play/entity_animation.rs b/pumpkin-protocol/src/client/play/entity_animation.rs index c4a163ee2..9f5d99ad1 100644 --- a/pumpkin-protocol/src/client/play/entity_animation.rs +++ b/pumpkin-protocol/src/client/play/entity_animation.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_ANIMATE; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_ANIMATE)] +#[packet(PLAY_ANIMATE)] pub struct CEntityAnimation { entity_id: VarInt, /// See `Animation` diff --git a/pumpkin-protocol/src/client/play/entity_metadata.rs b/pumpkin-protocol/src/client/play/entity_metadata.rs index 1ce7bc5e8..e77ca516a 100644 --- a/pumpkin-protocol/src/client/play/entity_metadata.rs +++ b/pumpkin-protocol/src/client/play/entity_metadata.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_SET_ENTITY_DATA; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_SET_ENTITY_DATA)] +#[packet(PLAY_SET_ENTITY_DATA)] pub struct CSetEntityMetadata { entity_id: VarInt, metadata: Metadata, diff --git a/pumpkin-protocol/src/client/play/entity_sound_effect.rs b/pumpkin-protocol/src/client/play/entity_sound_effect.rs index 86bc48cf0..1d3f8bc83 100644 --- a/pumpkin-protocol/src/client/play/entity_sound_effect.rs +++ b/pumpkin-protocol/src/client/play/entity_sound_effect.rs @@ -1,10 +1,10 @@ use bytes::BufMut; use pumpkin_data::{packet::clientbound::PLAY_SOUND_ENTITY, sound::SoundCategory}; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use crate::{ClientPacket, IDOrSoundEvent, SoundEvent, VarInt, bytebuf::ByteBufMut}; -#[client_packet(PLAY_SOUND_ENTITY)] +#[packet(PLAY_SOUND_ENTITY)] pub struct CEntitySoundEffect { sound_event: IDOrSoundEvent, sound_category: VarInt, diff --git a/pumpkin-protocol/src/client/play/entity_status.rs b/pumpkin-protocol/src/client/play/entity_status.rs index a58a1dbae..183b33585 100644 --- a/pumpkin-protocol/src/client/play/entity_status.rs +++ b/pumpkin-protocol/src/client/play/entity_status.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::PLAY_ENTITY_EVENT; -use pumpkin_macros::client_packet; -use serde::Serialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; -#[derive(Serialize)] -#[client_packet(PLAY_ENTITY_EVENT)] +#[derive(Serialize, Deserialize)] +#[packet(PLAY_ENTITY_EVENT)] pub struct CEntityStatus { entity_id: i32, entity_status: i8, diff --git a/pumpkin-protocol/src/client/play/entity_velocity.rs b/pumpkin-protocol/src/client/play/entity_velocity.rs index 617eeac0b..df7295293 100644 --- a/pumpkin-protocol/src/client/play/entity_velocity.rs +++ b/pumpkin-protocol/src/client/play/entity_velocity.rs @@ -1,19 +1,19 @@ use pumpkin_data::packet::clientbound::PLAY_SET_ENTITY_MOTION; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::math::vector3::Vector3; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_SET_ENTITY_MOTION)] -pub struct CEntityVelocity<'a> { - entity_id: &'a VarInt, +#[packet(PLAY_SET_ENTITY_MOTION)] +pub struct CEntityVelocity { + entity_id: VarInt, velocity: Vector3, } -impl<'a> CEntityVelocity<'a> { - pub fn new(entity_id: &'a VarInt, velocity_x: f64, velocity_y: f64, velocity_z: f64) -> Self { +impl CEntityVelocity { + pub fn new(entity_id: VarInt, velocity_x: f64, velocity_y: f64, velocity_z: f64) -> Self { Self { entity_id, velocity: Vector3::new( diff --git a/pumpkin-protocol/src/client/play/game_event.rs b/pumpkin-protocol/src/client/play/game_event.rs index 375b8e1b9..9e2c69f41 100644 --- a/pumpkin-protocol/src/client/play/game_event.rs +++ b/pumpkin-protocol/src/client/play/game_event.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::PLAY_GAME_EVENT; -use pumpkin_macros::client_packet; -use serde::Serialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; -#[derive(Serialize)] -#[client_packet(PLAY_GAME_EVENT)] +#[derive(Serialize, Deserialize)] +#[packet(PLAY_GAME_EVENT)] pub struct CGameEvent { event: u8, value: f32, diff --git a/pumpkin-protocol/src/client/play/head_rot.rs b/pumpkin-protocol/src/client/play/head_rot.rs index 3244d5e5f..541c89829 100644 --- a/pumpkin-protocol/src/client/play/head_rot.rs +++ b/pumpkin-protocol/src/client/play/head_rot.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_ROTATE_HEAD; -use pumpkin_macros::client_packet; -use serde::Serialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; use crate::VarInt; -#[derive(Serialize)] -#[client_packet(PLAY_ROTATE_HEAD)] +#[derive(Serialize, Deserialize)] +#[packet(PLAY_ROTATE_HEAD)] pub struct CHeadRot { entity_id: VarInt, head_yaw: u8, diff --git a/pumpkin-protocol/src/client/play/hurt_animation.rs b/pumpkin-protocol/src/client/play/hurt_animation.rs index 63c895f22..e6a7c830b 100644 --- a/pumpkin-protocol/src/client/play/hurt_animation.rs +++ b/pumpkin-protocol/src/client/play/hurt_animation.rs @@ -1,18 +1,18 @@ use pumpkin_data::packet::clientbound::PLAY_HURT_ANIMATION; -use pumpkin_macros::client_packet; -use serde::Serialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; use crate::VarInt; -#[derive(Serialize)] -#[client_packet(PLAY_HURT_ANIMATION)] -pub struct CHurtAnimation<'a> { - entity_id: &'a VarInt, +#[derive(Serialize, Deserialize)] +#[packet(PLAY_HURT_ANIMATION)] +pub struct CHurtAnimation { + entity_id: VarInt, yaw: f32, } -impl<'a> CHurtAnimation<'a> { - pub fn new(entity_id: &'a VarInt, yaw: f32) -> Self { +impl CHurtAnimation { + pub fn new(entity_id: VarInt, yaw: f32) -> Self { Self { entity_id, yaw } } } diff --git a/pumpkin-protocol/src/client/play/initialize_world_border.rs b/pumpkin-protocol/src/client/play/initialize_world_border.rs index 0a17ea36c..47855a3c9 100644 --- a/pumpkin-protocol/src/client/play/initialize_world_border.rs +++ b/pumpkin-protocol/src/client/play/initialize_world_border.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_INITIALIZE_BORDER; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::{VarInt, codec::var_long::VarLong}; #[derive(Serialize)] -#[client_packet(PLAY_INITIALIZE_BORDER)] +#[packet(PLAY_INITIALIZE_BORDER)] pub struct CInitializeWorldBorder { x: f64, z: f64, diff --git a/pumpkin-protocol/src/client/play/keep_alive.rs b/pumpkin-protocol/src/client/play/keep_alive.rs index 99727eddc..1fa78e6f3 100644 --- a/pumpkin-protocol/src/client/play/keep_alive.rs +++ b/pumpkin-protocol/src/client/play/keep_alive.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::PLAY_KEEP_ALIVE; -use pumpkin_macros::client_packet; -use serde::Serialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; -#[derive(Serialize)] -#[client_packet(PLAY_KEEP_ALIVE)] +#[derive(Serialize, Deserialize)] +#[packet(PLAY_KEEP_ALIVE)] pub struct CKeepAlive { keep_alive_id: i64, } diff --git a/pumpkin-protocol/src/client/play/level_event.rs b/pumpkin-protocol/src/client/play/level_event.rs index 9276dc8b7..d884ee12e 100644 --- a/pumpkin-protocol/src/client/play/level_event.rs +++ b/pumpkin-protocol/src/client/play/level_event.rs @@ -1,10 +1,10 @@ use pumpkin_data::packet::clientbound::PLAY_LEVEL_EVENT; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::math::position::BlockPos; -use serde::Serialize; +use serde::{Deserialize, Serialize}; -#[derive(Serialize)] -#[client_packet(PLAY_LEVEL_EVENT)] +#[derive(Serialize, Deserialize)] +#[packet(PLAY_LEVEL_EVENT)] pub struct CLevelEvent { event: i32, location: BlockPos, diff --git a/pumpkin-protocol/src/client/play/login.rs b/pumpkin-protocol/src/client/play/login.rs index e8db05b5b..5528fe9a1 100644 --- a/pumpkin-protocol/src/client/play/login.rs +++ b/pumpkin-protocol/src/client/play/login.rs @@ -1,13 +1,13 @@ use pumpkin_data::packet::clientbound::PLAY_LOGIN; use pumpkin_util::math::position::BlockPos; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::{VarInt, codec::identifier::Identifier}; #[derive(Serialize)] -#[client_packet(PLAY_LOGIN)] +#[packet(PLAY_LOGIN)] pub struct CLogin<'a> { entity_id: i32, is_hardcore: bool, diff --git a/pumpkin-protocol/src/client/play/open_screen.rs b/pumpkin-protocol/src/client/play/open_screen.rs index 6e9ea18de..c50fe1710 100644 --- a/pumpkin-protocol/src/client/play/open_screen.rs +++ b/pumpkin-protocol/src/client/play/open_screen.rs @@ -1,13 +1,13 @@ use pumpkin_data::packet::clientbound::PLAY_OPEN_SCREEN; use pumpkin_util::text::TextComponent; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_OPEN_SCREEN)] +#[packet(PLAY_OPEN_SCREEN)] pub struct COpenScreen<'a> { window_id: VarInt, window_type: VarInt, diff --git a/pumpkin-protocol/src/client/play/open_sign_editor.rs b/pumpkin-protocol/src/client/play/open_sign_editor.rs index 4827ccc68..f97faddc1 100644 --- a/pumpkin-protocol/src/client/play/open_sign_editor.rs +++ b/pumpkin-protocol/src/client/play/open_sign_editor.rs @@ -1,10 +1,10 @@ use pumpkin_data::packet::clientbound::PLAY_OPEN_SIGN_EDITOR; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::math::position::BlockPos; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_OPEN_SIGN_EDITOR)] +#[packet(PLAY_OPEN_SIGN_EDITOR)] pub struct COpenSignEditor { location: BlockPos, is_front_text: bool, diff --git a/pumpkin-protocol/src/client/play/particle.rs b/pumpkin-protocol/src/client/play/particle.rs index 0b35aca01..c5d8d1993 100644 --- a/pumpkin-protocol/src/client/play/particle.rs +++ b/pumpkin-protocol/src/client/play/particle.rs @@ -1,12 +1,12 @@ use pumpkin_data::packet::clientbound::PLAY_LEVEL_PARTICLES; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::math::vector3::Vector3; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_LEVEL_PARTICLES)] +#[packet(PLAY_LEVEL_PARTICLES)] pub struct CParticle<'a> { force_spawn: bool, /// If true, particle distance increases from 256 to 65536. diff --git a/pumpkin-protocol/src/client/play/ping_response.rs b/pumpkin-protocol/src/client/play/ping_response.rs index 5c8891586..65a049801 100644 --- a/pumpkin-protocol/src/client/play/ping_response.rs +++ b/pumpkin-protocol/src/client/play/ping_response.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::PLAY_PONG_RESPONSE; -use pumpkin_macros::client_packet; -use serde::Serialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; -#[derive(Serialize)] -#[client_packet(PLAY_PONG_RESPONSE)] +#[derive(Serialize, Deserialize)] +#[packet(PLAY_PONG_RESPONSE)] pub struct CPingResponse { payload: i64, } diff --git a/pumpkin-protocol/src/client/play/player_abilities.rs b/pumpkin-protocol/src/client/play/player_abilities.rs index 1f8e287db..d453227a3 100644 --- a/pumpkin-protocol/src/client/play/player_abilities.rs +++ b/pumpkin-protocol/src/client/play/player_abilities.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::PLAY_PLAYER_ABILITIES; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_PLAYER_ABILITIES)] +#[packet(PLAY_PLAYER_ABILITIES)] pub struct CPlayerAbilities { flags: i8, flying_speed: f32, diff --git a/pumpkin-protocol/src/client/play/player_chat_message.rs b/pumpkin-protocol/src/client/play/player_chat_message.rs index 9387e4c56..44a31f6da 100644 --- a/pumpkin-protocol/src/client/play/player_chat_message.rs +++ b/pumpkin-protocol/src/client/play/player_chat_message.rs @@ -1,13 +1,13 @@ use pumpkin_data::packet::clientbound::PLAY_PLAYER_CHAT; use pumpkin_util::text::TextComponent; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::{VarInt, codec::bit_set::BitSet}; #[derive(Serialize)] -#[client_packet(PLAY_PLAYER_CHAT)] +#[packet(PLAY_PLAYER_CHAT)] pub struct CPlayerChatMessage<'a> { #[serde(with = "uuid::serde::compact")] sender: uuid::Uuid, diff --git a/pumpkin-protocol/src/client/play/player_info_update.rs b/pumpkin-protocol/src/client/play/player_info_update.rs index 0d0bc5183..47896dbc2 100644 --- a/pumpkin-protocol/src/client/play/player_info_update.rs +++ b/pumpkin-protocol/src/client/play/player_info_update.rs @@ -1,12 +1,12 @@ use bytes::BufMut; use pumpkin_data::packet::clientbound::PLAY_PLAYER_INFO_UPDATE; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use crate::{ClientPacket, Property, bytebuf::ByteBufMut}; use super::PlayerAction; -#[client_packet(PLAY_PLAYER_INFO_UPDATE)] +#[packet(PLAY_PLAYER_INFO_UPDATE)] pub struct CPlayerInfoUpdate<'a> { pub actions: i8, pub players: &'a [Player<'a>], diff --git a/pumpkin-protocol/src/client/play/player_position.rs b/pumpkin-protocol/src/client/play/player_position.rs index af89ecfeb..4e7f1651b 100644 --- a/pumpkin-protocol/src/client/play/player_position.rs +++ b/pumpkin-protocol/src/client/play/player_position.rs @@ -1,11 +1,11 @@ use bytes::BufMut; use pumpkin_data::packet::clientbound::PLAY_PLAYER_POSITION; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::math::vector3::Vector3; use crate::{ClientPacket, PositionFlag, VarInt, bytebuf::ByteBufMut}; -#[client_packet(PLAY_PLAYER_POSITION)] +#[packet(PLAY_PLAYER_POSITION)] pub struct CPlayerPosition<'a> { teleport_id: VarInt, position: Vector3, diff --git a/pumpkin-protocol/src/client/play/player_remove.rs b/pumpkin-protocol/src/client/play/player_remove.rs index 22aa52afc..0eba59792 100644 --- a/pumpkin-protocol/src/client/play/player_remove.rs +++ b/pumpkin-protocol/src/client/play/player_remove.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_PLAYER_INFO_REMOVE; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::{Serialize, ser::SerializeSeq}; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_PLAYER_INFO_REMOVE)] +#[packet(PLAY_PLAYER_INFO_REMOVE)] pub struct CRemovePlayerInfo<'a> { players_count: VarInt, #[serde(serialize_with = "serialize_slice_uuids")] diff --git a/pumpkin-protocol/src/client/play/remove_entities.rs b/pumpkin-protocol/src/client/play/remove_entities.rs index 2b5f38016..5979ee90d 100644 --- a/pumpkin-protocol/src/client/play/remove_entities.rs +++ b/pumpkin-protocol/src/client/play/remove_entities.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_REMOVE_ENTITIES; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_REMOVE_ENTITIES)] +#[packet(PLAY_REMOVE_ENTITIES)] pub struct CRemoveEntities<'a> { count: VarInt, entity_ids: &'a [VarInt], diff --git a/pumpkin-protocol/src/client/play/reset_score.rs b/pumpkin-protocol/src/client/play/reset_score.rs index d9c7e6707..35990260a 100644 --- a/pumpkin-protocol/src/client/play/reset_score.rs +++ b/pumpkin-protocol/src/client/play/reset_score.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::PLAY_RESET_SCORE; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_RESET_SCORE)] +#[packet(PLAY_RESET_SCORE)] pub struct CResetScore { entity_name: String, objective_name: Option, diff --git a/pumpkin-protocol/src/client/play/respawn.rs b/pumpkin-protocol/src/client/play/respawn.rs index 61bfa9ce5..d2860b9a4 100644 --- a/pumpkin-protocol/src/client/play/respawn.rs +++ b/pumpkin-protocol/src/client/play/respawn.rs @@ -1,12 +1,12 @@ use pumpkin_data::packet::clientbound::PLAY_RESPAWN; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::math::position::BlockPos; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use crate::{VarInt, codec::identifier::Identifier}; -#[derive(Serialize)] -#[client_packet(PLAY_RESPAWN)] +#[derive(Serialize, Deserialize)] +#[packet(PLAY_RESPAWN)] pub struct CRespawn { dimension_type: VarInt, dimension_name: Identifier, diff --git a/pumpkin-protocol/src/client/play/server_links.rs b/pumpkin-protocol/src/client/play/server_links.rs index 566e90ce5..8e0d53bb5 100644 --- a/pumpkin-protocol/src/client/play/server_links.rs +++ b/pumpkin-protocol/src/client/play/server_links.rs @@ -1,10 +1,10 @@ use crate::{Link, VarInt}; use pumpkin_data::packet::clientbound::PLAY_SERVER_LINKS; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_SERVER_LINKS)] +#[packet(PLAY_SERVER_LINKS)] pub struct CPlayServerLinks<'a> { links_count: &'a VarInt, links: &'a [Link<'a>], diff --git a/pumpkin-protocol/src/client/play/set_border_center.rs b/pumpkin-protocol/src/client/play/set_border_center.rs index f4df21066..4eebd8b5c 100644 --- a/pumpkin-protocol/src/client/play/set_border_center.rs +++ b/pumpkin-protocol/src/client/play/set_border_center.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::PLAY_SET_BORDER_CENTER; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_SET_BORDER_CENTER)] +#[packet(PLAY_SET_BORDER_CENTER)] pub struct CSetBorderCenter { x: f64, z: f64, diff --git a/pumpkin-protocol/src/client/play/set_border_lerp_size.rs b/pumpkin-protocol/src/client/play/set_border_lerp_size.rs index e768d10ea..4f9e42f4e 100644 --- a/pumpkin-protocol/src/client/play/set_border_lerp_size.rs +++ b/pumpkin-protocol/src/client/play/set_border_lerp_size.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_SET_BORDER_LERP_SIZE; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::codec::var_long::VarLong; #[derive(Serialize)] -#[client_packet(PLAY_SET_BORDER_LERP_SIZE)] +#[packet(PLAY_SET_BORDER_LERP_SIZE)] pub struct CSetBorderLerpSize { old_diameter: f64, new_diameter: f64, diff --git a/pumpkin-protocol/src/client/play/set_border_size.rs b/pumpkin-protocol/src/client/play/set_border_size.rs index 9a1193dd0..8eab207ed 100644 --- a/pumpkin-protocol/src/client/play/set_border_size.rs +++ b/pumpkin-protocol/src/client/play/set_border_size.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::PLAY_SET_BORDER_SIZE; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_SET_BORDER_SIZE)] +#[packet(PLAY_SET_BORDER_SIZE)] pub struct CSetBorderSize { diameter: f64, } diff --git a/pumpkin-protocol/src/client/play/set_border_warning_delay.rs b/pumpkin-protocol/src/client/play/set_border_warning_delay.rs index c74475e8c..5e0d2b13d 100644 --- a/pumpkin-protocol/src/client/play/set_border_warning_delay.rs +++ b/pumpkin-protocol/src/client/play/set_border_warning_delay.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_SET_BORDER_WARNING_DELAY; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_SET_BORDER_WARNING_DELAY)] +#[packet(PLAY_SET_BORDER_WARNING_DELAY)] pub struct CSetBorderWarningDelay { warning_time: VarInt, } diff --git a/pumpkin-protocol/src/client/play/set_border_warning_distance.rs b/pumpkin-protocol/src/client/play/set_border_warning_distance.rs index 5d8be60da..fa8e0926d 100644 --- a/pumpkin-protocol/src/client/play/set_border_warning_distance.rs +++ b/pumpkin-protocol/src/client/play/set_border_warning_distance.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_SET_BORDER_WARNING_DISTANCE; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_SET_BORDER_WARNING_DISTANCE)] +#[packet(PLAY_SET_BORDER_WARNING_DISTANCE)] pub struct CSetBorderWarningDistance { warning_blocks: VarInt, } diff --git a/pumpkin-protocol/src/client/play/set_container_content.rs b/pumpkin-protocol/src/client/play/set_container_content.rs index 9aab6ded1..c9b104efa 100644 --- a/pumpkin-protocol/src/client/play/set_container_content.rs +++ b/pumpkin-protocol/src/client/play/set_container_content.rs @@ -2,11 +2,11 @@ use crate::VarInt; use crate::codec::slot::Slot; use pumpkin_data::packet::clientbound::PLAY_CONTAINER_SET_CONTENT; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_CONTAINER_SET_CONTENT)] +#[packet(PLAY_CONTAINER_SET_CONTENT)] pub struct CSetContainerContent<'a> { window_id: VarInt, state_id: VarInt, diff --git a/pumpkin-protocol/src/client/play/set_container_property.rs b/pumpkin-protocol/src/client/play/set_container_property.rs index 06924b80d..c8a8d195c 100644 --- a/pumpkin-protocol/src/client/play/set_container_property.rs +++ b/pumpkin-protocol/src/client/play/set_container_property.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_CONTAINER_SET_DATA; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_CONTAINER_SET_DATA)] +#[packet(PLAY_CONTAINER_SET_DATA)] pub struct CSetContainerProperty { window_id: VarInt, property: i16, diff --git a/pumpkin-protocol/src/client/play/set_container_slot.rs b/pumpkin-protocol/src/client/play/set_container_slot.rs index d8a5ff0b0..22bb3bbc2 100644 --- a/pumpkin-protocol/src/client/play/set_container_slot.rs +++ b/pumpkin-protocol/src/client/play/set_container_slot.rs @@ -2,11 +2,11 @@ use crate::VarInt; use crate::codec::slot::Slot; use pumpkin_data::packet::clientbound::PLAY_CONTAINER_SET_SLOT; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_CONTAINER_SET_SLOT)] +#[packet(PLAY_CONTAINER_SET_SLOT)] pub struct CSetContainerSlot<'a> { window_id: i8, state_id: VarInt, diff --git a/pumpkin-protocol/src/client/play/set_equipment.rs b/pumpkin-protocol/src/client/play/set_equipment.rs index ec79e4415..a38e8a0d9 100644 --- a/pumpkin-protocol/src/client/play/set_equipment.rs +++ b/pumpkin-protocol/src/client/play/set_equipment.rs @@ -1,7 +1,7 @@ use crate::bytebuf::{ByteBufMut, serializer::Serializer}; use bytes::BytesMut; use pumpkin_data::packet::clientbound::PLAY_SET_EQUIPMENT; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::{ @@ -9,7 +9,7 @@ use crate::{ codec::{slot::Slot, var_int::VarInt}, }; -#[client_packet(PLAY_SET_EQUIPMENT)] +#[packet(PLAY_SET_EQUIPMENT)] pub struct CSetEquipment { entity_id: VarInt, equipment: Vec<(EquipmentSlot, Slot)>, diff --git a/pumpkin-protocol/src/client/play/set_experience.rs b/pumpkin-protocol/src/client/play/set_experience.rs index 0e565a565..692249100 100644 --- a/pumpkin-protocol/src/client/play/set_experience.rs +++ b/pumpkin-protocol/src/client/play/set_experience.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_SET_EXPERIENCE; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_SET_EXPERIENCE)] +#[packet(PLAY_SET_EXPERIENCE)] pub struct CSetExperience { progress: f32, level: VarInt, diff --git a/pumpkin-protocol/src/client/play/set_health.rs b/pumpkin-protocol/src/client/play/set_health.rs index 4384ce628..e60735506 100644 --- a/pumpkin-protocol/src/client/play/set_health.rs +++ b/pumpkin-protocol/src/client/play/set_health.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_SET_HEALTH; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_SET_HEALTH)] +#[packet(PLAY_SET_HEALTH)] pub struct CSetHealth { health: f32, food: VarInt, diff --git a/pumpkin-protocol/src/client/play/set_held_item.rs b/pumpkin-protocol/src/client/play/set_held_item.rs index 8e8ba6d0a..1643d15f8 100644 --- a/pumpkin-protocol/src/client/play/set_held_item.rs +++ b/pumpkin-protocol/src/client/play/set_held_item.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::PLAY_SET_HELD_SLOT; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_SET_HELD_SLOT)] +#[packet(PLAY_SET_HELD_SLOT)] pub struct CSetHeldItem { slot: i8, } diff --git a/pumpkin-protocol/src/client/play/set_time.rs b/pumpkin-protocol/src/client/play/set_time.rs index e432796e5..b7b744945 100644 --- a/pumpkin-protocol/src/client/play/set_time.rs +++ b/pumpkin-protocol/src/client/play/set_time.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::PLAY_SET_TIME; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_SET_TIME)] +#[packet(PLAY_SET_TIME)] pub struct CUpdateTime { world_age: i64, time_of_day: i64, diff --git a/pumpkin-protocol/src/client/play/set_title.rs b/pumpkin-protocol/src/client/play/set_title.rs index f9a2254b4..2d02abbc0 100644 --- a/pumpkin-protocol/src/client/play/set_title.rs +++ b/pumpkin-protocol/src/client/play/set_title.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_SET_TITLE_TEXT; use pumpkin_util::text::TextComponent; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_SET_TITLE_TEXT)] +#[packet(PLAY_SET_TITLE_TEXT)] pub struct CTitleText<'a> { title: &'a TextComponent, } diff --git a/pumpkin-protocol/src/client/play/sound_effect.rs b/pumpkin-protocol/src/client/play/sound_effect.rs index 80f2841fd..3ff6c8090 100644 --- a/pumpkin-protocol/src/client/play/sound_effect.rs +++ b/pumpkin-protocol/src/client/play/sound_effect.rs @@ -1,11 +1,11 @@ use bytes::BufMut; use pumpkin_data::{packet::clientbound::PLAY_SOUND, sound::SoundCategory}; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::math::vector3::Vector3; use crate::{ClientPacket, IDOrSoundEvent, SoundEvent, VarInt, bytebuf::ByteBufMut}; -#[client_packet(PLAY_SOUND)] +#[packet(PLAY_SOUND)] pub struct CSoundEffect { sound_event: IDOrSoundEvent, sound_category: VarInt, diff --git a/pumpkin-protocol/src/client/play/spawn_entity.rs b/pumpkin-protocol/src/client/play/spawn_entity.rs index 8527c734d..aaaea77cb 100644 --- a/pumpkin-protocol/src/client/play/spawn_entity.rs +++ b/pumpkin-protocol/src/client/play/spawn_entity.rs @@ -1,12 +1,12 @@ use pumpkin_data::packet::clientbound::PLAY_ADD_ENTITY; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::math::vector3::Vector3; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_ADD_ENTITY)] +#[packet(PLAY_ADD_ENTITY)] pub struct CSpawnEntity { entity_id: VarInt, #[serde(with = "uuid::serde::compact")] diff --git a/pumpkin-protocol/src/client/play/store_cookie.rs b/pumpkin-protocol/src/client/play/store_cookie.rs index e8a52317b..077ab36c2 100644 --- a/pumpkin-protocol/src/client/play/store_cookie.rs +++ b/pumpkin-protocol/src/client/play/store_cookie.rs @@ -1,12 +1,12 @@ use crate::{VarInt, codec::identifier::Identifier}; use pumpkin_data::packet::clientbound::PLAY_STORE_COOKIE; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; /// Stores some arbitrary data on the client, which persists between server transfers. /// The Notchian client only accepts cookies of up to 5 kiB in size. #[derive(Serialize)] -#[client_packet(PLAY_STORE_COOKIE)] +#[packet(PLAY_STORE_COOKIE)] pub struct CStoreCookie<'a> { key: &'a Identifier, payload_length: VarInt, diff --git a/pumpkin-protocol/src/client/play/subtitle.rs b/pumpkin-protocol/src/client/play/subtitle.rs index 8953eaf32..c5c9528ab 100644 --- a/pumpkin-protocol/src/client/play/subtitle.rs +++ b/pumpkin-protocol/src/client/play/subtitle.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_SET_SUBTITLE_TEXT; use pumpkin_util::text::TextComponent; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_SET_SUBTITLE_TEXT)] +#[packet(PLAY_SET_SUBTITLE_TEXT)] pub struct CSubtitle<'a> { subtitle: &'a TextComponent, } diff --git a/pumpkin-protocol/src/client/play/system_chat_message.rs b/pumpkin-protocol/src/client/play/system_chat_message.rs index 054240241..99356bf7a 100644 --- a/pumpkin-protocol/src/client/play/system_chat_message.rs +++ b/pumpkin-protocol/src/client/play/system_chat_message.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_SYSTEM_CHAT; use pumpkin_util::text::TextComponent; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_SYSTEM_CHAT)] +#[packet(PLAY_SYSTEM_CHAT)] pub struct CSystemChatMessage<'a> { content: &'a TextComponent, overlay: bool, diff --git a/pumpkin-protocol/src/client/play/take_item.rs b/pumpkin-protocol/src/client/play/take_item.rs index 4366a7684..aada9f184 100644 --- a/pumpkin-protocol/src/client/play/take_item.rs +++ b/pumpkin-protocol/src/client/play/take_item.rs @@ -1,10 +1,10 @@ use crate::VarInt; use pumpkin_data::packet::clientbound::PLAY_TAKE_ITEM_ENTITY; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_TAKE_ITEM_ENTITY)] +#[packet(PLAY_TAKE_ITEM_ENTITY)] pub struct CTakeItemEntity { /// The Entity ID of the Item Entity entity_id: VarInt, diff --git a/pumpkin-protocol/src/client/play/teleport_entity.rs b/pumpkin-protocol/src/client/play/teleport_entity.rs index 85b7fa969..51d07ce9e 100644 --- a/pumpkin-protocol/src/client/play/teleport_entity.rs +++ b/pumpkin-protocol/src/client/play/teleport_entity.rs @@ -1,11 +1,11 @@ use bytes::BufMut; use pumpkin_data::packet::clientbound::PLAY_TELEPORT_ENTITY; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::math::vector3::Vector3; use crate::{ClientPacket, PositionFlag, VarInt, bytebuf::ByteBufMut}; -#[client_packet(PLAY_TELEPORT_ENTITY)] +#[packet(PLAY_TELEPORT_ENTITY)] pub struct CTeleportEntity<'a> { entity_id: VarInt, position: Vector3, diff --git a/pumpkin-protocol/src/client/play/transfer.rs b/pumpkin-protocol/src/client/play/transfer.rs index 176859923..ae69b97ea 100644 --- a/pumpkin-protocol/src/client/play/transfer.rs +++ b/pumpkin-protocol/src/client/play/transfer.rs @@ -1,17 +1,17 @@ use crate::VarInt; use pumpkin_data::packet::clientbound::PLAY_TRANSFER; -use pumpkin_macros::client_packet; -use serde::Serialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; -#[derive(Serialize)] -#[client_packet(PLAY_TRANSFER)] +#[derive(Serialize, Deserialize)] +#[packet(PLAY_TRANSFER)] pub struct CTransfer<'a> { host: &'a str, - port: &'a VarInt, + port: VarInt, } impl<'a> CTransfer<'a> { - pub fn new(host: &'a str, port: &'a VarInt) -> Self { + pub fn new(host: &'a str, port: VarInt) -> Self { Self { host, port } } } diff --git a/pumpkin-protocol/src/client/play/unload_chunk.rs b/pumpkin-protocol/src/client/play/unload_chunk.rs index 582ba4877..8f0e6e2a6 100644 --- a/pumpkin-protocol/src/client/play/unload_chunk.rs +++ b/pumpkin-protocol/src/client/play/unload_chunk.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::PLAY_FORGET_LEVEL_CHUNK; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_FORGET_LEVEL_CHUNK)] +#[packet(PLAY_FORGET_LEVEL_CHUNK)] pub struct CUnloadChunk { z: i32, x: i32, diff --git a/pumpkin-protocol/src/client/play/update_entity_pos.rs b/pumpkin-protocol/src/client/play/update_entity_pos.rs index 1453e7f9c..041ca554b 100644 --- a/pumpkin-protocol/src/client/play/update_entity_pos.rs +++ b/pumpkin-protocol/src/client/play/update_entity_pos.rs @@ -1,12 +1,12 @@ use pumpkin_data::packet::clientbound::PLAY_MOVE_ENTITY_POS; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::math::vector3::Vector3; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_MOVE_ENTITY_POS)] +#[packet(PLAY_MOVE_ENTITY_POS)] pub struct CUpdateEntityPos { entity_id: VarInt, delta: Vector3, diff --git a/pumpkin-protocol/src/client/play/update_entity_pos_rot.rs b/pumpkin-protocol/src/client/play/update_entity_pos_rot.rs index eb631fcec..1bfce165d 100644 --- a/pumpkin-protocol/src/client/play/update_entity_pos_rot.rs +++ b/pumpkin-protocol/src/client/play/update_entity_pos_rot.rs @@ -1,12 +1,12 @@ use pumpkin_data::packet::clientbound::PLAY_MOVE_ENTITY_POS_ROT; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::math::vector3::Vector3; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_MOVE_ENTITY_POS_ROT)] +#[packet(PLAY_MOVE_ENTITY_POS_ROT)] pub struct CUpdateEntityPosRot { entity_id: VarInt, delta: Vector3, diff --git a/pumpkin-protocol/src/client/play/update_entity_rot.rs b/pumpkin-protocol/src/client/play/update_entity_rot.rs index b0377b695..caaced687 100644 --- a/pumpkin-protocol/src/client/play/update_entity_rot.rs +++ b/pumpkin-protocol/src/client/play/update_entity_rot.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_MOVE_ENTITY_ROT; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_MOVE_ENTITY_ROT)] +#[packet(PLAY_MOVE_ENTITY_ROT)] pub struct CUpdateEntityRot { entity_id: VarInt, yaw: u8, diff --git a/pumpkin-protocol/src/client/play/update_mob_effect.rs b/pumpkin-protocol/src/client/play/update_mob_effect.rs index c447d52a1..10ed5c4eb 100644 --- a/pumpkin-protocol/src/client/play/update_mob_effect.rs +++ b/pumpkin-protocol/src/client/play/update_mob_effect.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_UPDATE_MOB_EFFECT; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::codec::var_int::VarInt; #[derive(Serialize)] -#[client_packet(PLAY_UPDATE_MOB_EFFECT)] +#[packet(PLAY_UPDATE_MOB_EFFECT)] pub struct CUpdateMobEffect { entity_id: VarInt, effect_id: VarInt, diff --git a/pumpkin-protocol/src/client/play/update_objectives.rs b/pumpkin-protocol/src/client/play/update_objectives.rs index b6159d4e3..12069480b 100644 --- a/pumpkin-protocol/src/client/play/update_objectives.rs +++ b/pumpkin-protocol/src/client/play/update_objectives.rs @@ -1,11 +1,11 @@ use bytes::BufMut; use pumpkin_data::packet::clientbound::PLAY_SET_OBJECTIVE; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use pumpkin_util::text::TextComponent; use crate::{ClientPacket, NumberFormat, VarInt, bytebuf::ByteBufMut}; -#[client_packet(PLAY_SET_OBJECTIVE)] +#[packet(PLAY_SET_OBJECTIVE)] pub struct CUpdateObjectives<'a> { objective_name: &'a str, mode: u8, diff --git a/pumpkin-protocol/src/client/play/update_score.rs b/pumpkin-protocol/src/client/play/update_score.rs index d02a2bc09..bcad77c01 100644 --- a/pumpkin-protocol/src/client/play/update_score.rs +++ b/pumpkin-protocol/src/client/play/update_score.rs @@ -1,13 +1,13 @@ use pumpkin_data::packet::clientbound::PLAY_SET_SCORE; use pumpkin_util::text::TextComponent; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; use crate::{NumberFormat, VarInt}; #[derive(Serialize)] -#[client_packet(PLAY_SET_SCORE)] +#[packet(PLAY_SET_SCORE)] pub struct CUpdateScore<'a> { entity_name: &'a str, objective_name: &'a str, diff --git a/pumpkin-protocol/src/client/play/worldevent.rs b/pumpkin-protocol/src/client/play/worldevent.rs index c708bc9af..5da0922e2 100644 --- a/pumpkin-protocol/src/client/play/worldevent.rs +++ b/pumpkin-protocol/src/client/play/worldevent.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::clientbound::PLAY_LEVEL_EVENT; use pumpkin_util::math::position::BlockPos; -use pumpkin_macros::client_packet; +use pumpkin_macros::packet; use serde::Serialize; #[derive(Serialize)] -#[client_packet(PLAY_LEVEL_EVENT)] +#[packet(PLAY_LEVEL_EVENT)] pub struct CWorldEvent<'a> { event: i32, location: &'a BlockPos, diff --git a/pumpkin-protocol/src/client/status/ping_response.rs b/pumpkin-protocol/src/client/status/ping_response.rs index 1929a168d..ccba6de91 100644 --- a/pumpkin-protocol/src/client/status/ping_response.rs +++ b/pumpkin-protocol/src/client/status/ping_response.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::STATUS_PONG_RESPONSE; -use pumpkin_macros::client_packet; -use serde::Serialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; -#[derive(Serialize)] -#[client_packet(STATUS_PONG_RESPONSE)] +#[derive(Serialize, Deserialize)] +#[packet(STATUS_PONG_RESPONSE)] pub struct CPingResponse { payload: i64, // must respond with the same as in `SPingRequest` } diff --git a/pumpkin-protocol/src/client/status/status_response.rs b/pumpkin-protocol/src/client/status/status_response.rs index 2d918e9f4..51b197eee 100644 --- a/pumpkin-protocol/src/client/status/status_response.rs +++ b/pumpkin-protocol/src/client/status/status_response.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::clientbound::STATUS_STATUS_RESPONSE; -use pumpkin_macros::client_packet; -use serde::Serialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; -#[derive(Serialize)] -#[client_packet(STATUS_STATUS_RESPONSE)] +#[derive(Serialize, Deserialize)] +#[packet(STATUS_STATUS_RESPONSE)] pub struct CStatusResponse<'a> { json_response: &'a str, // 32767 } diff --git a/pumpkin-protocol/src/packet_encoder.rs b/pumpkin-protocol/src/packet_encoder.rs index baa040a57..a272083a8 100644 --- a/pumpkin-protocol/src/packet_encoder.rs +++ b/pumpkin-protocol/src/packet_encoder.rs @@ -222,12 +222,12 @@ mod tests { use cfb8::cipher::AsyncStreamCipher; use libdeflater::{DecompressionError, Decompressor}; use pumpkin_data::packet::clientbound::STATUS_STATUS_RESPONSE; - use pumpkin_macros::client_packet; + use pumpkin_macros::packet; use serde::Serialize; /// Define a custom packet for testing maximum packet size #[derive(Serialize)] - #[client_packet(STATUS_STATUS_RESPONSE)] + #[packet(STATUS_STATUS_RESPONSE)] pub struct MaxSizePacket { data: Vec, } diff --git a/pumpkin-protocol/src/server/config/acknowledge_finish_config.rs b/pumpkin-protocol/src/server/config/acknowledge_finish_config.rs index d57d7d130..e4c9c945a 100644 --- a/pumpkin-protocol/src/server/config/acknowledge_finish_config.rs +++ b/pumpkin-protocol/src/server/config/acknowledge_finish_config.rs @@ -1,6 +1,7 @@ use pumpkin_data::packet::serverbound::CONFIG_FINISH_CONFIGURATION; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; +use serde::Serialize; -#[derive(serde::Deserialize)] -#[server_packet(CONFIG_FINISH_CONFIGURATION)] -pub struct SAcknowledgeFinishConfig {} +#[derive(Serialize)] +#[packet(CONFIG_FINISH_CONFIGURATION)] +pub struct SAcknowledgeFinishConfig; diff --git a/pumpkin-protocol/src/server/config/client_information.rs b/pumpkin-protocol/src/server/config/client_information.rs index 0274128ba..19d21acf4 100644 --- a/pumpkin-protocol/src/server/config/client_information.rs +++ b/pumpkin-protocol/src/server/config/client_information.rs @@ -1,10 +1,11 @@ use pumpkin_data::packet::serverbound::CONFIG_CLIENT_INFORMATION; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; +use serde::Serialize; use crate::VarInt; -#[derive(serde::Deserialize)] -#[server_packet(CONFIG_CLIENT_INFORMATION)] +#[derive(serde::Deserialize, Serialize)] +#[packet(CONFIG_CLIENT_INFORMATION)] pub struct SClientInformationConfig { pub locale: String, // 16 pub view_distance: i8, diff --git a/pumpkin-protocol/src/server/config/cookie_response.rs b/pumpkin-protocol/src/server/config/cookie_response.rs index 771ecc392..ae80e766f 100644 --- a/pumpkin-protocol/src/server/config/cookie_response.rs +++ b/pumpkin-protocol/src/server/config/cookie_response.rs @@ -1,6 +1,6 @@ use bytes::Buf; use pumpkin_data::packet::serverbound::CONFIG_COOKIE_RESPONSE; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use crate::{ ServerPacket, VarInt, @@ -8,7 +8,7 @@ use crate::{ codec::identifier::Identifier, }; -#[server_packet(CONFIG_COOKIE_RESPONSE)] +#[packet(CONFIG_COOKIE_RESPONSE)] /// Response to a Cookie Request (configuration) from the server. /// The Notchian (vanilla) server only accepts responses of up to 5 kiB in size. pub struct SConfigCookieResponse { diff --git a/pumpkin-protocol/src/server/config/known_packs.rs b/pumpkin-protocol/src/server/config/known_packs.rs index 4e10cc9ea..22b165dd3 100644 --- a/pumpkin-protocol/src/server/config/known_packs.rs +++ b/pumpkin-protocol/src/server/config/known_packs.rs @@ -1,10 +1,11 @@ use pumpkin_data::packet::serverbound::CONFIG_SELECT_KNOWN_PACKS; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; +use serde::Serialize; use crate::VarInt; -#[derive(serde::Deserialize)] -#[server_packet(CONFIG_SELECT_KNOWN_PACKS)] +#[derive(serde::Deserialize, Serialize)] +#[packet(CONFIG_SELECT_KNOWN_PACKS)] pub struct SKnownPacks { pub known_pack_count: VarInt, // known_packs: &'a [KnownPack] diff --git a/pumpkin-protocol/src/server/config/plugin_message.rs b/pumpkin-protocol/src/server/config/plugin_message.rs index 71fa7de8c..34d1f8cae 100644 --- a/pumpkin-protocol/src/server/config/plugin_message.rs +++ b/pumpkin-protocol/src/server/config/plugin_message.rs @@ -1,6 +1,6 @@ use bytes::Buf; use pumpkin_data::packet::serverbound::CONFIG_CUSTOM_PAYLOAD; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use crate::{ ServerPacket, @@ -9,7 +9,7 @@ use crate::{ }; const MAX_PAYLOAD_SIZE: usize = 1048576; -#[server_packet(CONFIG_CUSTOM_PAYLOAD)] +#[packet(CONFIG_CUSTOM_PAYLOAD)] pub struct SPluginMessage { pub channel: Identifier, pub data: bytes::Bytes, diff --git a/pumpkin-protocol/src/server/handshake/mod.rs b/pumpkin-protocol/src/server/handshake/mod.rs index c12784acd..db3d5bb3d 100644 --- a/pumpkin-protocol/src/server/handshake/mod.rs +++ b/pumpkin-protocol/src/server/handshake/mod.rs @@ -1,13 +1,13 @@ -use bytes::Buf; -use pumpkin_data::packet::serverbound::HANDSHAKE_INTENTION; -use pumpkin_macros::server_packet; - +use crate::bytebuf::ByteBufMut; use crate::{ - ConnectionState, ServerPacket, VarInt, + ClientPacket, ConnectionState, ServerPacket, VarInt, bytebuf::{ByteBuf, ReadingError}, }; +use bytes::Buf; +use pumpkin_data::packet::serverbound::HANDSHAKE_INTENTION; +use pumpkin_macros::packet; -#[server_packet(HANDSHAKE_INTENTION)] +#[packet(HANDSHAKE_INTENTION)] pub struct SHandShake { pub protocol_version: VarInt, pub server_address: String, // 255 @@ -15,6 +15,15 @@ pub struct SHandShake { pub next_state: ConnectionState, } +impl ClientPacket for SHandShake { + fn write(&self, bytebuf: &mut impl bytes::BufMut) { + bytebuf.put_var_int(&self.protocol_version); + bytebuf.put_string_len(&self.server_address, 255); + bytebuf.put_u16(self.server_port); + bytebuf.put_var_int(&VarInt(self.next_state as i32)); + } +} + impl ServerPacket for SHandShake { fn read(bytebuf: &mut impl Buf) -> Result { Ok(Self { diff --git a/pumpkin-protocol/src/server/login/cookie_response.rs b/pumpkin-protocol/src/server/login/cookie_response.rs index f705d35d6..7f536e9ce 100644 --- a/pumpkin-protocol/src/server/login/cookie_response.rs +++ b/pumpkin-protocol/src/server/login/cookie_response.rs @@ -5,9 +5,9 @@ use crate::{ }; use bytes::Buf; use pumpkin_data::packet::serverbound::LOGIN_COOKIE_RESPONSE; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; -#[server_packet(LOGIN_COOKIE_RESPONSE)] +#[packet(LOGIN_COOKIE_RESPONSE)] /// Response to a Cookie Request (login) from the server. /// The Notchian server only accepts responses of up to 5 kiB in size. pub struct SLoginCookieResponse { diff --git a/pumpkin-protocol/src/server/login/encryption_response.rs b/pumpkin-protocol/src/server/login/encryption_response.rs index 7d883a52d..0e481d8b5 100644 --- a/pumpkin-protocol/src/server/login/encryption_response.rs +++ b/pumpkin-protocol/src/server/login/encryption_response.rs @@ -1,13 +1,13 @@ use bytes::Buf; use pumpkin_data::packet::serverbound::LOGIN_KEY; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use crate::{ ServerPacket, VarInt, bytebuf::{ByteBuf, ReadingError}, }; -#[server_packet(LOGIN_KEY)] +#[packet(LOGIN_KEY)] pub struct SEncryptionResponse { pub shared_secret_length: VarInt, pub shared_secret: bytes::Bytes, diff --git a/pumpkin-protocol/src/server/login/login_response.rs b/pumpkin-protocol/src/server/login/login_response.rs index 45c79871d..58731fa0d 100644 --- a/pumpkin-protocol/src/server/login/login_response.rs +++ b/pumpkin-protocol/src/server/login/login_response.rs @@ -1,7 +1,8 @@ use pumpkin_data::packet::serverbound::LOGIN_LOGIN_ACKNOWLEDGED; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; +use serde::Serialize; -// Acknowledgement to the Login Success packet sent to the server. -#[derive(serde::Deserialize)] -#[server_packet(LOGIN_LOGIN_ACKNOWLEDGED)] -pub struct SLoginAcknowledged {} +/// Acknowledgement to the Login Success packet sent to the server. +#[derive(Serialize)] +#[packet(LOGIN_LOGIN_ACKNOWLEDGED)] +pub struct SLoginAcknowledged; diff --git a/pumpkin-protocol/src/server/login/login_start.rs b/pumpkin-protocol/src/server/login/login_start.rs index 84ca1ed1a..a07bda3b5 100644 --- a/pumpkin-protocol/src/server/login/login_start.rs +++ b/pumpkin-protocol/src/server/login/login_start.rs @@ -1,18 +1,26 @@ +use crate::bytebuf::ByteBufMut; use bytes::Buf; use pumpkin_data::packet::serverbound::LOGIN_HELLO; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use crate::{ - ServerPacket, + ClientPacket, ServerPacket, bytebuf::{ByteBuf, ReadingError}, }; -#[server_packet(LOGIN_HELLO)] +#[packet(LOGIN_HELLO)] pub struct SLoginStart { pub name: String, // 16 pub uuid: uuid::Uuid, } +impl ClientPacket for SLoginStart { + fn write(&self, bytebuf: &mut impl bytes::BufMut) { + bytebuf.put_string_len(&self.name, 16); + bytebuf.put_uuid(&self.uuid); + } +} + impl ServerPacket for SLoginStart { fn read(bytebuf: &mut impl Buf) -> Result { Ok(Self { diff --git a/pumpkin-protocol/src/server/login/plugin_response.rs b/pumpkin-protocol/src/server/login/plugin_response.rs index a06fea453..1d731192c 100644 --- a/pumpkin-protocol/src/server/login/plugin_response.rs +++ b/pumpkin-protocol/src/server/login/plugin_response.rs @@ -4,11 +4,11 @@ use crate::{ }; use bytes::{Buf, Bytes}; use pumpkin_data::packet::serverbound::LOGIN_CUSTOM_QUERY_ANSWER; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; const MAX_PAYLOAD_SIZE: usize = 1048576; -#[server_packet(LOGIN_CUSTOM_QUERY_ANSWER)] +#[packet(LOGIN_CUSTOM_QUERY_ANSWER)] pub struct SLoginPluginResponse { pub message_id: VarInt, pub data: Option, diff --git a/pumpkin-protocol/src/server/play/chat_command.rs b/pumpkin-protocol/src/server/play/chat_command.rs index f52670dfd..510417fd8 100644 --- a/pumpkin-protocol/src/server/play/chat_command.rs +++ b/pumpkin-protocol/src/server/play/chat_command.rs @@ -1,8 +1,9 @@ use pumpkin_data::packet::serverbound::PLAY_CHAT_COMMAND; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; +use serde::Serialize; -#[derive(serde::Deserialize)] -#[server_packet(PLAY_CHAT_COMMAND)] +#[derive(serde::Deserialize, Serialize)] +#[packet(PLAY_CHAT_COMMAND)] pub struct SChatCommand { pub command: String, } diff --git a/pumpkin-protocol/src/server/play/chat_message.rs b/pumpkin-protocol/src/server/play/chat_message.rs index 20618f6c2..b349e606b 100644 --- a/pumpkin-protocol/src/server/play/chat_message.rs +++ b/pumpkin-protocol/src/server/play/chat_message.rs @@ -1,6 +1,6 @@ use bytes::{Buf, Bytes}; use pumpkin_data::packet::serverbound::PLAY_CHAT; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use crate::{ FixedBitSet, ServerPacket, VarInt, @@ -8,7 +8,7 @@ use crate::{ }; // derive(Deserialize)] -#[server_packet(PLAY_CHAT)] +#[packet(PLAY_CHAT)] pub struct SChatMessage { pub message: String, pub timestamp: i64, diff --git a/pumpkin-protocol/src/server/play/click_container.rs b/pumpkin-protocol/src/server/play/click_container.rs index bebe8d38d..a5d3c9258 100644 --- a/pumpkin-protocol/src/server/play/click_container.rs +++ b/pumpkin-protocol/src/server/play/click_container.rs @@ -1,11 +1,11 @@ use crate::VarInt; use crate::codec::slot::Slot; use pumpkin_data::packet::serverbound::PLAY_CONTAINER_CLICK; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use serde::de::SeqAccess; use serde::{Deserialize, de}; -#[server_packet(PLAY_CONTAINER_CLICK)] +#[packet(PLAY_CONTAINER_CLICK)] pub struct SClickContainer { pub window_id: VarInt, pub state_id: VarInt, diff --git a/pumpkin-protocol/src/server/play/client_command.rs b/pumpkin-protocol/src/server/play/client_command.rs index 4c8a7a0ed..9e9dce972 100644 --- a/pumpkin-protocol/src/server/play/client_command.rs +++ b/pumpkin-protocol/src/server/play/client_command.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::serverbound::PLAY_CLIENT_COMMAND; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use serde::Deserialize; use crate::VarInt; #[derive(Deserialize)] -#[server_packet(PLAY_CLIENT_COMMAND)] +#[packet(PLAY_CLIENT_COMMAND)] pub struct SClientCommand { pub action_id: VarInt, } diff --git a/pumpkin-protocol/src/server/play/client_information.rs b/pumpkin-protocol/src/server/play/client_information.rs index 898bf1590..39587a19d 100644 --- a/pumpkin-protocol/src/server/play/client_information.rs +++ b/pumpkin-protocol/src/server/play/client_information.rs @@ -1,10 +1,11 @@ use pumpkin_data::packet::serverbound::PLAY_CLIENT_INFORMATION; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; +use serde::Serialize; use crate::VarInt; -#[derive(serde::Deserialize)] -#[server_packet(PLAY_CLIENT_INFORMATION)] +#[derive(serde::Deserialize, Serialize)] +#[packet(PLAY_CLIENT_INFORMATION)] pub struct SClientInformationPlay { pub locale: String, // 16 pub view_distance: i8, diff --git a/pumpkin-protocol/src/server/play/client_tick_end.rs b/pumpkin-protocol/src/server/play/client_tick_end.rs index 2602250db..16683bb6a 100644 --- a/pumpkin-protocol/src/server/play/client_tick_end.rs +++ b/pumpkin-protocol/src/server/play/client_tick_end.rs @@ -1,6 +1,5 @@ use pumpkin_data::packet::serverbound::PLAY_CLIENT_TICK_END; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; -#[derive(serde::Deserialize)] -#[server_packet(PLAY_CLIENT_TICK_END)] -pub struct SClientTickEnd {} +#[packet(PLAY_CLIENT_TICK_END)] +pub struct SClientTickEnd; diff --git a/pumpkin-protocol/src/server/play/close_container.rs b/pumpkin-protocol/src/server/play/close_container.rs index 0f080e6db..a5b092738 100644 --- a/pumpkin-protocol/src/server/play/close_container.rs +++ b/pumpkin-protocol/src/server/play/close_container.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::serverbound::PLAY_CONTAINER_CLOSE; -use pumpkin_macros::server_packet; -use serde::Deserialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; use crate::VarInt; -#[derive(Deserialize)] -#[server_packet(PLAY_CONTAINER_CLOSE)] +#[derive(Deserialize, Serialize)] +#[packet(PLAY_CONTAINER_CLOSE)] pub struct SCloseContainer { pub window_id: VarInt, } diff --git a/pumpkin-protocol/src/server/play/command_suggestion.rs b/pumpkin-protocol/src/server/play/command_suggestion.rs index 5cd455e96..346c9f62e 100644 --- a/pumpkin-protocol/src/server/play/command_suggestion.rs +++ b/pumpkin-protocol/src/server/play/command_suggestion.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::serverbound::PLAY_COMMAND_SUGGESTION; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use serde::Deserialize; use crate::VarInt; #[derive(Deserialize)] -#[server_packet(PLAY_COMMAND_SUGGESTION)] +#[packet(PLAY_COMMAND_SUGGESTION)] pub struct SCommandSuggestion { pub id: VarInt, pub command: String, diff --git a/pumpkin-protocol/src/server/play/confirm_teleport.rs b/pumpkin-protocol/src/server/play/confirm_teleport.rs index 4909fa771..9f9b70077 100644 --- a/pumpkin-protocol/src/server/play/confirm_teleport.rs +++ b/pumpkin-protocol/src/server/play/confirm_teleport.rs @@ -1,10 +1,11 @@ use pumpkin_data::packet::serverbound::PLAY_ACCEPT_TELEPORTATION; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; +use serde::Serialize; use crate::VarInt; -#[derive(serde::Deserialize)] -#[server_packet(PLAY_ACCEPT_TELEPORTATION)] +#[derive(serde::Deserialize, Serialize)] +#[packet(PLAY_ACCEPT_TELEPORTATION)] pub struct SConfirmTeleport { pub teleport_id: VarInt, } diff --git a/pumpkin-protocol/src/server/play/cookie_response.rs b/pumpkin-protocol/src/server/play/cookie_response.rs index 5a29578e0..efe1a7bfa 100644 --- a/pumpkin-protocol/src/server/play/cookie_response.rs +++ b/pumpkin-protocol/src/server/play/cookie_response.rs @@ -5,9 +5,9 @@ use crate::{ }; use bytes::Buf; use pumpkin_data::packet::serverbound::PLAY_COOKIE_RESPONSE; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; -#[server_packet(PLAY_COOKIE_RESPONSE)] +#[packet(PLAY_COOKIE_RESPONSE)] /// Response to a Cookie Request (play) from the server. /// The Notchian (vanilla) server only accepts responses of up to 5 kiB in size. pub struct SCookieResponse { diff --git a/pumpkin-protocol/src/server/play/interact.rs b/pumpkin-protocol/src/server/play/interact.rs index 3373176d8..17e4fac47 100644 --- a/pumpkin-protocol/src/server/play/interact.rs +++ b/pumpkin-protocol/src/server/play/interact.rs @@ -1,6 +1,6 @@ use bytes::Buf; use pumpkin_data::packet::serverbound::PLAY_INTERACT; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use pumpkin_util::math::vector3::Vector3; use crate::{ @@ -8,7 +8,7 @@ use crate::{ bytebuf::{ByteBuf, ReadingError}, }; -#[server_packet(PLAY_INTERACT)] +#[packet(PLAY_INTERACT)] pub struct SInteract { pub entity_id: VarInt, pub typ: VarInt, diff --git a/pumpkin-protocol/src/server/play/keep_alive.rs b/pumpkin-protocol/src/server/play/keep_alive.rs index c49be01a0..f5039e69e 100644 --- a/pumpkin-protocol/src/server/play/keep_alive.rs +++ b/pumpkin-protocol/src/server/play/keep_alive.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::serverbound::PLAY_KEEP_ALIVE; -use pumpkin_macros::server_packet; -use serde::Deserialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; -#[derive(Deserialize)] -#[server_packet(PLAY_KEEP_ALIVE)] +#[derive(Deserialize, Serialize)] +#[packet(PLAY_KEEP_ALIVE)] pub struct SKeepAlive { pub keep_alive_id: i64, } diff --git a/pumpkin-protocol/src/server/play/pick_item.rs b/pumpkin-protocol/src/server/play/pick_item.rs index 99a12177c..5fe0477ae 100644 --- a/pumpkin-protocol/src/server/play/pick_item.rs +++ b/pumpkin-protocol/src/server/play/pick_item.rs @@ -1,17 +1,17 @@ use pumpkin_data::packet::serverbound::{PLAY_PICK_ITEM_FROM_BLOCK, PLAY_PICK_ITEM_FROM_ENTITY}; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use pumpkin_util::math::position::BlockPos; use serde::Deserialize; #[derive(Deserialize)] -#[server_packet(PLAY_PICK_ITEM_FROM_BLOCK)] +#[packet(PLAY_PICK_ITEM_FROM_BLOCK)] pub struct SPickItemFromBlock { pub pos: BlockPos, pub include_data: bool, } #[derive(Deserialize)] -#[server_packet(PLAY_PICK_ITEM_FROM_ENTITY)] +#[packet(PLAY_PICK_ITEM_FROM_ENTITY)] pub struct SPickItemFromEntity { pub id: i32, pub include_data: bool, diff --git a/pumpkin-protocol/src/server/play/ping_request.rs b/pumpkin-protocol/src/server/play/ping_request.rs index 12c493c11..160d51f83 100644 --- a/pumpkin-protocol/src/server/play/ping_request.rs +++ b/pumpkin-protocol/src/server/play/ping_request.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::serverbound::PLAY_PING_REQUEST; -use pumpkin_macros::server_packet; -use serde::Deserialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; -#[derive(Deserialize)] -#[server_packet(PLAY_PING_REQUEST)] +#[derive(Deserialize, Serialize)] +#[packet(PLAY_PING_REQUEST)] pub struct SPlayPingRequest { pub payload: i64, } diff --git a/pumpkin-protocol/src/server/play/player_abilities.rs b/pumpkin-protocol/src/server/play/player_abilities.rs index e4e8a3c02..2faf1e167 100644 --- a/pumpkin-protocol/src/server/play/player_abilities.rs +++ b/pumpkin-protocol/src/server/play/player_abilities.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::serverbound::PLAY_PLAYER_ABILITIES; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use serde::Deserialize; //The vanilla client sends this packet when the player starts/stops flying. Bitmask 0x02 is set when the player is flying. #[derive(Deserialize)] -#[server_packet(PLAY_PLAYER_ABILITIES)] +#[packet(PLAY_PLAYER_ABILITIES)] pub struct SPlayerAbilities { pub flags: i8, } diff --git a/pumpkin-protocol/src/server/play/player_action.rs b/pumpkin-protocol/src/server/play/player_action.rs index 1a233f897..d552e5556 100644 --- a/pumpkin-protocol/src/server/play/player_action.rs +++ b/pumpkin-protocol/src/server/play/player_action.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::serverbound::PLAY_PLAYER_ACTION; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use pumpkin_util::math::position::BlockPos; use crate::VarInt; #[derive(serde::Deserialize)] -#[server_packet(PLAY_PLAYER_ACTION)] +#[packet(PLAY_PLAYER_ACTION)] pub struct SPlayerAction { pub status: VarInt, pub location: BlockPos, diff --git a/pumpkin-protocol/src/server/play/player_command.rs b/pumpkin-protocol/src/server/play/player_command.rs index 42f489f3f..e8b0de964 100644 --- a/pumpkin-protocol/src/server/play/player_command.rs +++ b/pumpkin-protocol/src/server/play/player_command.rs @@ -1,13 +1,13 @@ use bytes::Buf; use pumpkin_data::packet::serverbound::PLAY_PLAYER_COMMAND; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use crate::{ ServerPacket, VarInt, bytebuf::{ByteBuf, ReadingError}, }; -#[server_packet(PLAY_PLAYER_COMMAND)] +#[packet(PLAY_PLAYER_COMMAND)] pub struct SPlayerCommand { pub entity_id: VarInt, pub action: VarInt, diff --git a/pumpkin-protocol/src/server/play/player_ground.rs b/pumpkin-protocol/src/server/play/player_ground.rs index 4cac6bde1..4bdded1e7 100644 --- a/pumpkin-protocol/src/server/play/player_ground.rs +++ b/pumpkin-protocol/src/server/play/player_ground.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::serverbound::PLAY_MOVE_PLAYER_STATUS_ONLY; -use pumpkin_macros::server_packet; -use serde::Deserialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; -#[derive(Deserialize)] -#[server_packet(PLAY_MOVE_PLAYER_STATUS_ONLY)] +#[derive(Deserialize, Serialize)] +#[packet(PLAY_MOVE_PLAYER_STATUS_ONLY)] pub struct SSetPlayerGround { pub on_ground: bool, } diff --git a/pumpkin-protocol/src/server/play/player_input.rs b/pumpkin-protocol/src/server/play/player_input.rs index c1693cadf..4a17ebf6c 100644 --- a/pumpkin-protocol/src/server/play/player_input.rs +++ b/pumpkin-protocol/src/server/play/player_input.rs @@ -1,8 +1,8 @@ use pumpkin_data::packet::serverbound::PLAY_PLAYER_INPUT; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; #[derive(serde::Deserialize)] -#[server_packet(PLAY_PLAYER_INPUT)] +#[packet(PLAY_PLAYER_INPUT)] pub struct SPlayerInput { // Yep exactly how it looks like _input: i8, diff --git a/pumpkin-protocol/src/server/play/player_loaded.rs b/pumpkin-protocol/src/server/play/player_loaded.rs index 10c56c542..f9e60029d 100644 --- a/pumpkin-protocol/src/server/play/player_loaded.rs +++ b/pumpkin-protocol/src/server/play/player_loaded.rs @@ -1,6 +1,5 @@ use pumpkin_data::packet::serverbound::PLAY_PLAYER_LOADED; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; -#[derive(serde::Deserialize)] -#[server_packet(PLAY_PLAYER_LOADED)] +#[packet(PLAY_PLAYER_LOADED)] pub struct SPlayerLoaded; diff --git a/pumpkin-protocol/src/server/play/player_position.rs b/pumpkin-protocol/src/server/play/player_position.rs index 09a6ea818..84395b056 100644 --- a/pumpkin-protocol/src/server/play/player_position.rs +++ b/pumpkin-protocol/src/server/play/player_position.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::serverbound::PLAY_MOVE_PLAYER_POS; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use pumpkin_util::math::vector3::Vector3; #[derive(serde::Deserialize)] -#[server_packet(PLAY_MOVE_PLAYER_POS)] +#[packet(PLAY_MOVE_PLAYER_POS)] pub struct SPlayerPosition { pub position: Vector3, pub ground: bool, diff --git a/pumpkin-protocol/src/server/play/player_position_rotation.rs b/pumpkin-protocol/src/server/play/player_position_rotation.rs index a3376fea5..690267a3e 100644 --- a/pumpkin-protocol/src/server/play/player_position_rotation.rs +++ b/pumpkin-protocol/src/server/play/player_position_rotation.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::serverbound::PLAY_MOVE_PLAYER_POS_ROT; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use pumpkin_util::math::vector3::Vector3; #[derive(serde::Deserialize)] -#[server_packet(PLAY_MOVE_PLAYER_POS_ROT)] +#[packet(PLAY_MOVE_PLAYER_POS_ROT)] pub struct SPlayerPositionRotation { pub position: Vector3, pub yaw: f32, diff --git a/pumpkin-protocol/src/server/play/player_rotation.rs b/pumpkin-protocol/src/server/play/player_rotation.rs index 512b5219f..7fabeb3cc 100644 --- a/pumpkin-protocol/src/server/play/player_rotation.rs +++ b/pumpkin-protocol/src/server/play/player_rotation.rs @@ -1,8 +1,8 @@ use pumpkin_data::packet::serverbound::PLAY_MOVE_PLAYER_ROT; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; #[derive(serde::Deserialize)] -#[server_packet(PLAY_MOVE_PLAYER_ROT)] +#[packet(PLAY_MOVE_PLAYER_ROT)] pub struct SPlayerRotation { pub yaw: f32, pub pitch: f32, diff --git a/pumpkin-protocol/src/server/play/set_creative_slot.rs b/pumpkin-protocol/src/server/play/set_creative_slot.rs index 849a48562..44a56dd84 100644 --- a/pumpkin-protocol/src/server/play/set_creative_slot.rs +++ b/pumpkin-protocol/src/server/play/set_creative_slot.rs @@ -1,10 +1,10 @@ use pumpkin_data::packet::serverbound::PLAY_SET_CREATIVE_MODE_SLOT; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use crate::codec::slot::Slot; #[derive(serde::Deserialize, Debug)] -#[server_packet(PLAY_SET_CREATIVE_MODE_SLOT)] +#[packet(PLAY_SET_CREATIVE_MODE_SLOT)] pub struct SSetCreativeSlot { pub slot: i16, pub clicked_item: Slot, diff --git a/pumpkin-protocol/src/server/play/set_held_item.rs b/pumpkin-protocol/src/server/play/set_held_item.rs index 3c2ecefc7..7d568116f 100644 --- a/pumpkin-protocol/src/server/play/set_held_item.rs +++ b/pumpkin-protocol/src/server/play/set_held_item.rs @@ -1,9 +1,9 @@ use pumpkin_data::packet::serverbound::PLAY_SET_CARRIED_ITEM; -use pumpkin_macros::server_packet; -use serde::Deserialize; +use pumpkin_macros::packet; +use serde::{Deserialize, Serialize}; -#[derive(Deserialize)] -#[server_packet(PLAY_SET_CARRIED_ITEM)] +#[derive(Deserialize, Serialize)] +#[packet(PLAY_SET_CARRIED_ITEM)] pub struct SSetHeldItem { pub slot: i16, } diff --git a/pumpkin-protocol/src/server/play/swing_arm.rs b/pumpkin-protocol/src/server/play/swing_arm.rs index 5134d15c5..25a3b6324 100644 --- a/pumpkin-protocol/src/server/play/swing_arm.rs +++ b/pumpkin-protocol/src/server/play/swing_arm.rs @@ -1,10 +1,11 @@ use pumpkin_data::packet::serverbound::PLAY_SWING; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; +use serde::Serialize; use crate::VarInt; -#[derive(serde::Deserialize)] -#[server_packet(PLAY_SWING)] +#[derive(serde::Deserialize, Serialize)] +#[packet(PLAY_SWING)] pub struct SSwingArm { pub hand: VarInt, } diff --git a/pumpkin-protocol/src/server/play/update_sign.rs b/pumpkin-protocol/src/server/play/update_sign.rs index 57c34e84e..6a9ed0e1e 100644 --- a/pumpkin-protocol/src/server/play/update_sign.rs +++ b/pumpkin-protocol/src/server/play/update_sign.rs @@ -1,6 +1,6 @@ use bytes::Buf; use pumpkin_data::packet::serverbound::PLAY_SIGN_UPDATE; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use pumpkin_util::math::position::BlockPos; use crate::{ @@ -8,7 +8,7 @@ use crate::{ bytebuf::{ByteBuf, ReadingError}, }; -#[server_packet(PLAY_SIGN_UPDATE)] +#[packet(PLAY_SIGN_UPDATE)] pub struct SUpdateSign { pub location: BlockPos, pub is_front_text: bool, diff --git a/pumpkin-protocol/src/server/play/use_item.rs b/pumpkin-protocol/src/server/play/use_item.rs index 03abfc98c..05e9b2d3d 100644 --- a/pumpkin-protocol/src/server/play/use_item.rs +++ b/pumpkin-protocol/src/server/play/use_item.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::serverbound::PLAY_USE_ITEM; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use serde::Deserialize; use crate::VarInt; #[derive(Deserialize)] -#[server_packet(PLAY_USE_ITEM)] +#[packet(PLAY_USE_ITEM)] pub struct SUseItem { // 0 for main hand, 1 for off hand pub hand: VarInt, diff --git a/pumpkin-protocol/src/server/play/use_item_on.rs b/pumpkin-protocol/src/server/play/use_item_on.rs index d0d015881..436c0c2c7 100644 --- a/pumpkin-protocol/src/server/play/use_item_on.rs +++ b/pumpkin-protocol/src/server/play/use_item_on.rs @@ -1,12 +1,12 @@ use pumpkin_data::packet::serverbound::PLAY_USE_ITEM_ON; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; use pumpkin_util::math::{position::BlockPos, vector3::Vector3}; use serde::Deserialize; use crate::VarInt; #[derive(Deserialize)] -#[server_packet(PLAY_USE_ITEM_ON)] +#[packet(PLAY_USE_ITEM_ON)] pub struct SUseItemOn { pub hand: VarInt, pub location: BlockPos, diff --git a/pumpkin-protocol/src/server/status/ping_request.rs b/pumpkin-protocol/src/server/status/ping_request.rs index 1c46e7d8b..090dde1ca 100644 --- a/pumpkin-protocol/src/server/status/ping_request.rs +++ b/pumpkin-protocol/src/server/status/ping_request.rs @@ -1,8 +1,9 @@ use pumpkin_data::packet::serverbound::STATUS_PING_REQUEST; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; +use serde::Serialize; -#[derive(serde::Deserialize)] -#[server_packet(STATUS_PING_REQUEST)] +#[derive(serde::Deserialize, Serialize)] +#[packet(STATUS_PING_REQUEST)] pub struct SStatusPingRequest { pub payload: i64, } diff --git a/pumpkin-protocol/src/server/status/status_request.rs b/pumpkin-protocol/src/server/status/status_request.rs index 07f22dade..c68a43b77 100644 --- a/pumpkin-protocol/src/server/status/status_request.rs +++ b/pumpkin-protocol/src/server/status/status_request.rs @@ -1,8 +1,7 @@ use pumpkin_data::packet::serverbound::STATUS_STATUS_REQUEST; -use pumpkin_macros::server_packet; +use pumpkin_macros::packet; +use serde::Serialize; -#[derive(serde::Deserialize)] -#[server_packet(STATUS_STATUS_REQUEST)] -pub struct SStatusRequest { - // empty -} +#[derive(Serialize)] +#[packet(STATUS_STATUS_REQUEST)] +pub struct SStatusRequest; diff --git a/pumpkin/src/command/commands/transfer.rs b/pumpkin/src/command/commands/transfer.rs index c767203bb..1d78a671f 100644 --- a/pumpkin/src/command/commands/transfer.rs +++ b/pumpkin/src/command/commands/transfer.rs @@ -62,7 +62,7 @@ impl CommandExecutor for TargetSelfExecutor { log::info!("[{name}: Transferring {name} to {hostname}:{port}]"); player .client - .send_packet(&CTransfer::new(hostname, &VarInt(port))) + .send_packet(&CTransfer::new(hostname, VarInt(port))) .await; Ok(()) } else { @@ -105,7 +105,7 @@ impl CommandExecutor for TargetPlayerExecutor { for p in players { p.client - .send_packet(&CTransfer::new(hostname, &VarInt(port))) + .send_packet(&CTransfer::new(hostname, VarInt(port))) .await; log::info!( "[{sender}: Transferring {} to {hostname}:{port}]", diff --git a/pumpkin/src/entity/combat.rs b/pumpkin/src/entity/combat.rs index 0bb5bcb4b..9742f72bb 100644 --- a/pumpkin/src/entity/combat.rs +++ b/pumpkin/src/entity/combat.rs @@ -68,7 +68,7 @@ pub async fn handle_knockback(attacker: &Entity, world: &World, victim: &Entity, let victim_velocity = victim.velocity.load(); let packet = &CEntityVelocity::new( - &entity_id, + entity_id, victim_velocity.x, victim_velocity.y, victim_velocity.z, diff --git a/pumpkin/src/entity/player.rs b/pumpkin/src/entity/player.rs index 1914c8c25..6e10ea6b0 100644 --- a/pumpkin/src/entity/player.rs +++ b/pumpkin/src/entity/player.rs @@ -384,7 +384,7 @@ impl Player { if config.hurt_animation { let entity_id = VarInt(victim_entity.entity_id); world - .broadcast_packet_all(&CHurtAnimation::new(&entity_id, attacker_entity.yaw.load())) + .broadcast_packet_all(&CHurtAnimation::new(entity_id, attacker_entity.yaw.load())) .await; } @@ -819,7 +819,7 @@ impl Player { let _ = self .client - .try_send_packet(&CPlayDisconnect::new(&reason)) + .try_send_packet(&CPlayDisconnect::new(reason.clone())) .await; log::info!( diff --git a/pumpkin/src/net/mod.rs b/pumpkin/src/net/mod.rs index 2438a02c4..de0c5a8a7 100644 --- a/pumpkin/src/net/mod.rs +++ b/pumpkin/src/net/mod.rs @@ -255,7 +255,7 @@ impl Client { { let mut enc = self.enc.lock().await; if let Err(error) = enc.append_packet(packet) { - self.kick(&TextComponent::text(error.to_string())).await; + self.kick(TextComponent::text(error.to_string())).await; return; } } @@ -354,7 +354,7 @@ impl Client { i32::from(packet.id), error ); - self.kick(&TextComponent::text(text)).await; + self.kick(TextComponent::text(text)).await; }; } } @@ -532,9 +532,7 @@ impl Client { /// # Arguments /// /// * `reason`: A string describing the reason for kicking the client. - pub async fn kick(&self, reason: &TextComponent) { - let text = reason.clone().get_text(); - log::info!("Kicking Client id {} for {}", self.id, &text); + pub async fn kick(&self, reason: TextComponent) { let result = match self.connection_state.load() { ConnectionState::Login => { // TextComponent implements Serialze and writes in bytes instead of String, thats the reasib we only use content @@ -543,7 +541,10 @@ impl Client { )) .await } - ConnectionState::Config => self.try_send_packet(&CConfigDisconnect::new(&text)).await, + ConnectionState::Config => { + self.try_send_packet(&CConfigDisconnect::new(&reason.get_text())) + .await + } // This way players get kicked when players using client functions (e.g. poll, send_packet) ConnectionState::Play => self.try_send_packet(&CPlayDisconnect::new(reason)).await, _ => { diff --git a/pumpkin/src/net/packet/config.rs b/pumpkin/src/net/packet/config.rs index 0ca05779a..140eb8a32 100644 --- a/pumpkin/src/net/packet/config.rs +++ b/pumpkin/src/net/packet/config.rs @@ -23,7 +23,7 @@ impl Client { ) { log::debug!("Handling client settings"); if client_information.view_distance <= 0 { - self.kick(&TextComponent::text( + self.kick(TextComponent::text( "Cannot have zero or negative view distance!", )) .await; @@ -47,7 +47,7 @@ impl Client { server_listing: client_information.server_listing, }); } else { - self.kick(&TextComponent::text("Invalid hand or chat type")) + self.kick(TextComponent::text("Invalid hand or chat type")) .await; } } @@ -62,7 +62,7 @@ impl Client { log::debug!("got a client brand"); match str::from_utf8(&plugin_message.data) { Ok(brand) => *self.brand.lock().await = Some(brand.to_string()), - Err(e) => self.kick(&TextComponent::text(e.to_string())).await, + Err(e) => self.kick(TextComponent::text(e.to_string())).await, } } } @@ -89,7 +89,7 @@ impl Client { // We are done with configuring log::debug!("finished config"); - self.send_packet(&CFinishConfig::new()).await; + self.send_packet(&CFinishConfig).await; } pub async fn handle_config_acknowledged(&self) { @@ -97,7 +97,7 @@ impl Client { self.connection_state.store(ConnectionState::Play); if let Some(reason) = self.can_not_join().await { - self.kick(&reason).await; + self.kick(reason).await; return; } diff --git a/pumpkin/src/net/packet/handshake.rs b/pumpkin/src/net/packet/handshake.rs index c3d56d0dc..569ae362b 100644 --- a/pumpkin/src/net/packet/handshake.rs +++ b/pumpkin/src/net/packet/handshake.rs @@ -18,7 +18,7 @@ impl Client { let protocol = version; match protocol.cmp(&NonZeroI32::from(CURRENT_MC_PROTOCOL).get()) { std::cmp::Ordering::Less => { - self.kick(&TextComponent::translate( + self.kick(TextComponent::translate( "multiplayer.disconnect.outdated_client", [TextComponent::text(CURRENT_MC_VERSION.to_string())], )) @@ -26,7 +26,7 @@ impl Client { } std::cmp::Ordering::Equal => {} std::cmp::Ordering::Greater => { - self.kick(&TextComponent::translate( + self.kick(TextComponent::translate( "multiplayer.disconnect.incompatible", [TextComponent::text(CURRENT_MC_VERSION.to_string())], )) diff --git a/pumpkin/src/net/packet/login.rs b/pumpkin/src/net/packet/login.rs index 16a555c50..c73129703 100644 --- a/pumpkin/src/net/packet/login.rs +++ b/pumpkin/src/net/packet/login.rs @@ -93,7 +93,7 @@ impl Client { // TODO: If client is an operator or otherwise suitable elevated permissions, allow client to bypass this requirement. let max_players = BASIC_CONFIG.max_players; if max_players > 0 && server.get_player_count().await >= max_players as usize { - self.kick(&TextComponent::translate( + self.kick(TextComponent::translate( "multiplayer.disconnect.server_full", [], )) @@ -102,7 +102,7 @@ impl Client { } if !is_valid_player_name(&login_start.name) { - self.kick(&TextComponent::text("Invalid characters in username")) + self.kick(TextComponent::text("Invalid characters in username")) .await; return; } @@ -126,7 +126,7 @@ impl Client { self.finish_login(&profile).await; *gameprofile = Some(profile); } - Err(error) => self.kick(&TextComponent::text(error.to_string())).await, + Err(error) => self.kick(TextComponent::text(error.to_string())).await, } } } else { @@ -169,14 +169,14 @@ impl Client { let shared_secret = server.decrypt(&encryption_response.shared_secret).unwrap(); if let Err(error) = self.set_encryption(Some(&shared_secret)).await { - self.kick(&TextComponent::text(error.to_string())).await; + self.kick(TextComponent::text(error.to_string())).await; return; } let mut gameprofile = self.gameprofile.lock().await; let Some(profile) = gameprofile.as_mut() else { - self.kick(&TextComponent::text("No Game profile")).await; + self.kick(TextComponent::text("No Game profile")).await; return; }; @@ -188,7 +188,7 @@ impl Client { { Ok(new_profile) => *profile = new_profile, Err(error) => { - self.kick(&match error { + self.kick(match error { AuthError::FailedResponse => { TextComponent::translate("multiplayer.disconnect.authservers_down", []) } @@ -213,7 +213,7 @@ impl Client { &online_player.client.address.lock().await, &online_player.gameprofile.name ); - self.kick(&TextComponent::translate( + self.kick(TextComponent::translate( "multiplayer.disconnect.duplicate_login", [], )) @@ -231,7 +231,7 @@ impl Client { &online_player.client.address.lock().await, &online_player.gameprofile.name ); - self.kick(&TextComponent::translate( + self.kick(TextComponent::translate( "multiplayer.disconnect.duplicate_login", [], )) @@ -330,7 +330,7 @@ impl Client { *self.gameprofile.lock().await = Some(profile); *address = new_address; } - Err(error) => self.kick(&TextComponent::text(error.to_string())).await, + Err(error) => self.kick(TextComponent::text(error.to_string())).await, } } }