Index: binary-improvements/7dtd-server-fixes/src/CustomCommands/TeleportPlayer.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/CustomCommands/TeleportPlayer.cs	(revision 174)
+++ 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) {
