Repository navigation
Animation Configuration
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.
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 themod_idfield inside the JSON when using this folder.
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_idfield can be safely omitted inside the JSON because the directory's namespace acts as the fallback signer automatically.
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
|
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
typemust match the group the target or hierarchyanimationactually belongs to you cannot configure anStaticAnimationusingattack_group, for example.
| 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!
| 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.
{
"type": "attack_group",
"animation": "epicfight:biped/skill/battojutsu_dash",
"in_time_events": [
{
"type": "epicfight_edp:thunder",
"side": "server",
"start": 1.0
}
]
}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 |
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.
- Configuration never creates an animation, the target
animationmust already exist (either real or virtual). -
typemust 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
- Zoom Types
- Weapon Models per Style
- Advanced Swing Trails
- Weapons Passive Particles
- Shader Effects I
- Shader Effects II
- Shader Effects III
⚔️ Combat
🗝️ Skill Builder
🛠️ Innate Builder
- Simple Innate Skills
- Holdable Innate Skills
- Conditional Innate Skills
- Conditional Data Innate Skills
- Conditional Holdable Innate Skills
- Sequential Innate Skills
- Per Combo Innate Skills
- Combo Innate Skills
🗡️ Animation Operations
- Animation Operations
- Animation Properties
⚙️ Third-Party