tentacli 15.2.1

Framework for building extensible network protocol clients via modular plugins.
use async_trait::async_trait;
use binrw::BinRead;
use serde::Serialize;
use std::sync::Arc;
use tokio::sync::RwLock;

use crate::client::prelude::*;

#[derive(Packet, BinRead, Serialize, FieldsMetadata)]
#[br(little)]
struct Incoming {
    map_id: u32,
    zone_id: u32,
    area_id: u32,
    blocks_amount: u16,
    #[br(count = blocks_amount)]
    world_states: Vec<WorldState>,
}

pub struct Handler;
#[async_trait]
impl PacketHandler for Handler {
    async fn handle(
        &mut self,
        packet: &mut Packet,
        _: Arc<RwLock<CtxMap>>,
    ) -> anyhow::Result<Vec<HandlerOutput>> {
        let _ = Incoming::unpack(packet)?;
        Ok(vec![])
    }
}

#[derive(BinRead, Serialize, FieldsMetadata)]
pub struct WorldState {
    pub state: u32,
    pub value: u32,
}