Epic Fight - EDP(扩展数据包)

Epic Fight - EDP(扩展数据包)

能够让你使用数据包把被动技能添加到类别,以及在样式、冲刺攻击以及其他一些功能中使用技能数据键(SkillDatakeys)。

Extended Datapacks

使用新的系统扩展 Epic Fight 数据包,例如被动技能、数据键逻辑、蓄力攻击、着色器以及高级自定义……等等!


✨ 功能

通过 JSON 添加被动技能

使用技能数据键(布尔值、整数、浮点数 + 比较器)

创建蓄力攻击

通过缩放与使用方法修复相机问题

添加高级挥舞轨迹

使用按风格切换模型

通过 JSON 扩展技能构建器

通过数据包执行 ShaderFX

通过 JSON 添加类别

执行叠加层

创建天生技能(简单、可保持与条件型)


🧭 路线图

系统与着色器 II v2.2 重制 ✔️

未来构想

计时型天生技能与条件可保持型天生技能 (目前这个胜出!)

动画相机数据包(1.20.1)

技能书(闪避/格挡/通用)


📚 新维基!

该信息仅对 2.2 版本有效

https://github.com/Sleys-g/ExtendedDatapacks/wiki


📦 核心系统

🔹 被动技能 (v1.0)

为武器类别分配被动技能:

"passive_skill": "namespace:skill_id"

⚠ 重要 某些被动武器技能需要一个天生技能。 错误的组合可能导致崩溃。

🔽 更多详情(进阶)

点击展开

被动技能实现后的效果图,请注意这仅适用于“武器被动技能”,使用其他技能将无效。

图


🔹 技能数据键 (v1.1+)

允许使用技能数据进行条件逻辑判断。

支持的类型

  • 布尔值
  • 整数
  • 浮点数

基础示例

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

浮点示例(需要容差)

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

更多详情

点击展开

在此案例中,我们来看一个如何使用技能数据键与先前特性(被动技能)协同工作的例子。

此处,我们使用打刀的被动技能,该技能允许“收刀”入鞘。一旦此被动生效且值为 True,我们就切换到“收刀”风格。

图

这支持在谓词中使用以下列表:

  • 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

对于布尔值,你需要添加技能数据键和期望的值: "skill_data_key": "namespace:path", "expected_value": true

对于整数,你需要添加技能数据键和期望的值: "skill_data_key": "namespace:path", "expected_value": 5

对于浮点数,你需要添加技能数据键、期望的值和一个容差: "skill_data_key": "namespace:path", "expected_value": 2.5, "tolerance": 0.01

⚠ 请确保对每个键使用正确的值 ⚠


🔹 技能数据键 – 比较器 (v1.2+)

增加对以下运算符的支持:

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

示例

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

🧠 内部工作原理如下:

X | Comparison | Value
8 > 5

🔽 更多详情(进阶)

点击展开

理论实现示例

图

这里有一把武器,当它的天生技能充能超过“5”层时,便会从双持姿态切换到剑柄格(Ochs)姿态,直到“充能”层数小于或等于 5。

请记住,在处理浮点数时添加 ""tolerance": 0.X" ....

💡 好习惯!

有一点需要补充的是,为了更好地理解,将操作这样排序会很有帮助:

"skill_data_key": "modid:charge",

"comparison_type": ">",

"expected_value": 5

因为比较实际上是这样工作的: SkillKey | Comparison Type | ExpectedValue.

X | Comparison Type | Constant.

8 > 5.


🔹 蓄力攻击 (v1.3 & v1.8.4+)

按住某个键进入蓄力模式。

效果

  • +20% 伤害
  • -15% 攻击速度
  • 可选的耐力消耗

行为

  • 不会重置连击
  • 可以混合普通攻击和蓄力攻击

示例连击

1AA → 2CAA → 3AA → CDA

🔽 更多详情(进阶)

点击展开

当玩家发动蓄力攻击时,系统不会重置连击序列。这意味着内部连击计数会自然继续,允许你在普通攻击和蓄力攻击之间切换,而不会破坏战斗流程。

例如,如果你的武器有这样一个序列:

普通攻击:1AA → 2AA → 3AA → DA → AS

