This commit is contained in:
Andrew 2023-03-26 17:02:24 +07:00
commit 273aaf31ee
7 changed files with 1048 additions and 0 deletions

5
.dockerignore Normal file
View file

@ -0,0 +1,5 @@
node_modules
Dockerfile
.dockerignore
.git
.gitignore

145
.gitignore vendored Normal file
View file

@ -0,0 +1,145 @@
# Created by https://www.toptal.com/developers/gitignore/api/node
# Edit at https://www.toptal.com/developers/gitignore?templates=node
### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
### Node Patch ###
# Serverless Webpack directories
.webpack/
# Optional stylelint cache
# SvelteKit build / generate output
.svelte-kit
# End of https://www.toptal.com/developers/gitignore/api/node

14
Dockerfile Normal file
View file

@ -0,0 +1,14 @@
FROM node:16.13.2-alpine3.14
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
WORKDIR /home/node/app
COPY --chown=node:node . .
RUN corepack enable
RUN corepack prepare pnpm@6.28.0 --activate
RUN pnpm install
USER node
CMD [ "pnpm", "start" ]

10
config.js Normal file
View file

@ -0,0 +1,10 @@
export default class Config {
static mc = {
bot: {
host: "localhost",
port: 25565,
username: "__farmadon",
version: "1.18.1",
}
}
}

252
index.js Normal file
View file

