cletus/bot/bot-tasks/remember-signs.js
2025-05-09 15:53:19 -05:00

40 lines
1.2 KiB
JavaScript

const memory = require('../lib/memory');
module.exports = async function rememberSigns(bot, db, sayWithPersona) {
try {
const signs = bot.findBlocks({
matching: block => block.name.includes('sign'),
maxDistance: 16,
count: 10
});
for (const pos of signs) {
const block = bot.blockAt(pos);
// In some Mineflayer versions, use .getSignText(), otherwise use .signText or .getBlockEntityData()
const signText = block.getSignText?.() || block.signText || null;
if (signText && signText.trim()) {
const label = signText.trim();
const data = {
x: pos.x,
y: pos.y,
z: pos.z
};
memory.saveMemory(db, label, data, (err) => {
if (!err) {
sayWithPersona(`you memorized a place labeled '${label}'.`);
} else {
console.error("Failed to remember sign label:", err);
sayWithPersona("you saw a sign but forgot it instantly. classic.");
}
});
}
}
} catch (err) {
console.error("remember-signs.js failed:", err);
sayWithPersona("you tried to read signs and got confused.");
}
};