minecraft-src/net/minecraft/world/item/SolidBucketItem.java
2025-07-04 03:45:38 +03:00

55 lines
1.8 KiB
Java

package net.minecraft.world.item;
import net.minecraft.core.BlockPos;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.gameevent.GameEvent;
import net.minecraft.world.phys.BlockHitResult;
import org.jetbrains.annotations.Nullable;
public class SolidBucketItem extends BlockItem implements DispensibleContainerItem {
private final SoundEvent placeSound;
public SolidBucketItem(Block block, SoundEvent placeSound, Item.Properties properties) {
super(block, properties);
this.placeSound = placeSound;
}
@Override
public InteractionResult useOn(UseOnContext context) {
InteractionResult interactionResult = super.useOn(context);
Player player = context.getPlayer();
if (interactionResult.consumesAction() && player != null) {
player.setItemInHand(context.getHand(), BucketItem.getEmptySuccessItem(context.getItemInHand(), player));
}
return interactionResult;
}
@Override
protected SoundEvent getPlaceSound(BlockState state) {
return this.placeSound;
}
@Override
public boolean emptyContents(@Nullable LivingEntity entity, Level level, BlockPos pos, @Nullable BlockHitResult hitResult) {
if (level.isInWorldBounds(pos) && level.isEmptyBlock(pos)) {
if (!level.isClientSide) {
level.setBlock(pos, this.getBlock().defaultBlockState(), 3);
}
level.gameEvent(entity, GameEvent.FLUID_PLACE, pos);
level.playSound(entity, pos, this.placeSound, SoundSource.BLOCKS, 1.0F, 1.0F);
return true;
} else {
return false;
}
}
}