From 6bcb988dfbe7c07d7103d7f0b9f3c9c07a367086 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Tue, 2 Aug 2016 10:27:03 +1000 Subject: [PATCH] Fix when integer/long column is an empty string breaking PlayerData.Load, causing a stats reset for that player. --- Commands/CmdOverseer.cs | 2 +- Player/PlayerData.cs | 20 ++++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Commands/CmdOverseer.cs b/Commands/CmdOverseer.cs index 9bf02a45d..f95612d76 100644 --- a/Commands/CmdOverseer.cs +++ b/Commands/CmdOverseer.cs @@ -255,7 +255,7 @@ namespace MCGalaxy.Commands { Player.Message(p, value + " has been allowed building on your map."); } else if (cmd == "DEL") { // TODO: Delete zone by name - if (value == "ALL" || value == "") + if (value.CaselessEq("ALL") || value == "") CmdZone.DeleteAll(p); } else if (cmd == "BLOCK") { if (value == "") { diff --git a/Player/PlayerData.cs b/Player/PlayerData.cs index e9f88c8cc..05836d22e 100644 --- a/Player/PlayerData.cs +++ b/Player/PlayerData.cs @@ -94,13 +94,13 @@ namespace MCGalaxy { data.TitleColor = ParseColor(row["title_color"]); data.Color = ParseColor(row["color"]); - data.Money = int.Parse(row["Money"].ToString()); - data.Deaths = int.Parse(row["TotalDeaths"].ToString()); - data.Logins = int.Parse(row["totalLogin"].ToString()); - data.Kicks = int.Parse(row["totalKicked"].ToString()); + data.Money = ParseInt(row["Money"].ToString()); + data.Deaths = ParseInt(row["TotalDeaths"].ToString()); + data.Logins = ParseInt(row["totalLogin"].ToString()); + data.Kicks = ParseInt(row["totalKicked"].ToString()); - long blocks = long.Parse(row["totalBlocks"].ToString()); - long cuboided = long.Parse(row["totalCuboided"].ToString()); + long blocks = ParseLong(row["totalBlocks"].ToString()); + long cuboided = ParseLong(row["totalCuboided"].ToString()); data.TotalModified = blocks & LowerBitsMask; data.TotalPlaced = blocks >> LowerBits; data.TotalDrawn = cuboided & LowerBitsMask; @@ -109,6 +109,14 @@ namespace MCGalaxy { } + static long ParseLong(string value) { + return value == "" ? 0 : long.Parse(value); + } + + static int ParseInt(string value) { + return value == "" ? 0 : int.Parse(value); + } + static string ParseColor(object value) { string col = value.ToString().Trim(); if (col == "") return col;