aboutsummaryrefslogtreecommitdiff
path: root/azalea-client/src
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2025-12-12 00:56:02 -0600
committerGitHub <noreply@github.com>2025-12-12 00:56:02 -0600
commitf9c25665c203d6377ace62f1e95381d037d8fd9e (patch)
tree8b4131d20fe661d3cc1175ec27f801fe61df41ea /azalea-client/src
parent82ad975242292d5875780b4398b62637674bf50a (diff)
downloadazalea-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.rs7
-rw-r--r--azalea-client/src/plugins/interact/mod.rs78
-rw-r--r--azalea-client/src/plugins/inventory/equipment_effects.rs8
-rw-r--r--azalea-client/src/plugins/inventory/mod.rs3
-rw-r--r--azalea-client/src/plugins/mining.rs12
-rw-r--r--azalea-client/src/plugins/movement.rs2
-rw-r--r--azalea-client/src/plugins/packet/game/events.rs2
-rw-r--r--azalea-client/src/plugins/packet/game/mod.rs5
-rw-r--r--azalea-client/src/test_utils/simulation.rs14
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 {