Skip to main content

steel_core/fluid/
mod.rs

1//! Fluid behavior system.
2//!
3//! This module handles fluid mechanics: spreading, flowing, waterlogging.
4//! Based on vanilla Minecraft's `FlowingFluid` system.
5//!
6//! ### TODOs
7//! - TODO: Remaining entity fluid side effects: drowning, splash particles/sounds.
8//! - TODO: Block item drops when water destroys blocks (cactus infrastructure merged, needs implementation).
9//! - TODO: Lava random tick fire spread.
10pub mod collision;
11pub mod conversion;
12pub mod flowing_fluid;
13pub mod fluid_behavior;
14pub mod fluids;
15mod spread_context;
16pub mod state;
17
18// Re-export fluid types from steel_registry
19pub use steel_registry::fluid::{
20    Fluid, FluidRef, FluidState, FluidStateExt, is_lava_fluid, is_water_fluid,
21};
22
23// Re-export specific structs/functions
24pub use flowing_fluid::FlowingFluid;
25pub use fluid_behavior::FluidBehavior;
26pub use fluids::{EmptyFluid, LavaFluid, WaterFluid};
27
28// Re-export utility functions from their respective modules
29pub use collision::{
30    can_hold_any_fluid_state, can_hold_fluid, can_hold_specific_fluid, can_pass_through_wall,
31};
32pub use conversion::{get_new_liquid, get_spread, is_hole};
33pub use state::{
34    fluid_state_to_block, fluid_state_to_block_with_existing, get_flow, get_fluid_state,
35    get_fluid_state_from_block, get_height, get_own_height, lava_id, water_id,
36};