/// <summary> /// Event handler for setting metadata field values. /// </summary> /// <param name="player">Player's network ID</param> /// <param name="handle">Entity's handle</param> /// <param name="key">field key</param> /// <param name="value">value to set</param> private void MetadataSet(int player, int handle, string key, string value) { if (string.IsNullOrWhiteSpace(key)) { return; } IRedisClient <string> client = pool.GetClient(); Player p = Players[player]; if (p == null) { return; } if (string.IsNullOrWhiteSpace(value)) { // delete field if set to null value client.HDel($"meta_{player}_{handle}", key); return; } bool exists = client.Exists($"meta_{player}_{handle}"); if (!exists) { // not tracked, so don't create a new hash return; } client.HSet($"meta_{player}_{handle}", key, value); }