I've been working on a tool to merge Minecraft worlds for anyone that wants to keep their old b1.7 world and continue playing it in b1.8, 1.0, etc. (Actually, this should work for maps all the way back to Alpha too!) The basic idea is fairly straightforward: put a river between old and new chunks so we don't get those horrible vertical walls, then smooth the surrounding terrain into a valley.
It requires two passes. First a step to trace the outline of the world before new chunks are added. Then once new chunks have been generated in game, you run the tool again to smooth out the transition between the two. You can run the tool multiple times if not all border chunks were generated on the first go.
It runs from the command line and requires Python. There are options available for controlling things like the level of smoothing, the width of the valley and river, etc. More instructions can be found in the project readme.
Project update: It's been a while since I've been active on this project. It relies on another project called pymclevel which is a Python library that can read Minecraft world saves (which was in turn part of the original MCEdit tool). Unfortunately that project was eventually abandoned, and by the time it was revived I had mostly lost interest in mcmerge and Minecraft in general. Since there were some improvements I had made to the tool that were never officially released, I decided I should make them more easily accessible to the community.
Version 0.7.1 should hopefully fix a crash that only some users were seeing that made the tool completely unusable on their worlds. Version 0.8.0 also adds support for most of the Minecraft 1.8 blocks. I had not done thorough testing on version 0.8.0 which is why it's marked experimental, but I don't expect any major problems. As for versions of Minecraft beyond version 1.8, this tool should still keep working fine (although it will ignore newer blocks) until the developers decide to make major changes to the world save format.
I don't currently have any plans to continue development on mcmerge, but if there's any serious show stopping bugs I'll be happy to take a look at them. For some reason my spam filter keeps eating up minecraftforum.net message notification e-mails no matter how many times I try to fix it, so it might be safest to raise major bug reports as issues on the GitHub project page.
Note: The Windows version does not require you to download Python separately. Everything it needs is already included besides the redistributable package linked above.
--- Project ---
You can also take a look at the project source here.
I'd love to hear some feedback about the configurations that create the most interesting results.
Check out the tutorial video put together by Durand1w:
Also here's another demo video of the results put together by Pjpuas:
--- Revision history ---
v0.1
- Initial version
- Places a river at old/new chunk interface and smooths with low pass filter
v0.2
- Fixed --help switch so it works without supplying world
- Ice is no longer treated as terrain to place river in
- Updated to latest version of pymclevel; better support for b1.8 blocks
- River corners now look rounder
- Fixed exception with very wide valley/river values
- Instead of exposed stone being transformed to dirt, the whole top layer is now shifted down; new switch controlling depth of this layer added
- Added win32 executable
v0.3
- Random river weaving so rivers along straight segments don't look so artificial
- The SciPy library is no longer optional (for anyone using the script version)
- Updated pymclevel and added support for merging with 1.9pre blocks
v0.4
- Removed floating trees are now replanted with an appropriate sapling
- Added a relighting step so there are no more dark areas under overhangs (no longer need postprocessing with MCMerge)
- Added a new phase for shifting the sea-height (no longer require MCMerge for this)
v0.4.1
- Updated pymclevel and added support for merging with version 1.0.0 blocks
v0.5.0
- Fixed crash when generating rivers in shallows
- Fixed shift mode so that player and spawn location are also shifted
- Modes are no longer specified by options but by a new mandatory parameter
- Added new mode 'relight' that does not alter the world but simply relights all chunks
- Made trace mode considerably more efficient
v0.5.1
- Fixed packaging to include data and submodule files from new pymclevel
- Made trace mode considerably more efficient (for real this time)
v0.5.2
- Fixed rare crash when placing river water
v0.5.3
- Added support for Anvil map format
v0.6.0
- Reorganised the command line interface for completely independent commands, much easier to find and use options
- New contour file format giving expanded merging abilities
- New merge mode to even out terrain topography without a river
- New merge mode allowing removed blocks below sea level to be replaced with water instead of air, i.e. water spills over onto coast
- Block shifting now delayed until merging step by default, i.e. possible to shift even after new chunks are generated
- New tracing options allowing different merge modes to be specified as well as advanced options to permit transitions between modes
- Better merging performance
- Fixed bug where water one block above sea level would not be removed while erroding terrain
- Fixed crash when empty contour data file was given
- The Win32 executable can now be run from any working directory
v0.6.1
- Updated pymclevel for better Minecraft 1.3 support
- Algorithm recognises more blocks correctly (e.g. jungle trees)
v0.6.2
- Updated pymclevel for better Minecraft 1.4 support
- Currently only Anvil map format supported for PC (convert older maps with Minecraft first or use v0.6.1)
v0.6.3
- Updated pymclevel for better Minecraft 1.5 support
- Older maps (before Minecraft 1.2 Anvil format) still require conversion using Minecraft first
v0.7.0
- Updated to support Minecraft 1.7
- Added support for double block height flowers
- Fixed code that replaces removed trees with saplings; previously some saplings were of the wrong kind while others didn't show up at all
- Fixed some other bugs to do with shifting down surface blocks
- New option to use dry rivers at the merge interface; use --river-dry option
- Updated Makefile so it doesn't attempt to build Windows specific stuff on other platforms
v0.7.1
- Fixed crash due to immutable blocks
v0.7.2
- Dry river bed option now an option on trace instead of merge step, i.e. merge --river-dry becomes trace -t dry
- Completely remove giant mushrooms
v0.8.0
- Updated to support Minecraft 1.8 snapshot
- Huge mushrooms are now replanted as small mushrooms
Yeh, it should work without any problems for merging earlier versions too. It relies on pymclevel to do the heavy lifting which appears to have support going back to Alpha (actually it seems to go back even further to Classic but I wouldn't be surprised if something went horribly wrong when attempting to merge that far back).
Python was really the fastest way for me to do this. I think there's also a C# library for map editing but this tool would have to become pretty wildly popular to invest that sort of time.
Is your biggest concern the need to have to separately install Python and supporting libraries? There's some tools for wrapping up Python scripts into standalone executables I could look into if that's the case (I think this is possible on both Windows and OS X but unfortunately I don't have access to the latter).
Yes, It was. I am glad to hear it will work with past versions because I have many old maps I don't want to have derp mountains on. Can you add an option on the program to put a fence instead of a lake but still smooth the land? That would be useful. Thanks again.
Oh hey, a way to merge my old worlds with new ones, awesome!
This is even better than the "copy world files of old world to Nether folder" method that I had heard of people wanting to try!
I haven't tested the tool yet, but I'll definitely do so when you get an .exe version up!
If you need help you might be able to ask Eggplant!, author of the "MCDungeon" tool as he uses Python as well and he's created a Windows .exe for it
Alright, I'll get onto the exe version as soon as I can.
As far as a version with smoothed land and a fence instead of a river. That should be fairly doable, but there's a couple other improvements to the river generating code that I'll want to get onto before I would have a chance to look at this.
I've been working on a tool to merge Minecraft worlds for anyone that wants to keep their old 1.7 world and continue playing it in 1.8. The basic idea is fairly straightforward: put a river between old and new chunks so we don't get those horrible vertical walls, then smooth the surrounding terrain into a valley.
It requires two passes. First a step to trace the outline of the world before new chunks are added. Then once new chunks have been generated in game, you run the tool again to smooth out the transition between the two. You can run the tool multiple times if not all border chunks were generated on the first go.
It runs from the command line and requires Python. There are options available for controlling things like the level of smoothing, the width of the valley and river, etc. More instructions can be found in the project readme.
Hey guys. I've put up a new version with some improvements. Check out the release notes in the project README for changes. A few bugs were fixed and improvements made that should make the result a little nicer. I've also put up a Windows executable for those who were asking for it.
@thad0ctor - Yes, you can merge two 1.7 maps however as of v0.2 all the heights have been modified to fit the new sea level in Minecraft 1.8. For best results with 1.7 and earlier you will have to increase all of the following height values by 1: --river-height, --valley-height, --sea-level. (Use --help to find out the default values.)
@Commander Keen - I agree, the plan is for v0.3 to have some snaking in the rivers to make long straight sections look less artificial.
@micomico - Thanks for the bug reports! All fixed.
The Meaning of Life, the Universe, and Everything.
Location:
Deep in a Mineshaft
Join Date:
12/17/2010
Posts:
58
Minecraft:
Pjpuas
Member Details
I too would like to know why this isn't getting more attention. Its sounds like a great tool.
However I haven't had much luck getting this started. The exe runs for a half a second and than
disappears. I do have the Visual C++ 2008 installed, so I'm not really sure why its not working.
I am running a Windows 7 64 bit Intel Core i5 system, if it makes any matter.
Am I missing anything or doing something wrong? Any help would be appreciated as I would like
to not add new cliffs to my map. There are way too many already as it is.
Version 0.3 is up. No more boring straight rivers, they wind their way along straight segments now. Also added support for 1.9pre maps. Check out the updated screenshots of the results.
By the way, can anyone suggest how I could make the images in the spoiler tags automatically resize to fit nicely in the thread window? I've seen it done elsewhere but not sure what voodoo combination of tags is required. Cheers.
I too would like to know why this isn't getting more attention. Its sounds like a great tool.
However I haven't had much luck getting this started. The exe runs for a half a second and than
disappears. I do have the Visual C++ 2008 installed, so I'm not really sure why its not working.
I am running a Windows 7 64 bit Intel Core i5 system, if it makes any matter.
Am I missing anything or doing something wrong? Any help would be appreciated as I would like
to not add new cliffs to my map. There are way too many already as it is.
That is quite odd, I'm running a setup fairly similar to yours. You're saying it doesn't generate a traceback of the error at all? Are you executing this from the command line?
All I did is change the *.py to *.exe and its working. I feel rather silly since it took me so long to realize
that, but I guess its yet another lesson against blindly copy/pasting. Anyways, thanks for the reply.
Im excited to see the results of this tool.
I'm going to noob it up in here and ask: how do I make this work? When I run the .exe command prompt starts up for a split second. All I can see is that it says to specify a world folder or something. How do I do this? Thanks and sorry for my noobness :x
How do I do this? Thanks and sorry for my noobness :x
No need to apologize, were all n00bs at more than one point on our lives.
You first have to open up command prompt, if you cant find it in: Start Menu --> Accessories
Than you can just find by searching for "cmd" on the Start Menu search bar.
From there you have use the command "cd" followed by a space and the location to where you
have saved the mcmerge.exe file.
From there you can finally run the trace command as follows:
No need to apologize, were all n00bs at more than one point on our lives.
You first have to open up command prompt, if you cant find it in: Start Menu --> Accessories
Than you can just find by searching for "cmd" on the Start Menu search bar.
From there you have use the command "cd" followed by a space and the location to where you
have saved the mcmerge.exe file.
From there you can finally run the trace command as follows:
I have to admit, using the seed shipwreck was a horrible idea and the new chunk generation around the freshly deleted edges varied from sea level to massive mountains, but it tested these two mods very extensively. If you are considering updating your map using these two tools works like a charm.
Absolutely fantastic.
A few small quirks: lava underwater and maimed a village, but all in all, looking at the map renderings I have done has been amazing.
One small suggestion: In the windows version include simple .bat files to help the noobies out there.
My bat files were:
mcmerge --trace C:\Users\<USERNAME>\AppData\Roaming\.minecraft\saves\<WORLDNAME>
pause
I've been working on a tool to merge Minecraft worlds for anyone that wants to keep their old b1.7 world and continue playing it in b1.8, 1.0, etc. (Actually, this should work for maps all the way back to Alpha too!) The basic idea is fairly straightforward: put a river between old and new chunks so we don't get those horrible vertical walls, then smooth the surrounding terrain into a valley.
It requires two passes. First a step to trace the outline of the world before new chunks are added. Then once new chunks have been generated in game, you run the tool again to smooth out the transition between the two. You can run the tool multiple times if not all border chunks were generated on the first go.
It runs from the command line and requires Python. There are options available for controlling things like the level of smoothing, the width of the valley and river, etc. More instructions can be found in the project readme.
Project update: It's been a while since I've been active on this project. It relies on another project called pymclevel which is a Python library that can read Minecraft world saves (which was in turn part of the original MCEdit tool). Unfortunately that project was eventually abandoned, and by the time it was revived I had mostly lost interest in mcmerge and Minecraft in general. Since there were some improvements I had made to the tool that were never officially released, I decided I should make them more easily accessible to the community.
Version 0.7.1 should hopefully fix a crash that only some users were seeing that made the tool completely unusable on their worlds. Version 0.8.0 also adds support for most of the Minecraft 1.8 blocks. I had not done thorough testing on version 0.8.0 which is why it's marked experimental, but I don't expect any major problems. As for versions of Minecraft beyond version 1.8, this tool should still keep working fine (although it will ignore newer blocks) until the developers decide to make major changes to the world save format.
I don't currently have any plans to continue development on mcmerge, but if there's any serious show stopping bugs I'll be happy to take a look at them. For some reason my spam filter keeps eating up minecraftforum.net message notification e-mails no matter how many times I try to fix it, so it might be safest to raise major bug reports as issues on the GitHub project page.
--- Download mcmerge ---
Version 0.1
Version 0.2
Version 0.3
Version 0.4
Version 0.4.1
Version 0.5.0
Version 0.5.1
Version 0.5.2
Version 0.5.3
Version 0.6.0
Version 0.6.1
Version 0.6.2
Version 0.6.3
Version 0.7.0
Version 0.7.1
Version 0.7.2
Version 0.8.0 experimental
Requires
Python 2.6+
NumPy
SciPy
pywin32 (on Windows)
--- Download mcmerge for Windows ---
Version 0.2 (win32)
Version 0.3 (win32)
Version 0.4 (win32)
Version 0.4.1 (win32)
Version 0.5.0 (win32)
Version 0.5.1 (win32)
Version 0.5.2 (win32)
Version 0.5.3 (win32)
Version 0.6.0 (win32)
Version 0.6.1 (win32)
Version 0.6.2 (win32)
Version 0.6.3 (win32)
Version 0.7.0 (win32)
Version 0.7.1 (win32)
Version 0.7.2 (win32)
Version 0.8.0 experimental (win32)
Requires
Should be good to go as is. If another program hasn't already installed it, you will need to install the Microsoft Visual C++ 2008 Redistributable Package (x86)
Note: The Windows version does not require you to download Python separately. Everything it needs is already included besides the redistributable package linked above.
--- Project ---
You can also take a look at the project source here.
I'd love to hear some feedback about the configurations that create the most interesting results.
----------------------------------------------------------
Here's some screenshots of the results:
Check out the tutorial video put together by Durand1w:
Also here's another demo video of the results put together by Pjpuas:
--- Revision history ---
v0.1
- Initial version
- Places a river at old/new chunk interface and smooths with low pass filter
v0.2
- Fixed --help switch so it works without supplying world
- Ice is no longer treated as terrain to place river in
- Updated to latest version of pymclevel; better support for b1.8 blocks
- River corners now look rounder
- Fixed exception with very wide valley/river values
- Instead of exposed stone being transformed to dirt, the whole top layer is now shifted down; new switch controlling depth of this layer added
- Added win32 executable
v0.3
- Random river weaving so rivers along straight segments don't look so artificial
- The SciPy library is no longer optional (for anyone using the script version)
- Updated pymclevel and added support for merging with 1.9pre blocks
v0.4
- Removed floating trees are now replanted with an appropriate sapling
- Added a relighting step so there are no more dark areas under overhangs (no longer need postprocessing with MCMerge)
- Added a new phase for shifting the sea-height (no longer require MCMerge for this)
v0.4.1
- Updated pymclevel and added support for merging with version 1.0.0 blocks
v0.5.0
- Fixed crash when generating rivers in shallows
- Fixed shift mode so that player and spawn location are also shifted
- Modes are no longer specified by options but by a new mandatory parameter
- Added new mode 'relight' that does not alter the world but simply relights all chunks
- Made trace mode considerably more efficient
v0.5.1
- Fixed packaging to include data and submodule files from new pymclevel
- Made trace mode considerably more efficient (for real this time)
v0.5.2
- Fixed rare crash when placing river water
v0.5.3
- Added support for Anvil map format
v0.6.0
- Reorganised the command line interface for completely independent commands, much easier to find and use options
- New contour file format giving expanded merging abilities
- New merge mode to even out terrain topography without a river
- New merge mode allowing removed blocks below sea level to be replaced with water instead of air, i.e. water spills over onto coast
- Block shifting now delayed until merging step by default, i.e. possible to shift even after new chunks are generated
- New tracing options allowing different merge modes to be specified as well as advanced options to permit transitions between modes
- Better merging performance
- Fixed bug where water one block above sea level would not be removed while erroding terrain
- Fixed crash when empty contour data file was given
- The Win32 executable can now be run from any working directory
v0.6.1
- Updated pymclevel for better Minecraft 1.3 support
- Algorithm recognises more blocks correctly (e.g. jungle trees)
v0.6.2
- Updated pymclevel for better Minecraft 1.4 support
- Currently only Anvil map format supported for PC (convert older maps with Minecraft first or use v0.6.1)
v0.6.3
- Updated pymclevel for better Minecraft 1.5 support
- Older maps (before Minecraft 1.2 Anvil format) still require conversion using Minecraft first
v0.7.0
- Updated to support Minecraft 1.7
- Added support for double block height flowers
- Fixed code that replaces removed trees with saplings; previously some saplings were of the wrong kind while others didn't show up at all
- Fixed some other bugs to do with shifting down surface blocks
- New option to use dry rivers at the merge interface; use --river-dry option
- Updated Makefile so it doesn't attempt to build Windows specific stuff on other platforms
v0.7.1
- Fixed crash due to immutable blocks
v0.7.2
- Dry river bed option now an option on trace instead of merge step, i.e. merge --river-dry becomes trace -t dry
- Completely remove giant mushrooms
v0.8.0
- Updated to support Minecraft 1.8 snapshot
- Huge mushrooms are now replanted as small mushrooms
Will it work for like say, merging 1.5_01 with 1.8? or is it strictly 1.7-1.9?
also I wish it wasn't python.
Python was really the fastest way for me to do this. I think there's also a C# library for map editing but this tool would have to become pretty wildly popular to invest that sort of time.
Is your biggest concern the need to have to separately install Python and supporting libraries? There's some tools for wrapping up Python scripts into standalone executables I could look into if that's the case (I think this is possible on both Windows and OS X but unfortunately I don't have access to the latter).
This is even better than the "copy world files of old world to Nether folder" method that I had heard of people wanting to try!
I haven't tested the tool yet, but I'll definitely do so when you get an .exe version up!
If you need help you might be able to ask Eggplant!, author of the "MCDungeon" tool as he uses Python as well and he's created a Windows .exe for it
As far as a version with smoothed land and a fence instead of a river. That should be fairly doable, but there's a couple other improvements to the river generating code that I'll want to get onto before I would have a chance to look at this.
can you merge two 1.7 maps together as well?
@thad0ctor - Yes, you can merge two 1.7 maps however as of v0.2 all the heights have been modified to fit the new sea level in Minecraft 1.8. For best results with 1.7 and earlier you will have to increase all of the following height values by 1: --river-height, --valley-height, --sea-level. (Use --help to find out the default values.)
@Commander Keen - I agree, the plan is for v0.3 to have some snaking in the rivers to make long straight sections look less artificial.
@micomico - Thanks for the bug reports! All fixed.
However I haven't had much luck getting this started. The exe runs for a half a second and than
disappears. I do have the Visual C++ 2008 installed, so I'm not really sure why its not working.
I am running a Windows 7 64 bit Intel Core i5 system, if it makes any matter.
Am I missing anything or doing something wrong? Any help would be appreciated as I would like
to not add new cliffs to my map. There are way too many already as it is.
By the way, can anyone suggest how I could make the images in the spoiler tags automatically resize to fit nicely in the thread window? I've seen it done elsewhere but not sure what voodoo combination of tags is required. Cheers.
That is quite odd, I'm running a setup fairly similar to yours. You're saying it doesn't generate a traceback of the error at all? Are you executing this from the command line?
Indeed I was, however I figured out what was wrong, I completely overlooked that on the instructions it specifies:
All I did is change the *.py to *.exe and its working. I feel rather silly since it took me so long to realize
that, but I guess its yet another lesson against blindly copy/pasting. Anyways, thanks for the reply.
Im excited to see the results of this tool.
No need to apologize, were all n00bs at more than one point on our lives.
You first have to open up command prompt, if you cant find it in: Start Menu --> Accessories
Than you can just find by searching for "cmd" on the Start Menu search bar.
From there you have use the command "cd" followed by a space and the location to where you
have saved the mcmerge.exe file.
From there you can finally run the trace command as follows:
Of course don't forget to modify the above command to point to the world you would like
to use this tool on.
Hopefully that helps you Obiwanobi.
That helped a whole bunch! I got the tracer to work but now I am having trouble getting the --smooth function to work. This is what happens:
I thought I did provide the world directory location :sad.gif:
How does this handle caves underground though? This works nice for topside but does it just flat wall caves below?
and how do you set where in the new world the worlds merge at?
Thanks!
I have to admit, using the seed shipwreck was a horrible idea and the new chunk generation around the freshly deleted edges varied from sea level to massive mountains, but it tested these two mods very extensively. If you are considering updating your map using these two tools works like a charm.
Absolutely fantastic.
A few small quirks: lava underwater and maimed a village, but all in all, looking at the map renderings I have done has been amazing.
One small suggestion: In the windows version include simple .bat files to help the noobies out there.
My bat files were:
mcmerge --trace C:\Users\<USERNAME>\AppData\Roaming\.minecraft\saves\<WORLDNAME>
pause
-and-
mcmerge C:\Users\<USERNAME>\AppData\Roaming\.minecraft\saves\<WORLDNAME>
pause
Really simple, but much simpler to include for everyone.