public void ClientAdminRead(IReadMessage incMsg) { bool hasPermission = incMsg.ReadBoolean(); if (!hasPermission) { incMsg.ReadPadBits(); return; } bool isOwner = incMsg.ReadBoolean(); incMsg.ReadPadBits(); bannedPlayers.Clear(); UInt32 bannedPlayerCount = incMsg.ReadVariableUInt32(); for (int i = 0; i < (int)bannedPlayerCount; i++) { string name = incMsg.ReadString(); UInt16 uniqueIdentifier = incMsg.ReadUInt16(); bool isRangeBan = incMsg.ReadBoolean(); bool includesExpiration = incMsg.ReadBoolean(); incMsg.ReadPadBits(); DateTime?expiration = null; if (includesExpiration) { double hoursFromNow = incMsg.ReadDouble(); expiration = DateTime.Now + TimeSpan.FromHours(hoursFromNow); } string reason = incMsg.ReadString(); string endPoint = ""; UInt64 steamID = 0; if (isOwner) { endPoint = incMsg.ReadString(); steamID = incMsg.ReadUInt64(); } else { endPoint = "Endpoint concealed by host"; steamID = 0; } bannedPlayers.Add(new BannedPlayer(name, uniqueIdentifier, isRangeBan, endPoint, steamID, reason, expiration)); } if (banFrame != null) { var parent = banFrame.Parent; parent.RemoveChild(banFrame); CreateBanFrame(parent); } }