Java 8 or 11 for 1.16 versions and Java 16 on 1.17 is quite jump I'd assume in code so modloaders will want to take advantage of that and the differences between those versions of Java possibly having different names/formatting of code or features.
Otherwise while 1.16.5 mods for Fabric were capable ports during snapshot they eventually didn't. It's best to just go with the 'strict' version of 1.17 only mods rather than thinking 1.16.5 mods will work on 1.17. If you still have mods you want on 1.16.5 than stick with 1.16.5 or just like many of us have fun exploring whatever new or old but quickly ported over is on 1.17 even for how few are there yet.
Forge I assume just like Fabric will need to have major changes to support 1.17 due to whatever Mojang has done and the Java update changes.
If your using Fabric myself and many others (referring to players not mod developers) have tested the differences. Forge will likely have 1.17 only support I assume. Only sometimes like 1.9.4 to 1.10.2 or 1.12 to 1.12.2, even 1.16.2 to 1.16.5 sort of situations where nothing too major happens can you have support across versions, they may be just 1 bug fix and aren't that different, but this usually doesn't happen often depending on the changes the modloaders have, Java or whatever Mojang does that requires a change.
Yes! I actually have some 1.16.5 mods that are working in 1.17.1! Though they say they aren't compatible, they still work like a charm. But you just have to know which ones are going to work and it's mostly a guessing game by this point. I'm about to see if useful backpacks might work.
Java 8 or 11 for 1.16 versions and Java 16 on 1.17 is quite jump I'd assume in code so modloaders will want to take advantage of that and the differences between those versions of Java possibly having different names/formatting of code or features.
The Java version only sets the minimum required version - you can run code compiled for Java 8 on Java 16; 1.6.4 was compiled with Java 6 and 1.5 and older used Java 5 (if you try running 1.17 on Java 15 or earlier you'll get a "UnsupportedClassVersionError"). The only exceptions are when mods rely on certain core Java classes or bugs (e.g. Forge for 1.6.4 and older versions crash on Java 8 without a patch due to a bug within Forge which was hidden by a bug in Java itself (modifying a list while iterating over it is bad programming practice and usually throws an exception but the JVM did not detect this particular case until Java 8), but vanilla 1.6.4, as well as my own non-Forge mods, run with no issues; likewise, there is some issue with "launchwrapper", which many mods (but again, not my own) use, which fails on Java 9 and later). There may be other incompatibilities but Java is generally good at keeping backwards compatibility (for example, they still use a poor quality RNG for their "Random" class, which if ever changed would break world generation in every version up to at least 1.17).
The main reason why mods only run on a particular version is obfuscation, where class names and methods are assigned random names like "abc.class" to help prevent reverse-engineering (not that it stops modders, and ironically, Mojang now releases mappings. However, this still helps protect their IP since the obfuscation process also rearranges the code so even if you decompile and deobfuscate it using the original names it won't match the original source and needs various patches applied to fix errors, hence the game is still officially closed-source). I assume that mods that can run on multiple versions rely on a mod API being unchanged (for the particular methods they use) and only call methods within the API, but any direct references to Minecraft code will break with even minor updates (this is why I have versions of my "old caves" mod for multiple 1.7 versions, even though the code itself is exactly the same, only the obfuscated names differ).
my main mod is the demon slayer minecraft mod and it's for 1.16.5 but more than half of the mods are for 1.17.1 and normally that wouldn't run but the person who made the modpack i want to play (a youtuber named Butter Jaffa) can run all these mods and i don't know how
Do 1.16.5 mods work with 1.17? I wanted to know I'm just curious
I seriously doubt it. Mods have to rewritten for each major release, this includes Forge. Plus, MC 1.17 uses Java 16.
"We live on a placid island of ignorance in the midst of black seas of infinity, and it was not meant that we should voyage far."
Java 8 or 11 for 1.16 versions and Java 16 on 1.17 is quite jump I'd assume in code so modloaders will want to take advantage of that and the differences between those versions of Java possibly having different names/formatting of code or features.
Otherwise while 1.16.5 mods for Fabric were capable ports during snapshot they eventually didn't. It's best to just go with the 'strict' version of 1.17 only mods rather than thinking 1.16.5 mods will work on 1.17. If you still have mods you want on 1.16.5 than stick with 1.16.5 or just like many of us have fun exploring whatever new or old but quickly ported over is on 1.17 even for how few are there yet.
Forge I assume just like Fabric will need to have major changes to support 1.17 due to whatever Mojang has done and the Java update changes.
If your using Fabric myself and many others (referring to players not mod developers) have tested the differences. Forge will likely have 1.17 only support I assume. Only sometimes like 1.9.4 to 1.10.2 or 1.12 to 1.12.2, even 1.16.2 to 1.16.5 sort of situations where nothing too major happens can you have support across versions, they may be just 1 bug fix and aren't that different, but this usually doesn't happen often depending on the changes the modloaders have, Java or whatever Mojang does that requires a change.
Niche Community Content Finder, Youtuber, Modpack/Map Maker, Duck
Forum Thread Maintainer for APortingCore, Liteloader Download HUB, Asphodel Meadows, Fabric Project, Legacy Fabric/Cursed Fabric, Power API, Rift/Fabric/Forge 1.13 to 1.17.
Wikis I Maintain: https://modwiki.miraheze.org/wiki/User:SuntannedDuck2
Yes! I actually have some 1.16.5 mods that are working in 1.17.1! Though they say they aren't compatible, they still work like a charm. But you just have to know which ones are going to work and it's mostly a guessing game by this point. I'm about to see if useful backpacks might work.
I was wondering the same thing about "Useful Backpacks". Did it happen to work?
I'm making a mod with MCreator which lets me use 1.16.5 at most, should it work? (It's a biomes mod)
Sometimes. It usually depends on the following:
I've had multiple times my mods were cross compatible with multiple versions.
TL;DR: Some mods will be, some mods won't be.
The Java version only sets the minimum required version - you can run code compiled for Java 8 on Java 16; 1.6.4 was compiled with Java 6 and 1.5 and older used Java 5 (if you try running 1.17 on Java 15 or earlier you'll get a "UnsupportedClassVersionError"). The only exceptions are when mods rely on certain core Java classes or bugs (e.g. Forge for 1.6.4 and older versions crash on Java 8 without a patch due to a bug within Forge which was hidden by a bug in Java itself (modifying a list while iterating over it is bad programming practice and usually throws an exception but the JVM did not detect this particular case until Java 8), but vanilla 1.6.4, as well as my own non-Forge mods, run with no issues; likewise, there is some issue with "launchwrapper", which many mods (but again, not my own) use, which fails on Java 9 and later). There may be other incompatibilities but Java is generally good at keeping backwards compatibility (for example, they still use a poor quality RNG for their "Random" class, which if ever changed would break world generation in every version up to at least 1.17).
The main reason why mods only run on a particular version is obfuscation, where class names and methods are assigned random names like "abc.class" to help prevent reverse-engineering (not that it stops modders, and ironically, Mojang now releases mappings. However, this still helps protect their IP since the obfuscation process also rearranges the code so even if you decompile and deobfuscate it using the original names it won't match the original source and needs various patches applied to fix errors, hence the game is still officially closed-source). I assume that mods that can run on multiple versions rely on a mod API being unchanged (for the particular methods they use) and only call methods within the API, but any direct references to Minecraft code will break with even minor updates (this is why I have versions of my "old caves" mod for multiple 1.7 versions, even though the code itself is exactly the same, only the obfuscated names differ).
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
my main mod is the demon slayer minecraft mod and it's for 1.16.5 but more than half of the mods are for 1.17.1 and normally that wouldn't run but the person who made the modpack i want to play (a youtuber named Butter Jaffa) can run all these mods and i don't know how