This is a KubeJS integration for Origins (NeoForge), allowing you to manage origins and powers via KubeJS.
Note: This is my first time to make a KubeJS addon, most code written by DeepSeek and reviewed by my self. So if you think some APIs are weird or not well-designed, please let me know.
EntityAction, BlockAction, ItemAction, BiEntityAction in JavaScript.EntityCondition, BlockCondition, ItemCondition, BiEntityCondition,
BiomeCondition, DamageCondition, FluidCondition in JavaScript.grant, revoke, tick, active,
inactive).origins_js: namespace.PowerHelper API for power querying (hasActive, toggle) and advanced power data (Resource, Cooldown, EntitySet)..js scripts in kubejs/server_scripts/.// Recommended: use HelperWrapper (backed by new PowerHelper API)
let helper = OriginsJS.getHelper(event.player);
// Grant / revoke power & manage origin (HolderWrapper still works too)
let holder = OriginsJS.getHolder(event.player);
holder.grantPower("origins:origin", "origins:fire_immunity");
holder.setOrigin("origins:origin", "origins:human");
// Active state
helper.anyActive(); // any power active?
helper.hasActive("origins:climbing"); // specific power active?
helper.toggle("primary"); // toggle by key
// Execute callback on active powers
helper.execute("origins:climbing", (holderRef, power) => {
holderRef.getEntity().tell("Climbing!");
});
// Modify base value (for modifier powers)
let modified = helper.modifyDouble("origins:modify_attribute", 10.0);
// Resource / Cooldown / Entity Set (also on helper)
helper.setResource("origins:climbing", 20);
helper.startCooldown("origins:fireball");
helper.addToEntitySet("mypack:friends", event.player.getStringUuid());
See examples for more examples including custom actions, conditions, and powers.