Skip to content

Animation Configuration

Sleys edited this page Aug 24, 2026 · 2 revisions

Animation Configuration lets you modify the properties and characteristics of an animation that already exists whether it's a real animation from Animation Registry, or a virtual one created through Animation Virtualization.

Unlike Animation Registry, which creates a completely new animation, or Animation Virtualization, which creates a reference/clone of one, Configuration doesn't create anything: it reaches into an animation that's already registered and applies property overrides directly on top of it.


⚙️ Option A: Local Config Folder

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

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

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

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

  • Path: ./data_driven/<mod_id>/animations/config/*.json
  • 💡 Rule: The mod_id field can be safely omitted inside the JSON because the directory's namespace acts as the fallback signer automatically.

🔺 The Group Pyramid

Config doesn't work by instantiating a class through an Accessor like Registry does. Instead it works through abstract groups, arranged in a pyramid of inheritance:

Level Group Requires
Base Static Group Real animation extends StaticAnimation
Middle Action Group Real animation extends ActionAnimation
Top Attack Group Real animation extends AttackAnimation

📚 Supported Group Types

The type field determines which config group is used, based on the target animation's own class hierarchy.

Type Epic Fight Class
static_group StaticAnimation
action_group ActionAnimation
attack_group AttackAnimation

💡 The type must match the group the target or hierarchy animation actually belongs to you cannot configure an StaticAnimation using attack_group, for example.


📋 Common Fields

Field Type Description
type String Config group to use for this animation.
animation Resource Location The existing animation to configure — can be a real (Registry) or virtual (Virtualization) animation.

💡 The Attack Group introduces an additional field!


🎬 Type-Specific Parameters

Attack Group

Field Type Description
properties List of Attack Phase Properties Optional. Overrides applied per-phase on the configured attack. Defaults to an empty list.

💡 If fewer properties are given than the animation has phases, the last property in the list is reused for every remaining phase — same behavior as Attack Group virtualization.


📄 Example

{
  "type": "attack_group",
  "animation": "epicfight:biped/skill/battojutsu_dash",
  "in_time_events": [
    {
      "type": "epicfight_edp:thunder",
      "side": "server",
      "start": 1.0
    }
  ]
}

🧩 Group Properties

Every config group may accept additional properties depending on the animation's inheritance hierarchy. Properties are merged directly into the config JSON and do not require an additional wrapper object this is how fields like in_time_events above end up applied.

Group Available Properties
Static Group Animation Static Properties
Action Group Animation Action Properties
Attack Group Animation Attack Properties, Animation Attack Phase Properties

🪄 Common Use Case: Adding Logic to a Skill

Configuration's main use is layering extra logic onto a skill without touching the skill's own animation definition.

Say a skill is created through the Simple Skill JSON system:

{
  "modid": "my_modid",
  "name": "thunder_battojutsu",

  "animation": "epicfight:biped/skill/battojutsu",
  "properties": [
    {
      "max_strikes": 1.0,
      "damage_multiplier": 1.2,
      "impact": 1.0,
      "stun_type": "SHORT"
    }
  ]
}

Internally, the skill system virtualizes epicfight:biped/skill/battojutsu into my_modid:biped/skill/thunder_battojutsu. Because that virtual animation now exists in the pool, it can be targeted directly with a Configuration entry:

{
  "type": "attack_group",
  "animation": "my_modid:biped/skill/thunder_battojutsu",
  "in_time_events": [
    {
      "type": "epicfight_edp:thunder",
      "side": "server",
      "start": 0.6
    }
  ]
}

This attaches an in_time_events callback to the skill's own virtual animation, entirely separate from the base battojutsu animation it was derived from.


⚠️ Notes

  • Configuration never creates an animation, the target animation must already exist (either real or virtual).
  • type must match the target animation's actual class hierarchy (Static/Action/Attack).
  • Attack Group configs can override phase-level behavior via properties, without needing a full Virtualization or Registry entry.
  • A common pattern is configuring a virtual animation created by another system (e.g. a skill's auto-virtualized animation), rather than a manually registered one.

EF: Extended Datapacks

📦 Data

🧰 Core

👁️ Visuals

⚔️ Combat

🗝️ Skill Builder

🛠️ Innate Builder

🗡️ Animation Operations

⚙️ Third-Party

Clone this wiki locally