Index: /binary-improvements/7dtd-server-fixes/7dtd-server-fixes.csproj
===================================================================
--- /binary-improvements/7dtd-server-fixes/7dtd-server-fixes.csproj	(revision 127)
+++ /binary-improvements/7dtd-server-fixes/7dtd-server-fixes.csproj	(revision 128)
@@ -37,5 +37,5 @@
     </Reference>
     <Reference Include="Assembly-CSharp">
-      <HintPath>..\7dtd-binaries\Assembly-CSharp.deobf.dll</HintPath>
+      <HintPath>..\7dtd-binaries\Assembly-CSharp.dll</HintPath>
     </Reference>
   </ItemGroup>
@@ -62,4 +62,9 @@
     <Compile Include="src\TelnetCommands\RemoveLandProtection.cs" />
     <Compile Include="src\TelnetCommands\Version.cs" />
+    <Compile Include="src\TelnetCommands\RenderMap.cs" />
+    <Compile Include="src\TelnetCommands\CreativeMenu.cs" />
+    <Compile Include="src\TelnetCommands\Give.cs" />
+    <Compile Include="src\TelnetCommands\ListItems.cs" />
+    <Compile Include="src\MapRendering.cs" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
Index: /binary-improvements/7dtd-server-fixes/src/AdminToolsStuff.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/AdminToolsStuff.cs	(revision 127)
+++ /binary-improvements/7dtd-server-fixes/src/AdminToolsStuff.cs	(revision 128)
@@ -78,5 +78,5 @@
 			return cc.Names ();
 		} else {
-			return new string[0];
+			return new string[]{cmd};
 		}
 	}
Index: /binary-improvements/7dtd-server-fixes/src/AssemblyInfo.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/AssemblyInfo.cs	(revision 127)
+++ /binary-improvements/7dtd-server-fixes/src/AssemblyInfo.cs	(revision 128)
@@ -18,5 +18,5 @@
 // and "{Major}.{Minor}.{Build}.*" will update just the revision.
 
-[assembly: AssemblyVersion("0.090.*")]
+[assembly: AssemblyVersion("0.091.*")]
 
 // The following attributes are used to specify the signing key for the assembly, 
Index: /binary-improvements/7dtd-server-fixes/src/CommandExtensions.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/CommandExtensions.cs	(revision 127)
+++ /binary-improvements/7dtd-server-fixes/src/CommandExtensions.cs	(revision 128)
@@ -7,10 +7,14 @@
 	{
 		try {
+			manager.m_GUIConsole.AddCommand (new CreativeMenu (manager.m_GUIConsole));
 			manager.m_GUIConsole.AddCommand (new GetGamePrefs (manager.m_GUIConsole));
 			manager.m_GUIConsole.AddCommand (new GetTime (manager.m_GUIConsole));
+			manager.m_GUIConsole.AddCommand (new Give (manager.m_GUIConsole));
 			manager.m_GUIConsole.AddCommand (new Kill (manager.m_GUIConsole));
+			manager.m_GUIConsole.AddCommand (new ListItems (manager.m_GUIConsole));
 			manager.m_GUIConsole.AddCommand (new ListLandProtection (manager.m_GUIConsole));
 			manager.m_GUIConsole.AddCommand (new ListPlayersExtended (manager.m_GUIConsole));
 			manager.m_GUIConsole.AddCommand (new RemoveLandProtection (manager.m_GUIConsole));
+			manager.m_GUIConsole.AddCommand (new RenderMap (manager.m_GUIConsole));
 			manager.m_GUIConsole.AddCommand (new Reply (manager.m_GUIConsole));
 			manager.m_GUIConsole.AddCommand (new SayToPlayer (manager.m_GUIConsole));
@@ -21,23 +25,4 @@
 			Log.Out ("Error registering custom commands: " + e);
 		}
-		/*
-		try {
-			List<ConsoleCommand> commands = manager.m_GUIConsole.commands;
-			foreach (ConsoleCommand c in commands) {
-				string name = string.Empty;
-				foreach (string cname in c.Names()) {
-					if (cname.Length > 0) {
-						if (name.Length > 0)
-							name += ", ";
-						name += cname;
-					}
-				}
-				name += " => " + c.Description();
-				Log.Out (name);
-			}
-		} catch (Exception e) {
-			Log.Out ("Error listing commands: " + e);
-		}
-		*/
 	}
 }
