Code/net/minecraft/world/level/block/SimpleWaterloggedBlock.java

56 lines
2.2 KiB
Java
Raw Permalink Normal View History

2025-07-01 06:20:03 +00:00
package net.minecraft.world.level.block;
import java.util.Optional;
import javax.annotation.Nullable;
import net.minecraft.core.BlockPos;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.material.Fluid;
import net.minecraft.world.level.material.FluidState;
import net.minecraft.world.level.material.Fluids;
public interface SimpleWaterloggedBlock extends BucketPickup, LiquidBlockContainer {
@Override
default boolean canPlaceLiquid(@Nullable LivingEntity p_397066_, BlockGetter p_56301_, BlockPos p_56302_, BlockState p_56303_, Fluid p_56304_) {
return p_56304_ == Fluids.WATER;
}
@Override
default boolean placeLiquid(LevelAccessor p_56306_, BlockPos p_56307_, BlockState p_56308_, FluidState p_56309_) {
if (!p_56308_.getValue(BlockStateProperties.WATERLOGGED) && p_56309_.getType() == Fluids.WATER) {
if (!p_56306_.isClientSide()) {
p_56306_.setBlock(p_56307_, p_56308_.setValue(BlockStateProperties.WATERLOGGED, true), 3);
p_56306_.scheduleTick(p_56307_, p_56309_.getType(), p_56309_.getType().getTickDelay(p_56306_));
}
return true;
} else {
return false;
}
}
@Override
default ItemStack pickupBlock(@Nullable LivingEntity p_396898_, LevelAccessor p_154560_, BlockPos p_154561_, BlockState p_154562_) {
if (p_154562_.getValue(BlockStateProperties.WATERLOGGED)) {
p_154560_.setBlock(p_154561_, p_154562_.setValue(BlockStateProperties.WATERLOGGED, false), 3);
if (!p_154562_.canSurvive(p_154560_, p_154561_)) {
p_154560_.destroyBlock(p_154561_, true);
}
return new ItemStack(Items.WATER_BUCKET);
} else {
return ItemStack.EMPTY;
}
}
@Override
default Optional<SoundEvent> getPickupSound() {
return Fluids.WATER.getPickupSound();
}
}