|
|
|
@ -42,8 +42,13 @@ class SleepWithBedStates: |
|
|
|
|
|
|
|
|
|
self.beds = [] |
|
|
|
|
for bed in result: |
|
|
|
|
if bed not in self.bad_beds: |
|
|
|
|
self.beds.append(bed) |
|
|
|
|
if bed in self.bad_beds: |
|
|
|
|
continue |
|
|
|
|
|
|
|
|
|
if w.check_bed_occupied(bed): |
|
|
|
|
continue |
|
|
|
|
|
|
|
|
|
self.beds.append(bed) |
|
|
|
|
|
|
|
|
|
print('Found:', self.beds) |
|
|
|
|
self.state = self.choose_bed |
|
|
|
@ -84,6 +89,7 @@ class SleepWithBedStates: |
|
|
|
|
|
|
|
|
|
def going_to_bed(self): |
|
|
|
|
if utils.pint(self.g.pos) == self.opening: |
|
|
|
|
print('At existing bed') |
|
|
|
|
self.my_bed = False |
|
|
|
|
self.g.look_at = utils.padd(self.area, path.BLOCK_BELOW) |
|
|
|
|
self.state = self.use_bed |
|
|
|
@ -128,32 +134,43 @@ class SleepWithBedStates: |
|
|
|
|
|
|
|
|
|
def going_to_area(self): |
|
|
|
|
if utils.pint(self.g.pos) == self.opening: |
|
|
|
|
print('At bed area') |
|
|
|
|
self.g.look_at = utils.padd(self.area, path.BLOCK_BELOW) |
|
|
|
|
self.state = self.place_bed |
|
|
|
|
|
|
|
|
|
def place_bed(self): |
|
|
|
|
print('Placing bed') |
|
|
|
|
self.g.game.place_block(self.area, BlockFace.TOP) |
|
|
|
|
self.my_bed = True |
|
|
|
|
self.state = self.use_bed |
|
|
|
|
|
|
|
|
|
def use_bed(self): |
|
|
|
|
if self.g.time > 12550: |
|
|
|
|
print('Sleeping') |
|
|
|
|
self.g.game.place_block(self.area, BlockFace.TOP) |
|
|
|
|
if not self.silent: |
|
|
|
|
self.g.chat.send('zzz') |
|
|
|
|
self.state = self.sleep_bed |
|
|
|
|
w = self.g.world |
|
|
|
|
|
|
|
|
|
if self.g.time < 12550: |
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
if w.check_bed_occupied(self.area): |
|
|
|
|
print('Bed occupied, aborting.') |
|
|
|
|
self.state = self.cleanup |
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
print('Using bed') |
|
|
|
|
self.g.game.place_block(self.area, BlockFace.TOP) |
|
|
|
|
if not self.silent: |
|
|
|
|
self.g.chat.send('zzz') |
|
|
|
|
self.state = self.sleep_bed |
|
|
|
|
|
|
|
|
|
def sleep_bed(self): |
|
|
|
|
w = self.g.world |
|
|
|
|
p = utils.pint(self.g.pos) |
|
|
|
|
|
|
|
|
|
threats = w.find_threats(p, 30) |
|
|
|
|
threats = w.find_threats(p, 10) |
|
|
|
|
if threats: |
|
|
|
|
print('Waking up due to threats:') |
|
|
|
|
print(threats) |
|
|
|
|
self.g.game.leave_bed() |
|
|
|
|
self.state = self.break_bed |
|
|
|
|
self.state = self.cleanup |
|
|
|
|
elif self.g.time < 100: |
|
|
|
|
print('Woke up time') |
|
|
|
|
self.state = self.break_bed |
|
|
|
@ -165,7 +182,6 @@ class SleepWithBedStates: |
|
|
|
|
else: |
|
|
|
|
self.state = self.cleanup |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def collect_bed(self): |
|
|
|
|
if not self.g.breaking: |
|
|
|
|
self.g.path = [utils.padd(self.area, utils.spiral(n)) for n in range(9)] |
|
|
|
|