Minecraft mods are strongly tied to Minecraft versions. Sometimes I can use a mod for an old version (for instance, I'm using JourneyMap 1.9.4 for 1.10), but if I find a mod that doesn't have a release for the version I'm running, I'm out of luck for the most part -- usually it won't work or will have issues, even if the only changes between versions are seemingly unrelated. This is a weird concept to me, I guess because of modding I'm used to. Skyrim mods for instance generally don't depend on the program's version -- if I made a mod that adds a new playerhome to the game on the version Skyrim initially released on, it will still work on the latest version. If I add a mob to Minecraft on version 1.7.10, from my understanding I can't use it in 1.10. I suspect this may be due to the obfuscation Minecraft uses where it combines lots of stuff into a limited number of files, so even though a Minecraft update doesn't directly change something a mod added, the change might be packed into the same file as the one the mod made changes to and cause issues.
If that's the case, is there a way to rebuild mods created for older versions of Minecraft and get them working with newer versions? I have a 1.10 world that I want to use Mo Creatures (big fan of its mounting concept -- especially the flying creatures) for MC 1.8 and Divine RPG (dimensions are really cool) for MC 1.7.10, but as it stands, they currently don't work with 1.10.
MC's source code changes from version to version, Skyrimfor example keeps the old code and only adds new code. So everything from old versions is still present and usable in the new ones.
In Minecraft, there wre often internal file renames, and mods referencing the old file names won't work any more.
How much effort do you estimate it would take to port a mod the size of Mo' Creatures from 1.8 to 1.10?
The mod author of Mo' Creatures is very private about their code and mods, so that specific mod may not be a good example. My best guess is that it will take changes to every single class (if nothing else, organizing imports). Also MOC adds a dimension, and my dimension-adding mod took a bit of a beating in the 1.8.x -> 1.9 update.
My Extra Golems mod is comparable, though, since it mainly adds Entities. It did not take much effort to update from 1.8 -> 1.8.9 -> 1.9 -> 1.9.4 -> 1.10. The only major changes were my adding of new features and re-doing code that was using methods of a different name or methods that had been removed or deprecated. (deprecated = marked for removal in next release)
The 1.9 update, though, required a lot of method signatures to include an EnumHand argument and some returned an ActionResult instead of a boolean as before. Also in 1.9.4 the class everyone was using for translation was deprecated and its replacement was a bit tricky to find.
The 1.7.10 -> 1.8.x update, as you've no doubt heard, was also very tough. Blocks had to be redone to use IBlockState and Property things instead of direct integer metadata. Entity rendering had to be redone from this to this. DataWatcher ids were replaced by a generic DataParameter somewhere between 1.8 and 1.9. And not all these changes took place in one version, which is helpful for me but not for the person trying to update by skipping several versions.
Rollback Post to RevisionRollBack
Click this banner for a list of illegal mod distributors -- only download from legal sites!
Minecraft mods are strongly tied to Minecraft versions. Sometimes I can use a mod for an old version (for instance, I'm using JourneyMap 1.9.4 for 1.10), but if I find a mod that doesn't have a release for the version I'm running, I'm out of luck for the most part -- usually it won't work or will have issues, even if the only changes between versions are seemingly unrelated. This is a weird concept to me, I guess because of modding I'm used to. Skyrim mods for instance generally don't depend on the program's version -- if I made a mod that adds a new playerhome to the game on the version Skyrim initially released on, it will still work on the latest version. If I add a mob to Minecraft on version 1.7.10, from my understanding I can't use it in 1.10. I suspect this may be due to the obfuscation Minecraft uses where it combines lots of stuff into a limited number of files, so even though a Minecraft update doesn't directly change something a mod added, the change might be packed into the same file as the one the mod made changes to and cause issues.
If that's the case, is there a way to rebuild mods created for older versions of Minecraft and get them working with newer versions? I have a 1.10 world that I want to use Mo Creatures (big fan of its mounting concept -- especially the flying creatures) for MC 1.8 and Divine RPG (dimensions are really cool) for MC 1.7.10, but as it stands, they currently don't work with 1.10.
MC's source code changes from version to version, Skyrimfor example keeps the old code and only adds new code. So everything from old versions is still present and usable in the new ones.
In Minecraft, there wre often internal file renames, and mods referencing the old file names won't work any more.
The issue is only file renames? Wouldn't someone have already created an automatic tool to find and replace old names with the new ones?
Not only renames, this was just an example.
How much effort do you estimate it would take to port a mod the size of Mo' Creatures from 1.8 to 1.10?
The mod author of Mo' Creatures is very private about their code and mods, so that specific mod may not be a good example. My best guess is that it will take changes to every single class (if nothing else, organizing imports). Also MOC adds a dimension, and my dimension-adding mod took a bit of a beating in the 1.8.x -> 1.9 update.
My Extra Golems mod is comparable, though, since it mainly adds Entities. It did not take much effort to update from 1.8 -> 1.8.9 -> 1.9 -> 1.9.4 -> 1.10. The only major changes were my adding of new features and re-doing code that was using methods of a different name or methods that had been removed or deprecated. (deprecated = marked for removal in next release)
The 1.9 update, though, required a lot of method signatures to include an EnumHand argument and some returned an ActionResult instead of a boolean as before. Also in 1.9.4 the class everyone was using for translation was deprecated and its replacement was a bit tricky to find.
The 1.7.10 -> 1.8.x update, as you've no doubt heard, was also very tough. Blocks had to be redone to use IBlockState and Property things instead of direct integer metadata. Entity rendering had to be redone from this to this. DataWatcher ids were replaced by a generic DataParameter somewhere between 1.8 and 1.9. And not all these changes took place in one version, which is helpful for me but not for the person trying to update by skipping several versions.