Skip to content

Conditional Holdable Innate Skills

Sleys edited this page Sep 14, 2026 · 2 revisions

Conditional Holdable Innate Skills are designed for chargeable combat abilities whose released animation depends on the player's current physical condition.

Unlike Simple Innate Skills, which execute a single animation immediately, or Holdable Innate Skills, which use a predefined release animation, Conditional Holdable Innate Skills can select a different animation and set of properties depending on the condition that is satisfied when the skill is released.

A skill can therefore provide different attacks for states such as:

  • Normal
  • Kneeling
  • Sprinting
  • In Air
  • Using an Item

The skill uses a dedicated charging animation while the player holds the skill, then selects the appropriate conditional animation when the skill is released.


📁 File Locations & Loading Methods

Depending on whether you want users to be able to modify the skills locally or bundle them inside your mod, choose one of the following paths:

⚙️ Option A: Local Config Folder

Use this path if you want the setup to be easily accessible and editable by servers or pack developers.

  • Path: .minecraft/config/epicfight_edp/innate_skill_builder/holdable_conditional_innate_skill/*.json
  • ⚠️ Rule: You MUST explicitly declare the modid field inside the JSON when using this folder.

📦 Option B: In-Jar (Bundled Data-Driven)

Use this path to ship skills natively pre-configured inside your mod jar or data-driven setup.

  • Path: data_driven/your_modid/innate_skill_builder/holdable_conditional_innate_skill/*.json
  • 💡 Rule: The modid field can be safely omitted inside the JSON because the directory's namespace acts as the fallback namespace automatically.

📄 JSON Structure & Schema

{
  "modid": "epicfight",
  "name": "conditional_holdable",
  "chargeAnimation": "epicfight:biped/skill/steel_whirlwind_charging",

  "maxAllowedCharging": 45,
  "maxChargingTicks": 30,
  "minChargingTicks": 15,
  "reduceSpeed": true,
  "playbackForCharging": true,

  "holdable_conditions": {
    "normal": {
      "animation": "epicfight:biped/skill/steel_whirlwind",
      "playbackForRelease": false,
      "properties": [
        {
          "max_strikes": 1.0,
          "damage_multiplier": 1.2,
          "impact": 1.0,
          "stun_type": "SHORT"
        },
        {
          "max_strikes": 2.0,
          "damage_multiplier": 2.4,
          "impact": 1.5,
          "stun_type": "SHORT"
        },
        {
          "max_strikes": 3.0,
          "damage_multiplier": 4.8,
          "armor_negation": 10.0,
          "impact": 3.0,
          "stun_type": "KNOCKBACK",
          "extra_damage": true
        }
      ]
    },

    "kneeling": {
      "animation": "epicfight:biped/skill/wrathful_lighting",
      "playbackForRelease": false,
      "properties": [
        {
          "max_strikes": 1.0,
          "damage_multiplier": 8.0,
          "armor_negation": 20.0,
          "impact": 1.6,
          "stun_type": "long"
        }
      ]
    }
  }
}

📋 Parameters

Field Type Description
modid String The target mod namespace used to register the skill.
name String Unique internal identifier for the custom innate skill.
chargeAnimation Resource Location Animation played while the skill is being charged.
disableTooltipProperties Boolean Prevents animation properties from being displayed in the tooltip.
maxAllowedCharging Integer Maximum amount of charging allowed by the skill.
maxChargingTicks Integer Maximum charging time in ticks.
minChargingTicks Integer Minimum charging time required before the skill can be released.
reduceSpeed Boolean Determines whether the player's movement speed is reduced while charging.
playbackForCharging Boolean Modifies the animation playback speed based on the load; initially it will be normal and then it will slow down while loading.
playbackForRelease Boolean (optional, default false) The speed of the animation depends on the amount of charge it carries when released.
tooltip Array Optional list of custom tooltip components.
holdable_conditions Object Conditions and animations used when the skill is released.

baseValue is omitted, the component uses the attack damage of the provided item stack as its starting value. This allows tooltip values to scale dynamically with weapon attributes.

📋 Disable Tooltip Properties

The disableTooltipProperties field prevents the automatic animation phase properties from being displayed in the skill tooltip. disableTooltipProperties": true By default: "disableTooltipProperties": false When disabled, custom tooltip components can still be used. This is useful when the skill requires a fully customized tooltip rather than automatically displaying its animation properties.

💡 Example

Multiple Conditional Attacks A single holdable skill can provide several different attacks.

{
  "modid": "epicfight",
  "name": "conditional_holdable",
  "chargeAnimation": "epicfight:biped/skill/steel_whirlwind_charging",

  "maxAllowedCharging": 45,
  "maxChargingTicks": 30,
  "minChargingTicks": 15,
  "reduceSpeed": false,
  "playbackForCharging": true,

  "holdable_conditions": {
    "in_air": {
      "animation": "example:air_attack",
      "playbackForRelease": false,
      "properties": [
        {
          "max_strikes": 1.0,
          "damage_multiplier": 3.0,
          "impact": 1.5,
          "stun_type": "long"
        }
      ]
    },

    "sprinting": {
      "animation": "example:dash_attack",
      "playbackForRelease": false,
      "properties": [
        {
          "max_strikes": 2.0,
          "damage_multiplier": 4.0,
          "impact": 2.0,
          "stun_type": "knockback"
        }
      ]
    },

    "kneeling": {
      "animation": "example:ground_attack",
      "playbackForRelease": false,
      "properties": [
        {
          "max_strikes": 1.0,
          "damage_multiplier": 5.0,
          "impact": 2.5,
          "stun_type": "long"
        }
      ]
    },

    "normal": {
      "animation": "example:normal_attack",
      "playbackForRelease": false,
      "properties": [
        {
          "max_strikes": 1.0,
          "damage_multiplier": 2.0,
          "impact": 1.0,
          "stun_type": "short"
        }
      ]
    }
  }
}

The resulting behavior can be represented as:

                      Release
                          │
                          ▼
                  ┌───────────────┐
                  │ Player State  │
                  └───────┬───────┘
                          │
          ┌───────────────┼───────────────┐
          │               │               │
          ▼               ▼               ▼
       In Air         Sprinting        Kneeling
          │               │               │
          ▼               ▼               ▼
     Air Attack       Dash Attack     Ground Attack
          │               │               │
          └───────────────┼───────────────┘
                          │
                          ▼
                     No special
                      condition
                          │
                          ▼
                    Normal Attack

EF: Extended Datapacks

📦 Data

🧰 Core

👁️ Visuals

⚔️ Combat

🗝️ Skill Builder

🛠️ Innate Builder

🗡️ Animation Operations

⚙️ Third-Party

Clone this wiki locally