private void GetLocationData(IDictionary <string, object> data) { try { systemName = JsonParsing.getString(data, "StarSystem") ?? systemName; // Some events are bugged and return a SystemAddress of 1, regardles of the system we are in. // We need to ignore data that matches this pattern. long?SystemAddress = JsonParsing.getOptionalLong(data, "SystemAddress"); systemAddress = (SystemAddress > 1 ? SystemAddress : systemAddress); data.TryGetValue("StarPos", out object starpos); if (starpos != null) { List <object> starPos = (List <object>)starpos; systemX = Math.Round(JsonParsing.getDecimal("X", starPos[0]) * 32M) / 32M; systemY = Math.Round(JsonParsing.getDecimal("Y", starPos[1]) * 32M) / 32M; systemZ = Math.Round(JsonParsing.getDecimal("Z", starPos[2]) * 32M) / 32M; } marketId = JsonParsing.getOptionalLong(data, "MarketID") ?? marketId; stationName = JsonParsing.getString(data, "StationName") ?? stationName; } catch (Exception ex) { data.Add("exception", ex.Message); data.Add("stacktrace", ex.StackTrace); Logging.Error("Failed to parse EDDN location data", data); } }