Tags
Creators
Details
v2.1.2+26.1
Compatibility
Changes
KubeJS Integration
Soft dependency on KubeJS 2101.7.x — when KubeJS is installed, pack authors can hook into origin and power lifecycle from JavaScript and register their own power behaviors without writing Java. When KubeJS is absent the mod runs unchanged (every fire site short-circuits on a single cached load check; no reflection, no class-not-found risk).
ℹ️ 1.21.1 build only for this release. KubeJS hasn't published a Minecraft 26.1 build yet, so the 26.1 jar ships without the integration. It'll land on 26.1 the release after KubeJS cuts a 2601.x build.
- 15 events covering origin lifecycle (chosen / changed),
power lifecycle (granted / revoked / activated / tick), evolution
(tier_changed / declined), mob origin (assigned / cleared), and
mount (requested / accepted / declined / started / ended). Fired from
central choke points so admin commands and cascade invalidations are
covered, not just user-driven paths.
power_tickis gated byhasListeners()so zero overhead when no script subscribes. neoorigins:kubejs_callbackentity action — JS-registeredConsumer<ServerPlayer>invokable by id from any action slot the DSL already supports (active_ability.on_use,action_on_event,condition_passive,chance,choice, …). Register viaNeoOrigins.registerCallback('mypack:foo', player => { ... }).- JS-defined power types —
neoorigins:js_custom(passive,onGranted/onRevoked/onTick) andneoorigins:js_active(extends the AbstractActivePower contract,onUsereturning a boolean to consume cooldown/hunger). Register a handler object literal — Rhino auto-adapts to the Java interface, missing hooks default to no-ops. mount_endedcovers all dismount paths — vanilla sneak-dismount, vehicle death, server stop, and force-mount swap all fire via anEntity#removePassengermixin, scoped to mounts created by our power (non-emptymountPositionattachment) so vanilla horses don't trip the event.- Hot-reload safe —
/kubejs reloadwipes registered callbacks and JS power handlers via the plugin'sclearCacheshook.
Mount Power
New neoorigins:mount active power — ride any living entity, with a
consent system for player-to-player mounts.
- Raycast pickup with configurable range; press the keybind a second time while riding to dismount.
- Player consent with three modes:
ALWAYS(immediate),TEAM(immediate if same FTB Teams team or Open Parties & Claims party — falls through to prompt otherwise), andPROMPT(chat request with clickable[ACCEPT]/[DECLINE], configurable timeout). Configured under[mount]inneoorigins-common.toml. - Mob mounts —
allow_mobstoggle,block_bossesflag to refuse Wither / Ender Dragon, and a check that the target isn't already carrying a passenger. mount_positionfield —centered(default) orshoulder, offsetting the passenger ~0.4 blocks to one side./neoorigins mount acceptand/neoorigins mount declineresolve pending prompts. Soft compat: FTB Teams and Open Parties & Claims detection is gated behind the same load-check pattern as our other compats, so neither mod is required.
Internal
- Origin layer canonicalized on
neoorigins:origin. The layer id emitted for built-in origins is now namespaced under our mod consistently instead of straddlingorigins:originandneoorigins:origin. Existing user packs that pin the old layer continue to load through the compat translator.
Optional dependencies
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:RUtQ9kfe:piaExMeu"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:RUtQ9kfe:piaExMeu"
}


