Ok so then I have a question, your mod esp will automatically look in the data folder for other folders labeled "meshes" or "textures" etc or do you have to manually set it up? If you have to set it up manually I can google that but its nice to get a starting point for searching.
Kinda...
Say you have a custom box you want to add to the game.
The mesh for that box would go in:
Data\Meshes\MyMod\Box.nif
The texture for the box would be in:
Data\Textures\MyMod\Box.dds (and Box_n.dds)
The path to the texture would be specified in the .nif file.
Then, when you add the box to your esp file, you would specify that the mesh is at Data\Meshes\MyMod\Box.nif.
Now you can place the box in the game world.
When you package up your mod to share, you would make an archive that looks something like:
ReadMe.txt
Data\MyMod.esp
Data\Meshes\MyMod\Box.nif
Data\Textures\MyMod\Box.dds
Data\Textures\MyMod\Box_n.dds
Also if it has to be manual, how do you go about just creating an ESM if you have a lot of custom things?
The only difference between an .esp and an .esm is that the .esm file is flagged as being a master file.
If a plugin is flagged as being a master file, it means that it will load before any of the .esp files do.
Also, you will be able make .esp files that modify only certain records within that master .esm file.
I don't think you would want to make your mod an .esm file if you are just adding some new items...
There are some complications that come in to play when you start creating an .esm.
Just because the file is an .esm, it doesn't mean you don't need to include the custom content.