| | function waitForMobRemoved(bot, entity, timeout = 300) { |
| | return new Promise((resolve, reject) => { |
| | let success = false; |
| | let droppedItem = null; |
| | |
| | const timeoutId = setTimeout(() => { |
| | success = false; |
| | bot.pvp.stop(); |
| | }, timeout * 1000); |
| |
|
| | |
| | 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); |
| | } |
| |
|
| | |
| | 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; |
| | |
| | const timeoutId = setTimeout(() => { |
| | success = false; |
| | bot.hawkEye.stop(); |
| | }, timeout * 1000); |
| |
|
| | |
| | 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); |
| | } |
| |
|
| | |
| | bot.on("entityGone", onEntityGone); |
| | bot.on("auto_shot_stopped", onAutoShotStopped); |
| | bot.on("itemDrop", onItemDrop); |
| | }); |
| | } |
| |
|