public override object ReadJson(JsonReader reader, Type objectType, object existingValue, [NotNull] JsonSerializer serializer) { var jsonObject = JObject.Load(reader); int opacityRed = 31, opacityGreen = 31, opacityBlue = 31, opacitySunRed = 31, opacitySunGreen = 31, opacitySunBlue = 31; int emissivityRed = 0, emissivityGreen = 0, emissivityBlue = 0, emissivitySunRed = 0, emissivitySunGreen = 0, emissivitySunBlue = 0; if (jsonObject["Opacity"] != null) { var value = jsonObject["Opacity"].Value <int>(); opacityRed = value; opacityGreen = value; opacityBlue = value; opacitySunRed = value; opacitySunGreen = value; opacitySunBlue = value; } if (jsonObject["Emissivity"] != null) { var value = jsonObject["Emissivity"].Value <int>(); emissivityRed = value; emissivityGreen = value; emissivityBlue = value; } if (jsonObject["EmissivitySun"] != null) { var value = jsonObject["EmissivitySun"].Value <int>(); emissivitySunRed = value; emissivitySunGreen = value; emissivitySunBlue = value; } if (jsonObject["OpacitySun"] != null) { var value = jsonObject["OpacitySun"].Value <int>(); opacitySunRed = value; opacitySunGreen = value; opacitySunBlue = value; } if (jsonObject["OpacityRed"] != null) { var value = jsonObject["OpacityRed"].Value <int>(); opacityRed = value; opacitySunRed = value; } if (jsonObject["OpacityGreen"] != null) { var value = jsonObject["OpacityGreen"].Value <int>(); opacityGreen = value; opacitySunGreen = value; } if (jsonObject["OpacityBlue"] != null) { var value = jsonObject["OpacityBlue"].Value <int>(); opacityBlue = value; opacitySunBlue = value; } if (jsonObject["OpacitySunRed"] != null) { var value = jsonObject["OpacitySunRed"].Value <int>(); opacitySunRed = value; } if (jsonObject["OpacitySunGreen"] != null) { var value = jsonObject["OpacitySunGreen"].Value <int>(); opacitySunGreen = value; } if (jsonObject["OpacitySunBlue"] != null) { var value = jsonObject["OpacitySunBlue"].Value <int>(); opacitySunBlue = value; } if (jsonObject["EmissivityRed"] != null) { var value = jsonObject["EmissivityRed"].Value <int>(); emissivityRed = value; } if (jsonObject["EmissivityGreen"] != null) { var value = jsonObject["EmissivityGreen"].Value <int>(); emissivityGreen = value; } if (jsonObject["EmissivityBlue"] != null) { var value = jsonObject["EmissivityBlue"].Value <int>(); emissivityBlue = value; } if (jsonObject["EmissivitySunRed"] != null) { var value = jsonObject["EmissivitySunRed"].Value <int>(); emissivitySunRed = value; } if (jsonObject["EmissivitySunGreen"] != null) { var value = jsonObject["EmissivitySunGreen"].Value <int>(); emissivitySunGreen = value; } if (jsonObject["EmissivitySunBlue"] != null) { var value = jsonObject["EmissivitySunBlue"].Value <int>(); emissivitySunBlue = value; } var block = new BlockData(); serializer.Populate(jsonObject.CreateReader(), block); block.Opacity = LightProcessor.GetOpacity(opacityRed, opacityGreen, opacityBlue, opacitySunRed, opacitySunGreen, opacitySunBlue); block.Emissivity = (uint)((emissivityRed & 31) << 25) | (uint)((emissivityGreen & 31) << 20) | (uint)((emissivityBlue & 31) << 15) | (uint)((emissivitySunRed & 31) << 10) | (uint)((emissivitySunGreen & 31) << 5) | (uint)(emissivitySunBlue & 31); return(block); }