Repository navigation
Animation Virtualization
Animation Virtualization lets you create a reference to an already-registered animation through datapacks, without duplicating the physical asset.
Unlike Animation Registry, which creates a completely new animation from an animation file, or Animation Configuration, which modifies an existing animation in place, Virtualization clones the identity of an animation. The new virtual animation inherits every class characteristic of the real one (even if the real one belongs to a third-party mod), and you can then layer additional properties on top of it without ever touching the original.
Use this path if you want the setup to be easily accessible/editable by servers or pack devs.
-
Path:
.minecraft/config/epicfight_edp/animations/virtualization/*.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/virtualizate/*.json - 💡 Rule: The
mod_idfield can be safely omitted inside the JSON because the directory's namespace acts as the fallback signer automatically.
Virtualization 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
|
Each step of the pyramid unlocks access to different qualities and properties. Whichever group you use, the virtual animation always inherits the real animation's class characteristics this is guaranteed because virtualization is a protocol-driven process: it only ever adds possible logic on top of an object that already has its own qualities, it never redefines them.
| Type | Epic Fight Class |
|---|---|
static_group |
StaticAnimation |
action_group |
ActionAnimation |
attack_group |
AttackAnimation |
Every group shares the same base fields.
| Field | Type | Description |
|---|---|---|
real_animation |
Resource Location | The existing, already-registered animation to virtualize. |
virtual_animation |
Resource Location | The new identifier the virtual animation will be accessible under. |
💡 The Attack Group introduces an additional field!
| Field | Type | Description |
|---|---|---|
properties |
List of Attack Phase Properties | Optional. Overrides applied per-phase on the virtualized 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.
{
"type": "attack_group",
"real_animation": "epicfight:biped/skill/battojutsu_dash",
"virtual_animation": "yourmod:biped/skill/thunder_battojutsu_dash",
"properties": [
{
"stun_type": "long"
}
]
"in_time_events": [
{
"type": "epicfight_edp:thunder",
"side": "server",
"start": 1.0
}
]
}Every virtual group may accept additional properties depending on where it sits in the pyramid.
| Group | Available Properties |
|---|---|
| Static Group | Animation Static Properties |
| Action Group | Animation Action Properties |
| Attack Group | Animation Attack Properties, Animation Attack Phase Properties |
Properties are merged directly into the virtualization JSON and do not require an additional wrapper object.
- A virtual animation never modifies the real animation it points to. The original asset is left completely untouched.
- Virtualization works even when the real animation belongs to a third-party mod; the class characteristics are always preserved.
- Its main purpose is to let you reuse an existing animation asset under a new identity with its own properties without duplicating the physical asset.
- Attack Group virtualizations can override phase-level behavior via
properties, without altering the source animation's own phases. - Group type is determined by the real animation's class hierarchy: Static, Action, or Attack.
- A virtual animation CANNOT be used to create skills because they do not "exist" at that moment.
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