Index: /binary-improvements/7dtd-server-fixes/src/CustomCommands/ListLandProtection.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/CustomCommands/ListLandProtection.cs	(revision 138)
+++ /binary-improvements/7dtd-server-fixes/src/CustomCommands/ListLandProtection.cs	(revision 139)
@@ -26,4 +26,25 @@
 				PersistentPlayerList ppl = CommonMappingFunctions.GetGameManager ().GetPersistentPlayerList ();
 
+				bool summaryOnly = false;
+				string steamIdFilter = string.Empty;
+
+				if (_params.Length == 1) {
+					long tempLong;
+
+					if (_params [0].ToLower ().Equals ("summary")) {
+						summaryOnly = true;
+					} else if (_params [0].Length == 17 && long.TryParse (_params [0], out tempLong)) {
+						steamIdFilter = _params [0];
+					} else {
+						ClientInfo ci = CommonMappingFunctions.GetClientInfoFromNameOrID (_params [0], true);
+						if (ci != null) {
+							steamIdFilter = CommonMappingFunctions.GetSteamID (ci);
+						} else {
+							m_Console.SendResult ("Player name or entity id \"" + _params [0] + "\" not found.");
+							return;
+						}
+					}
+				}
+
 				Dictionary<Vector3i, PersistentPlayerData> d = ppl.positionToLPBlockOwner;
 				if (d != null) {
@@ -37,19 +58,24 @@
 
 					foreach (KeyValuePair<PersistentPlayerData, List<Vector3i>> kvp in owners) {
-						ClientInfo ci = CommonMappingFunctions.GetClientInfoFromEntityID (kvp.Key.EntityId);
-						string name = string.Empty;
-						if (ci != null) {
-							name = CommonMappingFunctions.GetPlayerName (ci);
-						}
-						name += " (" + kvp.Key.PlayerId + ")";
+						if (steamIdFilter.Length == 0 || kvp.Key.PlayerId.Equals (steamIdFilter)) {
+							ClientInfo ci = CommonMappingFunctions.GetClientInfoFromEntityID (kvp.Key.EntityId);
+							string name = string.Empty;
+							if (ci != null) {
+								name = CommonMappingFunctions.GetPlayerName (ci);
+							}
+							name += " (" + kvp.Key.PlayerId + ")";
 
-						m_Console.SendResult (String.Format ("Player \"{0}\" (protected: {1}, current hardness multiplier: {2}):", name, w.LandClaimIsActive (kvp.Key), w.LandClaimPower (kvp.Key)));
-						foreach (Vector3i v in kvp.Value) {
-							m_Console.SendResult ("   (" + v.ToString () + ")");
+							m_Console.SendResult (String.Format ("Player \"{0}\" owns {3} keystones (protected: {1}, current hardness multiplier: {2})", name, w.LandClaimIsActive (kvp.Key), w.LandClaimPower (kvp.Key), kvp.Value.Count));
+							if (!summaryOnly) {
+								foreach (Vector3i v in kvp.Value) {
+									m_Console.SendResult ("   (" + v.ToString () + ")");
+								}
+							}
 						}
 					}
 				}
 
-				m_Console.SendResult ("Total of " + d.Count + " keystones in the game");
+				if (steamIdFilter.Length == 0)
+					m_Console.SendResult ("Total of " + d.Count + " keystones in the game");
 			} catch (Exception e) {
 				Log.Out ("Error in ListLandProtection.Run: " + e);
