From 6727b44afcdaa5ebcd53216742fa7f0b68e942ea Mon Sep 17 00:00:00 2001 From: MaxRobinsonTheGreat Date: Sat, 4 May 2024 16:17:41 -0500 Subject: [PATCH] clear pathfinder on idle, improve coward mode --- src/agent/agent.js | 1 + src/agent/library/skills.js | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/agent/agent.js b/src/agent/agent.js index 042cc26..fe44a25 100644 --- a/src/agent/agent.js +++ b/src/agent/agent.js @@ -188,6 +188,7 @@ export class Agent { }); this.bot.on('idle', () => { this.bot.clearControlStates(); + this.bot.pathfinder.stop(); // clear any lingering pathfinder this.bot.modes.unPauseAll(); this.coder.executeResume(); }); diff --git a/src/agent/library/skills.js b/src/agent/library/skills.js index d62ebb2..4889357 100644 --- a/src/agent/library/skills.js +++ b/src/agent/library/skills.js @@ -15,7 +15,8 @@ async function autoLight(bot) { let nearest_torch = world.getNearestBlock(bot, 'torch', 6); if (!nearest_torch) { let has_torch = bot.inventory.items().find(item => item.name === 'torch'); - if (has_torch) { + const curr_block = agent.bot.blockAt(pos); + if (has_torch && curr_block.name === 'air') { try { log(bot, `Placing torch at ${bot.entity.position}.`); return await placeBlock(bot, 'torch', bot.entity.position.x, bot.entity.position.y, bot.entity.position.z); @@ -771,7 +772,7 @@ export async function avoidEnemies(bot, distance=16) { * @example * await skills.avoidEnemies(bot, 8); **/ - + bot.modes.pause('self_preservation'); // prevents damage-on-low-health from interrupting the bot let enemy = world.getNearestEntityWhere(bot, entity => mc.isHostile(entity), distance); while (enemy) { const follow = new pf.goals.GoalFollow(enemy, distance+1); // move a little further away @@ -781,9 +782,10 @@ export async function avoidEnemies(bot, distance=16) { await new Promise(resolve => setTimeout(resolve, 500)); enemy = world.getNearestEntityWhere(bot, entity => mc.isHostile(entity), distance); if (bot.interrupt_code) { - return false; + break; } } + bot.pathfinder.stop(); log(bot, `Moved ${distance} away from enemies.`); return true; }