From c6dd75ccfb75fcdafc38b63ef1906369c4873948 Mon Sep 17 00:00:00 2001
From: Perttu Ahola <celeron55@gmail.com>
Date: Sat, 3 Dec 2011 03:43:20 +0200
Subject: [PATCH] Add usermods/ to mod search paths and print out the paths at
 server startup

---
 data/mods/default/init.lua | 17 +++++++++++++++++
 src/server.cpp             | 16 ++++++++++++----
 2 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/data/mods/default/init.lua b/data/mods/default/init.lua
index ae917a036..ebb116e29 100644
--- a/data/mods/default/init.lua
+++ b/data/mods/default/init.lua
@@ -2,6 +2,23 @@
 -- dump2(obj, name="_", dumped={})
 -- dump(obj, dumped={})
 --
+-- Mod load path
+-- -------------
+-- Generic:
+-- $path_data/mods/
+-- $path_userdata/usermods/
+-- $mapdir/worldmods/
+--
+-- On a run-in-place version (eg. the distributed windows version):
+-- minetest-0.4.x/mods/
+-- minetest-0.4.x/usermods/
+-- minetest-0.4.x/world/worldmods/
+--
+-- On an installed version on linux:
+-- /usr/share/minetest/mods/
+-- ~/.minetest/usermods
+-- ~/.minetest/world/worldmods
+--
 -- Naming convention for registered textual names
 -- ----------------------------------------------
 -- "modname_<whatever>"
diff --git a/src/server.cpp b/src/server.cpp
index 032b57e3c..873198d1e 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -875,16 +875,24 @@ Server::Server(
 	JMutexAutoLock envlock(m_env_mutex);
 	JMutexAutoLock conlock(m_con_mutex);
 
-	infostream<<"m_nodedef="<<m_nodedef<<std::endl;
-	
 	// Path to builtin.lua
 	std::string builtinpath = porting::path_data + DIR_DELIM + "builtin.lua";
 
 	// Add default global mod search path
 	m_modspaths.push_front(porting::path_data + DIR_DELIM + "mods");
 	// Add world mod search path
-	m_modspaths.push_front(mapsavedir + DIR_DELIM + "mods");
-
+	m_modspaths.push_front(mapsavedir + DIR_DELIM + "worldmods");
+	// Add user mod search path
+	m_modspaths.push_front(porting::path_userdata + DIR_DELIM + "usermods");
+	
+	// Print out mod search paths
+	infostream<<"Mod search paths:"<<std::endl;
+	for(core::list<std::string>::Iterator i = m_modspaths.begin();
+			i != m_modspaths.end(); i++){
+		std::string modspath = *i;
+		infostream<<"    "<<modspath<<std::endl;
+	}
+	
 	// Initialize scripting
 	
 	infostream<<"Server: Initializing scripting"<<std::endl;
-- 
GitLab