From 7517a207db658c98d5b97b3b3f44df6725c025a2 Mon Sep 17 00:00:00 2001 From: mat Date: Mon, 2 Jun 2025 19:23:59 -0330 Subject: [PATCH] rename the Block trait to BlockTrait to disambiguate with azalea_registry::Block --- azalea-block/README.md | 14 +++++++------- azalea-block/azalea-block-macros/src/lib.rs | 6 +++--- azalea-block/src/block_state.rs | 12 ++++++------ azalea-block/src/generated.rs | 2 +- azalea-block/src/lib.rs | 6 +++--- azalea-block/src/range.rs | 1 - azalea-client/src/plugins/mining.rs | 8 ++++---- azalea-entity/src/mining.rs | 6 +++--- azalea-entity/src/plugin/mod.rs | 4 ++-- azalea-physics/src/collision/mod.rs | 2 +- azalea-physics/src/lib.rs | 6 +++--- azalea-physics/src/travel.rs | 4 ++-- azalea-registry/src/lib.rs | 4 ++-- azalea-world/src/heightmap.rs | 2 +- azalea/src/auto_tool.rs | 4 ++-- 15 files changed, 40 insertions(+), 41 deletions(-) diff --git a/azalea-block/README.md b/azalea-block/README.md index ae3b8c5f..8eca79ee 100644 --- a/azalea-block/README.md +++ b/azalea-block/README.md @@ -23,20 +23,20 @@ let block_state: BlockState = azalea_block::blocks::CobblestoneWall { let block_state: BlockState = azalea_registry::Block::Jukebox.into(); ``` -## Block trait +## BlockTrait -The [`Block`] trait represents a type of a block. With the the [`Block`] trait, you can get some extra things like the string block ID and some information about the block's behavior. Also, the structs that implement the trait contain the block attributes as fields so it's more convenient to get them. Note that this is often used as `Box`. -If for some reason you don't want the `Block` trait, set default-features to false. +The [`BlockTrait`] trait represents a type of a block. With [`BlockTrait`], you can get some extra things like the string block ID and some information about the block's behavior. Also, the structs that implement the trait contain the block attributes as fields so it's more convenient to get them. Note that this is often used as `Box`. +If for some reason you don't want `BlockTrait`, set `default-features = false`. ``` -# use azalea_block::{Block, BlockState}; +# use azalea_block::{BlockTrait, BlockState}; # let block_state = BlockState::from(azalea_registry::Block::Jukebox); -let block = Box::::from(block_state); +let block = Box::::from(block_state); ``` ``` -# use azalea_block::{Block, BlockState}; +# use azalea_block::{BlockTrait, BlockState}; # let block_state: BlockState = azalea_registry::Block::Jukebox.into(); -if let Some(jukebox) = Box::::from(block_state).downcast_ref::() { +if let Some(jukebox) = Box::::from(block_state).downcast_ref::() { // ... } ``` diff --git a/azalea-block/azalea-block-macros/src/lib.rs b/azalea-block/azalea-block-macros/src/lib.rs index 3d09b018..4174ed41 100644 --- a/azalea-block/azalea-block-macros/src/lib.rs +++ b/azalea-block/azalea-block-macros/src/lib.rs @@ -660,7 +660,7 @@ pub fn make_block_states(input: TokenStream) -> TokenStream { #block_struct_fields } - impl Block for #block_struct_name { + impl BlockTrait for #block_struct_name { fn behavior(&self) -> BlockBehavior { #block_behavior } @@ -785,7 +785,7 @@ pub fn make_block_states(input: TokenStream) -> TokenStream { #block_structs - impl From for Box { + impl From for Box { fn from(block_state: BlockState) -> Self { let b = block_state.id(); match b { @@ -794,7 +794,7 @@ pub fn make_block_states(input: TokenStream) -> TokenStream { } } } - impl From for Box { + impl From for Box { fn from(block: azalea_registry::Block) -> Self { match block { #from_registry_block_to_block_match diff --git a/azalea-block/src/block_state.rs b/azalea-block/src/block_state.rs index dfa2a9b2..a954c333 100644 --- a/azalea-block/src/block_state.rs +++ b/azalea-block/src/block_state.rs @@ -5,7 +5,7 @@ use std::{ use azalea_buf::{AzaleaRead, AzaleaReadVar, AzaleaWrite, AzaleaWriteVar, BufReadError}; -use crate::Block; +use crate::BlockTrait; /// The type that's used internally to represent a block state ID. /// @@ -121,14 +121,14 @@ impl Debug for BlockState { f, "BlockState(id: {}, {:?})", self.id, - Box::::from(*self) + Box::::from(*self) ) } } impl From for azalea_registry::Block { fn from(value: BlockState) -> Self { - Box::::from(value).as_registry_block() + Box::::from(value).as_registry_block() } } @@ -149,11 +149,11 @@ mod tests { #[test] fn test_from_blockstate() { - let block: Box = Box::::from(BlockState::AIR); + let block: Box = Box::::from(BlockState::AIR); assert_eq!(block.id(), "air"); - let block: Box = - Box::::from(BlockState::from(azalea_registry::Block::FloweringAzalea)); + let block: Box = + Box::::from(BlockState::from(azalea_registry::Block::FloweringAzalea)); assert_eq!(block.id(), "flowering_azalea"); } diff --git a/azalea-block/src/generated.rs b/azalea-block/src/generated.rs index 28dfe4f9..7c26291f 100644 --- a/azalea-block/src/generated.rs +++ b/azalea-block/src/generated.rs @@ -2,7 +2,7 @@ use std::fmt::Debug; use azalea_block_macros::make_block_states; -use crate::{Block, BlockBehavior, BlockState, BlockStates, Property}; +use crate::{BlockTrait, BlockBehavior, BlockState, BlockStates, Property}; make_block_states! { Properties => { diff --git a/azalea-block/src/lib.rs b/azalea-block/src/lib.rs index fdffe372..4f929cd3 100644 --- a/azalea-block/src/lib.rs +++ b/azalea-block/src/lib.rs @@ -15,7 +15,7 @@ pub use block_state::BlockState; pub use generated::{blocks, properties}; pub use range::BlockStates; -pub trait Block: Debug + Any { +pub trait BlockTrait: Debug + Any { fn behavior(&self) -> BlockBehavior; /// Get the Minecraft ID for this block. For example `stone` or /// `grass_block`. @@ -27,8 +27,8 @@ pub trait Block: Debug + Any { /// `azalea_registry::Block` doesn't contain any state data. fn as_registry_block(&self) -> azalea_registry::Block; } -impl dyn Block { - pub fn downcast_ref(&self) -> Option<&T> { +impl dyn BlockTrait { + pub fn downcast_ref(&self) -> Option<&T> { (self as &dyn Any).downcast_ref::() } } diff --git a/azalea-block/src/range.rs b/azalea-block/src/range.rs index 183c3cc0..cbe77284 100644 --- a/azalea-block/src/range.rs +++ b/azalea-block/src/range.rs @@ -1,7 +1,6 @@ use std::{ collections::{HashSet, hash_set}, ops::{Add, RangeInclusive}, - sync::LazyLock, }; use crate::{BlockState, block_state::BlockStateIntegerRepr}; diff --git a/azalea-client/src/plugins/mining.rs b/azalea-client/src/plugins/mining.rs index 4f076129..6372e6c8 100644 --- a/azalea-client/src/plugins/mining.rs +++ b/azalea-client/src/plugins/mining.rs @@ -1,4 +1,4 @@ -use azalea_block::{Block, BlockState, fluid_state::FluidState}; +use azalea_block::{BlockTrait, BlockState, fluid_state::FluidState}; use azalea_core::{direction::Direction, game_type::GameMode, position::BlockPos, tick::GameTick}; use azalea_entity::{FluidOnEyes, Physics, mining::get_mine_progress}; use azalea_inventory::ItemStack; @@ -300,7 +300,7 @@ fn handle_mining_queued( }); } - let block = Box::::from(target_block_state); + let block = Box::::from(target_block_state); let held_item = inventory.held_item(); @@ -469,7 +469,7 @@ pub fn handle_finish_mining_block_observer( return; }; - let registry_block = Box::::from(block_state).as_registry_block(); + let registry_block = Box::::from(block_state).as_registry_block(); if !can_use_game_master_blocks(abilities, permission_level) && matches!( registry_block, @@ -603,7 +603,7 @@ pub fn continue_mining_block( commands.entity(entity).remove::(); continue; } - let block = Box::::from(target_block_state); + let block = Box::::from(target_block_state); **mine_progress += get_mine_progress( block.as_ref(), current_mining_item.kind(), diff --git a/azalea-entity/src/mining.rs b/azalea-entity/src/mining.rs index 370478ee..fbe7f525 100644 --- a/azalea-entity/src/mining.rs +++ b/azalea-entity/src/mining.rs @@ -1,4 +1,4 @@ -use azalea_block::{Block, BlockBehavior}; +use azalea_block::{BlockTrait, BlockBehavior}; use azalea_core::tier::get_item_tier; use azalea_registry as registry; @@ -13,7 +13,7 @@ use crate::{FluidOnEyes, Physics, effects}; /// The player inventory is needed to check your armor and offhand for modifiers /// to your mining speed. pub fn get_mine_progress( - block: &dyn Block, + block: &dyn BlockTrait, held_item: registry::Item, player_inventory: &azalea_inventory::Menu, fluid_on_eyes: &FluidOnEyes, @@ -41,7 +41,7 @@ pub fn get_mine_progress( / divider as f32 } -fn has_correct_tool_for_drops(block: &dyn Block, tool: registry::Item) -> bool { +fn has_correct_tool_for_drops(block: &dyn BlockTrait, tool: registry::Item) -> bool { if !block.behavior().requires_correct_tool_for_drops { return true; } diff --git a/azalea-entity/src/plugin/mod.rs b/azalea-entity/src/plugin/mod.rs index 6e716d15..03afe7cd 100644 --- a/azalea-entity/src/plugin/mod.rs +++ b/azalea-entity/src/plugin/mod.rs @@ -135,7 +135,7 @@ pub fn update_on_climbable( let block_pos = BlockPos::from(position); let block_state_at_feet = instance.get_block_state(&block_pos).unwrap_or_default(); - let block_at_feet = Box::::from(block_state_at_feet); + let block_at_feet = Box::::from(block_state_at_feet); let registry_block_at_feet = block_at_feet.as_registry_block(); **on_climbable = azalea_registry::tags::blocks::CLIMBABLE.contains(®istry_block_at_feet) @@ -162,7 +162,7 @@ fn is_trapdoor_useable_as_ladder( .get_block_state(&block_pos.down(1)) .unwrap_or_default(); let registry_block_below = - Box::::from(block_below).as_registry_block(); + Box::::from(block_below).as_registry_block(); if registry_block_below != azalea_registry::Block::Ladder { return false; } diff --git a/azalea-physics/src/collision/mod.rs b/azalea-physics/src/collision/mod.rs index 56491e2d..2e46970d 100644 --- a/azalea-physics/src/collision/mod.rs +++ b/azalea-physics/src/collision/mod.rs @@ -379,7 +379,7 @@ pub fn legacy_blocks_motion(block: BlockState) -> bool { pub fn legacy_calculate_solid(block: BlockState) -> bool { // force_solid has to be checked before anything else - let block_trait = Box::::from(block); + let block_trait = Box::::from(block); if let Some(solid) = block_trait.behavior().force_solid { return solid; } diff --git a/azalea-physics/src/lib.rs b/azalea-physics/src/lib.rs index 6c9fe096..f384a90f 100644 --- a/azalea-physics/src/lib.rs +++ b/azalea-physics/src/lib.rs @@ -8,7 +8,7 @@ pub mod travel; use std::collections::HashSet; -use azalea_block::{Block, BlockState, fluid_state::FluidState, properties}; +use azalea_block::{BlockTrait, BlockState, fluid_state::FluidState, properties}; use azalea_core::{ math, position::{BlockPos, Vec3}, @@ -492,7 +492,7 @@ fn block_jump_factor(world: &Instance, position: &Position) -> f32 { .get_block_state(&get_block_pos_below_that_affects_movement(position)); let block_at_pos_jump_factor = if let Some(block) = block_at_pos { - Box::::from(block).behavior().jump_factor + Box::::from(block).behavior().jump_factor } else { 1. }; @@ -501,7 +501,7 @@ fn block_jump_factor(world: &Instance, position: &Position) -> f32 { } if let Some(block) = block_below { - Box::::from(block).behavior().jump_factor + Box::::from(block).behavior().jump_factor } else { 1. } diff --git a/azalea-physics/src/travel.rs b/azalea-physics/src/travel.rs index 8f89de25..741267c2 100644 --- a/azalea-physics/src/travel.rs +++ b/azalea-physics/src/travel.rs @@ -1,4 +1,4 @@ -use azalea_block::{Block, BlockState, fluid_state::FluidState}; +use azalea_block::{BlockTrait, BlockState, fluid_state::FluidState}; use azalea_core::{ aabb::AABB, position::{BlockPos, Vec3}, @@ -124,7 +124,7 @@ fn travel_in_air( .chunks .get_block_state(&block_pos_below) .unwrap_or(BlockState::AIR); - let block_below: Box = block_state_below.into(); + let block_below: Box = block_state_below.into(); let block_friction = block_below.behavior().friction; let inertia = if physics.on_ground() { diff --git a/azalea-registry/src/lib.rs b/azalea-registry/src/lib.rs index 6fb089d2..69ac72b0 100644 --- a/azalea-registry/src/lib.rs +++ b/azalea-registry/src/lib.rs @@ -278,10 +278,10 @@ enum Attribute { registry! { /// An enum of every type of block in the game. To represent a block *state*, -/// use [`azalea_block::BlockState`] or the [`azalea_block::Block`] trait. +/// use [`azalea_block::BlockState`] or [`azalea_block::BlockTrait`]. /// /// [`azalea_block::BlockState`]: https://docs.rs/azalea-block/latest/azalea_block/struct.BlockState.html -/// [`azalea_block::Block`]: https://docs.rs/azalea-block/latest/azalea_block/trait.Block.html +/// [`azalea_block::BlockTrait`]: https://docs.rs/azalea-block/latest/azalea_block/trait.BlockTrait.html enum Block { Air => "minecraft:air", Stone => "minecraft:stone", diff --git a/azalea-world/src/heightmap.rs b/azalea-world/src/heightmap.rs index 462d5b09..dbe7d78f 100644 --- a/azalea-world/src/heightmap.rs +++ b/azalea-world/src/heightmap.rs @@ -44,7 +44,7 @@ fn motion_blocking(block_state: BlockState) -> bool { impl HeightmapKind { pub fn is_opaque(self, block_state: BlockState) -> bool { - let block = Box::::from(block_state); + let block = Box::::from(block_state); let registry_block = block.as_registry_block(); match self { HeightmapKind::WorldSurfaceWg => !block_state.is_air(), diff --git a/azalea/src/auto_tool.rs b/azalea/src/auto_tool.rs index ace032d9..0f33dd09 100644 --- a/azalea/src/auto_tool.rs +++ b/azalea/src/auto_tool.rs @@ -1,4 +1,4 @@ -use azalea_block::{Block, BlockState, fluid_state::FluidKind}; +use azalea_block::{BlockState, BlockTrait, fluid_state::FluidKind}; use azalea_client::{Client, inventory::Inventory}; use azalea_entity::{FluidOnEyes, Physics}; use azalea_inventory::{ItemStack, Menu, components}; @@ -52,7 +52,7 @@ pub fn accurate_best_tool_in_hotbar_for_block( let mut best_speed = 0.; let mut best_slot = None; - let block = Box::::from(block); + let block = Box::::from(block); let registry_block = block.as_registry_block(); if matches!(