Index: binary-improvements/7dtd-server-fixes/7dtd-server-fixes.csproj
===================================================================
--- binary-improvements/7dtd-server-fixes/7dtd-server-fixes.csproj	(revision 112)
+++ binary-improvements/7dtd-server-fixes/7dtd-server-fixes.csproj	(revision 113)
@@ -59,4 +59,6 @@
     <Compile Include="src\TelnetCommands\Reply.cs" />
     <Compile Include="src\TelnetCommands\Kill.cs" />
+    <Compile Include="src\TelnetCommands\ListLandProtection.cs" />
+    <Compile Include="src\TelnetCommands\RemoveLandProtection.cs" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
Index: binary-improvements/7dtd-server-fixes/src/CommandExtensions.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/CommandExtensions.cs	(revision 112)
+++ binary-improvements/7dtd-server-fixes/src/CommandExtensions.cs	(revision 113)
@@ -10,5 +10,7 @@
 			manager.m_GUIConsole.AddCommand (new GetTime (manager.m_GUIConsole));
 			manager.m_GUIConsole.AddCommand (new Kill (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 Reply (manager.m_GUIConsole));
 			manager.m_GUIConsole.AddCommand (new SayToPlayer (manager.m_GUIConsole));
Index: binary-improvements/7dtd-server-fixes/src/TelnetCommands/Kill.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/TelnetCommands/Kill.cs	(revision 112)
+++ binary-improvements/7dtd-server-fixes/src/TelnetCommands/Kill.cs	(revision 113)
@@ -20,4 +20,7 @@
 	public override void Run (string[] _params)
 	{
+		m_Console.SendResult("Command \"kill\" is currently not implemented!");
+		return;
+		/*
 		try {
 			if (_params.Length != 1) {
@@ -33,9 +36,11 @@
 			}
 
-			CommonMappingFunctions.GetEntityPlayer(ci).Kill(null);
+			EntityPlayer p = CommonMappingFunctions.GetEntityPlayer(ci);
+			p.Stats.Health.Value = 1;
+			p.Stats.SendAll();
 			m_Console.SendResult ("Killed player " + _params[0]);
 		} catch (Exception e) {
 			Log.Out ("Error in Kill.Run: " + e);
-		}
+		}*/
 	}
 }
