Pumpkin/crates/pumpkin/src/net/java/login/known_packs.rs
2026-09-19 15:38:19 +02:00

38 lines
1.5 KiB
Rust

#[allow(clippy::wildcard_imports)]
use super::*;
impl PendingConnection {
pub async fn handle_known_packs(&mut self, server: &Server) {
let version = self.version.load();
if version.supports_configuration_state() {
if version < JavaMinecraftVersion::V_1_20_5 {
let features = server.get_enabled_features();
self.send_packet_now(&CFeatureFlags::new(&features)).await;
}
let registry = pumpkin_data::registry::Registry::get_synced(version);
for reg in &registry {
if reg.registry_id == "minecraft:damage_type" {
let merged = server
.datapack_manager
.merge_damage_type_entries(&reg.registry_entries);
self.send_packet_now(&CRegistryData::new(&reg.registry_id, &merged))
.await;
continue;
}
self.send_packet_now(&CRegistryData::new(&reg.registry_id, &reg.registry_entries))
.await;
}
}
let mut tags = Vec::new();
for &key in pumpkin_data::tag::RegistryKey::NETWORK_KEYS {
if pumpkin_data::tag::get_registry_key_tags(version, key)
.is_some_and(|map| !map.is_empty())
{
tags.push(key);
}
}
self.send_packet_now(&CUpdateTags::new(&tags)).await;
self.send_packet_now(&CFinishConfig).await;
}
}