Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

impl packets 1-50 for v662 #74

Merged
merged 9 commits into from
Dec 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions crates/proto/src/version/v662/enums/actor_event.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
use bedrockrs_macros::ProtoCodec;

#[derive(ProtoCodec)]
#[enum_repr(i8)]
#[repr(i8)]
pub enum ActorEvent {
None = 0,
Jump = 1,
Expand Down
5 changes: 4 additions & 1 deletion crates/proto/src/version/v662/enums/actor_type.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use bedrockrs_macros::ProtoCodec;
use bitflags::bitflags;

bitflags! {
struct Flags: isize {
OmniacDev marked this conversation as resolved.
Show resolved Hide resolved
struct Flags: i32 {
const UNDEFINED = 1;
const TYPE_MASK = 0x000000ff;
const MOB = 0x00000100;
Expand Down Expand Up @@ -157,6 +157,9 @@ bitflags! {
}

#[derive(ProtoCodec)]
#[enum_repr(i32)]
#[enum_endianness(le)]
#[repr(i32)]
pub enum ActorType {
Undefined = Flags::UNDEFINED.bits(),
TypeMask = Flags::TYPE_MASK.bits(),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
use bedrockrs_macros::ProtoCodec;

#[derive(ProtoCodec, Eq, PartialEq)]
#[enum_repr(i32)]
#[enum_endianness(le)]
#[repr(i32)]
pub enum AttributeModifierOperation {
Addition = 0,
MultiplyBase = 1,
Expand Down
3 changes: 3 additions & 0 deletions crates/proto/src/version/v662/enums/attribute_operands.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
use bedrockrs_macros::ProtoCodec;

#[derive(ProtoCodec, Eq, PartialEq)]
#[enum_repr(i32)]
#[enum_endianness(le)]
#[repr(i32)]
pub enum AttributeOperands {
Min = 0,
Max = 1,
Expand Down
3 changes: 3 additions & 0 deletions crates/proto/src/version/v662/enums/build_platform.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
use bedrockrs_macros::ProtoCodec;

#[derive(ProtoCodec)]
#[enum_repr(i32)]
#[enum_endianness(le)]
#[repr(i32)]
pub enum BuildPlatform {
Google = 1,
iOS = 2,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ pub mod ComplexInventoryTransaction {
use bedrockrs_macros::ProtoCodec;

#[derive(ProtoCodec)]
#[enum_repr(u32)]
#[enum_endianness(var)]
#[repr(u32)]
pub enum Type {
NormalTransaction = 0,
InventoryMismatch = 1,
Expand Down
3 changes: 3 additions & 0 deletions crates/proto/src/version/v662/enums/connection.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ pub mod Connection {
use bedrockrs_macros::ProtoCodec;

#[derive(ProtoCodec)]
#[enum_repr(i32)]
#[enum_endianness(var)]
#[repr(i32)]
pub enum DisconnectFailReason {
Unknown = 0,
CantConnectNoInternet = 1,
Expand Down
2 changes: 2 additions & 0 deletions crates/proto/src/version/v662/enums/container_id.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
use bedrockrs_macros::ProtoCodec;

#[derive(ProtoCodec)]
#[enum_repr(i8)]
#[repr(i8)]
pub enum ContainerID {
None = -1,
Inventory = 0,
Expand Down
2 changes: 2 additions & 0 deletions crates/proto/src/version/v662/enums/container_type.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
use bedrockrs_macros::ProtoCodec;

#[derive(ProtoCodec)]
#[enum_repr(i8)]
#[repr(i8)]
pub enum ContainerType {
None = -9,
Inventory = -1,
Expand Down
3 changes: 3 additions & 0 deletions crates/proto/src/version/v662/enums/level_event.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
use bedrockrs_macros::ProtoCodec;

#[derive(ProtoCodec)]
#[enum_repr(i32)]
#[enum_endianness(var)]
#[repr(i32)]
pub enum LevelEvent {
_9800 = 3617,
Undefined = 0,
Expand Down
3 changes: 3 additions & 0 deletions crates/proto/src/version/v662/enums/minecraft_eventing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@ pub mod MinecraftEventing {
}

#[derive(ProtoCodec)]
#[enum_repr(i32)]
#[enum_endianness(le)]
#[repr(i32)]
pub enum TeleportationCause {
Unknown = 0,
Projectile = 1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,5 +211,4 @@ pub enum MinecraftPacketIds {
PlayerToggleCrafterSlotRequestPacket = 306,
SetPlayerInventoryOptions = 307,
SetHudPacket = 308,
EndId = 309,
}
3 changes: 3 additions & 0 deletions crates/proto/src/version/v662/enums/play_status.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
use bedrockrs_macros::ProtoCodec;

#[derive(ProtoCodec)]
#[enum_repr(i32)]
#[enum_endianness(be)]
#[repr(i32)]
pub enum PlayStatus {
LoginSuccess = 0,
LoginFailedClientOld = 1,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
pub mod PlayerPositionModeComponent {
use bedrockrs_macros::ProtoCodec;

use crate::version::v662::enums::{ActorType, MinecraftEventing};

#[derive(ProtoCodec)]
#[enum_repr(i8)]
#[repr(i8)]
pub enum PositionMode {
Normal = 0,
Respawn = 1,
Teleport = 2,
Teleport {
teleportation_cause: MinecraftEventing::TeleportationCause,
source_actor_type: ActorType,
} = 2,
OnlyHeadRot = 3,
}
}
3 changes: 3 additions & 0 deletions crates/proto/src/version/v662/enums/puv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ pub mod Puv {
use bedrockrs_macros::ProtoCodec;

#[derive(ProtoCodec)]
#[enum_repr(u32)]
#[enum_endianness(var)]
#[repr(u32)]
pub enum LevelSoundEvent {
ItemUseOn = 0,
Hit = 1,
Expand Down
2 changes: 2 additions & 0 deletions crates/proto/src/version/v662/enums/resource_pack_response.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
use bedrockrs_macros::ProtoCodec;

#[derive(ProtoCodec)]
#[enum_repr(i8)]
#[repr(i8)]
pub enum ResourcePackResponse {
Cancel = 1,
Downloading = 2,
Expand Down
3 changes: 3 additions & 0 deletions crates/proto/src/version/v662/enums/spawn_position_type.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
use bedrockrs_macros::ProtoCodec;

#[derive(ProtoCodec)]
#[enum_repr(i32)]
#[enum_endianness(var)]
#[repr(i32)]
pub enum SpawnPositionType {
PlayerRespawn = 0,
WorldSpawn = 1,
Expand Down
50 changes: 38 additions & 12 deletions crates/proto/src/version/v662/enums/text_packet_type.rs
Original file line number Diff line number Diff line change
@@ -1,17 +1,43 @@
use bedrockrs_macros::ProtoCodec;

#[derive(ProtoCodec)]
#[enum_repr(i8)]
#[repr(i8)]
pub enum TextPacketType {
Raw = 0,
Chat = 1,
Translate = 2,
Popup = 3,
JukeboxPopup = 4,
Tip = 5,
SystemMessage = 6,
Whisper = 7,
Announcement = 8,
TextObjectWhisper = 9,
TextObject = 10,
TextObjectAnnouncement = 11,
Raw(String) = 0,
Chat {
player_name: String,
message: String,
} = 1,
Translate {
message: String,
#[vec_repr(u32)]
#[vec_endianness(var)]
parameter_list: Vec<String>,
} = 2,
Popup {
message: String,
#[vec_repr(u32)]
#[vec_endianness(var)]
parameter_list: Vec<String>,
} = 3,
JukeboxPopup {
message: String,
#[vec_repr(u32)]
#[vec_endianness(var)]
parameter_list: Vec<String>,
} = 4,
Tip(String) = 5,
SystemMessage(String) = 6,
Whisper {
player_name: String,
message: String,
} = 7,
Announcement {
player_name: String,
message: String,
} = 8,
TextObjectWhisper(String) = 9,
TextObject(String) = 10,
TextObjectAnnouncement(String) = 11,
}
12 changes: 12 additions & 0 deletions crates/proto/src/version/v662/packets/actor_event.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
use bedrockrs_macros::{gamepacket, ProtoCodec};
use crate::version::v662::enums::ActorEvent;
use crate::version::v662::types::ActorRuntimeID;

#[gamepacket(id = 27)]
#[derive(ProtoCodec)]
pub struct ActorEventPacket {
pub target_runtime_id: ActorRuntimeID,
pub event_id: ActorEvent,
#[endianness(var)]
pub data: i32,
}
10 changes: 10 additions & 0 deletions crates/proto/src/version/v662/packets/actor_pick_request.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
use bedrockrs_macros::{gamepacket, ProtoCodec};

#[gamepacket(id = 35)]
#[derive(ProtoCodec)]
pub struct ActorPickRequestPacket {
#[endianness(le)]
pub actor_id: i64,
pub max_slots: i8,
pub with_data: bool,
}
38 changes: 38 additions & 0 deletions crates/proto/src/version/v662/packets/add_actor.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
use bedrockrs_macros::{gamepacket, ProtoCodec};
use crate::version::v662::types::{ActorLink, ActorRuntimeID, ActorUniqueID, DataItem, PropertySyncData, Vec2, Vec3};

#[derive(ProtoCodec)]
struct AttributeEntry {
pub attribute_name: String,
#[endianness(le)]
pub min_value: f32,
#[endianness(le)]
pub current_value: f32,
#[endianness(le)]
pub max_value: f32,
}

#[gamepacket(id = 13)]
#[derive(ProtoCodec)]
pub struct AddActorPacket {
pub target_actor_id: ActorUniqueID,
pub target_runtime_id: ActorRuntimeID,
pub actor_type: String,
pub position: Vec3,
OmniacDev marked this conversation as resolved.
Show resolved Hide resolved
pub velocity: Vec3,
pub rotation: Vec2,
#[endianness(le)]
pub y_head_rotation: f32,
#[endianness(le)]
pub y_body_rotation: f32,
#[vec_repr(u32)]
#[vec_endianness(var)]
pub attributes: Vec<AttributeEntry>,
#[vec_repr(u32)]
#[vec_endianness(var)]
pub actor_data: Vec<DataItem>, // TODO: Verify vec_repr & vec_endianness
pub synced_properties: PropertySyncData,
#[vec_repr(u32)]
#[vec_endianness(var)]
pub actor_links: Vec<ActorLink>
}
16 changes: 16 additions & 0 deletions crates/proto/src/version/v662/packets/add_item_actor.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
use bedrockrs_macros::{gamepacket, ProtoCodec};
use crate::version::v662::types::{ActorRuntimeID, ActorUniqueID, DataItem, NetworkItemStackDescriptor, Vec3};

#[gamepacket(id = 15)]
#[derive(ProtoCodec)]
pub struct AddItemActorPacket {
pub target_actor_id: ActorUniqueID,
pub target_runtime_id: ActorRuntimeID,
pub item: NetworkItemStackDescriptor,
pub position: Vec3,
OmniacDev marked this conversation as resolved.
Show resolved Hide resolved
pub velocity: Vec3,
#[vec_repr(u32)]
#[vec_endianness(var)]
pub entity_data: Vec<DataItem>, // TODO: Verify vec_repr & vec_endianness
pub from_fishing: bool,
}
13 changes: 13 additions & 0 deletions crates/proto/src/version/v662/packets/add_painting.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
use bedrockrs_macros::{gamepacket, ProtoCodec};
use crate::version::v662::types::{ActorRuntimeID, ActorUniqueID, Vec3};

#[gamepacket(id = 22)]
#[derive(ProtoCodec)]
pub struct AddPaintingPacket {
pub target_actor_id: ActorUniqueID,
pub target_runtime_id: ActorRuntimeID,
pub position: Vec3,
#[endianness(var)]
pub direction: i32,
pub motif: String,
}
40 changes: 22 additions & 18 deletions crates/proto/src/version/v662/packets/add_player.rs
Original file line number Diff line number Diff line change
@@ -1,26 +1,30 @@
use uuid::Uuid;
use bedrockrs_core::{Vec2, Vec3};
use bedrockrs_macros::{gamepacket, ProtoCodec};
use bedrockrs_shared::actor_runtime_id::ActorRuntimeID;
use bedrockrs_shared::world::gamemode::Gamemode;
use crate::version::v662::types::{ItemStackDescriptor};
use crate::version::v662::enums::{BuildPlatform, GameType};
use crate::version::v662::types::{ActorLink, ActorRuntimeID, DataItem, NetworkItemStackDescriptor, PropertySyncData, SerializedAbilitiesData, Vec2, Vec3};

#[gamepacket(id = 9)]
#[derive(ProtoCodec, Debug, Clone)]
#[gamepacket(id = 12)]
#[derive(ProtoCodec)]
pub struct AddPlayerPacket {
pub uuid: Uuid,
pub username: String,
pub player_name: String,
pub target_runtime_id: ActorRuntimeID,
pub platform_chat_id: String,
pub position: Vec3,
pub velocity: Vec3,
pub rotation: Vec2,
#[endianness(le)]
pub position: Vec3<f32>,
#[endianness(le)]
pub velocity: Vec3<f32>,
#[endianness(le)]
pub rotation: Vec2<f32>,
#[endianness(le)]
pub head_yaw: f32,
pub carried_item: ItemStackDescriptor,
pub gamemode: Gamemode,
//pub actor_meta_data: ActorMetaData,
}
pub y_head_rotation: f32,
pub carried_item: NetworkItemStackDescriptor,
pub player_game_type: GameType,
#[vec_repr(u32)]
#[vec_endianness(var)]
pub entity_data: Vec<DataItem>, // TODO: Verify vec_repr & vec_endianness
pub synced_properties: PropertySyncData,
pub abilities_data: SerializedAbilitiesData,
#[vec_repr(u32)]
#[vec_endianness(var)]
pub actor_links: Vec<ActorLink>,
pub device_id: String,
pub build_platform: BuildPlatform,
}
Loading
Loading