Tutorials/Updating old terrain

The following tutorial was made by the Reddit user /u/25A0.

This tutorial explains how to prepare an existing world for the upcoming 1.13 update, so that you won't need to travel thousands of blocks into unexplored terrain to see the new, pretty oceans.

I've successfully used this approach on a large (>2GB) world that was started with the release of 1.7.2 in late 2013.



The ship on the right was built in 2013, but now there's sea grass growing right next to it.

This approach should work for any worlds generated after 1.7.2, up until 1.12.2. However, it will not work if you already opened your world in 1.13, or any pre-release or snapshot that was released after 1.12.2. If you already did that, then the rest of this tutorial will not work for you. Sorry :(

This process deletes parts of your world, so read these instructions carefully to make sure that you understand exactly what you're doing.

How it works
Version 1.13 vastly changes the appearance of oceans, swamps and rivers by adding features like shipwrecks, coral reefs, and seagrass. However, the new terrain generation doesn't affect the biome type or terrain altitude. Using an external tool, we can delete any oceans, rivers, and swamps in an existing world. When the world is then opened in 1.13, the game will regenerate the chunks we deleted previously. Since the biome types and altitude didn't change in 1.13, the regenerated chunks will seamlessly blend into the existing landscape, but they will generate with the new underwater features.

I wrote a plugin for MCEdit to delete certain biomes from a world. You can specify exactly which biomes you want to delete. It is also possible to protect regions of your world, in case you need to preserve existing builds in those biomes.

The plugin inspects each chunk of your world, and decides for each chunk whether it can be deleted. In Minecraft, a single chunk can contain different biomes. For example, along the shore of an ocean, a lot of chunks will contain ocean biomes as well as beach biomes. Sometimes it is not obvious how these cases should be handled, so the plugin can be used in one of two modes:


 * Aggressive mode deletes chunks that contain any of the selected biomes. For example, if you decide to delete all river biomes in aggressive mode, the plugin will delete a chunk as soon as it contains a single block of river biome, no matter which other biomes are present in that chunk.
 * Cautious mode only deletes chunks that contain nothing but the selected biomes. For example, if you tell the plugin to delete ocean and beach biomes, then it will only delete chunks in which each block is part of an ocean biome or a beach biome. If there is a single block in that chunk that is neither in an ocean nor in a beach biome, then it won't delete that chunk.

Here is an example to illustrate the difference:

There are four biomes present here: plains (green), beaches (yellow), rivers (light blue), and oceans (dark blue). If you were to delete all rivers, beaches, and oceans with the plugin, then all purple striped chunks would be deleted no matter which mode you use. But in aggressive mode, also the red striped chunks would be deleted.

In general, aggressive mode will lead to better results, especially if you want to regenerate river biomes. However, you may need to protect more regions of your world.

To protect regions of your world, you will need to modify my plugin by writing some Python code -- but don't worry! It's not that difficult, and I'll guide you through it as best I can.

So, let's get started. I hope you're not in a rush, because this whole process may very well take a couple of hours.

Preparation

 * 1) Make a backup of your world.
 * 2) Test your backup to make sure that it works.
 * 3) Imagine, for a moment, how you would feel when anything goes wrong along the way that corrupts your beautiful world. Your base is gone. Your farms are gone. The years of work and creativity you put into that world are lost. With that in mind, make sure you actually did steps 1 and 2, and didn't just skip them.
 * 4) Download and install MCEdit. I only tested this with MCEdit 2.0.0 beta 12. You can download MCEdit here for Windows and macOS.
 * 5) Download the biome deleter plugin here and extract it. You will find two files; a copy of this tutorial, as well as the plugin in a file called 'biome_deleter.py'.
 * 6) Decide which biomes you want to delete. To the best of my knowledge, the following biomes are affected by the new terrain generation:
 * 7) * (ID 0)
 * 8) * (ID 6)
 * 9) * (ID 7)
 * 10) * (ID 10)
 * 11) * (ID 15)
 * 12) * (ID 16)
 * 13) * (ID 24)
 * 14) * (ID 25)
 * 15) * (ID 26)

Protecting regions of your world
Once you decided which biomes you want to delete, make a (mental) list of things you built in those biomes, or near the edges of those biomes. Remember that, depending on the mode you use, the plugin may delete chunks even if they contain biomes that you did not want to delete.