蓄力攻击:1CAA → 2CAA → 3CAA → CDA → CAS

你可以根据连击的位置将这两套动画串联起来。这允许类似这样的组合:

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

要保持在蓄力攻击模式,你必须按住按钮。当你松开按钮时,半秒钟后,系统会恢复到普通模式。

图

"allow_two_hand_compatibility" 条目表示,是否希望在考虑或不考虑副手物品的情况下进行蓄力攻击。

⚠ 注意,天生技能之间的能量不守恒。在示例中,天生技能是不同的,以便在视觉上显示从普通模式到蓄力模式的切换。


🔹 缩放与使用方法 (v1.4+)

修复了在使用没有正确动画的物品时出现的相机问题。

"zoom_in_type": "custom"

值

  • none
  • always
  • use_tick
  • aiming
  • custom

💡 你也可以使用物品标签强制设置右键行为。

🔽 更多详情(进阶)

点击展开

图

在此案例中,我们正在数据包中构建一个“Antitheus”物品。我们已经分配了被动和天生技能;但是,当使用右键时,相机会“出问题”。我们可以通过添加行 "zoom_in_type": "custom" 来解决这个问题。

但是如果我的物品不允许我使用右键怎么办?我们总有办法强制!

对手上任何包含所需标签的物品强制执行**“使用方法”**。这解决了在创建数据包物品时,EF 中出现的多个客户端/服务器使用物品问题。

为此,请在以下路径创建文件:data/epicfight_edp/tags/items/force_use_method.json。

并将物品添加到标签列表中。

图

现在,我们的武器可以使用右键了,它可以施放 Antitheus 的右键技能,并且相机不会再出问题了!


🔹 高级挥舞轨迹 (v1.5+)

为每种武器风格添加自定义的挥舞轨迹纹理。

📁 路径:

