# How to create a map:

WARNING: This tutorial is NOT simple, you need more than one brain cell to follow it.

Requirements:

[Minetest/Luanti 5.0.0 or later](https://luanti.org/)

[Minetest Game](https://content.luanti.org/packages/Luanti/minetest_game/)

[WorldEdit](https://content.luanti.org/packages/sfan5/worldedit/)

[Simple Shooter Game](https://github.com/a-bad-dev/simple-shooter-game/)

Step 1: Build your map. It must be perfectly square or rectangular and not contain any non-MTG nodes or rails.

Step 2: Surround the playable area in a box made of glass, WorldEdit helps with this.

Step 3: Create a barrier 4 blocks below the top of the map out of obsidian glass, leaving a 3-block gap of air between 
the barrier and roof.

Step 4: Select opposite corners of the map with WorldEdit and run `//mtschemcreate map`.

Step 5: Create a folder with the titile of your map in all lowercase with no spaces in `simple-shooter-game/mods/game/maps/maps/`.

Step 6: Copy the file `(Minetest/Luanti install path)/worlds/(name of the world in which you created your map)/schems/map.mts` to `simple-shooter-game/mods/game/maps/maps/(your map's folder)/`.

Step 7: Create a file called `map.lua` in `simple-shooter-game/mods/game/maps/maps/(your map's folder)/`.

Step 8: Open the `map.lua` file in a text editor and put the following content in it:

```lua
local map_data = {
	name = "(Your map name here)",
	size_x = (Size in the X direction of your map),
	size_y = (Size in the Y direction of your map),
	size_z = (Size in the Z direction of your map),
	
	barrier_level = (Distance from the bottom of the map to the barrier),
	
	spawn_x = nil,
	spawn_y = nil,
	spawn_z = nil,
	
	start_time = (Amount of time in seconds before the barrier is removed),

    scripts = {
        on_start = "(Lua script to be run after /start is run, leave blank unless you know what you are doing!)",
        on_barrier_remove = "(Lua script to be run after the barrier is removed, leave blank unless you know what you are doing!)",
        on_end = "(Lua script to be run after the match has ended, leave blank unless you know what you are doing!)"
    },

	classes = {
		class_1 = {
			name = "(Name of class #1 here)", 
			initial_items = {"(Initial item #1 for class #1)", "(Initial item #2 for class #1...)"}
		},

		class_2 = {
			name = "(Name of class #2 here)",
			initial_items = {"(Initial item #1 for class #2)", "(Initial item #2 for class #2...)"}
		},

		class_3 = {
			name = "(Name of class #3 here)",
			initial_items = {"(Initial item #1 for class #3)", "(Initial item #2 for class #3...)"}
		}
	}
}

return map_data
```

Step 9: Open Minetest/Luanti and create a new world with Simple Shooter Game.

Step 10: Play the world and run `/start (your map name)`.

Step 11: Verify the map loads and works.

And that's it!
