Origins JS

Origins JS

起源的KubeJS集成。

Origins JS

这是为 Origins (NeoForge) 开发的 KubeJS 集成,允许你通过 KubeJS 管理起源和能力。

注意:这是我第一次制作 KubeJS 附加组件,大部分代码由 DeepSeek 编写,我本人进行了审核。如果你认为某些 API 怪异或设计不佳,请告知我。

功能

  • 起源和能力管理:通过 JS 脚本授予、撤销和检查起源/能力。
  • 自定义动作:在 JavaScript 中定义 EntityAction、BlockAction、ItemAction、BiEntityAction。
  • 自定义条件:在 JavaScript 中定义 EntityCondition、BlockCondition、ItemCondition、BiEntityCondition、BiomeCondition、DamageCondition、FluidCondition。
  • 自定义能力:使用 JS 回调创建完全脚本化的能力类型 (grant、revoke、tick、active、inactive)。
  • 数据驱动:所有自定义类型都可以在 JSON 数据包中使用 origins_js: 命名空间引用。
  • 参数支持:从 JSON 向 JS 回调传递自定义参数,实现动态行为和高复用性。
  • PowerHelper 集成:公开新的 PowerHelper API,用于能力查询(hasActive、toggle)以及高级能力数据(Resource、Cooldown、EntitySet)。

依赖项

快速开始

1. 安装所有依赖项,然后将你的 .js 脚本放入 kubejs/server_scripts/ 目录。

2. 基本用法

// 推荐:使用 HelperWrapper(基于新的 PowerHelper API)
let helper = OriginsJS.getHelper(event.player);

// 授予 / 撤销能力和管理起源(HolderWrapper 同样可用)
let holder = OriginsJS.getHolder(event.player);
holder.grantPower("origins:origin", "origins:fire_immunity");
holder.setOrigin("origins:origin", "origins:human");

// 活跃状态
helper.anyActive();                        // 是否有任何能力激活?
helper.hasActive("origins:climbing");      // 特定能力是否激活?
helper.toggle("primary");                  // 按键切换

// 对激活能力执行回调
helper.execute("origins:climbing", (holderRef, power) => {
    holderRef.getEntity().tell("Climbing!");
});

// 修改基础值(用于修饰符能力)
let modified = helper.modifyDouble("origins:modify_attribute", 10.0);

// 资源 / 冷却 / 实体集(也通过 helper)
helper.setResource("origins:climbing", 20);
helper.startCooldown("origins:fireball");
helper.addToEntitySet("mypack:friends", event.player.getStringUuid());

更多示例(包括自定义动作、条件和能力)请参见示例页面。

文档

  • API 参考 —— 完整类型表、HolderWrapper API 和静态快捷方法
  • 示例 —— 起源/能力、自定义动作、条件和能力的代码示例