@ -0,0 +1,252 @@
import Config from "./config.js";
import mcdataLib from "minecraft-data";
import { createBot } from "mineflayer";
import { pathfinder, Movements, default as mpf } from "mineflayer-pathfinder";
const { GoalBlock, GoalNear } = mpf.goals;
import Vec3 from "vec3";
const bot = createBot(Config.mc.bot);
const mcData = mcdataLib(bot.version);
let upperLeft = null;
let bottomRight = null;
bot.loadPlugin(pathfinder);
const defaultMove = new Movements(bot, mcData);
bot.pathfinder.setMovements(defaultMove);
bot.once("spawn", () => {
console.log("[MC] Bot spawned!");
});
bot.on('chat', (username, message) => {
if (username === bot.username) return;
const cmd = message.split(" ", 2)[0];
switch (cmd) {
case "!help":
bot.chat("Prefix: !; Commands: help, check, holding, field-set, field, till, sow, reap, stop");
break;
case "!check":
checkBlockUnder();
break;
case "!holding":
bot.chat(`holding ${bot.heldItem}`);
console.log("holding: %s", bot.heldItem);
break;
case "!field-set":
let parts = message.split(" ");
let [x1, y1, z1, x2, y2, z2] = parts.slice(1);
upperLeft = new Vec3(~~x1, ~~y1, ~~z1);
bottomRight = new Vec3(~~x2, ~~y2, ~~z2);
bot.chat(`Set field rect to ${upperLeft} til ${bottomRight}`);
break;
case "!field":
findFieldBorders();
break;
case "!till":
startTilling();
break;
case "!sow":
startSowing();
break;
case "!reap":
startReaping();
break;
case "!stop":
bot.pathfinder.stop();
break;
default:
break;
}
});
bot.on('kicked', console.log);
bot.on('error', console.log);
const gotoUntill = async (dx, dy, dz, predicateOnBlock) => {
try {
let ul = bot.entity.position.offset(dx, dy, dz);
let targetBlock = bot.blockAt(ul);
while (predicateOnBlock(targetBlock)) {
await bot.pathfinder.goto(new GoalBlock(ul.x, ul.y, ul.z));
ul = bot.entity.position.offset(dx, dy, dz);
targetBlock = bot.blockAt(ul);
}
} catch (e) {
bot.chat(`Shit happened! ${e}`);
console.error(e);
}
}
const checkBlockUnder = async () => {
let targetBlock = bot.blockAt(bot.entity.position.offset(0, -1, 0));
bot.chat(`Block under: ${targetBlock}`)
}
const findFieldBorders = async () => {
try {
await gotoUntill(1, 0, 0, block => block.name === "air"); // go left
await gotoUntill(0, 0, 1, block => block.name === "air"); // go up
upperLeft = bot.entity.position;
await gotoUntill(-1, 0, 0, block => block.name === "air"); // go right
await gotoUntill(0, 0, -1, block => block.name === "air"); // go down
bottomRight = bot.entity.position;
bot.chat(`Done, ${upperLeft} to ${bottomRight}`);
} catch (e) {
bot.chat(`Shit happened! ${e}`);
console.error(e);
}
}
const isSowable = (block) => {
const blockAbove = bot.blockAt(block.position.offset(0, 1, 0));
return !blockAbove || blockAbove.name === mcData.blocksByName.air.name;
}
const findDrops = (dropItemId) => {
return Object.values(bot.entities).filter(entity => {
return entity.name === "item" && entity.metadata.length >= 8 && entity.metadata[8].itemId == dropItemId
}).map(item => {
return item.position;
});
}
const startTilling = async () => {
if (!upperLeft || !bottomRight) {
bot.chat("I dont know about field rect!");
return;
}
const diamond_hoe_id = mcData.itemsByName.diamond_hoe.id;
await bot.equip(diamond_hoe_id, "hand");
if (bot.heldItem === null || bot.heldItem.type !== diamond_hoe_id) {
bot.chat("No hoe in my inventory :(");
return;
}
let uy = ~~bot.entity.position.y;
let lx = Math.floor(Math.min(upperLeft.x, bottomRight.x));
let hx = Math.floor(Math.max(upperLeft.x, bottomRight.x));
let lz = Math.floor(Math.min(upperLeft.z, bottomRight.z));
let hz = Math.floor(Math.max(upperLeft.z, bottomRight.z));
bot.chat("Started tilling the field");
try {
for (let desiredX = lx; desiredX <= hx; desiredX++) {
for (let desiredZ = lz; desiredZ <= hz; desiredZ++) {
await bot.pathfinder.goto(new GoalBlock(desiredX, uy, desiredZ));
let targetBlock = bot.blockAt(new Vec3(desiredX, uy - 1, desiredZ));
await bot.activateBlock(targetBlock);
}
}
} catch (e) {
bot.chat(`Shit happened! ${e}`);
console.error(e);
}
bot.chat("Done, tilled the field");
}
const startSowing = async () => {
if (!upperLeft || !bottomRight) {
bot.chat("I dont know about field rect!");
return;
}
const carrot_id = mcData.itemsByName.carrot.id;
await bot.equip(carrot_id, "hand");
if (bot.heldItem === null || bot.heldItem.type !== carrot_id) {
bot.chat("No carrot in my inventory :(");
return;
}
let uy = ~~bot.entity.position.y;
let lx = Math.floor(Math.min(upperLeft.x, bottomRight.x));
let hx = Math.floor(Math.max(upperLeft.x, bottomRight.x));
let lz = Math.floor(Math.min(upperLeft.z, bottomRight.z));
let hz = Math.floor(Math.max(upperLeft.z, bottomRight.z));
bot.chat("Started sowing the field");
try {
for (let desiredX = lx; desiredX <= hx; desiredX++) {
for (let desiredZ = lz; desiredZ <= hz; desiredZ++) {
await bot.pathfinder.goto(new GoalNear(desiredX, uy, desiredZ, 2));
let targetBlock = bot.blockAt(new Vec3(desiredX, uy, desiredZ));
if (isSowable(targetBlock)) {
await bot.placeBlock(targetBlock, new Vec3(0, 1, 0))
}
}
}
} catch (e) {
bot.chat(`Shit happened! ${e}`);
console.error(e);
}
bot.chat("Done, sowed the field");
}
const startReaping = async () => {
if (!upperLeft || !bottomRight) {
bot.chat("I dont know about field rect!");
return;
}
const carrot_id = mcData.itemsByName.carrot.id;
const carrot_block_id = mcData.blocksByName.carrots.id;
let uy = ~~bot.entity.position.y;
let lx = Math.floor(Math.min(upperLeft.x, bottomRight.x));
let hx = Math.floor(Math.max(upperLeft.x, bottomRight.x));
let lz = Math.floor(Math.min(upperLeft.z, bottomRight.z));
let hz = Math.floor(Math.max(upperLeft.z, bottomRight.z));
bot.chat("Started reaping the field");
try {
for (let desiredX = lx; desiredX <= hx; desiredX++) {
for (let desiredZ = lz; desiredZ <= hz; desiredZ++) {
await bot.pathfinder.goto(new GoalNear(desiredX, uy, desiredZ, 2));
let targetBlock = bot.blockAt(new Vec3(desiredX, uy + 1, desiredZ));
if (targetBlock.type === carrot_block_id && targetBlock.metadata === 7) {
await bot.dig(targetBlock);
try {
await bot.equip(carrot_id, "hand");
if (bot.heldItem === null || bot.heldItem.type !== carrot_id) {
bot.chat("No carrot in my inventory :(");
return;
}
await bot.placeBlock(bot.blockAt(targetBlock.position.offset(0, -1, 0)), new Vec3(0, 1, 0))
} catch (e) {
console.error(e);
}
}
}
}
} catch (e) {
bot.chat(`Shit happened! ${e}`);
console.error(e);
}
for (let pos of findDrops(mcData.itemsByName.carrot.id)) {
await bot.pathfinder.goto(new GoalNear(pos.x, pos.y, pos.z, 1));
await bot.waitForTicks(5);
}
bot.chat("Done, reaped the field");
}

