Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
90f5c79
fix: use rem_euclid for yaw and head_yaw calculations in CSpawnEntity…
Joniii11 Aug 27, 2025
3351034
Merge branch 'master' of https://github.com/Pumpkin-MC/Pumpkin
Joniii11 Aug 27, 2025
535577a
feat: Add ArmorStand Entity, EulerAngle & EquipmentSlot's
Joniii11 Aug 27, 2025
3fda7ff
feat: Add checking for if space is occupied of the armor stand
Joniii11 Aug 27, 2025
ebd11a6
feat: clippy
Joniii11 Aug 27, 2025
0862b7b
feat: Enhance ArmorStandEntity with break and drop items functionality
Joniii11 Aug 28, 2025
aa40ef4
chore: cargo fmt
Joniii11 Aug 28, 2025
786e2b3
feat: Add WindCharge entity and item with projectile deflection mecha…
Joniii11 Aug 28, 2025
c9aea5d
chore: clippy & fmt
Joniii11 Aug 28, 2025
2e65ca8
fix: use constant for default deflect cooldown in WindChargeEntity
Joniii11 Aug 29, 2025
1d36d6e
Merge pull request #1 from Pumpkin-MC/master
Joniii11 Sep 4, 2025
051842a
feat: add invisibility functionality to Entity and ArmorStandEntity
Joniii11 Sep 7, 2025
abac1c6
refactor: remove EquipmentSlot and HasEquipment trait definitions sin…
Joniii11 Sep 7, 2025
7a4cb42
feat: implement NbtTag conversion for PackedRotation and update Armor…
Joniii11 Sep 7, 2025
d10c860
Merge branch 'master' of https://github.com/Joniii11/Pumpkin
Joniii11 Sep 7, 2025
033d5a7
refactor: fmt
Joniii11 Sep 7, 2025
bff7995
chore: clippy & fmt
Joniii11 Sep 7, 2025
d9ec6d4
Merge branch 'master' into master
Joniii11 Sep 11, 2025
7f9804d
Merge branch 'master' into master
Joniii11 Sep 14, 2025
9aed0a8
fix: update damage handling in ArmorStandEntity to use kill instead o…
Joniii11 Sep 14, 2025
2208d17
feat: implement ticking behavior for WindChargeEntity to update defle…
Joniii11 Sep 14, 2025
08fe499
fix: remove unnecessary trailing comma in imports
Joniii11 Sep 14, 2025
26e770c
remove logging
Joniii11 Sep 14, 2025
385e907
Merge branch 'master' of https://github.com/Joniii11/Pumpkin
Joniii11 Sep 14, 2025
5a36351
fmt
Joniii11 Sep 19, 2025
725924e
refactor: simplify EulerAngle initialization and consolidate PackedRo…
Joniii11 Sep 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pumpkin-protocol/src/java/client/play/spawn_entity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ impl CSpawnEntity {
r#type,
position,
pitch: (pitch * 256.0 / 360.0).floor() as u8,
yaw: (yaw * 256.0 / 360.0).floor() as u8,
head_yaw: (head_yaw * 256.0 / 360.0).floor() as u8,
yaw: (yaw.rem_euclid(360.0) * 256.0 / 360.0).floor() as u8,
head_yaw: (head_yaw.rem_euclid(360.0) * 256.0 / 360.0).floor() as u8,
data,
velocity: Vector3::new(
(velocity.x.clamp(-3.9, 3.9) * 8000.0) as i16,
Expand Down
8 changes: 8 additions & 0 deletions pumpkin-util/src/math/boundingbox.rs
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,14 @@ impl BoundingBox {
Some(collision_time)
}

pub fn get_average_side_length(&self) -> f64 {
let width = self.max.x - self.min.x;
let height = self.max.y - self.min.y;
let depth = self.max.z - self.min.z;

(width + height + depth) / 3.0
}

pub fn min_block_pos(&self) -> BlockPos {
BlockPos::floored_v(self.min)
}
Expand Down
69 changes: 69 additions & 0 deletions pumpkin-util/src/math/euler_angle.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
use pumpkin_nbt::tag::NbtTag;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
pub struct EulerAngle {
pub pitch: f32,
pub yaw: f32,
pub roll: f32,
}

impl EulerAngle {
pub fn new(pitch: f32, yaw: f32, roll: f32) -> Self {
let pitch = pitch % 360.0;
let yaw = yaw % 360.0;
let roll = roll % 360.0;

Self { pitch, yaw, roll }
}

pub const ZERO: EulerAngle = EulerAngle {
pitch: 0.0,
yaw: 0.0,
roll: 0.0,
};
}

impl Default for EulerAngle {
fn default() -> Self {
Self::ZERO
}
}

impl From<EulerAngle> for NbtTag {
fn from(val: EulerAngle) -> Self {
NbtTag::List(vec![
NbtTag::Float(val.pitch),
NbtTag::Float(val.yaw),
NbtTag::Float(val.roll),
])
}
}

impl From<NbtTag> for EulerAngle {
fn from(tag: NbtTag) -> Self {
if let NbtTag::List(list) = tag
&& list.len() == 3
{
let pitch = if let NbtTag::Float(f) = list[0] {
f
} else {
0.0
};
let yaw = if let NbtTag::Float(f) = list[1] {
f
} else {
0.0
};
let roll = if let NbtTag::Float(f) = list[2] {
f
} else {
0.0
};

return Self::new(pitch, yaw, roll);
}

Self::ZERO
}
}
1 change: 1 addition & 0 deletions pumpkin-util/src/math/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use num_traits::{Float, One, PrimInt, Zero};

pub mod boundingbox;
pub mod euler_angle;
pub mod experience;
pub mod float_provider;
pub mod int_provider;
Expand Down
Loading
Loading