public static TileEntity FromNbt(NbtCompound entityTag, out Vector3 position) { position = Vector3.Zero; var id = entityTag.Get<NbtString>("id").Value; Type type = (from e in dummyInstances where e.Id == id select e.GetType()).FirstOrDefault(); if (type == null) return null; var serializer = new NbtSerializer(type); var entity = (TileEntity)serializer.Deserialize(entityTag); position = new Vector3( entityTag.Get<NbtInt>("x").Value, entityTag.Get<NbtInt>("y").Value, entityTag.Get<NbtInt>("z").Value); return entity; }
public void TestSignTile() { SignTileEntity entity = new SignTileEntity(); entity.Text1 = "Test1"; entity.Text2 = "Test2"; entity.Text3 = "Test3"; entity.Text4 = "Test4"; var serializer = new NbtSerializer(typeof(SignTileEntity)); var obj = serializer.Serialize(entity); var result = (SignTileEntity)serializer.Deserialize(obj); Assert.AreEqual(entity.Id, result.Id); Assert.AreEqual(entity.Text1, result.Text1); Assert.AreEqual(entity.Text2, result.Text2); Assert.AreEqual(entity.Text3, result.Text3); Assert.AreEqual(entity.Text4, result.Text4); }
private void LoadFromFile(string directory) { NbtFile file = new NbtFile(); using (var stream = File.Open(Path.Combine(LevelDirectory, "level.dat"), FileMode.Open)) file.LoadFromStream(stream, NbtCompression.None, null); var data = file.RootTag.Get<NbtCompound>("Data"); var serializer = new NbtSerializer(typeof(SavedLevel)); SavedLevel level = (SavedLevel)serializer.Deserialize(data); Name = level.LevelName; Time = level.Time; GameMode = (GameMode)level.GameMode; MapFeatures = level.MapFeatures; Seed = level.Seed; // Find world generator string generatorName = level.GeneratorName; WorldGenerator = GetGenerator(generatorName); WorldGenerator.Seed = Seed; GeneratorOptions = level.GeneratorOptions; WorldGenerator.Initialize(this); SpawnPoint = level.SpawnPoint; World = new World(this, WorldGenerator, Path.Combine(directory, "region")); }