Use block state id to check bed occupancy
This commit is contained in:
parent
324ad41bf7
commit
4d2d358175
|
@ -15,6 +15,11 @@ for name, data in JSON_BLOCKS.items():
|
||||||
for state in data['states']:
|
for state in data['states']:
|
||||||
BLOCKS[state['id']] = name.replace('minecraft:', '')
|
BLOCKS[state['id']] = name.replace('minecraft:', '')
|
||||||
|
|
||||||
|
PROPS = {}
|
||||||
|
for name, data in JSON_BLOCKS.items():
|
||||||
|
for state in data['states']:
|
||||||
|
PROPS[state['id']] = state.get('properties', {})
|
||||||
|
|
||||||
BREAK_DISTANCE = 6
|
BREAK_DISTANCE = 6
|
||||||
|
|
||||||
AIR = 0
|
AIR = 0
|
||||||
|
|
|
@ -139,7 +139,15 @@ class SleepWithBedStates:
|
||||||
print('Placing bed')
|
print('Placing bed')
|
||||||
self.g.game.place_block(self.area, BlockFace.TOP)
|
self.g.game.place_block(self.area, BlockFace.TOP)
|
||||||
self.my_bed = True
|
self.my_bed = True
|
||||||
self.state = self.use_bed
|
self.wait_time = 0.5
|
||||||
|
self.state = self.wait_use
|
||||||
|
|
||||||
|
def wait_use(self):
|
||||||
|
# wait to use the bed
|
||||||
|
if self.wait_time > 0:
|
||||||
|
self.wait_time -= utils.TICK
|
||||||
|
else:
|
||||||
|
self.state = self.use_bed
|
||||||
|
|
||||||
def use_bed(self):
|
def use_bed(self):
|
||||||
w = self.g.world
|
w = self.g.world
|
||||||
|
|
|
@ -280,13 +280,13 @@ class World:
|
||||||
|
|
||||||
def check_bed_occupied(self, bed):
|
def check_bed_occupied(self, bed):
|
||||||
# returns true if the bed is occupied by a player
|
# returns true if the bed is occupied by a player
|
||||||
print('Checking bed occupancy:', bed)
|
bid = self.g.chunks.get_block_at(*bed)
|
||||||
for player in self.g.players.values():
|
if blocks.PROPS[bid]['occupied'] == 'true':
|
||||||
ppos = utils.pint((player.x, player.y, player.z))
|
print('Checking bed occupancy:', bed, '-> occupied')
|
||||||
if utils.phyp(bed, ppos) <= 1 and player.y - int(player.y) == 0.6875:
|
return True
|
||||||
print('Bed is occupied by:', player, self.g.player_names[player.player_uuid])
|
else:
|
||||||
return True
|
print('Checking bed occupancy:', bed, '-> free')
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def find_cache_openings(self, area):
|
def find_cache_openings(self, area):
|
||||||
return self.find_bed_openings(area)
|
return self.find_bed_openings(area)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user