Epic Fight - EDP (Extended Datapacks) logo

Epic Fight - EDP (Extended Datapacks)

Mod

by Sleys

Allows you to add Passive Skills to categories in datapacks, as well as use SkillDatakeys in Styles, Charged Attakcs and a few other things.

Downloads

272,706

Type

Mod

CurseForge ID

1309609

Last Updated

Apr 9, 2026

Description

Extended Datapacks

Extends Epic Fight datapacks with new systems like passive skills, datakey logic, charged attacks, shaders, and advanced customization... and more!

 

✨ Features

Add Passive Skills via JSON

Use Skill Datakeys (boolean, int, float + comparators)

Create Charged Attacks

Fix camera issues with Zoom & Use Method

Add Advanced Swing Trails

Use Models per Style

Extend Skill Builder via JSON

Execute ShaderFX via datapacks

Add Categories via JSON

Execute Overlays 

 

🧭 Roadmap

Categories & Overlays v1.9 ✔️

Innate Skills v2.0 (In Progress)

  • Simple Innate Skills ✔️
  • Conditional Innate Skills 🛠️
  • Timed Innate Skills ❌
  • Charged Innate Skills ❌

Future Ideas

Camera Packet on Animations (1.20.1)

Skill Books (Dodge / Guard / General)

 

📦 Core Systems

 

🔹 Passive Skills (v1.0)

Assign passive skills to a weapon category:

"passive_skill": "namespace:skill_id"

⚠ Important
Some passive weapon skills require an Innate Skill.
Incorrect combinations may cause crashes.

🔽 More Details (Advanced)

Image of how the passive skill looks implemented, keep in mind that this only applies to "Weapons Passive Skills" using others will have no effect.

 

description_3c0cc940-782d-4918-ac0c-4724c96f4744.png

 

🔹 Skill Datakeys (v1.1+)

Allows conditional logic using skill data.

Supported types

  • Boolean
  • Integer
  • Float

Basic example

"skill_data_key": "namespace:path", "expected_value": true

Float example (requires tolerance)

"skill_data_key": "namespace:path", "expected_value": 2.5, "tolerance": 0.01

 

More details

In this case, let's look at an example of how the Skills Datakeys can be used to work together with the previous feature (Passive Skills)

In this case, we use the passive of the Uchigatana that allows a "Sheath" of the Katana, once this applies and the value of the passive is True, we change to the "Sheath" style

description_b29a0357-d3ce-4fd4-81b9-9a5b82493b34.png

 

This supports the following list in predicates:

  • passive_skill_boolean_data_key
  • passive_skill_float_data_key
  • passive_skill_integer_data_key
  • innate_skill_boolean_data_key
  • innate_skill_float_data_key
  • innate_skill_integer_data_key.

For Booleans, you need to add the Skill Datakey and the desired value:
"skill_data_key": "namespace:path",
"expected_value": true

 

For integers, you need to add the Skill Datakey and the desired value:
"skill_data_key": "namespace:path",
"expected_value": 5

 

For floats, you want to add the Skill Datakey, the desired value, and a tolerance:
"skill_data_key": "namespace:path",
"expected_value": 2.5,
"tolerance": 0.01

⚠  Make sure you use the correct values ​​for each Key ⚠

 

🔹 Skill Datakeys – Comparators (v1.2+)

Adds support for:

>, <, ==, !=, >=, <=

Example

"skill_data_key": "modid:charge", "comparison_type": ">", "expected_value": 5

🧠 Internally works like:

X | Comparison | Value 8 > 5

 

🔽 More Details (Advanced)

Theoretical implementation example

 

description_38aee33d-12e2-4733-87fb-d431e05d4964.png

 

Here is a weapon that, when its Innate ability reaches more than "5" charges, will then change from Two Hand to Ochs, until the "Charges" are less than or equal to 5.

Just remember to add ""tolerance": 0.X" when working with floats....

 

💡 Good habits!

One thing to add is that, to better understand things, it's helpful to order the operations like this:

"skill_data_key": "modid:charge",

"comparison_type": ">",

"expected_value": 5

 

Because the comparison actually works like this:
SkillKey | Comparison Type | ExpectedValue.

X | Comparison Type | Constant.

8 > 5.

 

🔹 Charged Attacks (v1.3 & v1.8.4+)

Hold a key to enter Charged Mode.

Effects

  • +20% Damage
  • -15% Attack Speed
  • Optional stamina cost

Behavior

  • Does NOT reset combo
  • Can mix normal and charged attacks

Example combo

