Повреждение брони при получении определенного урона или кастомного урона.

Версия Minecraft
1.12.2
API
Forge
122
4
6
Не совсем правильно работает код, кто разбирается в этом вопросе дайте совет как исправить (по тому что сейчас один раз отнимается прочность, а дальше стопор)
Java:
@SubscribeEvent
    public void onHurt(LivingHurtEvent event) {
        DamageSource source = event.getSource();
        Entity entity = event.getEntity();
        if(entity instanceof EntityPlayer){
            EntityPlayer player = (EntityPlayer) entity;
                if(player.inventory.armorInventory.get(3).getItem() == ItemsInit.HELMET_1 &&
                        player.inventory.armorInventory.get(2).getItem() == ItemsInit.CHESTPLATE_1 &&
                        player.inventory.armorInventory.get(1).getItem() == ItemsInit.LEGGINGS_1 &&
                        player.inventory.armorInventory.get(0).getItem() == ItemsInit.BOOTS_1) {
                    if(source.isDamageAbsolute() ||
                            source.isDifficultyScaled() ||
                            source.isExplosion() ||
                            source.isFireDamage() ||
                            source.isMagicDamage() ||
                            //source.isProjectile() ||
                            source.isUnblockable()) {
                        event.setCanceled(true);
                    }
                    if(source.isProjectile()) {
                        player.inventory.armorInventory.get(3).setItemDamage(100);
                        player.inventory.armorInventory.get(2).setItemDamage(100);
                        player.inventory.armorInventory.get(1).setItemDamage(100);
                        player.inventory.armorInventory.get(0).setItemDamage(100);
                    }
                    
                }
        }
    }
 
627
72
178
Java:
player.inventory.armorInventory.get(3).setItemDamage(100);
player.inventory.armorInventory.get(2).setItemDamage(100);
player.inventory.armorInventory.get(1).setItemDamage(100);
player.inventory.armorInventory.get(0).setItemDamage(100);
ты каждый раз фиксировано задаешь урон равный 100, а не отнимаешь по 100 за получение урона.
 
122
4
6
ты каждый раз фиксировано задаешь урон равный 100, а не отнимаешь по 100 за получение урона.
на шел решение место .setItemDamage(100); поставил .damageItem(1000, player); , но вопрос еще остался, как тестировать кастомный урон
Java:
@Mod.EventBusSubscriber(modid = Main.MODID)
public class DamageInit extends DamageSource {

    public DamageInit(String damageType) {
        super(damageType);
    }
    public static DamageSource VOID = new DamageSource("void_damage").setDamageBypassesArmor().setDamageIsAbsolute();
   
   
    private boolean void_damage;
   
    public boolean isVoidDamage() {
        return this.void_damage;
    }
    public DamageSource setVoidDamage() {
        this.void_damage = true;
        return this;
    }
}
 
Сверху