| function inject(bot) { |
| bot._sleep = bot.sleep; |
| bot.sleep = async (bedBlock) => { |
| await bot.waitForTicks(20); |
| await bot._sleep(bedBlock); |
| await bot.waitForTicks(135); |
| }; |
|
|
| bot._fish = bot.fish; |
| bot.fish = async () => { |
| if (bot.heldItem?.name !== "fishing_rod") { |
| bot.chat("I'm not holding a fishing rod!"); |
| return; |
| } |
| let timeout = null; |
| await Promise.race([ |
| bot._fish(), |
| new Promise( |
| (resolve, reject) => |
| (timeout = setTimeout(() => { |
| bot.activateItem(); |
| reject( |
| new Error( |
| "Finishing timeout, make sure you get to and look at a water block!" |
| ) |
| ); |
| }, 60000)) |
| ), |
| ]); |
| clearTimeout(timeout); |
| await bot.waitForTicks(20); |
| }; |
|
|
| bot._consume = bot.consume; |
| bot.consume = async () => { |
| |
| await bot._consume(); |
| await bot.waitForTicks(20); |
| }; |
|
|
| bot._useOn = bot.useOn; |
| bot.useOn = async (entity) => { |
| if (entity.position.distanceTo(bot.entity.position) > 6) { |
| bot.chat("Please goto a place near the entity first!"); |
| return; |
| } |
| await bot._useOn(entity); |
| await bot.waitForTicks(20); |
| }; |
|
|
| bot._activateBlock = bot.activateBlock; |
| bot.activateBlock = async (block) => { |
| if (block.position.distanceTo(bot.entity.position) > 6) { |
| bot.chat("Please goto a place near the block first!"); |
| return; |
| } |
| |
| await bot._activateBlock(block); |
| }; |
|
|
| bot._chat = bot.chat; |
| bot.chat = (message) => { |
| |
| bot.emit("chatEvent", "bot", message); |
| bot._chat(message); |
| }; |
|
|
| bot.inventoryUsed = () => { |
| return bot.inventory.slots.slice(9, 45).filter((item) => item !== null) |
| .length; |
| }; |
|
|
| bot.save = function (eventName) { |
| bot.emit("save", eventName); |
| }; |
| } |
|
|
| |
| module.exports = { inject }; |
|
|