Tags
Creators
Details
v2.1.0+26.1
Compatibility
Changes
NeoOrigins v2.1.0 - Patch Notes
Built for Minecraft 26.1 / 26.1.1 / 26.1.2 and 1.21.1 with NeoForge.
In-Game Origin Creator
A fresh tabbed GUI for authoring player origins without hand-writing JSON. Identity / Powers / Appearance / JSON tabs. The form renderer covers every native power type - a structured schema branch where one exists, falling back to codec reflection for the rest, so there are no gaps. Output writes a real datapack at <world>/datapacks/neoorigins_custom/; saved origins flow through the normal datapack reload, and the GUI has an explicit Apply button so authors control the reload hitch.
-
Item picker for the icon field - registry-backed and searchable, so modded items appear free. Optional SNBT components.
-
Per-field hover tooltips sourced from the schema and
docs/schema/field_docs.jsonso every form field has at least a short hint. -
Raw-JSON escape hatch - per-power "raw" toggle for authors who want to drop straight to JSON for a single power.
-
Live JSON preview mirrors the draft as it would land on disk; a built-in problems panel runs the same validation the server applies on save.
-
Server-authoritative writes - open / save / apply gate on permission level 2 or creative (integrated server only), so non-OP clients can't drive the creator on a dedicated server.
Opened via /neoorigins editor or the "Open Origin Creator" keybind (unbound by default).
Mob Origin System
Origins for mobs. Pack authors and ops can attach a bundle of powers plus custom drops to any non-player LivingEntity. Origins live at data/<namespace>/origins/mob_origins/<id>.json.
-
Weighted spawn rules - per-origin filters for entity type / entity tag, biome, biome tag, structure, structure tag, dimension, Y range, light range, time-of-day, and the spawn-reason set; mutex groups so two origins can't both attach to the same spawn; optional
replaceflag for overriding another origin mid-spawn. -
neoorigins:mob_behaviorpower - configurable per-origin aggression. Modes: neutral / hostile / conditional (triggered by an entity-condition list with throttled re-evaluation). Wires the vanillaNearestAttackableGoal/HurtByTargetGoalautomatically. -
Per-origin drops - additive or replace; either independent-chance per entry or weighted-pool sampling. Layered onto vanilla loot via a global loot modifier. Carrier files live in the world datapack for portability - copy
neoorigins_custom/to another NeoOrigins instance and drops keep working. -
Spawn-egg minting -
/neoorigins mob egg <origin> [entity_type] [count]mints a vanilla spawn egg pre-attached to the origin. Right-clicking the egg on a vanilla spawner reconfigures the spawner's next-spawn so every subsequent spawn inherits the origin too.
In-Game Mob Origin Creator
Same Creator framework as the player side, one package over. Identity / Powers / Spawn Rules / Drops / JSON Preview tabs. Open with /neoorigins mob editor or the "Open Mob Origin Creator" keybind (unbound by default).
Cross-Mod Status-Effect Reactions
neoorigins:action_on_event gains a new effect_applied event so pack authors can react to (and probabilistically cancel) any mob effect landing on the player - including effects from other mods. Pre-dispatch filters by exact id (effect) or tag (effect_tag); the usual condition block runs after the filter for things like a random_chance resistance roll. Cancel the effect with the existing neoorigins:cancel_event action.
-
Post-cleanse grace window - optional
immunity_ticksfield grants N ticks of full immunity to the same effect id after a successful cancel, so probabilistic resistance feels like a real cleanse: a 90% roll holds for ~2 seconds rather than re-rolling on every individual bite. -
Use case - drop-in compat with infection-style mods (e.g. Fungal Infection: SPORE's
spore:mycelium_ef) without a bespoke power type per mod. Same hook covers debuff-pruning antidotes, "resist this potion" talents, particle reactions to incoming buffs, and so on.
Bug Fixes
-
Mob-origin spawn egg crashed the server on world save when held in inventory. The egg's NBT was missing a required
idfield that vanilla'sENTITY_DATAcodec validates at encode time. -
Mob-origin spawn eggs didn't attach the origin in survival. Vanilla's spawn-egg NBT-injection is gated to creative plus permission 2; the minted egg now spawns the mob through a custom path that bypasses the gate and applies the origin directly on the returned entity.
-
Mob-origin spawn eggs didn't propagate the origin to vanilla spawners. The spawner's next-spawn block didn't copy the egg's
ENTITY_DATA; the egg now reconfigures the spawner with the origin marker so every subsequent spawn inherits it. -
All origins silently failed to load on world startup (26.1 only) - the icon codec read item components that weren't bound yet during the early datapack reload, NPE'd, and aborted parsing for the entire origin. All origins fell out silently with a
0 origins loadedlog line. Origins now load with empty icons during the early reload and re-resolve their icons onServerStartingonce components are bound. -
Elytrian-style flight powers triggered the vanilla elytra wind sound even when the player wasn't wearing an elytra. The fall-fly sound is now suppressed unless the chest slot actually contains
minecraft:elytra. -
Piglin "Fire Ward" was redundant - base Piglin already had blanket fire/lava immunity, so the tier-3 evolution overlay added nothing. Base immunity removed; the apex overlay actually grants new resistance now.
-
Hiveling "Liftoff" and Elytrian "Fragile Frame" had no display names. Lang keys added.
-
Origin re-selection bypass - non-OP players could reset their chosen origin for free via
/origin guior a craftedChooseOriginpacket, skipping the Orb of Origin XP cost and orb consumption. Re-selection now requires an Orb commit, an OP-granted re-selection, or sender-OP. -
Creator validation false-rejected modded ids - origins referencing modded items / attributes / entities or dynamic registry contents (biomes, dimensions) were incorrectly flagged as invalid on save. Validation now consults the live
RegistryAccess. -
Blacksmith / Cook crafted equipment lost its base stats. Quality Equipment Power was seeding from the raw
ATTRIBUTE_MODIFIERSdata component, which is usually empty on freshly-crafted vanilla items (their base stats come from the item's default modifiers, not a component patch). The subsequent component-set wiped the base armor toughness, mining speed, or attack damage and left only the Blacksmith bonus on top - so a crafted iron chestplate would show toughness 1 with no armor value. Now seeds fromItemStack#getAttributeModifiers()(the resolved effective modifiers), so base stats are preserved and the quality bonus stacks on top. -
/attributecommands targeting vanilla attribute ids returned "Can't find element" when this mod was loaded. The legacy-command rewriter (which fixes 1.20-era Origins++ mcfunction syntax to 1.21+) was running on every command, including modern ones, and silently corrupting attribute references in the process. Now gates on whether the original command already parses cleanly - if vanilla can resolve it, the rewriter leaves it alone and only intervenes on commands vanilla rejects. -
Size-scaling powers left the player permanently rescaled after an origin change. The clear-on-revoke step was using a per-power id derived at dispatch time, which doesn't always resolve to the same value during a revoke triggered by an origin swap or orb reroll - the modifier we added and the one we tried to remove didn't match, so the scale stuck. Now clears any
neoorigins:size_*modifier by prefix sweep across the scale and interaction-range attributes, regardless of which power originally set it. -
neoorigins:crop_harvest_bonusduplicated logs from world-gen trees, stripped logs, and player-placed log walls. The bonus is intended for chopping naturally-grown wood. It now skips stripped logs entirely (registry-id prefix check onstripped_) and tracks logs placed by hand in a per-chunk attachment so breaking your own log walls back down doesn't dupe the materials. Naturally-generated trees and player-grown trees from saplings still earn the bonus - tree generation places logs via the feature system, not the player place path.
Commands & Config
-
Canonical NeoOrigins command surface is now
/neoorigins. The/origincommand-tree alias is no longer registered (it claimed the Origins mod's namespace, which isn't ours). Tab-complete and/helpwill only suggest/neoorigins .... Existing mcfunctions or chat habits that still use/origin set @p ...,/origin mob apply ..., etc. continue to work via the compat layer -LegacyCommandRewritertransparently rewrites the leading verb so dispatch succeeds. The real Origins-mod-compat commands (/resource,/power) are untouched. -
New
/neoorigins mobsubtree -apply,clear,get,editor,egg. Permission level 2 required. -
In-game origin creator gated - open / save / apply requires permission level 2 or creative (integrated server only); rate-limited per player to prevent payload spam against the reload pipeline.
-
Custom-pack file paths hardened - the writer enforces a strict id grammar and verifies all output stays inside the
neoorigins_custom/folder before writing anything.
Documentation
-
New
docs/MOB_ORIGINS.md- pack-author reference for the mob origin format (every field ofMobOrigin,EntityTargetSpec,SpawnRules,DropRulesdocumented with type, default, example). -
New
effect_appliedevent entry indocs/EVENTS.md, with its filters and grace-window semantics. -
docs/POWER_TYPES.md- extended theneoorigins:action_on_eventfield table withblock_condition,effect,effect_tag,immunity_ticks; addedEFFECT_APPLIEDto the event categories; new example showing 90% mycelium resistance with a 2-second grace window. -
Schema (
docs/schema/power.schema.json,field_docs.json) extended for the new fields.
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:yQc5M3Bd"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:RUtQ9kfe:yQc5M3Bd"
}


