diff --git a/game.py b/game.py index f1775ba..d315ab6 100644 --- a/game.py +++ b/game.py @@ -759,7 +759,7 @@ class Game: try: item = self.g.window.contents[slot] except KeyError: - item = Slot(present=False, item_id=None, item_count=None, nbt=None) + item = Slot(present=False) print(item) self.click_window(slot, button, mode, item) else: diff --git a/jobs.py b/jobs.py index 0a436c8..bf66cb7 100644 --- a/jobs.py +++ b/jobs.py @@ -893,7 +893,6 @@ class CacheItemsStates: self.g.look_at = self.area self.state = self.open_chest - def select_chest(self): if self.g.game.select_item([items.CHEST_ID]): self.state = self.find_cache_spot @@ -1562,6 +1561,10 @@ class FillBlocksStates: return self.last_block = check + else: # for + self.state = self.cleanup + print('Aborting, no air left') + return def select_item(self): f = self.g.filling @@ -1901,12 +1904,13 @@ class JobStates: self.sleep_with_bed_states.silent = True f = self.g.filling - name = blocks.BLOCKS[f.block] - item = items.ITEMS['minecraft:'+name]['protocol_id'] + if f: + name = blocks.BLOCKS[f.block] + item = items.ITEMS['minecraft:'+name]['protocol_id'] - self.grab_supplies_states.supplies = { - tuple([item]): 0, - } + self.grab_supplies_states.supplies = { + tuple([item]): 0, + } return machines def loiter(self): diff --git a/protocol/types.py b/protocol/types.py index 967c2b0..fa5783d 100644 --- a/protocol/types.py +++ b/protocol/types.py @@ -103,7 +103,7 @@ class Nbt(Type): class Slot(Type): - def __init__(self, present, item_id, item_count, nbt): + def __init__(self, present, item_id=None, item_count=None, nbt=None): self.present = present self.item_id = item_id self.item_count = item_count @@ -112,8 +112,11 @@ class Slot(Type): def __str__(self): return str(self.__dict__) def __repr__(self): - return 'Slot(present={}, item_id={}, item_count={}, nbt={}'.format( - self.present, self.item_id, self.item_count, self.nbt) + if self.present: + return 'Slot(present={}, item_id={}, item_count={}, nbt={}'.format( + self.present, self.item_id, self.item_count, self.nbt) + else: + return 'Slot(present={})'.format(self.present) @staticmethod def read(file_object): @@ -131,9 +134,10 @@ class Slot(Type): @staticmethod def send(value, socket): Boolean.send(value.present, socket) - VarInt.send(value.item_id, socket) - Byte.send(value.item_count, socket) - Byte.send(0x00, socket) + if value.present: + VarInt.send(value.item_id, socket) + Byte.send(value.item_count, socket) + Byte.send(0x00, socket) class Entry(Type):