If you haven't built anything in those biomes that you want to keep, skip to the next section. Otherwise, this section will teach you how you can modify the plugin to protect those builds.




 * 1) Open your world in MCEdit. If you've never used MCEdit before, here's what you'll need to know to follow the rest of this tutorial:
 * 2) * MCEdit has three camera modes. A sideways camera that looks like Terraria, an overview camera that shows the world from the top, as well as a full 3-D camera. You can switch between them using the three buttons labeled 2D, Over, and 3D. For this tutorial, we'll be using the overview camera.
 * 3) * Press and hold the right mouse button to move around.
 * 4) * The toolbar is on the left-hand side of the window. For this tutorial, we'll only be using the Select tool.
 * 5) * Using the chunk selector, you can select chunks by dragging a box with the left mouse button.
 * 6) * The status bar at the bottom of the window shows a lot of useful information about whatever you're pointing at with your mouse cursor. In particular, it shows the block coordinates, chunk coordinates, and the biome. We will be using the chunk coordinates to define protected regions.
 * 7) Open the plugin ('biome_deleter.py') in a text editor (e.g. Notepad on Windows, or TextEdit on macOS). Scroll down until you found a big headline saying 'Protected Regions' (line 200).
 * 8) For each region that you want to protect, do the following:
 * 9) Using the overview camera, find the region that you want to protect.
 * 10) Using the chunk selection tool, select the region that you want to protect.
 * 11) Find the chunk coordinates of the upper left and lower right chunk of the selected region. The status bar in MCEdit shows, from left to right, the x, y, and z coordinate of the chunk. So, when you see 'chunk (1, 0, -9)', then 1 is the x coordinate, 0 is the y coordinate, and -9 is the z coordinate of that chunk.
 * 12) In your text editor, find the area dedicated to your protected regions, and add a new line there.
 * 13) Type 'chunk_region(x1, z1, x2, z2),' (note the comma at the end there), but replace x1 and z1 by the x and z coordinate of the upper left chunk, and replace x2 and z2 by the x and z coordinate of the lower right chunk.
 * 14) Add spaces at the beginning of that new line until the 'c' in 'chunk_region' is right underneath the '#' signs in the lines above.
 * 15) Save the modified plugin.

Example
There are two regions that you want to protect.


 * The first one is your base. The box of chunks that encloses your base has chunk (-1, 0, 4) in its upper left corner, and chunk (3, 0, 12) in its lower right corner. So, we write 'chunk_region(-1, 4, 3, 12),' to define this region.
 * The second one is a mob farm in the middle of the ocean. The entire farm fits into a single chunk, namely chunk (33, 0, 15). In this case, the upper left and lower right "corner" are the same chunk, so we write 'chunk_region(33, 15, 33, 15),'.

This is what the modified section of the plugin would look like:

protected_regions = [ # Use spaces to indent your lines so far that the 'c' in   # 'chunk_region' is right under the # characters. # --- Add your protected regions below this line --- chunk_region(-1, 4, 3, 12), chunk_region(33, 15, 33, 15), # --- Add your protected regions above this line --- ]
 * 1) Protected Regions
 * 2) Any chunk region in this list will not be deleted.

If you're having trouble with this section, be sure to include the modified part of the plugin in your comment. If MCedit shows an error message, include the content of the error message, too.

Running the plugin

 * 1) Copy the (modified) plugin into the MCEdit plugins folder.
 * 2) * On Windows, you will find a folder next to the MCEdit 2 exe called 'MCEdit 2 Files'. The 'plugins' folder is inside that folder.
 * 3) * On macOS, the plugins folder is '~/Documents/MCEdit 2 Files/plugins'. You might need to create that folder if it doesn't exist.
 * 4) Restart MCEdit and open your world again. The biome deleter plugin should now be listed in the Plugins menu.
 * 5) Open the biome deleter plugin. It is listed as Biome deleter in the Plugins menu.
 * 6) Pick either Aggressive or Cautious mode (see above for the differences).
 * 7) Decide whether you want to run the plugin on the entire dimension, or just on the currently selected chunks.
 * 8) Select the biomes that you want to delete.
 * 9) Click OK to start the plugin. This may take hours depending on the size of your world, and the computer you're using. MCEdit may appear unresponsive in the process, but you should see a message in MCEdit's console window every now and then that reports how many chunks have been marked for deletion. Once the plugin finishes, MCEdit will be responsive again. You should also see a message in the console window that reports how many chunks have been marked for deletion in total.
 * 10) Now save the modified world. Again this may take a very long time, depending on the number of changed chunks.

Wrapping up
At this point, your world is ready to be opened in 1.13. Take a few minutes to fly around your world to verify that everything went well.

Good luck!

Known problems

 * This method will probably not work in worlds that were created prior to version 1.7 (released in 2013), since the terrain generation changed significantly in the 1.7 update.
 * Treetops near chunk borders may not regenerate properly.