From fc7feb214ffad6bab3a6b60c85fc16edcdeeb055 Mon Sep 17 00:00:00 2001 From: illyum <90023277+itzilly@users.noreply.github.com> Date: Mon, 15 Jul 2024 19:08:38 -0600 Subject: [PATCH] stash changes --- fonts/Minecraftia-Regular.ttf | Bin 0 -> 70324 bytes main.js | 339 ++++++++++-------- package-lock.json | 654 +++++++++++++++++++++++++++++++++- package.json | 2 + 4 files changed, 852 insertions(+), 143 deletions(-) create mode 100644 fonts/Minecraftia-Regular.ttf diff --git a/fonts/Minecraftia-Regular.ttf b/fonts/Minecraftia-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7247ad785ac2f969f0019d1ac5253d70b6052fbc GIT binary patch literal 70324 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 L5%VJEMYQjK#!N~U literal 0 HcmV?d00001 diff --git a/main.js b/main.js index f3fbd18..9dfc07f 100644 --- a/main.js +++ b/main.js @@ -1,145 +1,206 @@ -const mineflayer = require('mineflayer'); -const { EventEmitter } = require('events'); +const fs = require('fs') +const axios = require('axios') +const mineflayer = require('mineflayer') +const { EventEmitter } = require('events') const { EmbedBuilder, hyperlink, WebhookClient } = require('discord.js'); -const { GuildMessage, GuildMessageSender, OfficerMessage } = require('./eventTypes.js'); +const { registerFont, createCanvas } = require('canvas'); -const bot = mineflayer.createBot({ - host: 'play.hypixel.net', - username: 'proudcirclemc@gmail.com', - auth: 'microsoft', - version: '1.8.9' -}); -const webhookUrl = ';https://discord.com/api/webhooks/1262482329671176232/yAHgxkP2JSBPpdjmz6mdABu5yRkXxatXcbzI91iAjy0jM0z1kRzE1HZqzK5OGXCmkqPk' +function stripChatColors(txt) { + const formattingRegex = /§[0-9a-fklmnor]+|[\[\]:]+/g; + return txt.replace(formattingRegex, ''); +} + + +class GuildMessageSender { + constructor(rawUsername, rawHypixelRank, rawGuildRank) { + this.rawUsername = rawUsername + this.rawHypixelRank = rawHypixelRank + this.rawGuildRank = rawGuildRank + } + + getCleanUsername() { return stripChatColors(this.rawUsername) } + getCleanHypixelRank() { return stripChatColors(this.rawHypixelRank) } + getCleanGuildRank() { return stripChatColors(this.rawGuildRank) } +} + +class GuildMessage { + constructor(message, sender) { + this.message = message + this.sender = sender + } +} + +class OfficerMessage { + constructor(message, sender) { + this.message = message + this.sender = sender + } +} + +function parseGuildMessage(jsonMsg) { + const message_details = jsonMsg.json.extra + let message_prefix = message_details[0].text + + let hypixel_rank = null + let username = null + let guild_rank = null + + let eventType = 'null' + let sender_contents = null + if (message_prefix.includes('§2Guild >')) { eventType = 'guildmsg'; sender_contents = message_prefix.replace('§2Guild >', '') } + else if (message_prefix.includes('§3Officer >')) { eventType = 'officermsg'; sender_contents = message_prefix.replace('§3Officer >', '') } + let message_arr = sender_contents.trim().split(' ') + + // Parse guild member details (with hypixel rank) + if (message_arr[0].includes('[')) { hypixel_rank = message_arr[0]; username = message_arr[1]; guild_rank = message_arr[2].replace(':', '') } + // Parse guild member details (nons) + else { hypixel_rank = ''; username = message_arr[0]; guild_rank = message_arr[1].replace(':', '') } + + // Skip messages sent by the bot + if (stripChatColors(username) === bot.username) { return } + + const sender = new GuildMessageSender(username, hypixel_rank, guild_rank) + let guildMessage = null + if (eventType === 'guildmsg') { guildMessage = new GuildMessage(message_details[1].text, sender) } + else if (eventType === 'officermsg') { guildMessage = new OfficerMessage(message_details[1].text, sender) } + else { console.error('Error parsing guild message: unknown event type'); return } + + // Emit GuildMessage event + chatEvents.emit(eventType, guildMessage) +} + +async function sendWebhookMessage(guildMsg) { + const canvas = createCanvas(800, 200) + const context = canvas.getContext('2d') + + // Fill background + context.fillStyle = '#313338' + context.fillRect(0, 0, canvas.width, canvas.height) + context.font = '24px minecraft' + + const username = guildMsg.sender.rawUsername + const hypixelRank = guildMsg.sender.rawHypixelRank + const guildRank = guildMsg.sender.rawGuildRank + const message = guildMsg.message + + let x = 10 + let y = 50 + + // Draw text with colors + context.fillStyle = '#FFAA00' // Example color, modify as needed + context.fillText(hypixelRank, x, y) + x += context.measureText(hypixelRank).width + 10 + + context.fillStyle = '#55FF55' // Example color, modify as needed + context.fillText(username, x, y) + x += context.measureText(username).width + 10 + + context.fillStyle = '#AAAAFF' // Example color, modify as needed + context.fillText(guildRank, x, y) + x += context.measureText(guildRank).width + 10 + + context.fillStyle = '#FFFFFF' // Example color, modify as needed + context.fillText(message, x, y) + + // Convert canvas to buffer + const buffer = canvas.toBuffer('image/png') + + // Send image to Discord webhook + const form = new FormData() + form.append('file', new Blob([Buffer.from(buffer)]), 'message.png') + + await axios.post(webhookUrl, form, {}) +} + +class ProudCircleBot { + constructor(username) { + this.username = username + this.auth = 'microsoft' + this.host = 'play.hypixel.net' + this.version = '1.8.9' + this.shouldReconnect = true + + this.initBot() + } + + + initBot() { + this.bot = mineflayer.createBot({ + "username": this.username, + "auth": 'microsoft', + "host": 'play.hypixel.net', + "version": this.version + }) + + this.initEvents() + this.bot.emit('startup') + + this.listenToUserInput() + } + + listenToUserInput() {} + + initEvents() { + // Bot Startup + this.bot.on('startup', async () => { console.log('Starting bot...') }) + + // Server login + this.bot.on('login', async () => { + let sock = this.bot._client.socket + console.log(`Logged into ${sock.server ? sock.server : sock._host}`) + }) + + // Disconnect from server + this.bot.on('end', async (cause) => { + console.log(`Disconnected from server: ${cause}`) + if (reason === 'disconnect.quitting') { return } + else { console.error('Unknown cause of disconnecting!') } + + // Auto Reconnect + if (this.shouldReconnect) { + console.log('Attempting to reconnect...') + setTimeout(() => this.initBot(), 5000) + } + }) + + // Chat Message + this.bot.on('message', async (jsonMsg, position) => { + // Avoid hypixel cancer + if (jsonMsg['extra'] && jsonMsg['extra'].length === 100) { return } + + let rawText = jsonMsg.toString() + if (rawText === "Woah there, slow down!") { console.error("Server issued message spam warning") } + if (!jsonMsg?.json?.extra || jsonMsg.json.extra.length === 0 || !jsonMsg.json.extra[0]) { return } + + // Check for guild messages + // Guild/Officer chat/member join/member leave + let extra_prefix = jsonMsg.json.extra[0].text + if (extra_prefix.startsWith('§2Guild >') || extra_prefix.startsWith('§3Officer >')) { + parseGuildMessage(jsonMsg) + } + }) + + + // Custom Guild Message Event + chatEvents.on('guildmsg', async (guildMsg) => { + console.log(`Guild: ${guildMsg.sender.getCleanUsername()} ${guildMsg.message}`) + await sendWebhookMessage(guildMsg) + }) + + + // Custom Officer Message Event + chatEvents.on('officermsg', (officerMsg) => { + console.log(`Officer: ${officerMsg.sender.getCleanUsername()} ${officerMsg.message}`) + }) + } +} + +registerFont('fonts/Minecraftia-Regular.ttf', {family: 'Minecraft'}) + +const webhookUrl = 'https://discord.com/api/webhooks/1262482329671176232/yAHgxkP2JSBPpdjmz6mdABu5yRkXxatXcbzI91iAjy0jM0z1kRzE1HZqzK5OGXCmkqPk' const webhookClient = new WebhookClient({ url: webhookUrl }); -function cleanFormatting(rawString) { - const formattingRegex = /§[0-9a-fklmnor]+|[\[\]:]+/g; - return rawString.replace(formattingRegex, ''); -} +const chatEvents = new EventEmitter() +const bot = new ProudCircleBot('ProudCircle') -function parseGuildMessage(jsonChatMessage) { - const extras = jsonChatMessage.json.extra; - let extra_prefix = extras[0].text; - - if (extra_prefix.startsWith('§2Guild >') || extra_prefix.startsWith('§aO > ')) { - // Guild Chat Event - let hypixel_rank = null; - let username = null; - let guild_rank = null; - - let splitter = extra_prefix.trim().split(' '); - if (splitter.length === 4) { - username = splitter[2]; - guild_rank = splitter[3]; - } else if (splitter.length === 5) { - hypixel_rank = splitter[2]; - username = splitter[3]; - guild_rank = splitter[4]; - } else { - console.error('Something went wrong: ' + splitter); - return; - } - - let message = extras[1].text; - const guildMessageSender = new GuildMessageSender(username, hypixel_rank, guild_rank); - if (extra_prefix.startsWith('§2Guild >')) { - let guildMessage = new GuildMessage(message, guildMessageSender); - chatEvents.emit('guildmsg', guildMessage); - } else if (extra_prefix.startsWith('§aO > ')) { - let officerMessage = new OfficerMessage(message, guildMessageSender); - chatEvents.emit('officermsg', officerMessage); - } - } -} - -function parsePersonalMessage(message) { - let fromPortion = message.split(': '); - if (!(fromPortion[0].startsWith('From '))) { - return; - } - let fromSplit = fromPortion[0].split(' '); - if (fromSplit[fromSplit.length - 1] !== 'illyum') { - return; - } - - let contents = fromPortion[1]; - if (contents.startsWith('!joinparty')) { - bot.chat('/party accept illyum'); - } else if (contents.startsWith('!say ')) { - bot.chat('/gc ' + contents.replace('!say ', '')); - } else if (contents.startsWith('!reply ')) { - bot.chat('/msg illyum ' + contents.replace('!reply ', '')); - } -} - -bot.once('spawn', () => { - console.log('Bot Logged In!'); -}); - -bot.on('message', async (jsonMsg, position) => { - try { - parseGuildMessage(jsonMsg); - } catch (err) {} -}); - -bot.on('messagestr', (message, position, jsonMsg) => { - try { - parsePersonalMessage(message); - } catch (err) {} -}); - -const chatEvents = new EventEmitter(); - -chatEvents.on('guildmsg', (guildMessage) => { - const guildRank = guildMessage.getSender().getCleanGuildRank(); - const username = guildMessage.getSender().getCleanUsername(); - const msg = guildMessage.getContent(); - - if (username === 'ProudCircle') { - return; - } - - if (msg.startsWith('!')) { - if (guildMessage.getContent().startsWith('!joinparty')) { - bot.chat('/party accept ' + username); - } else if (guildMessage.getContent().startsWith('!say ')) { - bot.chat('/gc ' + guildMessage.getContent().replace('!say ', '')); - } - } else { - let content; - if (guildMessage.getSender().getCleanHypixelRank() === null) { - content = `[${username}] ${guildRank}: \`${msg}\``; - } else { - content = `[${guildMessage.getSender().getCleanHypixelRank()}] [${username}] ${guildRank}: \`${msg}\``; - } - const embed = new EmbedBuilder() - .setTitle(content) - .setColor(0x00AA00); - - webhookClient.send({ - embeds: [embed] - }); - } - - console.log(`Guild > [${guildRank}] [${username}]: ${guildMessage.getContent()}`); - if (guildRank === 'Staff') { - if (guildMessage.getContent().startsWith('!joinparty')) { - bot.chat('/party accept ' + username); - } else if (guildMessage.getContent().startsWith('!say ')) { - bot.chat('/gc ' + guildMessage.getContent().replace('!say ', '')); - } - } -}); - -chatEvents.on('officermsg', (guildMessage) => { - const guildRank = guildMessage.getSender().getCleanGuildRank(); - const username = guildMessage.getSender().getCleanUsername(); - const msg = guildMessage.getContent(); - console.log(`Officer > [${username}]: ${guildMessage.getContent()}`); - if (guildMessage.getContent().startsWith('!joinparty')) { - bot.chat('/party accept ' + username); - } else if (guildMessage.getContent().startsWith('!say ')) { - bot.chat('/gc ' + guildMessage.getContent().replace('!say ', '')); - } -}); diff --git a/package-lock.json b/package-lock.json index eb62d01..3b742f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,6 +5,8 @@ "packages": { "": { "dependencies": { + "axios": "^1.7.2", + "canvas": "^2.11.2", "discord.js": "^14.15.3", "mineflayer": "^4.20.1" } @@ -157,6 +159,26 @@ "url": "https://github.com/discordjs/discord.js?sponsor" } }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "license": "BSD-3-Clause", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, "node_modules/@sapphire/async-queue": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.2.tgz", @@ -240,6 +262,21 @@ "axios": "^0.21.1" } }, + "node_modules/@xboxreplay/xboxlive-auth/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "license": "ISC" + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -256,6 +293,18 @@ "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -271,19 +320,77 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "license": "ISC" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", "integrity": "sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w==" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "license": "MIT", "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -303,6 +410,16 @@ } ] }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -342,11 +459,68 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, + "node_modules/canvas": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", + "simple-get": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC" + }, "node_modules/debug": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", @@ -363,6 +537,42 @@ } } }, + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "license": "MIT", + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/discontinuous-range": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", @@ -414,6 +624,12 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, "node_modules/endian-toggle": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/endian-toggle/-/endian-toggle-0.0.0.tgz", @@ -464,6 +680,111 @@ } } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -483,11 +804,31 @@ } ] }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/jose": { "version": "4.15.9", "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", @@ -614,6 +955,63 @@ "integrity": "sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==", "license": "MIT" }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minecraft-data": { "version": "3.67.0", "resolved": "https://registry.npmjs.org/minecraft-data/-/minecraft-data-3.67.0.tgz", @@ -680,6 +1078,64 @@ "node": ">=18" } }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/mojangson": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/mojangson/-/mojangson-2.0.4.tgz", @@ -698,6 +1154,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/nan": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "license": "MIT" + }, "node_modules/nearley": { "version": "2.20.1", "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", @@ -746,6 +1208,61 @@ "asn1": "0.2.3" } }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/prismarine-auth": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/prismarine-auth/-/prismarine-auth-2.5.0.tgz", @@ -949,6 +1466,12 @@ "node": ">= 6" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -997,6 +1520,22 @@ "node": ">=0.12" } }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -1022,6 +1561,49 @@ "node": ">=10" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "license": "MIT", + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -1058,6 +1640,49 @@ } ] }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -1146,6 +1771,21 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, "node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", @@ -1172,6 +1812,12 @@ "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==", + "license": "ISC" + }, "node_modules/yggdrasil": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/yggdrasil/-/yggdrasil-1.7.0.tgz", diff --git a/package.json b/package.json index c138aa5..1958a8d 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,7 @@ { "dependencies": { + "axios": "^1.7.2", + "canvas": "^2.11.2", "discord.js": "^14.15.3", "mineflayer": "^4.20.1" }