diff --git a/nodejs/conf/base.js b/nodejs/conf/base.js index 8da7b22..59dd4d5 100644 --- a/nodejs/conf/base.js +++ b/nodejs/conf/base.js @@ -1,12 +1,12 @@ module.exports = { "mc": { - "server": "corejourney.org._vAUTO.mc.proxy", - "bots": { - "bot_name": { - "username": "", - "password": "", - 'auth': "microsoft" - } - } + "host": "corejourney.org", + // "bots": { + // "bot_name": { + // "username": "", + // "password": "", + // 'auth': "microsoft" + // } + // } } } \ No newline at end of file diff --git a/nodejs/controller/commands/default.js b/nodejs/controller/commands/default.js new file mode 100644 index 0000000..6243f17 --- /dev/null +++ b/nodejs/controller/commands/default.js @@ -0,0 +1,16 @@ +module.exports = { + 'help': { + desc: `Print the allowed commands.`, + async function(from){ + console.log('called help', from) + let intro = [ + 'I am a bot owned and operated by', + 'wmantly ', + 'You have access to the following commands:' + ] + await this.whisper(from, ...intro, ...this.__reduceCommands(from).map(command => + `${command} -- ${this.commands[command].desc || ''}` + )); + } + } +}; diff --git a/nodejs/controller/commands/fun.js b/nodejs/controller/commands/fun.js new file mode 100644 index 0000000..5d804c4 --- /dev/null +++ b/nodejs/controller/commands/fun.js @@ -0,0 +1,161 @@ +let ballOptions = [ + "It is certain.", + "It is decidedly so.", + "Without a doubt.", + "Yes definitely.", + "You may rely on it.", + "As I see it, yes.", + "Most likely.", + "Outlook good.", + "The Core gods will it to be!", + "Yes.", + "Signs point to yes.", + "Reply hazy, try again.", + "You should ask Ethan", + "Ask again later.", + "Better not tell you now.", + "Cannot predict now.", + "Concentrate and ask again.", + "You will find the answers during you journey to The Core!", + "Don't count on it.", + "My reply is no.", + "My sources say no.", + "Outlook not so good.", + "Very doubtful.", +]; + + +module.exports = { + '8ball':{ + desc: `magic 8 Ball pick.`, + async function(from){ + await this.say( + `> The 8 Ball says...`, + `> ${ballOptions[Math.floor(Math.random()*ballOptions.length)]}` + ); + } + } + + + + + + + + +// bot.addCommand("joke", { +// desc: "Tells a random joke.", +// async function(from){ +// await this.say('> Let me think...'); +// let res = await axios.get('https://v2.jokeapi.dev/joke/Any?type=single') +// await this.say(...res.data.joke.split('\n').map(e => `> ${e}`)); +// }, +// }); + +// bot.addCommand("quote", { +// desc: 'Say an inspirational quote.', +// async function(from){ +// await this.say('> Right away!'); +// let res = await axios.get('https://zenquotes.io/api/random') +// await this.say(`> ${res.data[0].q} -- ${res.data[0].a}`); +// } +// }); + +// bot.addCommand('west-quote', { +// desc: `Say a random Kanye West quote.`, +// async function(from) { +// await this.say('> And here we go!'); +// let res = await axios.get('https://api.kanye.rest/'); +// await this.say(`> ${res.data.quote} -- Kanye West`); +// } +// }); + +// bot.addCommand('pink-quote', { +// desc: `Say a random Pink Floyd quote.`, +// async function(from) { +// await this.say( +// `> Rock 'n' Roll`, +// `> ${pink_quotes[Math.floor(Math.random()*pink_quotes.length)]} -- Pink Floyd` +// ); +// } +// }); + +// bot.addCommand("fact", { +// desc: `Say a random fact.`, +// async function(from){ +// await this.say('> The internet says this is true?'); +// let res = await axios.get('https://uselessfacts.jsph.pl/random.json?language=en') +// await this.say( +// `> ${res.data.text}`, +// `> source: ${res.data.source}` +// ); +// } +// }); + +// bot.addCommand("advice", { +// desc: `Say some random advice.`, +// async function(from){ +// await this.say('> Try this:'); +// let res = await axios.get('https://api.adviceslip.com/advice'); +// await this.say(`> ${res.data.slip.advice}`); +// } +// }); + +// bot.addCommand('idea', { +// desc: `Say a random start up idea.`, +// async function(from){ +// await this.say('> How about?'); +// let res = await axios.get('https://itsthisforthis.com/api.php?text') +// await this.say(`> ${res.data}`); +// } +// }); + +// bot.addCommand('discord', { +// desc: `Say the CJ discord invite link.`, +// async function(from) { +// await this.say('https://discord.gg/hyby9m8'); +// } +// }); + +// bot.addCommand('dice',{ +// desc: `Roll a die. You can state the max size on the dice. Default is 6.`, +// async function(from, size){ +// size = size || 6; +// if(!Number.isInteger(Number(size))){ +// this.whisper(from, `${size} is not a whole number...`) +// return ; +// } +// await this.say( +// `> Rolling a dice for ${from}`, +// `> ${Math.floor(Math.random()*size)+1}` +// ); +// } +// }); + +// bot.addCommand('random-player', { +// desc: `Return a random online player.`, +// async function(from){ +// let players = bot.getPlayers() + +// delete players[bot.bot.entity.username] + +// let keys = Object.keys(players); +// let player = players[keys[ keys.length * Math.random() << 0]]; + +// await this.say(`> I pick [${player.lvl}]${player.username}`) +// } +// }); + +// bot.addCommand('flip', { +// desc: `Flip a coin.`, +// async function(from){ +// await this.say( +// `> Flipping a coin for ${from}`, +// `> ${!!(Math.floor(Math.random() * (3000 - 1500) + 1500)%2) ? "Heads" : "Tails"}` +// ); +// } +// }); +}; + + + diff --git a/nodejs/controller/commands/index.js b/nodejs/controller/commands/index.js new file mode 100644 index 0000000..7323c5a --- /dev/null +++ b/nodejs/controller/commands/index.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + default: require('./default'), + fun: require('./fun'), + invite: require('./invite'), +}; diff --git a/nodejs/controller/commands/invite.js b/nodejs/controller/commands/invite.js new file mode 100644 index 0000000..3b44d21 --- /dev/null +++ b/nodejs/controller/commands/invite.js @@ -0,0 +1,103 @@ +'use strict'; + +const {sleep} = require('../../utils'); + +let myAccounts = ['wmantly', 'useless666', 'tux4242'] + +let germans = ['YTMatze', 'mytzor'] + +let townMemebers = [ + 'wmantly', 'useless666', 'tux4242', + 'VinceNL', + 'Ethan63020', 'Ethan63021', + 'pi_chef', + 'EXLAlphaWolf', 'Sillychubbs', + 'BearSkates420', 'hloop', + 'ogeiDNight', 'BobinaBlu', 'Roby_G_27', + 'kawiimeowz', 'RaindropCake24', 'KimiKava', + 'Keebyys', + 'YTMatze', 'mytzor', + 'jj_disaster', 'Cuttaway', + 'sonic_joe', +] + +let sites = { + fo: { + bot: 'jimin', + desc: `Get an invite to the Farming outpost.`, + allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef', 'pi_chef', '1_cut', 'nootbot', 'VinceNL', 'Ethan63020', 'Ethan63021', 'KimiKava', 'kawiimeowz', 'RaindropCake24'], + }, + fo2: { + bot: 'henry', + desc: `Get an invite to the Farming outpost 2.`, + allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef', 'pi_chef', '1_cut', 'Ethan63020', 'Ethan63021', 'VinceNL', 'nootbot'], + }, + foend: { + bot: 'ez', + desc: `Get an invite to the Farming outpost in the end.`, + allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef', 'pi_chef', '1_cut',], + }, + sb: { + bot: 'owen', + desc: `Get an invite to the Sky Base.`, + allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef', 'pi_chef', '1_cut', 'Ethan63020', 'Ethan63021', 'VinceNL', 'nootbot'], + }, + core: { + bot: 'nova', + desc: `Get an invite to the Core.`, + allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef', 'pi_chef', '1_cut', 'Ethan63020', 'Ethan63021', 'VinceNL', 'nootbot'], + }, + // city: { + // bot: 'art', + // desc: 'Invite to the city', + // allowed: ['wmantly', 'useless666', 'tux4242', 'owenshorts', 'VinceNL', 'Ethan63020', 'Ethan63021'] + // }, + german: { + bot: 'linda', + desc: `Get an invite you Germans area.`, + allowed: ['wmantly', 'useless666', 'tux4242', 'owenshorts', 'VinceNL', 'Ethan63020', 'Ethan63021', 'pi_chef', 'YTMatze', 'mytzor', 'pi_chef', '1_cut', 'nootbot'], + }, +} + +function getSiteFromBot(name){ + for(let site in sites){ + if(sites[site].bot === name){ + return sites[site]; + } + } +} + +module.exports = { + 'inv': { + desc: `Have bot.\n Site -- one'`, + // allowed: townMemebers, + async function(from, site){ + this.__unLockCommand(); + + if(sites[site] && sites[site].allowed.includes(from)){ + let bot = this.constructor.bots[sites[site].bot]; + + if(!bot.isReady){ + try{ + await bot.connect(); + }catch(error){ + console.log('inv error connecting to bot'); + this.whisper('Bot is not available right now, try again in 30 seconds.'); + } + var clear = setTimeout(()=> bot.quit(), 10000); + } + await bot.bot.chat(`/invite ${from}`); + await bot.whisper(from, `accept invite from ${bot.bot.entity.username} within 10 seconds...`); + bot.on('message', (message) =>{ + if(message.toString() === `${from} teleported to you.`){ + if(clear){ + clearTimeout(clear); + bot.quit(); + } + } + }); + } + } + }, +}; + diff --git a/nodejs/controller/mc-bot.js b/nodejs/controller/mc-bot.js index 9244963..c3d5324 100644 --- a/nodejs/controller/mc-bot.js +++ b/nodejs/controller/mc-bot.js @@ -1,55 +1,48 @@ 'use strict'; + +const {sleep} = require('../utils'); const conf = require('../conf'); const {CJbot} = require('../model/minecraft'); -const inventoryViewer = require('mineflayer-web-inventory'); +// const inventoryViewer = require('mineflayer-web-inventory'); -const bot = new CJbot({ - host: conf.mc.server, - ...conf.mc.bots.art -}); - -const henry = new CJbot({ - host: conf.mc.server, - autoConnect: false, - __autoReConnect: false, - ...conf.mc.bots.henry -}); - -const nova = new CJbot({ - host: conf.mc.server, - autoConnect: false, - __autoReConnect: false, - ...conf.mc.bots.nova -}); - -const owen = new CJbot({ - host: conf.mc.server, - autoConnect: false, - __autoReConnect: false, - ...conf.mc.bots.owen -}); - -const linda = new CJbot({ - host: conf.mc.server, - autoConnect: false, - __autoReConnect: false, - ...conf.mc.bots.linda -}); - -const jimin = new CJbot({ - host: conf.mc.server, - autoConnect: false, - __autoReConnect: false, - ...conf.mc.bots.jimin -}); - -const ez = new CJbot({ - host: conf.mc.server, - autoConnect: false, - __autoReConnect: false, - ...conf.mc.bots.ez -}); +const commands = require('./commands'); -module.exports = {bot, henry, owen, linda, jimin, nova, ez}; +for(let name in conf.mc.bots){ + if(CJbot.bots[name]) continue; + let bot = new CJbot({name, host: conf.mc.host, ...conf.mc.bots[name]}); + CJbot.bots[name] = bot; + + + for(let command of conf.mc.bots[name].commands || ['default']){ + + for(let [name, toAdd] of Object.entries(commands[command])){ + bot.addCommand(name, toAdd) + } + } + + +} + + + +(async ()=>{ +try{ + for(let name in CJbot.bots){ + let bot = CJbot.bots[name]; + if(bot.autoConnect){ + console.log('Trying to connect', name) + console.log('Status for', name, await bot.connect()); + + await sleep(30000); + } + + } + +}catch(e){ + + console.log('!!!!!!!! error:', e) +}})() + +// module.exports = {bot: ez, henry, owen, linda, jimin, nova, ez}; diff --git a/nodejs/controller/mc-chatbot.js b/nodejs/controller/mc-chatbot.js index 8f021fc..2d9100d 100644 --- a/nodejs/controller/mc-chatbot.js +++ b/nodejs/controller/mc-chatbot.js @@ -4,9 +4,49 @@ const axios = require('axios'); const {sleep} = require('../utils'); const conf = require('../conf'); -const {bot, henry, owen, linda, jimin, nova, ez} = require('./mc-bot'); const pink_quotes = require('../model/pink_quotes') + +let sites = { + city: { + bot: art, + desc: 'Invite to the city', + allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef'], + }, + core: { + bot: nova, + desc: `Get an invite to New Detroit.`, + allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef'], + }, + sb: { + bot:owen, + desc: `Get an invite to the Sky Base.`, + allowed: ['wmantly', 'useless666', 'tux4242', 'owenshorts', 'VinceNL', 'Ethan63020', 'Ethan63021'], + }, + fo: { + bot: jimin, + desc: `Get an invite to the Farming outpost.`, + allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef'], + }, + fo2: { + bot:henry, + desc: `Get an invite to the Farming outpost 2.`, + allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef'], + }, + german: { + bot:linda, + desc: `Get an invite you Germans area.`, + allowed: ['wmantly', 'useless666', 'tux4242', 'owenshorts', 'VinceNL', 'Ethan63020', 'Ethan63021', 'pi_chef', 'YTMatze', 'mytzor'], + }, + foend: { + bot: ez, + desc: `Get an invite to the Farming outpost in the end.`, + allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef'], + }, +} + +console.log('HERERERER SITESSSS', sites) + let myAccounts = ['wmantly', 'useless666', 'tux4242'] let germans = ['YTMatze', 'mytzor'] @@ -36,13 +76,16 @@ let ballOptions = [ "As I see it, yes.", "Most likely.", "Outlook good.", + "The Core gods will it to be!", "Yes.", "Signs point to yes.", "Reply hazy, try again.", + "You should ask Ethan", "Ask again later.", "Better not tell you now.", "Cannot predict now.", "Concentrate and ask again.", + "You will find the answers during you journey to The Core!", "Don't count on it.", "My reply is no.", "My sources say no.", @@ -50,240 +93,218 @@ let ballOptions = [ "Very doubtful.", ]; -let sites = { - city: { - bot: bot, - desc: 'Invite to the city', - allowed: townMemebers - }, - nd: { - bot: nova, - desc: `Get an invite to New Detroit.`, - allowed: townMemebers, - }, - sb: { - bot:owen, - desc: `Get an invite to the Sky Base.`, - allowed: ['wmantly', 'useless666', 'tux4242', 'owenshorts', 'VinceNL', 'Ethan63020', 'Ethan63021'], - }, - fo: { - bot: jimin, - desc: `Get an invite to the Farming outpost.`, - allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef'], - }, - fo2: { - bot:henry, - desc: `Get an invite to the Farming outpost 2.`, - allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef'], - }, - german: { - bot:linda, - desc: `Get an invite you Germans area.`, - allowed: ['wmantly', 'useless666', 'tux4242', 'owenshorts', 'VinceNL', 'Ethan63020', 'Ethan63021', 'pi_chef', 'YTMatze', 'mytzor'], - }, - foend: { - bot: ez, - desc: `Get an invite to the Farming outpost in the end.`, - allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef'], - }, -} - -async function offSiteInvite(from, site){ - let offSiteBot = sites[site].bot - this.__unLockCommand(); - await offSiteBot.connect(); - await offSiteBot.bot.chat(`/invite ${from}`); - await this.whisper(from, `accept invite from ${offSiteBot.bot.entity.username} within 10 seconds...`) - let clear = setTimeout(()=>offSiteBot.quit(), 10000) - offSiteBot.on('message', (message) =>{ - if(message.toString() === `${from} teleported to you.`){ - offSiteBot.quit(); +const commands = { + '8ball':{ + desc: `magic 8 Ball pick.`, + async function(from){ + await this.say( + `> The 8 Ball says...`, + `> ${ballOptions[Math.floor(Math.random()*ballOptions.length)]}` + ); } - }) + } } -bot.addCommand('inv', { - desc: `Have bot invite you to its position.`, - allowed: townMemebers, - async function(from, site){ - await this.say(`/invite ${from}`); - } -}); + + +// async function offSiteInvite(from, site){ +// let offSiteBot = sites[site].bot +// this.__unLockCommand(); + + +// await offSiteBot.connect(); +// await offSiteBot.bot.chat(`/invite ${from}`); +// await this.whisper(from, `accept invite from ${offSiteBot.bot.entity.username} within 10 seconds...`) +// let clear = setTimeout(()=>offSiteBot.quit(), 10000) +// offSiteBot.on('message', (message) =>{ +// if(message.toString() === `${from} teleported to you.`){ +// offSiteBot.quit(); +// } +// }) +// } + +// bot.addCommand('inv', { +// desc: `Have bot invite you to its position.`, +// allowed: townMemebers, +// async function(from, site){ +// if(getSiteFromBot(this.name).allowed.includes(from) await this.say(`/invite ${from}`); +// } +// }); + +console.log('sites,', sites) for(const [name, site] of Object.entries(sites)){ - bot.addCommand(`inv-${name}`, { + console.log('site', name) + + commands[`inv-${name}`] = { ...site, ignoreLock: true, async function(from){ this.__unLockCommand(); - await site.bot.connect(); + + if(!site.bit.isReady){ + await site.bot.connect(); + var clear = setTimeout(()=>site.bot.quit(), 10000); + } await site.bot.bot.chat(`/invite ${from}`); await this.whisper(from, `accept invite from ${site.bot.bot.entity.username} within 10 seconds...`) - let clear = setTimeout(()=>site.bot.quit(), 10000) site.bot.on('message', (message) =>{ if(message.toString() === `${from} teleported to you.`){ - site.bot.quit(); + if(clear){ + clearTimeout(clear); + site.bot.quit(); + } } }) } - }) + } } -bot.addCommand('.invite', { - desc: `The bot will /accept an /invite from you.`, - allowed: ['wmantly', 'useless666', 'tux4242', 'owenshorts', 'BobinaBlu', 'pi_chef'], - async function(from){ - await this.whisper('Coming'); - await this.say(`/accept`); - } -}); +// bot.addCommand('.invite', { +// desc: `The bot will /accept an /invite from you.`, +// allowed: ['wmantly', 'useless666', 'tux4242', 'owenshorts', 'BobinaBlu', 'pi_chef'], +// async function(from){ +// await this.whisper('Coming'); +// await this.say(`/accept`); +// } +// }); -bot.addCommand('say', { - desc: `Make bot say stuff.`, - allowed: ['wmantlys', 'useless666', 'tux4242'], - ignoreLock: true, - async function(from, ...messages){ - await this.say((messages || []).join(' ')); - } -}); +// bot.addCommand('say', { +// desc: `Make bot say stuff.`, +// allowed: ['wmantlys', 'useless666', 'tux4242'], +// ignoreLock: true, +// async function(from, ...messages){ +// await this.say((messages || []).join(' ')); +// } +// }); -bot.addCommand("joke", { - desc: "Tells a random joke.", - async function(from){ - await this.say('> Let me think...'); - let res = await axios.get('https://v2.jokeapi.dev/joke/Any?type=single') - await this.say(...res.data.joke.split('\n').map(e => `> ${e}`)); - }, -}); +// bot.addCommand("joke", { +// desc: "Tells a random joke.", +// async function(from){ +// await this.say('> Let me think...'); +// let res = await axios.get('https://v2.jokeapi.dev/joke/Any?type=single') +// await this.say(...res.data.joke.split('\n').map(e => `> ${e}`)); +// }, +// }); -bot.addCommand("quote", { - desc: 'Say an inspirational quote.', - async function(from){ - await this.say('> Right away!'); - let res = await axios.get('https://zenquotes.io/api/random') - await this.say(`> ${res.data[0].q} -- ${res.data[0].a}`); - } -}); +// bot.addCommand("quote", { +// desc: 'Say an inspirational quote.', +// async function(from){ +// await this.say('> Right away!'); +// let res = await axios.get('https://zenquotes.io/api/random') +// await this.say(`> ${res.data[0].q} -- ${res.data[0].a}`); +// } +// }); -bot.addCommand('west-quote', { - desc: `Say a random Kanye West quote.`, - async function(from) { - await this.say('> And here we go!'); - let res = await axios.get('https://api.kanye.rest/'); - await this.say(`> ${res.data.quote} -- Kanye West`); - } -}); +// bot.addCommand('west-quote', { +// desc: `Say a random Kanye West quote.`, +// async function(from) { +// await this.say('> And here we go!'); +// let res = await axios.get('https://api.kanye.rest/'); +// await this.say(`> ${res.data.quote} -- Kanye West`); +// } +// }); -bot.addCommand('pink-quote', { - desc: `Say a random Pink Floyd quote.`, - async function(from) { - await this.say( - `> Rock 'n' Roll`, - `> ${pink_quotes[Math.floor(Math.random()*pink_quotes.length)]} -- Pink Floyd` - ); - } -}); +// bot.addCommand('pink-quote', { +// desc: `Say a random Pink Floyd quote.`, +// async function(from) { +// await this.say( +// `> Rock 'n' Roll`, +// `> ${pink_quotes[Math.floor(Math.random()*pink_quotes.length)]} -- Pink Floyd` +// ); +// } +// }); -bot.addCommand("fact", { - desc: `Say a random fact.`, - async function(from){ - await this.say('> The internet says this is true?'); - let res = await axios.get('https://uselessfacts.jsph.pl/random.json?language=en') - await this.say( - `> ${res.data.text}`, - `> source: ${res.data.source}` - ); - } -}); +// bot.addCommand("fact", { +// desc: `Say a random fact.`, +// async function(from){ +// await this.say('> The internet says this is true?'); +// let res = await axios.get('https://uselessfacts.jsph.pl/random.json?language=en') +// await this.say( +// `> ${res.data.text}`, +// `> source: ${res.data.source}` +// ); +// } +// }); -bot.addCommand("advice", { - desc: `Say some random advice.`, - async function(from){ - await this.say('> Try this:'); - let res = await axios.get('https://api.adviceslip.com/advice'); - await this.say(`> ${res.data.slip.advice}`); - } -}); +// bot.addCommand("advice", { +// desc: `Say some random advice.`, +// async function(from){ +// await this.say('> Try this:'); +// let res = await axios.get('https://api.adviceslip.com/advice'); +// await this.say(`> ${res.data.slip.advice}`); +// } +// }); -bot.addCommand('idea', { - desc: `Say a random start up idea.`, - async function(from){ - await this.say('> How about?'); - let res = await axios.get('https://itsthisforthis.com/api.php?text') - await this.say(`> ${res.data}`); - } -}); +// bot.addCommand('idea', { +// desc: `Say a random start up idea.`, +// async function(from){ +// await this.say('> How about?'); +// let res = await axios.get('https://itsthisforthis.com/api.php?text') +// await this.say(`> ${res.data}`); +// } +// }); -bot.addCommand('discord', { - desc: `Say the CJ discord invite link.`, - async function(from) { - await this.say('https://discord.gg/hyby9m8'); - } -}); +// bot.addCommand('discord', { +// desc: `Say the CJ discord invite link.`, +// async function(from) { +// await this.say('https://discord.gg/hyby9m8'); +// } +// }); -bot.addCommand('8ball',{ - desc: `magic 8 Ball pick.`, - async function(from){ - await this.say( - `> The 8 Ball says...`, - `> ${ballOptions[Math.floor(Math.random()*ballOptions.length)]}` - ); - } -}); +// bot.addCommand('dice',{ +// desc: `Roll a die. You can state the max size on the dice. Default is 6.`, +// async function(from, size){ +// size = size || 6; +// if(!Number.isInteger(Number(size))){ +// this.whisper(from, `${size} is not a whole number...`) +// return ; +// } +// await this.say( +// `> Rolling a dice for ${from}`, +// `> ${Math.floor(Math.random()*size)+1}` +// ); +// } +// }); -bot.addCommand('dice',{ - desc: `Roll a die. You can state the max size on the dice. Default is 6.`, - async function(from, size){ - size = size || 6; - if(!Number.isInteger(Number(size))){ - this.whisper(from, `${size} is not a whole number...`) - return ; - } - await this.say( - `> Rolling a dice for ${from}`, - `> ${Math.floor(Math.random()*size)+1}` - ); - } -}); - -bot.addCommand('random-player', { - desc: `Return a random online player.`, - async function(from){ - let players = bot.getPlayers() +// bot.addCommand('random-player', { +// desc: `Return a random online player.`, +// async function(from){ +// let players = bot.getPlayers() - delete players[bot.bot.entity.username] +// delete players[bot.bot.entity.username] - let keys = Object.keys(players); - let player = players[keys[ keys.length * Math.random() << 0]]; +// let keys = Object.keys(players); +// let player = players[keys[ keys.length * Math.random() << 0]]; - await this.say(`> I pick [${player.lvl}]${player.username}`) - } -}); +// await this.say(`> I pick [${player.lvl}]${player.username}`) +// } +// }); -bot.addCommand('flip', { - desc: `Flip a coin.`, - async function(from){ - await this.say( - `> Flipping a coin for ${from}`, - `> ${!!(Math.floor(Math.random() * (3000 - 1500) + 1500)%2) ? "Heads" : "Tails"}` - ); - } -}); +// bot.addCommand('flip', { +// desc: `Flip a coin.`, +// async function(from){ +// await this.say( +// `> Flipping a coin for ${from}`, +// `> ${!!(Math.floor(Math.random() * (3000 - 1500) + 1500)%2) ? "Heads" : "Tails"}` +// ); +// } +// }); -bot.addCommand('help', { - desc: `Print the allowed commands.`, - async function(from){ - console.log('called help', from) - let intro = [ - 'I am a bot owned and operated by', - 'wmantly ', - 'You have access to the following commands:' - ] - await this.whisper(from, ...intro, ...this.__reduceCommands(from).map(command => - `${command} -- ${this.commands[command].desc || ''}` - )); - } -}); +// bot.addCommand('help', { +// desc: `Print the allowed commands.`, +// async function(from){ +// console.log('called help', from) +// let intro = [ +// 'I am a bot owned and operated by', +// 'wmantly ', +// 'You have access to the following commands:' +// ] +// await this.whisper(from, ...intro, ...this.__reduceCommands(from).map(command => +// `${command} -- ${this.commands[command].desc || ''}` +// )); +// } +// }); -module.exports = {bot}; +module.exports = commands; diff --git a/nodejs/index.js b/nodejs/index.js index 73715f7..7c157c0 100644 --- a/nodejs/index.js +++ b/nodejs/index.js @@ -1,5 +1,5 @@ 'use strict'; const botController = require('./controller/mc-bot'); -const chatController = require('./controller/mc-chatbot'); +// const chatController = require('./controller/mc-chatbot'); // const actionController = require('./controller/mc-actionbot'); \ No newline at end of file diff --git a/nodejs/model/minecraft.js b/nodejs/model/minecraft.js index bec0d80..ea7e79b 100644 --- a/nodejs/model/minecraft.js +++ b/nodejs/model/minecraft.js @@ -15,28 +15,38 @@ class CJbot{ combatTag = false; doLogOut = false; + static bots = {}; + static __addLock = false; + static __toConnect = []; + constructor(args){ + this.name = args.name; this.username = args.username; this.password = args.password; this.host = args.host; this.auth = args.auth || 'microsoft'; - this.version = args.version || '1.18.2'; + this.version = args.version || '1.19.2'; this.autoReConnect = 'autoConnect' in args ? args.autoReConnect : true; this.autoConnect = 'autoConnect' in args ? args.autoConnect : true; - - if(this.autoConnect){ - console.log('connecting', this.username, this.autoConnect) - this.connect(); - } - - if(this.autoReConnect){ - this.__autoReConnect() - } + if(this.autoReConnect) this.__autoReConnect() } connect(){ return new Promise((resolve, reject) =>{ + // let cancle = setTimeout(()=>{ + // reject('TimeOut') + // }, 10000) + + // resolve = (...args)=>{ + // clearTimeout(cancle); + // return resolve(...args); + // } + + // reject = (...args)=>{ + // // clearTimeout(cancle); + // return reject(...args); + // } this.bot = mineflayer.createBot({ host: this.host, username: this.username, @@ -51,29 +61,36 @@ class CJbot{ reject(m) }) - - this.bot.on('end', reason =>{ - console.log('Connection ended:', reason) - this.isReady = false - } - ); + this.bot.on('end', (m)=>{ + console.log(this.name, 'Connection ended:', m); + this.isReady = false; + reject(m); + }); this.bot.on('login', ()=>{ this.__onReady() resolve() }); + setTimeout(async ()=>{try{ + if(this.autoReConnect && !this.isReady) await this.connect(); + }catch(error){ + console.error('minecraft.js/connect/setTimeout/', this.name, ' ', error) + }}, 30000); }); } + static + once(event){ return new Promise((resolve, reject)=> this.bot.once(event, resolve)); } - async __onReady(){ + async __onReady(){try{ + this.__startListeners(); - console.log('listeners', this.listeners.onReady) + // console.log('listeners', this.listeners.onReady) for(let callback of this.listeners.onReady || []){ console.log('calling listener', callback) @@ -86,7 +103,10 @@ class CJbot{ // Start chat listeners this.__listen(); - } + + }catch(error){ + console.error('minecraft.js/__onReady/', this.name, ' ', error) + }} __startListeners(){ @@ -111,37 +131,34 @@ class CJbot{ } __autoReConnect(){ - console.log('auto connect function') - this.on('end', (reason)=>{ - console.error('MC on end', reason) + try{ + console.log('auto connect function') + this.on('end', async (reason)=>{ + console.error('_autorestart MC on end', reason) + await sleep('30000') + this.connect() + }); - this.connect() - }); + this.on('kick', console.error) - this.bot.on('kick', console.error) + this.on('error', (error)=>{ + console.error('MC on error', error); - this.on('error', (error)=>{ - console.error('MC on error', error); + this.connect(); + }); + }catch(error){ + console.error('error in __autoReConnect', error); - this.connect(); - }); + } } - __error(){ + __error(message){ this.bot.on('error', (error)=>{ console.error(`ERROR!!! MC bot ${this.username} on ${this.host} had an error:\n`, error) }); } - getPlayers(){ - for (let [username, value] of Object.entries(this.bot.players)){ - value.lvl = Number(value.displayName.extra[0].text) - } - - return this.bot.players; - } - /* Chat and messaging*/ @@ -200,10 +217,10 @@ class CJbot{ } quit(force){ - if(!this.combatTag){ + if(!this.combatTag || force){ this.bot.quit(); }else{ - console.log('stoped logout due to combatTag') + console.log('Logout prevented due to combatTag'); this.doLogOut = true; } } @@ -241,7 +258,7 @@ class CJbot{ }); } - async __doCommand(from, command){ + async __doCommand(from, command){try{ if(this.commandLock){ this.whisper(from, `cool down, try again in ${this.commandCollDownTime/1000} seconds...`); return ; @@ -261,12 +278,23 @@ class CJbot{ }else{ this.whisper(from, `I dont know anything about ${cmd}`); } - } + }catch(error){ + console.error('minecraft.js/__doCommand/', this.name, ' ', error) + }} addCommand(name, obj){ if(this.commands[name]) return false; + this.commands[name] = obj; } + + getPlayers(){ + for (let [username, value] of Object.entries(this.bot.players)){ + value.lvl = Number(value.displayName.extra[0].text) + } + + return this.bot.players; + } } module.exports = {CJbot}; diff --git a/nodejs/package-lock.json b/nodejs/package-lock.json index 7209d94..465645d 100644 --- a/nodejs/package-lock.json +++ b/nodejs/package-lock.json @@ -13,7 +13,7 @@ "dotenv": "^16.0.1", "extend": "^3.0.2", "minecraft-data": "^3.5.0", - "mineflayer": "^4.3.0", + "mineflayer": "^4.8.0", "mineflayer-auto-eat": "^2.3.3", "mineflayer-pathfinder": "^2.2.0", "mineflayer-web-inventory": "^1.8.3", @@ -21,24 +21,24 @@ "prismarine-windows": "^2.4.4" }, "devDependencies": { - "nodemon": "^2.0.18" + "nodemon": "^2.0.22" } }, "node_modules/@azure/msal-common": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-7.3.0.tgz", - "integrity": "sha512-revxB3z+QLjwAtU1d04nC1voFr+i3LfqTpUfgrWZVqKh/sSgg0mZZUvw4vKVWB57qtL95sul06G+TfdFZny1Xw==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-11.0.0.tgz", + "integrity": "sha512-SZH8ObQ3Hq5v3ogVGBYJp1nNW7p+MtM4PH4wfNadBP9wf7K0beQHF9iOtRcjPOkwZf+ZD49oXqw91LndIkdk8g==", "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-node": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.12.1.tgz", - "integrity": "sha512-m909lX9C8Ty01DBxbjr4KfAKWibohgRvY7hrdDo13U1ztlH+0Nbt7cPF1vrWonW/CRT4H4xtUa4LCNmivghggw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.16.0.tgz", + "integrity": "sha512-eGXPp65i++mAIvziafbCH970TCeECB6iaQP7aRzZEjtU238cW4zKm40U8YxkiCn9rR1G2VeMHENB5h6WRk7ZCQ==", "dependencies": { - "@azure/msal-common": "^7.3.0", - "jsonwebtoken": "^8.5.1", + "@azure/msal-common": "^11.0.0", + "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, "engines": { @@ -66,14 +66,19 @@ "integrity": "sha512-KZhFpSLlmK/sdocfSAjqPETTMd0ug6HIMIAwkwUpU79olnZdQtMxpQP+G1wDzCH7na+FltSIhbaZuKdwZ8RDrw==" }, "node_modules/@types/readable-stream": { - "version": "2.3.14", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.14.tgz", - "integrity": "sha512-8jQ5Mp7bsDJEnW/69i6nAaQMoLwAVJVc7ZRAVTrdh/o6XueQsX38TEvKuYyoQj76/mg7WdlRfMrtl9pDLCJWsg==", + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", "dependencies": { "@types/node": "*", - "safe-buffer": "*" + "safe-buffer": "~5.1.1" } }, + "node_modules/@types/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/@xboxreplay/errors": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/@xboxreplay/errors/-/errors-0.1.0.tgz", @@ -196,6 +201,25 @@ "node": ">= 0.6.0" } }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", @@ -271,12 +295,38 @@ "node": ">=8" } }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", "engines": { - "node": ">=0.4.0" + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/buffer-equal-constant-time": { @@ -539,6 +589,14 @@ "node": ">=6" } }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/express": { "version": "4.18.1", "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", @@ -799,6 +857,25 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", @@ -861,9 +938,9 @@ } }, "node_modules/jose": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.9.0.tgz", - "integrity": "sha512-RgaqEOZLkVO+ViN3KkN44XJt9g7+wMveUv59sVLaTxONcUPc8ZpfqOCeLphVBZyih2dgkvZ0Ap1CNcokvY7Uyw==", + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.13.1.tgz", + "integrity": "sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==", "funding": { "url": "https://github.com/sponsors/panva" } @@ -874,24 +951,32 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", + "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", "dependencies": { "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", + "lodash": "^4.17.21", "ms": "^2.1.1", - "semver": "^5.6.0" + "semver": "^7.3.8" }, "engines": { - "node": ">=4", - "npm": ">=1.4.28" + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/jwa": { @@ -923,51 +1008,27 @@ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" - }, "node_modules/lodash.reduce": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==" }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/macaddress": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.5.3.tgz", @@ -1030,9 +1091,9 @@ "integrity": "sha512-KtvIRd9gcKlxbvrswGv1Ap9k7tVs//QW2ukp+8vJ28miYwkhUmYfjTZyElIG8KUXV/46wL2kDzLH8SJbXQ56Mg==" }, "node_modules/minecraft-data": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/minecraft-data/-/minecraft-data-3.10.2.tgz", - "integrity": "sha512-t1jWJhczUYnasd3AUc/k2JKDY1lHB8a82knwByf4S627lcfn4RZ3XcpAOnUHOwvwidDfyp1On6T5RBU+KGiJ2w==" + "version": "3.31.0", + "resolved": "https://registry.npmjs.org/minecraft-data/-/minecraft-data-3.31.0.tgz", + "integrity": "sha512-3U8LSXP8HaRtEKpdiZ339o34GFNpUSF9K+KaX/F0KzaQ0XLtBr+PVqNDZkkRiipkg3FQbKCioZyy8aglT3J18w==" }, "node_modules/minecraft-folder-path": { "version": "1.2.0", @@ -1040,9 +1101,9 @@ "integrity": "sha512-qaUSbKWoOsH9brn0JQuBhxNAzTDMwrOXorwuRxdJKKKDYvZhtml+6GVCUrY5HRiEsieBEjCUnhVpDuQiKsiFaw==" }, "node_modules/minecraft-protocol": { - "version": "1.36.1", - "resolved": "https://registry.npmjs.org/minecraft-protocol/-/minecraft-protocol-1.36.1.tgz", - "integrity": "sha512-ITJiWD8qdC+HtqBFw/OuTef53tQQIh3u9lcTjc9aC20ci14Y1mtrAd+PmaVF2k5RknHlPmlY40qiNualhzN54g==", + "version": "1.41.2", + "resolved": "https://registry.npmjs.org/minecraft-protocol/-/minecraft-protocol-1.41.2.tgz", + "integrity": "sha512-r2TbsyKtXK9IAxZYmBju/aHtseXBSgegUbqnnhCDW3qe60c0nFkUAoSJNNRMDHIxFUq1iVgkxHhKPRxgRs3Omg==", "dependencies": { "@types/readable-stream": "^2.3.13", "aes-js": "^3.1.2", @@ -1051,12 +1112,13 @@ "endian-toggle": "^0.0.0", "lodash.get": "^4.1.2", "lodash.merge": "^4.3.0", - "minecraft-data": "^3.8.0", + "minecraft-data": "^3.21.0", "minecraft-folder-path": "^1.2.0", "node-fetch": "^2.6.1", "node-rsa": "^0.4.2", - "prismarine-auth": "^1.7.0", + "prismarine-auth": "^2.2.0", "prismarine-nbt": "^2.0.0", + "prismarine-realms": "^1.2.0", "protodef": "^1.8.0", "readable-stream": "^4.1.0", "uuid-1345": "^1.0.1", @@ -1067,23 +1129,23 @@ } }, "node_modules/mineflayer": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/mineflayer/-/mineflayer-4.4.0.tgz", - "integrity": "sha512-nKy1KQSb20zWGtwlvwCmduAT7PHTchoR5jFAf4c8PzsxMznVCg9UeDOXYY8DfROpm6Kqjsg7DcQDFnS2frDD6w==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/mineflayer/-/mineflayer-4.8.1.tgz", + "integrity": "sha512-xqt5gdBvYHO1UV2slBm1QFFI2dHyfoMAxwSgxIGOuobIrZ05pY56XV6GW+NWQK0gqS4+MA5n0VakXPWZ5trzBQ==", "dependencies": { - "minecraft-data": "^3.0.0", - "minecraft-protocol": "^1.31.0", + "minecraft-data": "^3.26.0", + "minecraft-protocol": "^1.40.3", "prismarine-biome": "^1.1.1", "prismarine-block": "^1.13.1", - "prismarine-chat": "^1.3.3", - "prismarine-chunk": "^1.29.0", - "prismarine-entity": "^2.0.0", - "prismarine-item": "^1.11.5", + "prismarine-chat": "^1.7.1", + "prismarine-chunk": "^1.32.0", + "prismarine-entity": "^2.2.0", + "prismarine-item": "^1.12.1", "prismarine-nbt": "^2.0.0", "prismarine-physics": "^1.3.1", - "prismarine-recipe": "^1.1.0", - "prismarine-registry": "^1.0.0", - "prismarine-windows": "^2.4.2", + "prismarine-recipe": "^1.3.0", + "prismarine-registry": "^1.5.0", + "prismarine-windows": "^2.5.0", "prismarine-world": "^3.6.0", "protodef": "^1.14.0", "typed-emitter": "^1.0.0", @@ -1203,9 +1265,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -1230,16 +1292,15 @@ } }, "node_modules/nodemon": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", - "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", "dev": true, - "hasInstallScript": true, "dependencies": { "chokidar": "^3.5.2", "debug": "^3.2.7", "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "pstree.remy": "^1.1.8", "semver": "^5.7.1", "simple-update-notifier": "^1.0.7", @@ -1344,9 +1405,9 @@ } }, "node_modules/prismarine-auth": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/prismarine-auth/-/prismarine-auth-1.7.0.tgz", - "integrity": "sha512-Feorw3LkKGDxafolD0f7KcuucOad8NceXEoIwYScxhOdld61CpKVh8aprA3IWnmd0Vj/KO+qK8VGpFSvdaaZzA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/prismarine-auth/-/prismarine-auth-2.2.0.tgz", + "integrity": "sha512-3XfR3bqrd7nrTVyEqMwuYRr+/Vy+hkfBplubSDuoRAcRCs90lDx7R4EG3fjMSoKY53RLTXjeFnsB6m1krhL/2A==", "dependencies": { "@azure/msal-node": "^1.1.0", "@xboxreplay/xboxlive-auth": "^3.3.3", @@ -1380,15 +1441,14 @@ } }, "node_modules/prismarine-chat": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/prismarine-chat/-/prismarine-chat-1.6.1.tgz", - "integrity": "sha512-BvDR6Jzz9aoSKa7L5peOPzEp0MyrEj+N5nRaBT2VBpPtGXx+jQCxqAK7XDWF65Z5iRhjubfGdZZf65ayWG3oDA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/prismarine-chat/-/prismarine-chat-1.8.0.tgz", + "integrity": "sha512-hEz47GESIEP0W1KSHrK7ZSy0PqbQW7khYWenv8d5wvyAYnBs1E4KXDBJSWqyGIYinKGN9aes8v3xpQhgURK/Fg==", "dependencies": { - "minecraft-data": "^3.0.0", "mojangson": "^2.0.1", "prismarine-item": "^1.10.0", "prismarine-nbt": "^2.0.0", - "sprintf-js": "^1.1.2" + "prismarine-registry": "^1.4.0" } }, "node_modules/prismarine-chunk": { @@ -1410,23 +1470,24 @@ } }, "node_modules/prismarine-entity": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/prismarine-entity/-/prismarine-entity-2.1.1.tgz", - "integrity": "sha512-79iWUYNf0KRhMvvVJ4TTCQQZItPanA5zWBstx+eu98480WrCWi9fCdCPtY0Bsl4+o+tnkcTb6oMLlndx4yPwLA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/prismarine-entity/-/prismarine-entity-2.2.0.tgz", + "integrity": "sha512-boqJbMpGHG2ddFUUo9aKkKPUHQbFMWkUCw8SRdZ+jrZxABsstL9619I8ujwPYoOMJjMyfYWgdEPNyHGiUqqukA==", "dependencies": { "minecraft-data": "^3.0.0", "prismarine-chat": "^1.4.1", "prismarine-item": "^1.11.2", + "prismarine-registry": "^1.4.0", "vec3": "^0.1.4" } }, "node_modules/prismarine-item": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/prismarine-item/-/prismarine-item-1.11.5.tgz", - "integrity": "sha512-aWH1AXTiSDUUM0LVnFtJJ96If/sOiuM3DBZmSvtwFD+ufQsF3WndH2QW2Pv6FbabKByneF9xyPsq5dhUnvcG7g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/prismarine-item/-/prismarine-item-1.12.1.tgz", + "integrity": "sha512-Q+cV8WCM6gTO/K8gIpe4sTCVj0wdXy/IIctpQhgj4iRPoRY/rLCI88FAGsLNU1cabOFQDO3a0NIz+KLvhOvbQA==", "dependencies": { - "minecraft-data": "^3.0.0", - "prismarine-nbt": "^2.0.0" + "prismarine-nbt": "^2.0.0", + "prismarine-registry": "^1.4.0" } }, "node_modules/prismarine-nbt": { @@ -1447,30 +1508,40 @@ "vec3": "^0.1.7" } }, + "node_modules/prismarine-realms": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/prismarine-realms/-/prismarine-realms-1.3.0.tgz", + "integrity": "sha512-heAzbP2bI/dGjoHUWAe3pncg3jHwNLjN0nkZb98jbpJxgsogx/8Cqejd1Oc+EVnqnVwNyiyITfCoH3ECqYeikw==", + "dependencies": { + "debug": "^4.3.3", + "node-fetch": "^2.6.1" + } + }, "node_modules/prismarine-recipe": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/prismarine-recipe/-/prismarine-recipe-1.2.0.tgz", - "integrity": "sha512-ZkCtEi5xDS7tAJgDS/BxjvEYPAXusikcyIWYhPOpA6nslIUqWF5+QevC6FpNa3eQVdebgiNBQqHggcnI4xww5g==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/prismarine-recipe/-/prismarine-recipe-1.3.1.tgz", + "integrity": "sha512-xfa9E9ACoaDi+YzNQ+nk8kWSIqt5vSZOOCHIT+dTXscf/dng2HaJ/59uwe1D/jvOkAd2OvM6RRJM6fFe0q/LDA==", "peerDependencies": { - "minecraft-data": "^3.0.0" + "prismarine-registry": "^1.4.0" } }, "node_modules/prismarine-registry": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/prismarine-registry/-/prismarine-registry-1.2.0.tgz", - "integrity": "sha512-c3aEnn9/KrHo0zv4KihX0caFilCw5VW8Kaj9LXtArGRk5NkncDCguhM0S1SEj4WqoXsFSY4yG5HM5G4F92SKHg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/prismarine-registry/-/prismarine-registry-1.7.0.tgz", + "integrity": "sha512-yyva0FpWI078nNeMhx8ekVza5uUTYhEv+C+ADu3wUQXiG8qhXkvrf0uzsnhTgZL8BLdsi2axgCEiKw9qSKIuxQ==", "dependencies": { "minecraft-data": "^3.0.0", "prismarine-nbt": "^2.0.0" } }, "node_modules/prismarine-windows": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/prismarine-windows/-/prismarine-windows-2.4.4.tgz", - "integrity": "sha512-bjva7DtEu9V37SGgCqMiAgMRtwTypqyB95bS8VULUxoMPNhbcyTxdQhU6Fe2OFq4ufT9x3hGMKpMwJy+oepE0A==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/prismarine-windows/-/prismarine-windows-2.6.1.tgz", + "integrity": "sha512-5B8+W4Zb9MWaakd38I/WW564zEgat6bC23ftcv15yVYmHZTq8mtUfX2GsOUD3Pu/aFKarvXpyyJahFMUTUVoXg==", "dependencies": { - "minecraft-data": "^3.0.0", - "prismarine-item": "^1.5.0" + "prismarine-item": "^1.5.0", + "prismarine-registry": "^1.5.0", + "typed-emitter": "^1.0.0" } }, "node_modules/prismarine-world": { @@ -1484,6 +1555,14 @@ "node": ">=8.0.0" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/protodef": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/protodef/-/protodef-1.15.0.tgz", @@ -1602,11 +1681,14 @@ } }, "node_modules/readable-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.1.0.tgz", - "integrity": "sha512-sVisi3+P2lJ2t0BPbpK629j8wRW06yKGJUcaLAGXPAUhyUxVJm7VsCTit1PFgT4JHUDMrGNR+ZjSKpzGaRF3zw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", + "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", "dependencies": { - "abort-controller": "^3.0.0" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1660,6 +1742,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, "bin": { "semver": "bin/semver" } @@ -1804,11 +1887,6 @@ "node": ">=10.0.0" } }, - "node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" - }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -1999,6 +2077,11 @@ "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==" }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/yggdrasil": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/yggdrasil/-/yggdrasil-1.7.0.tgz", @@ -2011,17 +2094,17 @@ }, "dependencies": { "@azure/msal-common": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-7.3.0.tgz", - "integrity": "sha512-revxB3z+QLjwAtU1d04nC1voFr+i3LfqTpUfgrWZVqKh/sSgg0mZZUvw4vKVWB57qtL95sul06G+TfdFZny1Xw==" + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-11.0.0.tgz", + "integrity": "sha512-SZH8ObQ3Hq5v3ogVGBYJp1nNW7p+MtM4PH4wfNadBP9wf7K0beQHF9iOtRcjPOkwZf+ZD49oXqw91LndIkdk8g==" }, "@azure/msal-node": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.12.1.tgz", - "integrity": "sha512-m909lX9C8Ty01DBxbjr4KfAKWibohgRvY7hrdDo13U1ztlH+0Nbt7cPF1vrWonW/CRT4H4xtUa4LCNmivghggw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.16.0.tgz", + "integrity": "sha512-eGXPp65i++mAIvziafbCH970TCeECB6iaQP7aRzZEjtU238cW4zKm40U8YxkiCn9rR1G2VeMHENB5h6WRk7ZCQ==", "requires": { - "@azure/msal-common": "^7.3.0", - "jsonwebtoken": "^8.5.1", + "@azure/msal-common": "^11.0.0", + "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" } }, @@ -2046,12 +2129,19 @@ "integrity": "sha512-KZhFpSLlmK/sdocfSAjqPETTMd0ug6HIMIAwkwUpU79olnZdQtMxpQP+G1wDzCH7na+FltSIhbaZuKdwZ8RDrw==" }, "@types/readable-stream": { - "version": "2.3.14", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.14.tgz", - "integrity": "sha512-8jQ5Mp7bsDJEnW/69i6nAaQMoLwAVJVc7ZRAVTrdh/o6XueQsX38TEvKuYyoQj76/mg7WdlRfMrtl9pDLCJWsg==", + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", "requires": { "@types/node": "*", - "safe-buffer": "*" + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } } }, "@xboxreplay/errors": { @@ -2162,6 +2252,11 @@ "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==" }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, "base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", @@ -2226,10 +2321,19 @@ "fill-range": "^7.0.1" } }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==" }, "buffer-equal-constant-time": { "version": "1.0.1", @@ -2422,6 +2526,11 @@ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, "express": { "version": "4.18.1", "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", @@ -2623,6 +2732,11 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", @@ -2670,9 +2784,9 @@ "dev": true }, "jose": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.9.0.tgz", - "integrity": "sha512-RgaqEOZLkVO+ViN3KkN44XJt9g7+wMveUv59sVLaTxONcUPc8ZpfqOCeLphVBZyih2dgkvZ0Ap1CNcokvY7Uyw==" + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.13.1.tgz", + "integrity": "sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==" }, "json-schema-traverse": { "version": "0.4.1", @@ -2680,20 +2794,24 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", + "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", "requires": { "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", + "lodash": "^4.17.21", "ms": "^2.1.1", - "semver": "^5.6.0" + "semver": "^7.3.8" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "jwa": { @@ -2725,51 +2843,24 @@ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" - }, "lodash.reduce": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==" }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, "macaddress": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.5.3.tgz", @@ -2814,9 +2905,9 @@ "integrity": "sha512-KtvIRd9gcKlxbvrswGv1Ap9k7tVs//QW2ukp+8vJ28miYwkhUmYfjTZyElIG8KUXV/46wL2kDzLH8SJbXQ56Mg==" }, "minecraft-data": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/minecraft-data/-/minecraft-data-3.10.2.tgz", - "integrity": "sha512-t1jWJhczUYnasd3AUc/k2JKDY1lHB8a82knwByf4S627lcfn4RZ3XcpAOnUHOwvwidDfyp1On6T5RBU+KGiJ2w==" + "version": "3.31.0", + "resolved": "https://registry.npmjs.org/minecraft-data/-/minecraft-data-3.31.0.tgz", + "integrity": "sha512-3U8LSXP8HaRtEKpdiZ339o34GFNpUSF9K+KaX/F0KzaQ0XLtBr+PVqNDZkkRiipkg3FQbKCioZyy8aglT3J18w==" }, "minecraft-folder-path": { "version": "1.2.0", @@ -2824,9 +2915,9 @@ "integrity": "sha512-qaUSbKWoOsH9brn0JQuBhxNAzTDMwrOXorwuRxdJKKKDYvZhtml+6GVCUrY5HRiEsieBEjCUnhVpDuQiKsiFaw==" }, "minecraft-protocol": { - "version": "1.36.1", - "resolved": "https://registry.npmjs.org/minecraft-protocol/-/minecraft-protocol-1.36.1.tgz", - "integrity": "sha512-ITJiWD8qdC+HtqBFw/OuTef53tQQIh3u9lcTjc9aC20ci14Y1mtrAd+PmaVF2k5RknHlPmlY40qiNualhzN54g==", + "version": "1.41.2", + "resolved": "https://registry.npmjs.org/minecraft-protocol/-/minecraft-protocol-1.41.2.tgz", + "integrity": "sha512-r2TbsyKtXK9IAxZYmBju/aHtseXBSgegUbqnnhCDW3qe60c0nFkUAoSJNNRMDHIxFUq1iVgkxHhKPRxgRs3Omg==", "requires": { "@types/readable-stream": "^2.3.13", "aes-js": "^3.1.2", @@ -2835,12 +2926,13 @@ "endian-toggle": "^0.0.0", "lodash.get": "^4.1.2", "lodash.merge": "^4.3.0", - "minecraft-data": "^3.8.0", + "minecraft-data": "^3.21.0", "minecraft-folder-path": "^1.2.0", "node-fetch": "^2.6.1", "node-rsa": "^0.4.2", - "prismarine-auth": "^1.7.0", + "prismarine-auth": "^2.2.0", "prismarine-nbt": "^2.0.0", + "prismarine-realms": "^1.2.0", "protodef": "^1.8.0", "readable-stream": "^4.1.0", "uuid-1345": "^1.0.1", @@ -2848,23 +2940,23 @@ } }, "mineflayer": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/mineflayer/-/mineflayer-4.4.0.tgz", - "integrity": "sha512-nKy1KQSb20zWGtwlvwCmduAT7PHTchoR5jFAf4c8PzsxMznVCg9UeDOXYY8DfROpm6Kqjsg7DcQDFnS2frDD6w==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/mineflayer/-/mineflayer-4.8.1.tgz", + "integrity": "sha512-xqt5gdBvYHO1UV2slBm1QFFI2dHyfoMAxwSgxIGOuobIrZ05pY56XV6GW+NWQK0gqS4+MA5n0VakXPWZ5trzBQ==", "requires": { - "minecraft-data": "^3.0.0", - "minecraft-protocol": "^1.31.0", + "minecraft-data": "^3.26.0", + "minecraft-protocol": "^1.40.3", "prismarine-biome": "^1.1.1", "prismarine-block": "^1.13.1", - "prismarine-chat": "^1.3.3", - "prismarine-chunk": "^1.29.0", - "prismarine-entity": "^2.0.0", - "prismarine-item": "^1.11.5", + "prismarine-chat": "^1.7.1", + "prismarine-chunk": "^1.32.0", + "prismarine-entity": "^2.2.0", + "prismarine-item": "^1.12.1", "prismarine-nbt": "^2.0.0", "prismarine-physics": "^1.3.1", - "prismarine-recipe": "^1.1.0", - "prismarine-registry": "^1.0.0", - "prismarine-windows": "^2.4.2", + "prismarine-recipe": "^1.3.0", + "prismarine-registry": "^1.5.0", + "prismarine-windows": "^2.5.0", "prismarine-world": "^3.6.0", "protodef": "^1.14.0", "typed-emitter": "^1.0.0", @@ -2963,9 +3055,9 @@ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", "requires": { "whatwg-url": "^5.0.0" } @@ -2979,15 +3071,15 @@ } }, "nodemon": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", - "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", "dev": true, "requires": { "chokidar": "^3.5.2", "debug": "^3.2.7", "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "pstree.remy": "^1.1.8", "semver": "^5.7.1", "simple-update-notifier": "^1.0.7", @@ -3057,9 +3149,9 @@ "dev": true }, "prismarine-auth": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/prismarine-auth/-/prismarine-auth-1.7.0.tgz", - "integrity": "sha512-Feorw3LkKGDxafolD0f7KcuucOad8NceXEoIwYScxhOdld61CpKVh8aprA3IWnmd0Vj/KO+qK8VGpFSvdaaZzA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/prismarine-auth/-/prismarine-auth-2.2.0.tgz", + "integrity": "sha512-3XfR3bqrd7nrTVyEqMwuYRr+/Vy+hkfBplubSDuoRAcRCs90lDx7R4EG3fjMSoKY53RLTXjeFnsB6m1krhL/2A==", "requires": { "@azure/msal-node": "^1.1.0", "@xboxreplay/xboxlive-auth": "^3.3.3", @@ -3090,15 +3182,14 @@ } }, "prismarine-chat": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/prismarine-chat/-/prismarine-chat-1.6.1.tgz", - "integrity": "sha512-BvDR6Jzz9aoSKa7L5peOPzEp0MyrEj+N5nRaBT2VBpPtGXx+jQCxqAK7XDWF65Z5iRhjubfGdZZf65ayWG3oDA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/prismarine-chat/-/prismarine-chat-1.8.0.tgz", + "integrity": "sha512-hEz47GESIEP0W1KSHrK7ZSy0PqbQW7khYWenv8d5wvyAYnBs1E4KXDBJSWqyGIYinKGN9aes8v3xpQhgURK/Fg==", "requires": { - "minecraft-data": "^3.0.0", "mojangson": "^2.0.1", "prismarine-item": "^1.10.0", "prismarine-nbt": "^2.0.0", - "sprintf-js": "^1.1.2" + "prismarine-registry": "^1.4.0" } }, "prismarine-chunk": { @@ -3117,23 +3208,24 @@ } }, "prismarine-entity": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/prismarine-entity/-/prismarine-entity-2.1.1.tgz", - "integrity": "sha512-79iWUYNf0KRhMvvVJ4TTCQQZItPanA5zWBstx+eu98480WrCWi9fCdCPtY0Bsl4+o+tnkcTb6oMLlndx4yPwLA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/prismarine-entity/-/prismarine-entity-2.2.0.tgz", + "integrity": "sha512-boqJbMpGHG2ddFUUo9aKkKPUHQbFMWkUCw8SRdZ+jrZxABsstL9619I8ujwPYoOMJjMyfYWgdEPNyHGiUqqukA==", "requires": { "minecraft-data": "^3.0.0", "prismarine-chat": "^1.4.1", "prismarine-item": "^1.11.2", + "prismarine-registry": "^1.4.0", "vec3": "^0.1.4" } }, "prismarine-item": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/prismarine-item/-/prismarine-item-1.11.5.tgz", - "integrity": "sha512-aWH1AXTiSDUUM0LVnFtJJ96If/sOiuM3DBZmSvtwFD+ufQsF3WndH2QW2Pv6FbabKByneF9xyPsq5dhUnvcG7g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/prismarine-item/-/prismarine-item-1.12.1.tgz", + "integrity": "sha512-Q+cV8WCM6gTO/K8gIpe4sTCVj0wdXy/IIctpQhgj4iRPoRY/rLCI88FAGsLNU1cabOFQDO3a0NIz+KLvhOvbQA==", "requires": { - "minecraft-data": "^3.0.0", - "prismarine-nbt": "^2.0.0" + "prismarine-nbt": "^2.0.0", + "prismarine-registry": "^1.4.0" } }, "prismarine-nbt": { @@ -3154,28 +3246,38 @@ "vec3": "^0.1.7" } }, + "prismarine-realms": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/prismarine-realms/-/prismarine-realms-1.3.0.tgz", + "integrity": "sha512-heAzbP2bI/dGjoHUWAe3pncg3jHwNLjN0nkZb98jbpJxgsogx/8Cqejd1Oc+EVnqnVwNyiyITfCoH3ECqYeikw==", + "requires": { + "debug": "^4.3.3", + "node-fetch": "^2.6.1" + } + }, "prismarine-recipe": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/prismarine-recipe/-/prismarine-recipe-1.2.0.tgz", - "integrity": "sha512-ZkCtEi5xDS7tAJgDS/BxjvEYPAXusikcyIWYhPOpA6nslIUqWF5+QevC6FpNa3eQVdebgiNBQqHggcnI4xww5g==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/prismarine-recipe/-/prismarine-recipe-1.3.1.tgz", + "integrity": "sha512-xfa9E9ACoaDi+YzNQ+nk8kWSIqt5vSZOOCHIT+dTXscf/dng2HaJ/59uwe1D/jvOkAd2OvM6RRJM6fFe0q/LDA==", "requires": {} }, "prismarine-registry": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/prismarine-registry/-/prismarine-registry-1.2.0.tgz", - "integrity": "sha512-c3aEnn9/KrHo0zv4KihX0caFilCw5VW8Kaj9LXtArGRk5NkncDCguhM0S1SEj4WqoXsFSY4yG5HM5G4F92SKHg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/prismarine-registry/-/prismarine-registry-1.7.0.tgz", + "integrity": "sha512-yyva0FpWI078nNeMhx8ekVza5uUTYhEv+C+ADu3wUQXiG8qhXkvrf0uzsnhTgZL8BLdsi2axgCEiKw9qSKIuxQ==", "requires": { "minecraft-data": "^3.0.0", "prismarine-nbt": "^2.0.0" } }, "prismarine-windows": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/prismarine-windows/-/prismarine-windows-2.4.4.tgz", - "integrity": "sha512-bjva7DtEu9V37SGgCqMiAgMRtwTypqyB95bS8VULUxoMPNhbcyTxdQhU6Fe2OFq4ufT9x3hGMKpMwJy+oepE0A==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/prismarine-windows/-/prismarine-windows-2.6.1.tgz", + "integrity": "sha512-5B8+W4Zb9MWaakd38I/WW564zEgat6bC23ftcv15yVYmHZTq8mtUfX2GsOUD3Pu/aFKarvXpyyJahFMUTUVoXg==", "requires": { - "minecraft-data": "^3.0.0", - "prismarine-item": "^1.5.0" + "prismarine-item": "^1.5.0", + "prismarine-registry": "^1.5.0", + "typed-emitter": "^1.0.0" } }, "prismarine-world": { @@ -3186,6 +3288,11 @@ "vec3": "^0.1.7" } }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + }, "protodef": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/protodef/-/protodef-1.15.0.tgz", @@ -3276,11 +3383,14 @@ } }, "readable-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.1.0.tgz", - "integrity": "sha512-sVisi3+P2lJ2t0BPbpK629j8wRW06yKGJUcaLAGXPAUhyUxVJm7VsCTit1PFgT4JHUDMrGNR+ZjSKpzGaRF3zw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", + "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", "requires": { - "abort-controller": "^3.0.0" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" } }, "readdirp": { @@ -3310,7 +3420,8 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true }, "send": { "version": "0.18.0", @@ -3433,11 +3544,6 @@ "debug": "~4.3.1" } }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" - }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -3584,6 +3690,11 @@ "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==" }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "yggdrasil": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/yggdrasil/-/yggdrasil-1.7.0.tgz", diff --git a/nodejs/package.json b/nodejs/package.json index de1e3a5..3c928b6 100644 --- a/nodejs/package.json +++ b/nodejs/package.json @@ -21,7 +21,7 @@ "dotenv": "^16.0.1", "extend": "^3.0.2", "minecraft-data": "^3.5.0", - "mineflayer": "^4.3.0", + "mineflayer": "^4.8.0", "mineflayer-auto-eat": "^2.3.3", "mineflayer-pathfinder": "^2.2.0", "mineflayer-web-inventory": "^1.8.3", @@ -29,6 +29,6 @@ "prismarine-windows": "^2.4.4" }, "devDependencies": { - "nodemon": "^2.0.18" + "nodemon": "^2.0.22" } }