Skip to content

Commit

Permalink
fix: 1.21 conflicts + make foil + use duration fix
Browse files Browse the repository at this point in the history
  • Loading branch information
ferriarnus committed Jun 20, 2024
1 parent be2e594 commit d536ef4
Showing 1 changed file with 25 additions and 11 deletions.
36 changes: 25 additions & 11 deletions src/main/java/com/enderio/base/common/item/tool/VoidSeedItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.UseAnim;
import net.minecraft.world.level.Level;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
Expand All @@ -24,7 +25,6 @@
import net.neoforged.neoforge.fluids.capability.IFluidHandlerItem;

import java.util.List;
import java.util.function.Predicate;

@EventBusSubscriber(bus = EventBusSubscriber.Bus.GAME)
public class VoidSeedItem extends Item {
Expand All @@ -40,12 +40,11 @@ public VoidSeedItem(Properties pProperties) {
public InteractionResultHolder<ItemStack> use(Level pLevel, Player pPlayer, InteractionHand pUsedHand) {
ItemStack stack = pPlayer.getItemInHand(pUsedHand);
IFluidHandlerItem capability = stack.getCapability(Capabilities.FluidHandler.ITEM);
if (capability != null && capability.getFluidInTank(0).getAmount() > ExperienceUtil.EXP_TO_FLUID) {
FluidStack result = capability.drain((capability.getFluidInTank(0).getAmount() / ExperienceUtil.EXP_TO_FLUID) * ExperienceUtil.EXP_TO_FLUID, IFluidHandler.FluidAction.EXECUTE);
pPlayer.giveExperiencePoints(result.getAmount() / ExperienceUtil.EXP_TO_FLUID);
return InteractionResultHolder.consume(stack);
if (capability != null && capability.getFluidInTank(0).getAmount() < ExperienceUtil.EXP_TO_FLUID) {
return InteractionResultHolder.fail(stack);
}
return InteractionResultHolder.fail(stack);
pPlayer.startUsingItem(pUsedHand);
return InteractionResultHolder.consume(stack);
}

@Override
Expand All @@ -58,6 +57,11 @@ public ItemStack finishUsingItem(ItemStack pStack, Level pLevel, LivingEntity pL
return pStack;
}

@Override
public UseAnim getUseAnimation(ItemStack pStack) {
return UseAnim.DRINK;
}

@Override
public boolean isBarVisible(ItemStack stack) {
return stack.getCapability(Capabilities.FluidHandler.ITEM) != null;
Expand All @@ -78,6 +82,15 @@ public int getBarWidth(ItemStack stack) {
return 0;
}

@Override
public boolean isFoil(ItemStack pStack) {
var fluidHandler = pStack.getCapability(Capabilities.FluidHandler.ITEM);
if (fluidHandler != null) {
return fluidHandler.getFluidInTank(0).getAmount() == fluidHandler.getTankCapacity(0);
}
return super.isFoil(pStack);
}

@Override
public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> components, TooltipFlag flag) {
super.appendHoverText(stack, context, components, flag);
Expand All @@ -90,8 +103,8 @@ public void appendHoverText(ItemStack stack, TooltipContext context, List<Compon
}

@Override
public int getUseDuration(ItemStack pStack) {
return (int) 1.6F * 20; //default food time
public int getUseDuration(ItemStack pStack, LivingEntity p_344979_) {
return (int) (1.6F * 20.0F); //default food time
}

@SubscribeEvent
Expand All @@ -101,9 +114,10 @@ static void collectEXP(PlayerXpEvent.PickupXp event) {
if (!(stack.getItem() instanceof VoidSeedItem)) {
stack = player.getItemInHand(InteractionHand.MAIN_HAND);
}
IFluidHandler cap = stack.getCapability(Capabilities.FluidHandler.ITEM);
if (stack.getItem() instanceof VoidSeedItem && cap != null && event.getOrb().getValue() > 0) {
if (cap.getFluidInTank(0).getAmount() < cap.getTankCapacity(0)) {

if (stack.getItem() instanceof VoidSeedItem) {
IFluidHandler cap = stack.getCapability(Capabilities.FluidHandler.ITEM);
if (cap != null && event.getOrb().getValue() > 0 && cap.getFluidInTank(0).getAmount() < cap.getTankCapacity(0)) {
int exp = event.getOrb().getValue() * ExperienceUtil.EXP_TO_FLUID;
int amount = cap.fill(new FluidStack(EIOFluids.XP_JUICE.getSource(), exp), IFluidHandler.FluidAction.EXECUTE);
event.getOrb().value = exp - amount;
Expand Down

0 comments on commit d536ef4

Please sign in to comment.