How to create cooldown use item
Code:
public class Ice_Sword extends SwordItem {
public Ice_Sword(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builderIn) {
super(tier, attackDamageIn, attackSpeedIn, builderIn);
}
@Override
public ActionResultType onItemUseFirst(ItemStack stack, ItemUseContext context) {
World world = context.getWorld();
if (!world.isRemote) {
PlayerEntity playerEntity = Objects.requireNonNull(context.getPlayer());
BlockState clickedBlock = world.getBlockState(context.getPos());
rightClickOnCertainBlockState(clickedBlock, context, playerEntity);
stack.damageItem(1, playerEntity, player -> player.sendBreakAnimation(context.getHand()));
}
return super.onItemUseFirst(stack, context);
}
private void rightClickOnCertainBlockState(BlockState clickedBlock, ItemUseContext context,
PlayerEntity playerEntity) {
boolean playerIsNotOnFire = !playerEntity.isBurning();
if (random.nextFloat() > 1f) {
} else if (playerIsNotOnFire && blockIsValidForResistance(clickedBlock)) {
gainFireResistanceAndDestroyBlock(playerEntity, context.getWorld(), context.getPos());
}
}
private boolean blockIsValidForResistance(BlockState clickedBlock) {
return clickedBlock.getBlock() == Blocks.SAND;
}
private void gainFireResistanceAndDestroyBlock(PlayerEntity playerEntity, World world, BlockPos pos) {
gainFireResistance(playerEntity);
world.destroyBlock(pos, false);
world.setBlockState(pos, Blocks.GLASS.getDefaultState());
}
public static void gainFireResistance(PlayerEntity playerEntity) {
playerEntity.addPotionEffect(new EffectInstance(Effects.FIRE_RESISTANCE, 1, 100));
}
}