Index: binary-improvements/7dtd-server-fixes/src/CustomCommands/TeleportPlayer.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/CustomCommands/TeleportPlayer.cs	(revision 188)
+++ binary-improvements/7dtd-server-fixes/src/CustomCommands/TeleportPlayer.cs	(revision 189)
@@ -2,4 +2,5 @@
 using System;
 using System.Collections.Generic;
+using UnityEngine;
 
 namespace AllocsFixes.CustomCommands
@@ -24,37 +25,52 @@
 		{
 			try {
-				if (_params.Length != 4) {
+				if (_params.Length != 4 && _params.Length != 2) {
 					m_Console.SendResult ("Usage: teleportplayer <entityid|playername|steamid> <x> <y> <z>");
+					m_Console.SendResult ("   or: teleportplayer <entityid|playername|steamid> <target entityid|playername|steamid>");
 				} else {
-					string steamid = PersistentContainer.Instance.Players.GetSteamID (_params [0], true);
-					if (steamid == null) {
+					Player p1 = PersistentContainer.Instance.Players.GetPlayerByNameOrId (_params [0], true);
+					if (p1 == null) {
 						m_Console.SendResult ("Playername or entity/steamid id not found.");
 						return;
 					}
-
-					Player p = PersistentContainer.Instance.Players [steamid];
-					if (!p.IsOnline) {
+					if (!p1.IsOnline) {
 						m_Console.SendResult ("Player not online.");
 						return;
 					}
 
-					int x = int.MinValue;
-					int.TryParse (_params [1], out x);
-					int y = int.MinValue;
-					int.TryParse (_params [2], out y);
-					int z = int.MinValue;
-					int.TryParse (_params [3], out z);
+					if (_params.Length == 4) {
+						int x = int.MinValue;
+						int y = int.MinValue;
+						int z = int.MinValue;
 
-					if (x == int.MinValue || y == int.MinValue || z == int.MinValue) {
-						m_Console.SendResult ("At least one of the given coordinates is not a valid integer");
-						return;
+						int.TryParse (_params [1], out x);
+						int.TryParse (_params [2], out y);
+						int.TryParse (_params [3], out z);
+
+						if (x == int.MinValue || y == int.MinValue || z == int.MinValue) {
+							m_Console.SendResult ("At least one of the given coordinates is not a valid integer");
+							return;
+						}
+
+						p1.Entity.position.x = x;
+						p1.Entity.position.y = y;
+						p1.Entity.position.z = z;
+					} else {
+						Player p2 = PersistentContainer.Instance.Players.GetPlayerByNameOrId (_params [1], true);
+						if (p2 == null) {
+							m_Console.SendResult ("Target playername or entity/steamid id not found.");
+							return;
+						}
+						if (!p2.IsOnline) {
+							m_Console.SendResult ("Target player not online.");
+							return;
+						}
+
+						p1.Entity.position = p2.Entity.GetPosition();
 					}
 
-					p.Entity.position.x = x;
-					p.Entity.position.y = y;
-					p.Entity.position.z = z;
-					NetPackage_EntityPosAndRot pkg = new NetPackage_EntityPosAndRot (p.Entity);
+					NetPackage_EntityPosAndRot pkg = new NetPackage_EntityPosAndRot (p1.Entity);
 
-					p.ClientInfo.netConnection [0].Send (pkg);
+					p1.ClientInfo.netConnection [0].Send (pkg);
 				}
 			} catch (Exception e) {
Index: binary-improvements/7dtd-server-fixes/src/MapRendering/MapRenderBlockBuffer.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/MapRendering/MapRenderBlockBuffer.cs	(revision 188)
+++ binary-improvements/7dtd-server-fixes/src/MapRendering/MapRenderBlockBuffer.cs	(revision 189)
@@ -37,6 +37,5 @@
 		{
 			bool res = false;
-			Monitor.Enter (blockMap);
-			try {
+			lock (blockMap) {
 				string folder = Constants.MAP_DIRECTORY + "/" + (zoomLevel) + "/" + block.x;
 				string fileName = folder + "/" + block.y + ".png";
@@ -48,6 +47,4 @@
 				}
 				currentBlockMap = fileName;
-			} finally {
-				Monitor.Exit (blockMap);
 			}
 			return res;
Index: binary-improvements/7dtd-server-fixes/src/MapRendering/MapRendering.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/MapRendering/MapRendering.cs	(revision 188)
+++ binary-improvements/7dtd-server-fixes/src/MapRendering/MapRendering.cs	(revision 189)
@@ -55,6 +55,5 @@
 					try {
 						if (!Instance.renderingFullMap) {
-							Monitor.Enter (Instance.zoomLevelBuffers);
-							try {
+							lock (Instance.zoomLevelBuffers) {
 								Chunk c = (Chunk)o;
 								Vector3i cPos = c.GetWorldPos ();
@@ -72,6 +71,4 @@
 									Instance.chunkSaveTimer.Start ();
 								}
-							} finally {
-								Monitor.Exit (Instance.zoomLevelBuffers);
 							}
 						}
@@ -103,6 +100,5 @@
 			);
 
-			Monitor.Enter (Instance.zoomLevelBuffers);
-			try {
+			lock (Instance.zoomLevelBuffers) {
 				for (int i = 0; i < Constants.ZOOMLEVELS; i++) {
 					zoomLevelBuffers [i].ResetBlock ();
@@ -152,6 +148,4 @@
 					Log.Out (String.Format ("RenderMap: {0}/{1} ({2}%)", curFullMapPos.x, widthPix, (int)((float)curFullMapPos.x / widthPix * 100)));
 				}
-			} finally {
-				Monitor.Exit (Instance.zoomLevelBuffers);
 			}
 
@@ -178,11 +172,8 @@
 		private void TimedRendering (object source, System.Timers.ElapsedEventArgs e)
 		{
-			Monitor.Enter (zoomLevelBuffers);
-			try {
+			lock (zoomLevelBuffers) {
 				RenderDirtyChunks ();
 				if (dirtyChunks.Count > 0)
 					Instance.chunkSaveTimer.Start ();
-			} finally {
-				Monitor.Exit (zoomLevelBuffers);
 			}
 		}
Index: binary-improvements/7dtd-server-fixes/src/NetConnections/ConsoleOutputSeparator.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/NetConnections/ConsoleOutputSeparator.cs	(revision 188)
+++ binary-improvements/7dtd-server-fixes/src/NetConnections/ConsoleOutputSeparator.cs	(revision 189)
@@ -28,13 +28,9 @@
 			Log.Out ("Executed command \"" + _command + "\" from player \"" + _playerID + "\"");
 
-			object obj = netCommandQueue;
-			Monitor.Enter (obj);
-			try {
+			lock (netCommandQueue) {
 				isCurrentCommandFromClient = true;
 				console.issuerOfCurrentClientCommand = _networkPlayer;
 				console.ExecuteClientCmdInternal (_playerID, _command);
 				isCurrentCommandFromClient = false;
-			} finally {
-				Monitor.Exit (obj);
 			}
 
@@ -61,13 +57,13 @@
 		{
 			if (netCommandQueue.Count > 0) {
-				object obj = netCommandQueue;
-				Monitor.Enter (obj);
-				try {
+				lock (netCommandQueue) {
 					issuerOfCurrentCommand = netCommandQueue [0].client;
-					console.ExecuteRemoteCmdInternal (netCommandQueue [0].command, false);
+					try {
+						console.ExecuteRemoteCmdInternal (netCommandQueue [0].command, false);
+					} catch (Exception e) {
+						Log.Out("Exception while executing command: " + e);
+					}
 					netCommandQueue.RemoveAt (0);
 					issuerOfCurrentCommand = null;
-				} finally {
-					Monitor.Exit (obj);
 				}
 			}
@@ -76,10 +72,6 @@
 		public static void QueueNetCommand (string _line, IConnection _con)
 		{
-			object obj = netCommandQueue;
-			Monitor.Enter (obj);
-			try {
+			lock (netCommandQueue) {
 				netCommandQueue.Add (new NetCommand (_line, _con));
-			} finally {
-				Monitor.Exit (obj);
 			}
 		}
Index: binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs	(revision 188)
+++ binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs	(revision 189)
@@ -38,8 +38,8 @@
 
 			if (endpoint is IPEndPoint) {
-				endpointAddressHash = ((IPEndPoint)endpoint).Address.GetHashCode();
+				endpointAddressHash = ((IPEndPoint)endpoint).Address.GetHashCode ();
 				//Log.Out ("Hash: " + endpointAddressHash);
 			} else {
-				Log.Out ("EndPoint is not an IPEndPoint but: " + endpoint.GetType().ToString());
+				Log.Out ("EndPoint is not an IPEndPoint but: " + endpoint.GetType ().ToString ());
 			}
 
@@ -78,34 +78,35 @@
 					while (!IsClosed()) {
 						string line = reader.ReadLine ();
-						if (line != null) {
+						if (line != null && line.Length > 0) {
 							line = line.Trim ();
-
-							if (!IsAuthenticated ()) {
-								if (line.Equals (GamePrefs.GetString (EnumGamePrefs.TelnetPassword))) {
-									authenticated = true;
-									WriteLine ("Logon successful.");
-									WriteLine (string.Empty);
-									WriteLine (string.Empty);
-									WriteLine (string.Empty);
-									LoginMessage ();
+							if (line.Length > 0) {
+								if (!IsAuthenticated ()) {
+									if (line.Equals (GamePrefs.GetString (EnumGamePrefs.TelnetPassword))) {
+										authenticated = true;
+										WriteLine ("Logon successful.");
+										WriteLine (string.Empty);
+										WriteLine (string.Empty);
+										WriteLine (string.Empty);
+										LoginMessage ();
+									} else {
+										if (owner.RegisterFailedLogin (endpointAddressHash)) {
+											WriteLine ("Password incorrect, please enter password:");
+										} else {
+											WriteLine ("Too many failed login attempts!");
+											Thread.Sleep (100);
+											Close ();
+											Log.Out ("Telnet connection closed for too many login attempts: " + endpoint);
+											break;
+										}
+									}
 								} else {
-									if (owner.RegisterFailedLogin(endpointAddressHash)) {
-										WriteLine ("Password incorrect, please enter password:");
-									} else {
-										WriteLine ("Too many failed login attempts!");
-										Thread.Sleep(100);
+									if (line.ToLower ().Equals ("exit")) {
+										Log.Out ("Telnet connection closed by client: " + endpoint);
 										Close ();
-										Log.Out ("Telnet connection closed for too many login attempts: " + endpoint);
 										break;
 									}
+									Log.Out ("Telnet executed \"" + line + "\" from: " + endpoint);
+									ConsoleOutputSeparator.QueueNetCommand (line, this);
 								}
-							} else {
-								if (line.ToLower ().Equals ("exit")) {
-									Log.Out ("Telnet connection closed by client: " + endpoint);
-									Close ();
-									break;
-								}
-								Log.Out ("Telnet executed \"" + line + "\" from: " + endpoint);
-								ConsoleOutputSeparator.QueueNetCommand (line, this);
 							}
 						}
Index: binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Web/StaticHandler.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Web/StaticHandler.cs	(revision 188)
+++ binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Web/StaticHandler.cs	(revision 189)
@@ -30,6 +30,5 @@
 				byte[] content;
 				if (cache) {
-					Monitor.Enter (fileCache);
-					try {
+					lock (fileCache) {
 						if (!fileCache.ContainsKey (fn)) {
 							if (!File.Exists (datapath + "/" + fn)) {
@@ -41,6 +40,4 @@
 
 						content = fileCache [fn];
-					} finally {
-						Monitor.Exit (fileCache);
 					}
 				} else {
@@ -55,5 +52,5 @@
 				resp.ContentLength64 = content.Length;
 				resp.OutputStream.Write (content, 0, content.Length);
-			} catch (FileNotFoundException e) {
+			} catch (FileNotFoundException) {
 				resp.StatusCode = (int)HttpStatusCode.NotFound;
 				if (logMissingFiles)
Index: binary-improvements/7dtd-server-fixes/src/PersistentData/Inventory.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/PersistentData/Inventory.cs	(revision 188)
+++ binary-improvements/7dtd-server-fixes/src/PersistentData/Inventory.cs	(revision 189)
@@ -27,6 +27,5 @@
 		private void ProcessInv (List<InvItem> target, InventoryField[] sourceFields)
 		{
-			Monitor.Enter (target);
-			try {
+			lock (target) {
 				target.Clear ();
 				for (int i = 0; i < sourceFields.Length; i++) {
@@ -40,6 +39,4 @@
 					}
 				}
-			} finally {
-				Monitor.Exit (target);
 			}
 		}
Index: binary-improvements/7dtd-server-fixes/src/PersistentData/Players.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/PersistentData/Players.cs	(revision 188)
+++ binary-improvements/7dtd-server-fixes/src/PersistentData/Players.cs	(revision 189)
@@ -45,4 +45,13 @@
 		}
 
+		public Player GetPlayerByNameOrId (string _nameOrId, bool _ignoreColorCodes)
+		{
+			string sid = GetSteamID(_nameOrId, _ignoreColorCodes);
+			if (sid != null)
+				return this[sid];
+			else
+				return null;
+		}
+
 		public string GetSteamID (string _nameOrId, bool _ignoreColorCodes)
 		{
Index: binary-improvements/bin/Release/7dtd-server-fixes_version.txt
===================================================================
--- binary-improvements/bin/Release/7dtd-server-fixes_version.txt	(revision 188)
+++ binary-improvements/bin/Release/7dtd-server-fixes_version.txt	(revision 189)
@@ -1,1 +1,1 @@
-Version:       0.93.5366.36263
+Version:       0.93.5368.20218
Index: binary-improvements/webserver/js/index.js
===================================================================
--- binary-improvements/webserver/js/index.js	(revision 188)
+++ binary-improvements/webserver/js/index.js	(revision 189)
@@ -159,6 +159,4 @@
 		}
 
-		var pos = tileLeft;
-
 	}
 
@@ -295,8 +293,4 @@
 		collapsed: false
 	}).addTo(map);
-
-	//map.on('mousemove', function(e) {
-	//	L.DomUtil.get('pos').textContent = FormatCoord(e.latlng);
-	//});
 
 	var miniMap = new L.Control.MiniMap(tileLayerMiniMap, {
