aboutsummaryrefslogtreecommitdiff
path: root/azalea-client/src/plugins/packet
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2025-12-16 05:41:25 -0500
committermat <git@matdoes.dev>2025-12-16 05:41:25 -0500
commit188428950722ccaa9b163c12fca92133f18316ba (patch)
tree05143223204ef026ee672092f2ebbb3c17cea0d1 /azalea-client/src/plugins/packet
parent281a810c860a67e8e7957aaec876ea608602831c (diff)
downloadazalea-drasl-188428950722ccaa9b163c12fca92133f18316ba.tar.xz
implement cookie packets to fix betteranticheat support
Diffstat (limited to 'azalea-client/src/plugins/packet')
-rw-r--r--azalea-client/src/plugins/packet/config/mod.rs28
-rw-r--r--azalea-client/src/plugins/packet/game/mod.rs22
-rw-r--r--azalea-client/src/plugins/packet/login/mod.rs21
3 files changed, 43 insertions, 28 deletions
diff --git a/azalea-client/src/plugins/packet/config/mod.rs b/azalea-client/src/plugins/packet/config/mod.rs
index 629f9f71..27dae837 100644
--- a/azalea-client/src/plugins/packet/config/mod.rs
+++ b/azalea-client/src/plugins/packet/config/mod.rs
@@ -15,6 +15,7 @@ use super::{as_system, declare_packet_handlers};
use crate::{
client::InConfigState,
connection::RawConnection,
+ cookies::{RequestCookieEvent, StoreCookieEvent},
disconnect::DisconnectEvent,
local_player::InstanceHolder,
packet::game::{KeepAliveEvent, ResourcePackEvent},
@@ -179,16 +180,21 @@ impl ConfigPacketHandler<'_> {
pub fn cookie_request(&mut self, p: &ClientboundCookieRequest) {
debug!("Got cookie request packet {p:?}");
-
as_system::<Commands>(self.ecs, |mut commands| {
- commands.trigger(SendConfigPacketEvent::new(
- self.player,
- ServerboundCookieResponse {
- key: p.key.clone(),
- // cookies aren't implemented
- payload: None,
- },
- ));
+ commands.trigger(RequestCookieEvent {
+ entity: self.player,
+ key: p.key.clone(),
+ });
+ });
+ }
+ pub fn store_cookie(&mut self, p: &ClientboundStoreCookie) {
+ debug!("Got store cookie packet {p:?}");
+ as_system::<Commands>(self.ecs, |mut commands| {
+ commands.trigger(StoreCookieEvent {
+ entity: self.player,
+ key: p.key.clone(),
+ payload: p.payload.clone(),
+ });
});
}
@@ -196,10 +202,6 @@ impl ConfigPacketHandler<'_> {
debug!("Got reset chat packet {p:?}");
}
- pub fn store_cookie(&mut self, p: &ClientboundStoreCookie) {
- debug!("Got store cookie packet {p:?}");
- }
-
pub fn transfer(&mut self, p: &ClientboundTransfer) {
debug!("Got transfer packet {p:?}");
}
diff --git a/azalea-client/src/plugins/packet/game/mod.rs b/azalea-client/src/plugins/packet/game/mod.rs
index 89b33274..f39a9f8f 100644
--- a/azalea-client/src/plugins/packet/game/mod.rs
+++ b/azalea-client/src/plugins/packet/game/mod.rs
@@ -29,6 +29,7 @@ use crate::{
chat::{ChatPacket, ChatReceivedEvent},
chunks,
connection::RawConnection,
+ cookies::{RequestCookieEvent, StoreCookieEvent},
disconnect::DisconnectEvent,
interact::BlockStatePredictionHandler,
inventory::{ClientsideCloseContainerEvent, MenuOpenedEvent, SetContainerContentEvent},
@@ -1599,10 +1600,27 @@ impl GamePacketHandler<'_> {
pub fn ticking_state(&mut self, _p: &ClientboundTickingState) {}
pub fn ticking_step(&mut self, _p: &ClientboundTickingStep) {}
pub fn reset_score(&mut self, _p: &ClientboundResetScore) {}
- pub fn cookie_request(&mut self, _p: &ClientboundCookieRequest) {}
+ pub fn cookie_request(&mut self, p: &ClientboundCookieRequest) {
+ debug!("Got cookie request packet {p:?}");
+ as_system::<Commands>(self.ecs, |mut commands| {
+ commands.trigger(RequestCookieEvent {
+ entity: self.player,
+ key: p.key.clone(),
+ });
+ });
+ }
+ pub fn store_cookie(&mut self, p: &ClientboundStoreCookie) {
+ debug!("Got store cookie packet {p:?}");
+ as_system::<Commands>(self.ecs, |mut commands| {
+ commands.trigger(StoreCookieEvent {
+ entity: self.player,
+ key: p.key.clone(),
+ payload: p.payload.clone(),
+ });
+ });
+ }
pub fn debug_sample(&mut self, _p: &ClientboundDebugSample) {}
pub fn pong_response(&mut self, _p: &ClientboundPongResponse) {}
- pub fn store_cookie(&mut self, _p: &ClientboundStoreCookie) {}
pub fn transfer(&mut self, _p: &ClientboundTransfer) {}
pub fn move_minecart_along_track(&mut self, _p: &ClientboundMoveMinecartAlongTrack) {}
pub fn set_held_slot(&mut self, p: &ClientboundSetHeldSlot) {
diff --git a/azalea-client/src/plugins/packet/login/mod.rs b/azalea-client/src/plugins/packet/login/mod.rs
index 8fe1e22a..de44309c 100644
--- a/azalea-client/src/plugins/packet/login/mod.rs
+++ b/azalea-client/src/plugins/packet/login/mod.rs
@@ -8,7 +8,7 @@ use azalea_protocol::packets::{
login::{
ClientboundCookieRequest, ClientboundCustomQuery, ClientboundHello,
ClientboundLoginCompression, ClientboundLoginDisconnect, ClientboundLoginFinished,
- ClientboundLoginPacket, ServerboundCookieResponse, ServerboundLoginAcknowledged,
+ ClientboundLoginPacket, ServerboundLoginAcknowledged,
},
};
use bevy_ecs::prelude::*;
@@ -17,8 +17,8 @@ use tracing::{debug, error};
use super::as_system;
use crate::{
- Account, InConfigState, connection::RawConnection, disconnect::DisconnectEvent,
- packet::declare_packet_handlers, player::GameProfileComponent,
+ Account, InConfigState, connection::RawConnection, cookies::RequestCookieEvent,
+ disconnect::DisconnectEvent, packet::declare_packet_handlers, player::GameProfileComponent,
};
pub fn process_packet(ecs: &mut World, player: Entity, packet: &ClientboundLoginPacket) {
@@ -127,17 +127,12 @@ impl LoginPacketHandler<'_> {
});
}
pub fn cookie_request(&mut self, p: &ClientboundCookieRequest) {
- debug!("Got cookie request {p:?}");
-
+ debug!("Got cookie request packet {p:?}");
as_system::<Commands>(self.ecs, |mut commands| {
- commands.trigger(SendLoginPacketEvent::new(
- self.player,
- ServerboundCookieResponse {
- key: p.key.clone(),
- // cookies aren't implemented
- payload: None,
- },
- ));
+ commands.trigger(RequestCookieEvent {
+ entity: self.player,
+ key: p.key.clone(),
+ });
});
}
}