Index: binary-improvements/AllocsCommands/ModInfo.xml
===================================================================
--- binary-improvements/AllocsCommands/ModInfo.xml	(revision 291)
+++ binary-improvements/AllocsCommands/ModInfo.xml	(revision 292)
@@ -5,5 +5,5 @@
 		<Description value="Additional commands for server operation" />
 		<Author value="Christian 'Alloc' Illy" />
-		<Version value="9" />
+		<Version value="10" />
 		<Website value="http://7dtd.illy.bz" />
 	</ModInfo>
Index: binary-improvements/MapRendering/ModInfo.xml
===================================================================
--- binary-improvements/MapRendering/ModInfo.xml	(revision 291)
+++ binary-improvements/MapRendering/ModInfo.xml	(revision 292)
@@ -5,5 +5,5 @@
 		<Description value="Render the game map to image map tiles as it is uncovered" />
 		<Author value="Christian 'Alloc' Illy" />
-		<Version value="16" />
+		<Version value="17" />
 		<Website value="http://7dtd.illy.bz" />
 	</ModInfo>
Index: binary-improvements/MapRendering/Web/Handlers/ItemIconHandler.cs
===================================================================
--- binary-improvements/MapRendering/Web/Handlers/ItemIconHandler.cs	(revision 291)
+++ binary-improvements/MapRendering/Web/Handlers/ItemIconHandler.cs	(revision 292)
@@ -5,4 +5,5 @@
 
 using UnityEngine;
+using System.IO;
 
 namespace AllocsFixes.NetConnections.Servers.Web.Handlers
@@ -87,4 +88,5 @@
 				}
 
+				// Get list of used tints for all items
 				Dictionary<string, List<Color>> tintedIcons = new Dictionary<string, List<Color>> ();
 				foreach (ItemClass ic in ItemClass.list) {
@@ -102,4 +104,5 @@
 				}
 
+				// Load icons from vanilla
 				foreach (UISpriteData data in sprites) {
 					string name = data.name;
@@ -107,29 +110,37 @@
 					tex.SetPixels (atlasTex.GetPixels (data.x, atlasTex.height - data.height - data.y, data.width, data.height));
 
-					icons.Add (name + "__FFFFFF", tex.EncodeToPNG ());
-
-					if (tintedIcons.ContainsKey (name)) {
-						foreach (Color c in tintedIcons [name]) {
-							string tintedName = name + "__" + AllocsUtils.ColorToHex (c);
-							if (!icons.ContainsKey (tintedName)) {
-								Texture2D tintedTex = new Texture2D (data.width, data.height, TextureFormat.ARGB32, false);
-
-								for (int x = 0; x < data.width; x++) {
-									for (int y = 0; y < data.height; y++) {
-										tintedTex.SetPixel (x, y, tex.GetPixel (x, y) * c);
-									}
-								}
-
-								icons.Add (tintedName, tintedTex.EncodeToPNG ());
-
-								UnityEngine.Object.Destroy (tintedTex);
-							}
-						}
-					}
+					AddIcon (name, tex, tintedIcons);
 
 					UnityEngine.Object.Destroy (tex);
 				}
+				Resources.UnloadAsset(atlasTex);
 
-				Resources.UnloadAsset(atlasTex);
+				// Load icons from mods
+				foreach (Mod mod in ModManager.GetLoadedMods ()) {
+					try {
+						string modIconsPath = mod.Path + "/ItemIcons";
+						if (Directory.Exists (modIconsPath)) {
+							foreach (string file in Directory.GetFiles (modIconsPath)) {
+								try {
+									if (file.ToLower ().EndsWith (".png")) {
+										string name = Path.GetFileNameWithoutExtension (file);
+										Texture2D tex = new Texture2D (1, 1, TextureFormat.ARGB32, false);
+										if (tex.LoadImage (File.ReadAllBytes (file))) {
+											if (tex.width == elementWidth && tex.height == elementHeight) {
+												AddIcon (name, tex, tintedIcons);
+											}
+
+											UnityEngine.Object.Destroy (tex);
+										}
+									}
+								} catch (Exception e) {
+									Log.Exception (e);
+								}
+							}
+						}
+					} catch (Exception e) {
+						Log.Exception (e);
+					}
+				}
 
 				loaded = true;
@@ -139,4 +150,28 @@
 			}
 		}
+
+		private void AddIcon (string _name, Texture2D _tex, Dictionary<string, List<Color>> _tintedIcons) {
+			icons.Add (_name + "__FFFFFF", _tex.EncodeToPNG ());
+
+			if (_tintedIcons.ContainsKey (_name)) {
+				foreach (Color c in _tintedIcons [_name]) {
+					string tintedName = _name + "__" + AllocsUtils.ColorToHex (c);
+					if (!icons.ContainsKey (tintedName)) {
+						Texture2D tintedTex = new Texture2D (_tex.width, _tex.height, TextureFormat.ARGB32, false);
+
+						for (int x = 0; x < _tex.width; x++) {
+							for (int y = 0; y < _tex.height; y++) {
+								tintedTex.SetPixel (x, y, _tex.GetPixel (x, y) * c);
+							}
+						}
+
+						icons.Add (tintedName, tintedTex.EncodeToPNG ());
+
+						UnityEngine.Object.Destroy (tintedTex);
+					}
+				}
+			}
+		}
+
 	}
 }
