Add Serverbound Set Player On Ground
This commit is contained in:
parent
020c71a973
commit
ddd3f1e781
@ -119,7 +119,7 @@ impl ByteBuffer {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn put_uuid(&mut self, v: uuid::Uuid) {
|
||||
pub fn put_uuid(&mut self, v: &uuid::Uuid) {
|
||||
// thats the vanilla way
|
||||
let pair = v.as_u64_pair();
|
||||
self.put_u64(pair.0);
|
||||
|
||||
@ -4,7 +4,7 @@ use crate::{bytebuf::ByteBuffer, ClientPacket, Property};
|
||||
|
||||
#[packet(0x02)]
|
||||
pub struct CLoginSuccess<'a> {
|
||||
pub uuid: uuid::Uuid,
|
||||
pub uuid: &'a uuid::Uuid,
|
||||
pub username: &'a str, // 16
|
||||
pub properties: &'a [Property],
|
||||
pub strict_error_handling: bool,
|
||||
@ -12,7 +12,7 @@ pub struct CLoginSuccess<'a> {
|
||||
|
||||
impl<'a> CLoginSuccess<'a> {
|
||||
pub fn new(
|
||||
uuid: uuid::Uuid,
|
||||
uuid: &'a uuid::Uuid,
|
||||
username: &'a str,
|
||||
properties: &'a [Property],
|
||||
strict_error_handling: bool,
|
||||
|
||||
@ -25,7 +25,7 @@ impl<'a> ClientPacket for CPlayerInfoUpdate<'a> {
|
||||
fn write(&self, bytebuf: &mut ByteBuffer) {
|
||||
bytebuf.put_i8(self.actions);
|
||||
bytebuf.put_list::<Player>(self.players, |p, v| {
|
||||
p.put_uuid(v.uuid);
|
||||
p.put_uuid(&v.uuid);
|
||||
for action in &v.actions {
|
||||
match action {
|
||||
PlayerAction::AddPlayer { name, properties } => {
|
||||
|
||||
@ -7,6 +7,7 @@ mod s_interact;
|
||||
mod s_ping_request;
|
||||
mod s_player_action;
|
||||
mod s_player_command;
|
||||
mod s_player_ground;
|
||||
mod s_player_position;
|
||||
mod s_player_position_rotation;
|
||||
mod s_player_rotation;
|
||||
@ -24,6 +25,7 @@ pub use s_interact::*;
|
||||
pub use s_ping_request::*;
|
||||
pub use s_player_action::*;
|
||||
pub use s_player_command::*;
|
||||
pub use s_player_ground::*;
|
||||
pub use s_player_position::*;
|
||||
pub use s_player_position_rotation::*;
|
||||
pub use s_player_rotation::*;
|
||||
|
||||
8
pumpkin-protocol/src/server/play/s_player_ground.rs
Normal file
8
pumpkin-protocol/src/server/play/s_player_ground.rs
Normal file
@ -0,0 +1,8 @@
|
||||
use pumpkin_macros::packet;
|
||||
use serde::Deserialize;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[packet(0x1D)]
|
||||
pub struct SSetPlayerGround {
|
||||
pub on_ground: bool,
|
||||
}
|
||||
@ -175,7 +175,7 @@ impl Client {
|
||||
}
|
||||
|
||||
if let Some(profile) = self.gameprofile.as_ref().cloned() {
|
||||
let packet = CLoginSuccess::new(profile.id, &profile.name, &profile.properties, false);
|
||||
let packet = CLoginSuccess::new(&profile.id, &profile.name, &profile.properties, false);
|
||||
self.send_packet(&packet);
|
||||
} else {
|
||||
self.kick("game profile is none");
|
||||
|
||||
@ -10,7 +10,7 @@ use num_traits::FromPrimitive;
|
||||
use pumpkin_core::text::TextComponent;
|
||||
use pumpkin_entity::EntityId;
|
||||
use pumpkin_inventory::WindowType;
|
||||
use pumpkin_protocol::server::play::SCloseContainer;
|
||||
use pumpkin_protocol::server::play::{SCloseContainer, SSetPlayerGround};
|
||||
use pumpkin_protocol::{
|
||||
client::play::{
|
||||
Animation, CAcknowledgeBlockChange, CBlockUpdate, CEntityAnimation, CEntityVelocity,
|
||||
@ -178,6 +178,10 @@ impl Player {
|
||||
handle_command(&mut CommandSender::Player(self), &command.command);
|
||||
}
|
||||
|
||||
pub fn handle_player_ground(&mut self, _server: &mut Server, ground: SSetPlayerGround) {
|
||||
self.on_ground = ground.on_ground;
|
||||
}
|
||||
|
||||
pub fn handle_player_command(&mut self, _server: &mut Server, command: SPlayerCommand) {
|
||||
if command.entity_id != self.entity.entity_id.into() {
|
||||
return;
|
||||
|
||||
@ -11,7 +11,7 @@ use pumpkin_protocol::{
|
||||
server::play::{
|
||||
SChatCommand, SChatMessage, SClientInformationPlay, SConfirmTeleport, SInteract,
|
||||
SPlayPingRequest, SPlayerAction, SPlayerCommand, SPlayerPosition, SPlayerPositionRotation,
|
||||
SPlayerRotation, SSetCreativeSlot, SSetHeldItem, SSwingArm, SUseItemOn,
|
||||
SPlayerRotation, SSetCreativeSlot, SSetHeldItem, SSetPlayerGround, SSwingArm, SUseItemOn,
|
||||
},
|
||||
ConnectionState, RawPacket, ServerPacket, VarInt,
|
||||
};
|
||||
@ -192,6 +192,10 @@ impl Player {
|
||||
self.handle_rotation(server, SPlayerRotation::read(bytebuf)?);
|
||||
Ok(())
|
||||
}
|
||||
SSetPlayerGround::PACKET_ID => {
|
||||
self.handle_player_ground(server, SSetPlayerGround::read(bytebuf)?);
|
||||
Ok(())
|
||||
}
|
||||
SPlayerCommand::PACKET_ID => {
|
||||
self.handle_player_command(server, SPlayerCommand::read(bytebuf)?);
|
||||
Ok(())
|
||||
|
||||
Loading…
Reference in New Issue
Block a user