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

simplify declare_state_packets by removing packet ids

This commit is contained in:
mat 2024-11-27 01:36:20 +00:00
parent 68e3d0104b
commit e41d35c1c1
7 changed files with 285 additions and 535 deletions

View file

@ -1,9 +1,9 @@
use proc_macro::TokenStream; use proc_macro::TokenStream;
use quote::quote; use quote::quote;
use syn::{ use syn::{
braced, bracketed,
parse::{Parse, ParseStream, Result}, parse::{Parse, ParseStream, Result},
parse_macro_input, DeriveInput, Ident, LitInt, Token, parse_macro_input, DeriveInput, Ident, Token,
}; };
fn as_packet_derive(input: TokenStream, state: proc_macro2::TokenStream) -> TokenStream { fn as_packet_derive(input: TokenStream, state: proc_macro2::TokenStream) -> TokenStream {
@ -108,55 +108,43 @@ pub fn derive_c_config_packet(input: TokenStream) -> TokenStream {
} }
#[derive(Debug)] #[derive(Debug)]
struct PacketIdPair { struct PacketListItem {
id: u32,
module: Ident, module: Ident,
name: Ident, name: Ident,
} }
#[derive(Debug)] #[derive(Debug)]
struct PacketIdMap { struct PacketList {
packets: Vec<PacketIdPair>, packets: Vec<PacketListItem>,
} }
impl Parse for PacketIdMap { impl Parse for PacketList {
fn parse(input: ParseStream) -> Result<Self> { fn parse(input: ParseStream) -> Result<Self> {
let mut packets = vec![]; let mut packets = vec![];
// example: // example:
// 0x0e: c_change_difficulty::ClientboundChangeDifficultyPacket, // c_change_difficulty::ClientboundChangeDifficultyPacket,
// 0x0e // c_change_difficulty
while let Ok(packet_id) = input.parse::<LitInt>() { while let Ok(module) = input.parse::<Ident>() {
let packet_id = packet_id.base10_parse::<u32>()?;
// :
input.parse::<Token![:]>()?;
// c_change_difficulty_packet
let module: Ident = input.parse()?;
// ::
input.parse::<Token![::]>()?; input.parse::<Token![::]>()?;
// ClientboundChangeDifficultyPacket // ClientboundChangeDifficultyPacket
let name: Ident = input.parse()?; let name = input.parse::<Ident>()?;
packets.push(PacketListItem { module, name });
packets.push(PacketIdPair {
id: packet_id,
module,
name,
});
if input.parse::<Token![,]>().is_err() { if input.parse::<Token![,]>().is_err() {
break; break;
} }
} }
Ok(PacketIdMap { packets }) Ok(PacketList { packets })
} }
} }
#[derive(Debug)] #[derive(Debug)]
struct DeclareStatePackets { struct DeclareStatePackets {
name: Ident, name: Ident,
serverbound: PacketIdMap, serverbound: PacketList,
clientbound: PacketIdMap, clientbound: PacketList,
} }
impl Parse for DeclareStatePackets { impl Parse for DeclareStatePackets {
@ -170,7 +158,7 @@ impl Parse for DeclareStatePackets {
} }
input.parse::<Token![=>]>()?; input.parse::<Token![=>]>()?;
let content; let content;
braced!(content in input); bracketed!(content in input);
let serverbound = content.parse()?; let serverbound = content.parse()?;
input.parse::<Token![,]>()?; input.parse::<Token![,]>()?;
@ -181,7 +169,7 @@ impl Parse for DeclareStatePackets {
} }
input.parse::<Token![=>]>()?; input.parse::<Token![=>]>()?;
let content; let content;
braced!(content in input); bracketed!(content in input);
let clientbound = content.parse()?; let clientbound = content.parse()?;
Ok(DeclareStatePackets { Ok(DeclareStatePackets {
@ -203,6 +191,7 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream {
let has_s_packets = !input.serverbound.packets.is_empty(); let has_s_packets = !input.serverbound.packets.is_empty();
let has_c_packets = !input.clientbound.packets.is_empty(); let has_c_packets = !input.clientbound.packets.is_empty();
let mut mod_and_use_statements_contents = quote!();
let mut s_enum_contents = quote!(); let mut s_enum_contents = quote!();
let mut c_enum_contents = quote!(); let mut c_enum_contents = quote!();
let mut s_id_match_contents = quote!(); let mut s_id_match_contents = quote!();
@ -212,10 +201,16 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream {
let mut s_read_match_contents = quote!(); let mut s_read_match_contents = quote!();
let mut c_read_match_contents = quote!(); let mut c_read_match_contents = quote!();
for PacketIdPair { id, module, name } in input.serverbound.packets { for (id, PacketListItem { module, name }) in input.serverbound.packets.iter().enumerate() {
let variant_name = variant_name_from(&name); let id = id as u32;
let name_litstr = syn::LitStr::new(&name.to_string(), name.span()); let name_litstr = syn::LitStr::new(&name.to_string(), name.span());
let variant_name = variant_name_from(name);
mod_and_use_statements_contents.extend(quote! {
pub mod #module;
pub use #module::#name;
});
s_enum_contents.extend(quote! { s_enum_contents.extend(quote! {
#variant_name(#module::#name), #variant_name(#module::#name),
}); });
@ -245,9 +240,15 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream {
}, },
}); });
} }
for PacketIdPair { id, module, name } in input.clientbound.packets { for (id, PacketListItem { module, name }) in input.clientbound.packets.iter().enumerate() {
let id = id as u32;
let name_litstr = syn::LitStr::new(&name.to_string(), name.span()); let name_litstr = syn::LitStr::new(&name.to_string(), name.span());
let variant_name = variant_name_from(&name); let variant_name = variant_name_from(name);
mod_and_use_statements_contents.extend(quote! {
pub mod #module;
pub use #module::#name;
});
c_enum_contents.extend(quote! { c_enum_contents.extend(quote! {
#variant_name(#module::#name), #variant_name(#module::#name),
@ -304,6 +305,8 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream {
} }
let mut contents = quote! { let mut contents = quote! {
#mod_and_use_statements_contents
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub enum #s_state_name pub enum #s_state_name
where where

View file

@ -1,56 +1,32 @@
pub mod c_cookie_request;
pub mod c_custom_payload;
pub mod c_disconnect;
pub mod c_finish_configuration;
pub mod c_keep_alive;
pub mod c_ping;
pub mod c_registry_data;
pub mod c_reset_chat;
pub mod c_resource_pack_pop;
pub mod c_resource_pack_push;
pub mod c_select_known_packs;
pub mod c_store_cookie;
pub mod c_transfer;
pub mod c_update_enabled_features;
pub mod c_update_tags;
pub mod s_client_information;
pub mod s_cookie_response;
pub mod s_custom_payload;
pub mod s_finish_configuration;
pub mod s_keep_alive;
pub mod s_pong;
pub mod s_resource_pack;
pub mod s_select_known_packs;
use azalea_protocol_macros::declare_state_packets; use azalea_protocol_macros::declare_state_packets;
declare_state_packets!( declare_state_packets!(
ConfigPacket, ConfigPacket,
Serverbound => { Serverbound => [
0x00: s_client_information::ServerboundClientInformation, s_client_information::ServerboundClientInformation,
0x01: s_cookie_response::ServerboundCookieResponse, s_cookie_response::ServerboundCookieResponse,
0x02: s_custom_payload::ServerboundCustomPayload, s_custom_payload::ServerboundCustomPayload,
0x03: s_finish_configuration::ServerboundFinishConfiguration, s_finish_configuration::ServerboundFinishConfiguration,
0x04: s_keep_alive::ServerboundKeepAlive, s_keep_alive::ServerboundKeepAlive,
0x05: s_pong::ServerboundPong, s_pong::ServerboundPong,
0x06: s_resource_pack::ServerboundResourcePack, s_resource_pack::ServerboundResourcePack,
0x07: s_select_known_packs::ServerboundSelectKnownPacks, s_select_known_packs::ServerboundSelectKnownPacks,
}, ],
Clientbound => { Clientbound => [
0x00: c_cookie_request::ClientboundCookieRequest, c_cookie_request::ClientboundCookieRequest,
0x01: c_custom_payload::ClientboundCustomPayload, c_custom_payload::ClientboundCustomPayload,
0x02: c_disconnect::ClientboundDisconnect, c_disconnect::ClientboundDisconnect,
0x03: c_finish_configuration::ClientboundFinishConfiguration, c_finish_configuration::ClientboundFinishConfiguration,
0x04: c_keep_alive::ClientboundKeepAlive, c_keep_alive::ClientboundKeepAlive,
0x05: c_ping::ClientboundPing, c_ping::ClientboundPing,
0x06: c_reset_chat::ClientboundResetChat, c_reset_chat::ClientboundResetChat,
0x07: c_registry_data::ClientboundRegistryData, c_registry_data::ClientboundRegistryData,
0x08: c_resource_pack_pop::ClientboundResourcePackPop, c_resource_pack_pop::ClientboundResourcePackPop,
0x09: c_resource_pack_push::ClientboundResourcePackPush, c_resource_pack_push::ClientboundResourcePackPush,
0x0a: c_store_cookie::ClientboundStoreCookie, c_store_cookie::ClientboundStoreCookie,
0x0b: c_transfer::ClientboundTransfer, c_transfer::ClientboundTransfer,
0x0c: c_update_enabled_features::ClientboundUpdateEnabledFeatures, c_update_enabled_features::ClientboundUpdateEnabledFeatures,
0x0d: c_update_tags::ClientboundUpdateTags, c_update_tags::ClientboundUpdateTags,
0x0e: c_select_known_packs::ClientboundSelectKnownPacks, c_select_known_packs::ClientboundSelectKnownPacks,
} ]
); );

View file

@ -1,394 +1,202 @@
pub mod c_add_entity;
pub mod c_add_experience_orb;
pub mod c_animate;
pub mod c_award_stats;
pub mod c_block_changed_ack;
pub mod c_block_destruction;
pub mod c_block_entity_data;
pub mod c_block_event;
pub mod c_block_update;
pub mod c_boss_event;
pub mod c_bundle;
pub mod c_change_difficulty;
pub mod c_chunk_batch_finished;
pub mod c_chunk_batch_start;
pub mod c_chunks_biomes;
pub mod c_clear_titles;
pub mod c_command_suggestions;
pub mod c_commands;
pub mod c_container_close;
pub mod c_container_set_content;
pub mod c_container_set_data;
pub mod c_container_set_slot;
pub mod c_cookie_request;
pub mod c_cooldown;
pub mod c_custom_chat_completions;
pub mod c_custom_payload;
pub mod c_custom_report_details;
pub mod c_damage_event;
pub mod c_debug_sample;
pub mod c_delete_chat;
pub mod c_disconnect;
pub mod c_disguised_chat;
pub mod c_entity_event;
pub mod c_entity_position_sync;
pub mod c_explode;
pub mod c_forget_level_chunk;
pub mod c_game_event;
pub mod c_horse_screen_open;
pub mod c_hurt_animation;
pub mod c_initialize_border;
pub mod c_keep_alive;
pub mod c_level_chunk_with_light;
pub mod c_level_event;
pub mod c_level_particles;
pub mod c_light_update;
pub mod c_login;
pub mod c_map_item_data;
pub mod c_merchant_offers;
pub mod c_move_entity_pos;
pub mod c_move_entity_pos_rot;
pub mod c_move_entity_rot;
pub mod c_move_minecart;
pub mod c_move_vehicle;
pub mod c_open_book;
pub mod c_open_screen;
pub mod c_open_sign_editor;
pub mod c_ping;
pub mod c_place_ghost_recipe;
pub mod c_player_abilities;
pub mod c_player_chat;
pub mod c_player_combat_end;
pub mod c_player_combat_enter;
pub mod c_player_combat_kill;
pub mod c_player_info_remove;
pub mod c_player_info_update;
pub mod c_player_look_at;
pub mod c_player_position;
pub mod c_player_rotation;
pub mod c_pong_response;
pub mod c_projectile_power;
pub mod c_recipe_book_add;
pub mod c_recipe_book_remove;
pub mod c_recipe_book_settings;
pub mod c_remove_entities;
pub mod c_remove_mob_effect;
pub mod c_reset_score;
pub mod c_resource_pack_pop;
pub mod c_resource_pack_push;
pub mod c_respawn;
pub mod c_rotate_head;
pub mod c_section_blocks_update;
pub mod c_select_advancements_tab;
pub mod c_server_data;
pub mod c_server_links;
pub mod c_set_action_bar_text;
pub mod c_set_border_center;
pub mod c_set_border_lerp_size;
pub mod c_set_border_size;
pub mod c_set_border_warning_delay;
pub mod c_set_border_warning_distance;
pub mod c_set_camera;
pub mod c_set_chunk_cache_center;
pub mod c_set_chunk_cache_radius;
pub mod c_set_cursor_item;
pub mod c_set_default_spawn_position;
pub mod c_set_display_objective;
pub mod c_set_entity_data;
pub mod c_set_entity_link;
pub mod c_set_entity_motion;
pub mod c_set_equipment;
pub mod c_set_experience;
pub mod c_set_health;
pub mod c_set_held_slot;
pub mod c_set_objective;
pub mod c_set_passengers;
pub mod c_set_player_inventory;
pub mod c_set_player_team;
pub mod c_set_score;
pub mod c_set_simulation_distance;
pub mod c_set_subtitle_text;
pub mod c_set_time;
pub mod c_set_title_text;
pub mod c_set_titles_animation;
pub mod c_sound;
pub mod c_sound_entity;
pub mod c_start_configuration;
pub mod c_stop_sound;
pub mod c_store_cookie;
pub mod c_system_chat;
pub mod c_tab_list;
pub mod c_tag_query;
pub mod c_take_item_entity;
pub mod c_teleport_entity;
pub mod c_ticking_state;
pub mod c_ticking_step;
pub mod c_transfer;
pub mod c_update_advancements;
pub mod c_update_attributes;
pub mod c_update_mob_effect;
pub mod c_update_recipes;
pub mod c_update_tags;
pub mod s_accept_teleportation;
pub mod s_block_entity_tag_query;
pub mod s_change_difficulty;
pub mod s_chat;
pub mod s_chat_ack;
pub mod s_chat_command;
pub mod s_chat_command_signed;
pub mod s_chat_session_update;
pub mod s_chunk_batch_received;
pub mod s_client_command;
pub mod s_client_information;
pub mod s_client_tick_end;
pub mod s_command_suggestion;
pub mod s_configuration_acknowledged;
pub mod s_container_button_click;
pub mod s_container_click;
pub mod s_container_close;
pub mod s_container_slot_state_changed;
pub mod s_cookie_response;
pub mod s_custom_payload;
pub mod s_debug_sample_subscription;
pub mod s_edit_book;
pub mod s_entity_tag_query;
pub mod s_interact;
pub mod s_jigsaw_generate;
pub mod s_keep_alive;
pub mod s_lock_difficulty;
pub mod s_move_player_pos;
pub mod s_move_player_pos_rot;
pub mod s_move_player_rot;
pub mod s_move_player_status_only;
pub mod s_move_vehicle;
pub mod s_paddle_boat;
pub mod s_pick_item;
pub mod s_ping_request;
pub mod s_place_recipe;
pub mod s_player_abilities;
pub mod s_player_action;
pub mod s_player_command;
pub mod s_player_input;
pub mod s_pong;
pub mod s_recipe_book_change_settings;
pub mod s_recipe_book_seen_recipe;
pub mod s_rename_item;
pub mod s_resource_pack;
pub mod s_seen_advancements;
pub mod s_select_bundle_item;
pub mod s_select_trade;
pub mod s_set_beacon;
pub mod s_set_carried_item;
pub mod s_set_command_block;
pub mod s_set_command_minecart;
pub mod s_set_creative_mode_slot;
pub mod s_set_jigsaw_block;
pub mod s_set_structure_block;
pub mod s_sign_update;
pub mod s_swing;
pub mod s_teleport_to_entity;
pub mod s_use_item;
pub mod s_use_item_on;
use azalea_protocol_macros::declare_state_packets; use azalea_protocol_macros::declare_state_packets;
// see GameProtocols.java in the decompiled vanilla source // see GameProtocols.java in the decompiled vanilla source
declare_state_packets!( declare_state_packets!(
GamePacket, GamePacket,
Serverbound => { Serverbound => [
0x00: s_accept_teleportation::ServerboundAcceptTeleportation, s_accept_teleportation::ServerboundAcceptTeleportation,
0x01: s_block_entity_tag_query::ServerboundBlockEntityTagQuery, s_block_entity_tag_query::ServerboundBlockEntityTagQuery,
0x02: s_select_bundle_item::ServerboundSelectBundleItem, s_select_bundle_item::ServerboundSelectBundleItem,
0x03: s_change_difficulty::ServerboundChangeDifficulty, s_change_difficulty::ServerboundChangeDifficulty,
0x04: s_chat_ack::ServerboundChatAck, s_chat_ack::ServerboundChatAck,
0x05: s_chat_command::ServerboundChatCommand, s_chat_command::ServerboundChatCommand,
0x06: s_chat_command_signed::ServerboundChatCommandSigned, s_chat_command_signed::ServerboundChatCommandSigned,
0x07: s_chat::ServerboundChat, s_chat::ServerboundChat,
0x08: s_chat_session_update::ServerboundChatSessionUpdate, s_chat_session_update::ServerboundChatSessionUpdate,
0x09: s_chunk_batch_received::ServerboundChunkBatchReceived, s_chunk_batch_received::ServerboundChunkBatchReceived,
0x0a: s_client_command::ServerboundClientCommand, s_client_command::ServerboundClientCommand,
0x0b: s_client_tick_end::ServerboundTickEnd, s_client_tick_end::ServerboundTickEnd,
0x0c: s_client_information::ServerboundClientInformation, s_client_information::ServerboundClientInformation,
0x0d: s_command_suggestion::ServerboundCommandSuggestion, s_command_suggestion::ServerboundCommandSuggestion,
0x0e: s_configuration_acknowledged::ServerboundConfigurationAcknowledged, s_configuration_acknowledged::ServerboundConfigurationAcknowledged,
0x0f: s_container_button_click::ServerboundContainerButtonClick, s_container_button_click::ServerboundContainerButtonClick,
0x10: s_container_click::ServerboundContainerClick, s_container_click::ServerboundContainerClick,
0x11: s_container_close::ServerboundContainerClose, s_container_close::ServerboundContainerClose,
0x12: s_container_slot_state_changed::ServerboundContainerSlotStateChanged, s_container_slot_state_changed::ServerboundContainerSlotStateChanged,
0x13: s_cookie_response::ServerboundCookieResponse, s_cookie_response::ServerboundCookieResponse,
0x14: s_custom_payload::ServerboundCustomPayload, s_custom_payload::ServerboundCustomPayload,
0x15: s_debug_sample_subscription::ServerboundDebugSampleSubscription, s_debug_sample_subscription::ServerboundDebugSampleSubscription,
0x16: s_edit_book::ServerboundEditBook, s_edit_book::ServerboundEditBook,
0x17: s_entity_tag_query::ServerboundEntityTagQuery, s_entity_tag_query::ServerboundEntityTagQuery,
0x18: s_interact::ServerboundInteract, s_interact::ServerboundInteract,
0x19: s_jigsaw_generate::ServerboundJigsawGenerate, s_jigsaw_generate::ServerboundJigsawGenerate,
0x1a: s_keep_alive::ServerboundKeepAlive, s_keep_alive::ServerboundKeepAlive,
0x1b: s_lock_difficulty::ServerboundLockDifficulty, s_lock_difficulty::ServerboundLockDifficulty,
0x1c: s_move_player_pos::ServerboundMovePlayerPos, s_move_player_pos::ServerboundMovePlayerPos,
0x1d: s_move_player_pos_rot::ServerboundMovePlayerPosRot, s_move_player_pos_rot::ServerboundMovePlayerPosRot,
0x1e: s_move_player_rot::ServerboundMovePlayerRot, s_move_player_rot::ServerboundMovePlayerRot,
0x1f: s_move_player_status_only::ServerboundMovePlayerStatusOnly, s_move_player_status_only::ServerboundMovePlayerStatusOnly,
0x20: s_move_vehicle::ServerboundMoveVehicle, s_move_vehicle::ServerboundMoveVehicle,
0x21: s_paddle_boat::ServerboundPaddleBoat, s_paddle_boat::ServerboundPaddleBoat,
0x22: s_pick_item::ServerboundPickItem, s_pick_item::ServerboundPickItem,
0x23: s_ping_request::ServerboundPingRequest, s_ping_request::ServerboundPingRequest,
0x24: s_place_recipe::ServerboundPlaceRecipe, s_place_recipe::ServerboundPlaceRecipe,
0x25: s_player_abilities::ServerboundPlayerAbilities, s_player_abilities::ServerboundPlayerAbilities,
0x26: s_player_action::ServerboundPlayerAction, s_player_action::ServerboundPlayerAction,
0x27: s_player_command::ServerboundPlayerCommand, s_player_command::ServerboundPlayerCommand,
0x28: s_player_input::ServerboundPlayerInput, s_player_input::ServerboundPlayerInput,
0x29: s_pong::ServerboundPong, s_pong::ServerboundPong,
0x2a: s_recipe_book_change_settings::ServerboundRecipeBookChangeSettings, s_recipe_book_change_settings::ServerboundRecipeBookChangeSettings,
0x2b: s_recipe_book_seen_recipe::ServerboundRecipeBookSeenRecipe, s_recipe_book_seen_recipe::ServerboundRecipeBookSeenRecipe,
0x2c: s_rename_item::ServerboundRenameItem, s_rename_item::ServerboundRenameItem,
0x2d: s_resource_pack::ServerboundResourcePack, s_resource_pack::ServerboundResourcePack,
0x2e: s_seen_advancements::ServerboundSeenAdvancements, s_seen_advancements::ServerboundSeenAdvancements,
0x2f: s_select_trade::ServerboundSelectTrade, s_select_trade::ServerboundSelectTrade,
0x30: s_set_beacon::ServerboundSetBeacon, s_set_beacon::ServerboundSetBeacon,
0x31: s_set_carried_item::ServerboundSetCarriedItem, s_set_carried_item::ServerboundSetCarriedItem,
0x32: s_set_command_block::ServerboundSetCommandBlock, s_set_command_block::ServerboundSetCommandBlock,
0x33: s_set_command_minecart::ServerboundSetCommandMinecart, s_set_command_minecart::ServerboundSetCommandMinecart,
0x34: s_set_creative_mode_slot::ServerboundSetCreativeModeSlot, s_set_creative_mode_slot::ServerboundSetCreativeModeSlot,
0x35: s_set_jigsaw_block::ServerboundSetJigsawBlock, s_set_jigsaw_block::ServerboundSetJigsawBlock,
0x36: s_set_structure_block::ServerboundSetStructureBlock, s_set_structure_block::ServerboundSetStructureBlock,
0x37: s_sign_update::ServerboundSignUpdate, s_sign_update::ServerboundSignUpdate,
0x38: s_swing::ServerboundSwing, s_swing::ServerboundSwing,
0x39: s_teleport_to_entity::ServerboundTeleportToEntity, s_teleport_to_entity::ServerboundTeleportToEntity,
0x3a: s_use_item_on::ServerboundUseItemOn, s_use_item_on::ServerboundUseItemOn,
0x3b: s_use_item::ServerboundUseItem, s_use_item::ServerboundUseItem,
}, ],
Clientbound => { Clientbound => [
0x00: c_bundle::ClientboundBundle, c_bundle::ClientboundBundle,
0x01: c_add_entity::ClientboundAddEntity, c_add_entity::ClientboundAddEntity,
0x02: c_add_experience_orb::ClientboundAddExperienceOrb, c_add_experience_orb::ClientboundAddExperienceOrb,
0x03: c_animate::ClientboundAnimate, c_animate::ClientboundAnimate,
0x04: c_award_stats::ClientboundAwardStats, c_award_stats::ClientboundAwardStats,
0x05: c_block_changed_ack::ClientboundBlockChangedAck, c_block_changed_ack::ClientboundBlockChangedAck,
0x06: c_block_destruction::ClientboundBlockDestruction, c_block_destruction::ClientboundBlockDestruction,
0x07: c_block_entity_data::ClientboundBlockEntityData, c_block_entity_data::ClientboundBlockEntityData,
0x08: c_block_event::ClientboundBlockEvent, c_block_event::ClientboundBlockEvent,
0x09: c_block_update::ClientboundBlockUpdate, c_block_update::ClientboundBlockUpdate,
0x0a: c_boss_event::ClientboundBossEvent, c_boss_event::ClientboundBossEvent,
0x0b: c_change_difficulty::ClientboundChangeDifficulty, c_change_difficulty::ClientboundChangeDifficulty,
0x0c: c_chunk_batch_finished::ClientboundChunkBatchFinished, c_chunk_batch_finished::ClientboundChunkBatchFinished,
0x0d: c_chunk_batch_start::ClientboundChunkBatchStart, c_chunk_batch_start::ClientboundChunkBatchStart,
0x0e: c_chunks_biomes::ClientboundChunksBiomes, c_chunks_biomes::ClientboundChunksBiomes,
0x0f: c_clear_titles::ClientboundClearTitles, c_clear_titles::ClientboundClearTitles,
0x10: c_command_suggestions::ClientboundCommandSuggestions, c_command_suggestions::ClientboundCommandSuggestions,
0x11: c_commands::ClientboundCommands, c_commands::ClientboundCommands,
0x12: c_container_close::ClientboundContainerClose, c_container_close::ClientboundContainerClose,
0x13: c_container_set_content::ClientboundContainerSetContent, c_container_set_content::ClientboundContainerSetContent,
0x14: c_container_set_data::ClientboundContainerSetData, c_container_set_data::ClientboundContainerSetData,
0x15: c_container_set_slot::ClientboundContainerSetSlot, c_container_set_slot::ClientboundContainerSetSlot,
0x16: c_cookie_request::ClientboundCookieRequest, c_cookie_request::ClientboundCookieRequest,
0x17: c_cooldown::ClientboundCooldown, c_cooldown::ClientboundCooldown,
0x18: c_custom_chat_completions::ClientboundCustomChatCompletions, c_custom_chat_completions::ClientboundCustomChatCompletions,
0x19: c_custom_payload::ClientboundCustomPayload, c_custom_payload::ClientboundCustomPayload,
0x1a: c_damage_event::ClientboundDamageEvent, c_damage_event::ClientboundDamageEvent,
0x1b: c_debug_sample::ClientboundDebugSample, c_debug_sample::ClientboundDebugSample,
0x1c: c_delete_chat::ClientboundDeleteChat, c_delete_chat::ClientboundDeleteChat,
0x1d: c_disconnect::ClientboundDisconnect, c_disconnect::ClientboundDisconnect,
0x1e: c_disguised_chat::ClientboundDisguisedChat, c_disguised_chat::ClientboundDisguisedChat,
0x1f: c_entity_event::ClientboundEntityEvent, c_entity_event::ClientboundEntityEvent,
0x20: c_entity_position_sync::ClientboundEntityPositionSync, c_entity_position_sync::ClientboundEntityPositionSync,
0x21: c_explode::ClientboundExplode, c_explode::ClientboundExplode,
0x22: c_forget_level_chunk::ClientboundForgetLevelChunk, c_forget_level_chunk::ClientboundForgetLevelChunk,
0x23: c_game_event::ClientboundGameEvent, c_game_event::ClientboundGameEvent,
0x24: c_horse_screen_open::ClientboundHorseScreenOpen, c_horse_screen_open::ClientboundHorseScreenOpen,
0x25: c_hurt_animation::ClientboundHurtAnimation, c_hurt_animation::ClientboundHurtAnimation,
0x26: c_initialize_border::ClientboundInitializeBorder, c_initialize_border::ClientboundInitializeBorder,
0x27: c_keep_alive::ClientboundKeepAlive, c_keep_alive::ClientboundKeepAlive,
0x28: c_level_chunk_with_light::ClientboundLevelChunkWithLight, c_level_chunk_with_light::ClientboundLevelChunkWithLight,
0x29: c_level_event::ClientboundLevelEvent, c_level_event::ClientboundLevelEvent,
0x2a: c_level_particles::ClientboundLevelParticles, c_level_particles::ClientboundLevelParticles,
0x2b: c_light_update::ClientboundLightUpdate, c_light_update::ClientboundLightUpdate,
0x2c: c_login::ClientboundLogin, c_login::ClientboundLogin,
0x2d: c_map_item_data::ClientboundMapItemData, c_map_item_data::ClientboundMapItemData,
0x2e: c_merchant_offers::ClientboundMerchantOffers, c_merchant_offers::ClientboundMerchantOffers,
0x2f: c_move_entity_pos::ClientboundMoveEntityPos, c_move_entity_pos::ClientboundMoveEntityPos,
0x30: c_move_entity_pos_rot::ClientboundMoveEntityPosRot, c_move_entity_pos_rot::ClientboundMoveEntityPosRot,
0x31: c_move_minecart::ClientboundMoveMinecart, c_move_minecart::ClientboundMoveMinecart,
0x32: c_move_entity_rot::ClientboundMoveEntityRot, c_move_entity_rot::ClientboundMoveEntityRot,
0x33: c_move_vehicle::ClientboundMoveVehicle, c_move_vehicle::ClientboundMoveVehicle,
0x34: c_open_book::ClientboundOpenBook, c_open_book::ClientboundOpenBook,
0x35: c_open_screen::ClientboundOpenScreen, c_open_screen::ClientboundOpenScreen,
0x36: c_open_sign_editor::ClientboundOpenSignEditor, c_open_sign_editor::ClientboundOpenSignEditor,
0x37: c_ping::ClientboundPing, c_ping::ClientboundPing,
0x38: c_pong_response::ClientboundPongResponse, c_pong_response::ClientboundPongResponse,
0x39: c_place_ghost_recipe::ClientboundPlaceGhostRecipe, c_place_ghost_recipe::ClientboundPlaceGhostRecipe,
0x3a: c_player_abilities::ClientboundPlayerAbilities, c_player_abilities::ClientboundPlayerAbilities,
0x3b: c_player_chat::ClientboundPlayerChat, c_player_chat::ClientboundPlayerChat,
0x3c: c_player_combat_end::ClientboundPlayerCombatEnd, c_player_combat_end::ClientboundPlayerCombatEnd,
0x3d: c_player_combat_enter::ClientboundPlayerCombatEnter, c_player_combat_enter::ClientboundPlayerCombatEnter,
0x3e: c_player_combat_kill::ClientboundPlayerCombatKill, c_player_combat_kill::ClientboundPlayerCombatKill,
0x3f: c_player_info_remove::ClientboundPlayerInfoRemove, c_player_info_remove::ClientboundPlayerInfoRemove,
0x40: c_player_info_update::ClientboundPlayerInfoUpdate, c_player_info_update::ClientboundPlayerInfoUpdate,
0x41: c_player_look_at::ClientboundPlayerLookAt, c_player_look_at::ClientboundPlayerLookAt,
0x42: c_player_position::ClientboundPlayerPosition, c_player_position::ClientboundPlayerPosition,
0x43: c_player_rotation::ClientboundPlayerRotation, c_player_rotation::ClientboundPlayerRotation,
0x44: c_recipe_book_add::ClientboundRecipeBookAdd, c_recipe_book_add::ClientboundRecipeBookAdd,
0x45: c_recipe_book_remove::ClientboundRecipeBookRemove, c_recipe_book_remove::ClientboundRecipeBookRemove,
0x46: c_recipe_book_settings::ClientboundRecipeBookSettings, c_recipe_book_settings::ClientboundRecipeBookSettings,
0x47: c_remove_entities::ClientboundRemoveEntities, c_remove_entities::ClientboundRemoveEntities,
0x48: c_remove_mob_effect::ClientboundRemoveMobEffect, c_remove_mob_effect::ClientboundRemoveMobEffect,
0x49: c_reset_score::ClientboundResetScore, c_reset_score::ClientboundResetScore,
0x4a: c_resource_pack_pop::ClientboundResourcePackPop, c_resource_pack_pop::ClientboundResourcePackPop,
0x4b: c_resource_pack_push::ClientboundResourcePackPush, c_resource_pack_push::ClientboundResourcePackPush,
0x4c: c_respawn::ClientboundRespawn, c_respawn::ClientboundRespawn,
0x4d: c_rotate_head::ClientboundRotateHead, c_rotate_head::ClientboundRotateHead,
0x4e: c_section_blocks_update::ClientboundSectionBlocksUpdate, c_section_blocks_update::ClientboundSectionBlocksUpdate,
0x4f: c_select_advancements_tab::ClientboundSelectAdvancementsTab, c_select_advancements_tab::ClientboundSelectAdvancementsTab,
0x50: c_server_data::ClientboundServerData, c_server_data::ClientboundServerData,
0x51: c_set_action_bar_text::ClientboundSetActionBarText, c_set_action_bar_text::ClientboundSetActionBarText,
0x52: c_set_border_center::ClientboundSetBorderCenter, c_set_border_center::ClientboundSetBorderCenter,
0x53: c_set_border_lerp_size::ClientboundSetBorderLerpSize, c_set_border_lerp_size::ClientboundSetBorderLerpSize,
0x54: c_set_border_size::ClientboundSetBorderSize, c_set_border_size::ClientboundSetBorderSize,
0x55: c_set_border_warning_delay::ClientboundSetBorderWarningDelay, c_set_border_warning_delay::ClientboundSetBorderWarningDelay,
0x56: c_set_border_warning_distance::ClientboundSetBorderWarningDistance, c_set_border_warning_distance::ClientboundSetBorderWarningDistance,
0x57: c_set_camera::ClientboundSetCamera, c_set_camera::ClientboundSetCamera,
0x58: c_set_chunk_cache_center::ClientboundSetChunkCacheCenter, c_set_chunk_cache_center::ClientboundSetChunkCacheCenter,
0x59: c_set_chunk_cache_radius::ClientboundSetChunkCacheRadius, c_set_chunk_cache_radius::ClientboundSetChunkCacheRadius,
0x5a: c_set_cursor_item::ClientboundSetCursorItem, c_set_cursor_item::ClientboundSetCursorItem,
0x5b: c_set_default_spawn_position::ClientboundSetDefaultSpawnPosition, c_set_default_spawn_position::ClientboundSetDefaultSpawnPosition,
0x5c: c_set_display_objective::ClientboundSetDisplayObjective, c_set_display_objective::ClientboundSetDisplayObjective,
0x5d: c_set_entity_data::ClientboundSetEntityData, c_set_entity_data::ClientboundSetEntityData,
0x5e: c_set_entity_link::ClientboundSetEntityLink, c_set_entity_link::ClientboundSetEntityLink,
0x5f: c_set_entity_motion::ClientboundSetEntityMotion, c_set_entity_motion::ClientboundSetEntityMotion,
0x60: c_set_equipment::ClientboundSetEquipment, c_set_equipment::ClientboundSetEquipment,
0x61: c_set_experience::ClientboundSetExperience, c_set_experience::ClientboundSetExperience,
0x62: c_set_health::ClientboundSetHealth, c_set_health::ClientboundSetHealth,
0x63: c_set_held_slot::ClientboundSetHeldSlot, c_set_held_slot::ClientboundSetHeldSlot,
0x64: c_set_objective::ClientboundSetObjective, c_set_objective::ClientboundSetObjective,
0x65: c_set_passengers::ClientboundSetPassengers, c_set_passengers::ClientboundSetPassengers,
0x66: c_set_player_inventory::ClientboundSetPlayerInventory, c_set_player_inventory::ClientboundSetPlayerInventory,
0x67: c_set_player_team::ClientboundSetPlayerTeam, c_set_player_team::ClientboundSetPlayerTeam,
0x68: c_set_score::ClientboundSetScore, c_set_score::ClientboundSetScore,
0x69: c_set_simulation_distance::ClientboundSetSimulationDistance, c_set_simulation_distance::ClientboundSetSimulationDistance,
0x6a: c_set_subtitle_text::ClientboundSetSubtitleText, c_set_subtitle_text::ClientboundSetSubtitleText,
0x6b: c_set_time::ClientboundSetTime, c_set_time::ClientboundSetTime,
0x6c: c_set_title_text::ClientboundSetTitleText, c_set_title_text::ClientboundSetTitleText,
0x6d: c_set_titles_animation::ClientboundSetTitlesAnimation, c_set_titles_animation::ClientboundSetTitlesAnimation,
0x6e: c_sound_entity::ClientboundSoundEntity, c_sound_entity::ClientboundSoundEntity,
0x6f: c_sound::ClientboundSound, c_sound::ClientboundSound,
0x70: c_start_configuration::ClientboundStartConfiguration, c_start_configuration::ClientboundStartConfiguration,
0x71: c_stop_sound::ClientboundStopSound, c_stop_sound::ClientboundStopSound,
0x72: c_store_cookie::ClientboundStoreCookie, c_store_cookie::ClientboundStoreCookie,
0x73: c_system_chat::ClientboundSystemChat, c_system_chat::ClientboundSystemChat,
0x74: c_tab_list::ClientboundTabList, c_tab_list::ClientboundTabList,
0x75: c_tag_query::ClientboundTagQuery, c_tag_query::ClientboundTagQuery,
0x76: c_take_item_entity::ClientboundTakeItemEntity, c_take_item_entity::ClientboundTakeItemEntity,
0x77: c_teleport_entity::ClientboundTeleportEntity, c_teleport_entity::ClientboundTeleportEntity,
0x78: c_ticking_state::ClientboundTickingState, c_ticking_state::ClientboundTickingState,
0x79: c_ticking_step::ClientboundTickingStep, c_ticking_step::ClientboundTickingStep,
0x7a: c_transfer::ClientboundTransfer, c_transfer::ClientboundTransfer,
0x7b: c_update_advancements::ClientboundUpdateAdvancements, c_update_advancements::ClientboundUpdateAdvancements,
0x7c: c_update_attributes::ClientboundUpdateAttributes, c_update_attributes::ClientboundUpdateAttributes,
0x7d: c_update_mob_effect::ClientboundUpdateMobEffect, c_update_mob_effect::ClientboundUpdateMobEffect,
0x7e: c_update_recipes::ClientboundUpdateRecipes, c_update_recipes::ClientboundUpdateRecipes,
0x7f: c_update_tags::ClientboundUpdateTags, c_update_tags::ClientboundUpdateTags,
0x80: c_projectile_power::ClientboundProjectilePower, c_projectile_power::ClientboundProjectilePower,
0x81: c_custom_report_details::ClientboundCustomReportDetails, c_custom_report_details::ClientboundCustomReportDetails,
0x82: c_server_links::ClientboundServerLinks c_server_links::ClientboundServerLinks
} ]
); );

View file

@ -1,11 +1,9 @@
pub mod s_client_intention;
use azalea_protocol_macros::declare_state_packets; use azalea_protocol_macros::declare_state_packets;
declare_state_packets!( declare_state_packets!(
HandshakePacket, HandshakePacket,
Serverbound => { Serverbound => [
0x00: s_client_intention::ServerboundClientIntention, s_client_intention::ServerboundClientIntention,
}, ],
Clientbound => {} Clientbound => []
); );

View file

@ -1,32 +1,20 @@
pub mod c_cookie_request;
pub mod c_custom_query;
pub mod c_hello;
pub mod c_login_compression;
pub mod c_login_disconnect;
pub mod c_login_finished;
pub mod s_cookie_response;
pub mod s_custom_query_answer;
pub mod s_hello;
pub mod s_key;
pub mod s_login_acknowledged;
use azalea_protocol_macros::declare_state_packets; use azalea_protocol_macros::declare_state_packets;
declare_state_packets!( declare_state_packets!(
LoginPacket, LoginPacket,
Serverbound => { Serverbound => [
0x00: s_hello::ServerboundHello, s_hello::ServerboundHello,
0x01: s_key::ServerboundKey, s_key::ServerboundKey,
0x02: s_custom_query_answer::ServerboundCustomQueryAnswer, s_custom_query_answer::ServerboundCustomQueryAnswer,
0x03: s_login_acknowledged::ServerboundLoginAcknowledged, s_login_acknowledged::ServerboundLoginAcknowledged,
0x04: s_cookie_response::ServerboundCookieResponse, s_cookie_response::ServerboundCookieResponse,
}, ],
Clientbound => { Clientbound => [
0x00: c_login_disconnect::ClientboundLoginDisconnect, c_login_disconnect::ClientboundLoginDisconnect,
0x01: c_hello::ClientboundHello, c_hello::ClientboundHello,
0x02: c_login_finished::ClientboundLoginFinished, c_login_finished::ClientboundLoginFinished,
0x03: c_login_compression::ClientboundLoginCompression, c_login_compression::ClientboundLoginCompression,
0x04: c_custom_query::ClientboundCustomQuery, c_custom_query::ClientboundCustomQuery,
0x05: c_cookie_request::ClientboundCookieRequest, c_cookie_request::ClientboundCookieRequest,
} ]
); );

View file

@ -1,18 +1,13 @@
pub mod c_pong_response;
pub mod c_status_response;
pub mod s_ping_request;
pub mod s_status_request;
use azalea_protocol_macros::declare_state_packets; use azalea_protocol_macros::declare_state_packets;
declare_state_packets!( declare_state_packets!(
StatusPacket, StatusPacket,
Serverbound => { Serverbound => [
0x00: s_status_request::ServerboundStatusRequest, s_status_request::ServerboundStatusRequest,
0x01: s_ping_request::ServerboundPingRequest, s_ping_request::ServerboundPingRequest,
}, ],
Clientbound => { Clientbound => [
0x00: c_status_response::ClientboundStatusResponse, c_status_response::ClientboundStatusResponse,
0x01: c_pong_response::ClientboundPongResponse, c_pong_response::ClientboundPongResponse,
} ]
); );

View file

@ -1,18 +0,0 @@
import os
path = 'azalea-protocol/src/packets/status'
# rename all the files from like "c_ping_packet.rs" to "c_ping.rs"
for filename in os.listdir(path):
if filename.endswith('_packet.rs'):
new_filename = filename.replace('c_', 'c_').replace('s_', 's_').replace('_packet', '')
print(filename, new_filename)
os.rename(os.path.join(path, filename), os.path.join(path, new_filename))
with open(os.path.join(path, new_filename), 'r') as f:
contents = f.read()
contents = contents.replace('Packet {', ' {')
with open(os.path.join(path, new_filename), 'w') as f:
f.write(contents)