diff --git a/game.py b/game.py index 2a12a93..f029424 100644 --- a/game.py +++ b/game.py @@ -97,30 +97,35 @@ class MCWorld: # crawl to the bottom log while self.block_at(*utils.padd(log, path.BLOCK_BELOW)) in blocks.LOG_IDS: log = utils.padd(log, path.BLOCK_BELOW) + base = log - # make sure we are on the ground - if self.block_at(*utils.padd(log, path.BLOCK_BELOW)) in blocks.NON_SOLID_IDS: + if base in found_trees: continue - # crawl to the top log to count + # make sure we are on the ground + if self.block_at(*utils.padd(base, path.BLOCK_BELOW)) in blocks.NON_SOLID_IDS: + continue + + # crawl to the top log to count and check leaves log_count = 1 + good_leaves = False while self.block_at(*utils.padd(log, path.BLOCK_ABOVE)) in blocks.LOG_IDS: log = utils.padd(log, path.BLOCK_ABOVE) log_count += 1 + for offset in path.CHECK_DIRECTIONS: + if self.block_at(*utils.padd(log, offset)) not in blocks.LEAF_IDS: + break + else: # for: + good_leaves = True + # make sure it's a good tree - if self.block_at(*utils.padd(log, path.BLOCK_ABOVE)) not in blocks.LEAF_IDS or log_count < 3: + if not good_leaves or log_count < 3: continue - # crawl back to the bottom log - while self.block_at(*utils.padd(log, path.BLOCK_BELOW)) in blocks.LOG_IDS: - log = utils.padd(log, path.BLOCK_BELOW) + found_trees.append(base) - if log in found_trees: - continue - found_trees.append(log) - - yield log + yield base def find_tree_openings(self, tree): # returns coords in a cardinal direction where we can stand by tree @@ -577,6 +582,11 @@ class Game: else: reply = '/afk' + if command == 'tree': + pos = utils.pint(self.g.pos) + tree = next(self.g.world.find_trees(pos, 50)) + reply = str(tree)[1:-1] + ################# Specific commands ########################## if for_me: