Have you gotten this error?
When I first tried to load a world from modded minecraft 1.7.10 into 1.12.2, I got the following error:
This save predates 1.7.10, it can no longer be loaded here. Please load in 1.7.10 or 1.8 first.
Thus began a several month-long hacking spree, first to get this message to go away, and then to get the world in question, a world my wife and I had been recording videos in for several years, to not just load but load well...mostly.
The program started out as a quick and dirty hack and got dirtier and hackier the more I realized how much work it needed to do. If I had known then what I know now, I probably would have made it a proper application. If there is sufficient interest, I may yet do so.
Regardless, what I have so far may prove useful to others, so I'm creating a blog for it, where folks can express such interest and talk about the problem.
FYI: the accepted wisdom is that the best/only way to load modded 1.7.10 worlds into 1.12.2 is to load them into intermediate versions first. Even if you can find versions of all the mods in your pack for some intermediate version, this didn't work well (or really at all) for me. If you are having similar problems, I may be able to help.
Here is what I have so far:
I have written several C language programs that compile with gcc on Ubuntu (probably elsewhere as well though I've not tried it).
Two are Utilities for exploring worlds:
demca.c extracts the chunks from a minecraft .mca world file which can then be viewed with an NBT editor. It does not, however, put those chunks back together into an .mca file, though the code for doing so exists in levelfix.c It requires the zpipe command be installed in order to run.
idharvest.c combs the resulting chunk files for 'id' tags that are strings. For 1.7.10 the output consists mainly of the names of entities, for more recent versions, the names of items in chests and other receptacles are also printed.
The other is the world translator program:
levelfix.c does the main work of converting a modded minecraft 1.7.10 world to 1.12.2. It requires a number of configuration files which are specific to the modpack (and version thereof) the world was created in. For the moment, I only have files that work for a specific older version of the modpack my wife and I made for 1.7.10: Rainbow Robot.
However, the program is general enough that sets of files could be made for other modpacks. It could potentially be made more generalized as well, if there is sufficient interest. That's part of the point of this blog. I'd love to help others with the problems I had, but I'm not going to go to the trouble if no one cares.
The config files it needs to translate a world well include:
sortlation - a list of block and item names from the old modpack and their equivalents in the new modpack. Between 1.7.10 and 1.12.2 all blocks and items were forced to have all lowercase names and many mods decided it was a good time to rename everything anyway. In addition, the location of the dictionary of names to numbers in level.dat was changed. This file is used to create a new dictionary (or registry as it's now called) for all your old blocks and items. Without this, only vanilla items and blocks will survive the translation process, and only if they are stored in vanilla or Iron Chests. Additionally, it is the existence of the old dictionary that causes forge to throw up the "Can no longer be loaded here" error I mentioned above. Once the dictionary is converted into a registry, the world will at least load, though many things may still be wrong. While my sortlation file may work kinda on packs other than rainbow robot, it is highly recommended you make your own.
biomes - a list of biome ID numbers from the old modpack and equivalent biome names from the new. I had to look up the old ID numbers online and in config files from the old modpack. The new ones were stored in the new level.dat file for worlds created with the new pack. Without this file, only vanilla biomes survive the translation process, all modded biomes become plains. The geography stays the same, but they are treated as plains as far as color and mobs that spawn. I do not believe that any biome IDs needed to be changed in our modpack so this file should work for other modpacks that also didn't require any biome IDs to be changed. If they were changed, this file will need to be fixed to reflect that to work well with worlds from any other pack.
idreplace - a list of entity ids from the 1.7.10 version of the pack and their replacements in 1.12.2. Entities are all mobs and any block that requires extra data known as NBT data. These also are forced to be all lowercase in 1.12.2 and for that reason again a lot of them have been renamed. Without this, all non-vanillla mobs and blocks lose any extra info they may have. Storage containers become empty. Most mobs simply disappear. Since entity names are the same from one pack to another, this file should work as is on other packs, though the file might need to be expanded to support entities from mods not in Rainbow Robot. The utility programs above can be very useful for finding the old and new names of entities.
mats - a list of microblock materials in 1.7.10 and their replacements in 1.12.2. To my surprise, most Forge microblocks can be made to survive translation, but the names for the materials have changed. This file provides old and new names for some common microblock materials. You may find more materials have been used in your worlds than are in this file and they may need to be added or the microblocks will disappear. Levelfix.c currently reports the names of microblock materials it finds and whether it knows a replacement name or not. I find having actually additions installed helps greatly with this as it allows you to view the NBT data for microblocks. FYI: mekanism pipes and wires are no longer microblocks in 1.12.2 and will not survive. I have also had trouble with ProjectRed pressure tubes. Also ExtraUtils2 no longer supports any of the old ExtraUtilities microblocks. Other than that, microblocks seem to work!
symbols - a list of mystcraft symbols in 1.7.10 and their replacements in 1.12.2. To my surprise, most mystcraft pages can be made to survive translation, but the internal names of the symbols have changed. This file provides old and new names for some common mystcraft symbols. You may find more symbols exist in your worlds and they may need to be added to the file, or the pages will appear to have ? on them instead of a symbol and probably won't work. I find having actually additions installed helps a lot as it allows you to view the NBT data for mystcraft pages.
replace - a list of block numbers and metas in the world to replace with other block numbers and metas. The sortlation file above only works for blocks that translate directly 1 to 1. Many mods have changed this. For example, Thaumcraft used to store all wooden machines under one block number Now they each have their own block number. Entries in this file can be used to override the dictionary above and change the actual block ids and metas within the world. There are some limits to this. Among other things, some sections of chunks are stored with no meta array at all, if no block within that section HAS a meta value other than zero. The translator currently ignores such sections. Usually they are mostly empty, but sometimes they contain for example the tops of trees, which may fail to translate. However, because this file uses block numbers, not names, the one I used for my world will not work for any worlds not created with the exact version of Rainbow Robot that world was created with. You'll need to make your own if you are not satisfied with the translation that registry entries provide.
inventory - a list of inventory numbers from 1.7.10 and inventory names from 1.12.2 to replace them with. Although there is a registry to translate item numbers to names in the level.dat file from worlds created in 1.12.2, the registry seems to be ignored, so the numbers of items in player inventories and chests and such need to be translated to names. Most of this can be done using the sortlation file above, but again some mods have changed what used to be one item into many, or what used to be many items into one. This file is used to modify the numbers before they are translated into names. Because this file also uses numbers, my file will only work with worlds created with one specific version of one specific modpack. You'll need to make your own file if you care to be that detailed.
Beyond microblock materials and mystcraft pages, the current translator offers no support for items or blocks that store their NBT data differently in 1.12.2 than in 1.7.10. Not a lot of blocks or items do, but for example Agricraft seeds and planted crops, Carpenter's blocks and Mekanism pipes and wires and Tinker's patterns, casts, and tools do. Also the replacement mod for Minefactory Reloaded, Industrial Foregoing, does things very differently. As-is there is very little the translation program does about this.
As Dimensional Doors was in our pack, but new versions of Dimensional Doors handle dimensions quite differently, the translation program detects and converts old Dimensional Doors dimensions into dimensions that can be registered with JustEnoughDimensions. It also creates a dimensions.json file that details them, but it may need to be moved to config/justenoughdimensions in order to be loaded. In addition, there may be some kind of limit as to how many dimensions can be registered. We're having trouble registering more than 20 or so, so if you have many more Dimensional Doors dimensions than that, you may have to pick and choose the most important ones to load by removing the others from the dimensions.json file. In addition old rifts no longer work, but old mystcraft books do, so make sure you have another way of getting to your old dimensions beyond the doors and rifts. I'm still working on this...kinda.
What happens now is up to you and what you post below. If you would like to see the code, let me know. If you would like to see specific updates to the code, let me know. If you have a specific world or pack you would like to see files for, or have created files for, let me know. If you have a very important world that you would like me to translate personally, (especially if you are willing to pay me to work on it) let me know. Feel free to ask questions about the specifics of what I've done so far. And once we've got some videos of the new converted world, I'll put some links up to those as well.
This save predates 1.7.10, it can no longer be loaded here. Please load in 1.7.10 or 1.8 first.
Thus began a several month-long hacking spree, first to get this message to go away, and then to get the world in question, a world my wife and I had been recording videos in for several years, to not just load but load well...mostly.
The program started out as a quick and dirty hack and got dirtier and hackier the more I realized how much work it needed to do. If I had known then what I know now, I probably would have made it a proper application. If there is sufficient interest, I may yet do so.
Regardless, what I have so far may prove useful to others, so I'm creating a blog for it, where folks can express such interest and talk about the problem.
FYI: the accepted wisdom is that the best/only way to load modded 1.7.10 worlds into 1.12.2 is to load them into intermediate versions first. Even if you can find versions of all the mods in your pack for some intermediate version, this didn't work well (or really at all) for me. If you are having similar problems, I may be able to help.
Here is what I have so far:
I have written several C language programs that compile with gcc on Ubuntu (probably elsewhere as well though I've not tried it).
Two are Utilities for exploring worlds:
demca.c extracts the chunks from a minecraft .mca world file which can then be viewed with an NBT editor. It does not, however, put those chunks back together into an .mca file, though the code for doing so exists in levelfix.c It requires the zpipe command be installed in order to run.
idharvest.c combs the resulting chunk files for 'id' tags that are strings. For 1.7.10 the output consists mainly of the names of entities, for more recent versions, the names of items in chests and other receptacles are also printed.
The other is the world translator program:
levelfix.c does the main work of converting a modded minecraft 1.7.10 world to 1.12.2. It requires a number of configuration files which are specific to the modpack (and version thereof) the world was created in. For the moment, I only have files that work for a specific older version of the modpack my wife and I made for 1.7.10: Rainbow Robot.
However, the program is general enough that sets of files could be made for other modpacks. It could potentially be made more generalized as well, if there is sufficient interest. That's part of the point of this blog. I'd love to help others with the problems I had, but I'm not going to go to the trouble if no one cares.
The config files it needs to translate a world well include:
sortlation - a list of block and item names from the old modpack and their equivalents in the new modpack. Between 1.7.10 and 1.12.2 all blocks and items were forced to have all lowercase names and many mods decided it was a good time to rename everything anyway. In addition, the location of the dictionary of names to numbers in level.dat was changed. This file is used to create a new dictionary (or registry as it's now called) for all your old blocks and items. Without this, only vanilla items and blocks will survive the translation process, and only if they are stored in vanilla or Iron Chests. Additionally, it is the existence of the old dictionary that causes forge to throw up the "Can no longer be loaded here" error I mentioned above. Once the dictionary is converted into a registry, the world will at least load, though many things may still be wrong. While my sortlation file may work kinda on packs other than rainbow robot, it is highly recommended you make your own.
biomes - a list of biome ID numbers from the old modpack and equivalent biome names from the new. I had to look up the old ID numbers online and in config files from the old modpack. The new ones were stored in the new level.dat file for worlds created with the new pack. Without this file, only vanilla biomes survive the translation process, all modded biomes become plains. The geography stays the same, but they are treated as plains as far as color and mobs that spawn. I do not believe that any biome IDs needed to be changed in our modpack so this file should work for other modpacks that also didn't require any biome IDs to be changed. If they were changed, this file will need to be fixed to reflect that to work well with worlds from any other pack.
idreplace - a list of entity ids from the 1.7.10 version of the pack and their replacements in 1.12.2. Entities are all mobs and any block that requires extra data known as NBT data. These also are forced to be all lowercase in 1.12.2 and for that reason again a lot of them have been renamed. Without this, all non-vanillla mobs and blocks lose any extra info they may have. Storage containers become empty. Most mobs simply disappear. Since entity names are the same from one pack to another, this file should work as is on other packs, though the file might need to be expanded to support entities from mods not in Rainbow Robot. The utility programs above can be very useful for finding the old and new names of entities.
mats - a list of microblock materials in 1.7.10 and their replacements in 1.12.2. To my surprise, most Forge microblocks can be made to survive translation, but the names for the materials have changed. This file provides old and new names for some common microblock materials. You may find more materials have been used in your worlds than are in this file and they may need to be added or the microblocks will disappear. Levelfix.c currently reports the names of microblock materials it finds and whether it knows a replacement name or not. I find having actually additions installed helps greatly with this as it allows you to view the NBT data for microblocks. FYI: mekanism pipes and wires are no longer microblocks in 1.12.2 and will not survive. I have also had trouble with ProjectRed pressure tubes. Also ExtraUtils2 no longer supports any of the old ExtraUtilities microblocks. Other than that, microblocks seem to work!
symbols - a list of mystcraft symbols in 1.7.10 and their replacements in 1.12.2. To my surprise, most mystcraft pages can be made to survive translation, but the internal names of the symbols have changed. This file provides old and new names for some common mystcraft symbols. You may find more symbols exist in your worlds and they may need to be added to the file, or the pages will appear to have ? on them instead of a symbol and probably won't work. I find having actually additions installed helps a lot as it allows you to view the NBT data for mystcraft pages.
replace - a list of block numbers and metas in the world to replace with other block numbers and metas. The sortlation file above only works for blocks that translate directly 1 to 1. Many mods have changed this. For example, Thaumcraft used to store all wooden machines under one block number Now they each have their own block number. Entries in this file can be used to override the dictionary above and change the actual block ids and metas within the world. There are some limits to this. Among other things, some sections of chunks are stored with no meta array at all, if no block within that section HAS a meta value other than zero. The translator currently ignores such sections. Usually they are mostly empty, but sometimes they contain for example the tops of trees, which may fail to translate. However, because this file uses block numbers, not names, the one I used for my world will not work for any worlds not created with the exact version of Rainbow Robot that world was created with. You'll need to make your own if you are not satisfied with the translation that registry entries provide.
inventory - a list of inventory numbers from 1.7.10 and inventory names from 1.12.2 to replace them with. Although there is a registry to translate item numbers to names in the level.dat file from worlds created in 1.12.2, the registry seems to be ignored, so the numbers of items in player inventories and chests and such need to be translated to names. Most of this can be done using the sortlation file above, but again some mods have changed what used to be one item into many, or what used to be many items into one. This file is used to modify the numbers before they are translated into names. Because this file also uses numbers, my file will only work with worlds created with one specific version of one specific modpack. You'll need to make your own file if you care to be that detailed.
Beyond microblock materials and mystcraft pages, the current translator offers no support for items or blocks that store their NBT data differently in 1.12.2 than in 1.7.10. Not a lot of blocks or items do, but for example Agricraft seeds and planted crops, Carpenter's blocks and Mekanism pipes and wires and Tinker's patterns, casts, and tools do. Also the replacement mod for Minefactory Reloaded, Industrial Foregoing, does things very differently. As-is there is very little the translation program does about this.
As Dimensional Doors was in our pack, but new versions of Dimensional Doors handle dimensions quite differently, the translation program detects and converts old Dimensional Doors dimensions into dimensions that can be registered with JustEnoughDimensions. It also creates a dimensions.json file that details them, but it may need to be moved to config/justenoughdimensions in order to be loaded. In addition, there may be some kind of limit as to how many dimensions can be registered. We're having trouble registering more than 20 or so, so if you have many more Dimensional Doors dimensions than that, you may have to pick and choose the most important ones to load by removing the others from the dimensions.json file. In addition old rifts no longer work, but old mystcraft books do, so make sure you have another way of getting to your old dimensions beyond the doors and rifts. I'm still working on this...kinda.
What happens now is up to you and what you post below. If you would like to see the code, let me know. If you would like to see specific updates to the code, let me know. If you have a specific world or pack you would like to see files for, or have created files for, let me know. If you have a very important world that you would like me to translate personally, (especially if you are willing to pay me to work on it) let me know. Feel free to ask questions about the specifics of what I've done so far. And once we've got some videos of the new converted world, I'll put some links up to those as well.
Hey, I am going through a very similar issue, but I don't need to move everything over, I just want to be able to have my building, and the same items in my chests if that's feasible to do...
ReplyDeleteDo you think you can help me with that?
hey could you please translate my world? i wanna play with my friends on the newer version because we started on 1.7.10 and wanna play now on 1.12.2.please help
ReplyDeleteYour services would be fantastic!
ReplyDelete