BCLib/src/main/java/org/betterx/bclib/items/BaseDrinkItem.java
2022-05-18 23:56:23 +02:00

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;
}
}