1AA → 2CAA → 3AA → CDA

 

🔽 More Details (Advanced)

When the player activates a charged attack, the system does not reset the combo sequence. This means the internal combo count continues naturally, allowing you to switch between normal and charged attacks without breaking the flow of combat.

For example, if your weapon has a sequence like this:

Normal Attacks: 1AA → 2AA → 3AA → DA → AS

Charged Attacks: 1CAA → 2CAA → 3CAA → CDA → CAS

You can chain both sets of animations depending on the combo's position. This allows for combinations like:

1AA → 2CAA → 3AA → 1CAA → CDA → AS

To remain in Charged Attack Mode, you must hold down the button. When you release it, after half a second, the system returns to normal mode. 

 

description_53a1ba4e-22f8-41c6-bf70-cf3b64ec4ce6.png

 

The "allow_two_hand_compatibility" entry means if you want it to go to the charged attack considering or not considering the Offhand item

 

The energy between Innate Skills is not conserved, in the example the Innate Skills are different to visually show the change from mode to charged mode.

 

🔹 Zoom & Use Method (v1.4+)

Fixes camera issues when using items with no proper animation.

"zoom_in_type": "custom"

Values

  • none
  • always
  • use_tick
  • aiming
  • custom

💡 You can also force right-click behavior using item tags.

 

🔽 More Details (Advanced)

description_33f79387-63e0-4b6c-8d74-1736f31ce295.PNG

 

In this case, we are building an "Antitheus" item in a datapack. We have assigned the passive and the Innate Skill; however, when using the right click, the camera "bugs." We fix this by adding the line: "zoom_in_type": "custom"

 

But what if my item won't let me right-click? We can always force it!

Enforce the "Use Method" on any item that contains the required tag. This resolves several client/server use-item issues in EF when creating datapack items.

To do this, create the file in the following path: data/epicfight_edp/tags/items/force_use_method.json.

And add the items in the tag list.

description_10cd35bd-2e67-42e3-bdf5-6daa6df72ae4.PNG

Now our weapon can use right-click, it can cast the Antitheus right-click ability and the camera won't glitch!

 

🔹 Advanced Swing Trails (v1.5+)

Add custom swing trail textures per weapon style.

📁 Path:

