package net.minecraft.world.item; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.server.level.ServerPlayer; import net.minecraft.stats.Stats; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; public class MilkBucketItem extends Item { private static final int DRINK_DURATION = 32; public MilkBucketItem(Item.Properties properties) { super(properties); } @Override public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity livingEntity) { if (livingEntity instanceof ServerPlayer serverPlayer) { CriteriaTriggers.CONSUME_ITEM.trigger(serverPlayer, stack); serverPlayer.awardStat(Stats.ITEM_USED.get(this)); } if (!level.isClientSide) { livingEntity.removeAllEffects(); } if (livingEntity instanceof Player player) { return ItemUtils.createFilledResult(stack, player, new ItemStack(Items.BUCKET), false); } else { stack.consume(1, livingEntity); return stack; } } @Override public int getUseDuration(ItemStack stack, LivingEntity entity) { return 32; } @Override public UseAnim getUseAnimation(ItemStack stack) { return UseAnim.DRINK; } @Override public InteractionResultHolder use(Level level, Player player, InteractionHand usedHand) { return ItemUtils.startUsingInstantly(level, player, usedHand); } }