# Configuration file

general {

    ##########################################################################################################
    # config
    #--------------------------------------------------------------------------------------------------------#
    # Global Values
    ##########################################################################################################

    config {

        ##########################################################################################################
        # damageframes
        #--------------------------------------------------------------------------------------------------------#
        # Indirect Sources independent of the attacker's attack speed
        ##########################################################################################################

        damageframes {
            # Default value replacing vanilla's iFrame after armor damage.
            # # Used mainly to prevent armor from wearing down too fast
            # # If the next attack deals more than the previous the difference is applied
            # Min: 0
            # Max: 2147483647
            I:armorResistantTime=5

            # Damage sources that need a specific iFrame.
            # 
            # Format: [*Damage Source name (Regex)]:[*Should damage stack between iFrames]:[*iFrame time]
            # * Damage Source name -> Used to identify the type of damage you're receiving.
            # * Should damage stack between iFrames -> 'true' or 'false', when set to 'true' damage will always stack regardless of the iFrame, but it will only apply the damage every iFrame.
            # * iFrame time -> How often you can receive damage from this damage source.
            # 
            # 
            # Examples:
            # - inFire:false:10 -> Source 'inFire' does not stack and only allows hits every 10 game ticks.
            # - inFire|lava:false:10 -> Sources 'inFire' or 'lava' do not stack and only allows hits every 10 game ticks (lava and fire will share the same iFrame).
            # - arrow:true:10 - > Source 'arrow' does stack and hits the accumulated damage every 10 game ticks.
            # 
            # # If the next attack deals more than the previous the difference is applied
            # 
            S:damageSource <
                ^inFire$:10
                ^onFire:10
                ^lightningBolt$:10
                ^lava$:10
                ^hotFloor$:10
                ^inWall$:10
                ^cramming$:10
                ^cactus$:10
                ^fall$:0
                ^flyIntoWall$:0
                ^outOfWorld$:10
                ^generic$:5
                ^magic$:10
                ^wither$:10
                ^anvil$:10
                ^fallingBlock$:10
                ^dragonBreath$:10
                ^indirectMagic$:10
                ^thorns$:5
                ^explosion\.player$:5
             >

            # Default value replacing vanilla's iFrame after being hurt
            # Min: 0
            # Max: 2147483647
            I:hurtResistantTime=0

            # Min: 0.0
            # Max: 1.7976931348623157E308
            D:nextAttackDamageDifference=0.5

            # Min: 0.0
            # Max: 1.7976931348623157E308
            B:nextAttackDamageDifferenceApply=true

            # Default value replacing vanilla's iFrame after shield damage.
            # # Used mainly to prevent shield from wearing down too fast
            # # If the next attack deals more than the previous the difference is applied
            # Min: 0
            # Max: 2147483647
            I:shieldResistantTime=5
        }

        ##########################################################################################################
        # attackframes
        #--------------------------------------------------------------------------------------------------------#
        # Direct Sources dependent on the attacker's attack speed and the vanilla iFrame time of the entity
        ##########################################################################################################

        attackframes {
            # Damage Sources from direct hits.
            # 
            # Example: Players and Mobs melee Damage Source.
            # 
            S:attackSources <
                player
                mob
             >

            # Mobs that need a specific attack threshold.
            # 
            # Format: [*mod:entity]:[*Attack threshold]
            # * mod:entity -> Id of the entity in-game.
            # * Attack threshold -> Attack reload speed before the attack is canceled.
            # 
            # 
            # Example:
            # - minecraft:slime:1 -> 'Slime' from mod 'Minecraft' will only be able to attack when its attack reload time is 100%.
            # 
            S:attackThreshold <
                minecraft:slime:1
                tconstruct:blueslime:1
                thaumcraft:thaumslime:1
             >

            # Default attack speed before the attack is canceled (Mobs only)
            # Min: 0.0
            # Max: 1.0
            D:attackThresholdDefault=1.0

            # Attack reload speed before the attack is canceled (Players only)
            # Min: 0.0
            # Max: 1.0
            D:attackThresholdPlayer=0.5

            # Items that need a specific attack reload speed. [Overwrites mob specific attack threshold]
            # 
            # Format: [*mod:item)]:[*attack reload speed]
            # * Item Source name -> Used to identify the item used.
            # * attack reload speed -> Attack reload speed before the attack is canceled.
            # 
            # 
            # Examples:  (when attack threshold is 1)
            # - minecraft:iron_axe:2 -> Iron Axe can never attack.
            # - minecraft:iron_axe:1 -> Iron Axe can only attack when fully up.
            # - minecraft:iron_axe:0.5 -> Iron Axe can only attack when more than halfway up.
            # - minecraft:iron_axe:0 -> Iron Axe can always attack.
            # 
            S:itemSource <
             >

            # Compatability mode.
            # 
            # Mixins will not apply when this is true.
            # 
            B:turnOffMixins=false
        }

        ##########################################################################################################
        # knockbackframes
        #--------------------------------------------------------------------------------------------------------#
        # Knockback Sources filter
        ##########################################################################################################

        knockbackframes {
            # Set this to false to activate 1.16+ knockback mechanics.
            B:knockbackAsAChance=false

            # Damage Sources will not apply knockback when on this list.
            S:knockbackExemptSource <
                indirectSkill
             >
        }

    }

    ##########################################################################################################
    # render_config
    #--------------------------------------------------------------------------------------------------------#
    # Client Values
    ##########################################################################################################

    render_config {

        rendering {
            I:damageColor=16711680
            B:doHurtCameraEffect=true
            I:healColor=65280
            B:showDamageParticles=true
        }

    }

}


