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 append_byte_array(name, bytesize=1000): bytesize -= len(name) bytesize -= 7 # byte_array = TAG_Byte_Array(name=name, value=bytearray([random.randrange(256) for i in range(bytesize)])) # level.append(byte_array) byte_array = TAG_Byte_Array(name=name) byte_array.value = bytearray([random.randrange(256) for i in range(bytesize)]) level.tags.append(byte_array)
def append_byte_array(name, bytesize=1000): bytesize -= len(name) bytesize -= 7 # byte_array = TAG_Byte_Array(name=name, value=bytearray([random.randrange(256) for i in range(bytesize)])) # level.append(byte_array) byte_array = TAG_Byte_Array(name=name) byte_array.value = bytearray( [random.randrange(256) for i in range(bytesize)]) level.tags.append(byte_array)
def save_to_tag(self): level = TAG_Compound() 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 self.blocks) level["HeightMap"].value = "".join(chr(i) for i in self.heightmap) level["BlockLight"].value = "".join(pack_nibbles(self.lightmap)) level["Data"].value = "".join(pack_nibbles(self.metadata)) level["SkyLight"].value = "".join(pack_nibbles(self.skylight)) level["TerrainPopulated"] = TAG_Byte(self.populated) self.tag["Level"] = level
def parse_block_info(blocks,data): add = [0] * 4096 for i,v in enumerate(blocks): if blocks[i] > 255: add[i] = blocks[i]//256 blocks[i] -= add[i] * 256 add_list = TAG_Byte_Array(name=unicode("Add")) add_list.value = array_byte_to_4bit(bytearray(add)) block_list =TAG_Byte_Array(name=unicode("Blocks")) block_list.value = bytearray(blocks) data_list =TAG_Byte_Array(name=unicode("Data")) data_list.value = array_byte_to_4bit(bytearray(data)) return (block_list,data_list,add_list)