aboutsummaryrefslogtreecommitdiff
path: root/azalea-entity
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2025-02-22 21:09:35 +0000
committermat <git@matdoes.dev>2025-02-22 21:09:35 +0000
commit74b52a1fc12334c54eb671c1340e5e835e7bd33b (patch)
treebab7a20f8c56023ec72a7b557666ee14fe30df21 /azalea-entity
parent27945c8870c832970dfe15b9bf9f567c0ad96ea4 (diff)
downloadazalea-drasl-74b52a1fc12334c54eb671c1340e5e835e7bd33b.tar.xz
fix is_trapdoor_useable_as_ladder and add test
Diffstat (limited to 'azalea-entity')
-rw-r--r--azalea-entity/src/plugin/mod.rs62
1 files changed, 60 insertions, 2 deletions
diff --git a/azalea-entity/src/plugin/mod.rs b/azalea-entity/src/plugin/mod.rs
index e8889637..560d0ec6 100644
--- a/azalea-entity/src/plugin/mod.rs
+++ b/azalea-entity/src/plugin/mod.rs
@@ -168,10 +168,10 @@ fn is_trapdoor_useable_as_ladder(
}
// and the ladder must be facing the same direction as the trapdoor
let ladder_facing = block_below
- .property::<azalea_block::properties::Facing>()
+ .property::<azalea_block::properties::FacingCardinal>()
.expect("ladder block must have facing property");
let trapdoor_facing = block_state
- .property::<azalea_block::properties::Facing>()
+ .property::<azalea_block::properties::FacingCardinal>()
.expect("trapdoor block must have facing property");
if ladder_facing != trapdoor_facing {
return false;
@@ -230,3 +230,61 @@ pub fn update_in_loaded_chunk(
}
}
}
+
+#[cfg(test)]
+mod tests {
+ use azalea_block::{
+ blocks::{Ladder, OakTrapdoor},
+ properties::{FacingCardinal, TopBottom},
+ };
+ use azalea_core::position::{BlockPos, ChunkPos};
+ use azalea_world::{Chunk, ChunkStorage, Instance, PartialInstance};
+
+ use super::is_trapdoor_useable_as_ladder;
+
+ #[test]
+ fn test_is_trapdoor_useable_as_ladder() {
+ let mut partial_instance = PartialInstance::default();
+ let mut chunks = ChunkStorage::default();
+ partial_instance.chunks.set(
+ &ChunkPos { x: 0, z: 0 },
+ Some(Chunk::default()),
+ &mut chunks,
+ );
+ partial_instance.chunks.set_block_state(
+ &BlockPos::new(0, 0, 0),
+ azalea_registry::Block::Stone.into(),
+ &chunks,
+ );
+
+ let ladder = Ladder {
+ facing: FacingCardinal::East,
+ waterlogged: false,
+ };
+ partial_instance
+ .chunks
+ .set_block_state(&BlockPos::new(0, 0, 0), ladder.into(), &chunks);
+
+ let trapdoor = OakTrapdoor {
+ facing: FacingCardinal::East,
+ half: TopBottom::Bottom,
+ open: true,
+ powered: false,
+ waterlogged: false,
+ };
+ partial_instance
+ .chunks
+ .set_block_state(&BlockPos::new(0, 1, 0), trapdoor.into(), &chunks);
+
+ let instance = Instance::from(chunks);
+ let trapdoor_matches_ladder = is_trapdoor_useable_as_ladder(
+ instance
+ .get_block_state(&BlockPos::new(0, 1, 0))
+ .unwrap_or_default(),
+ BlockPos::new(0, 1, 0),
+ &instance,
+ );
+
+ assert!(trapdoor_matches_ladder);
+ }
+}