Skip to content

Animation Virtualization

Sleys edited this page Aug 24, 2026 · 3 revisions

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.


⚙️ 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/virtualization/*.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/virtualizate/*.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

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.


📚 Supported Group Types

Type Epic Fight Class
static_group StaticAnimation
action_group ActionAnimation
attack_group AttackAnimation

📋 Common Fields

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!


🎬 Type-Specific Parameters

Attack Group

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.


📄 Example

{
  "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
    }
  ]
}

🧩 Group Properties

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.


⚠️ Notes

  • 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

⚔️ Combat

🗝️ Skill Builder

🛠️ Innate Builder

🗡️ Animation Operations

⚙️ Third-Party

Clone this wiki locally