diff --git a/crates/proto/src/version/v766/enums/boss_event_update_type.rs b/crates/proto/src/version/v748/enums/boss_event_update_type.rs similarity index 100% rename from crates/proto/src/version/v766/enums/boss_event_update_type.rs rename to crates/proto/src/version/v748/enums/boss_event_update_type.rs diff --git a/crates/proto/src/version/v766/enums/code_builder_execution_state.rs b/crates/proto/src/version/v748/enums/code_builder_execution_state.rs similarity index 100% rename from crates/proto/src/version/v766/enums/code_builder_execution_state.rs rename to crates/proto/src/version/v748/enums/code_builder_execution_state.rs diff --git a/crates/proto/src/version/v766/enums/data_item_type.rs b/crates/proto/src/version/v748/enums/data_item_type.rs similarity index 100% rename from crates/proto/src/version/v766/enums/data_item_type.rs rename to crates/proto/src/version/v748/enums/data_item_type.rs diff --git a/crates/proto/src/version/v766/enums/item_stack_net_result.rs b/crates/proto/src/version/v748/enums/item_stack_net_result.rs similarity index 97% rename from crates/proto/src/version/v766/enums/item_stack_net_result.rs rename to crates/proto/src/version/v748/enums/item_stack_net_result.rs index 1a81ae0f..ce93abd8 100644 --- a/crates/proto/src/version/v766/enums/item_stack_net_result.rs +++ b/crates/proto/src/version/v748/enums/item_stack_net_result.rs @@ -1,4 +1,4 @@ -use crate::version::v766::types::ItemStackResponseContainerInfo; +use crate::version::v748::types::ItemStackResponseContainerInfo; use bedrockrs_macros::ProtoCodec; #[derive(ProtoCodec, Clone, Debug)] diff --git a/crates/proto/src/version/v748/enums/mod.rs b/crates/proto/src/version/v748/enums/mod.rs new file mode 100644 index 00000000..9b39ca98 --- /dev/null +++ b/crates/proto/src/version/v748/enums/mod.rs @@ -0,0 +1,14 @@ +macro_rules! export { + ($name:ident) => { + mod $name; + pub use $name::*; + }; +} + +export!(player_action_type); +export!(recipe_unlocking_context); +export!(data_item_type); +export!(boss_event_update_type); +export!(code_builder_execution_state); +export!(soft_enum_update_type); +export!(item_stack_net_result); diff --git a/crates/proto/src/version/v748/enums/player_action_type.rs b/crates/proto/src/version/v748/enums/player_action_type.rs new file mode 100644 index 00000000..db3098df --- /dev/null +++ b/crates/proto/src/version/v748/enums/player_action_type.rs @@ -0,0 +1,72 @@ +use crate::version::v662::types::BlockPos; +use bedrockrs_macros::ProtoCodec; + +#[derive(ProtoCodec, Clone, Debug)] +#[enum_repr(i32)] +#[enum_endianness(var)] +#[repr(i32)] +pub enum PlayerActionType { + Unknown = -1, + StartDestroyBlock { + position: BlockPos, + #[endianness(var)] + facing: i32, + } = 0, + AbortDestroyBlock { + position: BlockPos, + #[endianness(var)] + facing: i32, + } = 1, + StopDestroyBlock { + position: BlockPos, + #[endianness(var)] + facing: i32, + } = 2, + GetUpdatedBlock = 3, + DropItem = 4, + StartSleeping = 5, + StopSleeping = 6, + Respawn = 7, + StartJump = 8, + StartSprinting = 9, + StopSprinting = 10, + StartSneaking = 11, + StopSneaking = 12, + CreativeDestroyBlock = 13, + ChangeDimensionAck = 14, + StartGliding = 15, + StopGliding = 16, + DenyDestroyBlock = 17, + CrackBlock { + position: BlockPos, + #[endianness(var)] + facing: i32, + } = 18, + ChangeSkin = 19, + DeprecatedUpdatedEnchantingSeed = 20, + StartSwimming = 21, + StopSwimming = 22, + StartSpinAttack = 23, + StopSpinAttack = 24, + InteractWithBlock = 25, + PredictDestroyBlock { + position: BlockPos, + #[endianness(var)] + facing: i32, + } = 26, + ContinueDestroyBlock { + position: BlockPos, + #[endianness(var)] + facing: i32, + } = 27, + StartItemUseOn = 28, + StopItemUseOn = 29, + HandledTeleport = 30, + MissedSwing = 31, + StartCrawling = 32, + StopCrawling = 33, + StartFlying = 34, + StopFlying = 35, + ClientAckServerData = 36, + Count = 37, +} diff --git a/crates/proto/src/version/v766/enums/recipe_unlocking_context.rs b/crates/proto/src/version/v748/enums/recipe_unlocking_context.rs similarity index 100% rename from crates/proto/src/version/v766/enums/recipe_unlocking_context.rs rename to crates/proto/src/version/v748/enums/recipe_unlocking_context.rs diff --git a/crates/proto/src/version/v766/enums/soft_enum_update_type.rs b/crates/proto/src/version/v748/enums/soft_enum_update_type.rs similarity index 100% rename from crates/proto/src/version/v766/enums/soft_enum_update_type.rs rename to crates/proto/src/version/v748/enums/soft_enum_update_type.rs diff --git a/crates/proto/src/version/v748/gamepackets.rs b/crates/proto/src/version/v748/gamepackets.rs new file mode 100644 index 00000000..7e367405 --- /dev/null +++ b/crates/proto/src/version/v748/gamepackets.rs @@ -0,0 +1,275 @@ +use crate::v662::packets::{CraftingDataPacket, PlayerListPacket}; +use crate::v748::packets::{ + AddActorPacket, AddItemActorPacket, AddPlayerPacket, AwardAchievementPacket, BossEventPacket, + CameraAimAssistPacket, CameraInstructionPacket, CameraPresetsPacket, ChangeDimensionPacket, + ClientBoundCloseFormPacket, ClientBoundDebugRendererPacket, ClientBoundMapItemDataPacket, + CodeBuilderSourcePacket, ContainerClosePacket, ContainerRegistryCleanupPacket, + CorrectPlayerMovePredictionPacket, CurrentStructureFeaturePacket, DisconnectPacket, + EditorNetworkPacket, EmotePacket, InventoryContentPacket, InventorySlotPacket, + ItemStackRequestPacket, ItemStackResponsePacket, JigsawStructureDataPacket, + LegacyTelemetryEventPacket, MobArmorEquipmentPacket, PlayerActionPacket, + PlayerArmorDamagePacket, PlayerAuthInputPacket, ResourcePackStackPacket, + ResourcePacksInfoPacket, ServerBoundDiagnosticsPacket, ServerBoundLoadingScreenPacket, + SetActorDataPacket, SetActorLinkPacket, SetTitlePacket, StartGamePacket, StopSoundPacket, + TextPacket, TransferPlayerPacket, UpdateAttributesPacket, UpdatePlayerGameTypePacket, + UpdateSoftEnumPacket, +}; +use crate::version::v662::packets::{ + ActorEventPacket, ActorPickRequestPacket, AddBehaviourTreePacket, AddPaintingPacket, + AddVolumeEntityPacket, AgentActionEventPacket, AgentAnimationPacket, AnimateEntityPacket, + AnimatePacket, AnvilDamagePacket, AutomationClientConnectPacket, + AvailableActorIdentifiersPacket, AvailableCommandsPacket, BiomeDefinitionListPacket, + BlockActorDataPacket, BlockEventPacket, BlockPickRequestPacket, BookEditPacket, CameraPacket, + CameraShakePacket, ChangeMobPropertyPacket, ChunkRadiusUpdatedPacket, + ClientCacheBlobStatusPacket, ClientCacheMissResponsePacket, ClientCacheStatusPacket, + ClientToServerHandshakePacket, CodeBuilderPacket, CommandBlockUpdatePacket, + CommandOutputPacket, CommandRequestPacket, CompletedUsingItemPacket, + CompressedBiomeDefinitionListPacket, ContainerOpenPacket, ContainerSetDataPacket, + CreatePhotoPacket, CreativeContentPacket, DeathInfoPacket, DebugInfoPacket, + DimensionDataPacket, EduUriResourcePacket, EducationSettingsPacket, EmoteListPacket, + FeatureRegistryPacket, GameRulesChangedPacket, GameTestRequestPacket, GameTestResultsPacket, + GuiDataPickItemPacket, HurtArmorPacket, InteractPacket, InventoryTransactionPacket, + ItemComponentPacket, LabTablePacket, LecternUpdatePacket, LessonProgressPacket, + LevelChunkPacket, LevelEventGenericPacket, LevelEventPacket, LevelSoundEventPacket, + LevelSoundEventPacketV1, LevelSoundEventPacketV2, LoginPacket, MapCreateLockedCopyPacket, + MapInfoRequestPacket, MobEffectPacket, MobEquipmentPacket, ModalFormRequestPacket, + ModalFormResponsePacket, MotionPredictionHintsPacket, MoveActorAbsolutePacket, + MoveActorDeltaPacket, MovePlayerPacket, MultiplayerSettingsPacket, + NetworkChunkPublisherUpdatePacket, NetworkSettingsPacket, NetworkStackLatencyPacket, + NpcDialoguePacket, NpcRequestPacket, OnScreenTextureAnimationPacket, OpenSignPacket, + PacketViolationWarningPacket, PassengerJumpPacket, PhotoTransferPacket, PlaySoundPacket, + PlayStatusPacket, PlayerEnchantOptionsPacket, PlayerFogPacket, PlayerHotbarPacket, + PlayerInputPacket, PlayerSkinPacket, PlayerStartItemCooldownPacket, + PlayerToggleCrafterSlotRequestPacket, PositionTrackingDBClientRequestPacket, + PositionTrackingDBServerBroadcastPacket, PurchaseReceiptPacket, RefreshEntitlementsPacket, + RemoveActorPacket, RemoveObjectivePacket, RemoveVolumeEntityPacket, RequestAbilityPacket, + RequestChunkRadiusPacket, RequestNetworkSettingsPacket, RequestPermissionsPacket, + ResourcePackChunkDataPacket, ResourcePackChunkRequestPacket, ResourcePackClientResponsePacket, + ResourcePackDataInfoPacket, RespawnPacket, ScriptMessagePacket, + ServerPlayerPostMovePositionPacket, ServerSettingsRequestPacket, ServerSettingsResponsePacket, + ServerStatsPacket, ServerToClientHandshakePacket, SetActorMotionPacket, + SetCommandsEnabledPacket, SetDefaultGameTypePacket, SetDifficultyPacket, + SetDisplayObjectivePacket, SetHealthPacket, SetHudPacket, SetLastHurtByPacket, + SetLocalPlayerAsInitializedPacket, SetPlayerGameTypePacket, SetPlayerInventoryOptionsPacket, + SetScorePacket, SetScoreboardIdentityPacket, SetSpawnPositionPacket, SetTimePacket, + SettingsCommandPacket, ShowCreditsPacket, ShowProfilePacket, ShowStoreOfferPacket, + SimpleEventPacket, SimulationTypePacket, SpawnExperienceOrbPacket, SpawnParticleEffectPacket, + StructureBlockUpdatePacket, StructureDataRequestPacket, StructureDataResponsePacket, + SubChunkPacket, SubChunkRequestPacket, SubClientLoginPacket, SyncActorPropertyPacket, + TakeItemActorPacket, TickSyncPacket, TickingAreaLoadStatusPacket, ToastRequestPacket, + TrimDataPacket, UnlockedRecipesPacket, UpdateAbilitiesPacket, UpdateAdventureSettingsPacket, + UpdateBlockPacket, UpdateBlockSyncedPacket, UpdateClientInputLocksPacket, UpdateEquipPacket, + UpdateSubChunkBlocksPacket, UpdateTradePacket, +}; +use crate::version::v662::{ + get_gamepacket_header_size_prediction, read_gamepacket_header, write_gamepacket_header, +}; +use bedrockrs_macros::gamepackets; +use bedrockrs_proto_core::sub_client::SubClientID; +use std::io::{Cursor, Write}; + +gamepackets! { + CurrentStructureFeature: CurrentStructureFeaturePacket, + CameraAimAssist: CameraAimAssistPacket, + AwardAchievent: AwardAchievementPacket, + ClientBoundCloseForm: ClientBoundCloseFormPacket, + ContainerRegistryCleanup: ContainerRegistryCleanupPacket, + JigsawStructureData: JigsawStructureDataPacket, + ServerboundDiagnostics: ServerBoundDiagnosticsPacket, + ServerBoundLoadingScreen: ServerBoundLoadingScreenPacket, + Login: LoginPacket, + PlaySatus: PlayStatusPacket, + ServerToClientHandshake: ServerToClientHandshakePacket, + ClientToServerHandshake: ClientToServerHandshakePacket, + Disconnect: DisconnectPacket, + ResourcePacksInfo: ResourcePacksInfoPacket, + ResourcePackStack: ResourcePackStackPacket, + ResourcePackClientResponse: ResourcePackClientResponsePacket, + Text: TextPacket, + SetTime: SetTimePacket, + StartGame: StartGamePacket, + AddPlayer: AddPlayerPacket, + AddActor: AddActorPacket, + RemoveActor: RemoveActorPacket, + AddItemActor: AddItemActorPacket, + ServerPlayerPostMovePosition: ServerPlayerPostMovePositionPacket, + TakeItemActor: TakeItemActorPacket, + MoveActorAbsolute: MoveActorAbsolutePacket, + MovePlayer: MovePlayerPacket, + PassengerJump: PassengerJumpPacket, + UpdateBlock: UpdateBlockPacket, + AddPainting: AddPaintingPacket, + TickSync: TickSyncPacket, + LevelSoundEventV1: LevelSoundEventPacketV1, + LevelEvent: LevelEventPacket, + BlockEvent: BlockEventPacket, + ActorEvent: ActorEventPacket, + MobEffect: MobEffectPacket, + UpdateAttributes: UpdateAttributesPacket, + InventoryTransaction: InventoryTransactionPacket, + MobEquipment: MobEquipmentPacket, + MobArmorEquipment: MobArmorEquipmentPacket, + Interact: InteractPacket, + BlockPickRequest: BlockPickRequestPacket, + ActorPickRequest: ActorPickRequestPacket, + PlayerAction: PlayerActionPacket, + HurtArmor: HurtArmorPacket, + SetActorData: SetActorDataPacket, + SetActorMotion: SetActorMotionPacket, + SetActorLink: SetActorLinkPacket, + SetHealth: SetHealthPacket, + SetSpawnPosition: SetSpawnPositionPacket, + Animate: AnimatePacket, + Respawn: RespawnPacket, + ContainerOpen: ContainerOpenPacket, + ContainerClose: ContainerClosePacket, + PlayerHotbar: PlayerHotbarPacket, + InventoryContent: InventoryContentPacket, + InventorySlot: InventorySlotPacket, + ContainerSetData: ContainerSetDataPacket, + CraftingData: CraftingDataPacket, + GuiDataPickItem: GuiDataPickItemPacket, + BlockActorData: BlockActorDataPacket, + PlayerInput: PlayerInputPacket, + LevelChunk: LevelChunkPacket, + SetCommandsEnabled: SetCommandsEnabledPacket, + SetDifficulty: SetDifficultyPacket, + ChangeDimension: ChangeDimensionPacket, + SetPlayerGameType: SetPlayerGameTypePacket, + PlayerList: PlayerListPacket, + SimpleEvent: SimpleEventPacket, + LegacyTelemetryEvent: LegacyTelemetryEventPacket, + SpawnExperienceOrb: SpawnExperienceOrbPacket, + ClientBoundMapItemData: ClientBoundMapItemDataPacket, + MapInfoRequest: MapInfoRequestPacket, + RequestChunkRadius: RequestChunkRadiusPacket, + ChunkRadiusUpdated: ChunkRadiusUpdatedPacket, + GameRulesChanged: GameRulesChangedPacket, + Camera: CameraPacket, + BossEvent: BossEventPacket, + ShowCredits: ShowCreditsPacket, + AvailableCommands: AvailableCommandsPacket, + CommandRequest: CommandRequestPacket, + CommandBlockUpdate: CommandBlockUpdatePacket, + CommandOutput: CommandOutputPacket, + UpdateTrade: UpdateTradePacket, + UpdateEquip: UpdateEquipPacket, + ResourcePackDataInfo: ResourcePackDataInfoPacket, + ResourcePackChunkData: ResourcePackChunkDataPacket, + ResourcePackChunkRequest: ResourcePackChunkRequestPacket, + TransferPlayer: TransferPlayerPacket, + PlaySound: PlaySoundPacket, + StopSound: StopSoundPacket, + SetTitle: SetTitlePacket, + AddBehaviourTree: AddBehaviourTreePacket, + StructureBlockUpdate: StructureBlockUpdatePacket, + ShowStoreOffer: ShowStoreOfferPacket, + PurchaseReceipt: PurchaseReceiptPacket, + PlayerSkin: PlayerSkinPacket, + SubClientLogin: SubClientLoginPacket, + AutomationClientConnect: AutomationClientConnectPacket, + SetLastHurtBy: SetLastHurtByPacket, + BookEdit: BookEditPacket, + NpcRequest: NpcRequestPacket, + PhotoTransfer: PhotoTransferPacket, + ModalFormRequest: ModalFormRequestPacket, + ModalFormResponse: ModalFormResponsePacket, + ServerSettingsRequest: ServerSettingsRequestPacket, + ServerSettingsResponse: ServerSettingsResponsePacket, + ShowProfile: ShowProfilePacket, + SetDefaultGameType: SetDefaultGameTypePacket, + RemoveObjective: RemoveObjectivePacket, + SetDisplayObjective: SetDisplayObjectivePacket, + SetScore: SetScorePacket, + LabTable: LabTablePacket, + UpdateBlockSynced: UpdateBlockSyncedPacket, + MoveActorDelta: MoveActorDeltaPacket, + SetScoreboardIdentity: SetScoreboardIdentityPacket, + SetLocalPlayerAsInitialized: SetLocalPlayerAsInitializedPacket, + UpdateSoftEnum: UpdateSoftEnumPacket, + NetworkStackLatency: NetworkStackLatencyPacket, + SpawnParticleEffect: SpawnParticleEffectPacket, + AvailableActorIdentifiers: AvailableActorIdentifiersPacket, + LevelSoundEventV2: LevelSoundEventPacketV2, + NetworkChunkPublisherUpdate: NetworkChunkPublisherUpdatePacket, + BiomeDefinitionList: BiomeDefinitionListPacket, + LevelSoundEvent: LevelSoundEventPacket, + LevelEventGeneric: LevelEventGenericPacket, + LecternUpdate: LecternUpdatePacket, + ClientCacheStatus: ClientCacheStatusPacket, + OnScreenTextureAnimation: OnScreenTextureAnimationPacket, + MapCreateLockedCopy: MapCreateLockedCopyPacket, + StructureDataRequest: StructureDataRequestPacket, + StructureDataResponse: StructureDataResponsePacket, + ClientCacheBlobStatus: ClientCacheBlobStatusPacket, + ClientCacheMissResponse: ClientCacheMissResponsePacket, + EducationSettings: EducationSettingsPacket, + Emote: EmotePacket, + MultiplayerSettings: MultiplayerSettingsPacket, + SettingsCommand: SettingsCommandPacket, + AnvilDamage: AnvilDamagePacket, + CompletedUsingItem: CompletedUsingItemPacket, + NetworkSettings: NetworkSettingsPacket, + PlayerAuthInput: PlayerAuthInputPacket, + CreativeContent: CreativeContentPacket, + PlayerEnchantOptions: PlayerEnchantOptionsPacket, + ItemStackRequest: ItemStackRequestPacket, + ItemStackResponse: ItemStackResponsePacket, + PlayerArmorDamage: PlayerArmorDamagePacket, + CodeBuilder: CodeBuilderPacket, + UpdatePlayerGameType: UpdatePlayerGameTypePacket, + EmoteList: EmoteListPacket, + PositionTrackingDbServerBroadcast: PositionTrackingDBServerBroadcastPacket, + PositionTrackingDbClientRequest: PositionTrackingDBClientRequestPacket, + DebugInfo: DebugInfoPacket, + PacketViolationWarning: PacketViolationWarningPacket, + MotionPredictionHints: MotionPredictionHintsPacket, + AnimateEntity: AnimateEntityPacket, + CameraShake: CameraShakePacket, + PlayerFog: PlayerFogPacket, + CorrectPlayerMovePrediction: CorrectPlayerMovePredictionPacket, + ItemComponent: ItemComponentPacket, + ClientBoundDebugRenderer: ClientBoundDebugRendererPacket, + SyncActorProperty: SyncActorPropertyPacket, + AddVolumeEntity: AddVolumeEntityPacket, + RemoveVolumeEntity: RemoveVolumeEntityPacket, + SimulationType: SimulationTypePacket, + NpcDialogue: NpcDialoguePacket, + EduUriResource: EduUriResourcePacket, + CreatePhoto: CreatePhotoPacket, + UpdateSubChunkBlocks: UpdateSubChunkBlocksPacket, + SubChunk: SubChunkPacket, + SubChunkRequest: SubChunkRequestPacket, + PlayerStartItemCooldown: PlayerStartItemCooldownPacket, + ScriptMessage: ScriptMessagePacket, + CodeBuilderSource: CodeBuilderSourcePacket, + TickingAreaLoadStatus: TickingAreaLoadStatusPacket, + DimensionData: DimensionDataPacket, + AgentActionEvent: AgentActionEventPacket, + ChangeMobProperty: ChangeMobPropertyPacket, + LessonProgress: LessonProgressPacket, + RequestAbility: RequestAbilityPacket, + RequestPermissions: RequestPermissionsPacket, + ToastRequest: ToastRequestPacket, + UpdateAbilities: UpdateAbilitiesPacket, + UpdateAdventureSettings: UpdateAdventureSettingsPacket, + DeathInfo: DeathInfoPacket, + EditorNetwork: EditorNetworkPacket, + FeatureRegistry: FeatureRegistryPacket, + ServerStats: ServerStatsPacket, + RequestNetworkSettings: RequestNetworkSettingsPacket, + GameTestRequest: GameTestRequestPacket, + GameTestResults: GameTestResultsPacket, + UpdateClientInputLocks: UpdateClientInputLocksPacket, + CameraPresets: CameraPresetsPacket, + UnlockedRecipes: UnlockedRecipesPacket, + CameraInstruction: CameraInstructionPacket, + CompressedBiomeDefinitionList: CompressedBiomeDefinitionListPacket, + TrimData: TrimDataPacket, + OpenSign: OpenSignPacket, + AgentAnimation: AgentAnimationPacket, + RefreshEntitlements: RefreshEntitlementsPacket, + PlayerToggleCrafterSlotRequest: PlayerToggleCrafterSlotRequestPacket, + SetPlayerInventoryOptions: SetPlayerInventoryOptionsPacket, + SetHud: SetHudPacket +} diff --git a/crates/proto/src/version/v748/helper.rs b/crates/proto/src/version/v748/helper.rs new file mode 100644 index 00000000..57b2ac6f --- /dev/null +++ b/crates/proto/src/version/v748/helper.rs @@ -0,0 +1,8 @@ +use crate::helper::ProtoHelper; +use crate::version::v748::gamepackets::GamePackets; + +pub struct ProtoHelperV748; + +impl ProtoHelper for ProtoHelperV748 { + type GamePacketType = GamePackets; +} diff --git a/crates/proto/src/version/v748/info.rs b/crates/proto/src/version/v748/info.rs new file mode 100644 index 00000000..3279cfcf --- /dev/null +++ b/crates/proto/src/version/v748/info.rs @@ -0,0 +1 @@ +pub const PROTOCOL_VERSION: i32 = 748; diff --git a/crates/proto/src/version/v748/mod.rs b/crates/proto/src/version/v748/mod.rs index b8d0428d..f5a1e241 100644 --- a/crates/proto/src/version/v748/mod.rs +++ b/crates/proto/src/version/v748/mod.rs @@ -1 +1,8 @@ //! r/21_u4 + +pub mod enums; +pub mod gamepackets; +pub mod helper; +pub mod info; +pub mod packets; +pub mod types; diff --git a/crates/proto/src/version/v766/packets/add_actor.rs b/crates/proto/src/version/v748/packets/add_actor.rs similarity index 95% rename from crates/proto/src/version/v766/packets/add_actor.rs rename to crates/proto/src/version/v748/packets/add_actor.rs index 2d1632e7..e5187e5c 100644 --- a/crates/proto/src/version/v766/packets/add_actor.rs +++ b/crates/proto/src/version/v748/packets/add_actor.rs @@ -1,7 +1,7 @@ use crate::version::v662::types::{ActorRuntimeID, ActorUniqueID, PropertySyncData}; use vek::{Vec2, Vec3}; use bedrockrs_macros::{gamepacket, ProtoCodec}; -use crate::version::v766::types::{ActorLink, DataItem}; +use crate::version::v748::types::{ActorLink, DataItem}; #[derive(ProtoCodec, Clone, Debug)] pub struct AttributeEntry { diff --git a/crates/proto/src/version/v766/packets/add_item_actor.rs b/crates/proto/src/version/v748/packets/add_item_actor.rs similarity index 93% rename from crates/proto/src/version/v766/packets/add_item_actor.rs rename to crates/proto/src/version/v748/packets/add_item_actor.rs index c13f1a9f..118f60cb 100644 --- a/crates/proto/src/version/v766/packets/add_item_actor.rs +++ b/crates/proto/src/version/v748/packets/add_item_actor.rs @@ -1,7 +1,7 @@ use crate::version::v662::types::{ActorRuntimeID, ActorUniqueID, NetworkItemStackDescriptor}; use vek::Vec3; use bedrockrs_macros::{gamepacket, ProtoCodec}; -use crate::version::v766::types::DataItem; +use crate::version::v748::types::DataItem; #[gamepacket(id = 15)] #[derive(ProtoCodec, Clone, Debug)] diff --git a/crates/proto/src/version/v766/packets/add_player.rs b/crates/proto/src/version/v748/packets/add_player.rs similarity index 92% rename from crates/proto/src/version/v766/packets/add_player.rs rename to crates/proto/src/version/v748/packets/add_player.rs index 5e5bb338..4727317b 100644 --- a/crates/proto/src/version/v766/packets/add_player.rs +++ b/crates/proto/src/version/v748/packets/add_player.rs @@ -3,7 +3,8 @@ use crate::version::v662::types::{ActorRuntimeID, NetworkItemStackDescriptor, Pr use vek::{Vec2, Vec3}; use bedrockrs_macros::{gamepacket, ProtoCodec}; use uuid::Uuid; -use crate::version::v766::types::{ActorLink, DataItem}; +use crate::version::v748::types::ActorLink; +use crate::version::v748::types::DataItem; #[gamepacket(id = 12)] #[derive(ProtoCodec, Clone, Debug)] diff --git a/crates/proto/src/version/v766/packets/award_achievement.rs b/crates/proto/src/version/v748/packets/award_achievement.rs similarity index 100% rename from crates/proto/src/version/v766/packets/award_achievement.rs rename to crates/proto/src/version/v748/packets/award_achievement.rs diff --git a/crates/proto/src/version/v766/packets/boss_event.rs b/crates/proto/src/version/v748/packets/boss_event.rs similarity index 83% rename from crates/proto/src/version/v766/packets/boss_event.rs rename to crates/proto/src/version/v748/packets/boss_event.rs index d07eb8d6..13dd443c 100644 --- a/crates/proto/src/version/v766/packets/boss_event.rs +++ b/crates/proto/src/version/v748/packets/boss_event.rs @@ -1,5 +1,5 @@ use crate::version::v662::types::ActorUniqueID; -use crate::version::v766::enums::BossEventUpdateType; +use crate::version::v748::enums::BossEventUpdateType; use bedrockrs_macros::{gamepacket, ProtoCodec}; #[gamepacket(id = 74)] diff --git a/crates/proto/src/version/v748/packets/camera_aim_assist.rs b/crates/proto/src/version/v748/packets/camera_aim_assist.rs new file mode 100644 index 00000000..9c287be4 --- /dev/null +++ b/crates/proto/src/version/v748/packets/camera_aim_assist.rs @@ -0,0 +1,29 @@ +use bedrockrs_macros::{gamepacket, ProtoCodec}; +use vek::Vec2; + +#[derive(ProtoCodec, Clone, Debug)] +#[enum_repr(i8)] +#[repr(i8)] +pub enum Action { + Set = 0, + Clear = 1, +} + +#[derive(ProtoCodec, Clone, Debug)] +#[enum_repr(i8)] +#[repr(i8)] +pub enum TargetMode { + Angle = 0, + Distance = 1, +} + +#[gamepacket(id = 316)] +#[derive(ProtoCodec, Clone, Debug)] +pub struct CameraAimAssistPacket { + #[endianness(le)] + pub view_angle: Vec2, + #[endianness(le)] + pub distance: f32, + pub target_mode: TargetMode, + pub action: Action, +} \ No newline at end of file diff --git a/crates/proto/src/version/v766/packets/camera_instruction.rs b/crates/proto/src/version/v748/packets/camera_instruction.rs similarity index 78% rename from crates/proto/src/version/v766/packets/camera_instruction.rs rename to crates/proto/src/version/v748/packets/camera_instruction.rs index a54edc52..86a2bc53 100644 --- a/crates/proto/src/version/v766/packets/camera_instruction.rs +++ b/crates/proto/src/version/v748/packets/camera_instruction.rs @@ -1,4 +1,4 @@ -use crate::version::v766::types::CameraInstruction; +use crate::version::v748::types::CameraInstruction; use bedrockrs_macros::{gamepacket, ProtoCodec}; #[gamepacket(id = 300)] diff --git a/crates/proto/src/version/v766/packets/camera_presets.rs b/crates/proto/src/version/v748/packets/camera_presets.rs similarity index 79% rename from crates/proto/src/version/v766/packets/camera_presets.rs rename to crates/proto/src/version/v748/packets/camera_presets.rs index 8b8743b6..968741da 100644 --- a/crates/proto/src/version/v766/packets/camera_presets.rs +++ b/crates/proto/src/version/v748/packets/camera_presets.rs @@ -1,4 +1,4 @@ -use crate::version::v766::types::CameraPresets; +use crate::version::v748::types::CameraPresets; use bedrockrs_macros::{gamepacket, ProtoCodec}; #[gamepacket(id = 198)] diff --git a/crates/proto/src/version/v766/packets/change_dimension.rs b/crates/proto/src/version/v748/packets/change_dimension.rs similarity index 100% rename from crates/proto/src/version/v766/packets/change_dimension.rs rename to crates/proto/src/version/v748/packets/change_dimension.rs diff --git a/crates/proto/src/version/v766/packets/client_bound_close_form.rs b/crates/proto/src/version/v748/packets/client_bound_close_form.rs similarity index 100% rename from crates/proto/src/version/v766/packets/client_bound_close_form.rs rename to crates/proto/src/version/v748/packets/client_bound_close_form.rs diff --git a/crates/proto/src/version/v766/packets/client_bound_debug_renderer.rs b/crates/proto/src/version/v748/packets/client_bound_debug_renderer.rs similarity index 100% rename from crates/proto/src/version/v766/packets/client_bound_debug_renderer.rs rename to crates/proto/src/version/v748/packets/client_bound_debug_renderer.rs diff --git a/crates/proto/src/version/v766/packets/client_bound_map_item_data.rs b/crates/proto/src/version/v748/packets/client_bound_map_item_data.rs similarity index 100% rename from crates/proto/src/version/v766/packets/client_bound_map_item_data.rs rename to crates/proto/src/version/v748/packets/client_bound_map_item_data.rs diff --git a/crates/proto/src/version/v766/packets/code_builder_source.rs b/crates/proto/src/version/v748/packets/code_builder_source.rs similarity index 86% rename from crates/proto/src/version/v766/packets/code_builder_source.rs rename to crates/proto/src/version/v748/packets/code_builder_source.rs index b01885a4..dfa0e733 100644 --- a/crates/proto/src/version/v766/packets/code_builder_source.rs +++ b/crates/proto/src/version/v748/packets/code_builder_source.rs @@ -1,5 +1,5 @@ use crate::version::v662::enums::{CodeBuilderStorageCategory, CodeBuilderStorageOperation}; -use crate::version::v766::enums::CodeBuilderExecutionState; +use crate::version::v748::enums::CodeBuilderExecutionState; use bedrockrs_macros::{gamepacket, ProtoCodec}; #[gamepacket(id = 178)] diff --git a/crates/proto/src/version/v766/packets/container_close.rs b/crates/proto/src/version/v748/packets/container_close.rs similarity index 100% rename from crates/proto/src/version/v766/packets/container_close.rs rename to crates/proto/src/version/v748/packets/container_close.rs diff --git a/crates/proto/src/version/v766/packets/container_registry_cleanup.rs b/crates/proto/src/version/v748/packets/container_registry_cleanup.rs similarity index 83% rename from crates/proto/src/version/v766/packets/container_registry_cleanup.rs rename to crates/proto/src/version/v748/packets/container_registry_cleanup.rs index fc9ae3c3..7d92850c 100644 --- a/crates/proto/src/version/v766/packets/container_registry_cleanup.rs +++ b/crates/proto/src/version/v748/packets/container_registry_cleanup.rs @@ -1,4 +1,4 @@ -use crate::version::v766::types::FullContainerName; +use crate::version::v748::types::FullContainerName; use bedrockrs_macros::{gamepacket, ProtoCodec}; #[gamepacket(id = 317)] diff --git a/crates/proto/src/version/v766/packets/correct_player_move_prediction.rs b/crates/proto/src/version/v748/packets/correct_player_move_prediction.rs similarity index 100% rename from crates/proto/src/version/v766/packets/correct_player_move_prediction.rs rename to crates/proto/src/version/v748/packets/correct_player_move_prediction.rs diff --git a/crates/proto/src/version/v766/packets/current_structure_feature.rs b/crates/proto/src/version/v748/packets/current_structure_feature.rs similarity index 63% rename from crates/proto/src/version/v766/packets/current_structure_feature.rs rename to crates/proto/src/version/v748/packets/current_structure_feature.rs index 799dc3b5..c067dbc1 100644 --- a/crates/proto/src/version/v766/packets/current_structure_feature.rs +++ b/crates/proto/src/version/v748/packets/current_structure_feature.rs @@ -1,5 +1,6 @@ -use bedrockrs_macros::ProtoCodec; +use bedrockrs_macros::{gamepacket, ProtoCodec}; +#[gamepacket(id = 314)] #[derive(ProtoCodec, Clone, Debug)] pub struct CurrentStructureFeaturePacket { pub current_structure_feature: String, diff --git a/crates/proto/src/version/v766/packets/disconnect.rs b/crates/proto/src/version/v748/packets/disconnect.rs similarity index 100% rename from crates/proto/src/version/v766/packets/disconnect.rs rename to crates/proto/src/version/v748/packets/disconnect.rs diff --git a/crates/proto/src/version/v766/packets/editor_network.rs b/crates/proto/src/version/v748/packets/editor_network.rs similarity index 100% rename from crates/proto/src/version/v766/packets/editor_network.rs rename to crates/proto/src/version/v748/packets/editor_network.rs diff --git a/crates/proto/src/version/v766/packets/emote.rs b/crates/proto/src/version/v748/packets/emote.rs similarity index 100% rename from crates/proto/src/version/v766/packets/emote.rs rename to crates/proto/src/version/v748/packets/emote.rs diff --git a/crates/proto/src/version/v766/packets/inventory_content.rs b/crates/proto/src/version/v748/packets/inventory_content.rs similarity index 91% rename from crates/proto/src/version/v766/packets/inventory_content.rs rename to crates/proto/src/version/v748/packets/inventory_content.rs index bde77d8c..51b77e48 100644 --- a/crates/proto/src/version/v766/packets/inventory_content.rs +++ b/crates/proto/src/version/v748/packets/inventory_content.rs @@ -1,4 +1,4 @@ -use crate::v766::types::FullContainerName; +use crate::v748::types::FullContainerName; use crate::version::v662::types::NetworkItemStackDescriptor; use bedrockrs_macros::{gamepacket, ProtoCodec}; diff --git a/crates/proto/src/version/v766/packets/inventory_slot.rs b/crates/proto/src/version/v748/packets/inventory_slot.rs similarity index 91% rename from crates/proto/src/version/v766/packets/inventory_slot.rs rename to crates/proto/src/version/v748/packets/inventory_slot.rs index 1705af3d..52facb81 100644 --- a/crates/proto/src/version/v766/packets/inventory_slot.rs +++ b/crates/proto/src/version/v748/packets/inventory_slot.rs @@ -1,4 +1,4 @@ -use crate::v766::types::FullContainerName; +use crate::v748::types::FullContainerName; use crate::version::v662::enums::ContainerID; use crate::version::v662::types::NetworkItemStackDescriptor; use bedrockrs_macros::{gamepacket, ProtoCodec}; diff --git a/crates/proto/src/version/v766/packets/item_stack_request.rs b/crates/proto/src/version/v748/packets/item_stack_request.rs similarity index 93% rename from crates/proto/src/version/v766/packets/item_stack_request.rs rename to crates/proto/src/version/v748/packets/item_stack_request.rs index 6d8ed5dc..8549bf34 100644 --- a/crates/proto/src/version/v766/packets/item_stack_request.rs +++ b/crates/proto/src/version/v748/packets/item_stack_request.rs @@ -1,5 +1,5 @@ use crate::version::v662::enums::{ItemStackRequestActionType, TextProcessingEventOrigin}; -use crate::version::v766::types::ItemStackRequestSlotInfo; +use crate::version::v748::types::ItemStackRequestSlotInfo; use bedrockrs_macros::{gamepacket, ProtoCodec}; #[derive(ProtoCodec, Clone, Debug)] diff --git a/crates/proto/src/version/v766/packets/item_stack_response.rs b/crates/proto/src/version/v748/packets/item_stack_response.rs similarity index 81% rename from crates/proto/src/version/v766/packets/item_stack_response.rs rename to crates/proto/src/version/v748/packets/item_stack_response.rs index fa92e8f9..de40e4e7 100644 --- a/crates/proto/src/version/v766/packets/item_stack_response.rs +++ b/crates/proto/src/version/v748/packets/item_stack_response.rs @@ -1,4 +1,4 @@ -use crate::version::v766::types::ItemStackResponseInfo; +use crate::version::v748::types::ItemStackResponseInfo; use bedrockrs_macros::{gamepacket, ProtoCodec}; #[gamepacket(id = 148)] diff --git a/crates/proto/src/version/v766/packets/jigsaw_structure_data.rs b/crates/proto/src/version/v748/packets/jigsaw_structure_data.rs similarity index 100% rename from crates/proto/src/version/v766/packets/jigsaw_structure_data.rs rename to crates/proto/src/version/v748/packets/jigsaw_structure_data.rs diff --git a/crates/proto/src/version/v766/packets/legacy_telemetry_event.rs b/crates/proto/src/version/v748/packets/legacy_telemetry_event.rs similarity index 100% rename from crates/proto/src/version/v766/packets/legacy_telemetry_event.rs rename to crates/proto/src/version/v748/packets/legacy_telemetry_event.rs diff --git a/crates/proto/src/version/v766/packets/mob_armor_equipment.rs b/crates/proto/src/version/v748/packets/mob_armor_equipment.rs similarity index 100% rename from crates/proto/src/version/v766/packets/mob_armor_equipment.rs rename to crates/proto/src/version/v748/packets/mob_armor_equipment.rs diff --git a/crates/proto/src/version/v748/packets/mod.rs b/crates/proto/src/version/v748/packets/mod.rs new file mode 100644 index 00000000..6d8643f3 --- /dev/null +++ b/crates/proto/src/version/v748/packets/mod.rs @@ -0,0 +1,52 @@ +macro_rules! export { + ($name:ident) => { + mod $name; + pub use $name::*; + }; +} + +export!(add_actor); +export!(add_player); +export!(add_item_actor); +export!(award_achievement); +export!(boss_event); +export!(camera_aim_assist); +export!(camera_instruction); +export!(camera_presets); +export!(change_dimension); +export!(client_bound_close_form); +export!(client_bound_debug_renderer); +export!(client_bound_map_item_data); +export!(container_registry_cleanup); +export!(correct_player_move_prediction); +export!(disconnect); +export!(inventory_content); +export!(inventory_slot); +export!(item_stack_request); +export!(item_stack_response); +export!(legacy_telemetry_event); +export!(player_action); +export!(player_auth_input); +export!(resource_pack_stack); +export!(resource_packs_info); +export!(set_actor_data); +export!(start_game); +export!(text); +export!(update_attributes); +export!(update_player_game_type); +export!(update_soft_enum); + +export!(code_builder_source); +export!(container_close); +export!(current_structure_feature); +export!(editor_network); +export!(emote); +export!(jigsaw_structure_data); +export!(mob_armor_equipment); +export!(player_armor_damage); +export!(server_bound_diagnostics); +export!(server_bound_loading_screen); +export!(set_title); +export!(stop_sound); +export!(transfer_player); +export!(set_actor_link); diff --git a/crates/proto/src/version/v766/packets/player_action.rs b/crates/proto/src/version/v748/packets/player_action.rs similarity index 91% rename from crates/proto/src/version/v766/packets/player_action.rs rename to crates/proto/src/version/v748/packets/player_action.rs index 7c3ba852..42e10a97 100644 --- a/crates/proto/src/version/v766/packets/player_action.rs +++ b/crates/proto/src/version/v748/packets/player_action.rs @@ -1,4 +1,4 @@ -use crate::version::v766::enums::PlayerActionType; +use crate::version::v748::enums::PlayerActionType; use crate::version::v662::types::{ActorRuntimeID, NetworkBlockPosition}; use bedrockrs_macros::{gamepacket, ProtoCodec}; diff --git a/crates/proto/src/version/v766/packets/player_armor_damage.rs b/crates/proto/src/version/v748/packets/player_armor_damage.rs similarity index 100% rename from crates/proto/src/version/v766/packets/player_armor_damage.rs rename to crates/proto/src/version/v748/packets/player_armor_damage.rs diff --git a/crates/proto/src/version/v748/packets/player_auth_input.rs b/crates/proto/src/version/v748/packets/player_auth_input.rs new file mode 100644 index 00000000..72446337 --- /dev/null +++ b/crates/proto/src/version/v748/packets/player_auth_input.rs @@ -0,0 +1,273 @@ +use crate::version::v662::enums::{ + ClientPlayMode, InputMode, ItemStackRequestActionType, NewInteractionModel, + TextProcessingEventOrigin, +}; +use crate::version::v662::types::{ + ActorUniqueID, +}; +use bedrockrs_macros::{gamepacket, ProtoCodec}; +use bedrockrs_proto_core::error::ProtoCodecError; +use bedrockrs_proto_core::{ProtoCodec, ProtoCodecLE, ProtoCodecVAR}; +use std::io::Cursor; +use vek::{Vec2, Vec3}; +use crate::version::v748::types::PlayerBlockActions; +use crate::version::v748::types::{ItemStackRequestSlotInfo, PackedItemUseLegacyInventoryTransaction}; + +pub struct PlayerAuthInputFlags; + +impl PlayerAuthInputFlags { + pub const ASCEND: u64 = 1 << 0; + pub const DESCEND: u64 = 1 << 1; + #[deprecated] + pub const NORTH_JUMP: u64 = 1 << 2; + pub const JUMP_DOWN: u64 = 1 << 3; + pub const SPRINT_DOWN: u64 = 1 << 4; + pub const CHANGE_HEIGHT: u64 = 1 << 5; + pub const JUMPING: u64 = 1 << 6; + pub const AUTO_JUMPING_IN_WATER: u64 = 1 << 7; + pub const SNEAKING: u64 = 1 << 8; + pub const SNEAK_DOWN: u64 = 1 << 9; + pub const UP: u64 = 1 << 10; + pub const DOWN: u64 = 1 << 11; + pub const LEFT: u64 = 1 << 12; + pub const RIGHT: u64 = 1 << 13; + pub const UP_LEFT: u64 = 1 << 14; + pub const UP_RIGHT: u64 = 1 << 15; + pub const WANT_UP: u64 = 1 << 16; + pub const WANT_DOWN: u64 = 1 << 17; + pub const WANT_DOWN_SLOW: u64 = 1 << 18; + pub const WANT_UP_SLOW: u64 = 1 << 19; + pub const SPRINTING: u64 = 1 << 20; + pub const ASCEND_BLOCK: u64 = 1 << 21; + pub const DESCEND_BLOCK: u64 = 1 << 22; + pub const SNEAK_TOGGLE_DOWN: u64 = 1 << 23; + pub const PERSIST_SNEAK: u64 = 1 << 24; + pub const START_SPRINTING: u64 = 1 << 25; + pub const STOP_SPRINTING: u64 = 1 << 26; + pub const START_SNEAKING: u64 = 1 << 27; + pub const STOP_SNEAKING: u64 = 1 << 28; + pub const START_SWIMMING: u64 = 1 << 29; + pub const STOP_SWIMMING: u64 = 1 << 30; + pub const START_JUMPING: u64 = 1 << 31; + pub const START_GLIDING: u64 = 1 << 32; + pub const STOP_GLIDING: u64 = 1 << 33; + pub const PERFORM_ITEM_INTERACTION: u64 = 1 << 34; + pub const PERFORM_BLOCK_ACTIONS: u64 = 1 << 35; + pub const PERFORM_ITEM_STACK_REQUEST: u64 = 1 << 36; + pub const HANDLE_TELEPORT: u64 = 1 << 37; + pub const EMOTING: u64 = 1 << 38; + pub const MISSED_SWING: u64 = 1 << 39; + pub const START_CRAWLING: u64 = 1 << 40; + pub const STOP_CRAWLING: u64 = 1 << 41; + pub const START_FLYING: u64 = 1 << 42; + pub const STOP_FLYING: u64 = 1 << 43; + pub const RECEIVED_SERVER_DATA: u64 = 1 << 44; + pub const IS_IN_CLIENT_PREDICTED_VEHICLE: u64 = 1 << 45; + pub const PADDLE_LEFT: u64 = 1 << 46; + pub const PADDLE_RIGHT: u64 = 1 << 47; + pub const BLOCK_BREAKING_DELAY_ENABLED: u64 = 1 << 48; + pub const HORIZONTAL_COLLISION: u64 = 1 << 49; + pub const VERTICAL_COLLISION: u64 = 1 << 50; + pub const DOWN_LEFT: u64 = 1 << 51; + pub const DOWN_RIGHT: u64 = 1 << 52; + pub const START_USING_ITEM: u64 = 1 << 53; + pub const IS_CAMERA_RELATIVE_MOVEMENT_ENABLED: u64 = 1 << 54; + pub const IS_ROT_CONTROLLED_BY_MOVE_DIRECTION: u64 = 1 << 55; + pub const START_SPIN_ATTACK: u64 = 1 << 56; + pub const STOP_SPIN_ATTACK: u64 = 1 << 57; +} + +#[derive(ProtoCodec, Clone, Debug)] +pub struct ActionsEntry { + pub action_type: ItemStackRequestActionType, + pub amount: i8, + pub source: ItemStackRequestSlotInfo, + pub destination: ItemStackRequestSlotInfo, +} + +#[derive(ProtoCodec, Clone, Debug)] +pub struct PerformItemStackRequestData { + #[endianness(var)] + pub client_request_id: u32, + #[vec_repr(u32)] + #[vec_endianness(var)] + pub actions: Vec, + #[vec_repr(u32)] + #[vec_endianness(var)] + pub strings_to_filter: Vec, + pub strings_to_filter_origin: TextProcessingEventOrigin, +} + +#[derive(ProtoCodec, Clone, Debug)] +pub struct ClientPredictedVehicleData { + #[endianness(le)] + pub vehicle_rotation: Vec2, + pub client_predicted_vehicle: ActorUniqueID, +} + +#[gamepacket(id = 144)] +#[derive(Clone, Debug)] +pub struct PlayerAuthInputPacket { + pub player_rotation: Vec2, + pub player_position: Vec3, + pub move_vector: Vec3, + pub player_head_rotation: f32, + pub input_data: u64, + pub input_mode: InputMode, + pub play_mode: ClientPlayMode, + pub new_interaction_model: NewInteractionModel, + pub interact_rotation: Vec3, + pub client_tick: u64, + pub velocity: Vec3, + pub item_use_transaction: Option, // If input_data has PlayerAuthInputPacket::InputData::PerformItemInteraction set. + pub item_stack_request: Option, // If input data has PlayerAuthInputPacket::InputData::PerformItemStackRequest set. + pub player_block_actions: Option, // If input data has PlayerAuthInputPacket::InputData::PerformBlockActions set. + pub client_predicted_vehicle: Option, // If input data has PlayerAuthInputPacket::InputData::IsInClientPredictedVehicle set. + pub analog_move_vector: Vec2, + pub camera_orientation: Vec3, +} + +impl ProtoCodec for PlayerAuthInputPacket { + fn proto_serialize(&self, stream: &mut Vec) -> Result<(), ProtoCodecError> { + as ProtoCodecLE>::proto_serialize(&self.player_rotation, stream)?; + as ProtoCodecLE>::proto_serialize(&self.player_position, stream)?; + as ProtoCodecLE>::proto_serialize(&self.move_vector, stream)?; + ::proto_serialize(&self.player_head_rotation, stream)?; + ::proto_serialize(&self.input_data, stream)?; + ::proto_serialize(&self.input_mode, stream)?; + ::proto_serialize(&self.play_mode, stream)?; + ::proto_serialize(&self.new_interaction_model, stream)?; + as ProtoCodecLE>::proto_serialize(&self.interact_rotation, stream)?; + ::proto_serialize(&self.client_tick, stream)?; + as ProtoCodecLE>::proto_serialize(&self.velocity, stream)?; + if &self.input_data & PlayerAuthInputFlags::PERFORM_ITEM_INTERACTION != 0 { + ::proto_serialize( + &self.item_use_transaction.as_ref().unwrap(), + stream, + )?; + } + if &self.input_data & PlayerAuthInputFlags::PERFORM_ITEM_STACK_REQUEST != 0 { + ::proto_serialize( + &self.item_stack_request.as_ref().unwrap(), + stream, + )?; + } + if &self.input_data & PlayerAuthInputFlags::PERFORM_BLOCK_ACTIONS != 0 { + ::proto_serialize( + &self.player_block_actions.as_ref().unwrap(), + stream, + )?; + } + if &self.input_data & PlayerAuthInputFlags::IS_IN_CLIENT_PREDICTED_VEHICLE != 0 { + ::proto_serialize( + &self.client_predicted_vehicle.as_ref().unwrap(), + stream, + )?; + } + as ProtoCodecLE>::proto_serialize(&self.analog_move_vector, stream)?; + as ProtoCodecLE>::proto_serialize(&self.camera_orientation, stream)?; + + Ok(()) + } + + fn proto_deserialize(stream: &mut Cursor<&[u8]>) -> Result { + let player_rotation = as ProtoCodecLE>::proto_deserialize(stream)?; + let player_position = as ProtoCodecLE>::proto_deserialize(stream)?; + let move_vector = as ProtoCodecLE>::proto_deserialize(stream)?; + let player_head_rotation = ::proto_deserialize(stream)?; + let input_data = ::proto_deserialize(stream)?; + let input_mode = ::proto_deserialize(stream)?; + let play_mode = ::proto_deserialize(stream)?; + let new_interaction_model = ::proto_deserialize(stream)?; + let interact_rotation = as ProtoCodecLE>::proto_deserialize(stream)?; + let client_tick = ::proto_deserialize(stream)?; + let velocity = as ProtoCodecLE>::proto_deserialize(stream)?; + let item_use_transaction = match &input_data + & PlayerAuthInputFlags::PERFORM_ITEM_INTERACTION + != 0 + { + true => Some( + ::proto_deserialize(stream)?, + ), + false => None, + }; + let item_stack_request = match &input_data + & PlayerAuthInputFlags::PERFORM_ITEM_STACK_REQUEST + != 0 + { + true => Some(::proto_deserialize(stream)?), + false => None, + }; + let player_block_actions = + match &input_data & PlayerAuthInputFlags::PERFORM_BLOCK_ACTIONS != 0 { + true => Some(::proto_deserialize( + stream, + )?), + false => None, + }; + let client_predicted_vehicle = match &input_data + & PlayerAuthInputFlags::IS_IN_CLIENT_PREDICTED_VEHICLE + != 0 + { + true => Some(::proto_deserialize(stream)?), + false => None, + }; + let analog_move_vector = as ProtoCodecLE>::proto_deserialize(stream)?; + let camera_orientation = as ProtoCodecLE>::proto_deserialize(stream)?; + + Ok(Self { + player_rotation, + player_position, + move_vector, + player_head_rotation, + input_data, + input_mode, + play_mode, + new_interaction_model, + interact_rotation, + client_tick, + velocity, + item_use_transaction, + item_stack_request, + player_block_actions, + client_predicted_vehicle, + analog_move_vector, + camera_orientation, + }) + } + + fn get_size_prediction(&self) -> usize { + ProtoCodecLE::get_size_prediction(&self.player_rotation) + + ProtoCodecLE::get_size_prediction(&self.player_position) + + ProtoCodecLE::get_size_prediction(&self.move_vector) + + ProtoCodecLE::get_size_prediction(&self.player_head_rotation) + + ProtoCodecVAR::get_size_prediction(&self.input_data) + + self.input_mode.get_size_prediction() + + self.play_mode.get_size_prediction() + + self.new_interaction_model.get_size_prediction() + + ProtoCodecLE::get_size_prediction(&self.interact_rotation) + + ProtoCodecVAR::get_size_prediction(&self.client_tick) + + ProtoCodecLE::get_size_prediction(&self.velocity) + + match &self.input_data & PlayerAuthInputFlags::PERFORM_ITEM_INTERACTION != 0 { + true => self.item_use_transaction.get_size_prediction(), + false => 0, + } + + match &self.input_data & PlayerAuthInputFlags::PERFORM_ITEM_STACK_REQUEST != 0 { + true => self.item_stack_request.get_size_prediction(), + false => 0, + } + + match &self.input_data & PlayerAuthInputFlags::PERFORM_BLOCK_ACTIONS != 0 { + true => self.player_block_actions.get_size_prediction(), + false => 0, + } + + match &self.input_data & PlayerAuthInputFlags::IS_IN_CLIENT_PREDICTED_VEHICLE != 0 + { + true => self.client_predicted_vehicle.get_size_prediction(), + false => 0, + } + + ProtoCodecLE::get_size_prediction(&self.analog_move_vector) + + ProtoCodecLE::get_size_prediction(&self.camera_orientation) + } +} + +// VERIFY: ProtoCodec impl diff --git a/crates/proto/src/version/v766/packets/resource_pack_stack.rs b/crates/proto/src/version/v748/packets/resource_pack_stack.rs similarity index 100% rename from crates/proto/src/version/v766/packets/resource_pack_stack.rs rename to crates/proto/src/version/v748/packets/resource_pack_stack.rs diff --git a/crates/proto/src/version/v748/packets/resource_packs_info.rs b/crates/proto/src/version/v748/packets/resource_packs_info.rs new file mode 100644 index 00000000..fccce5ea --- /dev/null +++ b/crates/proto/src/version/v748/packets/resource_packs_info.rs @@ -0,0 +1,27 @@ +use bedrockrs_macros::{gamepacket, ProtoCodec}; + +#[derive(ProtoCodec, Clone, Debug)] +pub struct ResourcePackEntry { + pub id: String, + pub version: String, + #[endianness(le)] + pub size: u64, + pub content_key: String, + pub sub_pack_name: String, + pub content_identity: String, + pub has_scripts: bool, + pub is_addon_pack: bool, + pub is_ray_tracing_capable: bool, + pub cdn_url: String, +} + +#[gamepacket(id = 6)] +#[derive(ProtoCodec, Clone, Debug)] +pub struct ResourcePacksInfoPacket { + pub resource_pack_required: bool, + pub has_addon_packs: bool, + pub has_scripts: bool, + #[vec_repr(u16)] + #[vec_endianness(le)] + pub resource_packs: Vec, +} \ No newline at end of file diff --git a/crates/proto/src/version/v766/packets/server_bound_diagnostics.rs b/crates/proto/src/version/v748/packets/server_bound_diagnostics.rs similarity index 100% rename from crates/proto/src/version/v766/packets/server_bound_diagnostics.rs rename to crates/proto/src/version/v748/packets/server_bound_diagnostics.rs diff --git a/crates/proto/src/version/v766/packets/server_bound_loading_screen.rs b/crates/proto/src/version/v748/packets/server_bound_loading_screen.rs similarity index 100% rename from crates/proto/src/version/v766/packets/server_bound_loading_screen.rs rename to crates/proto/src/version/v748/packets/server_bound_loading_screen.rs diff --git a/crates/proto/src/version/v766/packets/set_actor_data.rs b/crates/proto/src/version/v748/packets/set_actor_data.rs similarity index 91% rename from crates/proto/src/version/v766/packets/set_actor_data.rs rename to crates/proto/src/version/v748/packets/set_actor_data.rs index e0cc4f52..18fe3724 100644 --- a/crates/proto/src/version/v766/packets/set_actor_data.rs +++ b/crates/proto/src/version/v748/packets/set_actor_data.rs @@ -1,6 +1,6 @@ use crate::version::v662::types::{ActorRuntimeID, PropertySyncData}; use bedrockrs_macros::{gamepacket, ProtoCodec}; -use crate::version::v766::types::DataItem; +use crate::version::v748::types::DataItem; #[gamepacket(id = 39)] #[derive(ProtoCodec, Clone, Debug)] diff --git a/crates/proto/src/version/v766/packets/set_actor_link.rs b/crates/proto/src/version/v748/packets/set_actor_link.rs similarity index 79% rename from crates/proto/src/version/v766/packets/set_actor_link.rs rename to crates/proto/src/version/v748/packets/set_actor_link.rs index 0323d6da..fa0677d5 100644 --- a/crates/proto/src/version/v766/packets/set_actor_link.rs +++ b/crates/proto/src/version/v748/packets/set_actor_link.rs @@ -1,4 +1,4 @@ -use crate::version::v766::types::ActorLink; +use crate::version::v748::types::ActorLink; use bedrockrs_macros::{gamepacket, ProtoCodec}; #[gamepacket(id = 41)] diff --git a/crates/proto/src/version/v766/packets/set_title.rs b/crates/proto/src/version/v748/packets/set_title.rs similarity index 100% rename from crates/proto/src/version/v766/packets/set_title.rs rename to crates/proto/src/version/v748/packets/set_title.rs diff --git a/crates/proto/src/version/v766/packets/start_game.rs b/crates/proto/src/version/v748/packets/start_game.rs similarity index 97% rename from crates/proto/src/version/v766/packets/start_game.rs rename to crates/proto/src/version/v748/packets/start_game.rs index c4e5be31..bfe9af73 100644 --- a/crates/proto/src/version/v766/packets/start_game.rs +++ b/crates/proto/src/version/v748/packets/start_game.rs @@ -1,6 +1,6 @@ use crate::version::v662::enums::GameType; use crate::version::v662::types::{ActorRuntimeID, ActorUniqueID, ItemData, NetworkPermissions, SyncedPlayerMovementSettings}; -use crate::version::v766::types::LevelSettings; +use crate::version::v748::types::LevelSettings; use vek::{Vec2, Vec3}; use bedrockrs_macros::{gamepacket, ProtoCodec}; use uuid::Uuid; diff --git a/crates/proto/src/version/v766/packets/stop_sound.rs b/crates/proto/src/version/v748/packets/stop_sound.rs similarity index 100% rename from crates/proto/src/version/v766/packets/stop_sound.rs rename to crates/proto/src/version/v748/packets/stop_sound.rs diff --git a/crates/proto/src/version/v766/packets/text.rs b/crates/proto/src/version/v748/packets/text.rs similarity index 100% rename from crates/proto/src/version/v766/packets/text.rs rename to crates/proto/src/version/v748/packets/text.rs diff --git a/crates/proto/src/version/v766/packets/transfer_player.rs b/crates/proto/src/version/v748/packets/transfer_player.rs similarity index 100% rename from crates/proto/src/version/v766/packets/transfer_player.rs rename to crates/proto/src/version/v748/packets/transfer_player.rs diff --git a/crates/proto/src/version/v766/packets/update_attributes.rs b/crates/proto/src/version/v748/packets/update_attributes.rs similarity index 100% rename from crates/proto/src/version/v766/packets/update_attributes.rs rename to crates/proto/src/version/v748/packets/update_attributes.rs diff --git a/crates/proto/src/version/v766/packets/update_player_game_type.rs b/crates/proto/src/version/v748/packets/update_player_game_type.rs similarity index 100% rename from crates/proto/src/version/v766/packets/update_player_game_type.rs rename to crates/proto/src/version/v748/packets/update_player_game_type.rs diff --git a/crates/proto/src/version/v766/packets/update_soft_enum.rs b/crates/proto/src/version/v748/packets/update_soft_enum.rs similarity index 84% rename from crates/proto/src/version/v766/packets/update_soft_enum.rs rename to crates/proto/src/version/v748/packets/update_soft_enum.rs index b279cb2c..76f1bdc7 100644 --- a/crates/proto/src/version/v766/packets/update_soft_enum.rs +++ b/crates/proto/src/version/v748/packets/update_soft_enum.rs @@ -1,4 +1,4 @@ -use crate::version::v766::enums::SoftEnumUpdateType; +use crate::version::v748::enums::SoftEnumUpdateType; use bedrockrs_macros::{gamepacket, ProtoCodec}; #[gamepacket(id = 114)] diff --git a/crates/proto/src/version/v766/types/actor_link.rs b/crates/proto/src/version/v748/types/actor_link.rs similarity index 100% rename from crates/proto/src/version/v766/types/actor_link.rs rename to crates/proto/src/version/v748/types/actor_link.rs diff --git a/crates/proto/src/version/v748/types/base_description.rs b/crates/proto/src/version/v748/types/base_description.rs new file mode 100644 index 00000000..54a6acf8 --- /dev/null +++ b/crates/proto/src/version/v748/types/base_description.rs @@ -0,0 +1,33 @@ +use bedrockrs_macros::ProtoCodec; + +#[derive(ProtoCodec, Clone, Debug)] +pub struct InternalItemDescriptor { + pub full_name: String, + #[endianness(le)] + pub aux_value: u16, +} + +#[derive(ProtoCodec, Clone, Debug)] +pub struct MolangDescriptor { + pub full_name: String, +} + +#[derive(ProtoCodec, Clone, Debug)] +pub struct ItemTagDescriptor { + pub item_tag: String, +} + +#[derive(ProtoCodec, Clone, Debug)] +pub struct DeferredDescriptor { + pub full_name: String, + #[endianness(le)] + pub aux_value: u16, +} + +#[derive(ProtoCodec, Clone, Debug)] +pub struct BaseDescription { + pub internal_item_descriptor: InternalItemDescriptor, + pub molang_descriptor: MolangDescriptor, + pub item_tag_descriptor: ItemTagDescriptor, + pub deferred_descriptor: DeferredDescriptor, +} \ No newline at end of file diff --git a/crates/proto/src/version/v766/types/camera_instruction.rs b/crates/proto/src/version/v748/types/camera_instruction.rs similarity index 100% rename from crates/proto/src/version/v766/types/camera_instruction.rs rename to crates/proto/src/version/v748/types/camera_instruction.rs diff --git a/crates/proto/src/version/v748/types/camera_preset.rs b/crates/proto/src/version/v748/types/camera_preset.rs new file mode 100644 index 00000000..dba75ef6 --- /dev/null +++ b/crates/proto/src/version/v748/types/camera_preset.rs @@ -0,0 +1,43 @@ +use bedrockrs_macros::ProtoCodec; +use vek::{Vec2, Vec3}; + +#[derive(ProtoCodec, Clone, Debug)] +#[enum_repr(i8)] +#[repr(i8)] +pub enum AudioListener { + Camera = 0, + Player = 1, +} + +#[derive(ProtoCodec, Clone, Debug)] +pub struct CameraPreset { + pub name: String, + pub inherit_from: String, + #[endianness(le)] + pub pos_x: Option, + #[endianness(le)] + pub pos_y: Option, + #[endianness(le)] + pub pos_z: Option, + #[endianness(le)] + pub rot_x: Option, + #[endianness(le)] + pub rot_y: Option, + #[endianness(le)] + pub rotation_speed: Option, + pub snap_to_target: Option, + #[endianness(le)] + pub horizontal_rotation_limit: Option>, + #[endianness(le)] + pub vertical_rotation_limit: Option>, + pub continue_targeting: Option, + #[endianness(le)] + pub view_offset: Option>, + #[endianness(le)] + pub entity_offset: Option>, + #[endianness(le)] + pub radius: Option, + pub listener: Option, + pub player_effects: Option, + pub align_target_and_camera_forward: Option, +} \ No newline at end of file diff --git a/crates/proto/src/version/v766/types/camera_presets.rs b/crates/proto/src/version/v748/types/camera_presets.rs similarity index 79% rename from crates/proto/src/version/v766/types/camera_presets.rs rename to crates/proto/src/version/v748/types/camera_presets.rs index 5eebd527..0c1b7a1f 100644 --- a/crates/proto/src/version/v766/types/camera_presets.rs +++ b/crates/proto/src/version/v748/types/camera_presets.rs @@ -1,4 +1,4 @@ -use crate::version::v766::types::CameraPreset; +use crate::version::v748::types::CameraPreset; use bedrockrs_macros::ProtoCodec; #[derive(ProtoCodec, Clone, Debug)] diff --git a/crates/proto/src/version/v766/types/data_item.rs b/crates/proto/src/version/v748/types/data_item.rs similarity index 79% rename from crates/proto/src/version/v766/types/data_item.rs rename to crates/proto/src/version/v748/types/data_item.rs index 5f3d5232..fdc539aa 100644 --- a/crates/proto/src/version/v766/types/data_item.rs +++ b/crates/proto/src/version/v748/types/data_item.rs @@ -1,4 +1,4 @@ -use crate::version::v766::enums::DataItemType; +use crate::version::v748::enums::DataItemType; use bedrockrs_macros::ProtoCodec; #[derive(ProtoCodec, Clone, Debug)] diff --git a/crates/proto/src/version/v766/types/full_container_name.rs b/crates/proto/src/version/v748/types/full_container_name.rs similarity index 100% rename from crates/proto/src/version/v766/types/full_container_name.rs rename to crates/proto/src/version/v748/types/full_container_name.rs diff --git a/crates/proto/src/version/v766/types/item_stack_request_slot_info.rs b/crates/proto/src/version/v748/types/item_stack_request_slot_info.rs similarity index 83% rename from crates/proto/src/version/v766/types/item_stack_request_slot_info.rs rename to crates/proto/src/version/v748/types/item_stack_request_slot_info.rs index d95123e4..a6297397 100644 --- a/crates/proto/src/version/v766/types/item_stack_request_slot_info.rs +++ b/crates/proto/src/version/v748/types/item_stack_request_slot_info.rs @@ -1,4 +1,4 @@ -use crate::v766::types::FullContainerName; +use crate::v748::types::FullContainerName; use bedrockrs_macros::ProtoCodec; #[derive(ProtoCodec, Clone, Debug)] diff --git a/crates/proto/src/version/v766/types/item_stack_response_container_info.rs b/crates/proto/src/version/v748/types/item_stack_response_container_info.rs similarity index 71% rename from crates/proto/src/version/v766/types/item_stack_response_container_info.rs rename to crates/proto/src/version/v748/types/item_stack_response_container_info.rs index b69c24df..6fb21f0b 100644 --- a/crates/proto/src/version/v766/types/item_stack_response_container_info.rs +++ b/crates/proto/src/version/v748/types/item_stack_response_container_info.rs @@ -1,6 +1,6 @@ -use crate::version::v766::types::ItemStackResponseSlotInfo; +use crate::version::v748::types::ItemStackResponseSlotInfo; use bedrockrs_macros::ProtoCodec; -use crate::v766::types::FullContainerName; +use crate::v748::types::FullContainerName; #[derive(ProtoCodec, Clone, Debug)] pub struct ItemStackResponseContainerInfo { diff --git a/crates/proto/src/version/v766/types/item_stack_response_info.rs b/crates/proto/src/version/v748/types/item_stack_response_info.rs similarity index 96% rename from crates/proto/src/version/v766/types/item_stack_response_info.rs rename to crates/proto/src/version/v748/types/item_stack_response_info.rs index 192e6185..93c25f13 100644 --- a/crates/proto/src/version/v766/types/item_stack_response_info.rs +++ b/crates/proto/src/version/v748/types/item_stack_response_info.rs @@ -1,6 +1,6 @@ use std::io::{Cursor, Read}; use byteorder::{ReadBytesExt, WriteBytesExt}; -use crate::version::v766::enums::ItemStackNetResult; +use crate::version::v748::enums::ItemStackNetResult; use bedrockrs_proto_core::error::ProtoCodecError; use bedrockrs_proto_core::{ProtoCodec, ProtoCodecVAR}; diff --git a/crates/proto/src/version/v748/types/item_stack_response_slot_info.rs b/crates/proto/src/version/v748/types/item_stack_response_slot_info.rs new file mode 100644 index 00000000..e3ee4b56 --- /dev/null +++ b/crates/proto/src/version/v748/types/item_stack_response_slot_info.rs @@ -0,0 +1,13 @@ +use bedrockrs_macros::ProtoCodec; + +#[derive(ProtoCodec, Clone, Debug)] +pub struct ItemStackResponseSlotInfo { + pub requested_slot: i8, + pub slot: i8, + pub amount: i8, + #[endianness(var)] + pub item_stack_net_id: i32, + pub custom_name: String, + #[endianness(var)] + pub durability_correction: i32, +} \ No newline at end of file diff --git a/crates/proto/src/version/v766/types/level_settings.rs b/crates/proto/src/version/v748/types/level_settings.rs similarity index 100% rename from crates/proto/src/version/v766/types/level_settings.rs rename to crates/proto/src/version/v748/types/level_settings.rs diff --git a/crates/proto/src/version/v748/types/mod.rs b/crates/proto/src/version/v748/types/mod.rs new file mode 100644 index 00000000..bdb7ef06 --- /dev/null +++ b/crates/proto/src/version/v748/types/mod.rs @@ -0,0 +1,26 @@ +macro_rules! export { + ($name:ident) => { + mod $name; + pub use $name::*; + }; +} + +export!(actor_link); +export!(base_description); +export!(camera_preset); +export!(camera_presets); +export!(camera_instruction); +export!(full_container_name); +export!(item_stack_request_slot_info); +export!(item_stack_response_container_info); +export!(item_stack_response_info); +export!(item_stack_response_slot_info); +export!(packed_item_use_legacy_inventory_transaction); +export!(player_block_action_data); +export!(player_block_actions); +export!(recipe_unlocking_requirement); +export!(shaped_chemistry_recipe); +export!(shaped_recipe); +export!(shapeless_recipe); +export!(data_item); +export!(level_settings); diff --git a/crates/proto/src/version/v766/types/packed_item_use_legacy_inventory_transaction.rs b/crates/proto/src/version/v748/types/packed_item_use_legacy_inventory_transaction.rs similarity index 100% rename from crates/proto/src/version/v766/types/packed_item_use_legacy_inventory_transaction.rs rename to crates/proto/src/version/v748/types/packed_item_use_legacy_inventory_transaction.rs diff --git a/crates/proto/src/version/v748/types/player_block_action_data.rs b/crates/proto/src/version/v748/types/player_block_action_data.rs new file mode 100644 index 00000000..9c0d2b9e --- /dev/null +++ b/crates/proto/src/version/v748/types/player_block_action_data.rs @@ -0,0 +1,7 @@ +use crate::version::v748::enums::PlayerActionType; +use bedrockrs_macros::ProtoCodec; + +#[derive(ProtoCodec, Clone, Debug)] +pub struct PlayerBlockActionData { + pub player_action_type: PlayerActionType, +} \ No newline at end of file diff --git a/crates/proto/src/version/v748/types/player_block_actions.rs b/crates/proto/src/version/v748/types/player_block_actions.rs new file mode 100644 index 00000000..bab69d42 --- /dev/null +++ b/crates/proto/src/version/v748/types/player_block_actions.rs @@ -0,0 +1,9 @@ +use crate::version::v748::types::PlayerBlockActionData; +use bedrockrs_macros::ProtoCodec; + +#[derive(ProtoCodec, Clone, Debug)] +pub struct PlayerBlockActions { + #[vec_repr(i32)] + #[vec_endianness(var)] + pub player_block_actions: Vec +} \ No newline at end of file diff --git a/crates/proto/src/version/v766/types/recipe_unlocking_requirement.rs b/crates/proto/src/version/v748/types/recipe_unlocking_requirement.rs similarity index 74% rename from crates/proto/src/version/v766/types/recipe_unlocking_requirement.rs rename to crates/proto/src/version/v748/types/recipe_unlocking_requirement.rs index a1a05e0a..848e9661 100644 --- a/crates/proto/src/version/v766/types/recipe_unlocking_requirement.rs +++ b/crates/proto/src/version/v748/types/recipe_unlocking_requirement.rs @@ -1,4 +1,4 @@ -use crate::version::v766::enums::RecipeUnlockingContext; +use crate::version::v748::enums::RecipeUnlockingContext; use bedrockrs_macros::ProtoCodec; #[derive(ProtoCodec, Clone, Debug)] diff --git a/crates/proto/src/version/v766/types/shaped_chemistry_recipe.rs b/crates/proto/src/version/v748/types/shaped_chemistry_recipe.rs similarity index 100% rename from crates/proto/src/version/v766/types/shaped_chemistry_recipe.rs rename to crates/proto/src/version/v748/types/shaped_chemistry_recipe.rs diff --git a/crates/proto/src/version/v766/types/shaped_recipe.rs b/crates/proto/src/version/v748/types/shaped_recipe.rs similarity index 98% rename from crates/proto/src/version/v766/types/shaped_recipe.rs rename to crates/proto/src/version/v748/types/shaped_recipe.rs index 08b0ae46..78e2c020 100644 --- a/crates/proto/src/version/v766/types/shaped_recipe.rs +++ b/crates/proto/src/version/v748/types/shaped_recipe.rs @@ -1,4 +1,4 @@ -use crate::v766::types::RecipeUnlockingRequirement; +use crate::v748::types::RecipeUnlockingRequirement; use crate::version::v662::types::{NetworkItemInstanceDescriptor, RecipeIngredient}; use bedrockrs_proto_core::error::ProtoCodecError; use bedrockrs_proto_core::{ProtoCodec, ProtoCodecVAR}; diff --git a/crates/proto/src/version/v766/types/shapeless_recipe.rs b/crates/proto/src/version/v748/types/shapeless_recipe.rs similarity index 92% rename from crates/proto/src/version/v766/types/shapeless_recipe.rs rename to crates/proto/src/version/v748/types/shapeless_recipe.rs index 3bad8c30..623a1a91 100644 --- a/crates/proto/src/version/v766/types/shapeless_recipe.rs +++ b/crates/proto/src/version/v748/types/shapeless_recipe.rs @@ -1,4 +1,4 @@ -use crate::v766::types::RecipeUnlockingRequirement; +use crate::v748::types::RecipeUnlockingRequirement; use crate::version::v662::types::{NetworkItemInstanceDescriptor, RecipeIngredient}; use bedrockrs_macros::ProtoCodec; use uuid::Uuid; diff --git a/crates/proto/src/version/v766/enums/crafting_data_entry_type.rs b/crates/proto/src/version/v766/enums/crafting_data_entry_type.rs index 321fd954..0bd4cf27 100644 --- a/crates/proto/src/version/v766/enums/crafting_data_entry_type.rs +++ b/crates/proto/src/version/v766/enums/crafting_data_entry_type.rs @@ -1,5 +1,6 @@ use crate::version::v662::types::{NetworkItemInstanceDescriptor, SmithingTransformRecipe, SmithingTrimRecipe}; -use crate::version::v766::types::{ShapedChemistryRecipe, ShapedRecipe, ShapelessRecipe, UserDataShapelessRecipe}; +use crate::version::v766::types::UserDataShapelessRecipe; +use crate::version::v748::types::{ShapedChemistryRecipe, ShapedRecipe, ShapelessRecipe}; use bedrockrs_macros::ProtoCodec; use uuid::Uuid; diff --git a/crates/proto/src/version/v766/enums/mod.rs b/crates/proto/src/version/v766/enums/mod.rs index e02de864..8fcadd60 100644 --- a/crates/proto/src/version/v766/enums/mod.rs +++ b/crates/proto/src/version/v766/enums/mod.rs @@ -5,12 +5,6 @@ macro_rules! export { }; } -export!(boss_event_update_type); -export!(code_builder_execution_state); -export!(recipe_unlocking_context); export!(crafting_data_entry_type); -export!(data_item_type); export!(player_action_type); export!(player_list_packet_type); -export!(soft_enum_update_type); -export!(item_stack_net_result); diff --git a/crates/proto/src/version/v766/gamepackets.rs b/crates/proto/src/version/v766/gamepackets.rs index a3f3d2f5..852b29f0 100644 --- a/crates/proto/src/version/v766/gamepackets.rs +++ b/crates/proto/src/version/v766/gamepackets.rs @@ -1,17 +1,16 @@ -use crate::v766::packets::{ +use crate::v748::packets::{ AddActorPacket, AddItemActorPacket, AddPlayerPacket, AwardAchievementPacket, BossEventPacket, - CameraAimAssistPacket, CameraAimAssistPresetsPacket, CameraInstructionPacket, - CameraPresetsPacket, ChangeDimensionPacket, ClientBoundCloseFormPacket, - ClientBoundDebugRendererPacket, ClientBoundMapItemDataPacket, CodeBuilderSourcePacket, - ContainerClosePacket, ContainerRegistryCleanupPacket, CorrectPlayerMovePredictionPacket, - CraftingDataPacket, DisconnectPacket, EditorNetworkPacket, EmotePacket, InventoryContentPacket, - InventorySlotPacket, ItemStackRequestPacket, ItemStackResponsePacket, - JigsawStructureDataPacket, LegacyTelemetryEventPacket, MobArmorEquipmentPacket, - PlayerActionPacket, PlayerArmorDamagePacket, PlayerAuthInputPacket, PlayerListPacket, - ResourcePackStackPacket, ResourcePacksInfoPacket, ServerBoundDiagnosticsPacket, - ServerBoundLoadingScreenPacket, SetActorDataPacket, SetActorLinkPacket, - SetMovementAuthorityPacket, SetTitlePacket, StartGamePacket, StopSoundPacket, TextPacket, - TransferPlayerPacket, UpdateAttributesPacket, UpdatePlayerGameTypePacket, UpdateSoftEnumPacket, + CameraInstructionPacket, CameraPresetsPacket, ChangeDimensionPacket, + ClientBoundCloseFormPacket, ClientBoundDebugRendererPacket, ClientBoundMapItemDataPacket, + CodeBuilderSourcePacket, ContainerClosePacket, ContainerRegistryCleanupPacket, + CorrectPlayerMovePredictionPacket, CurrentStructureFeaturePacket, DisconnectPacket, + EditorNetworkPacket, EmotePacket, InventoryContentPacket, InventorySlotPacket, + ItemStackRequestPacket, ItemStackResponsePacket, JigsawStructureDataPacket, + LegacyTelemetryEventPacket, MobArmorEquipmentPacket, PlayerActionPacket, + PlayerArmorDamagePacket, ResourcePackStackPacket, ServerBoundDiagnosticsPacket, + ServerBoundLoadingScreenPacket, SetActorDataPacket, SetActorLinkPacket, SetTitlePacket, + StartGamePacket, StopSoundPacket, TextPacket, TransferPlayerPacket, UpdateAttributesPacket, + UpdatePlayerGameTypePacket, UpdateSoftEnumPacket, }; use crate::version::v662::packets::{ ActorEventPacket, ActorPickRequestPacket, AddBehaviourTreePacket, AddPaintingPacket, @@ -63,11 +62,17 @@ use crate::version::v662::packets::{ use crate::version::v662::{ get_gamepacket_header_size_prediction, read_gamepacket_header, write_gamepacket_header, }; +use crate::version::v766::packets::{ + CameraAimAssistPacket, CameraAimAssistPresetsPacket, CraftingDataPacket, MovementEffectPacket, + PlayerAuthInputPacket, PlayerListPacket, ResourcePacksInfoPacket, SetMovementAuthorityPacket, +}; use bedrockrs_macros::gamepackets; use bedrockrs_proto_core::sub_client::SubClientID; use std::io::{Cursor, Write}; gamepackets! { + CurrentStructureFeature: CurrentStructureFeaturePacket, + MovementEffect: MovementEffectPacket, CameraAimAssist: CameraAimAssistPacket, CameraAimAssistPresets: CameraAimAssistPresetsPacket, AwardAchievent: AwardAchievementPacket, diff --git a/crates/proto/src/version/v766/packets/mod.rs b/crates/proto/src/version/v766/packets/mod.rs index fb812243..53cbbf21 100644 --- a/crates/proto/src/version/v766/packets/mod.rs +++ b/crates/proto/src/version/v766/packets/mod.rs @@ -5,52 +5,11 @@ macro_rules! export { }; } -export!(add_actor); -export!(add_player); -export!(award_achievement); -export!(boss_event); export!(camera_aim_assist); export!(camera_aim_assist_presets); -export!(camera_instruction); -export!(camera_presets); -export!(change_dimension); -export!(client_bound_close_form); -export!(client_bound_debug_renderer); -export!(client_bound_map_item_data); -export!(code_builder_source); -export!(container_close); -export!(container_registry_cleanup); -export!(correct_player_move_prediction); -export!(current_structure_feature); -export!(disconnect); -export!(editor_network); -export!(emote); -export!(inventory_content); -export!(inventory_slot); -export!(jigsaw_structure_data); -export!(legacy_telemetry_event); -export!(mob_armor_equipment); export!(movement_effect); -export!(player_armor_damage); export!(player_auth_input); export!(player_list); -export!(resource_pack_stack); export!(resource_packs_info); -export!(server_bound_diagnostics); -export!(server_bound_loading_screen); export!(set_movement_authority); -export!(set_title); -export!(stop_sound); -export!(text); -export!(transfer_player); -export!(update_attributes); -export!(update_player_game_type); -export!(update_soft_enum); export!(crafting_data); -export!(add_item_actor); -export!(set_actor_data); -export!(player_action); -export!(set_actor_link); -export!(item_stack_request); -export!(item_stack_response); -export!(start_game); diff --git a/crates/proto/src/version/v766/packets/player_auth_input.rs b/crates/proto/src/version/v766/packets/player_auth_input.rs index dece3886..c1f6a815 100644 --- a/crates/proto/src/version/v766/packets/player_auth_input.rs +++ b/crates/proto/src/version/v766/packets/player_auth_input.rs @@ -10,7 +10,8 @@ use bedrockrs_proto_core::error::ProtoCodecError; use bedrockrs_proto_core::{ProtoCodec, ProtoCodecLE, ProtoCodecVAR}; use std::io::Cursor; use vek::{Vec2, Vec3}; -use crate::version::v766::types::{ItemStackRequestSlotInfo, PackedItemUseLegacyInventoryTransaction, PlayerBlockActions}; +use crate::version::v748::types::{ItemStackRequestSlotInfo, PackedItemUseLegacyInventoryTransaction}; +use crate::version::v766::types::PlayerBlockActions; pub struct PlayerAuthInputFlags; diff --git a/crates/proto/src/version/v766/types/mod.rs b/crates/proto/src/version/v766/types/mod.rs index a0178ff0..f80b2d7e 100644 --- a/crates/proto/src/version/v766/types/mod.rs +++ b/crates/proto/src/version/v766/types/mod.rs @@ -5,25 +5,11 @@ macro_rules! export { }; } -export!(actor_link); export!(base_description); -export!(camera_instruction); export!(camera_preset); -export!(camera_presets); -export!(full_container_name); export!(user_data_shapeless_recipe); -export!(recipe_unlocking_requirement); export!(crafting_data_entry); -export!(data_item); -export!(item_stack_request_slot_info); -export!(item_stack_response_container_info); export!(item_stack_response_slot_info); -export!(level_settings); -export!(packed_item_use_legacy_inventory_transaction); export!(player_block_action_data); export!(player_input_tick); -export!(shaped_chemistry_recipe); -export!(shaped_recipe); -export!(shapeless_recipe); -export!(item_stack_response_info); export!(player_block_actions); diff --git a/crates/proto/src/version/v766/types/user_data_shapeless_recipe.rs b/crates/proto/src/version/v766/types/user_data_shapeless_recipe.rs index fcd22478..1137c066 100644 --- a/crates/proto/src/version/v766/types/user_data_shapeless_recipe.rs +++ b/crates/proto/src/version/v766/types/user_data_shapeless_recipe.rs @@ -1,5 +1,5 @@ use crate::version::v662::types::{NetworkItemInstanceDescriptor, RecipeIngredient}; -use crate::version::v766::types::RecipeUnlockingRequirement; +use crate::version::v748::types::RecipeUnlockingRequirement; use bedrockrs_macros::ProtoCodec; use uuid::Uuid; diff --git a/examples/proto_parsing.rs b/examples/proto_parsing.rs index 327d22fe..870175d1 100644 --- a/examples/proto_parsing.rs +++ b/examples/proto_parsing.rs @@ -1,7 +1,7 @@ mod common; use crate::common::logger::setup_logger; -use bedrockrs::proto::decode_gamepackets; +use bedrockrs::proto::codec::decode_gamepackets; use bedrockrs::proto::v729::helper::ProtoHelperV729; use bedrockrs_proto::compression::Compression;