File size: 2,743 Bytes
36ba3ef |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
function waitForMobRemoved(bot, entity, timeout = 300) {
return new Promise((resolve, reject) => {
let success = false;
let droppedItem = null;
// Set up timeout
const timeoutId = setTimeout(() => {
success = false;
bot.pvp.stop();
}, timeout * 1000);
// Function to handle entityRemoved event
function onEntityGone(e) {
if (e === entity) {
success = true;
clearTimeout(timeoutId);
bot.chat(`Killed ${entity.name}!`);
bot.pvp.stop();
}
}
function onItemDrop(item) {
if (entity.position.distanceTo(item.position) <= 1) {
droppedItem = item;
}
}
function onStoppedAttacking() {
clearTimeout(timeoutId);
bot.removeListener("entityGone", onEntityGone);
bot.removeListener("stoppedAttacking", onStoppedAttacking);
bot.removeListener("itemDrop", onItemDrop);
if (!success) reject(new Error(`Failed to kill ${entity.name}.`));
else resolve(droppedItem);
}
// Listen for entityRemoved event
bot.on("entityGone", onEntityGone);
bot.on("stoppedAttacking", onStoppedAttacking);
bot.on("itemDrop", onItemDrop);
});
}
function waitForMobShot(bot, entity, timeout = 300) {
return new Promise((resolve, reject) => {
let success = false;
let droppedItem = null;
// Set up timeout
const timeoutId = setTimeout(() => {
success = false;
bot.hawkEye.stop();
}, timeout * 1000);
// Function to handle entityRemoved event
function onEntityGone(e) {
if (e === entity) {
success = true;
clearTimeout(timeoutId);
bot.chat(`Shot ${entity.name}!`);
bot.hawkEye.stop();
}
}
function onItemDrop(item) {
if (entity.position.distanceTo(item.position) <= 1) {
droppedItem = item;
}
}
function onAutoShotStopped() {
clearTimeout(timeoutId);
bot.removeListener("entityGone", onEntityGone);
bot.removeListener("auto_shot_stopped", onAutoShotStopped);
bot.removeListener("itemDrop", onItemDrop);
if (!success) reject(new Error(`Failed to shoot ${entity.name}.`));
else resolve(droppedItem);
}
// Listen for entityRemoved event
bot.on("entityGone", onEntityGone);
bot.on("auto_shot_stopped", onAutoShotStopped);
bot.on("itemDrop", onItemDrop);
});
}
|