assets/<namespace>/item_skins_parameters/*.json

 ✔️ Supports:

  • Per-style trails
  • Texture override (ignores animation conflicts)

More details

In this case, I will give the example of a diamond sword, which, depending on whether it is One Hand or Two Hand, will have varying swing trails!

 

description_1f8d49a5-3103-476f-a0cd-e7ec9d61d7fc.png

 

This is useful if you want to change your Item's model when you change Style, and by extension, also change its Swing Trail.

This function also applies an "Overwrite" to the original texture, even if it's attached to an animation. This ensures your Swing Trail won't be modified by animations and will instead use the texture you want.

 

This is only for configuring the texture; you also need to create the "item_skins" (assets/item_namespace/item_name.json) file for the item in question.

In the case of the previous example, the diamond sword, its Item Skin is this (assets/minecraft/item_skins/diamond_sword.json)

description_3ce77b8c-5936-4d34-a3b0-ca3ef66d1f27.png

The Item Skin is where the color, begin pos, end pos, lifetime, interpolations, and particle type parameters were added. The "texture_path" will only be used if the Advanced Swing Trail textures fail along with their Callback Trail.

 

🔹 Models per Style (v1.6+)

Assign different models depending on player style.

📁 Path:

assets/<namespace>/item_model_parameters/*.json

Supports:

  • Style-based model switching
  • Multiple texture/model channels

🔽 More Details (Advanced)

description_7d9c3b51-0eb9-45c9-842a-efd19710f0af.png

 

Parameters Explained

  • item: The target item that will receive the model overrides.
  • item_socket: The socket item containing all models and textures, separated by channels.
  • per_style: Boolean flag indicating whether textures/models should change depending on the player’s style.
  • style_config: A configuration object that defines which socket channel each style should use.
  • style: The style identifier.
  • socket_channel: The channel inside the item socket that will be used for this style.

 

Once we have this, we need to build our "Item Model Socket" which will simply store all our model overrides inside; it is useful for loading models and assigning the desired texture to the channel, the number of addable channels is as many as you want; you don't need to put one in each socket.

description_fa3d1c40-d450-43ba-b2e9-1ac2b9978441.png

 

Here's an example of what it would look like in-game, using the Swing Trails per Style system and the Model per Style system

Here's the resource pack that causes that effect: Google Drive - simply_sword_test.zip

 

🔹 Skill Builder Extensions (v1.7+)

Add Icon to Skill Category

📁 Path:

.minecraft/config/epicfight_edp/skill_builder/category_icon/*.json

 

🔽 More Details (Advanced)

In some cases, a weapon category does not have a clear or defined icon in Epic Fight’s Skill system.
When this happens, opening the related Skill Book may cause an exception due to a missing icon.

(This issue occurred in older versions; it may or may not still happen, but this system exists as a preventive solution.)

 

How it works

Adding an icon is simple. You only need to define:

  • The item to be used as the icon
  • The weapon category it belongs to

changelog_27fcefee-9498-449e-8a54-0ee50364f74f.png

 

⚠ Override Behavior ⚠

This system allows overrides.
If multiple configurations define an icon for the same category, only one will be used.

 

Add Category to Passive Skills

📁 Path:

.minecraft/config/epicfight_edp/skill_builder/passive_skills/*.json

⚠ No override support.

 

🔽 More Details (Advanced)

changelog_3567ad92-1a4b-4704-bd3a-570903b81f23.png

 

Parameters

  • skill_builder: The array name where all entries are stored.
  • skill_id: The Epic Fight Skill ID. The target skill must contain a field for storing a weapon category. If the skill does not support Weapon Available Category, this system will do nothing.
  • category: The weapon category to be added to the skill.

⚠ Override Behavior ⚠

This system does NOT allow overrides.
A single category declaration can be used by multiple Passive Skills, but cannot be redefined.

 

 

Add Category to Guard Skills

📁 Path:

.minecraft/config/epicfight_edp/skill_builder/guard_skills

Supports:

  • Guard / Parry systems
  • Multiple animation types
  • Per-style animations

More details

This system is more complex than the previous ones, as it requires defining:

  • The guard skill
  • The weapon category
  • The animation type
  • Whether animations change per style
  • Whether animations are single or arrays
  • The required animation sets:
    • 2 sets: base and break
    • 3 sets: base, break, and advanced (depending on the skill)

Despite this, the configuration remains straightforward.

changelog_d3ed8026-8db5-4ac1-9678-6461c41195be.png

 

Core Parameters

  • skill_guard_builder: The array name where all guard skill entries are stored.
  • skill_guard_id: The Epic Fight Guard Skill ID. The skill must inherit from Guard Skill and support animations. Any Guard Skill that meets these requirements is compatible.
  • category: The weapon category to be added to the Guard Skill.

Animation Parameters

Depending on the guard skill type:

  • Guard / Impact Guard - Like Skills
    • guard_motion
    • guard_break_motion
  • Parrying-like Skills
    • guard_motion
    • guard_break_motion
    • guard_advanced_motion

Animation Definitions

  • guard_motion: Animation played when the player successfully guards an incoming attack.
  • guard_break_motion: Animation played when the player’s posture/stamina is exceeded and the guard breaks, stunning the player.
  • guard_advanced_motion: Special guard interaction animation.
    • For Parrying exmple: a deflection animation
    • For Weapons of Miracle – Counter Attack: an attack animation

Animation Sub-Configuration

Animation entries support additional parameters:

  • type: Defines whether a single animation or an animation array is used (multi). Only guard_advanced_motion supports arrays (multi).  Any value set for guard_motion or guard_break_motion other than single will be considered invalid.
  • per_style: Defines the style in which the animation is used.
    • Use "return" to ignore the player’s current style. If you have assigned "return", the system will understand that you do not want to use styles, so DO NOT assign styles if you use return.
    • To define animations per style, specify values such as: one_hand, two_hand, etc.

 

⚠ Override Behavior ⚠

This system does NOT allow overrides.
A single category declaration may be reused by multiple Guard Skills.

 

🔹 ShaderFX System (v1.8+)

Execute shaders dynamically via datapacks.

📁 Path:

assets/<namespace>/shader_packet_parameters/*.json

Triggers

  • Skill
  • Style
  • Animation

Modes

  • Hold → active while condition is true
  • Oneshot → triggers once

Effects

  • Impact Frame
  • Noise Overlay
  • Radial Blur (In / Out)
  • Color Overlay

🔽 More Details (Advanced)

Parameter File Structure

Each file defines how and when shaders will run. A typical file looks like:

changelog_98fd0a9f-5020-4e15-afa1-dc36c8949827.png

 

Field Definitions:

Field Description shader_packet Name of the shader packet array category Target category for shader execution (required) for_item Target item. Accepts "all" or specific items. If omitted, defaults to "all". payload_on Execution trigger type. Valid values: Skill, Style, Animation. (Invalid combinations will crash the game.) type Execution mode based on payload_on.

 

 

Execution Modes (Type)

  • Skill → supports: hold
  • Style → supports: hold
  • Animation → supports: oneshot

Hold: Shader runs while the condition is true
Oneshot: Shader runs once at a specific elapsed time

 

Run, parameter Format

When payload_on = "Style"

skill: <skill_id>

effect: <ShaderFx type>

 

Valid effects for Style/Hold:

  • Overlay Color
  • Radial Blur In
  • Radial Blur Out

When payload_on = "Skill"

skill: <skill_id>

effect: <ShaderFx type>

 

Valid effects for Style/Hold:

Valid effects for Skill/Hold:

  • Overlay Color
  • Radial Blur In
  • Radial Blur Out

When payload_on = "Animation"

animation: <animation_id>

elapse: <time>

effect: <ShaderFx type>

Valid effects for Animation/Oneshot:

  • Noise Overlay
  • Impact Frame

ShaderFx Parameter Reference

Impact Frame

Parameter Description radius Max radius (0–20). 0 disables the effect. intensity Effect strength atlook Triggers only if player is facing the caster

 

 

Noise Overlay

Parameter Description timeHold Duration size Noise texture size intensity Effect strength r, g, b Color values

 

 

Radial Blur (In / Out)

Parameter Description timeIn Smooth fade-in duration timeHold Duration at full strength timeOut Smooth fade-out duration intensity Blur intensity (non-scalar) samples Quality/performance trade-off

 

 

Color Overlay

Parameter Description timeIn Smooth fade-in duration timeHold Duration at full intensity timeOut Smooth fade-out duration intensity Recolor strength r, g, b Target color

 

⚠ Important Notes

  • Not all intensity values behave the same across shaders
  • Some systems depend on correct skill compatibility
  • Incorrect configs may cause crashes

 

🔹 Categories & Overlays (v1.9+)

Categories

It allows you to easily create new categories from JSON.

📁 Path:

.minecraft/config/epicfight_edp/weapon_builder/category/*.json

 

🔽 More Details (Advanced)

Depending on your preference, you can do the following:

  • For config: .minecraft/config/epicfight_edp/weapon_builder/category/your_files.json
  • For In-Jar: your_mod.jar/lzm_runner/<your_modid>/weapon_builder/category/your_files.json

And your file should look something like this:

changelog_0456ce0b-21e2-402b-8de0-c09d2c4d5e1b.png

 

Important: If you register the category from the configuration folder, you must declare a modID.

If you do it using an In-Jar file, you don't need to specify the modID because the namespace where the file itself exists is considered the signer.

 

Overlays

You can add static overlays or animated overlays.

📁 Path:

assets/<your_namespaces>/overlay_parameters/your_file.json

 

🔽 More Details (Advanced)

There you can create a file like this; in this example it's for both one-handed and two-handed modes.

changelog_447d3a5b-4564-448b-b1e1-14920b263d63.png

 

As you can see, if we want to use a simple overlay, that is, a single image, we simply pass it:
"overlay_path": "epicfight_edp:overlays/flame/fireflay_50.png"

In turn, you must always declare the item you want to write to. In the example, it was: "item": "minecraft:diamond_sword",

on the other hand: "per_style": true,
is just bureaucracy; it doesn't do anything currently. If in the future I want the overlay to be launched with different parameters, this will be useful.

 

The path assigned to the texture is not automatically located in "textures." The image shows: "epicfight_edp:overlays/flame/fireflay_50.png"

This means it is located in: assets/epicfight_edp/overlays/flame/fireflay_50.png

NOT IN: assets/epicfight_edp/textures/overlays/flame/fireflay_50.png

 

Important: The size MUST match the number of images available for animation. The FPS CANNOT EXCEED the level's evaluation threshold of 20 ticks (20 FPS).

The system counts from 1 -> Size, not from 0, and the asterisk (*) must correspond to the number in your image set. Additionally, the notation is straightforward: 0 -> 1 -> 10 -> 11 -> 100, etc.

IT IS NOT COMPATIBLE WITH 000 -> 001 -> 010 -> 11 -> 100...

 

💡 Tips

  • Recommended naming format: "yourname_fuction_anycomplement.json"
  • For SkillsDataKeys: SkillKey | Comparison | Value 

📌 Requirements

  • Epic Fight Mod
  • Lazy Utilities

📌 Optional requirements

  • Weapons Of Miracle

Similar Mods

External Resources