promotional bannermobile promotional banner

NeoOrigins

A modern port of Origins
Back to Files

NeoOrigins v2.2.28 (MC 26.1.x)

File nameneoorigins-2.2.28+26.1.jar
Uploader
CyberDayCyberDay
Uploaded
Sep 25, 2026
Downloads
75
Size
11.7 MB
Mod Loaders
NeoForge
File ID
8975102
Type
R
Release
Supported game versions
  • 26.1.2
  • 26.1.1
  • 26.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:neoorigins-1495375:8975102"

Learn more about Curse Maven

What's new

A large fixes release, and one of them is a crash. On 1.21.1, installing a resource pack built from our own theme template could kill the client at boot, or stop a server loading its datapacks, and the template shipped in a state that triggered both. All three are fixed, and a theme whose panel texture is missing now falls back to the parchment panel instead of stretching the missing-texture checkerboard across the origin screen. Elytrian now wears its wings folded on its back instead of showing them only mid-glide (#130), through a new third setting on render_elytra that every editor offers as a dropdown, and on 26.1 and 26.2 a chestplate no longer hides power-granted wings. The Rogue's one Class Skill key now goes to Step Assist, so the switch the Rogue gained in 2.2.26 can finally be pressed, and sneaking stops a step-assisted player at a ledge again (#134). The slime's bounce keeps a running player's speed, and a jump or a short drop no longer sets it off (#133). Resource bars stay on screen until you spend the resource for the first time (#105), come back by themselves after a /reload, and one player losing a resource power no longer takes every other holder's bar with it. The wraith's client and server now read its blocked-block list the same way (#109). Several fixes change what players feel without any visible change to the origin: power modifiers stopped adding another copy of themselves on every death and relog, the Sporeling's Fungal Contact heals only on mushroom blocks and mycelium as its description says, the Slime's tier-2 Sticky Aura slows things for the first time, and two powers that could never fire now do, one of them a Piglin downside. The Lumberjack pays its bonus planks for every wood rather than only oak. The three Dragon Survival origins can be picked at all now, and a random roll will not turn you into one. The in-game creator stops offering an operation that its own maths reads as an addition, the web editor's block view stops quietly rewriting the powers it loads, and both editors gained fields they could never author. Fish counts as meat for the Origins-compatible carnivore and vegetarian diets. Every config option and every entity has an English name, where the config screen had been drawing raw keys for a couple of hundred of them. The One Probe works on 26.1 and 26.2 for the first time, FTB Quests tag-marker rewards grant again on 26.1, and KubeJS scripts can read a player's resource values on 1.21.1 and 26.1.

Supports: Minecraft 26.1.x (Java 25) · Minecraft 26.2 (Java 25) · Minecraft 1.21.1 (Java 21)

  • Elytrian keeps its wings on its back (#130). Wings drawn by a flight power appeared only while the player was gliding, so an origin whose whole body plan is wings looked wingless the moment it landed. Elytrian now shows them folded on its back whenever its flight power is active, and spreads them in a glide as it always has. The other flying origins are unchanged: Phantom, Hiveling and Draconic still show wings only while gliding, and Windwalker still shows none. The setting behind this is described under Pack Author Features.

  • The Rogue's Class Skill key goes to Step Assist. A class gets exactly one Class Skill key, and it goes to the first power in the class that can be activated. The Rogue listed Stealth ahead of the Step Assist switch it gained in 2.2.26, so Stealth took the key and Step Assist could not be switched at all. Step Assist is now first. Stealth is still granted and works as before (sneak for ten seconds and you turn invisible), but it no longer has a key, so it stays on.

  • A toggle no key can reach is switched back on when you log in. A Rogue who switched Stealth off before this release would otherwise be left with it off and no way to turn it back on short of changing class. At every login, any NeoOrigins toggle power whose switch is not bound to a key has its off state cleared, which returns it to on. Origins-format origins:toggle powers keep their state separately and are not included. That includes toggles set to start off with default_off, since without a key there is no way to switch those on either. A power counts as bound when it holds one of the six Skill slots, the Class Skill slot, or a named hotkey of its own. Two cases are left alone. Nothing is changed while Suppression is in effect, because Suppression switches toggles off on purpose, and a toggle that does have a key keeps whatever you last set it to.

  • Stealth and the Rogue are described by what they actually do. Stealth's description promised that attacking from behind deals double damage, and the Rogue's promised devastating backstab damage. Neither was ever true: Stealth turns you invisible after ten seconds of sneaking and stops a mob picking you as a new target while you are invisible, and the separate Backstab power is a flat +2 attack damage while sneaking, whichever way you are facing. Both strings now say that. Nothing about combat changes. The two corrected strings are English for now, and the other eleven languages fall back to the English text rather than showing a stale promise.

  • The slime's bounce leaves jumps and short drops alone (#133). The bounce triggered on an ordinary jump, and on a drop of a single block. It now needs the impact of a fall of four blocks or more: a jump and a drop of up to three blocks land normally, and anything from four blocks up still bounces. A jump off a ledge counts from the top of the jump, so jumping off a drop of more than two blocks still bounces. The threshold is min_velocity on neoorigins:bounce_on_land, and its default moved from 0.3 to 0.63.

  • A resource bar stays on screen until you have spent it once (#105). Bars hide while they are full, so a bar that starts full was invisible from the moment the origin was picked, and a new player had no way to know the resource existed. A full bar now stays on screen until that resource drops below full for the first time, and from then on it hides when full as before. The reminder starts over each time your origins are re-sent to you, which includes joining, respawning and picking an origin. Bars set to always_render are unaffected.

  • Fish counts as meat for the carnivore and vegetarian diets. The Origins-compatible origins:carnivore and origins:vegetarian diets both decide what is meat from the neoorigins:meat_foods tag, and that tag held no fish, so a carnivore origin from an Origins pack could not eat cod while a vegetarian one could. The meat tag now includes neoorigins:fish_foods, so fish is food for the carnivore and refused by the vegetarian. None of the built-in origins use either diet.

  • The ocean origins eat modded fish that sit outside the common tags. Alex's Mobs raw and cooked catfish, blobfish, flying fish and cosmic cod, and Ocean's Delight's fugu slice, are fish that sit outside the fish tags this mod reads, so the ocean origins' fish-only diet refused them. They are now listed in neoorigins:fish_foods directly, which makes them food for Abyssal, Kraken, Merling and Siren, and, through the change above, for a carnivore.

  • An installed theme could crash the 1.21.1 client at boot. A font file that points at another font, which is how a theme reuses the mod's parchment typeface, puts one TrueType provider into two fonts and so hands one FreeType face to two threads: the font manager finishes each font on its own worker. On 1.21.1 nothing guarded that face, and the client died during loading with a FreeType error, a native heap corruption, or an access violation in freetype.dll, differing from run to run. A client mixin now locks the face around both glyph reads, which is what 26.1 and 26.2 already do in vanilla. The theme template, which shipped exactly such a font file and therefore crashed the client the moment it was installed unmodified, no longer sets a font at all: it keeps Newsreader as before, and the recipe for shipping your own TTF moved to a placeholder file alongside it.

  • A theme pack could stop a 1.21.1 server loading its datapacks. Both theme managers built their instance during class initialisation and handed the reload listener a parser that had not been created yet, so the listener's parser was null and the first JSON file it touched threw. A datapack carrying data/<namespace>/neoorigins/active_theme.json failed the whole server load with "Failed to load datapacks", and a resource pack carrying assets/<namespace>/ui_themes/*.json broke the client's resource reload. The theme template triggered both. Both managers now build their own parser. 26.1 and 26.2 read theme files a different way and never had this fault.

  • A theme with a missing panel texture draws the parchment panel instead of a checkerboard. A theme whose panel_background names a file that no loaded pack ships used to bind the missing-texture checkerboard and stretch it across the entire origin screen panel, which is what the template did out of the box because it ships a placeholder where panel.png goes. The theme now keeps the parchment panel and its 9-slice geometry while keeping its own colours and font, and logs a single [theming] warning naming the path it could not find. Flat themes never draw a texture and are untouched.

  • Sneaking stops a step-assisted player at a ledge again (#134). The game decides whether sneaking should hold you at an edge by looking for floor as far below your feet as your step height reaches. A step height that clears a full block therefore found the floor beneath a one-block drop, concluded there was no ledge, and let you walk off it. While you are sneaking, that one check now looks only as deep as your unmodified step height, and only for players whose step height one of our powers has changed. You still step up as high as the power allows, and Step Assist can stay on.

  • The slime's bounce stops killing a running player's speed (#133). Every bounce set the player's sideways speed to zero, because the server was reading a movement value that the client never sends it and that is always zero on the server. A running slime stopped dead on every landing, which is also why a chain of bounces ended up happening on the spot. The bounce now carries the sideways speed you landed with.

  • The Slime's Sticky Aura slows what is near it. The tier-2 aura wrote its effect as loose effect, amplifier, duration and exclude_self fields directly on the area_of_effect action, which reads none of them. With no entity, bientity or block action to run, the action compiled to nothing and the aura had never slowed anything. It now writes the effect the way the other built-in auras do: every second, everything within three blocks other than the Slime itself gets Slowness I for two seconds. It was the only shipped power written in that shape.

  • Power modifiers stop stacking on every death and relog. Four kinds of modifier added a fresh copy of themselves each time a player respawned or logged back in, without removing the one already there: the native modify_lava_speed, and the Origins-compatible modify_lava_speed, modify_xp_gain and modify_food. On 26.1 and 26.2 modify_xp_gain had no effect at all before this release (see Compatibility), so there it never grew. A power balanced for one copy therefore got stronger with every death. Each one now replaces its own entry. A pack that was tuned against the grown value will find its powers back at the strength its file actually says.

  • A /reload no longer takes every online player's resource bars away. A reload clears the registered resource information and rebuilds it from the datapack, but the native neoorigins:resource only registered itself when a power was granted or a player logged in, and the Origins-compatible origins:resource registered its backing only on grant. Every player already online therefore lost the bar until someone relogged: a plain resource dropped off the HUD entirely and a mana-backed one read as unbacked. Stored values were never affected. The sync that follows a reload now re-registers each online player's resources and re-sends their bars, and the compatible form registers its backing as it is parsed, so the reload itself restores it.

  • One player losing a resource power no longer takes it from everybody. Resource information, mana backing and cooldown durations are keyed by the power rather than by the player, and are shared by everyone who holds it, but revoking the power from one player deleted the shared entry. Every other holder lost their bar at the same moment: a mana-backed bar vanished from the HUD and an Apoli resource lost its bounds, until the next relog or reload. A revoke now clears only that player's own state. Separately, the HUD sync was sending every mana-backed bar to every player because it walked the shared table; it now sends a bar only to players who hold the power. The value shown was always the player's own mana.

  • The Lumberjack's bonus planks cover every wood, not just oak. The power set an item_id field that craft_amount_bonus never reads, so it fell back to the default output of oak planks and every other plank recipe paid nothing. The Lumberjack now names the #minecraft:planks tag and the bonus copies whatever you crafted, modded planks in that tag included.

  • The wraith's client and server agree about blocked blocks (#109). A wraith that phases into a block it is barred from, such as obsidian or bedrock, is meant to be pushed back out by ordinary collision. The server stopped the phasing while the player was inside such a block, but the client kept phasing, so the two sides disagreed about whether the player was being pushed out at all. Both sides now use one rule for that decision and one reading of the blocked list.

  • Fungal Contact heals only on mushroom blocks and mycelium. The Sporeling's healing power wrote its block list under a field the condition never reads, and a condition with no block list matches any block, so it healed 1 health every second everywhere. It now heals while you stand on, or have your feet inside, a red or brown mushroom block, a mushroom stem or mycelium, which is what its description has always said.

  • Mushroom Symbiosis and Soul Dread now work. Both named a biome tag that does not exist, so neither could ever fire. Mushroom Symbiosis asked for minecraft:is_mushroom, and the mushroom biome tag is c:is_mushroom, so the Sporeling now gets its Regeneration in mushroom fields. Soul Dread asked for a tag called minecraft:soul_sand_valley, which is the name of a biome, and it now names the biome. Soul Dread is a Piglin downside, so this fix makes the Piglin weaker: Piglins now take the 0.5 damage a second in a Soul Sand Valley that the description promised.

  • The three Dragon Survival origins can be picked. Cave Dragon, Forest Dragon and Sea Dragon shipped in no layer file at all. The picker builds its rows from the layer's own origin list and the server refuses a choice the layer does not offer, so none of the three could be chosen even with Dragon Survival installed, and only /neoorigins set reached them. They now sit in neoorigins:origin. Without Dragon Survival their required_mods gate keeps them unloaded and nothing changes for packs that do not have the mod.

  • A random origin will not turn you into a dragon. With the dragons now listed in a layer that also allows random, rolling for an origin could land on one. Layers read exclude_random (described under Pack Author Features) and the shipped layer excludes the three dragons, which stay directly pickable. The same change made the Random button and the server's own random assignment draw from one pool: server assignment now honours layer conditions, content toggles and unchoosable, all of which it ignored before.

  • Power-granted wings show under a chestplate on 26.1 and 26.2 (#130). So that it never draws a second pair on top of a real elytra, the wing layer steps aside when the chest slot holds one. On the 26.x lines its test for an elytra matched any armour worn in that slot, so wearing a chestplate hid the wings completely. It now steps aside only for an actual elytra, which is what 1.21.1 has always done.

  • on_block honours inverted. An on_block whose block condition was a single block, a tag, or an and/or group ignored the inverted flag on that node, so a condition written as "not standing on stone" still matched stone. Every node now honours it, at the top and at any depth, the same way in_block already did. You still have to be on the ground for on_block to match, whether or not the block is inverted. One smaller change comes with it: an or group containing a block condition that cannot be read now fails as a whole, where it used to ignore that one entry.

  • An inline block condition applies inverted once instead of twice. A condition written as a single node with the block and the flag together, {"type": "block", "block": "stone", "inverted": true}, was negated by the parser and then negated again by the compiler, so it matched stone. It now negates once. The wrapper form, where an outer node holds a nested block condition, was always correct: those are two separate nodes and each flag still applies to its own.

  • The block entity condition reads a root-level tag. The condition documents a tag written at the top of the node, and packs write it that way, but the shared compiler only looked for one nested under in_tag. Such a node compiled to nothing, which made the entity condition permanently false and made a nested block condition match no block at all. The tag is now read where the documentation says to put it.

  • The in-game creator stops offering speed operations that turn into additions. On modify_lava_speed and modify_flight_speed, the operation dropdown listed the attribute operations add_value, add_multiplied_base and add_multiplied_total. Those powers only understand addition, multiply_base and multiply_total, and read anything else as an addition, so picking the obvious multiplier silently produced an addition. The dropdown now offers the three the power reads. If you saved one of these powers from the in-game creator, check its operation: a file that already says add_multiplied_base or add_multiplied_total is still read as an addition. The same fix means the change_resource action and Cold Sweat's modify_temperature now offer set alongside add, and the equipped_item condition's slot now offers accessory.

  • The web editor's block view stops rewriting the powers it loads. The block view rebuilds the powers it holds whenever the canvas changes, and anything a block had no widget for was dropped on the way. Loading the built-in powers and making no edit at all was enough to change some of them: the nested inverted flag came off Windwalker's Cloud Steps, the Qi Cultivator's Dantian Expansion and the Iron Monk's Stamina, and the bare "tag": "minecraft:swords" item condition came off Sword Immortal powers, so those no longer required a sword. Each block now keeps what it cannot display and writes it back unchanged, including a value its dropdown has no entry for, until you change that field yourself.

  • The web editor's built-in powers and origin templates match the mod again. Both had fallen behind what the mod ships. The power catalogue still gave Elytrian's flight as true, and the origin templates were older still, with the Caveborn diets missing their tiers and the Rogue's Parkour missing the Step Assist toggle that now gates it. Both are regenerated, and a new check in the editor's tooling fails when either falls out of step with the mod.

  • The web editor says when a power type has no form. Many of the power types the editor offers have no form of their own, so the form shows only the common fields. The note meant to explain this could never appear, and it pointed at the JSON Preview, which is read-only. It now appears for every such type and says what is true: the mod accepts the type, only the common fields can be set in the editor, fields already in an imported file are kept, and anything else has to be written in the power's JSON and imported.

  • The origin picker shows which unique origins are already taken (1.21.1). When a pack marks an origin as unique, the server tracks who has claimed it and sent that list to the client, but nothing on the client read it. The picker offered a claimed origin anyway, let you confirm it, and the server's refusal arrived as a line of chat, leaving you on an empty layer with no picker to try again. Claimed origins are now shown as claimed, with the name of the player holding them; Confirm is disabled on them and the Random button skips them. The server remains the authority, and a refusal now resyncs you and reopens the picker rather than stranding you. Claims reach every online player as they change and on login, instead of only when a picker opens, so an open picker updates while you are looking at it. This one is on the 1.21.1 line only for 2.2.28; the client that reads the claims does not exist on 26.1 or 26.2 yet.

  • Every config option and every entity has an English name. The in-game config screen looks a label up by the option's own name rather than by its full path, and 91 entries in the English file were written with the full path, so the screen never read them and drew the raw key instead. Together with options that had no entry at all, that left 234 labels unnamed on 1.21.1, 229 on 26.1 and 228 on 26.2: thirteen section titles including Hotkeys, HUD and Compatibility, the content toggles for nine origins, around 110 power-override sections and the 76 shared field names beneath them, and every client, gameplay and admin option that had been added without one. Nine entities, the black hole, tornado and thrown sword among them, had no name on any line and showed their registry id wherever the game named them. All of them are named now.

  • render_elytra takes "never", "flying" or "always" (#130). The field on elytra_flight, natural_glide and flight was a plain true or false: wings during a glide, or no wings. "always" draws the wings, folded, whenever the power is active, and spreads them in a glide. "never" and "flying" are the word forms of false and true, and both booleans keep their exact meaning, so existing packs and Origins imports are untouched. Defaults are unchanged: "flying" on elytra_flight, "never" on natural_glide and flight. The in-game creator and both web editor views offer the three as a dropdown, and a file written with true or false opens on the matching entry, with the creator's tooltip naming the real default. Saving writes the word. NeoOrigins 2.2.27 and earlier read only a boolean here, so a pack that has to load on an older version should keep true or false.

  • Layers take exclude_random. This is the Origins-format list of origin ids that a random roll never lands on, while leaving them directly pickable. A layer file added on top of another adds to the list rather than replacing it. The shipped origin layer uses it for the three Dragon Survival origins.

  • craft_amount_bonus takes a #tag as its output_item. The bonus then copies whatever was crafted rather than always producing the one named item, which is what a "more planks from logs" power needs in a world with more than one kind of wood. The default is still oak planks, and naming a single item behaves exactly as before.

  • Every block condition can be inverted in the editors. With on_block fixed, in_block, on_block and the compatibility loader's block compiler all honour inverted, so each block-condition type in the schema now carries it as an optional flag, default false. The in-game creator and both web editor views can set it on any node.

  • spawn_projectile_rain offers telegraph_ticks in both editors. The action has read the field since it shipped, and the documented example sets it, but no editor declared it, so the lead-in before the first projectile lands could only be authored by hand. It is now an integer field carrying the parser's own default of 14.

  • persistent_effect offers its root-level shorthand in both editors. The power accepts a single effect written at the root as a one-entry list, with ambient, show_particles and show_icon beside it as defaults for every entry, and 36 shipped powers use that form, but only the root amplifier was ever declared. All four are now authorable, with the decode's defaults. The status_effect alias inherits them instead of carrying its own copies, and stacking_status_effects gains them too.

  • The bundled example packs and the theme template load on 26.1 and 26.2. The packs in the repository that an author copies from all declared 1.21.1's pack formats, so on the 26.x lines they loaded as too old, and slime-morph-example declared a resource-pack format without the bounds the data-pack parser requires above 81, so it failed to load at all. Each now declares the format of the line it sits on, with example-pack and the theme template, which are both resource and data packs, declaring the full supported span. These sit in the repository rather than inside the jar, so nothing about a player's install changes.

  • Five power types stop being rewritten out of their own behaviour. A salvage step meant for misspelled types was rewriting neoorigins:action_on_kill, action_over_time, food_restriction, night_vision and status_effect into their Origins-compatible forms before the alias table, which handles all five correctly, ever got the chance. The compatible readers ignore the fields those types document: an action_on_kill written exactly as the docs show it never fired at all, and an action_over_time lost else_action, toggleable, default_off and its enabled switch. Salvage now leaves alone any type the alias table already knows. Shipped content is unchanged: the 22 night_vision and 3 food_restriction powers load to exactly what they did before.

  • origins-classes:more_planks_from_logs covers every wood. It translated to a bonus with no output named, which meant the default of oak planks, so every other plank recipe paid nothing. It now names the #minecraft:planks tag and pays in whatever you crafted. The bonus count is unchanged.

  • The compatibility loader reads four block condition fields it used to ignore. fluid, light_level, exposed_to_sky and movement_blocking have compiled correctly in in_block and on_block since 2.2.24, but the Origins-compatible loader has its own block compiler, and there all four fell through to a branch that matches every block. That compiler serves action_on_event block filters, prevent_block_use, prevent_sleep, block_collision and the area_of_effect block filter, so a condition using any of the four was silently always true in all five. No shipped power writes any of them.

  • origins:modify_xp_gain changes the XP a player gains (26.1 and 26.2). The power loaded on these lines, but nothing read it, so it never changed any XP. It now applies, as it always has on 1.21.1.

  • Config power_overrides reach the water-damage and slow-regeneration powers (26.1 and 26.2). The overrides ran after the alias table had already read and removed the fields they target, so a server owner's multiplier, damage_per_second or include_rain for those powers was silently ignored. They now run first, as they always have on 1.21.1. A server that set one of these will see it take effect.

  • /reload does not restore some powers for players already online. A reload clears the per-player tables behind modify_lava_speed (native and Origins-compatible) and the Origins-compatible modify_xp_gain, modify_food, modify_crafting, prevent_item_use, prevent_block_use, prevent_entity_use, prevent_sleep and restrict_armor, and nothing refills them until the player dies, relogs or is granted the power again. Among the built-in origins this affects the Draconic's Molten Stride, which stops speeding up lava swimming until the next death or relog. This is unchanged in 2.2.28.

  • The One Probe is supported on 26.1 and 26.2. The integration was 1.21.1 only because The One Probe published no 26.x build. It now does, and the API and the handshake are unchanged, so the same provider runs on all three lines. EMI still has no 26.x build, so that integration stays on 1.21.1.

  • FTB Quests tag-marker grants work again on 26.1. FTB Quests 26.1.2.x dropped the event and the Architectury layer our hook bound to, so with it installed the mod warned at every boot that tag-marker rewards were inert, and a quest tagged neoorigins_loot_pool_grant:<table> granted nothing at all. A typed listener now handles the quest-progress event that 26.1 posts on the NeoForge bus, loaded only when FTB Quests is present, and the older hook stays as the fallback. The 1.21.1 and 26.2 lines are unchanged.

  • KubeJS scripts can read a player's resource values (1.21.1 and 26.1). NeoOrigins.getResource(player, id) returns the current value, or null when the player does not have that resource, so a missing resource never reads as an empty one. NeoOrigins.hasResource(player, id) says whether they have it. The id is the resource power's full id, the same one /resource get takes. A bar backed by Iron's Spells mana reports that player's live mana. Both are read-only. The 26.2 build does not bundle KubeJS support, so neither is available there. See KUBEJS.md.


This mod has no additional files