#!/usr/bin/python import sys import pydfhack from pydfhack.blocks import Point DF = pydfhack.API("Memory.xml") DF.Attach() pos = DF.position maps = DF.maps cursor = pos.get_cursor() refc = dict(pydfhack=pydfhack, API=pydfhack.API, DF=DF, pos=pos, maps=maps) msize = maps.get_size() print msize locs = dict(pydfhack=pydfhack, API=pydfhack.API, DF=DF, pos=pos, maps=maps, msize=msize, cursor=cursor) for z in range(msize[2]): trees = 0 saplings = 0 dead_saplings = 0 for x in range(msize[0]): for y in range(msize[1]): p = Point(x, y, z, True) block = maps.get_block(point=p) changed = False if not block.tiles: break for tx in range(16): for ty in range(16): tile = block.tiles[tx][ty] if tile.ttype == 24: trees += 1 elif tile.ttype == 231: saplings += 1 tile.ttype = 24 changed = True elif tile.ttype == 392: dead_saplings += 1 tile.ttype = 24 changed = True if changed: block.save() print "Saved block {0}".format(block) print "Z-Level {0}: Trees {1}, Saplings {2}, Dead saplings {3}".format(z, trees, saplings, dead_saplings) DF.Resume() DF.Detach()