@ -12,11 +12,15 @@ function sleep(quiet = cfg.sleep.quiet) {
! quiet && bot . chat ( "can't sleep, not in overworld now" )
return
}
if ( bot . isSleeping && ! cfg . sleep . force ) {
! quiet && bot . chat ( "already in bed!" )
return
}
let bed = bot . findBlock ( {
matching : block => bot . isABed ( block )
} )
let bed _occupied = bed && bot . parseBedMetadata ( bed ) . occupied
if ( bed && ! bed _occupied ) {
if ( bed && bed _occupied ) {
bot . lookAt ( bed . position )
bed = bot . findBlock ( {
matching : block => bot . isABed ( block ) && ! bot . parseBedMetadata ( block ) . occupied
@ -26,23 +30,46 @@ function sleep(quiet = cfg.sleep.quiet) {
if ( bed && ! bed _occupied ) {
bot . lookAt ( bed . position )
bot . waitForChunksToLoad ( ( ) => {
cfg . plugins . mover && cfg . plugins . mover . moveNear ( bed . position )
bot . sleep ( bed , ( err ) => {
if ( err ) {
! quiet && bot . chat ( ` can't sleep: ${ err . message } ` )
} else {
! quiet && bot . chat ( "zzz" )
console . log ( "sleeping? " , bot . isSleeping )
// hack until this is fixed
// TODO confirm this is fixed
// bot.isSleeping = true
}
cfg . plugins . mover && cfg . plugins . mover . moveNear ( bed . position , 2 )
bot . once ( 'goal_reached' , ( goal ) => {
console . info ( goal )
bot . sleep ( bed , ( err ) => {
if ( err ) {
! quiet && bot . chat ( ` can't sleep: ${ err . message } ` )
} else {
! quiet && bot . chat ( "zzz" )
console . log ( "sleeping? " , bot . isSleeping )
// hack until this is fixed
// TODO confirm this is fixed
// bot.isSleeping = true
}
} )
} )
} )
} else if ( inv && inv . equipItem ( "red_bed" , "hand" , true ) ) {
// doesn't work fortunately
// FIXME: DONT IMPLEMENT until it is detected as NOT NETHER
// bot.placeBlock()
} else if ( bed = bot . inventory . items ( ) . filter ( bot . isABed ) [ 0 ] ) {
const v = require ( 'vec3' )
bot . equip ( bed , "hand" , ( err ) => { if ( err ) console . error ( err ) } )
bot . waitForChunksToLoad ( ( ) => {
let refBlock =
// FIXME hack to get around findBlock returning null
bot . blockAt ( bot . entity . position . offset ( 1 , 0 , 1 ) , false )
// bot.findBlock({
// matching: (block) => {
// // if (block && block.type !== 0 && block.position) {
// if (block && block.position) {
// console.info("found", block)
// const blockAbove = bot.blockAt(block.position.offset(0, 1, 0))
// return !blockAbove || blockAbove.type === 0
// }
// // console.info("not found", block)
// return false
// }
// , maxDistance: 10
// })
console . log ( refBlock )
bot . placeBlock ( refBlock , new v . Vec3 ( 0 , 1 , 0 ) , console . error )
setTimeout ( sleep , 3000 , true )
} )
} else {
// TODO: use mover
// bot.gameplay.solveFor(