diff --git a/src/iirrlichtwrapper.h b/src/iirrlichtwrapper.h
new file mode 100644
index 0000000000000000000000000000000000000000..47ae21ee9fffe3ca929cb73cc94eda05aa3e3db7
--- /dev/null
+++ b/src/iirrlichtwrapper.h
@@ -0,0 +1,55 @@
+/*
+Minetest-c55
+Copyright (C) 2010 celeron55, Perttu Ahola <celeron55@gmail.com>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#ifndef IIRRLICHTWRAPPER_HEADER
+#define IIRRLICHTWRAPPER_HEADER
+
+#include "common_irrlicht.h"
+
+/*
+	IrrlichtWrapper prototype.
+
+	Server supplies this as a dummy wrapper.
+*/
+
+class IIrrlichtWrapper
+{
+public:
+	IIrrlichtWrapper()
+	{
+	}
+	virtual ~IIrrlichtWrapper()
+	{
+	}
+	
+	virtual u32 getTime()
+	{
+		return 0;
+	}
+	
+	virtual textureid_t getTextureId(const std::string &name){ return 0; }
+	virtual std::string getTextureName(textureid_t id){ return ""; }
+	virtual video::ITexture* getTexture(const std::string &name){ return NULL; }
+	virtual video::ITexture* getTexture(const TextureSpec &spec){ return NULL; }
+	
+private:
+};
+
+#endif
+
diff --git a/src/irrlichtwrapper.h b/src/irrlichtwrapper.h
index a695bd1e4e5fc9d1df1b2d6cdf5d2c7bac83e0cb..225ae34021fc8680e98d5a4137002f13377def42 100644
--- a/src/irrlichtwrapper.h
+++ b/src/irrlichtwrapper.h
@@ -25,6 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "debug.h"
 #include "utility.h"
 #include "texture.h"
+#include "iirrlichtwrapper.h"
 
 #include <jmutex.h>
 #include <jmutexautolock.h>
@@ -125,7 +126,7 @@ class TextureCache
 	Also caches texture specification strings to ids and textures.
 */
 
-class IrrlichtWrapper
+class IrrlichtWrapper : public IIrrlichtWrapper
 {
 public:
 	/*
diff --git a/src/mapnode.cpp b/src/mapnode.cpp
index d197454fee0b25098ec80a4958b53d6c99ff1ac3..b2d579d5d9e6356f0ed02bd54aeb09b4d56d548f 100644
--- a/src/mapnode.cpp
+++ b/src/mapnode.cpp
@@ -36,7 +36,7 @@ ContentFeatures & content_features(u8 i)
 	return g_content_features[i];
 }
 
-void init_mapnode(IrrlichtWrapper *irrlicht)
+void init_mapnode(IIrrlichtWrapper *irrlicht)
 {
 	u8 i;
 	ContentFeatures *f = NULL;
diff --git a/src/mapnode.h b/src/mapnode.h
index 0c52681be02df2d052ce8bfbb6d564c6d4fb59c5..07153f934649b1673f4f65e7487734e39e98c90f 100644
--- a/src/mapnode.h
+++ b/src/mapnode.h
@@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "exceptions.h"
 #include "serialization.h"
 #include "tile.h"
-#include "irrlichtwrapper.h"
+#include "iirrlichtwrapper.h"
 
 /*
 	Initializes all kind of stuff in here.
@@ -35,7 +35,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 	irrlicht: Used for getting texture ids.
 */
-void init_mapnode(IrrlichtWrapper *irrlicht);
+void init_mapnode(IIrrlichtWrapper *irrlicht);
 
 // Initializes g_content_inventory_texture_paths
 void init_content_inventory_texture_paths();
diff --git a/src/mineral.cpp b/src/mineral.cpp
index 4f658db48de09ffd0a673081885111e35816ec8d..c333ae6f5d988c93addc249d1d2019b5faa5b223 100644
--- a/src/mineral.cpp
+++ b/src/mineral.cpp
@@ -19,7 +19,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 #include "mineral.h"
 
-#ifndef SERVER
 
 const char *mineral_filenames[MINERAL_COUNT] =
 {
@@ -30,7 +29,7 @@ const char *mineral_filenames[MINERAL_COUNT] =
 
 textureid_t mineral_textures[MINERAL_COUNT] = {0};
 
-void init_mineral(IrrlichtWrapper *irrlicht)
+void init_mineral(IIrrlichtWrapper *irrlicht)
 {
 	for(u32 i=0; i<MINERAL_COUNT; i++)
 	{
@@ -48,6 +47,5 @@ textureid_t mineral_block_texture(u8 mineral)
 	return mineral_textures[mineral];
 }
 
-#endif
 
 
diff --git a/src/mineral.h b/src/mineral.h
index 6c10c2256ef3160a52b51e0ca1f878befcf47c5a..c663d92757e63cd5f6114871eaa055feb47038e7 100644
--- a/src/mineral.h
+++ b/src/mineral.h
@@ -22,7 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 #include "inventory.h"
 #include "texture.h"
-#include "irrlichtwrapper.h"
+#include "iirrlichtwrapper.h"
 
 /*
 	Minerals
@@ -31,10 +31,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 	type param.
 */
 
-#ifndef SERVER
 // Caches textures
-void init_mineral(IrrlichtWrapper *irrlicht);
-#endif
+void init_mineral(IIrrlichtWrapper *irrlicht);
 
 #define MINERAL_NONE 0
 #define MINERAL_COAL 1
diff --git a/src/servermain.cpp b/src/servermain.cpp
index d5be5b8acebe0ad355c75d0bc1408334e533ccd3..5409fcfb3988a4c5fca0cd80a1cefc8215cfac01 100644
--- a/src/servermain.cpp
+++ b/src/servermain.cpp
@@ -68,6 +68,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "porting.h"
 #include "materials.h"
 #include "config.h"
+#include "mineral.h"
 
 /*
 	Settings.
@@ -255,7 +256,13 @@ int main(int argc, char *argv[])
 	{
 		run_tests();
 	}
+
+	// Initialize stuff
 	
+	IIrrlichtWrapper irrlicht; // Dummy
+	init_mapnode(&irrlicht);
+	init_mineral(&irrlicht);
+
 	// Read map parameters from settings
 
 	HMParams hm_params;