diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2024-11-27 19:31:40 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-27 19:31:40 -0600 |
| commit | 08958c2278b15ebeac8a964f392ebb792e479b61 (patch) | |
| tree | 4ae3664cea38d7fd1a8f1e95ed06fac04ffe519e /azalea-protocol/src/packets/config | |
| parent | 139d77d3c2b0922fba5e9d4fa2bd9819d78bd773 (diff) | |
| download | azalea-drasl-08958c2278b15ebeac8a964f392ebb792e479b61.tar.xz | |
Refactor azalea-protocol (#190)
* start updating to 1.21.4
* fix block codegen and stop using block data from burger
* rename packet related modules and structs to be simpler
* ItemSlot -> ItemStack for more consistency with mojmap
* .get() -> .into_packet()
* simplify declare_state_packets by removing packet ids
* rename read_from and write_into to azalea_read and azalea_write
* rename McBufReadable and McBufWritable to AzaleaRead and AzaleaWrite
* McBuf -> AzBuf
* remove most uses of into_variant
* update codegen and use resourcelocation names for packets
* implement #[limit(i)] attribute for AzBuf derive macro
* fixes for 1.21.4
* fix examples
* update some physics code and fix ChatType
* remove unused imports in codegen
* re-add some things to migrate.py and update +mc version numbers automatically
* downgrade to 1.21.3 lol
Diffstat (limited to 'azalea-protocol/src/packets/config')
27 files changed, 338 insertions, 0 deletions
diff --git a/azalea-protocol/src/packets/config/c_cookie_request.rs b/azalea-protocol/src/packets/config/c_cookie_request.rs new file mode 100644 index 00000000..4c57718d --- /dev/null +++ b/azalea-protocol/src/packets/config/c_cookie_request.rs @@ -0,0 +1,8 @@ +use azalea_buf::AzBuf; +use azalea_core::resource_location::ResourceLocation; +use azalea_protocol_macros::ClientboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundCookieRequest { + pub key: ResourceLocation, +} diff --git a/azalea-protocol/src/packets/config/c_custom_payload.rs b/azalea-protocol/src/packets/config/c_custom_payload.rs new file mode 100644 index 00000000..3432ac3a --- /dev/null +++ b/azalea-protocol/src/packets/config/c_custom_payload.rs @@ -0,0 +1,10 @@ +use azalea_buf::AzBuf; +use azalea_buf::UnsizedByteArray; +use azalea_core::resource_location::ResourceLocation; +use azalea_protocol_macros::ClientboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundCustomPayload { + pub identifier: ResourceLocation, + pub data: UnsizedByteArray, +} diff --git a/azalea-protocol/src/packets/config/c_custom_report_details.rs b/azalea-protocol/src/packets/config/c_custom_report_details.rs new file mode 100644 index 00000000..5fa375d0 --- /dev/null +++ b/azalea-protocol/src/packets/config/c_custom_report_details.rs @@ -0,0 +1,9 @@ +use std::collections::HashMap; + +use azalea_buf::AzBuf; +use azalea_protocol_macros::ClientboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundCustomReportDetails { + pub details: HashMap<String, String>, +} diff --git a/azalea-protocol/src/packets/config/c_disconnect.rs b/azalea-protocol/src/packets/config/c_disconnect.rs new file mode 100644 index 00000000..b59b318d --- /dev/null +++ b/azalea-protocol/src/packets/config/c_disconnect.rs @@ -0,0 +1,8 @@ +use azalea_buf::AzBuf; +use azalea_chat::FormattedText; +use azalea_protocol_macros::ClientboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundDisconnect { + pub reason: FormattedText, +} diff --git a/azalea-protocol/src/packets/config/c_finish_configuration.rs b/azalea-protocol/src/packets/config/c_finish_configuration.rs new file mode 100644 index 00000000..e3f3e5a5 --- /dev/null +++ b/azalea-protocol/src/packets/config/c_finish_configuration.rs @@ -0,0 +1,5 @@ +use azalea_buf::AzBuf; +use azalea_protocol_macros::ClientboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundFinishConfiguration {} diff --git a/azalea-protocol/src/packets/config/c_keep_alive.rs b/azalea-protocol/src/packets/config/c_keep_alive.rs new file mode 100644 index 00000000..f0310c34 --- /dev/null +++ b/azalea-protocol/src/packets/config/c_keep_alive.rs @@ -0,0 +1,7 @@ +use azalea_buf::AzBuf; +use azalea_protocol_macros::ClientboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundKeepAlive { + pub id: u64, +} diff --git a/azalea-protocol/src/packets/config/c_ping.rs b/azalea-protocol/src/packets/config/c_ping.rs new file mode 100644 index 00000000..35b5c39c --- /dev/null +++ b/azalea-protocol/src/packets/config/c_ping.rs @@ -0,0 +1,7 @@ +use azalea_buf::AzBuf; +use azalea_protocol_macros::ClientboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundPing { + pub id: u32, +} diff --git a/azalea-protocol/src/packets/config/c_registry_data.rs b/azalea-protocol/src/packets/config/c_registry_data.rs new file mode 100644 index 00000000..185de4c3 --- /dev/null +++ b/azalea-protocol/src/packets/config/c_registry_data.rs @@ -0,0 +1,12 @@ +use std::collections::HashMap; + +use azalea_buf::AzBuf; +use azalea_core::resource_location::ResourceLocation; +use azalea_protocol_macros::ClientboundConfigPacket; +use simdnbt::owned::NbtCompound; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundRegistryData { + pub registry_id: ResourceLocation, + pub entries: HashMap<ResourceLocation, Option<NbtCompound>>, +} diff --git a/azalea-protocol/src/packets/config/c_reset_chat.rs b/azalea-protocol/src/packets/config/c_reset_chat.rs new file mode 100644 index 00000000..273cb0fd --- /dev/null +++ b/azalea-protocol/src/packets/config/c_reset_chat.rs @@ -0,0 +1,5 @@ +use azalea_buf::AzBuf; +use azalea_protocol_macros::ClientboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundResetChat; diff --git a/azalea-protocol/src/packets/config/c_resource_pack.rs b/azalea-protocol/src/packets/config/c_resource_pack.rs new file mode 100644 index 00000000..63a59b5b --- /dev/null +++ b/azalea-protocol/src/packets/config/c_resource_pack.rs @@ -0,0 +1,11 @@ +use azalea_buf::AzBuf; +use azalea_chat::FormattedText; +use azalea_protocol_macros::ClientboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundResourcePack { + pub url: String, + pub hash: String, + pub required: bool, + pub prompt: Option<FormattedText>, +} diff --git a/azalea-protocol/src/packets/config/c_resource_pack_pop.rs b/azalea-protocol/src/packets/config/c_resource_pack_pop.rs new file mode 100644 index 00000000..f949a726 --- /dev/null +++ b/azalea-protocol/src/packets/config/c_resource_pack_pop.rs @@ -0,0 +1,8 @@ +use azalea_buf::AzBuf; +use azalea_protocol_macros::ClientboundConfigPacket; +use uuid::Uuid; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundResourcePackPop { + pub id: Option<Uuid>, +} diff --git a/azalea-protocol/src/packets/config/c_resource_pack_push.rs b/azalea-protocol/src/packets/config/c_resource_pack_push.rs new file mode 100644 index 00000000..6be5c709 --- /dev/null +++ b/azalea-protocol/src/packets/config/c_resource_pack_push.rs @@ -0,0 +1,13 @@ +use azalea_buf::AzBuf; +use azalea_chat::FormattedText; +use azalea_protocol_macros::ClientboundConfigPacket; +use uuid::Uuid; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundResourcePackPush { + pub id: Uuid, + pub url: String, + pub hash: String, + pub required: bool, + pub prompt: Option<FormattedText>, +} diff --git a/azalea-protocol/src/packets/config/c_select_known_packs.rs b/azalea-protocol/src/packets/config/c_select_known_packs.rs new file mode 100644 index 00000000..6a4f76db --- /dev/null +++ b/azalea-protocol/src/packets/config/c_select_known_packs.rs @@ -0,0 +1,9 @@ +use azalea_buf::AzBuf; +use azalea_protocol_macros::ClientboundConfigPacket; + +use super::s_select_known_packs::KnownPack; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundSelectKnownPacks { + pub known_packs: Vec<KnownPack>, +} diff --git a/azalea-protocol/src/packets/config/c_server_links.rs b/azalea-protocol/src/packets/config/c_server_links.rs new file mode 100644 index 00000000..3420e592 --- /dev/null +++ b/azalea-protocol/src/packets/config/c_server_links.rs @@ -0,0 +1,9 @@ +use azalea_buf::AzBuf; +use azalea_protocol_macros::ClientboundConfigPacket; + +use crate::common::server_links::ServerLinkEntry; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundServerLinks { + pub links: Vec<ServerLinkEntry>, +} diff --git a/azalea-protocol/src/packets/config/c_store_cookie.rs b/azalea-protocol/src/packets/config/c_store_cookie.rs new file mode 100644 index 00000000..c52211ea --- /dev/null +++ b/azalea-protocol/src/packets/config/c_store_cookie.rs @@ -0,0 +1,9 @@ +use azalea_buf::AzBuf; +use azalea_core::resource_location::ResourceLocation; +use azalea_protocol_macros::ClientboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundStoreCookie { + pub key: ResourceLocation, + pub payload: Vec<u8>, +} diff --git a/azalea-protocol/src/packets/config/c_transfer.rs b/azalea-protocol/src/packets/config/c_transfer.rs new file mode 100644 index 00000000..332421d8 --- /dev/null +++ b/azalea-protocol/src/packets/config/c_transfer.rs @@ -0,0 +1,9 @@ +use azalea_buf::AzBuf; +use azalea_protocol_macros::ClientboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundTransfer { + pub host: String, + #[var] + pub port: u32, +} diff --git a/azalea-protocol/src/packets/config/c_update_enabled_features.rs b/azalea-protocol/src/packets/config/c_update_enabled_features.rs new file mode 100644 index 00000000..4529c757 --- /dev/null +++ b/azalea-protocol/src/packets/config/c_update_enabled_features.rs @@ -0,0 +1,8 @@ +use azalea_buf::AzBuf; +use azalea_core::resource_location::ResourceLocation; +use azalea_protocol_macros::ClientboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundUpdateEnabledFeatures { + pub features: Vec<ResourceLocation>, +} diff --git a/azalea-protocol/src/packets/config/c_update_tags.rs b/azalea-protocol/src/packets/config/c_update_tags.rs new file mode 100644 index 00000000..678a5ccf --- /dev/null +++ b/azalea-protocol/src/packets/config/c_update_tags.rs @@ -0,0 +1,74 @@ +use std::io::Cursor; +use std::ops::Deref; +use std::{collections::HashMap, io::Write}; + +use azalea_buf::{AzBuf, AzaleaReadVar, AzaleaWriteVar, BufReadError}; +use azalea_buf::{AzaleaRead, AzaleaWrite}; +use azalea_core::resource_location::ResourceLocation; +use azalea_protocol_macros::ClientboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ClientboundConfigPacket)] +pub struct ClientboundUpdateTags { + pub tags: TagMap, +} + +#[derive(Clone, Debug)] +pub struct Tags { + pub name: ResourceLocation, + pub elements: Vec<i32>, +} + +#[derive(Clone, Debug)] +pub struct TagMap(pub HashMap<ResourceLocation, Vec<Tags>>); + +impl AzaleaRead for TagMap { + fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { + let length = u32::azalea_read_var(buf)? as usize; + let mut data = HashMap::with_capacity(length); + for _ in 0..length { + let tag_type = ResourceLocation::azalea_read(buf)?; + let tags_count = i32::azalea_read_var(buf)? as usize; + let mut tags_vec = Vec::with_capacity(tags_count); + for _ in 0..tags_count { + let tags = Tags::azalea_read(buf)?; + tags_vec.push(tags); + } + data.insert(tag_type, tags_vec); + } + Ok(TagMap(data)) + } +} + +impl AzaleaWrite for TagMap { + fn azalea_write(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { + (self.len() as u32).azalea_write_var(buf)?; + for (k, v) in &self.0 { + k.azalea_write(buf)?; + v.azalea_write(buf)?; + } + Ok(()) + } +} +impl AzaleaRead for Tags { + fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { + let name = ResourceLocation::azalea_read(buf)?; + let elements = Vec::<i32>::azalea_read_var(buf)?; + Ok(Tags { name, elements }) + } +} + +impl AzaleaWrite for Tags { + fn azalea_write(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { + self.name.azalea_write(buf)?; + self.elements.azalea_write_var(buf)?; + Ok(()) + } +} + +impl Deref for TagMap { + type Target = HashMap<ResourceLocation, Vec<Tags>>; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} diff --git a/azalea-protocol/src/packets/config/mod.rs b/azalea-protocol/src/packets/config/mod.rs new file mode 100755 index 00000000..4eda0f03 --- /dev/null +++ b/azalea-protocol/src/packets/config/mod.rs @@ -0,0 +1,36 @@ +// NOTE: This file is generated automatically by codegen/packet.py. +// Don't edit it directly! + +use azalea_protocol_macros::declare_state_packets; + +declare_state_packets!(ConfigPacket, + Clientbound => [ + cookie_request, + custom_payload, + disconnect, + finish_configuration, + keep_alive, + ping, + reset_chat, + registry_data, + resource_pack_pop, + resource_pack_push, + store_cookie, + transfer, + update_enabled_features, + update_tags, + select_known_packs, + custom_report_details, + server_links, + ], + Serverbound => [ + client_information, + cookie_response, + custom_payload, + finish_configuration, + keep_alive, + pong, + resource_pack, + select_known_packs, + ] +); diff --git a/azalea-protocol/src/packets/config/s_client_information.rs b/azalea-protocol/src/packets/config/s_client_information.rs new file mode 100644 index 00000000..d58ce502 --- /dev/null +++ b/azalea-protocol/src/packets/config/s_client_information.rs @@ -0,0 +1,9 @@ +use azalea_buf::AzBuf; +use azalea_protocol_macros::ServerboundConfigPacket; + +use crate::common::client_information::ClientInformation; + +#[derive(Clone, Debug, AzBuf, ServerboundConfigPacket, PartialEq, Eq)] +pub struct ServerboundClientInformation { + pub information: ClientInformation, +} diff --git a/azalea-protocol/src/packets/config/s_cookie_response.rs b/azalea-protocol/src/packets/config/s_cookie_response.rs new file mode 100644 index 00000000..e932352f --- /dev/null +++ b/azalea-protocol/src/packets/config/s_cookie_response.rs @@ -0,0 +1,9 @@ +use azalea_buf::AzBuf; +use azalea_core::resource_location::ResourceLocation; +use azalea_protocol_macros::ServerboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ServerboundConfigPacket)] +pub struct ServerboundCookieResponse { + pub key: ResourceLocation, + pub payload: Option<Vec<u8>>, +} diff --git a/azalea-protocol/src/packets/config/s_custom_payload.rs b/azalea-protocol/src/packets/config/s_custom_payload.rs new file mode 100644 index 00000000..f480985d --- /dev/null +++ b/azalea-protocol/src/packets/config/s_custom_payload.rs @@ -0,0 +1,10 @@ +use azalea_buf::AzBuf; +use azalea_buf::UnsizedByteArray; +use azalea_core::resource_location::ResourceLocation; +use azalea_protocol_macros::ServerboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ServerboundConfigPacket)] +pub struct ServerboundCustomPayload { + pub identifier: ResourceLocation, + pub data: UnsizedByteArray, +} diff --git a/azalea-protocol/src/packets/config/s_finish_configuration.rs b/azalea-protocol/src/packets/config/s_finish_configuration.rs new file mode 100644 index 00000000..a4d94fb1 --- /dev/null +++ b/azalea-protocol/src/packets/config/s_finish_configuration.rs @@ -0,0 +1,5 @@ +use azalea_buf::AzBuf; +use azalea_protocol_macros::ServerboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ServerboundConfigPacket)] +pub struct ServerboundFinishConfiguration {} diff --git a/azalea-protocol/src/packets/config/s_keep_alive.rs b/azalea-protocol/src/packets/config/s_keep_alive.rs new file mode 100644 index 00000000..1986a4eb --- /dev/null +++ b/azalea-protocol/src/packets/config/s_keep_alive.rs @@ -0,0 +1,7 @@ +use azalea_buf::AzBuf; +use azalea_protocol_macros::ServerboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ServerboundConfigPacket)] +pub struct ServerboundKeepAlive { + pub id: u64, +} diff --git a/azalea-protocol/src/packets/config/s_pong.rs b/azalea-protocol/src/packets/config/s_pong.rs new file mode 100644 index 00000000..50c012dd --- /dev/null +++ b/azalea-protocol/src/packets/config/s_pong.rs @@ -0,0 +1,7 @@ +use azalea_buf::AzBuf; +use azalea_protocol_macros::ServerboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ServerboundConfigPacket)] +pub struct ServerboundPong { + pub id: u32, +} diff --git a/azalea-protocol/src/packets/config/s_resource_pack.rs b/azalea-protocol/src/packets/config/s_resource_pack.rs new file mode 100644 index 00000000..0822c723 --- /dev/null +++ b/azalea-protocol/src/packets/config/s_resource_pack.rs @@ -0,0 +1,20 @@ +use azalea_buf::AzBuf; +use azalea_protocol_macros::ServerboundConfigPacket; +use uuid::Uuid; + +#[derive(Clone, Debug, AzBuf, ServerboundConfigPacket)] +pub struct ServerboundResourcePack { + pub id: Uuid, + pub action: Action, +} + +#[derive(AzBuf, Clone, Copy, Debug)] +pub enum Action { + SuccessfullyLoaded = 0, + Declined = 1, + FailedDownload = 2, + Accepted = 3, + InvalidUrl = 4, + FailedReload = 5, + Discarded = 6, +} diff --git a/azalea-protocol/src/packets/config/s_select_known_packs.rs b/azalea-protocol/src/packets/config/s_select_known_packs.rs new file mode 100644 index 00000000..320b5ca5 --- /dev/null +++ b/azalea-protocol/src/packets/config/s_select_known_packs.rs @@ -0,0 +1,14 @@ +use azalea_buf::AzBuf; +use azalea_protocol_macros::ServerboundConfigPacket; + +#[derive(Clone, Debug, AzBuf, ServerboundConfigPacket)] +pub struct ServerboundSelectKnownPacks { + pub known_packs: Vec<KnownPack>, +} + +#[derive(Clone, Debug, AzBuf)] +pub struct KnownPack { + pub namespace: String, + pub id: String, + pub version: String, +} |
