
终极技能
一个围绕节点树构建的技能模组。每个节点、连接、加成和效果都在JSON或KubeJS中定义,因此数据包可以从零开始构建自己的技能,无需改动代码。
描述
终极技能
这是一个围绕节点树构建的技能模组,专为制作整合包的玩家设计。模组没有硬编码的技能列表:树中的每个节点都是一个 JSON 文件,因此模组自带的技能树只是一个起点,你可以完全替换它。
技能树
按 K 键打开。这是一个可平移和缩放的画布:拖拽移动,滚动缩放,左键点击节点即可学习。当你学习节点时,连接线会亮起金色,因此你所走过的路径一目了然。
模组自带 421 个节点,以十二个放射状分支围绕一个起始节点排列。每个分支基于一种属性构建,深入十层,每第三个节点分出四个节点的侧枝,每个主枝和侧枝的末端都有一个精通节点,更远处还有一个基石节点。
十二个分支:利刃(近战伤害)、狂怒(攻击速度)、装甲(护甲值)、淬火(护甲韧性)、活力(最大生命值)、迅捷(移动速度)、深掘(挖掘速度)、幸运(幸运值)、锚定(击退抗性)、巧匠(方块放置距离)、猎人(对生物的攻击距离)和飘落(安全摔落距离)。
每个节点都明确说明其提供的效果。精通和基石节点还会授予永久药水效果——力量、急迫、抗性提升、抗火、生命恢复、速度、幸运、夜视或缓降,具体取决于分支。这些效果会自动刷新,因此它们能穿过死亡、跨维度传送和 /effect clear 而持续存在。
点数来自原版经验等级,节点一旦学习即为永久。/uskills reset 可以在你想重新开始时归还所有点数。
每个节点都是一个文件
节点位于 data/<你的命名空间>/skilltree/nodes/<id>.json:
{
"title": "Executioner",
"description": ["+3 melee damage and permanent Strength."],
"icon": "minecraft:netherite_sword",
"type": "notable",
"x": 420, "y": 0,
"cost": 2,
"player_level": 15,
"connections": ["ultimateskills:blade_9"],
"bonuses": [
{ "attribute": "minecraft:generic.attack_damage", "amount": 3.0 },
{ "attribute": "minecraft:generic.attack_speed", "amount": 0.15, "operation": "add_multiplied_base" }
],
"effects": [
{ "effect": "minecraft:strength" }
]
}
| 字段 | 默认值 | 作用 |
|---|---|---|
title |
— | 工具提示中显示的名称 |
lang |
— | 共享翻译键,使多个节点可以复用一组文本 |
description |
空 | 工具提示内容行 |
icon |
minecraft:book |
绘制在节点内部的物品 |
type |
minor |
start、minor、notable、keystone 或 gateway —— 决定大小和颜色 |
x、y |
必填 | 在画布上的位置 |
cost |
1 | 学习所需点数 |
player_level |
0 | 要求的原版经验等级 |
connections |
空 | 所连接的节点;连接会自动双向建立 |
requires |
空 | 必须先学习的节点 |
bonuses |
空 | 属性修饰符,支持任何属性,包括模组添加的属性 |
effects |
空 | 永久药水效果 |
当一个节点是 start 节点,或者与它相连的某个节点已被学习、满足其 requires 条件、拥有足够的点数,并且达到所要求的经验等级时,就可以学习该节点。
连接只需声明一次:例如 A 连接到 B,模组在加载时会自动添加 B 到 A 的连接。每次重新加载时,模组还会在日志中报告技能树的形状——节点数量、根节点、可到达的节点数、单向连接、断裂的连接——并警告任何玩家永远无法到达的节点。
推荐搭配:OpenLoader —— 普通数据包只存在于一个世界内,因此你必须将其复制到每个新世界中。使用 OpenLoader,同一份文件可以放在 config/openloader/data/ 中,并在所有世界中加载。
或者用 KubeJS 编写
如果安装了 KubeJS,模组会添加一个全局的 Skills 绑定。它位于 kubejs/server_scripts/ 中——技能树随数据包加载,因此启动脚本和客户端脚本会在世界加载时被丢弃,模组会在日志中警告你。
Skills.node('mypack:brutal_strike')
.title('Brutal Strike')
.description('+4 melee damage and permanent Strength.')
.icon('minecraft:netherite_axe')
.type('notable')
.at(490, -70)
.cost(2)
.playerLevel(15)
.connect('ultimateskills:blade_10')
.bonus('minecraft:generic.attack_damage', 4)
.bonus('minecraft:generic.attack_speed', 0.2, 'add_multiplied_base')
.effect('minecraft:strength')
.register()
没有 .register() 就不会生效 —— 这是人们最常忘记的一点。当构建器方法无法满足你的需求时,raw({...}) 可以接收一个完整的对象。
命令
/uskills(或更短的 /ust):
/uskills info—— 查看你的点数、已消耗点数和所有已学习的节点。/uskills points <玩家> <数量>—— 给予或收回点数。/uskills learn <玩家> <节点>—— 强制学习某个节点,忽略点数和连接要求。/uskills reset <玩家>—— 清除已学习的节点并归还所有点数。/uskills nodes—— 查看技能树当前拥有的节点数量。
配置
config/ultimateskills-common.toml
| 选项 | 默认值 | 作用 |
|---|---|---|
enabled |
true | 界面和所有加成效果的总开关 |
starting_points |
1 | 首次加入时给予的点数 |
points_per_player_level |
1 | 每提升一级原版经验等级获得的点数 |
reset_on_death |
false | 死亡时清除已学习的节点并归还点数 |
max_points |
0 | 可持有的最大点数上限;0 表示无上限 |
语言
支持英语和西班牙语,并附带了 es_es、es_mx 和 es_ar,因为 Minecraft 不会在西班牙语变体之间自动回退。节点文本通过翻译键处理,并以 JSON 字符串作为回退,因此未翻译节点文本的整合包依然可以正常显示。
要求:
· Minecraft 1.21.1
· NeoForge 21.1.240
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。