20
package.json Normal file
View file

@ -0,0 +1,20 @@
{
"name": "mc_autobot",
"version": "1.0.0",
"description": "Minecraft bot for SibMC",
"private": true,
"main": "index.js",
"type": "module",
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "nuark",
"license": "MIT",
"dependencies": {
"minecraft-data": "^2.110.0",
"mineflayer": "^3.15.0",
"mineflayer-pathfinder": "^1.9.1",
"vec3": "^0.1.7"
}
}

602
pnpm-lock.yaml generated Normal file
View file

@ -0,0 +1,602 @@
lockfileVersion: 5.3
specifiers:
minecraft-data: ^2.110.0
mineflayer: ^3.15.0
mineflayer-pathfinder: ^1.9.1
vec3: ^0.1.7
dependencies:
minecraft-data: 2.110.0
mineflayer: 3.15.0
mineflayer-pathfinder: 1.9.1
vec3: 0.1.7
packages:
/@azure/msal-common/6.0.0:
resolution: {integrity: sha512-Vva3snqmWPHJNDCBb4lz3D0rvZsi/0QikAxHvVFNwtNg5pP4NZE4U34tNiXN+m9KhlQFrZBPkE5rk7dIEOGcWw==}
engines: {node: '>=0.8.0'}
dependencies:
debug: 4.3.3
transitivePeerDependencies:
- supports-color
dev: false
/@azure/msal-node/1.5.0_debug@4.3.3:
resolution: {integrity: sha512-FiCra/3ZyLXSQltoI9ndeN/lvXsPsFDsqVKgH7SWXVQjL3OpEXiqKkj0CB2UWGCk1U6bZGMJfkUZCXzhMQTObQ==}
engines: {node: 10 || 12 || 14 || 16}
dependencies:
'@azure/msal-common': 6.0.0
axios: 0.21.4_debug@4.3.3
jsonwebtoken: 8.5.1
uuid: 8.3.2
transitivePeerDependencies:
- debug
- supports-color
dev: false
/@xboxreplay/errors/0.1.0:
resolution: {integrity: sha512-Tgz1d/OIPDWPeyOvuL5+aai5VCcqObhPnlI3skQuf80GVF3k1I0lPCnGC+8Cm5PV9aLBT5m8qPcJoIUQ2U4y9g==}
dev: false
/@xboxreplay/xboxlive-auth/3.3.3_debug@4.3.3:
resolution: {integrity: sha512-j0AU8pW10LM8O68CTZ5QHnvOjSsnPICy0oQcP7zyM7eWkDQ/InkiQiirQKsPn1XRYDl4ccNu0WM582s3UKwcBg==}
dependencies:
'@xboxreplay/errors': 0.1.0
axios: 0.21.4_debug@4.3.3
transitivePeerDependencies:
- debug
dev: false
/aes-js/3.1.2:
resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==}
dev: false
/ajv/6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
dependencies:
fast-deep-equal: 3.1.3
fast-json-stable-stringify: 2.1.0
json-schema-traverse: 0.4.1
uri-js: 4.4.1
dev: false
/asn1/0.2.3:
resolution: {integrity: sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=}
dev: false
/axios/0.21.4_debug@4.3.3:
resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
dependencies:
follow-redirects: 1.14.7_debug@4.3.3
transitivePeerDependencies:
- debug
dev: false
/buffer-equal-constant-time/1.0.1:
resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=}
dev: false
/buffer-equal/1.0.0:
resolution: {integrity: sha1-WWFrSYME1Var1GaWayLu2j7KX74=}
engines: {node: '>=0.4.0'}
dev: false
/commander/2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
dev: false
/debug/4.3.3:
resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
dependencies:
ms: 2.1.2
dev: false
/discontinuous-range/1.0.0:
resolution: {integrity: sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=}
dev: false
/ecdsa-sig-formatter/1.0.11:
resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
dependencies:
safe-buffer: 5.2.1
dev: false
/endian-toggle/0.0.0:
resolution: {integrity: sha1-5cx1eLEDLW7gHq/Nc3ZdsNtNwKY=}
dev: false
/fast-deep-equal/3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: false
/fast-json-stable-stringify/2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
dev: false
/follow-redirects/1.14.7_debug@4.3.3:
resolution: {integrity: sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==}
engines: {node: '>=4.0'}
peerDependencies:
debug: '*'
peerDependenciesMeta:
debug:
optional: true
dependencies:
debug: 4.3.3
dev: false
/inherits/2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: false
/jose/4.4.0:
resolution: {integrity: sha512-3CsqCQWuEUPpNlSLRcLRC8eO/ATFe1tLJMZCtjx2+ma1gkjGQ62HF50oWs3cwtWjLCpM8bdMPpQbxpgc3fhxrQ==}
dev: false
/json-schema-traverse/0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: false
/jsonwebtoken/8.5.1:
resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==}
engines: {node: '>=4', npm: '>=1.4.28'}
dependencies:
jws: 3.2.2
lodash.includes: 4.3.0
lodash.isboolean: 3.0.3
lodash.isinteger: 4.0.4
lodash.isnumber: 3.0.3
lodash.isplainobject: 4.0.6
lodash.isstring: 4.0.1
lodash.once: 4.1.1
ms: 2.1.3
semver: 5.7.1
dev: false
/jwa/1.4.1:
resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==}
dependencies:
buffer-equal-constant-time: 1.0.1
ecdsa-sig-formatter: 1.0.11
safe-buffer: 5.2.1
dev: false
/jws/3.2.2:
resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==}
dependencies:
jwa: 1.4.1
safe-buffer: 5.2.1
dev: false
/lodash.get/4.4.2:
resolution: {integrity: sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=}
dev: false
/lodash.includes/4.3.0:
resolution: {integrity: sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=}
dev: false
/lodash.isboolean/3.0.3:
resolution: {integrity: sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=}
dev: false
/lodash.isinteger/4.0.4:
resolution: {integrity: sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=}
dev: false
/lodash.isnumber/3.0.3:
resolution: {integrity: sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=}
dev: false
/lodash.isplainobject/4.0.6:
resolution: {integrity: sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=}
dev: false
/lodash.isstring/4.0.1:
resolution: {integrity: sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=}
dev: false
/lodash.merge/4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
dev: false
/lodash.once/4.1.1:
resolution: {integrity: sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=}
dev: false
/lodash.reduce/4.6.0:
resolution: {integrity: sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=}
dev: false
/macaddress/0.5.2:
resolution: {integrity: sha512-cYYBbT3b84hTEHssWE6OmsuqF/NiLXE2RGK9Sc9SwwE9kMoKrbaUAJtKs6ucd0FFgZjXE1Wm3hoGEEYas0N6EA==}
dev: false
/minecraft-data/2.110.0:
resolution: {integrity: sha512-mp5TQmcLXBmBpBOgzbVGt0tvRjsjpWyOj1Zmpi+5ZuxHSlHuS7naTrgTlHPuLgWhSY0wbip0iJmIjDoea+jebw==}
dev: false
/minecraft-folder-path/1.2.0:
resolution: {integrity: sha512-qaUSbKWoOsH9brn0JQuBhxNAzTDMwrOXorwuRxdJKKKDYvZhtml+6GVCUrY5HRiEsieBEjCUnhVpDuQiKsiFaw==}
dev: false
/minecraft-protocol/1.30.0:
resolution: {integrity: sha512-Zi/TAYyLQrGV8HjBAs2z4DnusezcVdgxEVZH0cxilOElI/xJuPZ7fwXhixHPvyJnuK3RPyCvwOUjhHX27tGcoA==}
engines: {node: '>=6'}
dependencies:
aes-js: 3.1.2
buffer-equal: 1.0.0
debug: 4.3.3
endian-toggle: 0.0.0
lodash.get: 4.4.2
lodash.merge: 4.6.2
minecraft-data: 2.110.0
minecraft-folder-path: 1.2.0
node-fetch: 2.6.7
node-rsa: 0.4.2
prismarine-auth: 1.4.1_debug@4.3.3
prismarine-nbt: 2.1.0
protodef: 1.14.0
readable-stream: 3.6.0
uuid-1345: 1.0.2
yggdrasil: 1.6.1
transitivePeerDependencies:
- encoding
- supports-color
dev: false
/mineflayer-pathfinder/1.9.1:
resolution: {integrity: sha512-4mslXjn7NU5NNXUsYfieQwaycUzAg9Henzqs/ZaBT1Hc53VwmsQK1M2TEqFCOwdU8Q6Urk0LcY/87SBPIz8BZQ==}
dependencies:
minecraft-data: 2.110.0
prismarine-block: 1.12.0_minecraft-data@2.110.0
prismarine-entity: 2.0.0
prismarine-item: 1.11.2_minecraft-data@2.110.0
prismarine-nbt: 2.1.0
prismarine-physics: 1.3.1
vec3: 0.1.7
dev: false
/mineflayer/3.15.0:
resolution: {integrity: sha512-eognd3MOrC72W2TSRYhyWRw7FNSzEQd91o2Rl10nuk+yLBFaOsI3ZKKpBK7VBnMCuioHDGFHe2DhMGIRTxAGWQ==}
engines: {node: '>=14'}
dependencies:
minecraft-data: 2.110.0
minecraft-protocol: 1.30.0
prismarine-biome: 1.1.2_minecraft-data@2.110.0
prismarine-block: 1.12.0_minecraft-data@2.110.0
prismarine-chat: 1.5.0
prismarine-chunk: 1.28.1
prismarine-entity: 2.0.0
prismarine-item: 1.11.2_minecraft-data@2.110.0
prismarine-nbt: 2.1.0
prismarine-physics: 1.3.1
prismarine-recipe: 1.1.0_minecraft-data@2.110.0
prismarine-windows: 2.4.3
prismarine-world: 3.6.0
protodef: 1.14.0
typed-emitter: 2.1.0
vec3: 0.1.7
transitivePeerDependencies:
- encoding
- supports-color
dev: false
/mojangson/2.0.2:
resolution: {integrity: sha512-iGPRE1Ez+W+42Dt4Ao91c9VVs+FmuRUlAFDef76xRX3mbZrTNuezDtFI0PbfYqheg/B0fSiq0Q0V1emZNt37cw==}
dependencies:
nearley: 2.20.1
dev: false
/moo/0.5.1:
resolution: {integrity: sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==}
dev: false
/ms/2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
dev: false
/ms/2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
dev: false
/nearley/2.20.1:
resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==}
hasBin: true
dependencies:
commander: 2.20.3
moo: 0.5.1
railroad-diagrams: 1.0.0
randexp: 0.4.6
dev: false
/node-fetch/2.6.7:
resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
engines: {node: 4.x || >=6.0.0}
peerDependencies:
encoding: ^0.1.0
peerDependenciesMeta:
encoding:
optional: true
dependencies:
whatwg-url: 5.0.0
dev: false
/node-rsa/0.4.2:
resolution: {integrity: sha1-1jkXKewWqDDtWjgEKzFX0tXXJTA=}
dependencies:
asn1: 0.2.3
dev: false
/prismarine-auth/1.4.1_debug@4.3.3:
resolution: {integrity: sha512-IyFz+TWkngtRPs19MWP/7dYU1vheiASoil5d7amvIXhbK4zWb/w7uGcwLvOO0fwX9qw5hCt/JKimPrRcw8La0w==}
dependencies:
'@azure/msal-node': 1.5.0_debug@4.3.3
'@xboxreplay/xboxlive-auth': 3.3.3_debug@4.3.3
jose: 4.4.0
node-fetch: 2.6.7
smart-buffer: 4.2.0
uuid-1345: 1.0.2
transitivePeerDependencies:
- debug
- encoding
- supports-color
dev: false
/prismarine-biome/1.1.2_minecraft-data@2.110.0:
resolution: {integrity: sha512-X/P5kUzRrF5NkZclHV2RbJO4FrdxRJJbTKINpeSedG4hIXcrj2U7elh6Pw2NgLyWt17q9A35q70NciXbkq//WA==}
peerDependencies:
minecraft-data: ^2.0.0
dependencies:
minecraft-data: 2.110.0
dev: false
/prismarine-block/1.12.0_minecraft-data@2.110.0:
resolution: {integrity: sha512-UilPe3nWI4xqvwtOpVu+LDYxtWb7fUfYDpNhsETjP7iiibTieP9L/bydc5mM3Lk6+ZTNK/Urj9m/UHjpwET6yQ==}
peerDependencies:
minecraft-data: ^2.62.1
dependencies:
minecraft-data: 2.110.0
prismarine-biome: 1.1.2_minecraft-data@2.110.0
prismarine-item: 1.11.2_minecraft-data@2.110.0
prismarine-nbt: 2.1.0
prismarine-registry: 1.1.0
dev: false
/prismarine-chat/1.5.0:
resolution: {integrity: sha512-rdztHiG5qJngU3O3beNiO+7JZGtZMIrzZAYVUcMK4/l7RV1A6wT3ifFpMwMHc1u2b7z6sRHELwFw5q63jEppeA==}
dependencies:
minecraft-data: 2.110.0
mojangson: 2.0.2
prismarine-item: 1.11.2_minecraft-data@2.110.0
prismarine-nbt: 2.1.0
sprintf-js: 1.1.2
dev: false
/prismarine-chunk/1.28.1:
resolution: {integrity: sha512-bJHOuFt26l+HQIYEfLCD5ee/oRjlU7U4PfVmfqyRDczpzBLhqyLX563hhIA/2s9q2RPhZ+Kd3f3ltBuFeMTKJg==}
engines: {node: '>=14'}
dependencies:
minecraft-data: 2.110.0
prismarine-block: 1.12.0_minecraft-data@2.110.0
smart-buffer: 4.2.0
uint4: 0.1.2
vec3: 0.1.7
dev: false
/prismarine-entity/2.0.0:
resolution: {integrity: sha512-6TPldMDiUhK8drNHKVW5783IHkkgHQWQwPO9NPRUXyZNKYzhqLKeTxOAsmtcR9mjTORbrILzJUyB0qZgSyfOrA==}
dependencies:
prismarine-chat: 1.5.0
vec3: 0.1.7
dev: false
/prismarine-item/1.11.2_minecraft-data@2.110.0:
resolution: {integrity: sha512-OMkI/4g4N+Z0+63MIVbnxRZOjjyGs9E0KZ/v5UQZ0M6ZsxTGLHl2IqQAxVr59GrM4DsB8S+2Cp3A7t3EKZ1asQ==}
peerDependencies:
minecraft-data: ^2.79.0
dependencies:
minecraft-data: 2.110.0
prismarine-nbt: 2.1.0
dev: false
/prismarine-nbt/1.6.0:
resolution: {integrity: sha512-h0ECvIjjwjMOtsmHxHc8hNY7kzktnKqKXmOHF0AkmH7OjkcHNAFsWRiZNvfc76rOhNonRutHvTVAlh/eLtK0oA==}
dependencies:
protodef: 1.14.0
dev: false
/prismarine-nbt/2.1.0:
resolution: {integrity: sha512-0k8295mPzAr1H7CbZvUuwGc3oKCdGvHWxIXSQ1C867kyoReZj/gOo+Stocxiu/R9WOMAGFTv0xc9q6cBVSIblw==}
dependencies:
protodef: 1.14.0
dev: false
/prismarine-physics/1.3.1:
resolution: {integrity: sha512-K8aT/Nq0GvDyGsohv2dRugpPMBgZwVpdTURb8/Mh8Br3fOFsn/IJ81zcOJEK2IulTuvuho3vzYM6ayQm7ibUFQ==}
dependencies:
minecraft-data: 2.110.0
prismarine-nbt: 1.6.0
vec3: 0.1.7
dev: false
/prismarine-recipe/1.1.0_minecraft-data@2.110.0:
resolution: {integrity: sha512-eFmriEWoe6S6OSVbOJnsXpaBuzeIzjaGymDUTCtrOu80734NWKI7outdLI6R2ztJ+f2PFIkFmpkazAdScStGNA==}
peerDependencies:
minecraft-data: ^2.0.0
dependencies:
minecraft-data: 2.110.0
dev: false
/prismarine-registry/1.1.0:
resolution: {integrity: sha512-zCI4LRRGATsqz2KQ6JKbgWMCTAsYcSDq/GuUQohS5XVW223byzZNHqwsqZLBScAvLnvWmfhe/Ok/UgJcrXxfRw==}
dependencies:
minecraft-data: 2.110.0
prismarine-nbt: 2.1.0
dev: false
/prismarine-windows/2.4.3:
resolution: {integrity: sha512-cwY8Pw8LcfWmTMlxg88hwj4JbEqqKivuwbWnu/jy9Qd6dPI80AtLBSrxsdVkJ9siy2imc1xP5vs+RxInzZo+TA==}
dependencies:
minecraft-data: 2.110.0
prismarine-item: 1.11.2_minecraft-data@2.110.0
dev: false
/prismarine-world/3.6.0:
resolution: {integrity: sha512-rAudKWNOfiDrDaBlXx9/5B4CO/kc5G1RBq3GFAu1ov6GwUq8Ib8KXYeHPsoJwN3tfVDuFaJjncgsShqdoSmP0w==}
engines: {nodejs: '>=8.0.0'}
dependencies:
vec3: 0.1.7
dev: false
/protodef-validator/1.3.1:
resolution: {integrity: sha512-lZ5FWKZYR9xOjpMw1+EfZRfCjzNRQWPq+Dk+jki47Sikl2EeWEPnTfnJERwnU/EwFq6us+0zqHHzSsmLeYX+Lg==}
hasBin: true
dependencies:
ajv: 6.12.6
dev: false
/protodef/1.14.0:
resolution: {integrity: sha512-rL1WRlBC8LbAgBTa401eHMqnkX6zy1pHgS4kTSJVJ8rwP/AgVuWijGE3S3XHRkRjB/+4U1jMTqRdmtGdIqVOKQ==}
engines: {node: '>=14'}
dependencies:
lodash.get: 4.4.2
lodash.reduce: 4.6.0
protodef-validator: 1.3.1
readable-stream: 3.6.0
dev: false
/punycode/2.1.1:
resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
engines: {node: '>=6'}
dev: false
/railroad-diagrams/1.0.0:
resolution: {integrity: sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=}
dev: false
/randexp/0.4.6:
resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==}
engines: {node: '>=0.12'}
dependencies:
discontinuous-range: 1.0.0
ret: 0.1.15
dev: false
/readable-stream/3.6.0:
resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==}
engines: {node: '>= 6'}
dependencies:
inherits: 2.0.4
string_decoder: 1.3.0
util-deprecate: 1.0.2
dev: false
/ret/0.1.15:
resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
engines: {node: '>=0.12'}
dev: false
/rxjs/7.5.2:
resolution: {integrity: sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==}
requiresBuild: true
dependencies:
tslib: 2.3.1
dev: false
optional: true
/safe-buffer/5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: false
/semver/5.7.1:
resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
hasBin: true
dev: false
/smart-buffer/4.2.0:
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
dev: false
/sprintf-js/1.1.2:
resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==}
dev: false
/string_decoder/1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
dependencies:
safe-buffer: 5.2.1
dev: false
/tr46/0.0.3:
resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=}
dev: false
/tslib/2.3.1:
resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==}
dev: false
optional: true
/typed-emitter/2.1.0:
resolution: {integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==}
optionalDependencies:
rxjs: 7.5.2
dev: false
/uint4/0.1.2:
resolution: {integrity: sha1-UMWuBLhdKBKPLfPMDsxNQavC9oE=}
dev: false
/uri-js/4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
punycode: 2.1.1
dev: false
/util-deprecate/1.0.2:
resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=}
dev: false
/uuid-1345/1.0.2:
resolution: {integrity: sha512-bA5zYZui+3nwAc0s3VdGQGBfbVsJLVX7Np7ch2aqcEWFi5lsAEcmO3+lx3djM1npgpZI8KY2FITZ2uYTnYUYyw==}
dependencies:
macaddress: 0.5.2
dev: false
/uuid/8.3.2:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
hasBin: true
dev: false
/vec3/0.1.7:
resolution: {integrity: sha512-EZSeXBL+L3go2wWwtQQse4fEcNGIQjT14qvi4LYVj1ifZt/J5XZ1QZqkDuOVVH07YwTEIFbsAv3pzwUpF7x9Wg==}
dev: false
/webidl-conversions/3.0.1:
resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=}
dev: false
/whatwg-url/5.0.0:
resolution: {integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0=}
dependencies:
tr46: 0.0.3
webidl-conversions: 3.0.1
dev: false
/yggdrasil/1.6.1:
resolution: {integrity: sha512-6rUJ0A7YNVNd1K+8EvmVUc+l8CbhW7VKnN747BrC+YCukZj9C5rNsGxIZGf4MwxMHFDy/YNY++Gqf0VUxKy2ww==}
dependencies:
node-fetch: 2.6.7
uuid: 8.3.2
transitivePeerDependencies:
- encoding
dev: false