promotional bannermobile promotional banner

Fabricated: Fabric mods on NeoForge

A lightweight mod & translation layer enabling Fabric mods and libraries to run on NeoForge.
Back to Files

Fabricated 0.6.0-beta.2 for NeoForge 26.2

File namefabricated-neoforge-0.6.0-beta.2-mc26.2.jar
Uploader
cmdralphcmdralph
Uploaded
Nov 10, 2026
Downloads
10
Size
2.1 MB
Mod Loaders
NeoForge
File ID
9540055
Type
B
Beta
Supported game versions
  • 26.2

Curse Maven Snippet

NeoForge

implementation "curse.maven:fabricated-neoforge-1775427:9540055"

Learn more about Curse Maven

What's new

Beta. Fabricated runs Fabric mods on NeoForge and Forge. Many Fabric mods work; some still don't. Back up your worlds.

The second beta adds Minecraft 1.21.1 on Forge (Forge 52), held to the same bar as every other platform, and runs one test suite on every loader and Minecraft version. It fixes what Fabric mods with deep hooks met on Forge, and its jars are uploaded to CurseForge too. It covers NeoForge (1.21.1, 1.21.11, 26.1.2, 26.2, 26.3), Forge 61 to 66 (1.21.11, 26.1.2, 26.2, 26.3), Forge 52 (1.21.1) and Forge 47 (1.20.1).

Highlights

  • Minecraft 1.21.1 on Forge. Forge 52 joins Forge 47 on forge-legacy, with the gates and refusals the other Forge versions have: the server and the client with Fabric API and the renderer API test mod, Fabric's renderer API through Indigo, the Fabric builds of Sodium and Iris, malilib's set, Essential and Flashback. Most of its code is Forge 47's or Forge 61's, shared rather than copied.
  • One test suite everywhere. Every loader runs the same test mods for its Minecraft version, through one CI workflow and harness; a check a platform can't pass is listed in ci/checks.tsv with the reason.
  • Fabric mods with deep hooks on Forge. The advanced corpus (world generation, gameplay systems, replays, server tools) now runs on every Forge version. What it and the main corpus met there is fixed, for Origins, FrozenLib, ReplayMod, Carpet, Cobblemon, BetterEnd, BetterNether, BCLib, WorldWeaver, Moonlight, Friends and Foes, Lithium, MoreCulling, Balm, YUNG's Extras with Biomes O' Plenty, Debugify, ShulkerBoxTooltip and Emotecraft, but for Wover Story on Forge 66 (REG-13).
  • A startup and memory benchmark in CI. Each version's server measures what Fabricated's discovery allocates (in a first launch and, on NeoForge, a cached one) and the live heap once started; a metric more than 10% over its recorded baseline fails the change unless it records the new value with its reason. Discovery's log line and the report's Launch timings now say what the JVM allocated too.
  • Every jar named alike, on GitHub and CurseForge. Each jar is fabricated-<loader>-<version>+mc<minecraft>.jar, with the full version; the NeoForge jar was fabricated-0.6.0+mc<minecraft>.jar. The release uploads exactly the jars its full matrix tested.

