59 lines
1.8 KiB
Java
59 lines
1.8 KiB
Java
package org.betterx.bclib.items;
|
|
|
|
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.item.ItemStack;
|
|
import net.minecraft.world.item.ItemUtils;
|
|
import net.minecraft.world.item.Items;
|
|
import net.minecraft.world.item.UseAnim;
|
|
import net.minecraft.world.level.Level;
|
|
|
|
public class BaseDrinkItem extends ModelProviderItem {
|
|
public BaseDrinkItem(Properties settings) {
|
|
super(settings);
|
|
}
|
|
|
|
@Override
|
|
public int getUseDuration(ItemStack stack) {
|
|
return 32;
|
|
}
|
|
|
|
@Override
|
|
public UseAnim getUseAnimation(ItemStack stack) {
|
|
return UseAnim.DRINK;
|
|
}
|
|
|
|
@Override
|
|
public InteractionResultHolder<ItemStack> use(Level world, Player user, InteractionHand hand) {
|
|
return ItemUtils.startUsingInstantly(world, user, hand);
|
|
}
|
|
|
|
@Override
|
|
public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity user) {
|
|
if (this.isEdible()) {
|
|
int count = stack.getCount();
|
|
user.eat(level, stack);
|
|
stack.setCount(count);
|
|
}
|
|
|
|
if (user instanceof ServerPlayer serverPlayerEntity) {
|
|
CriteriaTriggers.CONSUME_ITEM.trigger(serverPlayerEntity, stack);
|
|
serverPlayerEntity.awardStat(Stats.ITEM_USED.get(this));
|
|
}
|
|
|
|
if (user instanceof Player && !((Player) user).getAbilities().instabuild) {
|
|
stack.shrink(1);
|
|
}
|
|
|
|
if (!level.isClientSide) {
|
|
user.removeAllEffects();
|
|
}
|
|
|
|
return stack.isEmpty() ? new ItemStack(Items.GLASS_BOTTLE) : stack;
|
|
}
|
|
}
|