Index: /binary-improvements/7dtd-server-fixes/src/CommonMappingFunctions.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/CommonMappingFunctions.cs	(revision 127)
+++ /binary-improvements/7dtd-server-fixes/src/CommonMappingFunctions.cs	(revision 128)
@@ -41,4 +41,9 @@
 	{
 		return SingletonMonoBehaviour<Authenticator>.Instance.GetPlayerId (GetPlayerName (_ci));
+	}
+
+	public static string GetSteamID (string _playerName)
+	{
+		return SingletonMonoBehaviour<Authenticator>.Instance.GetPlayerId (_playerName);
 	}
 
Index: /binary-improvements/7dtd-server-fixes/src/PlayerDataStuff.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/PlayerDataStuff.cs	(revision 127)
+++ /binary-improvements/7dtd-server-fixes/src/PlayerDataStuff.cs	(revision 128)
@@ -59,16 +59,16 @@
 			Log.Out ("Error in GM_SavePlayerData: " + e);
 		}
-		/*
-		Log.Out ("Inventory of player:");
-		for (int i = 0; i < _playerDataFile.inventory.Length; i++) {
-			InventoryField item = _playerDataFile.inventory [i];
-			printItem (item, i);
-		}
 
-		Log.Out ("Bag of player:");
-		for (int i = 0; i < _playerDataFile.bag.Length; i++) {
-			InventoryField item = _playerDataFile.bag [i];
-			printItem (item, i);
-		}*/
+//		Log.Out ("Inventory of player:");
+//		for (int i = 0; i < _playerDataFile.inventory.Length; i++) {
+//			InventoryField item = _playerDataFile.inventory [i];
+//			printItem (item, i);
+//		}
+//
+//		Log.Out ("Bag of player:");
+//		for (int i = 0; i < _playerDataFile.bag.Length; i++) {
+//			InventoryField item = _playerDataFile.bag [i];
+//			printItem (item, i);
+//		}
 	}
 
@@ -93,5 +93,6 @@
 				name = iBlock.GetItemName (item.itemValue);
 			}
-			Log.Out (string.Format ("Slot {0:00}: {1:00} * {2}", slot, item.count, name));
+			Log.Out (string.Format ("Slot {0:00}: {1:00} * {2}, blockinst={3}, meta={4}, type={5}, usetimes={6}",
+			                        slot, item.count, name, item.itemValue.blockinst, item.itemValue.meta, item.itemValue.type, item.itemValue.usetimes));
 		}
 	}
