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