Example #1
0
    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
Example #2
0
 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)
Example #3
0
 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)
Example #4
0
    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)