This is a good attempt. I have a couple of ideas for improvement
int recDamage = (int) (damage * 0.001);
if (recDamage <= 0)
return;
if (recDamage > t2.getConstitution())
{
recDamage = t2.getConstitution();
attacker.dealDamage(new Hit(recDamage, Hitmask.RED, CombatIcon.DEFLECT));
ItemDegrading.handleItemDegrading(t2, DegradingItem.DHAROKS_AXE_25);
}
This is all reused code. You might consider turning this into a method and calling it for each case statement so that if you ever make changes to this code, you only need to do it in one place. For this to be possible, you'd need to dynamically map the broken barrows pieces together. You could do this in an enum which can dynamically handle changing the item ID in another method so that you don't have to explicitly hardcode it in these case statements.