static void RestoreHandler([NotNull] Player player, [NotNull] CommandReader cmd) {
string fileName = cmd.Next();
if (fileName == null) {
CdRestore.PrintUsage(player);
return;
}
if (cmd.HasNext) {
CdRestore.PrintUsage(player);
return;
}
string fullFileName = WorldManager.FindMapFile(player, fileName);
if (fullFileName == null) return;
Map map;
if (!MapUtility.TryLoad(fullFileName, true, out map)) {
player.Message("Could not load the given map file ({0})", fileName);
return;
}
Map playerMap = player.WorldMap;
if (playerMap.Width != map.Width || playerMap.Length != map.Length || playerMap.Height != map.Height) {
player.Message("Map file dimensions must match your current world's dimensions ({0}x{1}x{2})",
playerMap.Width,
playerMap.Length,
playerMap.Height);
return;
}
map.Metadata["fCraft.Temp", "FileName"] = fullFileName;
player.SelectionStart(2, RestoreCallback, map, CdRestore.Permissions);
player.MessageNow("Restore: Click or &H/Mark&S 2 blocks.");
}