What on earth is this for?
if(stack == new ItemStack(this))
And why do you keep trying to compare damage > 1 ? What do you think that's achieving?
All you need to do is clamp the item's damage value between 0 (undamaged) and item.maxDamage() (fully damaged, just before breaking) inclusive.
By the way, you should be testing your code (and ideally running it through your IDE's debugger when it fails) rather than just inventing snippets to post here.