def save_to_tag(chunk): tag = NBTFile() tag.name = "" level = TAG_Compound() tag["Level"] = level level["Blocks"] = TAG_Byte_Array() level["HeightMap"] = TAG_Byte_Array() level["BlockLight"] = TAG_Byte_Array() level["Data"] = TAG_Byte_Array() level["SkyLight"] = TAG_Byte_Array() level["Blocks"].value = "".join(chr(i) for i in chunk.blocks.ravel()) level["HeightMap"].value = "".join(chr(i) for i in chunk.heightmap.ravel()) level["BlockLight"].value = "".join( pack_nibbles(chunk.blocklight.ravel())) level["Data"].value = "".join(pack_nibbles(chunk.metadata)) level["SkyLight"].value = "".join(pack_nibbles(chunk.skylight)) level["TerrainPopulated"] = TAG_Byte(chunk.populated) level["TileEntities"] = TAG_List(type=TAG_Compound) for tile in chunk.tiles.itervalues(): level["TileEntities"].tags.append(tile.save_to_tag()) return tag
def save_to_packet(self): """ Generate a chunk packet. """ array = self.blocks.tostring() array += pack_nibbles(self.metadata) array += pack_nibbles(self.blocklight) array += pack_nibbles(self.skylight) packet = make_packet("chunk", x=self.x * 16, y=0, z=self.z * 16, x_size=15, y_size=127, z_size=15, data=array) return packet
def save_to_packet(self): """ Generate a chunk packet. """ array = [chr(i) for i in self.blocks.ravel()] array += pack_nibbles(self.metadata) array += pack_nibbles(self.skylight) array += pack_nibbles(self.blocklight) packet = make_packet( "chunk", x=self.x * 16, y=0, z=self.z * 16, x_size=15, y_size=127, z_size=15, data="".join(array) ) return packet
def _save_chunk_to_tag(self, chunk): tag = NBTFile() tag.name = "" level = TAG_Compound() tag["Level"] = level level["xPos"] = TAG_Int(chunk.x) level["zPos"] = TAG_Int(chunk.z) level["Blocks"] = TAG_Byte_Array() level["HeightMap"] = TAG_Byte_Array() level["BlockLight"] = TAG_Byte_Array() level["Data"] = TAG_Byte_Array() level["SkyLight"] = TAG_Byte_Array() level["Blocks"].value = chunk.blocks.tostring() level["HeightMap"].value = chunk.heightmap.tostring() level["BlockLight"].value = pack_nibbles(chunk.blocklight) level["Data"].value = pack_nibbles(chunk.metadata) level["SkyLight"].value = pack_nibbles(chunk.skylight) level["TerrainPopulated"] = TAG_Byte(chunk.populated) level["Entities"] = TAG_List(type=TAG_Compound) for entity in chunk.entities: try: entitytag = self._save_entity_to_tag(entity) level["Entities"].tags.append(entitytag) except KeyError: print "Unknown entity %s" % entity.name level["TileEntities"] = TAG_List(type=TAG_Compound) for tile in chunk.tiles.itervalues(): try: tiletag = self._save_tile_to_tag(tile) level["TileEntities"].tags.append(tiletag) except KeyError: print "Unknown tile entity %s" % tile.name return tag