Index: binary-improvements/7dtd-server-fixes/src/AllocsUtils.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/AllocsUtils.cs	(revision 253)
+++ binary-improvements/7dtd-server-fixes/src/AllocsUtils.cs	(revision 253)
@@ -0,0 +1,13 @@
+using System;
+
+namespace AllocsFixes
+{
+	public static class AllocsUtils {
+
+		public static string ColorToHex (UnityEngine.Color _color) {
+			return string.Format ("{0:X02}{1:X02}{2:X02}", (int)(_color.r * 255), (int)(_color.g * 255), (int)(_color.b * 255));
+		}
+
+	}
+}
+
Index: binary-improvements/7dtd-server-fixes/src/LandClaimList.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/LandClaimList.cs	(revision 253)
+++ binary-improvements/7dtd-server-fixes/src/LandClaimList.cs	(revision 253)
@@ -0,0 +1,78 @@
+using System;
+using System.Collections.Generic;
+
+using AllocsFixes.PersistentData;
+
+namespace AllocsFixes
+{
+	public class LandClaimList {
+		public delegate bool OwnerFilter (Player owner);
+
+		public delegate bool PositionFilter (Vector3i position);
+
+		public static Dictionary<Player, List<Vector3i>> GetLandClaims (OwnerFilter[] _ownerFilters, PositionFilter[] _positionFilters) {
+			Dictionary<Vector3i, PersistentPlayerData> d = GameManager.Instance.GetPersistentPlayerList ().m_lpBlockMap;
+			Dictionary<Player, List<Vector3i>> result = new Dictionary<Player, List<Vector3i>> ();
+
+			if (d != null) {
+				Dictionary<PersistentPlayerData, List<Vector3i>> owners = new Dictionary<PersistentPlayerData, List<Vector3i>> ();
+				foreach (KeyValuePair<Vector3i, PersistentPlayerData> kvp in d) {
+					bool allowed = true;
+					if (_positionFilters != null) {
+						foreach (PositionFilter pf in _positionFilters) {
+							if (!pf (kvp.Key)) {
+								allowed = false;
+								break;
+							}
+						}
+					}
+					if (allowed) {
+						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) {
+					Player p = PersistentData.PersistentContainer.Instance.Players [kvp.Key.PlayerId, false];
+					if (p == null) {
+						p = new Player (kvp.Key.PlayerId);
+					}
+
+					bool allowed = true;
+					if (_ownerFilters != null) {
+						foreach (OwnerFilter of in _ownerFilters) {
+							if (!of (p)) {
+								allowed = false;
+								break;
+							}
+						}
+					}
+
+					if (allowed) {
+						result.Add (p, new List<Vector3i> ());
+						foreach (Vector3i v in kvp.Value) {
+							result [p].Add (v);
+						}
+					}
+				}
+			}
+			return result;
+		}
+
+		public static OwnerFilter SteamIdFilter (string _steamId) {
+			return p => p.SteamID.Equals (_steamId);
+		}
+
+		public static PositionFilter CloseToFilter2dRect (Vector3i _position, int _maxDistance) {
+			return v => Math.Abs (v.x - _position.x) <= _maxDistance && Math.Abs (v.z - _position.z) <= _maxDistance;
+		}
+
+		public static OwnerFilter OrOwnerFilter (OwnerFilter _f1, OwnerFilter _f2) {
+			return p => _f1 (p) || _f2 (p);
+		}
+
+	}
+}
+
Index: binary-improvements/7dtd-server-fixes/src/PersistentData/InvItem.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/PersistentData/InvItem.cs	(revision 252)
+++ binary-improvements/7dtd-server-fixes/src/PersistentData/InvItem.cs	(revision 253)
@@ -5,15 +5,13 @@
 {
 	[Serializable]
-	public class InvItem
-	{
+	public class InvItem {
 		public string itemName;
 		public int count;
 		public int quality;
 		public InvItem[] parts;
-        public string icon = "";
-        public string iconcolor = "";
+		public string icon = "";
+		public string iconcolor = "";
 
-		public InvItem (string itemName, int count, int quality = -1)
-		{
+		public InvItem (string itemName, int count, int quality = -1) {
 			this.itemName = itemName;
 			this.count = count;
Index: binary-improvements/7dtd-server-fixes/src/PersistentData/Inventory.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/PersistentData/Inventory.cs	(revision 252)
+++ binary-improvements/7dtd-server-fixes/src/PersistentData/Inventory.cs	(revision 253)
@@ -59,6 +59,7 @@
 		private InvItem CreateInvItem (ItemValue _itemValue, int _count, int _playerId) {
 			if (_count > 0 && _itemValue != null && !_itemValue.Equals (ItemValue.None)) {
-				int maxAllowed = ItemClass.list [_itemValue.type].Stacknumber.Value;
-				string name = ItemClass.list [_itemValue.type].GetItemName ();
+				ItemClass itemClass = ItemClass.list [_itemValue.type];
+				int maxAllowed = itemClass.Stacknumber.Value;
+				string name = itemClass.GetItemName ();
 
 				if (_count > maxAllowed) {
@@ -73,44 +74,7 @@
 				}
 
-                // Figure out the icon's name
-                string icon_name = "";
+				item.icon = itemClass.GetIconName ();
 
-                ItemClass item_class = ItemClass.list [_itemValue.type];
-
-                if (!PetesUtils.ValidText (icon_name)) {
-                    try {
-                        icon_name = item_class.GetIconName ();
-                    }
-                    catch { }
-                }
-
-                if (!PetesUtils.ValidText (icon_name)) {
-                    try {
-                        icon_name = item_class.MeshFile;
-                    }
-                    catch { }
-                }
-
-                if (!PetesUtils.ValidText (icon_name)) {
-                    try {
-                        icon_name = item_class.DropMeshFile;
-                    }
-                    catch { }
-                }
-
-                if (!PetesUtils.ValidText (icon_name))
-                    icon_name = item_class.GetItemName ();
-
-                if (icon_name.Contains ("\\"))
-                    icon_name = icon_name.Substring (icon_name.LastIndexOf ("\"") + 1);
-
-                item.icon = icon_name;
-
-                try {
-                    item.iconcolor = item_class.CustomIconTint.ToHexStringRGB ();
-                }
-                catch {
-                    item.iconcolor = "FFFFFF";
-                }
+				item.iconcolor = AllocsUtils.ColorToHex (itemClass.GetIconTint ());
                     
 				return item;
Index: binary-improvements/7dtd-server-fixes/src/PersistentData/Player.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/PersistentData/Player.cs	(revision 252)
+++ binary-improvements/7dtd-server-fixes/src/PersistentData/Player.cs	(revision 253)
@@ -96,4 +96,16 @@
 		}
 
+		public bool LandProtectionActive {
+			get {
+				return GameManager.Instance.World.IsLandProtectionValidForPlayer (GameManager.Instance.GetPersistentPlayerList ().GetPlayerData (SteamID));
+			}
+		}
+
+		public float LandProtectionMultiplier {
+			get {
+				return GameManager.Instance.World.GetLandProtectionHardnessModifierForPlayer (GameManager.Instance.GetPersistentPlayerList ().GetPlayerData (SteamID));
+			}
+		}
+
 		public uint Experience {
 			get {
Index: binary-improvements/7dtd-server-fixes/src/PersistentData/Players.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/PersistentData/Players.cs	(revision 252)
+++ binary-improvements/7dtd-server-fixes/src/PersistentData/Players.cs	(revision 253)
@@ -6,14 +6,13 @@
 namespace AllocsFixes.PersistentData
 {
-    [Serializable]
-	public class Players
-	{
+	[Serializable]
+	public class Players {
 		private Dictionary<string, Player> players = new Dictionary<string, Player> ();
 
 		public Player this [string steamId, bool create] {
 			get {
-				if (players.ContainsKey (steamId))
+				if (players.ContainsKey (steamId)) {
 					return players [steamId];
-				else {
+				} else {
 					if (create && steamId != null && steamId.Length == 17) {
 						Log.Out ("Created new player entry for ID: " + steamId);
@@ -44,8 +43,8 @@
 //		}
 
-		public string GetSteamID (string _nameOrId, bool _ignoreColorCodes)
-		{
-			if (_nameOrId == null || _nameOrId.Length == 0)
+		public string GetSteamID (string _nameOrId, bool _ignoreColorCodes) {
+			if (_nameOrId == null || _nameOrId.Length == 0) {
 				return null;
+			}
 
 			long tempLong;
Index: binary-improvements/7dtd-server-fixes/src/PetesUtils.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/PetesUtils.cs	(revision 252)
+++ 	(revision )
@@ -1,159 +1,0 @@
-﻿using System;
-using System.IO;
-using System.Drawing;
-using System.Drawing.Imaging;
-
-namespace AllocsFixes
-{
-    public static class PetesUtils {
-        public static bool ValidText(object oText) {
-            if (oText == null)
-                return false;
-
-            if (oText.GetType () == typeof (string)) {
-                if (((string)oText).Trim ().Length < 1)
-                    return false;
-
-                return true;
-            }
-
-            if (oText.ToString ().Trim ().Length < 1)
-                return false;
-
-            return true;
-        }
-
-        // Note: don't forget to dispose the image (which also disposes the underlying stream) when done with the image.
-        public static System.Drawing.Image GetImageFromBytes(byte[] bImage) {
-            if ((bImage == null) || (bImage.Length == 0))
-                return null;
-
-            try {
-                MemoryStream ms = new MemoryStream ();
-                ms.Write (bImage, 0, bImage.Length);
-                ms.Seek (0, SeekOrigin.Begin);
-                Image i = Image.FromStream (ms);
-                return i;
-            }
-            catch { }
-
-            return null;
-        }
-
-        /*
-        public static System.Drawing.Color BlendColors(System.Drawing.Color color, System.Drawing.Color backColor, double amount) {
-            byte r = (byte)((color.R * amount) + backColor.R * (1 - amount));
-            byte g = (byte)((color.G * amount) + backColor.G * (1 - amount));
-            byte b = (byte)((color.B * amount) + backColor.B * (1 - amount));
-            return System.Drawing.Color.FromArgb (r, g, b);
-        }
-        */
-
-        /*
-        public static System.Drawing.Color FromAhsb (int alpha, float hue, float saturation, float brightness)
-        {
-            if (0 > alpha || 255 < alpha) {
-                throw new ArgumentOutOfRangeException ("alpha", alpha, "Value must be within a range of 0 - 255.");
-            }
-
-            if (0f > hue || 360f < hue) {
-                throw new ArgumentOutOfRangeException ("hue", hue, "Value must be within a range of 0 - 360.");
-            }
-
-            if (0f > saturation || 1f < saturation) {
-                throw new ArgumentOutOfRangeException ("saturation", saturation, "Value must be within a range of 0 - 1.");
-            }
-
-            if (0f > brightness || 1f < brightness) {
-                throw new ArgumentOutOfRangeException ("brightness", brightness, "Value must be within a range of 0 - 1.");
-            }
-
-            if (0 == saturation) {
-                return System.Drawing.Color.FromArgb (alpha, Convert.ToInt32 (brightness * 255), Convert.ToInt32 (brightness * 255), Convert.ToInt32 (brightness * 255));
-            }
-
-            float fMax, fMid, fMin;
-            int iSextant, iMax, iMid, iMin;
-
-            if (0.5 < brightness) {
-                fMax = brightness - (brightness * saturation) + saturation;
-                fMin = brightness + (brightness * saturation) - saturation;
-            }
-            else {
-                fMax = brightness + (brightness * saturation);
-                fMin = brightness - (brightness * saturation);
-            }
-
-            iSextant = (int)Math.Floor (hue / 60f);
-            if (300f <= hue)
-                hue -= 360f;
-
-            hue /= 60f;
-            hue -= 2f * (float)Math.Floor (((iSextant + 1f) % 6f) / 2f);
-            
-            if (0 == iSextant % 2)
-                fMid = hue * (fMax - fMin) + fMin;
-            else
-                fMid = fMin - hue * (fMax - fMin);
-
-            iMax = Convert.ToInt32 (fMax * 255);
-            iMid = Convert.ToInt32 (fMid * 255);
-            iMin = Convert.ToInt32 (fMin * 255);
-
-            switch (iSextant) {
-                case 1:
-                    return System.Drawing.Color.FromArgb (alpha, iMid, iMax, iMin);
-                case 2:
-                    return System.Drawing.Color.FromArgb (alpha, iMin, iMax, iMid);
-                case 3:
-                    return System.Drawing.Color.FromArgb (alpha, iMin, iMid, iMax);
-                case 4:
-                    return System.Drawing.Color.FromArgb (alpha, iMid, iMin, iMax);
-                case 5:
-                    return System.Drawing.Color.FromArgb (alpha, iMax, iMin, iMid);
-                default:
-                    return System.Drawing.Color.FromArgb (alpha, iMax, iMid, iMin);
-            }
-        }
-        */
-
-        public static ImageCodecInfo GetEncoderInfo (String mimeType) {
-            ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders ();
-
-            foreach (ImageCodecInfo t in encoders)
-                if (t.MimeType == mimeType)
-                    return t;
-
-            return null;
-        }
-
-        public static byte[] SaveImage_ToBytes (System.Drawing.Image iImage, bool bAndDispose = false)
-        {
-            try {
-                ImageCodecInfo codec = PetesUtils.GetEncoderInfo ("image/png");
-
-                Encoder qualityEncoder = Encoder.Quality;
-                EncoderParameter ratio = new EncoderParameter (qualityEncoder, 100L);
-                EncoderParameters codecParams = new EncoderParameters (1);
-                codecParams.Param [0] = ratio;
-
-                byte[] b = null;
-
-                using (MemoryStream ms = new MemoryStream ()) {
-                    iImage.Save (ms, codec, codecParams);
-
-                    b = ms.ToArray ();
-
-                    if (bAndDispose)
-                        iImage.Dispose ();
-                }
-
-                return b;
-            }
-            catch { }
-
-            return null;
-        }
-
-    }
-}
