天赋树数据包配置教程 (pa)
天赋树数据包配置教程 | Talent Tree Datapack Configuration Guide
目录结构 | Directory Structure
1 | data/ |
天赋树 JSON 文件放置在 data/<命名空间>/talent_trees/ 目录下。
可以有多个 JSON 文件,它们会被合并加载。
JSON 格式 | JSON Format
1 | { |
字段说明 | Field Reference
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | String | ✅ | 天赋的唯一 ID(不含命名空间) |
name | String | ✅ | 直接文本 或 本地化键名(自动检测) |
description | String | ✅ | 直接文本 或 本地化键名(自动检测) |
icon | String | ✅ | 图标(见下方格式) |
x | Integer | ✅ | 在 GUI 中的 X 坐标(像素) |
y | Integer | ✅ | 在 GUI 中的 Y 坐标(像素) |
isStartingTalent | Boolean | ❌ | 是否为起始天赋(默认 false) |
prerequisites | Array | ❌ | 前置天赋 ID 列表 |
itemCost | Array | ❌ | 物品消耗列表 |
xpLevelCost | Integer | ❌ | 经验等级消耗 |
connections | Array | ❌ | 连接线目标天赋 ID(用于 GUI 绘制) |
frameType | String | ❌ | 选择框样式预设(见下方说明) |
attributeModifiers | Array | ❌ | 属性加成列表 |
effects | Array | ❌ | 持续药水效果列表 |
affixes | Array | ❌ | 特殊词条效果列表 (如 explode_on_death, last_stand) |
选择框样式 | Frame Type Presets
可以为每个天赋节点指定不同的选择框样式。
1 | { |
| 预设值 | 尺寸 | 说明 |
|---|---|---|
square | 32x32 | 默认矩形框 |
circle | 32x32 | 圆形边框 |
diamond | 32x32 | 菱形边框(45 度旋转) |
hexagon | 32x32 | 六边形边框 |
octagon | 32x32 | 八边形边框 |
small_square | 24x24 | 小型矩形框 |
small_circle | 24x24 | 小型圆形边框 |
small_diamond | 24x24 | 小型菱形边框 |
small_hexagon | 24x24 | 小型六边形边框 |
small_octagon | 24x24 | 小型八边形边框 |
注意:如果不指定
frameType,默认使用square。
GUI 操作 | GUI Controls
天赋树界面支持以下交互操作:
| 操作 | 功能 |
|---|---|
| 鼠标左键拖动 | 平移视图 |
| 滚轮向上 | 放大(最大 2.0x) |
| 滚轮向下 | 缩小(最小 0.5x) |
| 双击天赋 | 解锁天赋 |
提示:缩放会以鼠标位置为中心进行,方便聚焦查看特定区域。
名称和描述 | Name and Description
支持两种格式:
直接文本(推荐)
直接写入显示的文字,不需要创建语言文件:
1 | "name": "战士之路", |
本地化键名
使用带点号的格式,会自动查找语言文件翻译:
1 | "name": "talent.mymod.warrior.name", |
自动检测规则:如果文本包含
.符号且不包含颜色代码(§),会被视为本地化键名。
自定义贴图
使用 texture: 前缀:
1 | "icon": "texture:playeraffixes:textures/talent/custom.png" |
背景设置 | Background Settings
可以在 JSON 根对象中配置天赋树的背景。
1 | { |
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
background | String | playeraffixes:textures/gui/talent_tree_bg.png | 背景纹理路径 |
backgroundMode | String | stretch | 渲染模式:stretch (拉伸), tile (平铺), center (居中) |
backgroundWidth | Integer | 256 | 背景纹理宽度(用于平铺和居中模式) |
backgroundHeight | Integer | 256 | 背景纹理高度(用于平铺和居中模式) |
起始天赋 | Starting Talents
起始天赋需要设置 isStartingTalent: true。
- 玩家只能选择一个起始天赋
- 选择后其他起始天赋将被锁定
- 起始天赋不需要前置条件
1 | { |
解锁条件 | Unlock Conditions
前置天赋
1 | "prerequisites": ["warrior_start", "strength_boost"] |
必须解锁所有列出的前置天赋才能解锁此天赋。
物品消耗
1 | "itemCost": [ |
解锁时会从玩家背包中扣除这些物品。
经验消耗
1 | "xpLevelCost": 10 |
解锁时会扣除玩家的经验等级。
连接线 | Connections
connections 字段用于在 GUI 中绘制天赋之间的连接线。
1 | { |
注意:连接线只是视觉效果,不影响解锁逻辑。
解锁逻辑由prerequisites控制。
天赋效果 | Talent Effects
天赋可以提供永久的属性加成或持续的药水效果。
属性加成 (Attribute Modifiers)
支持修改任何注册的属性(如生命值、速度、攻击力等)。
1 | "attributeModifiers": [ |
操作类型 (Operation):
add: 直接加法(如 +4 生命值)multiply_base: 基于基础值的乘法(如 +10% 速度)multiply_total: 基于最终值的乘法
持续效果 (Potion Effects)
只要天赋解锁,玩家就会获得对应的药水效果。
1 | "effects": [ |
effect: 效果 IDamplifier: 等级(0 代表 I 级,1 代表 II 级)
特殊词条 (Affixes)
特殊词条允许触发复杂的逻辑效果。
1 | "affixes": ["explode_on_death", "last_stand"] |
详细的词条列表和说明请参考:特殊词条指南 (AFFIX_GUIDE.md)
职业联动 (ClassBioArsenal) | Profession Integration
如果安装了 ClassBioArsenal 模组,可以为天赋添加职业要求和基于职业等级的属性缩放。
职业需求 (Profession Requirements)
支持配置多个职业需求,玩家满足其中任意一个即可解锁(OR 逻辑)。
1 | "professionRequirements": [ |
profession: 职业 ID。level: 需要达到的最低等级。
提示:如果只设置一个职业,也可以使用旧版字段(不推荐):
"requiredProfession": "warrior", "requiredProfessionLevel": 10
属性缩放 (Profession Attribute Scale)
天赋提供的属性加成可以根据玩家当前职业的等级进行缩放。
1 | "professionAttributeScale": 0.1 |
计算公式:最终加成 = 基础加成 * (1 + 职业等级 * professionAttributeScale)
例如:基础攻击力 +5,职业等级 10,缩放 0.1。最终攻击力加成 = 5 * (1 + 10 * 0.1) = 10
注意:缩放效果仅对
attributeModifiers中的加成生效。
坐标系统 | Coordinate System
- 坐标
(0, 0)是天赋树的左上角 - X 向右增加,Y 向下增加
- 每个天赋占用 32x32 像素
- 建议天赋之间间隔至少 50-80 像素
1 | 示例布局: |
完整示例 | Complete Example
1 | { |
本地化 | Localization
在语言文件中添加对应的翻译:
assets/mymod/lang/en_us.json:
1 | { |
assets/mymod/lang/zh_cn.json:
1 | { |
管理员命令 | Admin Commands
| 命令 | 说明 |
|---|---|
/talent unlock <玩家> <天赋ID> | 直接解锁天赋(无视条件) |
/talent reset <玩家> | 重置玩家所有天赋 |
/talent reload | 热重载天赋数据包 |
示例:
1 | /talent unlock @p playeraffixes:warrior_start |
命令需要 OP 权限等级 2 或更高。
热重载 | Hot Reload
修改数据包后,使用以下命令重载:
1 | /talent reload |
这将:
- 重新加载所有天赋配置
- 同步到所有在线玩家
- 保留玩家已解锁的天赋
注意:如果删除了玩家已解锁的天赋 ID,该记录仍会保留在存档中。

