package net.minecraft.world.item; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.stats.Stats; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; public class HoneyBottleItem extends Item { private static final int DRINK_DURATION = 40; public HoneyBottleItem(Item.Properties properties) { super(properties); } @Override public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity livingEntity) { super.finishUsingItem(stack, level, livingEntity); if (livingEntity instanceof ServerPlayer serverPlayer) { CriteriaTriggers.CONSUME_ITEM.trigger(serverPlayer, stack); serverPlayer.awardStat(Stats.ITEM_USED.get(this)); } if (!level.isClientSide) { livingEntity.removeEffect(MobEffects.POISON); } if (stack.isEmpty()) { return new ItemStack(Items.GLASS_BOTTLE); } else { if (livingEntity instanceof Player player && !player.hasInfiniteMaterials()) { ItemStack itemStack = new ItemStack(Items.GLASS_BOTTLE); if (!player.getInventory().add(itemStack)) { player.drop(itemStack, false); } } return stack; } } @Override public int getUseDuration(ItemStack stack, LivingEntity entity) { return 40; } @Override public UseAnim getUseAnimation(ItemStack stack) { return UseAnim.DRINK; } @Override public SoundEvent getDrinkingSound() { return SoundEvents.HONEY_DRINK; } @Override public SoundEvent getEatingSound() { return SoundEvents.HONEY_DRINK; } @Override public InteractionResultHolder use(Level level, Player player, InteractionHand usedHand) { return ItemUtils.startUsingInstantly(level, player, usedHand); } }