assets/<namespace>/item_skins_parameters/*.json

✔️ 支持:

  • 按风格定制轨迹
  • 纹理覆盖(忽略动画冲突)

更多详情

点击展开

在这里,我将以钻石剑为例,展示根据其是单手还是双手模式而拥有不同的挥舞轨迹!

图

当你改变风格时,如果你想改变你的物品模型,并随之改变其挥舞轨迹,这将非常有用。

此功能还会对原始纹理进行“覆盖”,即使它附加在动画上。这确保了你的挥舞轨迹不会被动画修改,而是使用你想要的纹理。

这只是配置纹理;你还需要为相关物品创建 "item_skins" (assets/item_namespace/item_name.json) 文件。

以前面的示例钻石剑为例,它的物品皮肤是这样的 (assets/minecraft/item_skins/diamond_sword.json)

图

物品皮肤中包含了颜色、起始位置、结束位置、生命周期、插值和粒子类型等参数。只有当高级挥舞轨迹纹理及其回调轨迹失败时,才会使用 "texture_path"。


🔹 按风格切换模型 (v1.6+)

根据玩家的战斗风格分配不同的模型。

📁 路径:

assets/<namespace>/item_model_parameters/*.json

支持:

  • 基于风格的模型切换
  • 多纹理/模型通道

🔽 更多详情(进阶)

点击展开

图

参数说明

  • item: 将接收模型覆盖的目标物品。
  • item_socket: 包含所有模型和纹理的插槽物品,按通道分隔。
  • per_style: 布尔标志,指示纹理/模型是否应随玩家风格变化。
  • style_config: 一个配置对象,定义每种风格应使用的插槽通道。
  • style: 风格标识符。
  • socket_channel: 将为该风格使用的物品插槽内的通道。

一旦我们有了这个,我们需要构建我们的“物品模型插槽”,它将在内部存储我们所有的模型覆盖;这对于加载模型并将所需纹理分配给通道非常有用。可添加的通道数量不限;你不需要在每个插槽中都放置一个。

图

这是在游戏中的样子,结合使用了按风格切换挥舞轨迹系统和按风格切换模型系统

这是产生该效果的资源包:** Google Drive - simply_sword_test.zip **


🔹 技能构建器扩展 (v1.7+)

为技能类别添加图标

📁 路径:

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

🔽 更多详情(进阶)

点击展开

在某些情况下,Epic Fight 技能系统中的武器类别没有清晰或定义的图标。 当发生这种情况时,打开相关的技能书可能会因为缺少图标而导致异常。

(此问题发生在旧版本中;现在可能仍会发生,但此系统作为一个预防性解决方案存在。)

工作原理

添加图标很简单。你只需要定义:

  • 要用作图标的物品
  • 它所属的武器类别

图

⚠ 覆盖行为 ⚠

此系统允许覆盖。 如果多个配置为同一类别定义了图标,则只使用一个。


为被动技能添加类别

📁 路径:

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

⚠ 不支持覆盖。

🔽 更多详情(进阶)

点击展开

图

参数

  • skill_builder: 存储所有条目的数组名称。
  • skill_id: Epic Fight 技能 ID。目标技能必须包含一个用于存储武器类别的字段。如果技能不支持“可用武器类别”,此系统将不起作用。
  • category: 要添加到技能中的武器类别。

⚠ 覆盖行为 ⚠

此系统不允许覆盖。 单个类别声明可以被多个被动技能使用,但不能被重新定义。


为格挡技能添加类别

📁 路径:

.minecraft/config/epicfight_edp/skill_builder/guard_skills

支持:

  • 格挡/招架系统
  • 多种动画类型
  • 按风格切换动画

更多详情

点击展开

此系统比前几个更复杂,因为它需要定义:

  • 格挡技能
  • 武器类别
  • 动画类型
  • 动画是否随风格变化
  • 动画是单个还是数组
  • 所需的动画集:
    • 2 套:基础与破防
    • 3 套:基础、破防与高级(取决于技能)

尽管如此,配置仍然很直接。

图

核心参数

  • skill_guard_builder: 存储所有格挡技能条目的数组名称。
  • skill_guard_id: Epic Fight 格挡技能 ID。该技能必须继承自格挡技能并支持动画。任何满足这些要求的格挡技能都是兼容的。
  • category: 要添加到格挡技能中的武器类别。

动画参数

取决于格挡技能类型:

  • 格挡 / 冲击格挡 - 类似技能

    • guard_motion
    • guard_break_motion
  • 招架类技能

    • guard_motion
    • guard_break_motion
    • guard_advanced_motion

动画定义

  • guard_motion: 当玩家成功格挡一次来袭攻击时播放的动画。
  • guard_break_motion: 当玩家的姿态/耐力被耗尽且格挡被击破、使玩家眩晕时播放的动画。
  • guard_advanced_motion: 特殊的格挡互动动画。
    • 对于 招架示例:一个偏转动画
    • 对于 奇迹武器 – 反击:一个攻击动画

动画子配置

动画条目支持额外的参数:

  • type: 定义是使用单个动画还是动画数组(multi)。只有 guard_advanced_motion 支持数组(multi)。为 guard_motion 或 guard_break_motion 设置的任何非 single 的值都将被视为无效。
  • per_style: 定义使用动画的风格。
    • 使用 "return" 来忽略玩家的当前风格。如果你分配了 "return",系统将理解你不想使用风格,所以如果你使用 return,请不要分配风格。
    • 要定义按风格切换的动画,请指定如:one_hand、two_hand 等值。

⚠ 覆盖行为 ⚠

此系统不允许覆盖。 单个类别声明可以被多个格挡技能重用。


🔹 ShaderFX 系统 (v1.8+)

通过数据包动态执行着色器。

📁 路径:

assets/<namespace>/shader_packet_parameters/*.json

触发器

  • 技能
  • 风格
  • 动画

模式

  • 保持 → 条件为真时激活
  • 一次性 → 仅触发一次

效果

  • 冲击帧
  • 噪点叠加
  • 径向模糊(向内 / 向外)
  • 颜色叠加

🔽 更多详情(进阶)

点击展开

参数文件结构

每个文件定义了着色器的运行方式和时间。一个典型的文件如下所示:

图

字段定义:

字段 描述
shader_packet 着色器数据包数组的名称
category 着色器执行的目标类别 (必需)
for_item 目标物品。接受 "all" 或特定物品。如果省略,默认为 "all"。
payload_on 执行触发器类型。有效值:Skill、Style、Animation。 (无效组合会导致游戏崩溃。)
type 基于 payload_on 的执行模式。

执行模式 (Type)

  • Skill → 支持:hold
  • Style → 支持:hold
  • Animation → 支持:oneshot

Hold: 条件为真时,着色器持续运行 Oneshot: 在特定的经过时间里,着色器运行一次

运行、参数格式

当 payload_on = "Style" 时

skill: <skill_id>

effect:

Style/Hold 的有效效果:

  • Overlay Color
  • Radial Blur In
  • Radial Blur Out

当 payload_on = "Skill" 时

skill: <skill_id>

effect:

Skill/Hold 的有效效果:

  • Overlay Color
  • Radial Blur In
  • Radial Blur Out

当 payload_on = "Animation" 时

animation: <animation_id>

elapse:

effect:

Animation/Oneshot 的有效效果:

  • Noise Overlay
  • Impact Frame

ShaderFx 参数参考

Impact Frame

参数 描述
radius 最大半径 (0–20)。0 表示禁用效果。
intensity 效果强度
atlook 仅当玩家面向施法者时触发

Noise Overlay

参数 描述
timeHold 持续时间
size 噪点纹理大小
intensity 效果强度
r, g, b 颜色值

Radial Blur (In / Out)

参数 描述
timeIn 平滑淡入持续时间
timeHold 全强度持续时间
timeOut 平滑淡出持续时间
intensity 模糊强度(非标量)
samples 质量/性能权衡

Color Overlay

参数 描述
timeIn 平滑淡入持续时间
timeHold 全强度持续时间
timeOut 平滑淡出持续时间
intensity 重新着色强度
r, g, b 目标颜色

⚠ 重要说明

  • 并非所有 intensity 值 在不同着色器中的行为都相同
  • 某些系统依赖于正确的 技能兼容性
  • 错误的配置可能导致崩溃

🔹 类别与叠加层 (v1.9+)

类别

它允许通过 JSON 轻松创建新类别。

📁 路径:

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

🔽 更多详情(进阶)

点击展开

根据您的偏好,可以执行以下操作:

  • 对于配置:.minecraft/config/epicfight_edp/weapon_builder/category/your_files.json
  • 对于 Jar 内:your_mod.jar/lzm_runner/<your_modid>/weapon_builder/category/your_files.json

您的文件应该如下所示:

图

重要提示:如果您从配置文件夹注册类别,则必须声明一个 modID。 如果您使用 Jar 内文件,则无需指定 modID,因为文件本身所在的命名空间被视为签名者。

叠加层

您可以添加静态叠加层或动画叠加层。

📁 路径:

assets/overlay_parameters/your_file.json

🔽 更多详情(进阶)

点击展开

在那里你可以创建这样的文件;在这个例子中,它适用于单手和双手模式。

图

如您所见,如果我们想使用一个简单的叠加层,即单个图像,我们只需传递: "overlay_path": "epicfight_edp:overlays/flame/fireflay_50.png"

同时,您必须始终声明您要写入的物品。在示例中,是:"item": "minecraft:diamond_sword",

另一方面:"per_style": true, 只是官方程序;它目前不执行任何操作。如果将来我希望叠加层以不同的参数启动,这将很有用。

分配给纹理的路径不会自动位于“textures”文件夹中。图像显示:"epicfight_edp:overlays/flame/fireflay_50.png"

这意味着它位于:assets/epicfight_edp/overlays/flame/fireflay_50.png

不在: assets/epicfight_edp/textures/overlays/flame/fireflay_50.png

重要提示: 大小必须与可用于动画的图像数量相匹配。FPS 不能超过 游戏刻评估阈值的 20 刻(20 FPS)。

系统从 1 -> Size 开始计数,而不是从 0 开始,并且星号 (*) 必须与图像集中的数字对应。此外,表示法很简单:0 -> 1 -> 10 -> 11 -> 100,等等。

不兼容 000 -> 001 -> 010 -> 11 -> 100...


🔹 天生技能与第三方能力 II (v2.1+)

天生技能

允许通过 JSON 文件 创建和自定义天生技能。

📁 路径 - 配置:

config/ └── epicfight_edp/ └── innate_skill_builder/ ├── conditional_innate_skill/ ├── holdable_innate_skill/ └── simple_innate_skill/

📁 路径 - Jar 内:

data_driven/ └── <mod_id>/ └── innate_skill_builder/ ├── conditional_innate_skill/ ├── holdable_innate_skill/ └── simple_innate_skill/

🔽 更多详情(进阶)

点击展开

简单天生技能

它们使用单个动画和单个属性集。

图

⚙️ 通用技能字段

这些字段被大多数天生技能类型共享。

字段 类型 描述
modid 字符串 用于注册技能的 Mod 命名空间。
name 字符串 内部技能标识符。
animation 字符串 技能使用的主要动画。
properties_type 字符串 定义属性是 mono_phase 还是 multi_phase。
properties 对象 包含战斗属性定义。

⚔️ 技能属性

properties 对象控制技能的 combat 行为。

属性 类型 描述
max_strikes 浮点数 可命中的最大目标数。
damage_multiplier 浮点数 技能施加的伤害倍率。
armor_negation 浮点数 伤害计算中忽略的护甲百分比。
impact 浮点数 决定命中反应和眩晕效果的强度。
stun_type 字符串 应用于目标的眩晕类型。
extra_damage 布尔值 在支持时启用额外伤害效果。

动画眩晕

击中时造成的眩晕类型

StunType
short
long
hold
knockback
neutralize
fall
none

条件型天生技能

条件型技能会根据玩家的当前状态动态选择动画。

支持的条件:

  • sprinting
  • in_air
  • kneeling
  • use_item

如果没有任何条件满足,将使用在 animation 中定义的默认动画。

图

条件 描述
sprinting 玩家疾跑时使用。
in_air 玩家未接触地面时使用。
kneeling 玩家蹲伏/下跪时使用。
use_item 主动使用物品时使用。

可保持型天生技能

可保持型技能引入了基于蓄力的机制。

特性:

  • 自定义蓄力动画
  • 最小和最大蓄力时长
  • 蓄力超时控制
  • 可选的移动减速

此系统为未来混合技能(如条件可保持型天生技能)奠定了基础。

图

字段 类型 描述
chargeAnimation 字符串 蓄力时播放的动画。
minChargingTicks 整数 激活前的最小蓄力持续时间。
maxChargingTicks 整数 用于确定最高蓄力阶段的蓄力等级上限。
maxAllowedCharging 整数 玩家在取消前可以保持蓄力的最长时间。
reduceSpeed 布尔值 在蓄力时减缓玩家移动速度。
animation 字符串 技能释放时播放的最终动画。

来自战斗进化(Combat Evolution)的处决动画(仅限 1.20.1)

你可以注册处决动画,可以按物品注册,也可以按类别注册。但不能同时指定两者,否则你的数据包将被视为无效。

📁 路径 - 配置:

config/epicfight_edp/third_party/combat_evolution/execution

📁 路径 - Jar 内:

data_driven/<mod_id>/third_party/combat_evolution/execution

🔽 更多详情(进阶)

点击展开

按类别注册

图

按物品注册:

图

属性 类型 描述
category 字符串 将获得处决动画的武器类别。使用 "null" 忽略此字段。
item 字符串 特定物品的注册名称 (modid:item_name)。使用 "null" 忽略此字段。
style 字符串 执行处决所需的战斗风格。
executionAnimation 字符串 处决过程中攻击者播放的动画。
executedAnimation 字符串 被处决目标播放的动画。
xOffset 浮点数 应用于被处决实体的水平 X 位置偏移。
yOffset 浮点数 应用于被处决实体的垂直位置偏移。
zOffset 浮点数 应用于被处决实体的前后 Z 位置偏移。
rotationOffset 浮点数 攻击者与被处决目标之间的额外旋转。
totalTick 整数 处决序列的总持续时间(以刻为单位)。

💡 贴士

  • 推荐命名格式:"yourname_function_anycomplement.json"
  • 对于技能数据键:SkillKey | Comparison | Value

📌 需求

  • Epic Fight Mod
  • Lazy Utilities (v2.0 之前) - SL Library, SLM: Epic Fight, SLM: Shaders (v2.0 之后)

📌 可选需求

  • Weapons Of Miracle