From cde7e35046b726b07bf3e067c080b85a12b2fd74 Mon Sep 17 00:00:00 2001 From: mat <27899617+mat-1@users.noreply.github.com> Date: Sat, 15 Jul 2023 04:39:43 -0500 Subject: Attacking (#96) * add Client::attack * partially implement attack cooldowns * attack speed modifiers * don't care clippy --------- Co-authored-by: mat --- azalea-entity/src/attributes.rs | 19 +++++++++++++++++++ azalea-entity/src/lib.rs | 1 + 2 files changed, 20 insertions(+) (limited to 'azalea-entity/src') diff --git a/azalea-entity/src/attributes.rs b/azalea-entity/src/attributes.rs index 97b890dc..18bbc348 100644 --- a/azalea-entity/src/attributes.rs +++ b/azalea-entity/src/attributes.rs @@ -13,6 +13,7 @@ use uuid::{uuid, Uuid}; #[derive(Clone, Debug, Component)] pub struct Attributes { pub speed: AttributeInstance, + pub attack_speed: AttributeInstance, } #[derive(Clone, Debug)] @@ -92,6 +93,24 @@ pub fn sprinting_modifier() -> AttributeModifier { } } +pub static BASE_ATTACK_SPEED_UUID: Uuid = uuid!("FA233E1C-4180-4865-B01B-BCCE9785ACA3"); +pub fn weapon_attack_speed_modifier(amount: f64) -> AttributeModifier { + AttributeModifier { + uuid: BASE_ATTACK_SPEED_UUID, + name: "Weapon modifier".to_string(), + amount, + operation: AttributeModifierOperation::Addition, + } +} +pub fn tool_attack_speed_modifier(amount: f64) -> AttributeModifier { + AttributeModifier { + uuid: BASE_ATTACK_SPEED_UUID, + name: "Tool modifier".to_string(), + amount, + operation: AttributeModifierOperation::Addition, + } +} + impl McBufReadable for AttributeModifier { fn read_from(buf: &mut Cursor<&[u8]>) -> Result { let uuid = Uuid::read_from(buf)?; diff --git a/azalea-entity/src/lib.rs b/azalea-entity/src/lib.rs index 53e8bfdb..76c5220a 100644 --- a/azalea-entity/src/lib.rs +++ b/azalea-entity/src/lib.rs @@ -344,6 +344,7 @@ impl EntityBundle { // TODO: do the correct defaults for everything, some // entities have different defaults speed: AttributeInstance::new(0.1), + attack_speed: AttributeInstance::new(4.0), }, jumping: Jumping(false), -- cgit v1.2.3