def save_player(self, player): tag = NBTFile() tag.name = "" tag["Pos"] = TAG_List(type=TAG_Double) tag["Pos"].tags = [TAG_Double(i) for i in player.location.pos] tag["Rotation"] = TAG_List(type=TAG_Double) tag["Rotation"].tags = [ TAG_Double(i) for i in player.location.ori.to_degs() ] tag["Inventory"] = self._save_inventory_to_tag(player.inventory) fp = self.folder.child("players").child("%s.dat" % player.username) self._write_tag(fp, tag)
def test_load_entity_from_tag_painting(self): tag = TAG_Compound() tag["Pos"] = TAG_List(type=TAG_Double) tag["Pos"].tags = [TAG_Double(10), TAG_Double(5), TAG_Double(-15)] tag["Rotation"] = TAG_List(type=TAG_Double) tag["Rotation"].tags = [TAG_Double(90), TAG_Double(0)] tag["OnGround"] = TAG_Byte(1) tag["id"] = TAG_String("Painting") tag["Dir"] = TAG_Byte(1) tag["Motive"] = TAG_String("Sea") tag["TileX"] = TAG_Int(32) tag["TileY"] = TAG_Int(32) tag["TileZ"] = TAG_Int(32) entity = self.s._load_entity_from_tag(tag) self.assertEqual(entity.motive, "Sea") self.assertEqual(entity.direction, 1)
def test_load_entity_from_tag(self): tag = TAG_Compound() tag["Pos"] = TAG_List(type=TAG_Double) tag["Pos"].tags = [TAG_Double(10), TAG_Double(5), TAG_Double(-15)] tag["Rotation"] = TAG_List(type=TAG_Double) tag["Rotation"].tags = [TAG_Double(90), TAG_Double(0)] tag["OnGround"] = TAG_Byte(1) tag["id"] = TAG_String("Item") tag["Item"] = TAG_Compound() tag["Item"]["id"] = TAG_Short(3) tag["Item"]["Damage"] = TAG_Short(0) tag["Item"]["Count"] = TAG_Short(5) entity = self.serializer._load_entity_from_tag(tag) self.assertEqual(entity.location.x, 10) self.assertEqual(entity.location.yaw, 90) self.assertEqual(entity.location.grounded, True) self.assertEqual(entity.item[0], 3)
def _save_entity_to_tag(self, entity): tag = NBTFile() tag.name = "" tag["id"] = TAG_String(entity.name) position = entity.location.pos tag["Pos"] = TAG_List(type=TAG_Double) tag["Pos"].tags = [TAG_Double(i) for i in position] rotation = entity.location.ori.to_degs() tag["Rotation"] = TAG_List(type=TAG_Double) tag["Rotation"].tags = [TAG_Double(i) for i in rotation] tag["OnGround"] = TAG_Byte(int(entity.location.grounded)) self._entity_savers[entity.name](entity, tag) return tag
def save_player(self, player): tag = NBTFile() tag.name = "" tag["Pos"] = TAG_List(type=TAG_Double) tag["Pos"].tags = [TAG_Double(i) for i in (player.location.x, player.location.y, player.location.z)] tag["Rotation"] = TAG_List(type=TAG_Double) tag["Rotation"].tags = [TAG_Double(i) for i in (player.location.yaw, player.location.pitch)] tag["Inventory"] = self._save_inventory_to_tag(player.inventory) fp = self.folder.child("players") if not fp.exists(): fp.makedirs() fp = fp.child("%s.dat" % player.username) self._write_tag(fp, tag)