Index: binary-improvements/7dtd-server-fixes/src/TelnetCommands/ListLandProtection.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/TelnetCommands/ListLandProtection.cs	(revision 113)
+++ binary-improvements/7dtd-server-fixes/src/TelnetCommands/ListLandProtection.cs	(revision 113)
@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Generic;
+
+public class ListLandProtection : ConsoleCommand
+{
+	public ListLandProtection (ConsoleSdtd cons) : base(cons)
+	{
+	}
+
+	public override string Description ()
+	{
+		return "lists all land protection blocks and owners";
+	}
+
+	public override string[] Names ()
+	{
+		return new string[] { "listlandprotection", "llp" };
+	}
+
+	public override void Run (string[] _params)
+	{
+		try {
+			World w = CommonMappingFunctions.GetGameManager ().World;
+			PersistentPlayerList ppl = CommonMappingFunctions.GetGameManager().GetPersistentPlayerList();
+
+			Dictionary<Vector3i, PersistentPlayerData> d = ppl.positionToLPBlockOwner;
+			if (d != null) {
+				Dictionary<PersistentPlayerData, List<Vector3i>> owners = new Dictionary<PersistentPlayerData, List<Vector3i>>();
+				foreach (KeyValuePair<Vector3i, PersistentPlayerData> kvp in d) {
+					if (!owners.ContainsKey(kvp.Value)) {
+						owners.Add(kvp.Value, new List<Vector3i>());
+					}
+					owners[kvp.Value].Add(kvp.Key);
+				}
+
+				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 + ")";
+
+					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 ("Total of " + d.Count + " keystones in the game");
+		} catch (Exception e) {
+			Log.Out ("Error in ListLandProtection.Run: " + e);
+		}
+	}
+}
Index: binary-improvements/7dtd-server-fixes/src/TelnetCommands/RemoveLandProtection.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/TelnetCommands/RemoveLandProtection.cs	(revision 113)
+++ binary-improvements/7dtd-server-fixes/src/TelnetCommands/RemoveLandProtection.cs	(revision 113)
@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+
+public class RemoveLandProtection : ConsoleCommand
+{
+	public RemoveLandProtection (ConsoleSdtd cons) : base(cons)
+	{
+	}
+
+	public override string Description ()
+	{
+		return "removes the association of a land protection block to the owner";
+	}
+
+	public override string[] Names ()
+	{
+		return new string[] { "removelandprotection", "rlp" };
+	}
+
+	public override void Run (string[] _params)
+	{
+		try {
+			if (_params.Length != 3) {
+				m_Console.SendResult ("Usage: removelandprotection <x> <y> <z>");
+				return;
+			}
+
+			int x = int.MinValue;
+			int.TryParse (_params [0], out x);
+			int y = int.MinValue;
+			int.TryParse (_params [1], out y);
+			int z = int.MinValue;
+			int.TryParse (_params [2], 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;
+			}
+
+			Vector3i v = new Vector3i (x, y, z);
+
+			PersistentPlayerList ppl = CommonMappingFunctions.GetGameManager ().GetPersistentPlayerList ();
+
+			Dictionary<Vector3i, PersistentPlayerData> d = ppl.positionToLPBlockOwner;
+			if (d == null || !d.ContainsKey (v)) {
+				m_Console.SendResult ("No land protection block at the given position or not a valid position. Use \"listlandprotection\" to get a list of keystones.");
+				return;
+			}
+
+			ppl.RemoveLandProtectionBlock (v);
+			ppl.Write (StaticDirectories.GetSaveGameDir () + "/players.xml");
+			m_Console.SendResult ("Land protection block association at (" + v.ToString () + ") removed");
+		} catch (Exception e) {
+			Log.Out ("Error in RemoveLandProtection.Run: " + e);
+		}
+	}
+}
Index: binary-improvements/NamePatcher/ManualPatches.cs
===================================================================
--- binary-improvements/NamePatcher/ManualPatches.cs	(revision 112)
+++ binary-improvements/NamePatcher/ManualPatches.cs	(revision 113)
@@ -61,8 +61,38 @@
 		public static void applyManualPatches (ModuleDefinition mainModule)
 		{
-			renameMember (mainModule.GetType ("ItemBlock").BaseType.Resolve (), "ItemBase");
-
 			FieldDefinition fd;
 			MethodDefinition md;
+			bool renamed = false;
+
+
+			renamed = false;
+			foreach (TypeDefinition td in mainModule.Types) {
+				md = getMethodInType (td, (method, isConstructor, retType, paramCount, paramList) => {
+					return !isConstructor && method.IsPublic && method.IsStatic && paramCount == 0 && retType.Name.Equals ("Boolean") && method.Name.Equals ("CheckIfStartedAsDedicatedServer");
+				}
+				);
+				if (md != null) {
+					renameMember (td, "StaticDirectories");
+					renamed = true;
+					break;
+				}
+			}
+			if (!renamed)
+				Console.WriteLine ("FAILED: StaticDirectories");
+			renamed = false;
+
+
+			renameMember (mainModule.GetType ("ItemBlock").BaseType.Resolve (), "ItemBase");
+
+
+			fd = getFieldInType (mainModule.GetType ("PersistentPlayerList"), (field, fieldType) => {
+				return fieldType.FullName.Contains ("Dictionary") && fieldType.FullName.Contains ("Vector3i") && fieldType.FullName.Contains ("PersistentPlayerData"); }
+			);
+			if (fd != null) {
+				makeFieldPublic (fd);
+				renameMember (fd, "positionToLPBlockOwner");
+			} else {
+				Console.WriteLine ("FAILED: PersistentPlayerList.positionToLPBlockOwner");
+			}
 
 
@@ -78,4 +108,5 @@
 
 
+			// Fields in PlayerDataFile
 			fd = getFieldInType (mainModule.GetType ("PlayerDataFile"), (field, fieldType) => {
 				return field.Name.Equals ("inventory") && fieldType.IsArray; }
@@ -109,4 +140,5 @@
 
 
+			// Fields in AdminTools
 			fd = getFieldInType (mainModule.GetType ("AdminTools"), (field, fieldType) => {
 				return fieldType.FullName.Contains ("List") && fieldType.FullName.Contains ("AdminToolsCommandPermissions"); }
@@ -120,4 +152,5 @@
 
 
+			// Fields and methods in World
 			fd = getFieldInType (mainModule.GetType ("World"), (field, fieldType) => {
 				return fieldType.FullName.Equals ("System.UInt64"); }
@@ -130,4 +163,31 @@
 
 
+			md = getMethodInType (mainModule.GetType ("World"), (method, isConstructor, retType, paramCount, paramList) => {
+				return !isConstructor && paramCount == 1 && paramList [0].ParameterType.Name.Equals ("PersistentPlayerData") && method.IsPrivate && retType.Name.Equals ("Boolean");
+			}
+			);
+			if (md != null) {
+				md.IsPrivate = false;
+				md.IsPublic = true;
+				renameMember (md, "LandClaimIsActive");
+			} else {
+				Console.WriteLine ("FAILED: World.LandClaimIsActive()");
+			}
+
+
+			md = getMethodInType (mainModule.GetType ("World"), (method, isConstructor, retType, paramCount, paramList) => {
+				return !isConstructor && paramCount == 1 && paramList [0].ParameterType.Name.Equals ("PersistentPlayerData") && method.IsPrivate && retType.Name.Equals ("Single");
+			}
+			);
+			if (md != null) {
+				md.IsPrivate = false;
+				md.IsPublic = true;
+				renameMember (md, "LandClaimPower");
+			} else {
+				Console.WriteLine ("FAILED: World.LandClaimPower()");
+			}
+
+
+			// Fields in GameManager
 			fd = getFieldInType (mainModule.GetType ("GameManager"), (field, fieldType) => {
 				return fieldType.FullName.Equals ("ConnectionManager"); }
@@ -141,4 +201,5 @@
 
 
+			// Fields in ConnectionManager
 			fd = getFieldInType (mainModule.GetType ("ConnectionManager"), (field, fieldType) => {
 				return fieldType.FullName.Equals ("GameManager"); }
@@ -176,4 +237,5 @@
 			TypeDefinition typeConsole = null;
 
+			// Fields in NetTelnetServer
 			fd = getFieldInType (mainModule.GetType ("NetTelnetServer"), (field, fieldType) => {
 				return NameNormalizer.makeValidName (fieldType.Name) != null; }
