LogoPassiveSkillTreeJS

PassiveSTJS 概览

PassiveSTJS 概览

PassiveSTJS 是一个面向 Forge 1.20.1 的 Passive Skill Tree KubeJS 附属模组。

它主要暴露四层脚本能力:

  1. StartupEvents.registry('skilltree:...') 用来注册带 serializer 的 PST 类型。
  2. PassiveSTJSEvents.skillTreeContent(...) 用来生成和修改技能树内容。
  3. PassiveSkillTreeJS 绑定用来读写运行时玩家、技能树、技能与物品状态。
  4. event.recipes.skilltree.workbench_item_bonus() 用来编写 PST 工作台 socket 配方。

脚本位置

不同能力要放在正确的 KubeJS 目录里:

  • kubejs/startup_scripts/ 用于 StartupEvents.registry('skilltree:...')
  • kubejs/server_scripts/ 用于 PassiveSTJSEvents.skillTreeContent(...)、运行时 helper 和 recipe 注册
  • kubejs/client_scripts/ 用于 ClientEvents.lang(...),提供标题、描述、tooltip 片段与工作台文本

主要入口

公开事件与绑定入口包括:

  • PassiveSTJSEvents.skillTreeContent(event => { ... })
  • PassiveSkillTreeJS.player(player)
  • PassiveSkillTreeJS.skill(id)
  • PassiveSkillTreeJS.tree(id)
  • PassiveSkillTreeJS.item(stack)

内容事件会把生成的数据写进 KubeJS 的虚拟 datapack,并在事件结束后同步到 PST 运行时缓存。

启动注册家族

PassiveSTJS 为这些 PST serializer 家族安装了 StartupEvents.registry(...) 支持:

  • skilltree:skill_bonuses
  • skilltree:skill_bonus_multipliers
  • skilltree:living_conditions
  • skilltree:damage_conditions
  • skilltree:item_conditions
  • skilltree:enchantment_conditions
  • skilltree:event_listeners
  • skilltree:numeric_value_providers
  • skilltree:skill_requirements
  • skilltree:item_bonuses

skillTreeContent 里,event.registries() 会暴露同一套真实 PST 注册表视图。

类型化编写

这个模组为脚本和配方里常用的 PST 路径提供了 typed id 与 enum。仓库里的示例也按这套风格编写:

  • typed tree 与 skill id
  • bonus、listener、requirement、condition、item bonus 的 typed registry id
  • equipment type、texture、frame type、logic enum、effect id、attribute id、item id、tag id、potion id

只要 Probe 或生成类型可用,这就是推荐的作者写法。

文档地图

  • 启动注册集成 说明如何注册带 serializer 的 PST 自定义类型
  • 服务端内容事件 说明如何增删改技能树与技能
  • 运行时 Helper 说明如何在运行时操作玩家、技能树、技能与物品 helper
  • 工作台配方 说明如何通过 RecipeJS 编写 skilltree:workbench_item_bonus
  • 配置 说明 passivestjs-common.toml 的公开开关
  • 示例 说明仓库里每个样例文件分别覆盖哪一块 API

版本说明

  • Minecraft:1.20.1
  • Forge:47.4.18
  • KubeJS:2001.6.5-build.22
  • 共享配置:config/passivestjs-common.toml