Credit to Last_username for originally writing this checklist on Reddit. I’m copy/pasting it over here for convenience. I’ve updated a few things already, but there is probably still some outdated information, so let me know if there more are things that need updating.
This is a list of issues that all mapmakers should go through for every map they create. Some of these are critical, others are just finer details that give your map a professional shine. Feel free to suggest additions to this list in the comments.
If possible, you should provide an AutoReferee configuration for your map. This is essential if you want your map to be considered for use in a tournament. Read the configuration guide in advance so you know what AR is capable of and what it requires from you.
If your map is surrounded by void, use a superflat world with a custom layer preset that generates empty chunks, such as “2;0;14”. This preset generates the empty chunks with biome ID set to 14 (Mushroom Island), which mobs can’t spawn in. Since the server can generate empty chunks on the fly, you can delete any chunks that don’t contain part of your map.
Any surfaces, horizontal or vertical, on coordinates that are multiples of 16 are prone to lighting errors. Avoid this as much as possible i.e. don’t chunk-align the lanes.
- Set biomes as desired using a tool such as SethBling’s MCEdit biome filter. You will probably want to set the spawn area to Mushroom Island so that mobs won’t spawn there. You can set the lanes to whatever you like. Setting them to desert will prevent rain and animal spawning, but the grass and trees will be brown. To prevent rain without using a desert biome:
- Download NBT Explorer (Google it)
- Open and navigate to your map
- Expand level.dat
- Expand Data: 24 entries (might be more or less)
- Double click and edit rainTime
- Enter “999999999” and click OK.
- Remember to click Save (third icon in the toolbar) before closing
- If your map has, or may eventually have, a lot of redstone logic, command blocks, or custom spawners, you must plan your map layout carefully to avoid various performance issues. This is a very complex subject, far too complex to thoroughly cover here, but it’s one of the topics I am planning to cover in an upcoming mapmaking series on my YouTube channel. The super-condensed version is that you need to put as much of the redstone/spawner junk as possible in the always-loaded chunks surrounding the default spawnpoint, and keep players far away from these chunks at all times. You really want to get this right from the start, because what sucks is discovering that your map is unplayable under real-world conditions, right before you plan to release it, and having to move or even redesign all the wiring.
Set the default spawn point in the middle of a 20x20 or larger platform. Players will spawn on the highest block, so don’t cover the 20x20 area with anything.
Ensure the protected zone (33x33 area centered on the spawn point) does not overlap the lanes or any buttons/chests/minecarts/etc. that players have to use.
Build a nice sign at the spawn area. Check your spelling and use a nice font.
- Install a referee lever and set it to “ready” by default.
For a symmetrical map, choose one lane to edit and copy it to the other lane before each release. Most maps are mirrored across a line (e.g. Direct Fire) but some are rotated 180 degrees around a point (e.g. Twisted Desert). Unfortunately, there is presently no single tool that can do this reliably. MCEdit can’t rotate/flip blocks added after Minecraft 1.4. WorldEdit handles all blocks but copying large objects while the game is running tends to cause problems with block updates.
Fix any team-specific blocks, signs, chests, etc. For example, if the lanes are color-coded with wool, you will have to replace those blocks in the mirrored lane.
- Fix signs in the mirrored lane. Signs with arrows on them will be backwards. Rows of signs will be in reverse order. Floor-mounted signs may be facing backwards, due to a bug in MCEdit.
MCEdit sometimes fails to relight chunks after edits, so check the lighting closely and use the chunk tool to relight anything that doesn’t look right. When in doubt, just relight the whole map.
Fix any unwanted vine growth, especially vines that have spread outside the lane. If it doesn’t get in the way of anything else, you can use block 36 as an invisible barrier to vines.
Verify that all game rules are set to your liking. You can see all the rules by typing
/gameruleand then pressing tab. These are saved with the map
Set the difficulty to peaceful, so mobs stop spawning, then butcher all existing mobs and items. Be careful not to kill any animals or villagers that are supposed to be in the map. Difficulty is not saved with the map. If you allow Endermen to spawn on the map while you work on it, they will move blocks around and make a mess. You can prevent this by setting the
mobGriefinggame rule to
false, but remember to set it to the desired value before releasing the map.
- Set time to 0, or whenever you want your map to start.
region/*.mcrfiles. These are the old (pre-Anvil) format region files and cannot be played or edited, so they are just taking up space. You can also delete
level.dat_mcr. Usually, the only files you need to distribute are
autoreferee.yml. If you want to keep any scoreboard data, then you will also need
data/scoreboard.dat. In-game maps are also stored in
Give the map folder an appropriate title (“world” is not an appropriate title), and a version number. Never release multiple different versions of the map with the same version number. Avoid spaces in the filename. Most servers are managed from a command line, where spaces are purely an annoyance.
- Zip the map folder. The archive should contain a single folder, with the same name as the zip file, containing
level.dat. If there’s a
README, put it inside that folder. Don’t put any files in the root of the zip. Don’t put the world folder in another folder. Don’t use a weird archive format like RAR. Again, most servers are managed from a command line where all these things just get in the way. Do everything the standard way so players can get your map up and running quickly.
As a mapmaker, you need to be very careful in controlling what players can and can’t do on your map. In the game of Minecraft, players have a lot of power to circumvent your expectations of how a map will be played. You cannot rely on playtesting to reveal all of these. Here are some common types of exploits:
Unintended holes in bedrock walls may be used to bypass parts of the map. These will be found, even if they are well hidden, so you need to find them first.
Wool or other valuable items can be passed around bedrock walls by leaning outside the lane and placing them as blocks or putting them in a chest. Floating items can be picked up through bedrock walls through a thin edge. Items can be “squeezed” upward through solid blocks. And hopper minecarts can suck items through walls in a variety of ways.
Redstone mechanisms may be vulnerable to tampering by, for example: sending power through the bedrock blocks encasing it, or damaging the inside of the machine with TNT through thin edges and corners of the bedrock. Explosions from TNT minecarts will ignore any blocks underneath tracks, effectively treating them as air.
- If your map contains a “no-build” zone i.e. an area where players are not allowed to place or break blocks, there are some extra issues you need to be conscious of. First, the boundary of this zone needs to be made very obvious, right down to the block. Every block in the map must be unambiguously inside or outside the zone. Also, consider that there are still many legal ways to alter blocks in this zone without directly placing or breaking them, for example: water/lava flowing from outside the zone, TNT and Creeper explosions, Endermen picking up blocks, ice/snow melting, sand/gravel/anvils falling or being launched from a cannon, pistons, and blocks in an unstable state being updated.