What changed on every platform

  • Pre-flight judges more of what Mixin does: the mixin configs a mod's code adds by name are checked as listed ones (MIXCFG-1); an injector selecting every method of its target (WILD-1), or naming several methods of which another mod's mixin adds the one that exists (PRE-23), is judged as Mixin judges it; a hook at every match of a call or field access that the platform's patch repeats on the same path is pinned to vanilla's one (VANILLA-4); an injector into an override the platform moved to an overload follows it there (PRE-24); a @ModifyVariable whose ordinal is past the locals Mixin can see gets vanilla's local's ordinal where vanilla's code tells, and otherwise fails pre-flight instead of the launch (PRE-25); and a mixin config asking for a Java level above the game's is lowered to it (LEVEL-2).
  • Lithium's Fabric build: pre-flight leaves out its mixin replacing the platform's map of point-of-interest states with a copy, which left types registered later unknown to the game (on Forge, and on NeoForge a NeoForge mod's); Lithium loses only that optimization (POI-2).
  • Security and robustness review: a class claiming a huge attribute disables its mod instead of stopping discovery where the platform runs ASM 9.8 or older, as NeoForge 1.21.11 does (SEC-6); an action waiting for the entrypoints that throws stops no other (SEC-7); the test that keeps Fabricated off the network also sees method references and class literals (SEC-8); a directory entry a jar repeats with no content is accepted (SEC-11, ReplayMod 1.20.1); and on Forge, Fabricated's language provider is no longer deleted from the cache every seventh launch (CACHE-4).

What changed on NeoForge

  • Fabric API's armour renderers run on 1.21.1 (ARMOR-1): their hook is at the start of a method NeoForge deprecated for an overload, and moves to the overload. Figura's hooks there move too, so it loads on 1.21.1's advanced client (PRE-20).
  • A Fabric jar with a module descriptor (module-info.class) could stop every mod loading; the descriptor is left out, as Fabric's class path ignores it (SEC-10).

What changed on Forge 61 to 66

  • The /fabricated command, and Fabric mods' plugins for recipe viewers, tooltip mods and Simple Voice Chat, work on Forge: CI checks WTHIT's and Simple Voice Chat's Forge builds; JEI, REI and Jade have none for these versions.
  • Biomes: a Fabric mod changing a biome's weather no longer stops the server (BIOME-3); on Forge 66 a mob spawn added through BiomeModifications reaches the biome (BIOME-4); and a Fabric jar's own Forge biome modifiers are turned off, as on NeoForge, so its features don't go in twice (MODIFIER-2, MODIFIER-3, every Forge version).
  • A Fabric mod built for a newer Java than the game's is disabled, with the Java it needs, where it would have stopped the launch (JAVA-1: Ledger's Java 21 build on Forge 47's Java 17).
  • What the corpora met: FrozenLib's enum shadow (ENUM-8) and pack sources (PACK-11), ReplayMod's added configs, which stopped the client at launch (LOADER-6), constructor hooks of FrozenLib, ImmediatelyFast and Wover (CTOR-7), Debugify (PRE-21), ShulkerBoxTooltip (PRE-22), Emotecraft (PRE-23), the Guava Fabric's Mixin carries, which BetterEnd, BetterNether, BCLib and Wover name (LIB-3), Friends and Foes and Moonlight mapping points of interest (POI-3), a registry value a mod changes after registering it (REG-14), another mod's accessor of a field Forge retypes (ACC-6), and a Fabric jar whose mods.toml only asks for Sinytra Connector (MULTI-2).
  • A Fabric mod replacing the server's player list no longer leaves the server seeing no player (POLY-2), and with the Fabric build of Sodium on Forge 64 to 66 a Fabric model that throws no longer leaves its transforms on Sodium's emitter (FRAPI-12).
  • Fabricated's API answers fabricApiModule(id) for every installed Fabric API module, not only those the version's plan lists (API-2).

Forge 52 (Minecraft 1.21.1), new

  • What it is: Forge 52 (CI tests 52.1.21) runs the game in Mojang's names, with Forge 61's module stack and Mixin 0.8.7 and Forge 47's EventBus 6. Fabric mods are remapped from Intermediary, as on NeoForge 1.21.1, and Fabricated nests MixinExtras 0.5.5 for them. Its jar comes from forge-legacy, beside Forge 47's.
  • Forge 47's and Forge 61's bridges: Fabric's item API through Forge's item hooks (ITEM-1), attack and use callbacks through Forge's events (INTERACT-1), fuels (FUEL-2), screen mouse events (LAMBDA-10), Forge Config API Port's Forge half (CFG-4), stable registry data in Fabric mods' packs (PACK-10), Fabric's renderer API (FRAPI-11), Fabric mods' own model loaders (MODEL-5), ingredients on the network (NET-13), Porting Lib's drop capture (DROP-1) and accessors of fields Forge 52 replaced (ACC-5).
  • Also fixed there: pack metadata (PACK-8), biome weather (BIOME-5), Forge's channel list (NET-12), data pack registries (REG-12), packs enabled by default (PACK-9), colour providers (COLOR-3) and lava (FLUID-4).
  • The difficult mods and the corpora: the Fabric build of Iris (IRIS-2) beside Sodium's, MoreCulling (SUPER-2), Balm (WILD-1), Cobblemon (PRE-28), Apoli's HUD layers (HUD-6, VANILLA-4), Moonlight with Amendments (REG-14), Wover (ACC-6, LIB-3), YUNG's Extras with Biomes O' Plenty (MODIFIER-2), and Friends and Foes (POI-3). Locally, the advanced corpus's server starts and its client joins its world.

What changed on Forge 47 (1.20.1)

  • A mixin config asking for Java 21 no longer stops the launch for every mod (LEVEL-2).
  • Registries: a Fabric mod's hook into the registries' freeze waits for the main entrypoints, as on Fabric (REG-9); registry writes from RegistryDataLoader's class initializer, as Wover's, are taken (REG-10); a data pack registry outside the minecraft namespace loads its entries (REG-11); with Forgified Fabric API, a registry a Fabric mod builds joins the game, and so does a data pack registry it makes (PROVIDER-20, PROVIDER-21).
  • Pack sources: Forgified Fabric API, or a mod adding a pack source the vanilla way (FrozenLib), no longer stops the server (PACK-7). A Fabric mod replacing the player list no longer hides the player (POLY-3).
  • What the advanced corpus met: Origins 1.10.2's jar, with Connector's placeholder mods.toml, loads as the Fabric mod it is (MULTI-2), with its nested MixinExtras (PLAT-7) and Apoli's tool check (PRE-25); Carpet, and five mods' dimension change hooks (PRE-24); FrozenLib's gravity hook (PRE-26); ReplayMod 1.20.1 (MIXCFG-1, SEC-11); Bobby's accessors of record components, which Forge 47's names tell apart where Intermediary doesn't (REMAP-5); BCLib's and BetterEnd's biome settings, as Forge 47 now opens what Fabric API's biome and particle modules open on Fabric (BIOME-6); and BCLib's workstation states, which it stores in the point-of-interest map as vanilla's holders where Forge 47 keeps the types (POI-4). REG-14's, MODIFIER-3's and JAVA-1's fixes apply here too.
  • The /fabricated command and Fabric mods' plugins work, CI checking all five plugin hosts.

Fabric's renderer API, by platform

NeoForge Forge 61 to 66 Forge 52 Forge 47
Fabric block models in chunk sections, moving blocks, breaking overlay yes, every version yes, every version yes, through Indigo (FRAPI-11) yes
Fabric item models yes, every version yes yes yes
Blocks drawn as entities yes on 26.x; 1.21.11 from the parts; 1.21.1 vanilla's quads, as upstream yes not checked in CI vanilla's quads, as upstream on 1.20.1
A throwing model drawn by the platform from then on yes, every seam yes, at Indigo's entry points yes yes
Another registered renderer (Sodium's, Forgified Fabric API's) yes: Fabricated's seams stand down Sodium's Sodium's Sodium's, with Indium

Support matrix

Loader Minecraft Loader versions the jar requires CI tests on Status
NeoForge 1.21.1 [21.1,21.2) NeoForge 21.1.265, Fabric API 0.116.17 Beta
NeoForge 1.21.11 [21.11,21.12) NeoForge 21.11.45, Fabric API 0.141.6 Beta
NeoForge 26.1.2 [26.1.2,26.1.3) NeoForge 26.1.2.116, Fabric API 0.155.3 Beta
NeoForge 26.2 [26.2,26.3) NeoForge 26.2.0.90, Fabric API 0.161.0 Beta
NeoForge 26.3 [26.3,26.4) NeoForge 26.3.0.95, Fabric API 0.164.0 Beta
Forge 47 1.20.1 [47,) Forge 47.4.28, Fabric API 0.92.12 Beta
Forge 52 1.21.1 [52,) Forge 52.1.21, Fabric API 0.116.17 Beta, new
Forge 61 1.21.11 [61,) Forge 61.2.4, Fabric API 0.141.6 Beta
Forge 64 26.1.2 [64,) Forge 64.1.5, Fabric API 0.155.3 Beta
Forge 65 26.2 [65,) Forge 65.1.5, Fabric API 0.161.0 Beta
Forge 66 26.3 [66,) Forge 66.1.0, Fabric API 0.164.0 Beta

Each jar also requires its Minecraft version, as the support matrix lists; CI tests the builds named.

What CI gates on each, as ci/runs.tsv sets it (a gate fails the release's full matrix; an informational run only reports):

CI run NeoForge Forge 61 to 66 Forge 52 Forge 47
The test mods, server and client, with Fabric API and the renderer API test mod (on NeoForge also without Fabric API) gate gate gate gate
Stand-ins for mods bringing Fabric API's modules; the refusals gate gate gate gate
A mixin that fails as Mixin applies it, over three launches (APPLY-1) gate not run not run not run
The platform's builds of the plugin hosts, calling the test mod's plugins gate: JEI, REI, Jade, WTHIT (not 26.3), Simple Voice Chat gate: WTHIT, Simple Voice Chat gate: JEI, WTHIT, Simple Voice Chat gate: all five
Forgified Fabric API gate where it has a build: the server; 1.21.1's client with Sodium; its renderer on 1.21.1, 26.1.2 and 26.2 no Forge build no Forge build gate: server and client
Sodium and Iris for the platform gate: Sodium on 1.21.1 (with Forgified Fabric API) and 1.21.11; both on 26.x, with and without a shader pack no Forge builds no Forge builds no Forge builds
The Fabric builds of Sodium and Iris gate, with and without a shader pack gate gate gate: Sodium 0.5 with Indium, and Iris
Sodium Extra and Reese's Sodium Options beside Sodium for NeoForge gate on 26.1.2 and 26.2; informational on 26.3 — — —
Continuity; OneConfig and PolyPlus gate not run not run not run
malilib with MiniHUD, Tweakeroo and Litematica; Essential; Flashback gate gate gate gate (Flashback has no 1.20.1 build)
Popular Fabric mods, the main and the advanced corpus informational informational informational informational
The newest loader build informational not run not run not run

Every feature on every version, with its gaps, is in the support matrix.

Upgrading from v0.6.0-beta

  • Remove the old jar. The NeoForge jar is renamed, from fabricated-0.6.0+mc<minecraft>.jar to fabricated-neoforge-0.6.0-beta.2+mc<minecraft>.jar, so the new one doesn't replace it, and two Fabricated jars are refused. Forge's goes from fabricated-forge-0.6.0+mc<minecraft>.jar to fabricated-forge-0.6.0-beta.2+mc<minecraft>.jar.
  • The first launch is slower. What v0.6.0-beta cached is translated again, once, automatically, as a build's translations are keyed by that build (CACHE-2). Nothing in .fabricated/cache needs deleting.
  • config/fabricated.json carries over: no setting changed.
  • The developer API is still 1.1. On Forge, fabricApiModule(id) now answers for modules it read as absent (API-2).

Known limits

  • Not every run is a gate (the table above). The corpora are informational: on NeoForge 1.21.1, and locally on Forge 52, the advanced client stays on Origins' origin screen, which waits for a player (CORPUS-66), and the advanced server's /reload check fails in WorldWeaver's code, as on Fabric (CORPUS-113); with Polymer, Forge 66's advanced server fails two ingredient network checks that write outside a packet, as on Fabric (CORPUS-114). Sodium Extra's and Reese's Sodium Options' 26.3 builds ask for a newer Sodium than CI pins.
  • Two equal registry entries on Forge (REG-13). Forge's registries find a value by its equality, so two equal entries are taken for one: Wover Story registers two point-of-interest types that are equal records, and its main entrypoint fails on Forge 66 (the advanced corpus runs disable it). A mod registering two equal records fails the same way on every Forge version. There is no generic fix; the fix is the mod's or Forge's.
  • On Forge 47, with the advanced corpus' mods together: in one of two local runs a client joining its world was dropped, as Polymer's early handshake let it send a custom payload before Fabric API 0.92's networking was ready for the player. That race is in those mods' code, which Fabric 1.20.1 runs alike (NET-14, read in the jars). BCLib's loot tables built in code aren't built, as it calls a LootPool constructor Forge 47 replaced (LOOT-3; BCLib logs it).
  • Fabric HUD layers added in Gui's constructor on NeoForge 1.21.1 (HUD-7). NeoForge 21.1 builds the HUD another way, so such a hook is left out: the game runs, but Apoli's resource bars (Origins 1.13) aren't drawn. Forge 52 draws such layers (HUD-6).
  • On Forge 52 Forgified Fabric API doesn't run (its 1.21.1 builds are NeoForge's, and a jar with its own copy of Fabric Loader is refused), and REI and Jade have no Forge builds to check their plugins with. Not checked there yet: a Fabric mod's potion recipe brewed, a Fabric resource condition named in Forge's recipe condition (CI-8), Fabric API's armour renderers, and Fabric models in blocks drawn as entities.
  • What Forge lacks is under Unsupported on Forge in COMPATIBILITY.md: some item API, content registry, lifecycle, object builder, registry sync, fluid rendering and sound hooks, and other mods' hooks inside the HUD method. Some Fabric mods' hooks have no place in Forge's code and stay left out, the report naming each: Forge 47's structure entity processing, Forge 64 to 66's screen render wrappers, piston stickiness, block breaking wrappers, and item checks Forge asks its extensions. Fabricated has no bridge between Team Reborn's energy and Forge's.
  • Iris's Fabric build on NeoForge 1.21.1: pre-flight leaves out its redirect of the particle engine's draw, where NeoForge calls an overload; what Iris loses is unchecked (IRIS-3).
  • Essential's second launch on Forge 66 hung once after creating its window, and passed when run again (HANG-1, cause unknown).
  • With Forgified Fabric API, its modules are used as they are. What they do differently is theirs: its networking refuses a payload in the minecraft namespace (PROVIDER-5), and on 26.x its item API can stop the game asked an equipment slot the Fabric way (PROVIDER-7). On NeoForge 1.21.11 and 26.x, Fabricated keeps a copy of its nested Forgified Fabric Loader without Fabric Loader's API (up to 64 MiB) in .fabricated/loader-api, and an update of the jar leaves the old copy there (CACHE-5).
  • OneConfig's keybinds can't reach KeyMapping.MAP, which NeoForge retyped; OneConfig warns that its keybinds may shadow Minecraft's (KEYMAP-1).
  • Login queries (ServerLoginNetworking, ClientLoginNetworking) aren't supported on NeoForge, which has no hook for that phase; on Forge upstream's module loads, unchecked.
  • A Fabric mod whose initializer fails after setting up a server configuration task can leave a singleplayer join waiting (ENTRY-1, not seen with a real mod).
  • Multiplayer: CI tests dedicated servers and singleplayer clients, not a client joining a dedicated server.

Details for every item are in docs/CHANGELOG.md, every fixed finding in docs/FINDINGS.md, the open ones in docs/roadmap.md, and per-module status in docs/COMPATIBILITY.md.

Installing

  1. Install NeoForge or Forge for your exact Minecraft version.
  2. Download the jar for your loader and Minecraft version, from this release or from CurseForge, where each is shown as Fabricated 0.6.0-beta.2 for NeoForge 26.3 (or for Forge 1.21.1, and so on):
    • NeoForge (1.21.1, 1.21.11, 26.1.2, 26.2, 26.3): fabricated-neoforge-0.6.0-beta.2+mc<minecraft>.jar, such as fabricated-neoforge-0.6.0-beta.2+mc26.3.jar.
    • Forge: fabricated-forge-0.6.0-beta.2+mc<minecraft>.jar, for 1.21.11, 26.1.2, 26.2 and 26.3 on Forge 61 to 66, 1.21.1 on Forge 52 and 1.20.1 on Forge 47, such as fabricated-forge-0.6.0-beta.2+mc1.21.1.jar.
  3. Check the jar against SHA256SUMS.txt.
  4. Put the jar in mods, next to your Fabric mods and the official Fabric API jar for that version (or Forgified Fabric API where it runs, on NeoForge and Forge 47, whose modules Fabricated then uses). Remove Sinytra Connector, and any older Fabricated jar.

Fabricated never downloads anything and never modifies your mod jars. logs/fabric-bridge-report.txt says what loaded and why anything didn't.

If you hit a crash, please open an issue and attach logs/latest.log and logs/fabric-bridge-report.txt.

Builds

Tested by the full matrix and built by the release workflow:

  • NeoForge, from main at 07bca47d5d: fabricated-neoforge-0.6.0-beta.2+mc1.21.1.jar, fabricated-neoforge-0.6.0-beta.2+mc1.21.11.jar, fabricated-neoforge-0.6.0-beta.2+mc26.1.2.jar, fabricated-neoforge-0.6.0-beta.2+mc26.2.jar, fabricated-neoforge-0.6.0-beta.2+mc26.3.jar
  • Forge, from forge at ff235f328a: fabricated-forge-0.6.0-beta.2+mc1.21.11.jar, fabricated-forge-0.6.0-beta.2+mc26.1.2.jar, fabricated-forge-0.6.0-beta.2+mc26.2.jar, fabricated-forge-0.6.0-beta.2+mc26.3.jar
  • Legacy Forge, from forge-legacy at ae2a95b458: fabricated-forge-0.6.0-beta.2+mc1.20.1.jar, fabricated-forge-0.6.0-beta.2+mc1.21.1.jar

SHA-256 (also in SHA256SUMS.txt):

5c0c15cf0c28939738684004a42d1f2f81e84e42ee9cae1117e8ff645ffa2ca6  fabricated-forge-0.6.0-beta.2+mc1.20.1.jar
a0fc92d38179622494c766f3e6f32304344ae93d45fd8cbedec381fc26569d2c  fabricated-forge-0.6.0-beta.2+mc1.21.1.jar
7d9bc0d65f7f26bbe9897e052827bda4ff22eef4bf6a0638ffa8bb3d26e4b6fc  fabricated-forge-0.6.0-beta.2+mc1.21.11.jar
601085fc42042623f06503ce7a5d8879daf9404a7641a94097d5a7e8d191d2d7  fabricated-forge-0.6.0-beta.2+mc26.1.2.jar
f2fd35a597e56c28b4b485e7f3be5e52b6af7f9b110f62ab87f8c7da00bad5ac  fabricated-forge-0.6.0-beta.2+mc26.2.jar
841cba474c1fe9918e1152dd3e0f0323789759afa46c6e6f6bf65dd121a13ed6  fabricated-forge-0.6.0-beta.2+mc26.3.jar
77c001cfabb1243372ba18b357eec09c6622b59d9c47724965a8800bece29973  fabricated-neoforge-0.6.0-beta.2+mc1.21.1.jar
cb22a9aed826e6e2ae8ac983eb8a6451c40c37e8c9f6296785a59076384d1e0e  fabricated-neoforge-0.6.0-beta.2+mc1.21.11.jar
ec40a24a913599fdb98f9dad3b119c2eeea73e080b50b84f58dafc5963bad92a  fabricated-neoforge-0.6.0-beta.2+mc26.1.2.jar
101c1600aa97a3ba324907f0cdf217aba9d61482fddafff77981a6566148d2da  fabricated-neoforge-0.6.0-beta.2+mc26.2.jar
79f7cde358cc25dbb48360eb486c999f6bfe02d75fb0442efe1482725949f9f0  fabricated-neoforge-0.6.0-beta.2+mc26.3.jar

This mod has no additional files