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: Lava random tick fire spread.
8pub mod collision;
9pub mod conversion;
10pub mod flowing_fluid;
11pub mod fluid_behavior;
12pub mod fluids;
13mod spread_context;
14pub mod state;
15
16// Re-export fluid types from steel_registry
17pub use steel_registry::fluid::{
18    Fluid, FluidRef, FluidState, FluidStateExt, is_lava_fluid, is_water_fluid,
19};
20
21// Re-export specific structs/functions
22pub use flowing_fluid::FlowingFluid;
23pub use fluid_behavior::FluidBehavior;
24pub use fluids::{EmptyFluid, LavaFluid, WaterFluid};
25
26// Re-export utility functions from their respective modules
27pub use collision::{
28    can_hold_any_fluid_state, can_hold_fluid, can_hold_specific_fluid, can_pass_through_wall,
29};
30pub use conversion::{get_new_liquid, get_spread, is_hole};
31pub use state::{
32    fluid_state_to_block, fluid_state_to_block_with_existing, get_flow, get_fluid_state,
33    get_fluid_state_from_block, get_height, get_own_height, lava_id, liquid_block_state, water_id,
34};