well..... in ur getCoolDown u are calling isOffCooldown, where u are calling getCoolDown, where u are calling isOffCooldown where.... I think u know where this is going.
If u want items to have cooldowns use onUpdate method, save the cooldown inside the NBT and decrement that each tick. if u want to know if its off cooldown read the value from the nbt. no need for world objects.