to give you some insight into how AML (the map format's name apparently?) works, all it does is read the line as a string and splits it into tokens, and does that over and over until it gets the basic parts of it, for example, this is an arbitrary wall i copied from sprout tower some time for my test map
{"EntityField"{ENT[{"Size"{intArr[4,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[3,0,0]}}{"TexturePath"{str[WoodTower]}}{"Textures"{recArr[[16,16,16,16]]}}{"TextureIndex"{intArr[0,0,0,0,0,0,0,0,0,0]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"Rotation"{int[0]}}]}}
so the game will read that whole thing as 1 line, then it finds out
-its an entity field
-its size is 4,1, because "Size" is an integer array (intarr) with the elements 4 and 1
-its making wall blocks, because EntityID is a string (str) with the value "WallBlock"
-its position is 3x,0y,0z because its "Position" subtag contains an array of singles (sngArr) with the elements 3.0, 0.0, 0.0
and so on for all the variables
-texture path is the name of the xnb file containing the texture/texture atlas you want, in the /Pokemon/Content/Textures/ folder, without the .xnb at the end. its a string
-textures is an array of rectangles containing the parts of the source texture (set by texture path) you want. if you want to have more than 1 texture you have something like "[0,0,16,16][16,0,16,16]" as the value, there are NO commas between elements in a rectangle array, they are delimited by []
-textureindex sets various parts of the entiy's model to use textures you set in 'Textures'. if you only have 1 texture this must be all 0 or the game will crash, lol
-collision and visible are self explanatory. 1 for true 0 for false
-modelid tells the engine what 'model' to use, these aren't external files you can import, they're just a set of points for the triangles nilllzz has set up to create several basic shapes he needs. i dont know the exact range of values for this off hand but 1 is a cube
-different models require different length texture indexes because some have less triangles than others. for billboards (sprites are textured planes that face the camera at all time in 3d games) you only need 2, so [0,0]
-action is another index thing, for npcs 0 is say what is stored in 'additionalvalue' and 1 is execute the script with the name set in additionalvalue.
-rotation is an integer from 0-3 that makes the object rotate 90 degrees on its y axis. 0 = 0, 1 = 90, 2 = 180, 3 = 270
-npcs set their sprite with a string called TextureID which is the name of the xnb containing its spritesheet in /Pokemon/Content/Textures/NPC/
various parts of the level loading process read these values and make the entity described in the tags.
if you are mapping in a text editor, when i doubt, just find an example thats close to what you want from an official map, copy/paste its tag into your map and edit the subtags to suit instead of writing the whole tag out yourself