Ejemplo n.º 1
0
Archivo: map.py Proyecto: ylehir/NBT
def main(world_folder, show=True):
    world = WorldFolder(world_folder)
    bb = world.get_boundingbox()
    world_map = Image.new('RGB', (16 * bb.lenx(), 16 * bb.lenz()))
    t = world.chunk_count()
    try:
        i = 0.0
        for chunk in world.iter_chunks():
            if i % 50 == 0:
                sys.stdout.write("Rendering image")
            elif i % 2 == 0:
                sys.stdout.write(".")
                sys.stdout.flush()
            elif i % 50 == 49:
                sys.stdout.write("%5.1f%%\n" % (100 * i / t))
            i += 1
            chunkmap = get_map(chunk)
            x, z = chunk.get_coords()
            world_map.paste(chunkmap, (16 * (x - bb.minx), 16 * (z - bb.minz)))
        print(" done\n")
        filename = os.path.basename(world_folder) + ".png"
        world_map.save(filename, "PNG")
        print("Saved map as %s" % filename)
    except KeyboardInterrupt:
        print(" aborted\n")
        filename = os.path.basename(world_folder) + ".partial.png"
        world_map.save(filename, "PNG")
        print("Saved map as %s" % filename)
        return 75  # EX_TEMPFAIL
    if show:
        world_map.show()
    return 0  # NOERR
Ejemplo n.º 2
0
def main(world_folder):
    world = WorldFolder(world_folder)

    try:
        for chunk in world.iter_nbt():
            print_results(entities_per_chunk(chunk["Level"]))

    except KeyboardInterrupt:
        return 75  # EX_TEMPFAIL
    return 0  # NOERR
Ejemplo n.º 3
0
    def __init__(self, level_name):
        self.level_name = level_name

        # Temporary fix for issue #6 until I have a better solution
        if not os.path.exists(level_name):
            return

        if not os.path.exists("%s/region" % level_name):
            return

        self.world = WorldFolder(level_name)
Ejemplo n.º 4
0
def main(world_folder, start=None, stop=None):
    world = WorldFolder(world_folder)

    try:
        for region in world.iter_regions():
            process_region_file(region, start, stop)

    except KeyboardInterrupt:
        print('Keyboard interrupt!')
        print_results(block_counts)
        return 75  # EX_TEMPFAIL

    print_results()
    return 0  # EX_OK
Ejemplo n.º 5
0
def main(world_folder):
    world = WorldFolder(world_folder)

    try:
        region = world.get_region(0, 0)
        process_region_file(region)
        print_results()

    except KeyboardInterrupt:
        print('Keyboard interrupt!')
        print_results()
        return 75  # EX_TEMPFAIL

    return 0  # EX_OK
Ejemplo n.º 6
0
def main(world_folder, options):
    world = WorldFolder(world_folder)

    if not isinstance(world, nbt.world.AnvilWorldFolder):
        print(world_folder + " is not an Anvil world")
        return 0

    level = NBTFile(os.path.join(world_folder, "level.dat"))
    version = Util.get_version(level)

    print("\nLoading level at " + world_folder)
    if version != "1.8" or options.force:
        if options.force:
            print("[Forcing level conversion attempt]")
        print("Level saved as Minecraft version " + version)
        try:
            total_nbt_edits = 0
            total_block_edits = 0
            for region in world.iter_regions():
                for chunk in region.iter_chunks():
                    chunk, nbt_edits = convert_chunk(chunk)
                    chunk, block_edits = convert_block(chunk)
                    total_nbt_edits += nbt_edits
                    total_block_edits += block_edits
                    if options.save and nbt_edits > 0 or block_edits > 0:
                        save_chunk(region, chunk)
            if total_nbt_edits > 0 or total_block_edits > 0:
                print("%d modifications made to the level nbt" %
                      (total_nbt_edits))
                print("%d modifications made to block section byte arrays" %
                      (total_block_edits))
                if options.save:
                    save_level(level, world_folder)
                else:
                    print("No modifications saved to level (using -n flag)")
            else:
                print("No level data was changed (nothing to modify)")
        except KeyboardInterrupt:
            return 75
    else:
        print("Level is already saved for Minecraft 1.8 (or older)")

    if options.disable_keep_inv and options.save:
        disable_keep_inv(level, world_folder)

    return 0
Ejemplo n.º 7
0
                find[int(ele[0])].sort()
        except IndexError:
            print("Aborting, ID too large in line " + str(i) + " : " + line)
            sys.exit()
        except ValueError:
            print("Aborting, bad value in line " + str(i) + " : " + line)
            sys.exit()
        line = inputfile.readline().strip("\n\r")
        i += 1
    inputfile.close()
    #print(find)

    #return

    counter = 0
    world = WorldFolder(world_folder)

    print("Counting chunks")
    numchunks = 0
    for chunk in world.iter_nbt():
        numchunks += 1
        sys.stdout.write('%d chunks\r' % (numchunks))
        sys.stdout.flush()
    #numchunks = 689
    print("")
    chunknum = 0
    try:
        for chunk in world.iter_nbt():
            chunknum += 1
            sys.stdout.write('%d / %d chunks searched\r' %
                             (chunknum, numchunks))