55 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			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;
 | |
| 		}
 | |
| 	}
 | |
| }
 |