Origins JS

KubeJS integration for Origins.

16

Quick challenge

How far can you run before the mobs catch you?

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

- KubeJS - Origins (NeoForge)

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

ADS