弗莱图克斯的技能引擎

弗莱图克斯的技能引擎

制作技能树的框架

技能引擎 —— 用于 Forge 模组的模块化技能树框架

技能引擎 并非一个独立的进度模组。
它本身不会添加任何游戏玩法、属性或能力。

相反,技能引擎是一个框架,旨在让其他模组创建自己的高度可定制的技能树,并配备:

  • 节点解锁
  • 属性需求
  • 自定义图标
  • 技能点管理
  • 服务器同步
  • 需求与提示文本
  • 与其他进度系统的交互(如 Ascend)

如果你在寻找一个添加技能的模组,这不是你要找的。
如果你是一名开发者,想要在不重新发明轮子的情况下为你的模组添加技能树,技能引擎正是你所需要的。


功能特性

JSON 驱动的技能树系统

模组只需在以下路径下添加 JSON 文件,即可注册自己的技能节点:

data/<你的模组ID>/skillnodes/*.json

自动节点渲染

节点在技能树 GUI 中会自动完成定位、显示、缩放、平移和绘制。

图标支持

可使用你自己的纹理或原版物品纹理作为节点图标。

需求系统

节点可以指定:

  • 关联节点
  • 前置属性
  • 技能消耗
  • 自定义标签

界面会自动在提示文本和覆盖层中显示需求信息。

解锁逻辑与同步

解锁操作完全在服务器端处理,并同步至客户端。

完整 API 支持

技能引擎包含一个公共 API 类,允许其他模组:

  • 发放技能点
  • 解锁技能节点
  • 查询解锁状态
  • 访问玩家技能数据
  • 注册或引用节点

如何在你的模组中使用技能引擎

技能引擎的设计目标就是极其易于集成。

1. 将技能引擎添加为依赖

在你的 mods.toml 中:

[[dependencies.yourmodid]]
    modId="skillengine"
    type="required"
    versionRange="[1.0.0,)"

在你的 Gradle 构建文件中:

implementation fg.deobf("net.fretux.skillengine:SkillEngine:<版本号>")

2. 创建你的技能节点(JSON)

示例:

{
  "title": "基础力量",
  "description": "你感到肌肉紧绷起来。",
  "cost": 1,
  "position": { "x": -150.0, "y": -50.0 },
  "links": ["skillengine:welcome"],
  "tags": ["yourmodid:strength_1"],
  "icons": "minecraft:textures/item/iron_sword.png",
  "prerequisites": {
    "strength": 10,
    "agility": 5
  }
}

将此文件放置在:

data/yourmodid/skillnodes/basic_strength.json

技能引擎会自动检测到它并将其添加到技能树中。


3. 在你的代码中使用 API

技能引擎提供了一个简洁的 API:

SkillEngineAPI.unlockNode(player, SkillEngineAPI.rl("yourmodid", "basic_strength"));
SkillEngineAPI.addSkillPoints(player, 3);
boolean unlocked = SkillEngineAPI.isUnlocked(player, SkillEngineAPI.id("welcome"));

你无需接触内部类即可与系统交互。

玩家:这个模组对我有什么作用?

技能引擎本身不做任何事情。
它不会自行添加技能树或能力。

你仅在以下情况下需要此模组:

  • 你游玩的某个模组依赖于技能引擎
  • 你想要安装能创建技能树的附加模组