Pumpkin/pumpkin-protocol/src/java/server/config/known_packs.rs
2026-07-25 16:48:20 +02:00

34 lines
1.1 KiB
Rust

use crate::KnownPack;
use crate::{
ServerPacket,
ser::{NetworkReadExt, NetworkReadSliceExt, ReadingError},
};
use pumpkin_data::packet::serverbound::CONFIG_SELECT_KNOWN_PACKS;
use pumpkin_macros::java_packet;
use pumpkin_util::version::JavaMinecraftVersion;
#[java_packet(CONFIG_SELECT_KNOWN_PACKS)]
pub struct SKnownPacks<'a> {
pub known_packs: Vec<KnownPack<'a>>,
}
impl<'a> ServerPacket<'a> for SKnownPacks<'a> {
fn read(bytebuf: &mut &'a [u8], _version: &JavaMinecraftVersion) -> Result<Self, ReadingError> {
let count = bytebuf.get_var_int()?.0;
if !(0..=64).contains(&count) {
return Err(ReadingError::Message(
"Known packs count out of bounds".into(),
));
}
let mut known_packs = Vec::with_capacity(count as usize);
for _ in 0..count {
known_packs.push(KnownPack {
namespace: bytebuf.get_str_borrowed()?,
id: bytebuf.get_str_borrowed()?,
version: bytebuf.get_str_borrowed()?,
});
}
Ok(Self { known_packs })
}
}