Index: /binary-improvements/7dtd-server-fixes/src/TelnetCommands/CreativeMenu.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/TelnetCommands/CreativeMenu.cs	(revision 128)
+++ /binary-improvements/7dtd-server-fixes/src/TelnetCommands/CreativeMenu.cs	(revision 128)
@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+
+public class CreativeMenu : ConsoleCommand
+{
+	public CreativeMenu (ConsoleSdtd cons) : base(cons)
+	{
+	}
+
+	public override string Description ()
+	{
+		return "enable/disable creative menu";
+	}
+
+	public override string[] Names ()
+	{
+		return new string[] { "creativemenu", "cm" };
+	}
+
+	public override void Run (string[] _params)
+	{
+		try {
+			if (_params.Length != 1) {
+				m_Console.SendResult ("Usage: creativemenu <0/1>");
+				return;
+			}
+
+			GameStats.Set (EnumGameStats.IsCreativeMenuEnabled, _params [0].Equals ("1"));
+
+			m_Console.SendResult ("Set creative menu to " + _params [0].Equals ("1"));
+		} catch (Exception e) {
+			Log.Out ("Error in CreativeMenu.Run: " + e);
+		}
+	}
+}
+
Index: /binary-improvements/7dtd-server-fixes/src/TelnetCommands/Give.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/TelnetCommands/Give.cs	(revision 128)
+++ /binary-improvements/7dtd-server-fixes/src/TelnetCommands/Give.cs	(revision 128)
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class Give : ConsoleCommand
+{
+	public Give (ConsoleSdtd cons) : base(cons)
+	{
+	}
+
+	public override string Description ()
+	{
+		return "give an item to a player (entity id or name)";
+	}
+
+	public override string[] Names ()
+	{
+		return new string[] { "give", string.Empty };
+	}
+
+	public override void Run (string[] _params)
+	{
+		try {
+			if (_params.Length != 3) {
+				m_Console.SendResult ("Usage: give <playername|entityid> <itemname> <amount>");
+				return;
+			}
+
+			ClientInfo ci = CommonMappingFunctions.GetClientInfoFromNameOrID (_params [0], false);
+
+			if (ci == null) {
+				m_Console.SendResult ("Playername or entity id not found.");
+				return;
+			}
+
+			ItemBase item = null;
+
+			foreach (ItemBase ib in ItemBase.list) {
+				if (ib.name != null && ib.name.ToLower().Equals(_params[1].ToLower())) {
+					item = ib;
+					break;
+				}
+			}
+
+			if (item == null) {
+				m_Console.SendResult ("Item not found.");
+				return;
+			}
+
+			int n = int.MinValue;
+			if (!int.TryParse (_params [2], out n) || n <= 0) {
+				m_Console.SendResult ("Amount is not an integer or not greater than zero.");
+				return;
+			}
+
+			EntityPlayer p = CommonMappingFunctions.GetEntityPlayer (ci);
+			CommonMappingFunctions.GetGameManager().DropEntityItemServer(item.itemID, n, p.GetPosition(), Vector3.zero, Vector3.zero, 50, CommonMappingFunctions.GetEntityID(ci));
+
+			m_Console.SendResult ("Dropped item");
+		} catch (Exception e) {
+			Log.Out ("Error in Give.Run: " + e);
+		}
+	}
+}
+
Index: /binary-improvements/7dtd-server-fixes/src/TelnetCommands/ListItems.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/TelnetCommands/ListItems.cs	(revision 128)
+++ /binary-improvements/7dtd-server-fixes/src/TelnetCommands/ListItems.cs	(revision 128)
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+
+public class ListItems : ConsoleCommand
+{
+	public ListItems (ConsoleSdtd cons) : base(cons)
+	{
+	}
+
+	public override string Description ()
+	{
+		return "lists all items that contain the given substring";
+	}
+
+	public override string[] Names ()
+	{
+		return new string[] { "listitems", "li" };
+	}
+
+	public override void Run (string[] _params)
+	{
+		try {
+			if (_params.Length != 1 || _params[0].Length == 0) {
+				m_Console.SendResult ("Usage: listitems <searchString>");
+				return;
+			}
+
+			int n = 0;
+			foreach (ItemBase ib in ItemBase.list) {
+				if (ib.name != null && ib.name.ToLower().Contains(_params[0].ToLower())) {
+					m_Console.SendResult ("    " + ib.name);
+					n++;
+				}
+			}
+
+			m_Console.SendResult ("Listed " + n + " matching items.");
+		} catch (Exception e) {
+			Log.Out ("Error in ListItems.Run: " + e);
+		}
+	}
+}
+
Index: /binary-improvements/assembly-patcher/Main.cs
===================================================================
--- /binary-improvements/assembly-patcher/Main.cs	(revision 127)
+++ /binary-improvements/assembly-patcher/Main.cs	(revision 128)
@@ -20,4 +20,5 @@
 			markTypePatched (module, type);
 
+			mappingPatch (module);
 			consoleOutputPatch (module);
 			telnetPatch (module);
@@ -29,4 +30,10 @@
 			Console.WriteLine ("Done");
 
+		}
+
+		private static void mappingPatch (ModuleDefinition module)
+		{
+			TypeDefinition type = module.GetType ("Chunk");
+			addHook (type, "CalcMapColors", true, 0, true, typeof(MapRendering).GetMethod ("RenderSingleChunk"));
 		}
 
Index: /binary-improvements/server-fixes.userprefs
===================================================================
--- /binary-improvements/server-fixes.userprefs	(revision 127)
+++ /binary-improvements/server-fixes.userprefs	(revision 128)
@@ -7,5 +7,5 @@
       <File FileName="7dtd-server-fixes/src/TelnetCommands/ListPlayersExtended.cs" Line="45" Column="17" />
       <File FileName="7dtd-server-fixes/src/AllocsNetTelnetServer.cs" Line="1" Column="1" />
-      <File FileName="7dtd-server-fixes/src/TelnetCommands/RemoveLandProtection.cs" Line="52" Column="44" />
+      <File FileName="7dtd-server-fixes/src/TelnetCommands/RemoveLandProtection.cs" Line="41" Column="47" />
     </Files>
   </MonoDevelop.Ide.Workbench>
