
河豚的技能 - MT 背包负重
它允许玩家的技能成长提升最大负重上限。
Pufferfish's Skills InventoryWeight
Pufferfish's Skills InventoryWeight 是一款服务器端模组,可将 MT Inventory Weight 与 Pufferfish's Skills 连接起来。
它允许玩家的技能进度以两种方式增加其最大库存重量容量:
- 属性奖励(数据驱动)——技能节点直接授予库存重量属性。无需 Java;这就是捆绑的“搬运“技能树的工作方式。
- Java 事件连接器——此模组读取技能类别的经验等级,并通过 MT Inventory Weight 的事件修改最大重量。
它还附带一个可选的、内置的“搬运”技能树,你可以按世界启用。
此模组不能独立运行。
MT Inventory Weight 注册了一个原版风格的属性:
inventoryweight:generic.max_weight
Pufferfish's Skills 可以通过其 puffish_skills:attribute 奖励授予任何已注册的属性,因此技能节点可以直接授予最大重量。
1. 属性奖励(数据驱动,无需 Java)
在类别的 definitions.json 中,技能定义列出了奖励。将 puffish_skills:attribute 奖励指向 inventoryweight:generic.max_weight:
{
"type": "puffish_skills:attribute",
"data": {
"attribute": "inventoryweight:generic.max_weight",
"value": 200.0,
"operation": "addition"
}
}
operation |
效果 |
|---|---|
addition / add / add_value |
直接加值(例如 +200)。推荐使用。 |
multiply_base / add_multiplied_base |
增加属性基础值的一个分数。 |
multiply_total / add_multiplied_total |
乘以当前总数。 |
优先使用
addition。如果属性基础值为0,multiply_*操作可能效果甚微或无效。
2. Java 事件连接器(基于等级的缩放)
此模组监听 MT Inventory Weight 的最大重量事件:
InventoryWeightEvents.MODIFY_MAX_WEIGHT
并根据技能类别的经验等级来缩放容量,该等级通过 Pufferfish's SkillsAPI(Category.getExperience().getLevel(player))读取。请参阅下面的配置。
如果节点授予了属性(路径 1),并且你按等级缩放了相同的值(路径 2),则奖励会叠加。
内置的“搬运”技能树
此模组绑定了一个可选的 Pufferfish 类别 carrying:
- 在 jar 文件中以 Fabric 内置数据包的形式注册于
resourcepacks/carrying/,因此会出现在世界创建界面的数据包屏幕中,默认禁用。 - 节点授予
inventoryweight:generic.max_weight(固定值和百分比),带有一个小的移动速度节点和一个终极节点。 - 通过挖掘方块和合成物品获得经验。
- 强力的百分比/移动节点位于树的更深处,需要先通过几个固定值节点。
启用方法:
- 新世界 → 创建世界 → 数据包 → 将“搬运技能树”移动到启用侧,或者
- 已有世界 →
/datapack list,然后/datapack enable "<id>"。
打开技能界面(默认按键 K)即可看到搬运类别。
默认包 vs. 自定义包(整合包开发者 / 服务器管理员)
你不必局限于捆绑的技能树:
- 使用默认包——启用内置的“搬运技能树”包。无需任何文件。
- 覆盖它——提供一个数据包,在
puffish_skills命名空间下重新定义carrying类别。后加载的包会覆盖内置文件(按文件粒度,后加载的包获胜)。保持内置包禁用以避免混合。 - 添加独立的技能树——使用不同的 ID(以及你自己的命名空间)定义一个新的类别,并保持内置的
carrying包关闭。这是整合包最干净的选择:无冲突。
无论哪个包的
config.json最终生效,它都必须列出你想要加载的所有类别。
配置(Java 事件路径)
通过 fzzy_config 同步的服务器端配置:
config/pufferfishs-skills-inventoryweight/server-config.*
通用
| 选项 | 默认值 | 描述 |
|---|---|---|
enabled |
true |
主开关。 |
minimumMaxWeight |
1.0 |
最终最大重量的下限。 |
category(默认启用)
根据一个已配置类别的经验等级进行缩放。
| 选项 | 默认值 | 描述 |
|---|---|---|
category.enabled |
true |
启用基于类别的缩放。 |
category.categoryId |
puffish_skills:adventure |
要读取的类别 ID。如果省略,命名空间默认为 puffish_skills。 |
category.additivePerLevel |
0.0 |
每类别等级的固定加成。 |
category.multiplierPerLevel |
0.05 |
0.05 = 每级 +5%。 |
totalLevel(默认禁用)
根据所有类别经验等级的总和进行缩放。
| 选项 | 默认值 | 描述 |
|---|---|---|
totalLevel.enabled |
false |
启用组合等级缩放。 |
totalLevel.additivePerLevel |
0.0 |
每组合等级的固定加成。 |
totalLevel.multiplierPerLevel |
0.0 |
0.01 = 每组合等级 +1%。 |
计算公式
result = (currentMaxWeight + additive) * multiplier
result = max(minimumMaxWeight, result)
currentMaxWeight 是 MT Inventory Weight 已经计算出的值,因此这会与基础配置、护甲口袋以及其他 Inventory Weight 模组叠加。
示例
基础最大重量: 100
类别等级 (冒险): 10
category.multiplierPerLevel: 0.05
multiplier = 1 + 10 * 0.05 = 1.5
result = (100 + 0) * 1.5 = 150
备注
- 如果某个类别不存在或没有经验来源,则其贡献值为
0。 - 负的配置值将被钳制为中性值。
- 在你的 Pufferfish's Skills 数据包/配置(
puffish_skills:<id>)中查找类别 ID。 - 内置技能树是
NORMAL类型(默认关闭);请在数据包界面中启用它。
故障排除
- 技能不提供任何重量加成——确认属性 ID 精确为
inventoryweight:generic.max_weight,优先使用operation: addition,并在编辑奖励后重置技能,以便修饰符重新应用。 - 内置技能树缺失——它默认是禁用的;请启用它。检查日志中是否出现
Registered built-in 'carrying' datapack: true。 pack.mcmeta无法加载——描述必须是严格的 JSON 格式(不能使用智能引号/尾随逗号)。experience.json中出现Unknown variable 'true'——条件必须引用已定义的变量;对于无条件经验,请使用纯字符串,例如"experience": "1"。
文档
完整文档:参见 docs/pufferfishs-skills.md(或在线文档站点)。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。