public static void Load()
{
ChestSavePath = Path.Combine(ChestControlDirectory, Main.worldID + ".txt");
if (!Directory.Exists(ChestControlDirectory))
Directory.CreateDirectory(ChestControlDirectory);
if (!File.Exists(ChestSavePath))
File.Create(ChestSavePath).Close();
for (int i = 0; i < Chests.Length; i++)
Chests[i] = new Chest();
bool error = false;
foreach (
var args in
File.ReadAllLines(ChestSavePath).Select(line => line.Split('|')).Where(args => args.Length >= 7))
try
{
var chest = new Chest();
chest.SetPosition(new Vector2(int.Parse(args[1]), int.Parse(args[2])));
chest.SetOwner(args[3]);
chest.SetID(int.Parse(args[0]));
if (bool.Parse(args[4]))
chest.Lock();
if (bool.Parse(args[5]))
chest.regionLock(true);
if (args[6] != "")
chest.SetPassword(args[6], true);
//provide backwards compatibility
if (args.Length == 9)
if (bool.Parse(args[7]))
{
chest.SetRefill(true);
//chest.SetRefillItems(args[8]);
}
//check if chest still exists in world
if (!Chest.TileIsChest(chest.GetPosition()))
//chest dont exists - so reset it
chest.Reset();
//check if chest in array didn't move
if (!VerifyChest(chest.GetID(), chest.GetPosition()))
{
int id = Terraria.Chest.FindChest((int) chest.GetPosition().X, (int) chest.GetPosition().Y);
if (id != -1)
chest.SetID(id);
else
chest.Reset();
}
if (Chests.Length > chest.GetID()) Chests[chest.GetID()] = chest;
}
catch
{
error = true;
}
if (error)
Log.Write("Failed to load some chests data, corresponding chests will be left unprotected.", LogLevel.Error);
}