/// <summary> /// Converts a Minecraft NBT format player file to c#raft xml /// </summary> /// <param name="fileName">Filepath of nbt</param> internal void ConvertPlayerNBT(string fileName) { FileStream s = null; NBTFile nbt = null; try { ClientSurrogate p = new ClientSurrogate(); s = new FileStream(fileName, FileMode.Open); nbt = NBTFile.OpenFile(s, 1); foreach (KeyValuePair <string, NBTTag> sa in nbt.Contents) { switch (sa.Key) { case "Health": p.Health = sa.Value.Payload; break; case "Pos": p.X = sa.Value.Payload[2].Payload; p.Y = sa.Value.Payload[1].Payload; p.Z = sa.Value.Payload[0].Payload; break; case "Rotation": p.Pitch = sa.Value.Payload[1].Payload; p.Yaw = sa.Value.Payload[0].Payload; break; case "playerGameType": p.GameMode = (byte)sa.Value.Payload; break; case "foodLevel": p.Food = (short)sa.Value.Payload; break; case "foodSaturationLevel": p.FoodSaturation = sa.Value.Payload; break; case "Inventory": Inventory inv = new Inventory(); foreach (NBTTag tag in sa.Value.Payload) { inv.AddItem((short)tag.Payload["id"].Payload, (sbyte)tag.Payload["Count"].Payload, (short)tag.Payload["Damage"].Payload, false); } p.Inventory = inv; break; } } SavePlayerXml(p, fileName); } catch (Exception ex) { Console.WriteLine("Error converting file" + fileName + " to C#raft format"); Console.WriteLine(ex); } finally { if (s != null) { s.Dispose(); } if (nbt != null) { nbt.Dispose(); } } }