diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2025-12-12 00:56:02 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-12 00:56:02 -0600 |
| commit | f9c25665c203d6377ace62f1e95381d037d8fd9e (patch) | |
| tree | 8b4131d20fe661d3cc1175ec27f801fe61df41ea /azalea-client/src | |
| parent | 82ad975242292d5875780b4398b62637674bf50a (diff) | |
| download | azalea-drasl-f9c25665c203d6377ace62f1e95381d037d8fd9e.tar.xz | |
Refactor azalea-registry (#294)
* move registries in azalea-registry into separate modules
* rename Item and Block to ItemKind and BlockKind
* remove 'extra' registries from azalea-registry
* hide deprecated items from docs
* use DamageKindKey instead of Identifier when parsing registries
* store tag entries as a Vec instead of a HashSet
* sort tag values by protocol id
* update changelog
Diffstat (limited to 'azalea-client/src')
| -rw-r--r-- | azalea-client/src/client.rs | 7 | ||||
| -rw-r--r-- | azalea-client/src/plugins/interact/mod.rs | 78 | ||||
| -rw-r--r-- | azalea-client/src/plugins/inventory/equipment_effects.rs | 8 | ||||
| -rw-r--r-- | azalea-client/src/plugins/inventory/mod.rs | 3 | ||||
| -rw-r--r-- | azalea-client/src/plugins/mining.rs | 12 | ||||
| -rw-r--r-- | azalea-client/src/plugins/movement.rs | 2 | ||||
| -rw-r--r-- | azalea-client/src/plugins/packet/game/events.rs | 2 | ||||
| -rw-r--r-- | azalea-client/src/plugins/packet/game/mod.rs | 5 | ||||
| -rw-r--r-- | azalea-client/src/test_utils/simulation.rs | 14 |
9 files changed, 68 insertions, 63 deletions
diff --git a/azalea-client/src/client.rs b/azalea-client/src/client.rs index 970d8da0..aa2da1d5 100644 --- a/azalea-client/src/client.rs +++ b/azalea-client/src/client.rs @@ -10,7 +10,9 @@ use std::{ use azalea_auth::game_profile::GameProfile; use azalea_core::{ - data_registry::ResolvableDataRegistry, identifier::Identifier, position::Vec3, tick::GameTick, + data_registry::{DataRegistryWithKey, ResolvableDataRegistry}, + position::Vec3, + tick::GameTick, }; use azalea_entity::{ Attributes, EntityUpdateSystems, PlayerAbilities, Position, @@ -26,6 +28,7 @@ use azalea_protocol::{ packets::{Packet, game::ServerboundGamePacket}, resolve, }; +use azalea_registry::{DataRegistryKeyRef, identifier::Identifier}; use azalea_world::{Instance, InstanceContainer, InstanceName, MinecraftEntityId, PartialInstance}; use bevy_app::{App, AppExit, Plugin, PluginsState, SubApp, Update}; use bevy_ecs::{ @@ -517,7 +520,7 @@ impl Client { &self, registry: &impl ResolvableDataRegistry, ) -> Option<Identifier> { - self.with_registry_holder(|registries| registry.resolve_name(registries).cloned()) + self.with_registry_holder(|registries| registry.key(registries).map(|r| r.into_ident())) } /// Resolve the given registry to its name and data and call the given /// function with it. diff --git a/azalea-client/src/plugins/interact/mod.rs b/azalea-client/src/plugins/interact/mod.rs index 47ada08a..8269197c 100644 --- a/azalea-client/src/plugins/interact/mod.rs +++ b/azalea-client/src/plugins/interact/mod.rs @@ -30,7 +30,7 @@ use azalea_protocol::packets::game::{ s_swing::ServerboundSwing, s_use_item_on::ServerboundUseItemOn, }; -use azalea_registry::Item; +use azalea_registry::builtin::ItemKind; use azalea_world::Instance; use bevy_app::{App, Plugin, Update}; use bevy_ecs::prelude::*; @@ -527,45 +527,45 @@ fn update_attributes_for_held_item( } } -fn added_attack_speed_for_item(item: Item) -> f64 { +fn added_attack_speed_for_item(item: ItemKind) -> f64 { match item { - Item::WoodenSword => -2.4, - Item::WoodenShovel => -3.0, - Item::WoodenPickaxe => -2.8, - Item::WoodenAxe => -3.2, - Item::WoodenHoe => -3.0, - - Item::StoneSword => -2.4, - Item::StoneShovel => -3.0, - Item::StonePickaxe => -2.8, - Item::StoneAxe => -3.2, - Item::StoneHoe => -2.0, - - Item::GoldenSword => -2.4, - Item::GoldenShovel => -3.0, - Item::GoldenPickaxe => -2.8, - Item::GoldenAxe => -3.0, - Item::GoldenHoe => -3.0, - - Item::IronSword => -2.4, - Item::IronShovel => -3.0, - Item::IronPickaxe => -2.8, - Item::IronAxe => -3.1, - Item::IronHoe => -1.0, - - Item::DiamondSword => -2.4, - Item::DiamondShovel => -3.0, - Item::DiamondPickaxe => -2.8, - Item::DiamondAxe => -3.0, - Item::DiamondHoe => 0.0, - - Item::NetheriteSword => -2.4, - Item::NetheriteShovel => -3.0, - Item::NetheritePickaxe => -2.8, - Item::NetheriteAxe => -3.0, - Item::NetheriteHoe => 0.0, - - Item::Trident => -2.9, + ItemKind::WoodenSword => -2.4, + ItemKind::WoodenShovel => -3.0, + ItemKind::WoodenPickaxe => -2.8, + ItemKind::WoodenAxe => -3.2, + ItemKind::WoodenHoe => -3.0, + + ItemKind::StoneSword => -2.4, + ItemKind::StoneShovel => -3.0, + ItemKind::StonePickaxe => -2.8, + ItemKind::StoneAxe => -3.2, + ItemKind::StoneHoe => -2.0, + + ItemKind::GoldenSword => -2.4, + ItemKind::GoldenShovel => -3.0, + ItemKind::GoldenPickaxe => -2.8, + ItemKind::GoldenAxe => -3.0, + ItemKind::GoldenHoe => -3.0, + + ItemKind::IronSword => -2.4, + ItemKind::IronShovel => -3.0, + ItemKind::IronPickaxe => -2.8, + ItemKind::IronAxe => -3.1, + ItemKind::IronHoe => -1.0, + + ItemKind::DiamondSword => -2.4, + ItemKind::DiamondShovel => -3.0, + ItemKind::DiamondPickaxe => -2.8, + ItemKind::DiamondAxe => -3.0, + ItemKind::DiamondHoe => 0.0, + + ItemKind::NetheriteSword => -2.4, + ItemKind::NetheriteShovel => -3.0, + ItemKind::NetheritePickaxe => -2.8, + ItemKind::NetheriteAxe => -3.0, + ItemKind::NetheriteHoe => 0.0, + + ItemKind::Trident => -2.9, _ => 0., } } diff --git a/azalea-client/src/plugins/inventory/equipment_effects.rs b/azalea-client/src/plugins/inventory/equipment_effects.rs index 4294cc2f..c02f8ad5 100644 --- a/azalea-client/src/plugins/inventory/equipment_effects.rs +++ b/azalea-client/src/plugins/inventory/equipment_effects.rs @@ -2,15 +2,13 @@ use std::collections::HashMap; -use azalea_core::{ - data_registry::ResolvableDataRegistry, identifier::Identifier, - registry_holder::value::AttributeEffect, -}; +use azalea_core::{data_registry::ResolvableDataRegistry, registry_holder::value::AttributeEffect}; use azalea_entity::{Attributes, inventory::Inventory}; use azalea_inventory::{ ItemStack, components::{self, AttributeModifier, EquipmentSlot}, }; +use azalea_registry::identifier::Identifier; use bevy_ecs::{ component::Component, entity::Entity, @@ -147,7 +145,7 @@ fn collect_attribute_modifiers_from_item( slot: EquipmentSlot, item: &ItemStack, instance_holder: &InstanceHolder, -) -> Vec<(azalea_registry::Attribute, AttributeModifier)> { +) -> Vec<(azalea_registry::builtin::Attribute, AttributeModifier)> { let mut modifiers = Vec::new(); // handle the attribute_modifiers component first diff --git a/azalea-client/src/plugins/inventory/mod.rs b/azalea-client/src/plugins/inventory/mod.rs index f0d4a9ce..93be9e96 100644 --- a/azalea-client/src/plugins/inventory/mod.rs +++ b/azalea-client/src/plugins/inventory/mod.rs @@ -10,7 +10,7 @@ use azalea_protocol::packets::game::{ s_container_close::ServerboundContainerClose, s_set_carried_item::ServerboundSetCarriedItem, }; -use azalea_registry::MenuKind; +use azalea_registry::builtin::MenuKind; use azalea_world::{InstanceContainer, InstanceName}; use bevy_app::{App, Plugin}; use bevy_ecs::prelude::*; @@ -25,6 +25,7 @@ use crate::{ // TODO: when this is removed, remove the Inv alias above (which just exists to // avoid conflicting with this pub deprecated type) +#[doc(hidden)] #[deprecated = "moved to `azalea_entity::inventory::Inventory`."] pub type Inventory = azalea_entity::inventory::Inventory; diff --git a/azalea-client/src/plugins/mining.rs b/azalea-client/src/plugins/mining.rs index 73f2733d..4ed14482 100644 --- a/azalea-client/src/plugins/mining.rs +++ b/azalea-client/src/plugins/mining.rs @@ -7,6 +7,7 @@ use azalea_entity::{ use azalea_inventory::ItemStack; use azalea_physics::{PhysicsSystems, collision::BlockWithShape}; use azalea_protocol::packets::game::s_player_action::{self, ServerboundPlayerAction}; +use azalea_registry::builtin::{BlockKind, ItemKind}; use azalea_world::{InstanceContainer, InstanceName}; use bevy_app::{App, Plugin, Update}; use bevy_ecs::prelude::*; @@ -525,10 +526,8 @@ pub fn handle_finish_mining_block_observer( if game_mode.current == GameMode::Creative { let held_item = inventory.held_item().kind(); - if matches!( - held_item, - azalea_registry::Item::Trident | azalea_registry::Item::DebugStick - ) || azalea_registry::tags::items::SWORDS.contains(&held_item) + if matches!(held_item, ItemKind::Trident | ItemKind::DebugStick) + || azalea_registry::tags::items::SWORDS.contains(&held_item) { return; } @@ -538,12 +537,11 @@ pub fn handle_finish_mining_block_observer( return; }; - let registry_block: azalea_registry::Block = - Box::<dyn BlockTrait>::from(block_state).as_registry_block(); + let registry_block = Box::<dyn BlockTrait>::from(block_state).as_registry_block(); if !can_use_game_master_blocks(abilities, permission_level) && matches!( registry_block, - azalea_registry::Block::CommandBlock | azalea_registry::Block::StructureBlock + BlockKind::CommandBlock | BlockKind::StructureBlock ) { return; diff --git a/azalea-client/src/plugins/movement.rs b/azalea-client/src/plugins/movement.rs index 587bc05b..703b5557 100644 --- a/azalea-client/src/plugins/movement.rs +++ b/azalea-client/src/plugins/movement.rs @@ -29,7 +29,7 @@ use azalea_protocol::{ }, }, }; -use azalea_registry::EntityKind; +use azalea_registry::builtin::EntityKind; use azalea_world::{Instance, MinecraftEntityId}; use bevy_app::{App, Plugin, Update}; use bevy_ecs::prelude::*; diff --git a/azalea-client/src/plugins/packet/game/events.rs b/azalea-client/src/plugins/packet/game/events.rs index 53d93855..9ce4c252 100644 --- a/azalea-client/src/plugins/packet/game/events.rs +++ b/azalea-client/src/plugins/packet/game/events.rs @@ -1,11 +1,11 @@ use std::sync::{Arc, Weak}; use azalea_chat::FormattedText; -use azalea_core::identifier::Identifier; use azalea_protocol::packets::{ Packet, game::{ClientboundGamePacket, ClientboundPlayerCombatKill, ServerboundGamePacket}, }; +use azalea_registry::identifier::Identifier; use azalea_world::Instance; use bevy_ecs::prelude::*; use parking_lot::RwLock; diff --git a/azalea-client/src/plugins/packet/game/mod.rs b/azalea-client/src/plugins/packet/game/mod.rs index 7446a506..89b33274 100644 --- a/azalea-client/src/plugins/packet/game/mod.rs +++ b/azalea-client/src/plugins/packet/game/mod.rs @@ -17,6 +17,7 @@ use azalea_protocol::{ common::movements::MoveFlags, packets::{ConnectionProtocol, game::*}, }; +use azalea_registry::builtin::EntityKind; use azalea_world::{InstanceContainer, InstanceName, MinecraftEntityId, PartialInstance}; use bevy_ecs::{prelude::*, system::SystemState}; pub use events::*; @@ -292,7 +293,7 @@ impl GamePacketHandler<'_> { let entity_bundle = EntityBundle::new( game_profile.uuid, Vec3::ZERO, - azalea_registry::EntityKind::Player, + EntityKind::Player, new_instance_name, ); let entity_id = p.player_id; @@ -1478,7 +1479,7 @@ impl GamePacketHandler<'_> { let entity_bundle = EntityBundle::new( game_profile.uuid, Vec3::ZERO, - azalea_registry::EntityKind::Player, + EntityKind::Player, new_instance_name, ); // update the local gamemode and metadata things diff --git a/azalea-client/src/test_utils/simulation.rs b/azalea-client/src/test_utils/simulation.rs index 0aeec3ea..1946fd6d 100644 --- a/azalea-client/src/test_utils/simulation.rs +++ b/azalea-client/src/test_utils/simulation.rs @@ -6,7 +6,6 @@ use azalea_buf::AzaleaWrite; use azalea_core::{ delta::LpVec3, game_type::{GameMode, OptionalGameType}, - identifier::Identifier, position::{BlockPos, ChunkPos, Vec3}, tick::GameTick, }; @@ -25,7 +24,12 @@ use azalea_protocol::{ }, }, }; -use azalea_registry::{Biome, DataRegistry, DimensionType, EntityKind}; +use azalea_registry::{ + DataRegistry, + builtin::EntityKind, + data::{Biome, DimensionKind}, + identifier::Identifier, +}; use azalea_world::{Chunk, Instance, MinecraftEntityId, Section, palette::PalettedContainer}; use bevy_app::App; use bevy_ecs::{ @@ -318,13 +322,13 @@ fn tick_app(app: &mut App) { pub fn default_login_packet() -> ClientboundLogin { make_basic_login_packet( - DimensionType::new_raw(0), // overworld + DimensionKind::new_raw(0), // overworld Identifier::new("minecraft:overworld"), ) } pub fn make_basic_login_packet( - dimension_type: DimensionType, + dimension_type: DimensionKind, dimension: Identifier, ) -> ClientboundLogin { ClientboundLogin { @@ -354,7 +358,7 @@ pub fn make_basic_login_packet( } pub fn make_basic_respawn_packet( - dimension_type: DimensionType, + dimension_type: DimensionKind, dimension: Identifier, ) -> ClientboundRespawn { ClientboundRespawn { |
