Index: binary-improvements/7dtd-binaries/README.txt
===================================================================
--- binary-improvements/7dtd-binaries/README.txt	(revision 470)
+++ binary-improvements/7dtd-binaries/README.txt	(revision 488)
@@ -1,4 +1,4 @@
 Put the following files from your dedicated server in this folder:
-- 0Harmony.dll
+- 0Harmony.dll (from TFP Harmony mod)
 - Assembly-CSharp.dll
 - Assembly-CSharp-firstpass.dll
@@ -15,4 +15,4 @@
 
 Also, grab the following two from the "vanilla web mods":
-- MapRendering.dll
+- SpaceWizards.HttpListener.dll
 - WebServer.dll
Index: binary-improvements/7dtd-server-fixes/ModInfo.xml
===================================================================
--- binary-improvements/7dtd-server-fixes/ModInfo.xml	(revision 470)
+++ binary-improvements/7dtd-server-fixes/ModInfo.xml	(revision 488)
@@ -5,5 +5,5 @@
 	<Description value="Common functions" />
 	<Author value="Christian 'Alloc' Illy" />
-	<Version value="31" />
+	<Version value="32" />
 	<Website value="https://7dtd.illy.bz" />
 </xml>
Index: binary-improvements/7dtd-server-fixes/src/API.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/API.cs	(revision 470)
+++ binary-improvements/7dtd-server-fixes/src/API.cs	(revision 488)
@@ -47,4 +47,8 @@
 
 		private static void PlayerSpawned (ClientInfo _cInfo, RespawnType _respawnReason, Vector3i _spawnPos) {
+			if (_cInfo == null) {
+				return;
+			}
+			
 			PersistentContainer.Instance.Players.GetOrCreate (_cInfo.InternalId, _cInfo.PlatformId, _cInfo.CrossplatformId).SetOnline (_cInfo);
 			PersistentContainer.Instance.Save ();
@@ -54,5 +58,5 @@
 
 		private static bool ChatMessage (ClientInfo _cInfo, EChatType _type, int _senderId, string _msg, string _mainName,
-			bool _localizeMain, List<int> _recipientEntityIds) {
+			List<int> _recipientEntityIds) {
 			if (string.IsNullOrEmpty (_msg) || !_msg.EqualsCaseInsensitive ("/alloc")) {
 				return true;
@@ -61,5 +65,5 @@
 			if (_cInfo != null) {
 				Log.Out ($"Sent chat hook reply to {_cInfo.InternalId}");
-				_cInfo.SendPackage (NetPackageManager.GetPackage<NetPackageChat> ().Setup (EChatType.Whisper, -1, ANSWER, "", false, null));
+				_cInfo.SendPackage (NetPackageManager.GetPackage<NetPackageChat> ().Setup (EChatType.Whisper, -1, ANSWER, "",  null));
 			} else {
 				Log.Error ($"ChatHookExample: Argument _cInfo null on message: {_msg}");
Index: binary-improvements/7dtd-server-fixes/src/LandClaimList.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/LandClaimList.cs	(revision 470)
+++ binary-improvements/7dtd-server-fixes/src/LandClaimList.cs	(revision 488)
@@ -41,8 +41,8 @@
 
 			foreach (KeyValuePair<PersistentPlayerData, List<Vector3i>> kvp in owners) {
-				Player p = PersistentContainer.Instance.Players.GetByInternalId (kvp.Key.UserIdentifier);
+				Player p = PersistentContainer.Instance.Players.GetByInternalId (kvp.Key.PrimaryId);
 				if (p == null) {
-					PlatformUserIdentifierAbs platformId = kvp.Key.PlatformUserIdentifier;
-					PlatformUserIdentifierAbs internalId = kvp.Key.UserIdentifier;
+					PlatformUserIdentifierAbs platformId = kvp.Key.NativeId;
+					PlatformUserIdentifierAbs internalId = kvp.Key.PrimaryId;
 					PlatformUserIdentifierAbs crossPlatformId = platformId == null || platformId.Equals (internalId) ? null : internalId;
 					p = new Player (internalId, platformId, crossPlatformId);
Index: binary-improvements/AllocsCommands/Commands/ListKnownPlayers.cs
===================================================================
--- binary-improvements/AllocsCommands/Commands/ListKnownPlayers.cs	(revision 470)
+++ binary-improvements/AllocsCommands/Commands/ListKnownPlayers.cs	(revision 488)
@@ -6,9 +6,9 @@
 	[UsedImplicitly]
 	public class ListKnownPlayers : ConsoleCmdAbstract {
-		protected override string getDescription () {
+		public override string getDescription () {
 			return "lists all players that were ever online";
 		}
 
-		protected override string getHelp () {
+		public override string getHelp () {
 			return "Usage:\n" +
 			       "  1. listknownplayers\n" +
@@ -22,5 +22,5 @@
 		}
 
-		protected override string[] getCommands () {
+		public override string[] getCommands () {
 			return new[] {"listknownplayers", "lkp"};
 		}
Index: binary-improvements/AllocsCommands/Commands/ListLandProtection.cs
===================================================================
--- binary-improvements/AllocsCommands/Commands/ListLandProtection.cs	(revision 470)
+++ binary-improvements/AllocsCommands/Commands/ListLandProtection.cs	(revision 488)
@@ -7,9 +7,9 @@
 	[UsedImplicitly]
 	public class ListLandProtection : ConsoleCmdAbstract {
-		protected override string getDescription () {
+		public override string getDescription () {
 			return "lists all land protection blocks and owners";
 		}
 
-		protected override string getHelp () {
+		public override string getHelp () {
 			return "Usage:\n" +
 			       "  1. listlandprotection summary\n" +
@@ -22,5 +22,5 @@
 		}
 
-		protected override string[] getCommands () {
+		public override string[] getCommands () {
 			return new[] {"listlandprotection", "llp"};
 		}
Index: binary-improvements/AllocsCommands/Commands/RemoveLandProtection.cs
===================================================================
--- binary-improvements/AllocsCommands/Commands/RemoveLandProtection.cs	(revision 470)
+++ binary-improvements/AllocsCommands/Commands/RemoveLandProtection.cs	(revision 488)
@@ -7,9 +7,9 @@
 	[UsedImplicitly]
 	public class RemoveLandProtection : ConsoleCmdAbstract {
-		protected override string getDescription () {
+		public override string getDescription () {
 			return "removes the association of a land protection block to the owner";
 		}
 
-		protected override string getHelp () {
+		public override string getHelp () {
 			return "Usage:" +
 			       "  1. removelandprotection <userid>\n" +
@@ -21,5 +21,5 @@
 		}
 
-		protected override string[] getCommands () {
+		public override string[] getCommands () {
 			return new[] {"removelandprotection", "rlp"};
 		}
Index: binary-improvements/AllocsCommands/Commands/ShowInventory.cs
===================================================================
--- binary-improvements/AllocsCommands/Commands/ShowInventory.cs	(revision 470)
+++ binary-improvements/AllocsCommands/Commands/ShowInventory.cs	(revision 488)
@@ -6,9 +6,9 @@
 	[UsedImplicitly]
 	public class ShowInventory : ConsoleCmdAbstract {
-		protected override string getDescription () {
+		public override string getDescription () {
 			return "list inventory of a given player";
 		}
 
-		protected override string getHelp () {
+		public override string getHelp () {
 			return "Usage:\n" +
 			       "   showinventory <user id / player name / entity id> [tag]\n" +
@@ -21,5 +21,5 @@
 		}
 
-		protected override string[] getCommands () {
+		public override string[] getCommands () {
 			return new[] {"showinventory", "si"};
 		}
@@ -103,14 +103,14 @@
 
 		private static void PrintEquipment (IReadOnlyList<InvItem> _equipment, int _entityId, string _location, string _tag) {
-			AddEquipment ("head", _equipment, EquipmentSlots.Headgear, _entityId, _location, _tag);
-			AddEquipment ("eyes", _equipment, EquipmentSlots.Eyewear, _entityId, _location, _tag);
-			AddEquipment ("face", _equipment, EquipmentSlots.Face, _entityId, _location, _tag);
+			AddEquipment ("head", _equipment, EquipmentSlots.Head, _entityId, _location, _tag);
+			// AddEquipment ("eyes", _equipment, EquipmentSlots.Eyewear, _entityId, _location, _tag);
+			// AddEquipment ("face", _equipment, EquipmentSlots.Face, _entityId, _location, _tag);
 
-			AddEquipment ("armor", _equipment, EquipmentSlots.ChestArmor, _entityId, _location, _tag);
-			AddEquipment ("jacket", _equipment, EquipmentSlots.Jacket, _entityId, _location, _tag);
-			AddEquipment ("shirt", _equipment, EquipmentSlots.Shirt, _entityId, _location, _tag);
+			AddEquipment ("armor", _equipment, EquipmentSlots.Chest, _entityId, _location, _tag);
+			// AddEquipment ("jacket", _equipment, EquipmentSlots.Jacket, _entityId, _location, _tag);
+			// AddEquipment ("shirt", _equipment, EquipmentSlots.Shirt, _entityId, _location, _tag);
 
-			AddEquipment ("legarmor", _equipment, EquipmentSlots.LegArmor, _entityId, _location, _tag);
-			AddEquipment ("pants", _equipment, EquipmentSlots.Legs, _entityId, _location, _tag);
+			// AddEquipment ("legarmor", _equipment, EquipmentSlots.LegArmor, _entityId, _location, _tag);
+			// AddEquipment ("pants", _equipment, EquipmentSlots.Legs, _entityId, _location, _tag);
 			AddEquipment ("boots", _equipment, EquipmentSlots.Feet, _entityId, _location, _tag);
 
@@ -120,31 +120,27 @@
 		private static void AddEquipment (string _slotname, IReadOnlyList<InvItem> _items, EquipmentSlots _slot, int _entityId,
 			string _location, string _tag) {
-			int[] slotindices = XUiM_PlayerEquipment.GetSlotIndicesByEquipmentSlot (_slot);
+			int slotindex = (int)_slot;
 
-			for (int i = 0; i < slotindices.Length; i++) {
-				if (_items == null || _items[slotindices[i]] == null) {
-					continue;
+			if (_items == null || _items[slotindex] == null) {
+				return;
+			}
+
+			InvItem item = _items [slotindex];
+			if (_tag == null) {
+				// no Tag defined -> readable output
+				if (item.quality < 0) {
+					SdtdConsole.Instance.Output (string.Format ("    Slot {0:8}: {1:000}", _slotname,
+						item.itemName));
+				} else {
+					SdtdConsole.Instance.Output (string.Format ("    Slot {0:8}: {1:000} - quality: {2}",
+						_slotname, item.itemName, item.quality));
 				}
 
-				InvItem item = _items [slotindices [i]];
-				if (_tag == null) {
-					// no Tag defined -> readable output
-					if (item.quality < 0) {
-						SdtdConsole.Instance.Output (string.Format ("    Slot {0:8}: {1:000}", _slotname,
-							item.itemName));
-					} else {
-						SdtdConsole.Instance.Output (string.Format ("    Slot {0:8}: {1:000} - quality: {2}",
-							_slotname, item.itemName, item.quality));
-					}
-
-					DoParts (_items [slotindices [i]].parts, 1, null);
-				} else {
-					// Tag defined -> parseable output
-					string partsMsg = DoParts (_items [slotindices [i]].parts, 1, "");
-					string msg = $"tracker_item id={_entityId}, tag={_tag}, location={_location}, slot={_slotname}, item={item.itemName}, qnty=1, quality={item.quality}, parts=({partsMsg})";
-					SdtdConsole.Instance.Output (msg);
-				}
-
-				return;
+				DoParts (_items [slotindex].parts, 1, null);
+			} else {
+				// Tag defined -> parseable output
+				string partsMsg = DoParts (_items [slotindex].parts, 1, "");
+				string msg = $"tracker_item id={_entityId}, tag={_tag}, location={_location}, slot={_slotname}, item={item.itemName}, qnty=1, quality={item.quality}, parts=({partsMsg})";
+				SdtdConsole.Instance.Output (msg);
 			}
 		}
Index: binary-improvements/AllocsCommands/ModInfo.xml
===================================================================
--- binary-improvements/AllocsCommands/ModInfo.xml	(revision 470)
+++ binary-improvements/AllocsCommands/ModInfo.xml	(revision 488)
@@ -5,5 +5,5 @@
 	<Description value="Additional commands for server operation" />
 	<Author value="Christian 'Alloc' Illy" />
-	<Version value="26" />
+	<Version value="27" />
 	<Website value="https://7dtd.illy.bz" />
 </xml>
Index: binary-improvements/MapRendering/API/GetPlayerInventory.cs
===================================================================
--- binary-improvements/MapRendering/API/GetPlayerInventory.cs	(revision 470)
+++ binary-improvements/MapRendering/API/GetPlayerInventory.cs	(revision 488)
@@ -94,22 +94,10 @@
 			_writer.WriteBeginObject ();
 			
-			AddEquipment (ref _writer, "head", _equ, EquipmentSlots.Headgear, _showIconColor, _showIconName);
-			_writer.WriteValueSeparator ();
-			AddEquipment (ref _writer, "eyes", _equ, EquipmentSlots.Eyewear, _showIconColor, _showIconName);
-			_writer.WriteValueSeparator ();
-			AddEquipment (ref _writer, "face", _equ, EquipmentSlots.Face, _showIconColor, _showIconName);
+			AddEquipment (ref _writer, "head", _equ, EquipmentSlots.Head, _showIconColor, _showIconName);
 			_writer.WriteValueSeparator ();
 
-			AddEquipment (ref _writer, "armor", _equ, EquipmentSlots.ChestArmor, _showIconColor, _showIconName);
-			_writer.WriteValueSeparator ();
-			AddEquipment (ref _writer, "jacket", _equ, EquipmentSlots.Jacket, _showIconColor, _showIconName);
-			_writer.WriteValueSeparator ();
-			AddEquipment (ref _writer, "shirt", _equ, EquipmentSlots.Shirt, _showIconColor, _showIconName);
+			AddEquipment (ref _writer, "armor", _equ, EquipmentSlots.Chest, _showIconColor, _showIconName);
 			_writer.WriteValueSeparator ();
 
-			AddEquipment (ref _writer, "legarmor", _equ, EquipmentSlots.LegArmor, _showIconColor, _showIconName);
-			_writer.WriteValueSeparator ();
-			AddEquipment (ref _writer, "pants", _equ, EquipmentSlots.Legs, _showIconColor, _showIconName);
-			_writer.WriteValueSeparator ();
 			AddEquipment (ref _writer, "boots", _equ, EquipmentSlots.Feet, _showIconColor, _showIconName);
 			_writer.WriteValueSeparator ();
@@ -123,17 +111,14 @@
 			_writer.WritePropertyName (_slotname);
 
-			int[] slotindices = XUiM_PlayerEquipment.GetSlotIndicesByEquipmentSlot (_slot);
+			int slotindex = (int)_slot;
 
-			for (int i = 0; i < slotindices.Length; i++) {
-				if (_items? [slotindices [i]] != null) {
-					InvItem item = _items [slotindices [i]];
-					
-					GetJsonForItem (ref _writer, item, _showIconColor, _showIconName);
-					return;
-				}
+			if (_items == null || _items[slotindex] == null) {
+				// Slot not found / empty
+				_writer.WriteNull ();
+				return;
 			}
-
-			// Slot not found / empty
-			_writer.WriteNull ();
+			
+			InvItem item = _items [slotindex];
+			GetJsonForItem (ref _writer, item, _showIconColor, _showIconName);
 		}
 
Index: binary-improvements/MapRendering/ModInfo.xml
===================================================================
--- binary-improvements/MapRendering/ModInfo.xml	(revision 470)
+++ binary-improvements/MapRendering/ModInfo.xml	(revision 488)
@@ -5,5 +5,5 @@
 	<Description value="Render the game map to image map tiles as it is uncovered" />
 	<Author value="Christian 'Alloc' Illy" />
-	<Version value="47" />
+	<Version value="48" />
 	<Website value="https://7dtd.illy.bz" />
 </xml>
Index: binary-improvements/MapRendering/WebAndMapRendering.csproj
===================================================================
--- binary-improvements/MapRendering/WebAndMapRendering.csproj	(revision 470)
+++ binary-improvements/MapRendering/WebAndMapRendering.csproj	(revision 488)
@@ -48,8 +48,4 @@
     <Reference Include="LogLibrary">
       <HintPath>..\7dtd-binaries\LogLibrary.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="MapRendering, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
-      <HintPath>..\7dtd-binaries\MapRendering.dll</HintPath>
       <Private>False</Private>
     </Reference>
Index: binary-improvements/MapRendering/WebTokens_Legacy.cs
===================================================================
--- binary-improvements/MapRendering/WebTokens_Legacy.cs	(revision 470)
+++ binary-improvements/MapRendering/WebTokens_Legacy.cs	(revision 488)
@@ -5,13 +5,13 @@
 		private const string notUsedMessage = "NOT USED - WebTokens are managed through vanilla 7DTD now. Please use the 'webtokens' command instead.";
 		
-		protected override string[] getCommands () {
+		public override string[] getCommands () {
 			return new[] {"webtokens_legacy"};
 		}
 
-		protected override string getDescription () {
+		public override string getDescription () {
 			return notUsedMessage;
 		}
 
-		protected override string getHelp () {
+		public override string getHelp () {
 			return notUsedMessage;
 		}
Index: binary-improvements/bin/Mods/Allocs_CommandExtensions/ModInfo.xml
===================================================================
--- binary-improvements/bin/Mods/Allocs_CommandExtensions/ModInfo.xml	(revision 470)
+++ binary-improvements/bin/Mods/Allocs_CommandExtensions/ModInfo.xml	(revision 488)
@@ -5,5 +5,5 @@
 	<Description value="Additional commands for server operation" />
 	<Author value="Christian 'Alloc' Illy" />
-	<Version value="26" />
+	<Version value="27" />
 	<Website value="https://7dtd.illy.bz" />
 </xml>
Index: binary-improvements/bin/Mods/Allocs_CommonFunc/ModInfo.xml
===================================================================
--- binary-improvements/bin/Mods/Allocs_CommonFunc/ModInfo.xml	(revision 470)
+++ binary-improvements/bin/Mods/Allocs_CommonFunc/ModInfo.xml	(revision 488)
@@ -5,5 +5,5 @@
 	<Description value="Common functions" />
 	<Author value="Christian 'Alloc' Illy" />
-	<Version value="31" />
+	<Version value="32" />
 	<Website value="https://7dtd.illy.bz" />
 </xml>
Index: binary-improvements/bin/Mods/Allocs_WebAndMapRendering/ModInfo.xml
===================================================================
--- binary-improvements/bin/Mods/Allocs_WebAndMapRendering/ModInfo.xml	(revision 470)
+++ binary-improvements/bin/Mods/Allocs_WebAndMapRendering/ModInfo.xml	(revision 488)
@@ -5,5 +5,5 @@
 	<Description value="Render the game map to image map tiles as it is uncovered" />
 	<Author value="Christian 'Alloc' Illy" />
-	<Version value="47" />
+	<Version value="48" />
 	<Website value="https://7dtd.illy.bz" />
 </xml>
