Origins JS
KubeJS integration for Origins.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
Origins JS
Origins JS
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.
Features
- Parameters Support: Grant, revoke, and check origins/powers from JS scripts. - Parameters Support: Define `EntityAction`, `BlockAction`, `ItemAction`, `BiEntityAction` in JavaScript. - Parameters Support: Define `EntityCondition`, `BlockCondition`, `ItemCondition`, `BiEntityCondition`, `BiomeCondition`, `DamageCondition`, `FluidCondition` in JavaScript. - Parameters Support: Create fully scripted Power types with JS callbacks (`grant`, `revoke`, `tick`, `active`, `inactive`). - Parameters Support: All custom types can be referenced in JSON datapacks using the `origins_js:` namespace. - Parameters Support: Pass custom parameters from JSON to your JS callbacks for dynamic behavior and high reusability.
Dependencies
Quick Start
1. Install all dependencies, then place your `.js` scripts in `kubejs/server_scripts/`.
2. Basic Usage
```javascript // Get the holder for a player or entity let holder = OriginsJS.getHolder(event.player);
// Manage origins & powers holder.grantPower("origins:origin", "origins:fire_immunity"); holder.revokePower("origins:origin", "origins:climbing"); holder.setOrigin("origins:origin", "origins:human");
// Check state if (holder.hasPower("origins:fire_immunity")) { /* ... */ } if (holder.hasOrigin("origins:human")) { /* ... */ } ```
See examples for more examples including custom actions, conditions, and powers.
Documentation
- API Reference — full type table, HolderWrapper API, and static shortcut methods - Examples — code examples for origins/powers, custom actions, conditions, and powers