File Details
Retromod 1.2.0-snapshot.6 (Fabric 1.21.7)
- R
- Jun 30, 2026
- 3.09 MB
- 1
- 1.21.7
- Fabric
File Name
retromod-1.2.0-snapshot.6+1.21.7.jar
Supported Versions
- 1.21.7
Curse Maven Snippet
Added
- 1.12.2 (pre-1.13) Forge class-move baseline (#103/#108/#113). Old 1.12.2 Forge mods reference Minecraft classes the 1.13 "Flattening" + 1.17 repackaging moved/renamed (
net.minecraft.util.math.BlockPos->core.BlockPos,world.World->world.level.Level,util.ResourceLocation->resources.Identifier, the block/item/entity packages, NBT, containers, …). A bundled, jar-validated 1.12.2 -> 26.1 class-move table (117 entries inforge-1.12.2-class-moves.tsv, harvested byscripts/harvest-1.12.2-class-moves.py) is loaded by the 1.12.2 shim, gated to a 26.1 host. These are transform-level building blocks, unit-tested at the bytecode level, not yet in-game loading. A 1.12.2 mod ships onlymcmod.info(themods.tomlformat postdates 1.13), so running one end-to-end on modern Forge/NeoForge additionally needs:mcmod.info->mods.tomlmetadata generation (so the loader scans the mod at all), the 1.12.2 SRG member namespace (func_/field_-> Mojang), and the old@EventHandler/FMLPreInitializationEventregistry idiom. None of those are built yet, so 1.12.2 mods do not load in-game in this build. Class-moves are the dominant bytecode gap (308 of 344 issues on a real 1.12.2 mod). Transform-tested (Forge1122ClassMovesTest). - 1.12.2 Block/Item Properties-constructor bridge (#80). After the class moves, a 1.12.2 custom block/item still wouldn't construct: 26.1 made
BlockandItemProperties-constructed, but a 1.12.2 block callssuper(Material)and a 1.12.2 item callssuper(), neither of which has a matching ctor (andMaterialitself was removed). Two new transformer mechanisms bridge this: a super-constructor replace (pop the old args, push a fresh defaultProperties) turnssuper(Material)intosuper(BlockBehaviour.Properties.of()), and the existing insert-defaults path now constructs a real default forPropertiestypes (notnull, which would NPE) sosuper()becomessuper(new Item.Properties()). A static-field nuller neutralizes reads of removed-class constants (Material.IRON) so the field read doesn't fault before the super call. Default properties only (material-specific settings are lost). At the transform level the block/item now constructs; like the class-move table this is a bytecode building block gated behind the same in-game prerequisites noted above (metadata generation, SRG members, registry idiom). Gated to a 26.1 host. Transform-tested (Forge1122ClassMovesTest).
Fixed
- The Betweenlands: missing
ISoundsound class (#113). The 1.12.2 client sound interfacenet.minecraft.client.audio.ISoundwas relocated by the 1.17 repackaging tonet.minecraft.client.resources.sounds.SoundInstance(same name on 1.20.1 and 26.1), and Retromod didn't map it. Added the class move (ungated; the target exists on every supported host). It was The Betweenlands' only transform gap, so the mod should now transform cleanly. - Chunk force-loading crash on 26.1 (Chunky and other 1.18-era chunk mods). 26.1 renamed
ServerChunkCache.addRegionTicket(TicketType, ChunkPos, int, T)toaddTicketWithRadius(TicketType, ChunkPos, int)and dropped the value argument, so an old chunk-loading mod's 4-arg call had no target on 26.1 and crashed worlds on load. A plain rename can't fix it (the arity changed), so Retromod gained a generic arg-dropping method redirect (it pops the dropped trailing value, then calls the shorter renamed method) and registered the chunk-ticket case. Verified on the real Chunky jar:FabricWorldnow calls the 3-argaddTicketWithRadius. Mechanism tested byArgDropRedirectTest. (Chunky also mixinsThreadedAnvilChunkStorage, so full Chunky compatibility needs that checked in-game; this removes theaddRegionTicketcrash.)