Program the bot to crawl, fix wood farming bugs
This commit is contained in:
@@ -121,8 +121,9 @@ HALF_PARKOUR = {
|
||||
BLOCK_CACHE_SIZE = 2**14
|
||||
|
||||
class Pathfinder(AStar):
|
||||
def __init__(self, chunks):
|
||||
self.chunks = chunks
|
||||
def __init__(self, g):
|
||||
self.g = g
|
||||
self.chunks = g.chunks
|
||||
self.start_time = time.time()
|
||||
|
||||
@functools.lru_cache(maxsize=BLOCK_CACHE_SIZE)
|
||||
@@ -133,6 +134,23 @@ class Pathfinder(AStar):
|
||||
def bavoid(self, p):
|
||||
return self.chunks.get_block_at(*p) in blocks.AVOID_IDS or p[1] < 0
|
||||
|
||||
def check_traverse_crawling(self, node, offset):
|
||||
dest = utils.padd(node, offset)
|
||||
|
||||
if not self.bair(dest):
|
||||
return False
|
||||
|
||||
if self.bair(utils.padd(dest, BLOCK_BELOW)):
|
||||
return False
|
||||
|
||||
if self.bavoid(dest):
|
||||
return False
|
||||
|
||||
if self.bavoid(utils.padd(dest, BLOCK_BELOW)):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def check_traverse(self, node, offset):
|
||||
dest = utils.padd(node, offset)
|
||||
|
||||
@@ -254,27 +272,32 @@ class Pathfinder(AStar):
|
||||
def neighbors(self, node):
|
||||
results = []
|
||||
|
||||
for offset in TRAVERSE:
|
||||
if self.check_traverse(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
for offset in DIAGONAL:
|
||||
if self.check_diagonal(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
for offset in ASCEND:
|
||||
if self.check_ascend(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
for offset in DESCEND:
|
||||
if self.check_descend(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
for offset in DESCEND2:
|
||||
if self.check_descend2(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
for offset in DESCEND3:
|
||||
if self.check_descend3(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
for offset in PARKOUR:
|
||||
if self.check_parkour(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
if self.g.crawling:
|
||||
for offset in TRAVERSE:
|
||||
if self.check_traverse_crawling(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
else:
|
||||
for offset in TRAVERSE:
|
||||
if self.check_traverse(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
for offset in DIAGONAL:
|
||||
if self.check_diagonal(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
for offset in ASCEND:
|
||||
if self.check_ascend(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
for offset in DESCEND:
|
||||
if self.check_descend(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
for offset in DESCEND2:
|
||||
if self.check_descend2(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
for offset in DESCEND3:
|
||||
if self.check_descend3(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
for offset in PARKOUR:
|
||||
if self.check_parkour(node, offset):
|
||||
results.append(utils.padd(node, offset))
|
||||
|
||||
if not results:
|
||||
if time.time() - self.start_time > 2.0:
|
||||
|
||||
Reference in New Issue
Block a user