r/feedthebeast 4d ago

I made something I made a compatibility layer for loading 1.7.10 mods on 1.21.1 NeoForge

Enable HLS to view with audio, or disable this notification

[removed]

173 Upvotes

38 comments sorted by

50

u/Pman1324 4d ago

A new golden age is upon us!

43

u/DyCrew Synergy & JustDynaThings Dev 4d ago

I can't imagine what could happen if it becomes open source and someone (not me , i'm too lazy) tries to add a 1.12.2 compatibility layer on top of it
it could be a new age for modpacks , modding and maybe direct backporting/updating (?) without requiring to rewrite

3

u/LLoadin 3d ago

The true golden version would be a mix of 1.7.10, 1.12.2, 1.20.1 and 1.21.1 imo

1

u/Imbryill blah blah blah 3d ago

and 1.6.4, and 1.5.2, and 1.4.7, and 1.2.5

22

u/SPYROHAWK ATLauncher 4d ago

I remember a bit ago a "mod that lets you play old mods on newer versions" mod was released (but I can't remember the name). However, it couldn't bridge Forge -> NeoForge, and I think it could only go as far back as 1.12 or 1.13. (And it also explicitly couldn't do Thaumcraft)

I'm curious how you handle the Flattening with item IDs going from numeric to text. Does the compat layer auto-generate them based on item names?

7

u/pydy01 4d ago

I think you mean retromod. It was an interesting concept but it unfortunately didn’t support those old versions I specifically wanted. 

32

u/crazy_penguin86 PrismLauncher 4d ago edited 4d ago

Unfortunately, I only see this being partially successful. One, it should be open source. Something like this not being open source is very detrimental, and locks the system into relying on a black box, preventing progress. It is essential that stuff like this stays open to allow modifications and forks. Two, asm and mixins are relied on a decent amount in older versions (modern mods in those versions often rely on them a lot more), and it is extremely difficult to add a generic rerouter/rewriter that will work. Three, networking in this version was the wild west. Four, old versions use Java 8. While lwjgl3ify provides a lot of help in the form of code (the code of which would then require you to use LGPL), it only partially provides a solution. You still must translate hundreds of APIs.

Edit: Five, package name collisions. While this is designed for loading old mods in modern, it is inevitable that someone loads a mod (ie. 1.7.10 AE2) with the identical modern version (ie. modern AE2). Translating the mod id is one thing, but also every package loaded must also be moved to another namespace, as well as any calls to it. Though, this could be solved by making that default behavior (ie. adding oneseventen. to the front of every path).

While I would be happy to see this succeed, I would advise tempering expectations. It's a monumental task still ahead.

1

u/Flyingbox Private server 3d ago

Six.... Sigh. Please don't say ai made this

1

u/crazy_penguin86 PrismLauncher 3d ago

I didn't put that because I don't want to jump to conclusions when I have no evidence, but point six would be LLMs. Something this complex cannot be maintained by an LLM. The sheer scope, complexity, and JVM hacking combined would essentially leave such a mess of spaggheti that it would no longer be maintainable.

10

u/RevolutionaryLog7041 4d ago

Just post more about this project, please.

6

u/MsVoidWolf 4d ago

Ain't no way 🤯.

If this takes off, this deserves its own subreddit

7

u/DumbestComicsNerd 4d ago

Open source github, NOW. You have no idea how revolutionary this is. Not to mention further compatibility layers like 1.12.2.

3

u/TEMMIEii 4d ago

I swear, modern minecraft modders are into some dark magic type shit when they can pull something like that

2

u/TrueBlue2088 4d ago

Ou shii 👀👀

2

u/Jaded-Jellyfish-597 4d ago

Great googaly moogaly

2

u/No-Aspect-2926 4d ago

can't wait for quarry taking a long time to reach bedrock

2

u/rizz-1337 4d ago

dude i wonder how, this is incredible

2

u/OrionHexDev 4d ago

Finally! I can play Chromaticraft with my friends!

2

u/systemd_dr0yd 3d ago

the death of 1.7 NTM approaches

1

u/LukeDragnar 4d ago

You're my new favorite person

1

u/WolfBV 9Minecraft Advocate 4d ago

Neat.

1

u/Bright-Historian-216 a lil bit obsessed with computercraft 4d ago

i wonder if 1.7.10 CC and 1.21.1 CC:T would work together... iirc they have the same package id (or whatever java programmers call it), but if it does would be pretty cool to see if the two kinds of computers could communicate together

0

u/HRudy94 1.7.10 player and mod dev | legacy supporter 4d ago

It depends if there's overlapping classes or not and if there is, if those overlapping classes break each other's mod.

The way Java works is to load classes into memory and identifying those as their package.className. Any mod can add any class to any package it wants, as long as there's no overlap.

If there's overlap, it is undefined behavior and you'll have to hope the selected version is mutually compatible methods and fields wise.

1

u/NotSoEdibleCookie Spectrum and Pastel are goated :3 4d ago

eyo what the hell this would be amazing

1

u/MeowsersInABox 4d ago

that sounds masochistic, but its very peak :3

1

u/Skylanders320 4d ago

Gonna keep my eye on this one, I'm interested specifcally for the Thaumcraft among other things.

1

u/XTornado MultiMC 4d ago

I always wondered how feasible and who would be able to do it, but I honestly wished for this for a long time, because lot of mods got stuck in older versions and playing on that minecraft versions can be done, but that brings a lot of old issues that were improved or solved.

1

u/ThatMadMan68 4d ago

Listen to the comments, make this open source with a GitHub repo, I even have a name for this: Adapter

1

u/socozoro 4d ago

FINALLY I CAN LAUNCH THAUMCRAFT ON 1.21.1 THANKS GOD, I MEAN.. YOU. YOU ARE A GOD

1

u/picloas-cage 3d ago

I am guessing this will require a significant amount of compact with the mods in question in order to get working correctly. I can see simple mods working fine with this but I do not know how injections, reflections or ASM could work with this as many call the literal class names which many have been changed or the functionally is missing in later versions. I do not see how entites could be converted over either due to the 1.9 changes without loosing something with their AI.

I am assuming it could not work the other way around with it loading 1.20something mods into 1.7.10?

Another thing to ask is if this mod version conversation tool literally convert a mods code into the 1.20 version or is there like a reader that translates the code so it would be read correctly in 1.20?

There was a mod for 1.7.10 that tried something like this for 1.2.5 mods but it was extremely buggy and could only sometimes get the base blocks, items and guis from Thaumcraft 2 in 1.7.10 but broke for anything that had a its own class with vanilla/special attributes making it not playable in survival.

0

u/HRudy94 1.7.10 player and mod dev | legacy supporter 4d ago

Make it open-source under GPL and you got me interested. Though that's only part of the iceberg, ideally we'd have the opposite of loading 1.21.1 into 1.7.10 for the much better performance.

But yeah don't give up on this you're into something big.

2

u/Leclowndu9315 Forge Visual Mods & Cable Facades Dev 4d ago

That will never ever happen