pub struct WaterFluid;Expand description
Water fluid implementation.
Implements FluidBehavior with water-specific parameters and
behaviors (lava→water chemistry and game-rule source conversion).
Trait Implementations§
Source§impl FlowingFluid for WaterFluid
impl FlowingFluid for WaterFluid
Source§fn base_tick(
&self,
world: &Arc<World>,
pos: BlockPos,
block_state: BlockStateId,
current_fluid: FluidState,
)
fn base_tick( &self, world: &Arc<World>, pos: BlockPos, block_state: BlockStateId, current_fluid: FluidState, )
The base tick logic
Source§fn base_spread(
&self,
world: &Arc<World>,
pos: BlockPos,
block_state: BlockStateId,
fluid_state: FluidState,
)
fn base_spread( &self, world: &Arc<World>, pos: BlockPos, block_state: BlockStateId, fluid_state: FluidState, )
The base spread logic. Read more
Source§fn base_spread_to(
&self,
world: &Arc<World>,
pos: BlockPos,
fluid_state: FluidState,
)
fn base_spread_to( &self, world: &Arc<World>, pos: BlockPos, fluid_state: FluidState, )
The base logic for placing a fluid into a specific adjacent block. Read more
Source§fn spread_to(
&self,
world: &Arc<World>,
pos: BlockPos,
fluid_state: FluidState,
_direction: Direction,
)
fn spread_to( &self, world: &Arc<World>, pos: BlockPos, fluid_state: FluidState, _direction: Direction, )
Performs the actual placement of fluid and schedules the tick.
Source§fn source_neighbor_count(&self, world: &Arc<World>, pos: BlockPos) -> u8
fn source_neighbor_count(&self, world: &Arc<World>, pos: BlockPos) -> u8
Returns the number of fluid sources in the 4-directional neighborhood of the given position.
Source§fn spread_to_sides(
&self,
world: &Arc<World>,
pos: BlockPos,
block_state: BlockStateId,
fluid_state: FluidState,
)
fn spread_to_sides( &self, world: &Arc<World>, pos: BlockPos, block_state: BlockStateId, fluid_state: FluidState, )
Spreads the fluid to horizontal neighbors. Read more
Source§impl FluidBehavior for WaterFluid
impl FluidBehavior for WaterFluid
Source§fn can_be_replaced_with(
&self,
_fluid_state: FluidState,
_world: &Arc<World>,
_pos: BlockPos,
other_fluid: FluidRef,
direction: Direction,
) -> bool
fn can_be_replaced_with( &self, _fluid_state: FluidState, _world: &Arc<World>, _pos: BlockPos, other_fluid: FluidRef, direction: Direction, ) -> bool
Water can only be replaced from below and only by non-water fluids.
Source§fn before_destroying_block(
&self,
world: &Arc<World>,
pos: BlockPos,
state: BlockStateId,
)
fn before_destroying_block( &self, world: &Arc<World>, pos: BlockPos, state: BlockStateId, )
Drops block resources when water replaces a non-air block.
Source§fn entity_inside(
&self,
_world: &Arc<World>,
_pos: BlockPos,
_entity: &dyn Entity,
effect_collector: &mut InsideBlockEffectCollector,
)
fn entity_inside( &self, _world: &Arc<World>, _pos: BlockPos, _entity: &dyn Entity, effect_collector: &mut InsideBlockEffectCollector, )
Vanilla parity: WaterFluid.entityInside() extinguishes fire.
Source§fn fluid_type(&self) -> FluidRef
fn fluid_type(&self) -> FluidRef
Gets the fluid type for this behavior.
Source§fn is_same(&self, fluid: FluidRef) -> bool
fn is_same(&self, fluid: FluidRef) -> bool
Checks if this fluid is the same type as another fluid ref. Read more
Source§fn tick_delay(&self, _world: &Arc<World>) -> i32
fn tick_delay(&self, _world: &Arc<World>) -> i32
Gets the number of ticks between fluid updates.
Source§fn drop_off(&self, _world: &Arc<World>) -> u8
fn drop_off(&self, _world: &Arc<World>) -> u8
Gets the amount of fluid level drop per horizontal block.
Takes
world because some fluids (lava) differ by dimension.Source§fn slope_find_distance(&self, _world: &Arc<World>) -> u8
fn slope_find_distance(&self, _world: &Arc<World>) -> u8
Gets the slope-search distance for horizontal spread.
Takes
world because some fluids (lava) differ by dimension.Source§fn explosion_resistance(&self) -> f32
fn explosion_resistance(&self) -> f32
Gets the explosion resistance of this fluid.
Source§fn can_convert_to_source(&self, world: &Arc<World>) -> bool
fn can_convert_to_source(&self, world: &Arc<World>) -> bool
Checks if this fluid can convert to a source block at the given position.
Source§fn get_flow(
&self,
world: &Arc<World>,
pos: BlockPos,
fluid_state: FluidState,
) -> DVec3
fn get_flow( &self, world: &Arc<World>, pos: BlockPos, fluid_state: FluidState, ) -> DVec3
Returns this fluid state’s vanilla flow vector at a position.
Source§fn tick(
&self,
world: &Arc<World>,
pos: BlockPos,
block_state: BlockStateId,
fluid_state: FluidState,
)
fn tick( &self, world: &Arc<World>, pos: BlockPos, block_state: BlockStateId, fluid_state: FluidState, )
Called every tick for fluid blocks. Read more
Source§fn spread(
&self,
world: &Arc<World>,
pos: BlockPos,
block_state: BlockStateId,
fluid_state: FluidState,
)
fn spread( &self, world: &Arc<World>, pos: BlockPos, block_state: BlockStateId, fluid_state: FluidState, )
Called to calculate fluid spreading each tick.
Source§fn random_tick(&self, world: &Arc<World>, pos: BlockPos)
fn random_tick(&self, world: &Arc<World>, pos: BlockPos)
Called on random tick for this fluid’s block.
Used for lava fire spread.
Source§fn get_spread_delay(
&self,
world: &Arc<World>,
_pos: BlockPos,
old_state: FluidState,
new_state: FluidState,
) -> i32
fn get_spread_delay( &self, world: &Arc<World>, _pos: BlockPos, old_state: FluidState, new_state: FluidState, ) -> i32
Returns the tick delay to use when scheduling a newly-spread block,
taking into account the old and new fluid states.
Auto Trait Implementations§
impl Freeze for WaterFluid
impl RefUnwindSafe for WaterFluid
impl Send for WaterFluid
impl Sync for WaterFluid
impl Unpin for WaterFluid
impl UnsafeUnpin for WaterFluid
impl UnwindSafe for WaterFluid
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreWraps this value in an
Arc<SyncMutex<>>