├── dependencies.json ├── 视频配套代码 ├── package.json ├── 00 FirstBot.js ├── 02 MinerBot.js ├── 01 WalkBot.js ├── 03 ChestBot.js └── package-lock.json ├── index.js ├── package.json ├── .gitignore ├── inventory.js ├── LICENSE ├── movement.js ├── botSetup.js ├── webConsole.js ├── 读我.md ├── README.md ├── chestInteraction.js ├── mining.js └── chat.js /dependencies.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huoyuuu/Bots-for-Minecraft/HEAD/dependencies.json -------------------------------------------------------------------------------- /视频配套代码/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "mineflayer": "^4.5.1", 4 | "mineflayer-pathfinder": "^2.4.1", 5 | "mineflayer-tool": "^1.2.0", 6 | "vec3": "^0.1.7" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /视频配套代码/00 FirstBot.js: -------------------------------------------------------------------------------- 1 | const mineflayer = require('mineflayer') 2 | const bot = mineflayer.createBot({ 3 | username: "first_bot", 4 | port: 4463 5 | }) 6 | 7 | function sayHello() { 8 | bot.chat('Hi') 9 | } 10 | bot.once('spawn', sayHello) 11 | 12 | bot.once('spawn', () => { bot.chat('Hi') }) -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 主文件 3 | */ 4 | 5 | const config = require('./botSetup'); 6 | const { createBot, registerEventListeners } = require('./botSetup'); 7 | const { initWebServer, handleConsoleCommand } = require('./webConsole'); 8 | 9 | // 创建机器人实例 10 | const bot = createBot(config.botName); 11 | 12 | // 注册事件监听器 13 | registerEventListeners(bot); 14 | 15 | // 初始化Web服务器 16 | initWebServer(bot); 17 | 18 | // 处理控制台命令 19 | handleConsoleCommand(bot); 20 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "minebot", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "body-parser": "^1.20.2", 14 | "express": "^4.18.3", 15 | "mineflayer": "^4.20.0", 16 | "mineflayer-auto-eat": "^3.3.6", 17 | "mineflayer-pathfinder": "^2.4.5", 18 | "mineflayer-web-inventory": "^1.8.4" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Node.js 依赖包 2 | node_modules/ 3 | 4 | # 日志文件 5 | logs/ 6 | *.log 7 | 8 | # 临时文件 9 | tmp/ 10 | *.tmp 11 | *.swp 12 | 13 | # 编辑器生成的文件 14 | .vscode/ 15 | .idea/ 16 | *.sublime-workspace 17 | *.sublime-project 18 | 19 | # 操作系统生成的文件 20 | .DS_Store 21 | Thumbs.db 22 | 23 | # 配置文件 24 | config.js 25 | auth.json 26 | 27 | # 构建产物 28 | dist/ 29 | build/ 30 | 31 | # 测试覆盖率报告 32 | coverage/ 33 | 34 | # 调试文件 35 | npm-debug.log* 36 | yarn-debug.log* 37 | yarn-error.log* 38 | 39 | # 环境变量文件 40 | .env 41 | .env.local 42 | .env.development.local 43 | .env.test.local 44 | .env.production.local 45 | 46 | # 个人笔记和文档 47 | notes/ 48 | docs/ 49 | 50 | # 压缩包 51 | *.zip 52 | *.tar 53 | *.tar.gz 54 | *.rar 55 | 56 | # 其他自定义文件和文件夹 57 | # 根据项目实际情况添加 -------------------------------------------------------------------------------- /inventory.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 背包管理与物品丢弃模块 3 | * 4 | * 该模块提供了管理机器人背包和丢弃物品的功能。 5 | * 主要功能包括: 6 | * - 列出背包中的物品 7 | * - 丢弃无用的物品,如沙子、泥土等 8 | */ 9 | 10 | const config = require('./botSetup'); 11 | 12 | /** 13 | * 列出背包中的物品 14 | * @param {Bot} bot - Mineflayer机器人实例 15 | */ 16 | function listInventory(bot) { 17 | const items = bot.inventory.items(); 18 | console.log('背包物品:'); 19 | items.forEach(item => { 20 | console.log(`- ${item.name} x ${item.count}`); 21 | }); 22 | } 23 | 24 | /** 25 | * 丢弃无用的物品 26 | * @param {Bot} bot - Mineflayer机器人实例 27 | */ 28 | function dropUselessItems(bot) { 29 | const uselessItems = bot.inventory.items().filter(item => config.uselessItems.includes(item.name)); 30 | uselessItems.forEach(item => { 31 | bot.tossStack(item); 32 | console.log(`已丢弃无用物品: ${item.name} x ${item.count}`); 33 | }); 34 | } 35 | 36 | module.exports = { 37 | listInventory, 38 | dropUselessItems, 39 | }; -------------------------------------------------------------------------------- /视频配套代码/02 MinerBot.js: -------------------------------------------------------------------------------- 1 | const mineflayer = require('mineflayer') 2 | const pathfinder = require('mineflayer-pathfinder') 3 | const tool = require('mineflayer-tool') 4 | 5 | 6 | const bot = mineflayer.createBot({ 7 | port: 12307, 8 | }) 9 | 10 | 11 | bot.loadPlugin(pathfinder.pathfinder) 12 | bot.loadPlugin(tool.plugin) 13 | 14 | bot.on('spawn', async() => { 15 | // 1 找到要挖掘的方块 16 | const blocks = bot.findBlocks({ 17 | matching: 1, 18 | count: 32 19 | }) 20 | console.log(blocks) 21 | 22 | // 2 具体挖掘过程 23 | for (const block of blocks) { 24 | try { 25 | // 走到方块处 26 | const goal_block = new pathfinder.goals.GoalBlock(block.x, block.y, block.z) 27 | await bot.pathfinder.goto(goal_block) 28 | 29 | // 准备好工具 30 | block_in_MC = bot.world.getBlock(block.x, block.y, block.z) 31 | await bot.tool.equipForBlock(block_in_MC) 32 | 33 | // 开始挖掘 34 | await bot.dig(block_in_MC) 35 | } catch (e) { 36 | continue 37 | } 38 | } 39 | 40 | // 3 异常处理 41 | }) -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Huoyuuu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /movement.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 寻路与移动模块 3 | * 4 | * 该模块提供了控制机器人移动和寻路的功能。 5 | * 主要功能包括: 6 | * - 移动到指定坐标 7 | * - 跟随指定玩家 8 | * - 停止移动 9 | */ 10 | 11 | const mineflayer = require('mineflayer'); 12 | const { GoalNear } = require('mineflayer-pathfinder').goals; 13 | 14 | /** 15 | * 移动到指定坐标 16 | * @param {Bot} bot - Mineflayer机器人实例 17 | * @param {number} x - 目标X坐标 18 | * @param {number} y - 目标Y坐标 19 | * @param {number} z - 目标Z坐标 20 | */ 21 | async function goto(bot, x, y, z) { 22 | const goal = new GoalNear(x, y, z, 1); 23 | await bot.pathfinder.goto(goal); 24 | } 25 | 26 | /** 27 | * 跟随指定玩家 28 | * @param {Bot} bot - Mineflayer机器人实例 29 | * @param {string} playerName - 要跟随的玩家名称 30 | */ 31 | async function followPlayer(bot, playerName) { 32 | const player = bot.players[playerName]; 33 | if (!player) { 34 | bot.chat(`找不到玩家: ${playerName}`); 35 | return; 36 | } 37 | 38 | const goal = new GoalNear(player.entity.position.x, player.entity.position.y, player.entity.position.z, 2); 39 | bot.pathfinder.setGoal(goal, true); 40 | bot.chat(`开始跟随玩家: ${playerName}`); 41 | } 42 | 43 | /** 44 | * 停止移动 45 | * @param {Bot} bot - Mineflayer机器人实例 46 | */ 47 | function stopMoving(bot) { 48 | bot.pathfinder.setGoal(null); 49 | bot.chat('已停止移动'); 50 | } 51 | 52 | module.exports = { 53 | goto, 54 | followPlayer, 55 | stopMoving, 56 | }; 57 | -------------------------------------------------------------------------------- /botSetup.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 机器人初始化与事件处理模块 3 | * 4 | * 该模块负责创建和初始化Mineflayer机器人实例,并注册各种事件监听器。 5 | * 事件监听器包括: 6 | * - 'spawn': 机器人生成时触发 7 | * - 'login': 机器人登录时触发 8 | * - 'chat': 机器人接收到聊天消息时触发 9 | * - 'health': 机器人生命值变化时触发 10 | */ 11 | 12 | const mineflayer = require('mineflayer'); 13 | const pathfinder = require('mineflayer-pathfinder').pathfinder; 14 | const autoeat = require('mineflayer-auto-eat').plugin; 15 | const inventoryViewer = require('mineflayer-web-inventory'); 16 | const config = require('./botSetup'); 17 | 18 | /** 19 | * 创建Mineflayer机器人实例 20 | * @param {string} botName - 机器人名称 21 | * @returns {Bot} - Mineflayer机器人实例 22 | */ 23 | function createBot(botName) { 24 | const bot = mineflayer.createBot({ 25 | username: botName, 26 | }); 27 | 28 | // 加载插件 29 | bot.loadPlugin(pathfinder); 30 | bot.loadPlugin(autoeat); 31 | 32 | return bot; 33 | } 34 | 35 | /** 36 | * 注册机器人事件监听器 37 | * @param {Bot} bot - Mineflayer机器人实例 38 | */ 39 | function registerEventListeners(bot) { 40 | // 'spawn'事件监听器 41 | bot.once('spawn', () => { 42 | console.log(`机器人 ${bot.username} 已生成`); 43 | inventoryViewer(bot, { port: config.inventoryViewerPort }); 44 | }); 45 | 46 | // 'login'事件监听器 47 | bot.once('login', () => { 48 | console.log(`机器人 ${bot.username} 已登录`); 49 | bot.chat(config.loginCommand); 50 | }); 51 | 52 | // 'chat'事件监听器 53 | bot.on('chat', (username, message) => { 54 | if (username === bot.username) return; 55 | // TODO: 在聊天命令处理模块中实现 56 | handleChatCommand(bot, username, message); 57 | }); 58 | 59 | // 'health'事件监听器 60 | bot.on('health', () => { 61 | if (bot.food >= config.autoEatThreshold) { 62 | bot.autoEat.disable(); 63 | console.log('机器人吃东西结束'); 64 | } else { 65 | bot.autoEat.enable(); 66 | console.log('机器人开始吃东西'); 67 | } 68 | }); 69 | } 70 | 71 | module.exports = { 72 | createBot, 73 | registerEventListeners, 74 | }; -------------------------------------------------------------------------------- /视频配套代码/01 WalkBot.js: -------------------------------------------------------------------------------- 1 | // 通过聊天进行交互 2 | // 期望实现的功能: 3 | // go 自动寻路到指定的位置 4 | // start [宽] [高] [矿道长度] 自动挖掘人工矿道 -> 三重for循环 5 | // stop 停止挖矿 -> blocks=[] bot.stopdigging() bot.pathfinder.stop() 6 | // storage 将物品存入最近的箱子中 7 | 8 | // 预留功能:怎样实现丰字形矿道? 9 | 10 | const admin_name = "Huoyuuu" 11 | const mineflayer = require('mineflayer') 12 | const pathfinder = require('mineflayer-pathfinder') 13 | const bot = mineflayer.createBot({ 14 | username: "walk_bot", 15 | port: 1333, 16 | }) 17 | bot.loadPlugin(pathfinder.pathfinder) 18 | 19 | bot.on('chat', (username, message) => { 20 | if (username != admin_name) return 21 | message = message.split(' ') 22 | console.log(message) 23 | if (message[0] == "go") { 24 | botGo(message) 25 | } 26 | }) 27 | 28 | function botGo(message) { 29 | // 找到玩家 30 | const admin_entity = bot.players[admin_name].entity 31 | 32 | // 设定玩家为目标 33 | const goal_admin = new pathfinder.goals.GoalFollow(admin_entity, 1) 34 | 35 | switch (message[1]) { 36 | case "follow": 37 | // 跟随玩家 38 | bot.pathfinder.setGoal(goal_admin, true) 39 | break; 40 | case "stop": 41 | // 停止移动 42 | bot.pathfinder.stop() 43 | break 44 | case "block": 45 | // 移动到指定方块 46 | if (message.length <= 4) { 47 | bot.chat("输入有误,请重新输入") 48 | return 49 | } 50 | x = parseInt(message[2]) 51 | y = parseInt(message[3]) 52 | z = parseInt(message[4]) 53 | const goal_block = new pathfinder.goals.GoalBlock(x, y, z) 54 | try { 55 | bot.pathfinder.setGoal(goal_block) 56 | } catch (e) { 57 | console.log(e[0]) 58 | bot.chat("出现问题,请重新输入") 59 | return 60 | } 61 | break 62 | default: 63 | // 移动到玩家所在的位置 64 | bot.pathfinder.setGoal(goal_admin, false) 65 | } 66 | } 67 | 68 | function botStart(message) { 69 | 70 | } -------------------------------------------------------------------------------- /视频配套代码/03 ChestBot.js: -------------------------------------------------------------------------------- 1 | const mineflayer = require('mineflayer') 2 | const bot = mineflayer.createBot({ 3 | port: 27325 4 | }) 5 | 6 | admin_name = "Huoyuuu" 7 | bot.on('chat', async(username, message) => { 8 | if (username != admin_name) return 9 | message = message.split(' ') 10 | if (message[0] == 'list') { 11 | getList(bot.inventory.items()) 12 | } 13 | if (message[0] == 'chest') { 14 | botChest() 15 | } 16 | }) 17 | 18 | function getList(items) { 19 | answer = "" 20 | for (item of items) { 21 | answer = answer + `${ item.name } * ${ item.count } ` 22 | } 23 | bot.chat(answer) 24 | } 25 | 26 | async function botChest() { 27 | // 找到箱子 28 | chestToOpen = bot.findBlock({ 29 | matching: bot.registry.blocksByName['chest'].id, 30 | maxDistance: 6 31 | }) 32 | if (!chestToOpen) { 33 | bot.chat("找不到箱子") 34 | return 35 | } 36 | 37 | // 打开箱子 38 | const chest = await bot.openChest(chestToOpen) 39 | getList(chest.containerItems()) 40 | 41 | bot.on('chat', async(username, message) => { 42 | if (username == bot.username) return 43 | message = message.split(' ') 44 | 45 | // 关闭箱子 46 | if (message[0] == "close") { 47 | chest.close() 48 | return 49 | } 50 | // 展示物品 51 | if (message[0] == "show") { 52 | getList(chest.containerItems()) 53 | } 54 | 55 | // 根据指令进行交互 in/out [item_name] [item_count] 56 | if (message.length == 1) return 57 | item_name = message[1] 58 | item_count = parseInt(message[2]) 59 | try { 60 | item_id = bot.registry.itemsByName[item_name].id 61 | } catch (e) { 62 | bot.chat(`找不到${item_name}`) 63 | return 64 | } 65 | 66 | // 放入物品 67 | if (message[0] == "in") { 68 | await chest.deposit(item_id, null, item_count) 69 | bot.chat(`OK 已存入${item_count}个${item_name}`) 70 | } 71 | // 取出物品 72 | if (message[0] == "out") { 73 | await chest.withdraw(item_id, null, item_count) 74 | bot.chat(`OK 已取出${item_count}个${item_name}`) 75 | } 76 | }) 77 | } 78 | 79 | function itemToString(item) { 80 | if (!item) return '(nothing)' 81 | return `${ item.name } * ${ item.count } ` 82 | } -------------------------------------------------------------------------------- /webConsole.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Web界面与控制台交互模块 3 | * 4 | * 该模块提供了与Web界面和控制台进行交互的功能。 5 | * 主要功能包括: 6 | * - 启动Web服务器,提供机器人状态查询和控制接口 7 | * - 处理控制台命令,如启动/停止挖矿、显示背包等 8 | */ 9 | 10 | const express = require('express'); 11 | const bodyParser = require('body-parser'); 12 | const config = require('./botSetup'); 13 | const { startMining, stopMining } = require('./mining'); 14 | const { listInventory } = require('./inventory'); 15 | const { goto } = require('./movement'); 16 | 17 | let bot; 18 | 19 | /** 20 | * 初始化Web服务器 21 | * @param {Bot} botInstance - Mineflayer机器人实例 22 | */ 23 | function initWebServer(botInstance) { 24 | bot = botInstance; 25 | 26 | const app = express(); 27 | app.use(bodyParser.json()); 28 | 29 | app.get('/status', (req, res) => { 30 | const status = { 31 | position: bot.entity.position, 32 | health: bot.health, 33 | food: bot.food, 34 | experience: bot.experience, 35 | }; 36 | res.json(status); 37 | }); 38 | 39 | app.post('/control', (req, res) => { 40 | const { action, data } = req.body; 41 | handleControlCommand(action, data); 42 | res.send('OK'); 43 | }); 44 | 45 | app.listen(config.webServerPort, () => { 46 | console.log(`Web服务器已启动,端口: ${config.webServerPort} `); 47 | }); 48 | } 49 | 50 | /** 51 | * 处理控制台命令 52 | */ 53 | function handleConsoleCommand() { 54 | const readline = require('readline'); 55 | const rl = readline.createInterface({ 56 | input: process.stdin, 57 | output: process.stdout, 58 | }); 59 | 60 | rl.on('line', input => { 61 | const [action, ...data] = input.split(' '); 62 | handleControlCommand(action, data); 63 | }); 64 | } 65 | 66 | /** 67 | * 处理控制命令 68 | * @param {string} action - 命令动作 69 | * @param {Array} data - 命令数据 70 | */ 71 | function handleControlCommand(action, data) { 72 | switch (action) { 73 | case 'startMining': 74 | startMining(bot); 75 | break; 76 | case 'stopMining': 77 | stopMining(bot); 78 | break; 79 | case 'listInventory': 80 | listInventory(bot); 81 | break; 82 | case 'goto': 83 | const [x, y, z] = data.map(Number); 84 | goto(bot, x, y, z); 85 | break; 86 | default: 87 | console.log(`未知命令: ${action} `); 88 | } 89 | } 90 | 91 | module.exports = { 92 | initWebServer, 93 | handleConsoleCommand, 94 | }; -------------------------------------------------------------------------------- /读我.md: -------------------------------------------------------------------------------- 1 | # Mineflayer 挖矿机器人 2 | 3 | ✨ 基于 Mineflayer 框架打造的高效智能挖矿机器人,用JavaScript给Minecraft注入新动力。 4 | 5 | - [Mineflayer 项目地址](https://github.com/PrismarineJS/mineflayer/) 6 | - [Mineflayer 官方文档](https://github.com/PrismarineJS/mineflayer/blob/master/docs/README.md) 7 | 8 | ## 🚀 快速开始 9 | 10 | 1. 确保您已安装 [Node.js](https://nodejs.org/) 环境。 11 | 2. 克隆仓库并进入项目目录: 12 | 13 | ```bash 14 | git clone https://github.com/yourusername/minebot.git 15 | cd minebot 16 | ``` 17 | 18 | 3. 安装项目依赖: 19 | 20 | ```bash 21 | npm install 22 | ``` 23 | 24 | 4. 启动机器人: 25 | 26 | ```bash 27 | node index.js 28 | ``` 29 | 30 | 5. 享受自动化挖矿的乐趣吧!😊 31 | 32 | ## 📁 项目结构 33 | 34 | ``` 35 | minebot/ 36 | ├── index.js 37 | ├── botSetup.js 38 | ├── chat.js 39 | ├── mining.js 40 | ├── inventory.js 41 | ├── movement.js 42 | ├── chestInteraction.js 43 | ├── webConsole.js 44 | ├── package.json 45 | └── README.md 46 | ``` 47 | 48 | - `index.js`: 主文件,用于初始化和启动机器人。 49 | - `botSetup.js`: 机器人设置模块,包含配置参数。 50 | - `chat.js`: 聊天管理模块。 51 | - `mining.js`: 自动挖矿模块。 52 | - `inventory.js`: 背包管理与物品丢弃模块。 53 | - `movement.js`: 寻路与移动模块。 54 | - `chestInteraction.js`: 箱子交互模块。 55 | - `webConsole.js`: Web 界面与控制台交互模块。 56 | - `package.json`: 项目依赖和配置文件。 57 | - `README.md`: 项目说明文档。 58 | 59 | ## 🎨 配置参数 60 | 61 | 可以在 `botSetup.js` 文件中自定义以下配置参数: 62 | 63 | - `host`: Minecraft 服务器地址。 64 | - `port`: Minecraft 服务器端口。 65 | - `username`: 机器人游戏内名称。 66 | - `password`: 机器人游戏内密码(如果需要)。 67 | - `version`: Minecraft 版本号。 68 | - `miningDepth`: 挖矿深度。 69 | - `autoDeposit`: 是否自动将挖到的物品存入箱子。 70 | - `chestCoordinates`: 存储箱坐标。 71 | 72 | ## 🔧 模块说明 73 | 74 | - `botSetup.js`: 负责机器人的初始化设置,包括连接服务器、认证登录等。 75 | - `chat.js`: 处理聊天相关功能,如发送消息、接收消息、执行聊天命令等。 76 | - `mining.js`: 实现自动挖矿功能,包括选择挖掘位置、挖掘方块、处理挖掘事件等。 77 | - `inventory.js`: 管理机器人背包,如整理物品、丢弃垃圾物品等。 78 | - `movement.js`: 负责机器人的移动控制,如寻路、避障、跳跃等。 79 | - `chestInteraction.js`: 处理与箱子的交互,如打开箱子、存取物品等。 80 | - `webConsole.js`: 提供 Web 控制台功能,用于远程监控和控制机器人。 81 | 82 | ## 🌟 特色功能 83 | 84 | - 自动存储挖到的物品,防止背包满导致挖矿中断。 85 | - 智能避障和寻路算法,确保机器人在复杂环境中稳定行动。 86 | - 提供 Web 控制台,方便远程监控和控制机器人。 87 | - 记录详细的日志信息,便于问题追踪和调试。 88 | 89 | ## 🤝 贡献指南 90 | 91 | 欢迎对本项目进行贡献!如果您发现了任何问题或有改进建议,请提交 Issue 或 Pull Request。 92 | 93 | 在提交 Pull Request 之前,请确保您的代码符合以下要求: 94 | 95 | - 遵循项目的代码风格和命名规范。 96 | - 编写清晰、易于理解的代码注释。 97 | - 提供必要的文档说明。 98 | - 通过所有测试用例。 99 | 100 | ## 📃 许可证 101 | 102 | 本项目基于 [MIT 许可证](LICENSE)进行开源。 103 | 104 | ## 📧 联系方式 105 | 106 | 如果您有任何问题或建议,欢迎通过以下方式联系我们: 107 | 108 | - 作者:Huoyuuu 109 | - 邮箱:Huoyuuu@gmail.com 110 | - GitHub:[https://github.com/Huoyuuu/Bots-for-Minecraft](https://github.com/Huoyuuu/Bots-for-Minecraft) 111 | 112 | 感谢支持和关注!欢迎PR,一起打造更智能、更高效的挖矿机器人! -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Mineflayer 挖矿机器人 2 | 3 | ✨ 基于 Mineflayer 框架打造的高效智能挖矿机器人,用JavaScript给Minecraft注入新动力。 4 | 5 | - [Mineflayer 项目地址](https://github.com/PrismarineJS/mineflayer/) 6 | - [Mineflayer 官方文档](https://github.com/PrismarineJS/mineflayer/blob/master/docs/README.md) 7 | 8 | ## 🚀 快速开始 9 | 10 | 1. 确保您已安装 [Node.js](https://nodejs.org/) 环境。 11 | 2. 克隆仓库并进入项目目录: 12 | 13 | ```bash 14 | git clone https://github.com/yourusername/minebot.git 15 | cd minebot 16 | ``` 17 | 18 | 3. 安装项目依赖: 19 | 20 | ```bash 21 | npm install 22 | ``` 23 | 24 | 4. 启动机器人: 25 | 26 | ```bash 27 | node index.js 28 | ``` 29 | 30 | 5. 享受自动化挖矿的乐趣吧!😊 31 | 32 | ## 📁 项目结构 33 | 34 | ``` 35 | minebot/ 36 | ├── index.js 37 | ├── botSetup.js 38 | ├── chat.js 39 | ├── mining.js 40 | ├── inventory.js 41 | ├── movement.js 42 | ├── chestInteraction.js 43 | ├── webConsole.js 44 | ├── package.json 45 | └── README.md 46 | ``` 47 | 48 | - `index.js`: 主文件,用于初始化和启动机器人。 49 | - `botSetup.js`: 机器人设置模块,包含配置参数。 50 | - `chat.js`: 聊天管理模块。 51 | - `mining.js`: 自动挖矿模块。 52 | - `inventory.js`: 背包管理与物品丢弃模块。 53 | - `movement.js`: 寻路与移动模块。 54 | - `chestInteraction.js`: 箱子交互模块。 55 | - `webConsole.js`: Web 界面与控制台交互模块。 56 | - `package.json`: 项目依赖和配置文件。 57 | - `README.md`: 项目说明文档。 58 | 59 | ## 🎨 配置参数 60 | 61 | 可以在 `botSetup.js` 文件中自定义以下配置参数: 62 | 63 | [部分TODO] 64 | - `host`: Minecraft 服务器地址。 65 | - `port`: Minecraft 服务器端口。 66 | - `username`: 机器人游戏内名称。 67 | - `password`: 机器人游戏内密码(如果需要)。 68 | - `version`: Minecraft 版本号。 69 | - `miningDepth`: 挖矿深度。 70 | - `autoDeposit`: 是否自动将挖到的物品存入箱子。 71 | - `chestCoordinates`: 存储箱坐标。 72 | 73 | ## 🔧 模块说明 74 | 75 | - `botSetup.js`: 负责机器人的初始化设置,包括连接服务器、认证登录等。 76 | - `chat.js`: 处理聊天相关功能,如发送消息、接收消息、执行聊天命令等。 77 | - `mining.js`: 实现自动挖矿功能,包括选择挖掘位置、挖掘方块、处理挖掘事件等。 78 | - `inventory.js`: 管理机器人背包,如整理物品、丢弃垃圾物品等。 79 | - `movement.js`: 负责机器人的移动控制,如寻路、避障、跳跃等。 80 | - `chestInteraction.js`: 处理与箱子的交互,如打开箱子、存取物品等。 81 | - `webConsole.js`: 提供 Web 控制台功能,用于远程监控和控制机器人。 82 | 83 | ## 🌟 特色功能 84 | 85 | [部分TODO] 86 | - 自动存储挖到的物品,防止背包满导致挖矿中断。 87 | - 智能避障和寻路算法,确保机器人在复杂环境中稳定行动。 88 | - 提供 Web 控制台,方便远程监控和控制机器人。 89 | - 记录详细的日志信息,便于问题追踪和调试。 90 | 91 | ## 🤝 贡献指南 92 | 93 | 欢迎对本项目进行贡献!如果您发现了任何问题或有改进建议,请提交 Issue 或 Pull Request。 94 | 95 | 在提交 Pull Request 之前,请确保您的代码符合以下要求: 96 | 97 | - 遵循项目的代码风格和命名规范。 98 | - 编写清晰、易于理解的代码注释。 99 | - 提供必要的文档说明。 100 | - 通过所有测试用例。 101 | 102 | ## 📃 许可证 103 | 104 | 本项目基于 [MIT 许可证](LICENSE)进行开源。 105 | 106 | ## 📧 联系方式 107 | 108 | 如果您有任何问题或建议,欢迎通过以下方式联系我们: 109 | 110 | - 作者:Huoyuuu 111 | - 邮箱:Huoyuuu@gmail.com 112 | - GitHub:[https://github.com/Huoyuuu/Bots-for-Minecraft](https://github.com/Huoyuuu/Bots-for-Minecraft) 113 | 114 | 感谢支持和关注!欢迎PR,一起打造更智能、更高效的挖矿机器人! -------------------------------------------------------------------------------- /chestInteraction.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 箱子交互模块 3 | * 4 | * 该模块提供了与箱子进行交互的功能。 5 | * 主要功能包括: 6 | * - 打开附近的箱子 7 | * - 将物品存入箱子 8 | * - 从箱子中取出物品 9 | */ 10 | 11 | const mineflayer = require('mineflayer'); 12 | 13 | /** 14 | * 与箱子交互 15 | * @param {Bot} bot - Mineflayer机器人实例 16 | * @param {string} action - 交互操作:'deposit' 存入, 'withdraw' 取出, 'depositAll' 全部存入, 'withdrawAll' 全部取出 17 | * @param {string} [itemName] - 物品名称 18 | * @param {number} [itemCount] - 物品数量 19 | */ 20 | async function interactWithChest(bot, action, itemName, itemCount) { 21 | const chestBlock = bot.findBlock({ 22 | matching: block => block.name.includes('chest'), 23 | maxDistance: 5, 24 | }); 25 | 26 | if (!chestBlock) { 27 | bot.chat('附近没有箱子'); 28 | return; 29 | } 30 | 31 | const chest = await bot.openChest(chestBlock); 32 | console.log(`已打开箱子: ${chestBlock.name}`); 33 | 34 | switch (action) { 35 | case 'depositAll': 36 | await depositAllItems(chest); 37 | break; 38 | case 'withdrawAll': 39 | await withdrawAllItems(chest); 40 | break; 41 | case 'deposit': 42 | await depositItems(chest, itemName, itemCount); 43 | break; 44 | case 'withdraw': 45 | await withdrawItems(chest, itemName, itemCount); 46 | break; 47 | default: 48 | bot.chat(`未知操作: ${action}`); 49 | } 50 | 51 | chest.close(); 52 | console.log(`已关闭箱子: ${chestBlock.name}`); 53 | } 54 | 55 | /** 56 | * 将所有物品存入箱子 57 | * @param {Chest} chest - 箱子实例 58 | */ 59 | async function depositAllItems(chest) { 60 | const inventory = chest.window.slots; 61 | for (const item of inventory) { 62 | if (item) { 63 | await chest.deposit(item.type, null, item.count); 64 | } 65 | } 66 | console.log('已将所有物品存入箱子'); 67 | } 68 | 69 | /** 70 | * 从箱子中取出所有物品 71 | * @param {Chest} chest - 箱子实例 72 | */ 73 | async function withdrawAllItems(chest) { 74 | const chestItems = chest.items(); 75 | for (const item of chestItems) { 76 | await chest.withdraw(item.type, null, item.count); 77 | } 78 | console.log('已从箱子中取出所有物品'); 79 | } 80 | 81 | /** 82 | * 将指定物品存入箱子 83 | * @param {Chest} chest - 箱子实例 84 | * @param {string} itemName - 物品名称 85 | * @param {number} itemCount - 物品数量 86 | */ 87 | async function depositItems(chest, itemName, itemCount) { 88 | const inventory = chest.window.slots; 89 | for (const item of inventory) { 90 | if (item && item.name === itemName && itemCount > 0) { 91 | const count = Math.min(item.count, itemCount); 92 | await chest.deposit(item.type, null, count); 93 | itemCount -= count; 94 | } 95 | } 96 | console.log(`已将 ${itemName} x ${itemCount} 存入箱子`); 97 | } 98 | 99 | /** 100 | * 从箱子中取出指定物品 101 | * @param {Chest} chest - 箱子实例 102 | * @param {string} itemName - 物品名称 103 | * @param {number} itemCount - 物品数量 104 | */ 105 | async function withdrawItems(chest, itemName, itemCount) { 106 | const chestItems = chest.items(); 107 | for (const item of chestItems) { 108 | if (item.name === itemName && itemCount > 0) { 109 | const count = Math.min(item.count, itemCount); 110 | await chest.withdraw(item.type, null, count); 111 | itemCount -= count; 112 | } 113 | } 114 | console.log(`已从箱子中取出 ${itemName} x ${itemCount}`); 115 | } 116 | 117 | module.exports = { 118 | interactWithChest, 119 | }; -------------------------------------------------------------------------------- /mining.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 自动挖矿模块 3 | * 4 | * 该模块负责控制机器人进行自动挖矿。 5 | * 自动挖矿的主要步骤包括: 6 | * 1. 在指定范围内搜索目标方块 7 | * 2. 过滤掉不可达或不安全的方块 8 | * 3. 寻路到目标方块并挖掘 9 | * 4. 重复步骤1-3,直到达到指定的挖矿时间或背包已满 10 | */ 11 | 12 | const mineflayer = require('mineflayer'); 13 | const { goto } = require('./movement'); 14 | const { listInventory } = require('./inventory'); 15 | const { dropUselessItems } = require('./inventory'); 16 | const config = require('./botSetup'); 17 | 18 | /** 19 | * 开始自动挖矿 20 | * @param {Bot} bot - Mineflayer机器人实例 21 | */ 22 | async function startMining(bot) { 23 | console.log('开始自动挖矿'); 24 | 25 | const miningBlocks = bot.findBlocks({ 26 | matching: block => block.name === config.miningBlockName, 27 | maxDistance: config.miningRange, 28 | count: config.miningBlockCount, 29 | }); 30 | 31 | while (miningBlocks.length > 0) { 32 | const filteredBlocks = miningBlocks.filter(isBlockSafe); 33 | if (filteredBlocks.length === 0) { 34 | console.log('没有可挖掘的安全方块'); 35 | moveToNewArea(bot); 36 | continue; 37 | } 38 | 39 | for (const block of filteredBlocks) { 40 | try { 41 | await goto(bot, block.x, block.y, block.z); 42 | await mineBlock(bot, block); 43 | await waitForItemDrop(bot); 44 | 45 | if (bot.inventory.items().length >= config.inventoryFullThreshold) { 46 | dropUselessItems(bot); 47 | } 48 | } catch (err) { 49 | console.log(`挖掘方块时出错: ${err.message} `); 50 | break; 51 | } 52 | } 53 | } 54 | 55 | console.log('自动挖矿结束'); 56 | listInventory(bot); 57 | } 58 | 59 | /** 60 | * 挖掘指定方块 61 | * @param {Bot} bot - Mineflayer机器人实例 62 | * @param {Block} block - 要挖掘的方块 63 | */ 64 | async function mineBlock(bot, block) { 65 | console.log(`开始挖掘方块: ${block.name} (${block.x}, ${block.y}, ${block.z})`); 66 | 67 | try { 68 | await bot.dig(block); 69 | } catch (err) { 70 | console.log(`挖掘方块失败: ${err.message} `); 71 | } 72 | } 73 | 74 | /** 75 | * 等待物品掉落 76 | * @param {Bot} bot - Mineflayer机器人实例 77 | */ 78 | async function waitForItemDrop(bot) { 79 | return new Promise(resolve => { 80 | const listener = item => { 81 | if (item.name === config.miningItemName) { 82 | bot.removeListener('itemDrop', listener); 83 | resolve(); 84 | } 85 | }; 86 | bot.on('itemDrop', listener); 87 | }); 88 | } 89 | 90 | /** 91 | * 判断方块是否安全可挖掘 92 | * @param {Block} block - 要判断的方块 93 | * @returns {boolean} - 方块是否安全可挖掘 94 | */ 95 | function isBlockSafe(block) { 96 | const blockAbove = bot.blockAt(block.position.offset(0, 1, 0)); 97 | const blockBelow = bot.blockAt(block.position.offset(0, -1, 0)); 98 | 99 | return !config.unsafeBlocks.includes(blockAbove.name) && blockBelow.name !== 'air'; 100 | } 101 | 102 | /** 103 | * 移动到新的区域进行挖矿 104 | * @param {Bot} bot - Mineflayer机器人实例 105 | */ 106 | async function moveToNewArea(bot) { 107 | const { x, y, z } = bot.entity.position; 108 | const newPosition = new mineflayer.vec3(x + config.miningMoveDistance, y, z); 109 | 110 | try { 111 | await goto(bot, newPosition.x, newPosition.y, newPosition.z); 112 | console.log('已移动到新的挖矿区域'); 113 | } catch (err) { 114 | console.log(`移动到新区域时出错: ${err.message} `); 115 | } 116 | } 117 | 118 | module.exports = { 119 | startMining, 120 | }; 121 | -------------------------------------------------------------------------------- /chat.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 聊天命令处理模块 3 | * 4 | * 该模块负责处理机器人接收到的聊天命令。 5 | * 支持的命令包括: 6 | * - 'go': 机器人移动到指定位置或跟随指定玩家 7 | * - 'tp': 机器人接受传送请求 8 | * - 'mine': 机器人开始自动挖矿 9 | * - 'list': 显示机器人背包中的物品 10 | * - 'chest': 机器人与箱子进行交互 11 | * - 'help': 显示帮助信息 12 | */ 13 | 14 | const config = require('./config'); 15 | const { goto, followPlayer, stopMoving } = require('./movement'); 16 | const { startMining } = require('./mining'); 17 | const { listInventory } = require('./inventory'); 18 | const { interactWithChest } = require('./chestInteraction'); 19 | 20 | /** 21 | * 处理聊天命令 22 | * @param {Bot} bot - Mineflayer机器人实例 23 | * @param {string} username - 发送命令的玩家用户名 24 | * @param {string} message - 聊天消息内容 25 | */ 26 | function handleChatCommand(bot, username, message) { 27 | const args = message.split(' '); 28 | const command = args[0]; 29 | 30 | switch (command) { 31 | case 'go': 32 | handleGoCommand(bot, args); 33 | break; 34 | case 'tp': 35 | bot.chat(config.tpAcceptCommand); 36 | break; 37 | case 'mine': 38 | startMining(bot); 39 | break; 40 | case 'list': 41 | listInventory(bot); 42 | break; 43 | case 'chest': 44 | handleChestCommand(bot, args); 45 | break; 46 | case 'help': 47 | displayHelpMessage(bot, username); 48 | break; 49 | default: 50 | bot.chat(`未知命令: ${command}`); 51 | } 52 | } 53 | 54 | /** 55 | * 处理'go'命令 56 | * @param {Bot} bot - Mineflayer机器人实例 57 | * @param {string[]} args - 命令参数 58 | */ 59 | function handleGoCommand(bot, args) { 60 | const subCommand = args[1]; 61 | const targetName = args[2]; 62 | 63 | if (subCommand === 'follow') { 64 | followPlayer(bot, targetName); 65 | } else if (subCommand === 'stop') { 66 | stopMoving(bot); 67 | } else { 68 | const x = parseInt(args[1]); 69 | const y = parseInt(args[2]); 70 | const z = parseInt(args[3]); 71 | goto(bot, x, y, z); 72 | } 73 | } 74 | 75 | /** 76 | * 处理'chest'命令 77 | * @param {Bot} bot - Mineflayer机器人实例 78 | * @param {string[]} args - 命令参数 79 | */ 80 | function handleChestCommand(bot, args) { 81 | const subCommand = args[1]; 82 | 83 | if (subCommand === 'all') { 84 | const action = args[2]; 85 | if (action === 'in') { 86 | interactWithChest(bot, 'depositAll'); 87 | } else if (action === 'out') { 88 | interactWithChest(bot, 'withdrawAll'); 89 | } else { 90 | bot.chat(`未知操作: ${action}`); 91 | } 92 | } else { 93 | const itemName = args[1]; 94 | const itemCount = parseInt(args[2]); 95 | if (subCommand === 'in') { 96 | interactWithChest(bot, 'deposit', itemName, itemCount); 97 | } else if (subCommand === 'out') { 98 | interactWithChest(bot, 'withdraw', itemName, itemCount); 99 | } else { 100 | bot.chat(`未知命令: ${subCommand}`); 101 | } 102 | } 103 | } 104 | 105 | /** 106 | 107 | 显示帮助信息 108 | @param {Bot} bot - Mineflayer机器人实例 109 | @param {string} username - 请求帮助的玩家用户名 110 | */ 111 | function displayHelpMessage(bot, username) { 112 | const helpMessage = ` 113 | 可用命令: 114 | go [follow|stop| ]: 移动到指定位置或跟随指定玩家 115 | tp: 接受传送请求 116 | mine: 开始自动挖矿 117 | list: 显示背包中的物品 118 | chest [all in|all out|in |out ]: 与箱子交互 119 | help: 显示此帮助信息 120 | `; 121 | bot.whisper(username, helpMessage); 122 | } 123 | module.exports = { 124 | handleChatCommand, 125 | }; -------------------------------------------------------------------------------- /视频配套代码/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JavaScript", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "dependencies": { 8 | "mineflayer": "^4.5.1", 9 | "mineflayer-pathfinder": "^2.4.1", 10 | "mineflayer-tool": "^1.2.0", 11 | "vec3": "^0.1.7" 12 | } 13 | }, 14 | "node_modules/@azure/msal-common": { 15 | "version": "9.0.0", 16 | "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.0.tgz", 17 | "integrity": "sha512-uiFiFKVNTsRpmKio5bcObTuHcaHHZB2GEsjJJN8rbJNmzoYuZzNioOoK+J0QK0jEasRBgAoR5A8hSty2iKRzIg==", 18 | "engines": { 19 | "node": ">=0.8.0" 20 | } 21 | }, 22 | "node_modules/@azure/msal-node": { 23 | "version": "1.14.4", 24 | "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.4.tgz", 25 | "integrity": "sha512-j9GzZu5mTLWtuJ+cYN6e67UNymIS5OysblrOzH8lakt9XxH0GCPYjuqbOEKTP84r+Rbj3io+TuW1KS+0Xxuj/g==", 26 | "dependencies": { 27 | "@azure/msal-common": "^9.0.0", 28 | "jsonwebtoken": "^8.5.1", 29 | "uuid": "^8.3.0" 30 | }, 31 | "engines": { 32 | "node": "10 || 12 || 14 || 16 || 18" 33 | } 34 | }, 35 | "node_modules/@types/node": { 36 | "version": "18.11.9", 37 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", 38 | "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" 39 | }, 40 | "node_modules/@types/readable-stream": { 41 | "version": "2.3.15", 42 | "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", 43 | "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", 44 | "dependencies": { 45 | "@types/node": "*", 46 | "safe-buffer": "~5.1.1" 47 | } 48 | }, 49 | "node_modules/@xboxreplay/errors": { 50 | "version": "0.1.0", 51 | "resolved": "https://registry.npmjs.org/@xboxreplay/errors/-/errors-0.1.0.tgz", 52 | "integrity": "sha512-Tgz1d/OIPDWPeyOvuL5+aai5VCcqObhPnlI3skQuf80GVF3k1I0lPCnGC+8Cm5PV9aLBT5m8qPcJoIUQ2U4y9g==" 53 | }, 54 | "node_modules/@xboxreplay/xboxlive-auth": { 55 | "version": "3.3.3", 56 | "resolved": "https://registry.npmjs.org/@xboxreplay/xboxlive-auth/-/xboxlive-auth-3.3.3.tgz", 57 | "integrity": "sha512-j0AU8pW10LM8O68CTZ5QHnvOjSsnPICy0oQcP7zyM7eWkDQ/InkiQiirQKsPn1XRYDl4ccNu0WM582s3UKwcBg==", 58 | "dependencies": { 59 | "@xboxreplay/errors": "^0.1.0", 60 | "axios": "^0.21.1" 61 | } 62 | }, 63 | "node_modules/abort-controller": { 64 | "version": "3.0.0", 65 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 66 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 67 | "dependencies": { 68 | "event-target-shim": "^5.0.0" 69 | }, 70 | "engines": { 71 | "node": ">=6.5" 72 | } 73 | }, 74 | "node_modules/aes-js": { 75 | "version": "3.1.2", 76 | "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", 77 | "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" 78 | }, 79 | "node_modules/ajv": { 80 | "version": "6.12.6", 81 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 82 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 83 | "dependencies": { 84 | "fast-deep-equal": "^3.1.1", 85 | "fast-json-stable-stringify": "^2.0.0", 86 | "json-schema-traverse": "^0.4.1", 87 | "uri-js": "^4.2.2" 88 | }, 89 | "funding": { 90 | "type": "github", 91 | "url": "https://github.com/sponsors/epoberezkin" 92 | } 93 | }, 94 | "node_modules/asn1": { 95 | "version": "0.2.3", 96 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", 97 | "integrity": "sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w==" 98 | }, 99 | "node_modules/axios": { 100 | "version": "0.21.4", 101 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", 102 | "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", 103 | "dependencies": { 104 | "follow-redirects": "^1.14.0" 105 | } 106 | }, 107 | "node_modules/base64-js": { 108 | "version": "1.5.1", 109 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 110 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 111 | "funding": [ 112 | { 113 | "type": "github", 114 | "url": "https://github.com/sponsors/feross" 115 | }, 116 | { 117 | "type": "patreon", 118 | "url": "https://www.patreon.com/feross" 119 | }, 120 | { 121 | "type": "consulting", 122 | "url": "https://feross.org/support" 123 | } 124 | ] 125 | }, 126 | "node_modules/buffer": { 127 | "version": "6.0.3", 128 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 129 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 130 | "funding": [ 131 | { 132 | "type": "github", 133 | "url": "https://github.com/sponsors/feross" 134 | }, 135 | { 136 | "type": "patreon", 137 | "url": "https://www.patreon.com/feross" 138 | }, 139 | { 140 | "type": "consulting", 141 | "url": "https://feross.org/support" 142 | } 143 | ], 144 | "dependencies": { 145 | "base64-js": "^1.3.1", 146 | "ieee754": "^1.2.1" 147 | } 148 | }, 149 | "node_modules/buffer-equal": { 150 | "version": "1.0.1", 151 | "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", 152 | "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", 153 | "engines": { 154 | "node": ">=0.4" 155 | }, 156 | "funding": { 157 | "url": "https://github.com/sponsors/ljharb" 158 | } 159 | }, 160 | "node_modules/buffer-equal-constant-time": { 161 | "version": "1.0.1", 162 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 163 | "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" 164 | }, 165 | "node_modules/commander": { 166 | "version": "2.20.3", 167 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 168 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 169 | }, 170 | "node_modules/debug": { 171 | "version": "4.3.4", 172 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 173 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 174 | "dependencies": { 175 | "ms": "2.1.2" 176 | }, 177 | "engines": { 178 | "node": ">=6.0" 179 | }, 180 | "peerDependenciesMeta": { 181 | "supports-color": { 182 | "optional": true 183 | } 184 | } 185 | }, 186 | "node_modules/discontinuous-range": { 187 | "version": "1.0.0", 188 | "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", 189 | "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==" 190 | }, 191 | "node_modules/ecdsa-sig-formatter": { 192 | "version": "1.0.11", 193 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 194 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 195 | "dependencies": { 196 | "safe-buffer": "^5.0.1" 197 | } 198 | }, 199 | "node_modules/endian-toggle": { 200 | "version": "0.0.0", 201 | "resolved": "https://registry.npmjs.org/endian-toggle/-/endian-toggle-0.0.0.tgz", 202 | "integrity": "sha512-ShfqhXeHRE4TmggSlHXG8CMGIcsOsqDw/GcoPcosToE59Rm9e4aXaMhEQf2kPBsBRrKem1bbOAv5gOKnkliMFQ==" 203 | }, 204 | "node_modules/event-target-shim": { 205 | "version": "5.0.1", 206 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 207 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", 208 | "engines": { 209 | "node": ">=6" 210 | } 211 | }, 212 | "node_modules/events": { 213 | "version": "3.3.0", 214 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 215 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 216 | "engines": { 217 | "node": ">=0.8.x" 218 | } 219 | }, 220 | "node_modules/fast-deep-equal": { 221 | "version": "3.1.3", 222 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 223 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 224 | }, 225 | "node_modules/fast-json-stable-stringify": { 226 | "version": "2.1.0", 227 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 228 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 229 | }, 230 | "node_modules/follow-redirects": { 231 | "version": "1.15.2", 232 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 233 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 234 | "funding": [ 235 | { 236 | "type": "individual", 237 | "url": "https://github.com/sponsors/RubenVerborgh" 238 | } 239 | ], 240 | "engines": { 241 | "node": ">=4.0" 242 | }, 243 | "peerDependenciesMeta": { 244 | "debug": { 245 | "optional": true 246 | } 247 | } 248 | }, 249 | "node_modules/ieee754": { 250 | "version": "1.2.1", 251 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 252 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 253 | "funding": [ 254 | { 255 | "type": "github", 256 | "url": "https://github.com/sponsors/feross" 257 | }, 258 | { 259 | "type": "patreon", 260 | "url": "https://www.patreon.com/feross" 261 | }, 262 | { 263 | "type": "consulting", 264 | "url": "https://feross.org/support" 265 | } 266 | ] 267 | }, 268 | "node_modules/inherits": { 269 | "version": "2.0.4", 270 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 271 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 272 | }, 273 | "node_modules/jose": { 274 | "version": "4.11.1", 275 | "resolved": "https://registry.npmjs.org/jose/-/jose-4.11.1.tgz", 276 | "integrity": "sha512-YRv4Tk/Wlug8qicwqFNFVEZSdbROCHRAC6qu/i0dyNKr5JQdoa2pIGoS04lLO/jXQX7Z9omoNewYIVIxqZBd9Q==", 277 | "funding": { 278 | "url": "https://github.com/sponsors/panva" 279 | } 280 | }, 281 | "node_modules/json-schema-traverse": { 282 | "version": "0.4.1", 283 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 284 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 285 | }, 286 | "node_modules/jsonwebtoken": { 287 | "version": "8.5.1", 288 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", 289 | "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", 290 | "dependencies": { 291 | "jws": "^3.2.2", 292 | "lodash.includes": "^4.3.0", 293 | "lodash.isboolean": "^3.0.3", 294 | "lodash.isinteger": "^4.0.4", 295 | "lodash.isnumber": "^3.0.3", 296 | "lodash.isplainobject": "^4.0.6", 297 | "lodash.isstring": "^4.0.1", 298 | "lodash.once": "^4.0.0", 299 | "ms": "^2.1.1", 300 | "semver": "^5.6.0" 301 | }, 302 | "engines": { 303 | "node": ">=4", 304 | "npm": ">=1.4.28" 305 | } 306 | }, 307 | "node_modules/jwa": { 308 | "version": "1.4.1", 309 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 310 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 311 | "dependencies": { 312 | "buffer-equal-constant-time": "1.0.1", 313 | "ecdsa-sig-formatter": "1.0.11", 314 | "safe-buffer": "^5.0.1" 315 | } 316 | }, 317 | "node_modules/jws": { 318 | "version": "3.2.2", 319 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 320 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 321 | "dependencies": { 322 | "jwa": "^1.4.1", 323 | "safe-buffer": "^5.0.1" 324 | } 325 | }, 326 | "node_modules/lodash.get": { 327 | "version": "4.4.2", 328 | "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", 329 | "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" 330 | }, 331 | "node_modules/lodash.includes": { 332 | "version": "4.3.0", 333 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 334 | "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" 335 | }, 336 | "node_modules/lodash.isboolean": { 337 | "version": "3.0.3", 338 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 339 | "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" 340 | }, 341 | "node_modules/lodash.isinteger": { 342 | "version": "4.0.4", 343 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 344 | "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" 345 | }, 346 | "node_modules/lodash.isnumber": { 347 | "version": "3.0.3", 348 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 349 | "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" 350 | }, 351 | "node_modules/lodash.isplainobject": { 352 | "version": "4.0.6", 353 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 354 | "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" 355 | }, 356 | "node_modules/lodash.isstring": { 357 | "version": "4.0.1", 358 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 359 | "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" 360 | }, 361 | "node_modules/lodash.merge": { 362 | "version": "4.6.2", 363 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 364 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" 365 | }, 366 | "node_modules/lodash.once": { 367 | "version": "4.1.1", 368 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 369 | "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" 370 | }, 371 | "node_modules/lodash.reduce": { 372 | "version": "4.6.0", 373 | "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", 374 | "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==" 375 | }, 376 | "node_modules/macaddress": { 377 | "version": "0.5.3", 378 | "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.5.3.tgz", 379 | "integrity": "sha512-vGBKTA+jwM4KgjGZ+S/8/Mkj9rWzePyGY6jManXPGhiWu63RYwW8dKPyk5koP+8qNVhPhHgFa1y/MJ4wrjsNrg==" 380 | }, 381 | "node_modules/minecraft-data": { 382 | "version": "3.18.0", 383 | "resolved": "https://registry.npmjs.org/minecraft-data/-/minecraft-data-3.18.0.tgz", 384 | "integrity": "sha512-jxtkk8/54mI+mCKXso7hcpjuBC2MkwUiBzzDEwWJTmXtK0gylx51iJg2Frg1jkkScPLhVCjOhx1i+A7G1EFZHg==" 385 | }, 386 | "node_modules/minecraft-folder-path": { 387 | "version": "1.2.0", 388 | "resolved": "https://registry.npmjs.org/minecraft-folder-path/-/minecraft-folder-path-1.2.0.tgz", 389 | "integrity": "sha512-qaUSbKWoOsH9brn0JQuBhxNAzTDMwrOXorwuRxdJKKKDYvZhtml+6GVCUrY5HRiEsieBEjCUnhVpDuQiKsiFaw==" 390 | }, 391 | "node_modules/minecraft-protocol": { 392 | "version": "1.36.1", 393 | "resolved": "https://registry.npmjs.org/minecraft-protocol/-/minecraft-protocol-1.36.1.tgz", 394 | "integrity": "sha512-ITJiWD8qdC+HtqBFw/OuTef53tQQIh3u9lcTjc9aC20ci14Y1mtrAd+PmaVF2k5RknHlPmlY40qiNualhzN54g==", 395 | "dependencies": { 396 | "@types/readable-stream": "^2.3.13", 397 | "aes-js": "^3.1.2", 398 | "buffer-equal": "^1.0.0", 399 | "debug": "^4.3.2", 400 | "endian-toggle": "^0.0.0", 401 | "lodash.get": "^4.1.2", 402 | "lodash.merge": "^4.3.0", 403 | "minecraft-data": "^3.8.0", 404 | "minecraft-folder-path": "^1.2.0", 405 | "node-fetch": "^2.6.1", 406 | "node-rsa": "^0.4.2", 407 | "prismarine-auth": "^1.7.0", 408 | "prismarine-nbt": "^2.0.0", 409 | "protodef": "^1.8.0", 410 | "readable-stream": "^4.1.0", 411 | "uuid-1345": "^1.0.1", 412 | "yggdrasil": "^1.4.0" 413 | }, 414 | "engines": { 415 | "node": ">=14" 416 | } 417 | }, 418 | "node_modules/mineflayer": { 419 | "version": "4.5.1", 420 | "resolved": "https://registry.npmjs.org/mineflayer/-/mineflayer-4.5.1.tgz", 421 | "integrity": "sha512-UBNGJ7pFdEP0COjOyZAAhFPS80vulipSZi+X+2HsP+RbY59R9xKAfU/f63LwAhG4So0mhU02aFMf3OZ+kZwdnw==", 422 | "dependencies": { 423 | "minecraft-data": "^3.15.2", 424 | "minecraft-protocol": "^1.36.0", 425 | "prismarine-biome": "^1.1.1", 426 | "prismarine-block": "^1.13.1", 427 | "prismarine-chat": "^1.7.1", 428 | "prismarine-chunk": "^1.32.0", 429 | "prismarine-entity": "^2.2.0", 430 | "prismarine-item": "^1.12.1", 431 | "prismarine-nbt": "^2.0.0", 432 | "prismarine-physics": "^1.3.1", 433 | "prismarine-recipe": "^1.3.0", 434 | "prismarine-registry": "^1.5.0", 435 | "prismarine-windows": "^2.5.0", 436 | "prismarine-world": "^3.6.0", 437 | "protodef": "^1.14.0", 438 | "typed-emitter": "^1.0.0", 439 | "vec3": "^0.1.7" 440 | }, 441 | "engines": { 442 | "node": ">=14" 443 | } 444 | }, 445 | "node_modules/mineflayer-pathfinder": { 446 | "version": "2.4.1", 447 | "resolved": "https://registry.npmjs.org/mineflayer-pathfinder/-/mineflayer-pathfinder-2.4.1.tgz", 448 | "integrity": "sha512-32UAPGMz4K2DcSFFrCMHOxhmeBtdiLRTxZCxreZkhhe75MSg0K9wIi5VAEXMcBxzAqkwf7Ldc/n1m43h8lJ55A==", 449 | "dependencies": { 450 | "minecraft-data": "^3.5.1", 451 | "prismarine-block": "^1.16.3", 452 | "prismarine-entity": "^2.1.1", 453 | "prismarine-item": "^1.11.5", 454 | "prismarine-nbt": "^2.2.1", 455 | "prismarine-physics": "^1.5.2", 456 | "vec3": "^0.1.7" 457 | } 458 | }, 459 | "node_modules/mineflayer-tool": { 460 | "version": "1.2.0", 461 | "resolved": "https://registry.npmjs.org/mineflayer-tool/-/mineflayer-tool-1.2.0.tgz", 462 | "integrity": "sha512-TRd7JOX4obJnzqzVi+4MLKmbeeCDjp9taerLKM8+AGpWfgtdbAguGmsr3BHu+TdXxOIT05veYecCv77S3KX6PA==", 463 | "dependencies": { 464 | "mineflayer": "^4.0.0", 465 | "mineflayer-pathfinder": "^2.1.1", 466 | "prismarine-nbt": "^2.0.0" 467 | } 468 | }, 469 | "node_modules/mojangson": { 470 | "version": "2.0.2", 471 | "resolved": "https://registry.npmjs.org/mojangson/-/mojangson-2.0.2.tgz", 472 | "integrity": "sha512-iGPRE1Ez+W+42Dt4Ao91c9VVs+FmuRUlAFDef76xRX3mbZrTNuezDtFI0PbfYqheg/B0fSiq0Q0V1emZNt37cw==", 473 | "dependencies": { 474 | "nearley": "^2.19.5" 475 | } 476 | }, 477 | "node_modules/moo": { 478 | "version": "0.5.2", 479 | "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", 480 | "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==" 481 | }, 482 | "node_modules/ms": { 483 | "version": "2.1.2", 484 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 485 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 486 | }, 487 | "node_modules/nearley": { 488 | "version": "2.20.1", 489 | "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", 490 | "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", 491 | "dependencies": { 492 | "commander": "^2.19.0", 493 | "moo": "^0.5.0", 494 | "railroad-diagrams": "^1.0.0", 495 | "randexp": "0.4.6" 496 | }, 497 | "bin": { 498 | "nearley-railroad": "bin/nearley-railroad.js", 499 | "nearley-test": "bin/nearley-test.js", 500 | "nearley-unparse": "bin/nearley-unparse.js", 501 | "nearleyc": "bin/nearleyc.js" 502 | }, 503 | "funding": { 504 | "type": "individual", 505 | "url": "https://nearley.js.org/#give-to-nearley" 506 | } 507 | }, 508 | "node_modules/node-fetch": { 509 | "version": "2.6.7", 510 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 511 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 512 | "dependencies": { 513 | "whatwg-url": "^5.0.0" 514 | }, 515 | "engines": { 516 | "node": "4.x || >=6.0.0" 517 | }, 518 | "peerDependencies": { 519 | "encoding": "^0.1.0" 520 | }, 521 | "peerDependenciesMeta": { 522 | "encoding": { 523 | "optional": true 524 | } 525 | } 526 | }, 527 | "node_modules/node-rsa": { 528 | "version": "0.4.2", 529 | "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-0.4.2.tgz", 530 | "integrity": "sha512-Bvso6Zi9LY4otIZefYrscsUpo2mUpiAVIEmSZV2q41sP8tHZoert3Yu6zv4f/RXJqMNZQKCtnhDugIuCma23YA==", 531 | "dependencies": { 532 | "asn1": "0.2.3" 533 | } 534 | }, 535 | "node_modules/prismarine-auth": { 536 | "version": "1.7.0", 537 | "resolved": "https://registry.npmjs.org/prismarine-auth/-/prismarine-auth-1.7.0.tgz", 538 | "integrity": "sha512-Feorw3LkKGDxafolD0f7KcuucOad8NceXEoIwYScxhOdld61CpKVh8aprA3IWnmd0Vj/KO+qK8VGpFSvdaaZzA==", 539 | "dependencies": { 540 | "@azure/msal-node": "^1.1.0", 541 | "@xboxreplay/xboxlive-auth": "^3.3.3", 542 | "debug": "^4.3.3", 543 | "jose": "^4.1.4", 544 | "node-fetch": "^2.6.1", 545 | "smart-buffer": "^4.1.0", 546 | "uuid-1345": "^1.0.2" 547 | } 548 | }, 549 | "node_modules/prismarine-biome": { 550 | "version": "1.3.0", 551 | "resolved": "https://registry.npmjs.org/prismarine-biome/-/prismarine-biome-1.3.0.tgz", 552 | "integrity": "sha512-GY6nZxq93mTErT7jD7jt8YS1aPrOakbJHh39seYsJFXvueIOdHAmW16kYQVrTVMW5MlWLQVxV/EquRwOgr4MnQ==", 553 | "peerDependencies": { 554 | "minecraft-data": "^3.0.0", 555 | "prismarine-registry": "^1.1.0" 556 | } 557 | }, 558 | "node_modules/prismarine-block": { 559 | "version": "1.16.3", 560 | "resolved": "https://registry.npmjs.org/prismarine-block/-/prismarine-block-1.16.3.tgz", 561 | "integrity": "sha512-E9OazjIqnEgcXM6me6EIeQFMcNRWZzsaftWtetRSIKVoW+4UKWleb6lTNKh9kq7wNxciKavcYBmKL3sF7HfSaA==", 562 | "dependencies": { 563 | "minecraft-data": "^3.0.0", 564 | "prismarine-biome": "^1.1.0", 565 | "prismarine-chat": "^1.5.0", 566 | "prismarine-item": "^1.10.1", 567 | "prismarine-nbt": "^2.0.0", 568 | "prismarine-registry": "^1.1.0" 569 | } 570 | }, 571 | "node_modules/prismarine-chat": { 572 | "version": "1.7.2", 573 | "resolved": "https://registry.npmjs.org/prismarine-chat/-/prismarine-chat-1.7.2.tgz", 574 | "integrity": "sha512-+m03T/MFhsXyLF2lH+MF5BPjqDvpeyX/T6v7l6rncVLahMVq/0knr7FPyrYHHzqIpSW8tx4iwhdfDcmwzMVBEQ==", 575 | "dependencies": { 576 | "mojangson": "^2.0.1", 577 | "prismarine-item": "^1.10.0", 578 | "prismarine-nbt": "^2.0.0", 579 | "prismarine-registry": "^1.4.0", 580 | "sprintf-js": "^1.1.2" 581 | } 582 | }, 583 | "node_modules/prismarine-chunk": { 584 | "version": "1.32.0", 585 | "resolved": "https://registry.npmjs.org/prismarine-chunk/-/prismarine-chunk-1.32.0.tgz", 586 | "integrity": "sha512-2Abh7M93BPbqRZEclmjIHC2RcETWN2/0zYsbPc5SgWXqe7u34kQaB2lv3YUS1xZ3vg9kdtR8mzElk8i84eX7PA==", 587 | "dependencies": { 588 | "minecraft-data": "^3.0.0", 589 | "prismarine-biome": "^1.2.0", 590 | "prismarine-block": "^1.14.1", 591 | "prismarine-registry": "^1.1.0", 592 | "smart-buffer": "^4.1.0", 593 | "uint4": "^0.1.2", 594 | "vec3": "^0.1.3", 595 | "xxhash-wasm": "^0.4.2" 596 | }, 597 | "engines": { 598 | "node": ">=14" 599 | } 600 | }, 601 | "node_modules/prismarine-entity": { 602 | "version": "2.2.0", 603 | "resolved": "https://registry.npmjs.org/prismarine-entity/-/prismarine-entity-2.2.0.tgz", 604 | "integrity": "sha512-boqJbMpGHG2ddFUUo9aKkKPUHQbFMWkUCw8SRdZ+jrZxABsstL9619I8ujwPYoOMJjMyfYWgdEPNyHGiUqqukA==", 605 | "dependencies": { 606 | "minecraft-data": "^3.0.0", 607 | "prismarine-chat": "^1.4.1", 608 | "prismarine-item": "^1.11.2", 609 | "prismarine-registry": "^1.4.0", 610 | "vec3": "^0.1.4" 611 | } 612 | }, 613 | "node_modules/prismarine-item": { 614 | "version": "1.12.1", 615 | "resolved": "https://registry.npmjs.org/prismarine-item/-/prismarine-item-1.12.1.tgz", 616 | "integrity": "sha512-Q+cV8WCM6gTO/K8gIpe4sTCVj0wdXy/IIctpQhgj4iRPoRY/rLCI88FAGsLNU1cabOFQDO3a0NIz+KLvhOvbQA==", 617 | "dependencies": { 618 | "prismarine-nbt": "^2.0.0", 619 | "prismarine-registry": "^1.4.0" 620 | } 621 | }, 622 | "node_modules/prismarine-nbt": { 623 | "version": "2.2.1", 624 | "resolved": "https://registry.npmjs.org/prismarine-nbt/-/prismarine-nbt-2.2.1.tgz", 625 | "integrity": "sha512-Mb50c58CPnuZ+qvM31DBa08tf9UumlTq1LkvpMoUpKfCuN05GZHTqCUwER3lxTSHLL0GZKghIPbYR/JQkINijQ==", 626 | "dependencies": { 627 | "protodef": "^1.9.0" 628 | } 629 | }, 630 | "node_modules/prismarine-physics": { 631 | "version": "1.5.2", 632 | "resolved": "https://registry.npmjs.org/prismarine-physics/-/prismarine-physics-1.5.2.tgz", 633 | "integrity": "sha512-Ak1yM/Fv9qxIt8Lgp/pHYS0v5P1bkZLq27Cb35Z/0YMCEUk0zXGfJOg0R666EQJOnAA1ABNZlRjglL9ZBMnWqg==", 634 | "dependencies": { 635 | "minecraft-data": "^3.0.0", 636 | "prismarine-nbt": "^2.0.0", 637 | "vec3": "^0.1.7" 638 | } 639 | }, 640 | "node_modules/prismarine-recipe": { 641 | "version": "1.3.0", 642 | "resolved": "https://registry.npmjs.org/prismarine-recipe/-/prismarine-recipe-1.3.0.tgz", 643 | "integrity": "sha512-1Omu4rZr1HXIGuT7BCdFq2REkrSvm7qGx+aGspLvsGHLqJCI26ZNjqOUQ2PL16TfdEBIPwE6v5JNGRGbvXA9gQ==", 644 | "peerDependencies": { 645 | "prismarine-registry": "^1.4.0" 646 | } 647 | }, 648 | "node_modules/prismarine-registry": { 649 | "version": "1.6.0", 650 | "resolved": "https://registry.npmjs.org/prismarine-registry/-/prismarine-registry-1.6.0.tgz", 651 | "integrity": "sha512-oduDRuwa5rXT8CkPeMSlBsuBzxZF9oRsDpFK0oBStpIoNwSuTqqGGGgLlyL20OS2O9pmqYpOMlmG80CW4uuKJw==", 652 | "dependencies": { 653 | "minecraft-data": "^3.0.0", 654 | "prismarine-nbt": "^2.0.0" 655 | } 656 | }, 657 | "node_modules/prismarine-windows": { 658 | "version": "2.6.1", 659 | "resolved": "https://registry.npmjs.org/prismarine-windows/-/prismarine-windows-2.6.1.tgz", 660 | "integrity": "sha512-5B8+W4Zb9MWaakd38I/WW564zEgat6bC23ftcv15yVYmHZTq8mtUfX2GsOUD3Pu/aFKarvXpyyJahFMUTUVoXg==", 661 | "dependencies": { 662 | "prismarine-item": "^1.5.0", 663 | "prismarine-registry": "^1.5.0", 664 | "typed-emitter": "^1.0.0" 665 | } 666 | }, 667 | "node_modules/prismarine-world": { 668 | "version": "3.6.1", 669 | "resolved": "https://registry.npmjs.org/prismarine-world/-/prismarine-world-3.6.1.tgz", 670 | "integrity": "sha512-sv7rR+vJ/ac3/dm4MoumreL4eqMi3B+h8I+JDYXQkNCdSJJISniQvi5qS4zTnAUCGXx/N6QfQ02bjBfyEoZuRw==", 671 | "dependencies": { 672 | "vec3": "^0.1.7" 673 | }, 674 | "engines": { 675 | "node": ">=8.0.0" 676 | } 677 | }, 678 | "node_modules/process": { 679 | "version": "0.11.10", 680 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 681 | "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", 682 | "engines": { 683 | "node": ">= 0.6.0" 684 | } 685 | }, 686 | "node_modules/protodef": { 687 | "version": "1.15.0", 688 | "resolved": "https://registry.npmjs.org/protodef/-/protodef-1.15.0.tgz", 689 | "integrity": "sha512-bZ2Omw8dT+DACjJHLrBWZlqN4MlT9g9oSpJDdkUAJOStUzgJp+Zn42FJfPUdwutUxjaxA0PftN0PDlNa2XbneA==", 690 | "dependencies": { 691 | "lodash.get": "^4.4.2", 692 | "lodash.reduce": "^4.6.0", 693 | "protodef-validator": "^1.3.0", 694 | "readable-stream": "^3.0.3" 695 | }, 696 | "engines": { 697 | "node": ">=14" 698 | } 699 | }, 700 | "node_modules/protodef-validator": { 701 | "version": "1.3.1", 702 | "resolved": "https://registry.npmjs.org/protodef-validator/-/protodef-validator-1.3.1.tgz", 703 | "integrity": "sha512-lZ5FWKZYR9xOjpMw1+EfZRfCjzNRQWPq+Dk+jki47Sikl2EeWEPnTfnJERwnU/EwFq6us+0zqHHzSsmLeYX+Lg==", 704 | "dependencies": { 705 | "ajv": "^6.5.4" 706 | }, 707 | "bin": { 708 | "protodef-validator": "cli.js" 709 | } 710 | }, 711 | "node_modules/protodef/node_modules/readable-stream": { 712 | "version": "3.6.0", 713 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 714 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 715 | "dependencies": { 716 | "inherits": "^2.0.3", 717 | "string_decoder": "^1.1.1", 718 | "util-deprecate": "^1.0.1" 719 | }, 720 | "engines": { 721 | "node": ">= 6" 722 | } 723 | }, 724 | "node_modules/punycode": { 725 | "version": "2.1.1", 726 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 727 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 728 | "engines": { 729 | "node": ">=6" 730 | } 731 | }, 732 | "node_modules/railroad-diagrams": { 733 | "version": "1.0.0", 734 | "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", 735 | "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==" 736 | }, 737 | "node_modules/randexp": { 738 | "version": "0.4.6", 739 | "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", 740 | "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", 741 | "dependencies": { 742 | "discontinuous-range": "1.0.0", 743 | "ret": "~0.1.10" 744 | }, 745 | "engines": { 746 | "node": ">=0.12" 747 | } 748 | }, 749 | "node_modules/readable-stream": { 750 | "version": "4.2.0", 751 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.2.0.tgz", 752 | "integrity": "sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==", 753 | "dependencies": { 754 | "abort-controller": "^3.0.0", 755 | "buffer": "^6.0.3", 756 | "events": "^3.3.0", 757 | "process": "^0.11.10" 758 | }, 759 | "engines": { 760 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 761 | } 762 | }, 763 | "node_modules/ret": { 764 | "version": "0.1.15", 765 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 766 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 767 | "engines": { 768 | "node": ">=0.12" 769 | } 770 | }, 771 | "node_modules/safe-buffer": { 772 | "version": "5.1.2", 773 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 774 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 775 | }, 776 | "node_modules/semver": { 777 | "version": "5.7.1", 778 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 779 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 780 | "bin": { 781 | "semver": "bin/semver" 782 | } 783 | }, 784 | "node_modules/smart-buffer": { 785 | "version": "4.2.0", 786 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", 787 | "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", 788 | "engines": { 789 | "node": ">= 6.0.0", 790 | "npm": ">= 3.0.0" 791 | } 792 | }, 793 | "node_modules/sprintf-js": { 794 | "version": "1.1.2", 795 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", 796 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" 797 | }, 798 | "node_modules/string_decoder": { 799 | "version": "1.3.0", 800 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 801 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 802 | "dependencies": { 803 | "safe-buffer": "~5.2.0" 804 | } 805 | }, 806 | "node_modules/string_decoder/node_modules/safe-buffer": { 807 | "version": "5.2.1", 808 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 809 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 810 | "funding": [ 811 | { 812 | "type": "github", 813 | "url": "https://github.com/sponsors/feross" 814 | }, 815 | { 816 | "type": "patreon", 817 | "url": "https://www.patreon.com/feross" 818 | }, 819 | { 820 | "type": "consulting", 821 | "url": "https://feross.org/support" 822 | } 823 | ] 824 | }, 825 | "node_modules/tr46": { 826 | "version": "0.0.3", 827 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 828 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 829 | }, 830 | "node_modules/typed-emitter": { 831 | "version": "1.4.0", 832 | "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-1.4.0.tgz", 833 | "integrity": "sha512-weBmoo3HhpKGgLBOYwe8EB31CzDFuaK7CCL+axXhUYhn4jo6DSkHnbefboCF5i4DQ2aMFe0C/FdTWcPdObgHyg==" 834 | }, 835 | "node_modules/uint4": { 836 | "version": "0.1.2", 837 | "resolved": "https://registry.npmjs.org/uint4/-/uint4-0.1.2.tgz", 838 | "integrity": "sha512-lhEx78gdTwFWG+mt6cWAZD/R6qrIj0TTBeH5xwyuDJyswLNlGe+KVlUPQ6+mx5Ld332pS0AMUTo9hIly7YsWxQ==" 839 | }, 840 | "node_modules/uri-js": { 841 | "version": "4.4.1", 842 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 843 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 844 | "dependencies": { 845 | "punycode": "^2.1.0" 846 | } 847 | }, 848 | "node_modules/util-deprecate": { 849 | "version": "1.0.2", 850 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 851 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 852 | }, 853 | "node_modules/uuid": { 854 | "version": "8.3.2", 855 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 856 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 857 | "bin": { 858 | "uuid": "dist/bin/uuid" 859 | } 860 | }, 861 | "node_modules/uuid-1345": { 862 | "version": "1.0.2", 863 | "resolved": "https://registry.npmjs.org/uuid-1345/-/uuid-1345-1.0.2.tgz", 864 | "integrity": "sha512-bA5zYZui+3nwAc0s3VdGQGBfbVsJLVX7Np7ch2aqcEWFi5lsAEcmO3+lx3djM1npgpZI8KY2FITZ2uYTnYUYyw==", 865 | "dependencies": { 866 | "macaddress": "^0.5.1" 867 | } 868 | }, 869 | "node_modules/vec3": { 870 | "version": "0.1.7", 871 | "resolved": "https://registry.npmjs.org/vec3/-/vec3-0.1.7.tgz", 872 | "integrity": "sha512-EZSeXBL+L3go2wWwtQQse4fEcNGIQjT14qvi4LYVj1ifZt/J5XZ1QZqkDuOVVH07YwTEIFbsAv3pzwUpF7x9Wg==" 873 | }, 874 | "node_modules/webidl-conversions": { 875 | "version": "3.0.1", 876 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 877 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 878 | }, 879 | "node_modules/whatwg-url": { 880 | "version": "5.0.0", 881 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 882 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 883 | "dependencies": { 884 | "tr46": "~0.0.3", 885 | "webidl-conversions": "^3.0.0" 886 | } 887 | }, 888 | "node_modules/xxhash-wasm": { 889 | "version": "0.4.2", 890 | "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", 891 | "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==" 892 | }, 893 | "node_modules/yggdrasil": { 894 | "version": "1.7.0", 895 | "resolved": "https://registry.npmjs.org/yggdrasil/-/yggdrasil-1.7.0.tgz", 896 | "integrity": "sha512-QBIo5fiNd7688G3FqXXYGr36uyrYzczlNuzpWFy2zL3+R+3KT2lF+wFxm51synfA3l3z6IBiGOc1/EVXWCYY1Q==", 897 | "dependencies": { 898 | "node-fetch": "^2.6.1", 899 | "uuid": "^8.2.0" 900 | } 901 | } 902 | }, 903 | "dependencies": { 904 | "@azure/msal-common": { 905 | "version": "9.0.0", 906 | "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.0.tgz", 907 | "integrity": "sha512-uiFiFKVNTsRpmKio5bcObTuHcaHHZB2GEsjJJN8rbJNmzoYuZzNioOoK+J0QK0jEasRBgAoR5A8hSty2iKRzIg==" 908 | }, 909 | "@azure/msal-node": { 910 | "version": "1.14.4", 911 | "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.4.tgz", 912 | "integrity": "sha512-j9GzZu5mTLWtuJ+cYN6e67UNymIS5OysblrOzH8lakt9XxH0GCPYjuqbOEKTP84r+Rbj3io+TuW1KS+0Xxuj/g==", 913 | "requires": { 914 | "@azure/msal-common": "^9.0.0", 915 | "jsonwebtoken": "^8.5.1", 916 | "uuid": "^8.3.0" 917 | } 918 | }, 919 | "@types/node": { 920 | "version": "18.11.9", 921 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", 922 | "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" 923 | }, 924 | "@types/readable-stream": { 925 | "version": "2.3.15", 926 | "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", 927 | "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", 928 | "requires": { 929 | "@types/node": "*", 930 | "safe-buffer": "~5.1.1" 931 | } 932 | }, 933 | "@xboxreplay/errors": { 934 | "version": "0.1.0", 935 | "resolved": "https://registry.npmjs.org/@xboxreplay/errors/-/errors-0.1.0.tgz", 936 | "integrity": "sha512-Tgz1d/OIPDWPeyOvuL5+aai5VCcqObhPnlI3skQuf80GVF3k1I0lPCnGC+8Cm5PV9aLBT5m8qPcJoIUQ2U4y9g==" 937 | }, 938 | "@xboxreplay/xboxlive-auth": { 939 | "version": "3.3.3", 940 | "resolved": "https://registry.npmjs.org/@xboxreplay/xboxlive-auth/-/xboxlive-auth-3.3.3.tgz", 941 | "integrity": "sha512-j0AU8pW10LM8O68CTZ5QHnvOjSsnPICy0oQcP7zyM7eWkDQ/InkiQiirQKsPn1XRYDl4ccNu0WM582s3UKwcBg==", 942 | "requires": { 943 | "@xboxreplay/errors": "^0.1.0", 944 | "axios": "^0.21.1" 945 | } 946 | }, 947 | "abort-controller": { 948 | "version": "3.0.0", 949 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 950 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 951 | "requires": { 952 | "event-target-shim": "^5.0.0" 953 | } 954 | }, 955 | "aes-js": { 956 | "version": "3.1.2", 957 | "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", 958 | "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" 959 | }, 960 | "ajv": { 961 | "version": "6.12.6", 962 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 963 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 964 | "requires": { 965 | "fast-deep-equal": "^3.1.1", 966 | "fast-json-stable-stringify": "^2.0.0", 967 | "json-schema-traverse": "^0.4.1", 968 | "uri-js": "^4.2.2" 969 | } 970 | }, 971 | "asn1": { 972 | "version": "0.2.3", 973 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", 974 | "integrity": "sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w==" 975 | }, 976 | "axios": { 977 | "version": "0.21.4", 978 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", 979 | "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", 980 | "requires": { 981 | "follow-redirects": "^1.14.0" 982 | } 983 | }, 984 | "base64-js": { 985 | "version": "1.5.1", 986 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 987 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 988 | }, 989 | "buffer": { 990 | "version": "6.0.3", 991 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 992 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 993 | "requires": { 994 | "base64-js": "^1.3.1", 995 | "ieee754": "^1.2.1" 996 | } 997 | }, 998 | "buffer-equal": { 999 | "version": "1.0.1", 1000 | "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", 1001 | "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==" 1002 | }, 1003 | "buffer-equal-constant-time": { 1004 | "version": "1.0.1", 1005 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 1006 | "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" 1007 | }, 1008 | "commander": { 1009 | "version": "2.20.3", 1010 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1011 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 1012 | }, 1013 | "debug": { 1014 | "version": "4.3.4", 1015 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1016 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1017 | "requires": { 1018 | "ms": "2.1.2" 1019 | } 1020 | }, 1021 | "discontinuous-range": { 1022 | "version": "1.0.0", 1023 | "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", 1024 | "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==" 1025 | }, 1026 | "ecdsa-sig-formatter": { 1027 | "version": "1.0.11", 1028 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 1029 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 1030 | "requires": { 1031 | "safe-buffer": "^5.0.1" 1032 | } 1033 | }, 1034 | "endian-toggle": { 1035 | "version": "0.0.0", 1036 | "resolved": "https://registry.npmjs.org/endian-toggle/-/endian-toggle-0.0.0.tgz", 1037 | "integrity": "sha512-ShfqhXeHRE4TmggSlHXG8CMGIcsOsqDw/GcoPcosToE59Rm9e4aXaMhEQf2kPBsBRrKem1bbOAv5gOKnkliMFQ==" 1038 | }, 1039 | "event-target-shim": { 1040 | "version": "5.0.1", 1041 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 1042 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" 1043 | }, 1044 | "events": { 1045 | "version": "3.3.0", 1046 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 1047 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" 1048 | }, 1049 | "fast-deep-equal": { 1050 | "version": "3.1.3", 1051 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1052 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 1053 | }, 1054 | "fast-json-stable-stringify": { 1055 | "version": "2.1.0", 1056 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1057 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 1058 | }, 1059 | "follow-redirects": { 1060 | "version": "1.15.2", 1061 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 1062 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" 1063 | }, 1064 | "ieee754": { 1065 | "version": "1.2.1", 1066 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1067 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 1068 | }, 1069 | "inherits": { 1070 | "version": "2.0.4", 1071 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1072 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1073 | }, 1074 | "jose": { 1075 | "version": "4.11.1", 1076 | "resolved": "https://registry.npmjs.org/jose/-/jose-4.11.1.tgz", 1077 | "integrity": "sha512-YRv4Tk/Wlug8qicwqFNFVEZSdbROCHRAC6qu/i0dyNKr5JQdoa2pIGoS04lLO/jXQX7Z9omoNewYIVIxqZBd9Q==" 1078 | }, 1079 | "json-schema-traverse": { 1080 | "version": "0.4.1", 1081 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1082 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 1083 | }, 1084 | "jsonwebtoken": { 1085 | "version": "8.5.1", 1086 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", 1087 | "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", 1088 | "requires": { 1089 | "jws": "^3.2.2", 1090 | "lodash.includes": "^4.3.0", 1091 | "lodash.isboolean": "^3.0.3", 1092 | "lodash.isinteger": "^4.0.4", 1093 | "lodash.isnumber": "^3.0.3", 1094 | "lodash.isplainobject": "^4.0.6", 1095 | "lodash.isstring": "^4.0.1", 1096 | "lodash.once": "^4.0.0", 1097 | "ms": "^2.1.1", 1098 | "semver": "^5.6.0" 1099 | } 1100 | }, 1101 | "jwa": { 1102 | "version": "1.4.1", 1103 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 1104 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 1105 | "requires": { 1106 | "buffer-equal-constant-time": "1.0.1", 1107 | "ecdsa-sig-formatter": "1.0.11", 1108 | "safe-buffer": "^5.0.1" 1109 | } 1110 | }, 1111 | "jws": { 1112 | "version": "3.2.2", 1113 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 1114 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 1115 | "requires": { 1116 | "jwa": "^1.4.1", 1117 | "safe-buffer": "^5.0.1" 1118 | } 1119 | }, 1120 | "lodash.get": { 1121 | "version": "4.4.2", 1122 | "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", 1123 | "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" 1124 | }, 1125 | "lodash.includes": { 1126 | "version": "4.3.0", 1127 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 1128 | "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" 1129 | }, 1130 | "lodash.isboolean": { 1131 | "version": "3.0.3", 1132 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 1133 | "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" 1134 | }, 1135 | "lodash.isinteger": { 1136 | "version": "4.0.4", 1137 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 1138 | "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" 1139 | }, 1140 | "lodash.isnumber": { 1141 | "version": "3.0.3", 1142 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 1143 | "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" 1144 | }, 1145 | "lodash.isplainobject": { 1146 | "version": "4.0.6", 1147 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 1148 | "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" 1149 | }, 1150 | "lodash.isstring": { 1151 | "version": "4.0.1", 1152 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 1153 | "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" 1154 | }, 1155 | "lodash.merge": { 1156 | "version": "4.6.2", 1157 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1158 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" 1159 | }, 1160 | "lodash.once": { 1161 | "version": "4.1.1", 1162 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 1163 | "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" 1164 | }, 1165 | "lodash.reduce": { 1166 | "version": "4.6.0", 1167 | "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", 1168 | "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==" 1169 | }, 1170 | "macaddress": { 1171 | "version": "0.5.3", 1172 | "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.5.3.tgz", 1173 | "integrity": "sha512-vGBKTA+jwM4KgjGZ+S/8/Mkj9rWzePyGY6jManXPGhiWu63RYwW8dKPyk5koP+8qNVhPhHgFa1y/MJ4wrjsNrg==" 1174 | }, 1175 | "minecraft-data": { 1176 | "version": "3.18.0", 1177 | "resolved": "https://registry.npmjs.org/minecraft-data/-/minecraft-data-3.18.0.tgz", 1178 | "integrity": "sha512-jxtkk8/54mI+mCKXso7hcpjuBC2MkwUiBzzDEwWJTmXtK0gylx51iJg2Frg1jkkScPLhVCjOhx1i+A7G1EFZHg==" 1179 | }, 1180 | "minecraft-folder-path": { 1181 | "version": "1.2.0", 1182 | "resolved": "https://registry.npmjs.org/minecraft-folder-path/-/minecraft-folder-path-1.2.0.tgz", 1183 | "integrity": "sha512-qaUSbKWoOsH9brn0JQuBhxNAzTDMwrOXorwuRxdJKKKDYvZhtml+6GVCUrY5HRiEsieBEjCUnhVpDuQiKsiFaw==" 1184 | }, 1185 | "minecraft-protocol": { 1186 | "version": "1.36.1", 1187 | "resolved": "https://registry.npmjs.org/minecraft-protocol/-/minecraft-protocol-1.36.1.tgz", 1188 | "integrity": "sha512-ITJiWD8qdC+HtqBFw/OuTef53tQQIh3u9lcTjc9aC20ci14Y1mtrAd+PmaVF2k5RknHlPmlY40qiNualhzN54g==", 1189 | "requires": { 1190 | "@types/readable-stream": "^2.3.13", 1191 | "aes-js": "^3.1.2", 1192 | "buffer-equal": "^1.0.0", 1193 | "debug": "^4.3.2", 1194 | "endian-toggle": "^0.0.0", 1195 | "lodash.get": "^4.1.2", 1196 | "lodash.merge": "^4.3.0", 1197 | "minecraft-data": "^3.8.0", 1198 | "minecraft-folder-path": "^1.2.0", 1199 | "node-fetch": "^2.6.1", 1200 | "node-rsa": "^0.4.2", 1201 | "prismarine-auth": "^1.7.0", 1202 | "prismarine-nbt": "^2.0.0", 1203 | "protodef": "^1.8.0", 1204 | "readable-stream": "^4.1.0", 1205 | "uuid-1345": "^1.0.1", 1206 | "yggdrasil": "^1.4.0" 1207 | } 1208 | }, 1209 | "mineflayer": { 1210 | "version": "4.5.1", 1211 | "resolved": "https://registry.npmjs.org/mineflayer/-/mineflayer-4.5.1.tgz", 1212 | "integrity": "sha512-UBNGJ7pFdEP0COjOyZAAhFPS80vulipSZi+X+2HsP+RbY59R9xKAfU/f63LwAhG4So0mhU02aFMf3OZ+kZwdnw==", 1213 | "requires": { 1214 | "minecraft-data": "^3.15.2", 1215 | "minecraft-protocol": "^1.36.0", 1216 | "prismarine-biome": "^1.1.1", 1217 | "prismarine-block": "^1.13.1", 1218 | "prismarine-chat": "^1.7.1", 1219 | "prismarine-chunk": "^1.32.0", 1220 | "prismarine-entity": "^2.2.0", 1221 | "prismarine-item": "^1.12.1", 1222 | "prismarine-nbt": "^2.0.0", 1223 | "prismarine-physics": "^1.3.1", 1224 | "prismarine-recipe": "^1.3.0", 1225 | "prismarine-registry": "^1.5.0", 1226 | "prismarine-windows": "^2.5.0", 1227 | "prismarine-world": "^3.6.0", 1228 | "protodef": "^1.14.0", 1229 | "typed-emitter": "^1.0.0", 1230 | "vec3": "^0.1.7" 1231 | } 1232 | }, 1233 | "mineflayer-pathfinder": { 1234 | "version": "2.4.1", 1235 | "resolved": "https://registry.npmjs.org/mineflayer-pathfinder/-/mineflayer-pathfinder-2.4.1.tgz", 1236 | "integrity": "sha512-32UAPGMz4K2DcSFFrCMHOxhmeBtdiLRTxZCxreZkhhe75MSg0K9wIi5VAEXMcBxzAqkwf7Ldc/n1m43h8lJ55A==", 1237 | "requires": { 1238 | "minecraft-data": "^3.5.1", 1239 | "prismarine-block": "^1.16.3", 1240 | "prismarine-entity": "^2.1.1", 1241 | "prismarine-item": "^1.11.5", 1242 | "prismarine-nbt": "^2.2.1", 1243 | "prismarine-physics": "^1.5.2", 1244 | "vec3": "^0.1.7" 1245 | } 1246 | }, 1247 | "mineflayer-tool": { 1248 | "version": "1.2.0", 1249 | "resolved": "https://registry.npmjs.org/mineflayer-tool/-/mineflayer-tool-1.2.0.tgz", 1250 | "integrity": "sha512-TRd7JOX4obJnzqzVi+4MLKmbeeCDjp9taerLKM8+AGpWfgtdbAguGmsr3BHu+TdXxOIT05veYecCv77S3KX6PA==", 1251 | "requires": { 1252 | "mineflayer": "^4.0.0", 1253 | "mineflayer-pathfinder": "^2.1.1", 1254 | "prismarine-nbt": "^2.0.0" 1255 | } 1256 | }, 1257 | "mojangson": { 1258 | "version": "2.0.2", 1259 | "resolved": "https://registry.npmjs.org/mojangson/-/mojangson-2.0.2.tgz", 1260 | "integrity": "sha512-iGPRE1Ez+W+42Dt4Ao91c9VVs+FmuRUlAFDef76xRX3mbZrTNuezDtFI0PbfYqheg/B0fSiq0Q0V1emZNt37cw==", 1261 | "requires": { 1262 | "nearley": "^2.19.5" 1263 | } 1264 | }, 1265 | "moo": { 1266 | "version": "0.5.2", 1267 | "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", 1268 | "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==" 1269 | }, 1270 | "ms": { 1271 | "version": "2.1.2", 1272 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1273 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1274 | }, 1275 | "nearley": { 1276 | "version": "2.20.1", 1277 | "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", 1278 | "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", 1279 | "requires": { 1280 | "commander": "^2.19.0", 1281 | "moo": "^0.5.0", 1282 | "railroad-diagrams": "^1.0.0", 1283 | "randexp": "0.4.6" 1284 | } 1285 | }, 1286 | "node-fetch": { 1287 | "version": "2.6.7", 1288 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 1289 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 1290 | "requires": { 1291 | "whatwg-url": "^5.0.0" 1292 | } 1293 | }, 1294 | "node-rsa": { 1295 | "version": "0.4.2", 1296 | "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-0.4.2.tgz", 1297 | "integrity": "sha512-Bvso6Zi9LY4otIZefYrscsUpo2mUpiAVIEmSZV2q41sP8tHZoert3Yu6zv4f/RXJqMNZQKCtnhDugIuCma23YA==", 1298 | "requires": { 1299 | "asn1": "0.2.3" 1300 | } 1301 | }, 1302 | "prismarine-auth": { 1303 | "version": "1.7.0", 1304 | "resolved": "https://registry.npmjs.org/prismarine-auth/-/prismarine-auth-1.7.0.tgz", 1305 | "integrity": "sha512-Feorw3LkKGDxafolD0f7KcuucOad8NceXEoIwYScxhOdld61CpKVh8aprA3IWnmd0Vj/KO+qK8VGpFSvdaaZzA==", 1306 | "requires": { 1307 | "@azure/msal-node": "^1.1.0", 1308 | "@xboxreplay/xboxlive-auth": "^3.3.3", 1309 | "debug": "^4.3.3", 1310 | "jose": "^4.1.4", 1311 | "node-fetch": "^2.6.1", 1312 | "smart-buffer": "^4.1.0", 1313 | "uuid-1345": "^1.0.2" 1314 | } 1315 | }, 1316 | "prismarine-biome": { 1317 | "version": "1.3.0", 1318 | "resolved": "https://registry.npmjs.org/prismarine-biome/-/prismarine-biome-1.3.0.tgz", 1319 | "integrity": "sha512-GY6nZxq93mTErT7jD7jt8YS1aPrOakbJHh39seYsJFXvueIOdHAmW16kYQVrTVMW5MlWLQVxV/EquRwOgr4MnQ==", 1320 | "requires": {} 1321 | }, 1322 | "prismarine-block": { 1323 | "version": "1.16.3", 1324 | "resolved": "https://registry.npmjs.org/prismarine-block/-/prismarine-block-1.16.3.tgz", 1325 | "integrity": "sha512-E9OazjIqnEgcXM6me6EIeQFMcNRWZzsaftWtetRSIKVoW+4UKWleb6lTNKh9kq7wNxciKavcYBmKL3sF7HfSaA==", 1326 | "requires": { 1327 | "minecraft-data": "^3.0.0", 1328 | "prismarine-biome": "^1.1.0", 1329 | "prismarine-chat": "^1.5.0", 1330 | "prismarine-item": "^1.10.1", 1331 | "prismarine-nbt": "^2.0.0", 1332 | "prismarine-registry": "^1.1.0" 1333 | } 1334 | }, 1335 | "prismarine-chat": { 1336 | "version": "1.7.2", 1337 | "resolved": "https://registry.npmjs.org/prismarine-chat/-/prismarine-chat-1.7.2.tgz", 1338 | "integrity": "sha512-+m03T/MFhsXyLF2lH+MF5BPjqDvpeyX/T6v7l6rncVLahMVq/0knr7FPyrYHHzqIpSW8tx4iwhdfDcmwzMVBEQ==", 1339 | "requires": { 1340 | "mojangson": "^2.0.1", 1341 | "prismarine-item": "^1.10.0", 1342 | "prismarine-nbt": "^2.0.0", 1343 | "prismarine-registry": "^1.4.0", 1344 | "sprintf-js": "^1.1.2" 1345 | } 1346 | }, 1347 | "prismarine-chunk": { 1348 | "version": "1.32.0", 1349 | "resolved": "https://registry.npmjs.org/prismarine-chunk/-/prismarine-chunk-1.32.0.tgz", 1350 | "integrity": "sha512-2Abh7M93BPbqRZEclmjIHC2RcETWN2/0zYsbPc5SgWXqe7u34kQaB2lv3YUS1xZ3vg9kdtR8mzElk8i84eX7PA==", 1351 | "requires": { 1352 | "minecraft-data": "^3.0.0", 1353 | "prismarine-biome": "^1.2.0", 1354 | "prismarine-block": "^1.14.1", 1355 | "prismarine-registry": "^1.1.0", 1356 | "smart-buffer": "^4.1.0", 1357 | "uint4": "^0.1.2", 1358 | "vec3": "^0.1.3", 1359 | "xxhash-wasm": "^0.4.2" 1360 | } 1361 | }, 1362 | "prismarine-entity": { 1363 | "version": "2.2.0", 1364 | "resolved": "https://registry.npmjs.org/prismarine-entity/-/prismarine-entity-2.2.0.tgz", 1365 | "integrity": "sha512-boqJbMpGHG2ddFUUo9aKkKPUHQbFMWkUCw8SRdZ+jrZxABsstL9619I8ujwPYoOMJjMyfYWgdEPNyHGiUqqukA==", 1366 | "requires": { 1367 | "minecraft-data": "^3.0.0", 1368 | "prismarine-chat": "^1.4.1", 1369 | "prismarine-item": "^1.11.2", 1370 | "prismarine-registry": "^1.4.0", 1371 | "vec3": "^0.1.4" 1372 | } 1373 | }, 1374 | "prismarine-item": { 1375 | "version": "1.12.1", 1376 | "resolved": "https://registry.npmjs.org/prismarine-item/-/prismarine-item-1.12.1.tgz", 1377 | "integrity": "sha512-Q+cV8WCM6gTO/K8gIpe4sTCVj0wdXy/IIctpQhgj4iRPoRY/rLCI88FAGsLNU1cabOFQDO3a0NIz+KLvhOvbQA==", 1378 | "requires": { 1379 | "prismarine-nbt": "^2.0.0", 1380 | "prismarine-registry": "^1.4.0" 1381 | } 1382 | }, 1383 | "prismarine-nbt": { 1384 | "version": "2.2.1", 1385 | "resolved": "https://registry.npmjs.org/prismarine-nbt/-/prismarine-nbt-2.2.1.tgz", 1386 | "integrity": "sha512-Mb50c58CPnuZ+qvM31DBa08tf9UumlTq1LkvpMoUpKfCuN05GZHTqCUwER3lxTSHLL0GZKghIPbYR/JQkINijQ==", 1387 | "requires": { 1388 | "protodef": "^1.9.0" 1389 | } 1390 | }, 1391 | "prismarine-physics": { 1392 | "version": "1.5.2", 1393 | "resolved": "https://registry.npmjs.org/prismarine-physics/-/prismarine-physics-1.5.2.tgz", 1394 | "integrity": "sha512-Ak1yM/Fv9qxIt8Lgp/pHYS0v5P1bkZLq27Cb35Z/0YMCEUk0zXGfJOg0R666EQJOnAA1ABNZlRjglL9ZBMnWqg==", 1395 | "requires": { 1396 | "minecraft-data": "^3.0.0", 1397 | "prismarine-nbt": "^2.0.0", 1398 | "vec3": "^0.1.7" 1399 | } 1400 | }, 1401 | "prismarine-recipe": { 1402 | "version": "1.3.0", 1403 | "resolved": "https://registry.npmjs.org/prismarine-recipe/-/prismarine-recipe-1.3.0.tgz", 1404 | "integrity": "sha512-1Omu4rZr1HXIGuT7BCdFq2REkrSvm7qGx+aGspLvsGHLqJCI26ZNjqOUQ2PL16TfdEBIPwE6v5JNGRGbvXA9gQ==", 1405 | "requires": {} 1406 | }, 1407 | "prismarine-registry": { 1408 | "version": "1.6.0", 1409 | "resolved": "https://registry.npmjs.org/prismarine-registry/-/prismarine-registry-1.6.0.tgz", 1410 | "integrity": "sha512-oduDRuwa5rXT8CkPeMSlBsuBzxZF9oRsDpFK0oBStpIoNwSuTqqGGGgLlyL20OS2O9pmqYpOMlmG80CW4uuKJw==", 1411 | "requires": { 1412 | "minecraft-data": "^3.0.0", 1413 | "prismarine-nbt": "^2.0.0" 1414 | } 1415 | }, 1416 | "prismarine-windows": { 1417 | "version": "2.6.1", 1418 | "resolved": "https://registry.npmjs.org/prismarine-windows/-/prismarine-windows-2.6.1.tgz", 1419 | "integrity": "sha512-5B8+W4Zb9MWaakd38I/WW564zEgat6bC23ftcv15yVYmHZTq8mtUfX2GsOUD3Pu/aFKarvXpyyJahFMUTUVoXg==", 1420 | "requires": { 1421 | "prismarine-item": "^1.5.0", 1422 | "prismarine-registry": "^1.5.0", 1423 | "typed-emitter": "^1.0.0" 1424 | } 1425 | }, 1426 | "prismarine-world": { 1427 | "version": "3.6.1", 1428 | "resolved": "https://registry.npmjs.org/prismarine-world/-/prismarine-world-3.6.1.tgz", 1429 | "integrity": "sha512-sv7rR+vJ/ac3/dm4MoumreL4eqMi3B+h8I+JDYXQkNCdSJJISniQvi5qS4zTnAUCGXx/N6QfQ02bjBfyEoZuRw==", 1430 | "requires": { 1431 | "vec3": "^0.1.7" 1432 | } 1433 | }, 1434 | "process": { 1435 | "version": "0.11.10", 1436 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 1437 | "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" 1438 | }, 1439 | "protodef": { 1440 | "version": "1.15.0", 1441 | "resolved": "https://registry.npmjs.org/protodef/-/protodef-1.15.0.tgz", 1442 | "integrity": "sha512-bZ2Omw8dT+DACjJHLrBWZlqN4MlT9g9oSpJDdkUAJOStUzgJp+Zn42FJfPUdwutUxjaxA0PftN0PDlNa2XbneA==", 1443 | "requires": { 1444 | "lodash.get": "^4.4.2", 1445 | "lodash.reduce": "^4.6.0", 1446 | "protodef-validator": "^1.3.0", 1447 | "readable-stream": "^3.0.3" 1448 | }, 1449 | "dependencies": { 1450 | "readable-stream": { 1451 | "version": "3.6.0", 1452 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1453 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1454 | "requires": { 1455 | "inherits": "^2.0.3", 1456 | "string_decoder": "^1.1.1", 1457 | "util-deprecate": "^1.0.1" 1458 | } 1459 | } 1460 | } 1461 | }, 1462 | "protodef-validator": { 1463 | "version": "1.3.1", 1464 | "resolved": "https://registry.npmjs.org/protodef-validator/-/protodef-validator-1.3.1.tgz", 1465 | "integrity": "sha512-lZ5FWKZYR9xOjpMw1+EfZRfCjzNRQWPq+Dk+jki47Sikl2EeWEPnTfnJERwnU/EwFq6us+0zqHHzSsmLeYX+Lg==", 1466 | "requires": { 1467 | "ajv": "^6.5.4" 1468 | } 1469 | }, 1470 | "punycode": { 1471 | "version": "2.1.1", 1472 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1473 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 1474 | }, 1475 | "railroad-diagrams": { 1476 | "version": "1.0.0", 1477 | "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", 1478 | "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==" 1479 | }, 1480 | "randexp": { 1481 | "version": "0.4.6", 1482 | "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", 1483 | "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", 1484 | "requires": { 1485 | "discontinuous-range": "1.0.0", 1486 | "ret": "~0.1.10" 1487 | } 1488 | }, 1489 | "readable-stream": { 1490 | "version": "4.2.0", 1491 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.2.0.tgz", 1492 | "integrity": "sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==", 1493 | "requires": { 1494 | "abort-controller": "^3.0.0", 1495 | "buffer": "^6.0.3", 1496 | "events": "^3.3.0", 1497 | "process": "^0.11.10" 1498 | } 1499 | }, 1500 | "ret": { 1501 | "version": "0.1.15", 1502 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 1503 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" 1504 | }, 1505 | "safe-buffer": { 1506 | "version": "5.1.2", 1507 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1508 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1509 | }, 1510 | "semver": { 1511 | "version": "5.7.1", 1512 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1513 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1514 | }, 1515 | "smart-buffer": { 1516 | "version": "4.2.0", 1517 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", 1518 | "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" 1519 | }, 1520 | "sprintf-js": { 1521 | "version": "1.1.2", 1522 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", 1523 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" 1524 | }, 1525 | "string_decoder": { 1526 | "version": "1.3.0", 1527 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1528 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1529 | "requires": { 1530 | "safe-buffer": "~5.2.0" 1531 | }, 1532 | "dependencies": { 1533 | "safe-buffer": { 1534 | "version": "5.2.1", 1535 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1536 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1537 | } 1538 | } 1539 | }, 1540 | "tr46": { 1541 | "version": "0.0.3", 1542 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1543 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 1544 | }, 1545 | "typed-emitter": { 1546 | "version": "1.4.0", 1547 | "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-1.4.0.tgz", 1548 | "integrity": "sha512-weBmoo3HhpKGgLBOYwe8EB31CzDFuaK7CCL+axXhUYhn4jo6DSkHnbefboCF5i4DQ2aMFe0C/FdTWcPdObgHyg==" 1549 | }, 1550 | "uint4": { 1551 | "version": "0.1.2", 1552 | "resolved": "https://registry.npmjs.org/uint4/-/uint4-0.1.2.tgz", 1553 | "integrity": "sha512-lhEx78gdTwFWG+mt6cWAZD/R6qrIj0TTBeH5xwyuDJyswLNlGe+KVlUPQ6+mx5Ld332pS0AMUTo9hIly7YsWxQ==" 1554 | }, 1555 | "uri-js": { 1556 | "version": "4.4.1", 1557 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1558 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1559 | "requires": { 1560 | "punycode": "^2.1.0" 1561 | } 1562 | }, 1563 | "util-deprecate": { 1564 | "version": "1.0.2", 1565 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1566 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 1567 | }, 1568 | "uuid": { 1569 | "version": "8.3.2", 1570 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 1571 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 1572 | }, 1573 | "uuid-1345": { 1574 | "version": "1.0.2", 1575 | "resolved": "https://registry.npmjs.org/uuid-1345/-/uuid-1345-1.0.2.tgz", 1576 | "integrity": "sha512-bA5zYZui+3nwAc0s3VdGQGBfbVsJLVX7Np7ch2aqcEWFi5lsAEcmO3+lx3djM1npgpZI8KY2FITZ2uYTnYUYyw==", 1577 | "requires": { 1578 | "macaddress": "^0.5.1" 1579 | } 1580 | }, 1581 | "vec3": { 1582 | "version": "0.1.7", 1583 | "resolved": "https://registry.npmjs.org/vec3/-/vec3-0.1.7.tgz", 1584 | "integrity": "sha512-EZSeXBL+L3go2wWwtQQse4fEcNGIQjT14qvi4LYVj1ifZt/J5XZ1QZqkDuOVVH07YwTEIFbsAv3pzwUpF7x9Wg==" 1585 | }, 1586 | "webidl-conversions": { 1587 | "version": "3.0.1", 1588 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1589 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 1590 | }, 1591 | "whatwg-url": { 1592 | "version": "5.0.0", 1593 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1594 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 1595 | "requires": { 1596 | "tr46": "~0.0.3", 1597 | "webidl-conversions": "^3.0.0" 1598 | } 1599 | }, 1600 | "xxhash-wasm": { 1601 | "version": "0.4.2", 1602 | "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", 1603 | "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==" 1604 | }, 1605 | "yggdrasil": { 1606 | "version": "1.7.0", 1607 | "resolved": "https://registry.npmjs.org/yggdrasil/-/yggdrasil-1.7.0.tgz", 1608 | "integrity": "sha512-QBIo5fiNd7688G3FqXXYGr36uyrYzczlNuzpWFy2zL3+R+3KT2lF+wFxm51synfA3l3z6IBiGOc1/EVXWCYY1Q==", 1609 | "requires": { 1610 | "node-fetch": "^2.6.1", 1611 | "uuid": "^8.2.0" 1612 | } 1613 | } 1614 | } 1615 | } 1616 | --------------------------------------------------------------------------------