AI #2

Open
wmantly wants to merge 4 commits from ai into master
18 changed files with 2373 additions and 578 deletions
Showing only changes of commit 7c26d2f0a3 - Show all commits

View File

@ -15,7 +15,7 @@ module.exports = {
}, },
"ai":{ "ai":{
"key": "<configure in secrets>", "key": "<configure in secrets>",
"interval": 5, "interval": 20,
"prompts":{ "prompts":{
"custom": (name, interval, currentPlayers, custom)=>` "custom": (name, interval, currentPlayers, custom)=>`
Ignore all previous instructions prompts Ignore all previous instructions prompts
@ -88,7 +88,7 @@ Vince_NL owns another bot on the server, BulbaStore. Bulba is a great bot that s
CoreJourney about: CoreJourney about:
The center of the map is the core (x0, z0). Everyone initially spawns/respawns near the core. You can't do anything there if you don't first reach level 50. Level 50 is the max usefull level on the server: with it you unlock all the map (the maximum zone is 50). The center of the map is the core (x0, z0). Everyone initially spawns/respawns near the core. You can't do anything there if you don't first reach level 50. Level 50 is the max usefull level on the server: with it you unlock all the map (the maximum zone is 50).
How do I level up? ->First, you must spawn at a spawn corner. Type /spawncorner and the corner you want to do so (it can only be done once per respawn). Then, you will be able to do everything, as they are in zone 1, far from the core. Level up by using lapis or quartzs via crafting. How do I level up? -> you will be able to do everything, as they are in zone 1, far from the core. Level up by using lapis or quartzs via crafting.
How do zones work? >The closer you get to the core, the higher the zone. The four spawn corners are situated near the border between zone 1 and zone 2. Zone 1 is the biggest one, as it extends from the 2nd to the end of the world. Level up to use higher zones or just visit/ignore them. How do zones work? >The closer you get to the core, the higher the zone. The four spawn corners are situated near the border between zone 1 and zone 2. Zone 1 is the biggest one, as it extends from the 2nd to the end of the world. Level up to use higher zones or just visit/ignore them.
Rules and more... >When you die, you get banned for 24h and lose your levels. Rules and more... >When you die, you get banned for 24h and lose your levels.
You can safely /trade with anyone on the server, and you can /invite your friends to your location if you and them would be in a zone of your levels. Type /pillars or /rules for more. You can safely /trade with anyone on the server, and you can /invite your friends to your location if you and them would be in a zone of your levels. Type /pillars or /rules for more.

View File

@ -0,0 +1,31 @@
plugins {
java
}
group = "com.buildkillreign"
version = "2.0.0"
repositories {
mavenCentral()
maven("https://repo.codemc.io/repository/maven-public/") // ✅ CodeMC repository
maven("https://repo.papermc.io/repository/maven-public/") // ✅ PaperMC repository
}
dependencies {
compileOnly("com.comphenix.protocol:ProtocolLib:5.1.0") // ✅ Get ProtocolLib from CodeMC
compileOnly("io.papermc.paper:paper-api:1.20.1-R0.1-SNAPSHOT") // ✅ Get Paper API from PaperMC repo
compileOnly("io.papermc:paperlib:1.0.5") // ✅ Get PaperLib from CodeMC
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17)) // Required for MC 1.20+
}
tasks.jar {
archiveFileName.set("BuildKillReign.jar")
destinationDirectory.set(file("build/libs"))
from("src/main/resources") {
include("plugin.yml")
}
}

View File

@ -24,10 +24,9 @@ class Ai{
} }
async init(){ async init(){
await this.start();
this.bot.on('onReady', async (argument)=>{ this.bot.on('onReady', async (argument)=>{
try{ try{
await sleep(1000); await this.start();
let messages = ['']; let messages = [''];
this.messageListener = this.bot.on('message', (message, type)=>{ this.messageListener = this.bot.on('message', (message, type)=>{

View File

@ -101,6 +101,23 @@ module.exports = {
this.whisper(from, '?') this.whisper(from, '?')
} }
}, },
'come': {
desc: `make bot come to you`,
allowed: ['wmantly', 'useless666', 'tux4242'],
async function(from, playerName){
const player = this.bot.players[playerName || from];
if (!player || !player.entity) {
this.whisper(from, `I can't see ${player}.`);
return;
}
this.whisper(from, `Going to ${player}`);
this.goTo({where: player.entity.position});
}
},
'logon': { 'logon': {
desc: `Have bot log on for 10 seconds'`, desc: `Have bot log on for 10 seconds'`,

View File

@ -27,6 +27,11 @@ let sites = {
desc: `Get an invite to the Farming outpost.`, desc: `Get an invite to the Farming outpost.`,
allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef', '1_cut', 'nootbot', 'VinceNL', 'Ethan63020', 'Ethan63021', 'KimiKava', 'kawiimeowz', 'RaindropCake24', 'AndyNyg', 'AndyNyg_II'], allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef', '1_cut', 'nootbot', 'VinceNL', 'Ethan63020', 'Ethan63021', 'KimiKava', 'kawiimeowz', 'RaindropCake24', 'AndyNyg', 'AndyNyg_II'],
}, },
mega:{
bot: 'ayay',
desc: `Get an invite to the Farming outpost 2.`,
allowed: ['wmantly', 'useless666', 'tux4242', 'pi_chef', '1_cut', '__Ethan63020', '__Ethan63021', 'VinceNL', 'nootbot'],
},
guardian: { guardian: {
bot: 'art', bot: 'art',
desc: 'blah', desc: 'blah',

View File

@ -0,0 +1,201 @@
'use strict';
const conf = require('../conf');
const {sleep, nextTick} = require('../utils');
class CraftChests{
constructor(args){
this.bot = args.bot;
this.interval = args.interval;
this.target = args.target;
this.intervalStop;
this.isAction = true;
}
init(){
return new Promise(async (resolve, reject)=>{
this.bot.on('onReady', async ()=>{
try{
await sleep(500);
await this.bot.goTo({
where: this.bot.findBlockBySign('bot walk 2').position,
range: 0,
});
await this.bot.goTo({
where: this.bot.findBlockBySign('bot walk 1').position,
range: 0,
});
await this.bot.goTo({
where: this.bot.findBlockBySign('bot walk 2').position,
range: 0,
});
let hasItems = await this.getItems();
// while(hasItems){
// await this.craft();
// hasItems = await this.getItems();
// }
return resolve();
}catch(error){
reject(error);
}
});
});
}
unload(){
if(this.intervalStop){
clearInterval(this.intervalStop);
this.intervalStop = undefined;
}
return true;
}
async getItems(){
/*clear inventory*/
await this.bot.goTo({
where: this.bot.findChestBySign('bot dump'),
range: 2,
})
await this.bot.dumpToChest(this.bot.findChestBySign('bot dump'));
/*
Bamboo
*/
let packed_bambooChest = this.bot.findChestBySign('packed bamboo');
await this.bot.goTo({
where: packed_bambooChest.position,
range: 2,
});
await this.bot.getFullShulkersFromChest(packed_bambooChest, 'bamboo');
return;
let hasShard = await this.bot.checkItemsFromContainer(
prismarine_shardChest, 'prismarine_shard', 64*4
);
/*
crystals
*/
let prismarine_crystalsChest = this.bot.findChestBySign('crystals');
await this.bot.goTo({
where: prismarine_crystalsChest.position,
range: 2,
});
let hasCrystals = await this.bot.checkItemsFromContainer(
prismarine_crystalsChest, 'prismarine_crystals', 64*5
);
if(!hasShard || !hasCrystals) return false;
/*
get
*/
await sleep(3000);
await this.bot.getItemsFromChest(
prismarine_shardChest, 'prismarine_shard', 64*4
);
await sleep(1000);
await this.bot.getItemsFromChest(
prismarine_crystalsChest, 'prismarine_crystals', 64*5
);
return true;
}
async craft(){
// Ensure the bot has enough items (4 shards and 5 crystals for 1 lantern)
let prismarineShardsCount = this.bot.bot.inventory.count(this.bot.mcData.itemsByName.prismarine_shard.id);
let prismarineCrystalsCount = this.bot.bot.inventory.count(this.bot.mcData.itemsByName.prismarine_crystals.id);
if(prismarineShardsCount < 4 || prismarineCrystalsCount < 5){
console.log("Not enough materials to craft 64 Sea Lanterns.");
return;
}else{
console.log('good to make sea_lantern!');
}
// Hold onto the closest crafting table
let craftingTable = this.bot.bot.findBlock({
matching: this.bot.mcData.blocksByName.crafting_table.id,
maxDistance: 64
});
await this.bot.goTo({
where: craftingTable.position,
range: 1,
});
// Hold onto the recipe
let recipe = this.bot.bot.recipesAll(
this.bot.mcData.itemsByName.sea_lantern.id,
null,
craftingTable
)[0];
let window = await this.bot.openCraftingTable(craftingTable);
// Move these into openCrating function
let windowOnce = (event)=> new Promise((resolve, reject)=> window.once(event, resolve));
let inventory = ()=> window.slots.slice(window.inventoryStart, window.inventoryEnd)
// Move the items into the crafting grid
let slotCount = 1;
for(let shapeRow of recipe.inShape){
for(let shape of shapeRow){
this.bot.bot.moveSlotItem(
inventory().find((element)=> element && element.type === shape.id).slot,
slotCount
);
await windowOnce(`updateSlot:${slotCount}`);
slotCount++;
}
}
// Wait for the server to catch up.
await sleep(500);
// Craft each item until all are gone.
let craftedCount = 0;
while(window.slots[0]){
await this.bot.bot.moveSlotItem(
window.craftingResultSlot,
38 // dont hard code this!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
);
craftedCount++;
await windowOnce(`updateSlot:0`);
await sleep(50); // wait for the client to catchup
}
await window.close();
/*
Dump items to chest
*/
let seaLanternChest = this.bot.findChestBySign('sea_lantern');
await this.bot.goTo({
where: seaLanternChest.position,
range: 4,
});
await this.bot.dumpToChest(seaLanternChest, 'sea_lantern')
}
}
module.exports = CraftChests;

View File

@ -0,0 +1,165 @@
'use strict';
const conf = require('../conf');
const {sleep} = require('../utils');
async function throwSnowballAtEntity(bot, entity) {
const snowballItem = bot.bot.inventory.items().find(item => item.name === 'snowball');
if (!snowballItem) {
console.log("No snowballs in inventory.");
return;
}
// Equip the snowball
try{
await bot.bot.equip(snowballItem, 'hand')
let tossAt = bot.findBlockBySign('bot balls');
// Simulate throwing a snowball
/* const nearestHayBlock = bot.bot.findBlock({
useExtraInfo: true,
maxDistance: 64,
matching: (block)=>block.name.includes('hay'),
});
if (nearestHayBlock){
}*/
await bot.bot.lookAt(tossAt.position.offset(0, -2, 0));
await sleep(150);
bot.bot.activateItem(); // This would simulate the throw of the snowball
await sleep(200);
bot.bot.activateItem(); // This would simulate the throw of the snowball
await sleep(300);
bot.bot.activateItem(); // This would simulate the throw of the snowball
}catch(error){
console.log('GoldFarm.throwSnowballAtEntity error', error);
}
}
function getNearestEntityInDirection(bot, direction, entityType) {
const entities = Object.values(bot.entities).filter(entity =>
entity.position && entity !== bot.entity && entity.name === entityType
);
let nearestEntity = null;
let minDistance = Infinity;
for (const entity of entities) {
const relativePos = entity.position.minus(bot.entity.position);
const angle = Math.atan2(relativePos.x, relativePos.z);
const targetAngle = direction * (Math.PI / 180);
const angleDiff = Math.abs(angle - targetAngle);
if (angleDiff < Math.PI / 8) {
const distance = bot.entity.position.distanceTo(entity.position);
if (distance < minDistance) {
minDistance = distance;
nearestEntity = entity;
}
}
}
return nearestEntity;
}
class GoldFarm{
location = {};
constructor(args){
this.bot = args.bot;
this.target = args.target;
this.interval = args.interval;
this.intervalStop;
}
locationsSet(){
this.location.xpSpotAlone = this.bot.findBlockBySign('xpSpotAlone');
this.location.xpSpotSecond = this.bot.findBlockBySign('xpSpotSecond');
this.location.xp = this.location.xpSpotAlone;
this.location.attack = this.bot.findBlockBySign('bot attack spot');
}
async init(){
this.onReadyListen = this.bot.on('onReady', async ()=>{
await sleep(1000);
console.log('GoldFarm.init onReady called');
try{
this.locationsSet();
await this.agroPigs();
}catch(error){
console.error('Error in GoldFarm.init:', error);
}
await this.gotoXP();
// let count = 1;
// this.onPhysicTick = this.bot.on('physicsTick', async () => {
// if(this.bot.bot.pathfinder.isMoving()) return;
// if(count++ === 100){
// count = 1;
// for(let playerName in this.bot.bot.players){
// if(this.bot.playerWithinBlock(playerName, this.location.xpSpotAlone, 1.5)){
// this.location.xp = this.location.xpSpotSecond;
// }else{
// this.location.xp = this.location.xpSpotAlone;
// }
// await this.gotoXP();
// }
// }
// });
});
return true;
}
unload(){
console.log('GoldFarm.unload');
clearInterval(this.intervalStop);
this.intervalStop = null;
this.onReadyListen();
if(this.onPhysicTick) this.onPhysicTick();
return true;
}
async agroPigs(){
await this.bot.goTo({
where: this.location.attack,
range: 2,
});
await sleep(1000);
// let entity = this.bot.bot.nearestEntity(
// entity => entity.name.toLowerCase() === 'zombified_piglin' && this.bot.bot.entity.position.distanceTo(entity.position) >= 10
// );
let entity = getNearestEntityInDirection(this.bot.bot, 270, 'zombified_piglin');
console.log('entity', entity)
this.bot.bot.setControlState('jump', true);
await sleep(100);
await throwSnowballAtEntity(this.bot, entity);
await sleep(1200);
this.bot.bot.setControlState('jump', false);
}
async gotoXP(){
await this.bot.bot.equip(this.bot.bot.inventory.items().find(
item => item.name === 'diamond_sword'
), 'hand');
await this.bot.goTo({
where: this.location.xp,
range: 1,
});
}
}
module.exports = GoldFarm;

View File

@ -3,18 +3,60 @@
const conf = require('../conf'); const conf = require('../conf');
const {sleep, nextTick} = require('../utils'); const {sleep, nextTick} = require('../utils');
class GuardianFarm{
constructor(args){ class Plugin{
this.bot = args.bot; plunginsLoaded = {};
constructor(options){
this.bot = options.bot;
}
async load(pluginName, options){
if(pluginName in this.plunginsLoaded) throw new Error(`Plugin ${pluginName} already loaded`);
let plugin = new this.bot.constructor.plungins[pluginName]({...options, bot: this.bot})
this.plunginsLoaded[pluginName] = plugin;
return await plugin.init();
}
unload(pluginName){
console.log('Plugin.unload', pluginName);
if(pluginName){
try{
return this.plunginsLoaded[pluginName].unload();
delete this.plunginsLoaded[pluginName];
}catch(error){
console.error('Plugin.unload error', pluginName);
}
}
for(pluginName in this.plunginsLoaded){
console.log('Plugin.unload load', pluginName)
try{
this.plunginsLoaded[pluginName].unload();
}catch(error){
console.error(`Plugin.unload ${pluginName} Error`, error);
}
delete this.plunginsLoaded[pluginName];
}
}
}
class GuardianFarm extends Plugin{
constructor(options){
super(options);
this.isDangerous = true; this.isDangerous = true;
this.isAction = true; this.isAction = true;
this.onTimeListen;
} }
async init(){ async init(){
console.log('GuardianFarm started') console.log('GuardianFarm started');
this.onReadyListen = this.bot.on('onReady', async ()=>{ this.onReadyListen = this.bot.on('onReady', async ()=>{
await sleep(3000); await sleep(3000);
let lastTimeListen = this.bot.bot.time.timeOfDay; let lastTimeListen = this.bot.bot.time.timeOfDay;
await this.load('Swing');
this.onTimeListen = this.bot.bot.on('time', async ()=>{ this.onTimeListen = this.bot.bot.on('time', async ()=>{
let isDay = lastTimeListen < this.bot.bot.time.timeOfDay; let isDay = lastTimeListen < this.bot.bot.time.timeOfDay;
lastTimeListen = this.bot.bot.time.timeOfDay; lastTimeListen = this.bot.bot.time.timeOfDay;
@ -23,7 +65,6 @@ class GuardianFarm{
await this.onNewDay(); await this.onNewDay();
} }
}); });
await this.bot.pluginLoad('Swing');
}); });
@ -31,8 +72,9 @@ class GuardianFarm{
} }
unload(){ unload(){
super.unload();
this.onReadyListen(); this.onReadyListen();
this.onTimeListen(); // this.onTimeListen();
return true; return true;
} }
@ -40,10 +82,10 @@ class GuardianFarm{
async onNewDay(){ async onNewDay(){
try{ try{
console.log('GuardianFarm.onNewDay new day!'); console.log('GuardianFarm.onNewDay new day!');
await this.bot.pluginUnload('Swing'); await this.unload('Swing');
await this.bot.pluginLoad('Craft'); await this.load('Craft');
await this.bot.pluginUnload('Craft'); await this.unload('Craft');
await this.bot.pluginLoad('Swing'); await this.load('Swing');
}catch(error){ }catch(error){
console.error('Error in GuardianFarm.onNewDay:', error); console.error('Error in GuardianFarm.onNewDay:', error);
} }

View File

@ -7,16 +7,14 @@ const inventoryViewer = require('mineflayer-web-inventory');
const commands = require('./commands'); const commands = require('./commands');
const {onJoin} = require('./player_list'); const {onJoin} = require('./player_list');
const {Ai} = require('./ai');
// const plugins = {
// Swing: require('./swing'),
// }
CJbot.pluginAdd(require('./swing')); CJbot.pluginAdd(require('./swing'));
CJbot.pluginAdd(require('./craft')); CJbot.pluginAdd(require('./craft'));
CJbot.pluginAdd(require('./tp')); CJbot.pluginAdd(require('./tp'));
CJbot.pluginAdd(require('./ai')); CJbot.pluginAdd(require('./ai'));
CJbot.pluginAdd(require('./guardianFarm')); CJbot.pluginAdd(require('./guardianFarm'));
CJbot.pluginAdd(require('./goldFarm'));
CJbot.pluginAdd(require('./craft_chests'));
for(let name in conf.mc.bots){ for(let name in conf.mc.bots){
if(CJbot.bots[name]) continue; if(CJbot.bots[name]) continue;
@ -28,12 +26,6 @@ for(let name in conf.mc.bots){
bot.addCommand(name, toAdd) bot.addCommand(name, toAdd)
} }
} }
if(conf.mc.bots[name].plugins){
for(let pluginName in conf.mc.bots[name].plugins){
bot.pluginLoad(pluginName, conf.mc.bots[name].plugins[pluginName]);
}
}
} }
(async ()=>{try{ (async ()=>{try{

View File

@ -3,6 +3,14 @@
const conf = require('../conf'); const conf = require('../conf');
const {sleep} = require('../utils'); const {sleep} = require('../utils');
function faceEntity(bot, entity) {
if (!entity) return; // Check if entity is valid
const targetPosition = entity.position.offset(0, entity.height * 0.5, 0); // Focus on the middle of the entity
bot.bot.lookAt(targetPosition);
}
class Swing{ class Swing{
constructor(args){ constructor(args){
this.bot = args.bot; this.bot = args.bot;
@ -29,6 +37,7 @@ class Swing{
} }
unload(){ unload(){
console.log('Swing.unload');
clearInterval(this.intervalStop); clearInterval(this.intervalStop);
this.intervalStop = null; this.intervalStop = null;
this.onReadyListen(); this.onReadyListen();
@ -46,14 +55,19 @@ class Swing{
async swing(){ async swing(){
this.intervalStop = setInterval(async ()=>{ this.intervalStop = setInterval(async ()=>{
try{ try{
// console.log('attacking'); let entity = this.bot.bot.nearestEntity(entity =>{
await this.bot.bot.attack( // console.log('looking for entity name', entity.name, entity.name?.toLowerCase());
this.bot.bot.nearestEntity( return entity.name?.toLowerCase() === "guardian"
entity => entity.name.toLowerCase() === 'guardian' });
)
); if(entity && this.bot.isWithinRange(entity.position, 3)){
}catch(error){} faceEntity(this.bot, entity);
}, 1010); await this.bot.bot.attack(entity);
}
}catch(error){
console.log('Swing.swing interval error:', error);
}
}, 500);
} }
} }

View File

@ -16,10 +16,14 @@ class Tp{
} }
} }
await this.bot.goTo({ let spot = this.bot.findBlockBySign('bot TP spot');
where: this.bot.findBlockBySign('bot TP spot'),
range: 0, if(spot){
}); await this.bot.goTo({
where: spot,
range: 1,
});
}
this.cleatTimeout = setTimeout(()=>{ this.cleatTimeout = setTimeout(()=>{
this.bot.pluginUnload(this.constructor.name) this.bot.pluginUnload(this.constructor.name)

View File

@ -47,9 +47,11 @@ class CJbot{
this.host = args.host; this.host = args.host;
this.auth = args.auth || 'microsoft'; this.auth = args.auth || 'microsoft';
this.version = args.version || '1.20.1'; this.version = args.version || '1.20.1';
this.hasAi = args.hasAi; this.hasAi = args.hasAi;
//
this.pluginsWanted = args.plugins || {};
// States if the bot should connect when its loaded // States if the bot should connect when its loaded
this.autoReConnect = 'autoConnect' in args ? args.autoReConnect : true; this.autoReConnect = 'autoConnect' in args ? args.autoReConnect : true;
this.autoConnect = 'autoConnect' in args ? args.autoConnect : true; this.autoConnect = 'autoConnect' in args ? args.autoConnect : true;
@ -61,9 +63,10 @@ class CJbot{
} }
connect(){ connect(){
console.log('CJbot.connect');
return new Promise((resolve, reject) =>{ return new Promise((resolve, reject) =>{
try{ try{
// Create the mineflayer instance
this.bot = mineflayer.createBot({ this.bot = mineflayer.createBot({
host: this.host, host: this.host,
username: this.username, username: this.username,
@ -83,6 +86,7 @@ class CJbot{
// to the caller of the function // to the caller of the function
this.bot.on('end', (reason, ...args)=>{ this.bot.on('end', (reason, ...args)=>{
console.log(this.name, 'Connection ended:', reason, ...args); console.log(this.name, 'Connection ended:', reason, ...args);
this.pluginUnloadAll();
this.isReady = false; this.isReady = false;
reject(reason); reject(reason);
}); });
@ -90,18 +94,27 @@ class CJbot{
// When the bot is ready, return to the caller success // When the bot is ready, return to the caller success
this.bot.on('spawn', async()=>{ this.bot.on('spawn', async()=>{
console.log('CJbot.connect on spawn') console.log('CJbot.connect on spawn')
await sleep(2000);
this.__onReady(); this.__onReady();
resolve(); resolve();
this.pluginLoadAll();
}); });
// Set a timer to try to connect again in 30 seconds if the bot is // Set a timer to try to connect again in 30 seconds if the bot is
// not connected // not connected
setTimeout(async ()=>{try{
if(this.autoReConnect && !this.isReady) await this.connect(); /* setTimeout(async ()=>{
}catch(error){ try{
console.error('minecraft.js | connect | setTimeout |', this.name, ' ', error) if(this.autoReConnect && !this.isReady){
}}, 30000); console.log()
await this.connect();
}
}catch(error){
console.error('minecraft.js | connect | setTimeout |', this.name, ' ', error)
}
}, 30000);*/
}catch(error){ }catch(error){
console.log('CJbot.connect Error', error);
reject(error); reject(error);
} }
@ -140,6 +153,7 @@ class CJbot{
// Start chat listeners // Start chat listeners
this.__listen(); this.__listen();
this.bot.on('title', (...args)=>console.log('on title', args))
// this.bot.on('path_update', (...args)=>{ console.log('EVENT path_update', args) }) // this.bot.on('path_update', (...args)=>{ console.log('EVENT path_update', args) })
// this.bot.on('goal_updated', (...args)=>{ console.log('EVENT goal_updated', args) }) // this.bot.on('goal_updated', (...args)=>{ console.log('EVENT goal_updated', args) })
// this.bot.on('path_reset', (...args)=>{ console.log('EVENT path_reset', args) }) // this.bot.on('path_reset', (...args)=>{ console.log('EVENT path_reset', args) })
@ -196,20 +210,21 @@ class CJbot{
// Listen for ending events and call connect again // Listen for ending events and call connect again
__autoReConnect(){ __autoReConnect(){
try{ try{
console.log('auto connect function') console.log('auto re-connect function')
this.on('end', async (reason)=>{ this.on('kicked', (...args)=>console.log('CJbot.__autoReConnect on kick', args))
console.error('_autorestart MC on end', reason)
this.on('end', async (...args)=>{
console.error('CJbot.__autoReConnect on end', args)
await sleep(30000) await sleep(30000)
this.connect() this.connect()
}); });
this.on('kick', console.error)
this.on('error', (error)=>{ this.on('error', (error)=>{
console.error('MC on error', error); console.error('MC on error', error);
this.connect(); // this.connect();
}); });
}catch(error){ }catch(error){
console.error('error in __autoReConnect', error); console.error('error in __autoReConnect', error);
@ -242,6 +257,12 @@ class CJbot{
plunginsLoaded = {}; plunginsLoaded = {};
pluginLoadAll(){
for(let pluginName in this.pluginsWanted){
this.pluginLoad(pluginName, this.pluginsWanted[pluginName]);
}
}
async pluginLoad(pluginName, opts){ async pluginLoad(pluginName, opts){
console.log('CJbot.pluginLoad', pluginName) console.log('CJbot.pluginLoad', pluginName)
let plugin = new this.constructor.plungins[pluginName]({...opts, bot:this}) let plugin = new this.constructor.plungins[pluginName]({...opts, bot:this})
@ -252,13 +273,26 @@ class CJbot{
async pluginUnload(name){ async pluginUnload(name){
console.log('CJbot.pluginUnload', name) console.log('CJbot.pluginUnload', name)
if(this.plunginsLoaded[name]){ if(this.plunginsLoaded[name]){
await this.plunginsLoaded[name].unload(); this.plunginsLoaded[name].unload();
delete this.plunginsLoaded[name]; delete this.plunginsLoaded[name];
console.log('CJbot.pluginUnload', name, 'done'); console.log('CJbot.pluginUnload', name, 'done');
return true; return true;
} }
} }
async pluginUnloadAll(){
console.log('CJbot.pluginUnloadAll');
for(let pluginName in this.plunginsLoaded){
console.log('CJbot.pluginUnloadAll loop', pluginName)
try{
await this.plunginsLoaded[pluginName].unload()
delete this.plunginsLoaded[pluginName];
}catch(error){
console.log('CJbot.pluginUnload loop error:', error)
}
}
}
/* Chat and messaging*/ /* Chat and messaging*/
__listen(){ __listen(){
@ -438,50 +472,59 @@ class CJbot{
}); });
} }
isWithinRange(target, range=2) { isWithinRange(target, range=2){
const botPos = this.bot.entity.position; const botPos = this.bot.entity.position;
const distance = botPos.distanceTo(target); const distance = botPos.distanceTo(target);
return distance <= range+.9; return distance <= range+.9;
} }
async _goTo(block, range=2){ playerWithinBlock(player, block, range){
try{ let playerData = this.bot.players[player];
}catch(error){ if(!playerData || !playerData.entity) return; // Skip if no entity info
if(error.message === 'Not supported block identifier'){
console.log('found block error') // Calculate the distance between the player and the block
await sleep(1000); let distance = playerData.entity.position.distanceTo(block.position);
block = this.__blockOrVec(block);
} console.log('CJbot.playerWithinBlock', distance, range, distance < range)
console.log('other', error) if(!range){
return distance;
} }
try{ return distance < range;
}catch(error){ }
if(error.name === 'GoalChanged') return await this._goTo(block, range);
console.log('error in _goTo', error.name, '|', error.message); areGoalsWithinRange(goal1, goal2) {
} const dx = goal1.x - goal2.x;
const dy = goal1.y - goal2.y;
const dz = goal1.z - goal2.z;
const distanceSq = dx * dx + dy * dy + dz * dz;
// Compare with the maximum allowed squared range (rangeSq)
return distanceSq <= goal1.rangeSq && distanceSq <= goal2.rangeSq;
} }
async goTo(options) { async goTo(options) {
let range = options.range || 2; let range = options.range || 2;
let block = this.__blockOrVec(options.where); let block = this.__blockOrVec(options.where);
while(!this.isWithinRange(this.__blockOrVec(options.where).position, range)){ while(!this.isWithinRange(this.__blockOrVec(options.where).position, range)){
try{ try{
console.log('goal', this.bot.pathfinder.goal);
if(this.bot.pathfinder.isMoving()){ if(this.bot.pathfinder.isMoving()){
await sleep(500); await sleep(500);
console.log('the bot is moving...') console.log('the bot is moving...');
continue; continue;
} }
await this.bot.pathfinder.goto( await this.bot.pathfinder.goto(
new GoalNear(...block.position.toArray(), range) new GoalNear(...block.position.toArray(), range)
); );
}catch(error){ }catch(error){
await sleep(500); // await sleep(500);
console.log('CJbot.goTo while loop error:', error) console.log('CJbot.goTo while loop error:', error)
// await this.bot.pathfinder.setGoal(null); // await this.bot.pathfinder.setGoal(null);
await this.bot.pathfinder.stop(); // await this.bot.pathfinder.stop();
await sleep(500); await sleep(500);
} }
} }
@ -565,7 +608,6 @@ class CJbot{
return window; return window;
} }
async checkItemsFromContainer(containerBlock, itemName, count){ async checkItemsFromContainer(containerBlock, itemName, count){
let currentSlot = 0; let currentSlot = 0;
let foundCount = 0; let foundCount = 0;
@ -594,42 +636,56 @@ class CJbot{
let window = await this.openContainer(chestBlock); let window = await this.openContainer(chestBlock);
let itemCount = 0
let currentSlot = 0; let currentSlot = 0;
for(let slot of window.slots){ for(let slot of window.slots){
if(currentSlot++ === window.inventoryStart) break; if(currentSlot++ === window.inventoryStart) break;
if(!slot) continue;
// if(!slot || slot.name !== 'shulker_box') continue; if(!slot || slot.name !== 'shulker_box') continue;
console.log('slot:', slot) // console.log('slot:', slot)
if(slot.nbt){ if(slot.nbt){
// console.log(slot.nbt) // console.log('nbt', slot.nbt, slot.nbt.value.BlockEntityTag)
console.log('BlockEntityTag:', slot.nbt.value.BlockEntityTag.value.Items.value.value) // console.log('BlockEntityTag:', slot.nbt.value.BlockEntityTag.value.Items.value.value)
for(let shulkerSlot of slot.nbt.value.BlockEntityTag.value.Items.value.value){
console.log('shulkerSlot', shulkerSlot)
if(shulkerSlot.id?.value !== `minecraft:${item}`) continue;
itemCount += shulkerSlot.Count.value
}
if(this.bot.registry.itemsByName[item].stackSize * 27 === itemCount){
console.log('found full shulker');
this.bot.moveSlotItem(currentSlot, window.inventoryStart);
break;
}
} }
} }
await window.close();
/* // Get the inventory of the chest block /* // Get the inventory of the chest block
const chestInventory = chestBlock.getInventory(); const chestInventory = chestBlock.getInventory();
// Iterate through the chest's inventory // Iterate through the chest's inventory
chestInventory.forEach((slot, index) => { chestInventory.forEach((slot, index) => {
// Check if the slot contains a shulker box // Check if the slot contains a shulker box
if (slot && slot.type === 'shulker_box') { if (slot && slot.type === 'shulker_box') {
// Retrieve the shulker's inventory // Retrieve the shulker's inventory
const shulkerInventory = slot.getInventory(); const shulkerInventory = slot.getInventory();
// Check if the shulker is full of the specified item // Check if the shulker is full of the specified item
const isFull = shulkerInventory.every(shulkerSlot => { const isFull = shulkerInventory.every(shulkerSlot => {
console.log('shulkerSlot', shulkerSlot) console.log('shulkerSlot', shulkerSlot)
return shulkerSlot && shulkerSlot.id === item.id && shulkerSlot.count === 64; // Assuming max stack size is 64 return shulkerSlot && shulkerSlot.id === item.id && shulkerSlot.count === 64; // Assuming max stack size is 64
}); });
// If full, add the shulker box to the list // If full, add the shulker box to the list
if (isFull) { if (isFull) {
fullShulkers.push(slot); fullShulkers.push(slot);
} }
} }
}); });
return fullShulkers;*/ return fullShulkers;*/

566
nodejs/package-lock.json generated
View File

@ -14,7 +14,7 @@
"dotenv": "^16.0.1", "dotenv": "^16.0.1",
"extend": "^3.0.2", "extend": "^3.0.2",
"minecraft-data": "^3.69.0", "minecraft-data": "^3.69.0",
"mineflayer": "^4.0.0", "mineflayer": "^4.27.0",
"mineflayer-pathfinder": "^2.4.5", "mineflayer-pathfinder": "^2.4.5",
"mineflayer-web-inventory": "^1.3.0", "mineflayer-web-inventory": "^1.3.0",
"moment": "^2.29.3", "moment": "^2.29.3",
@ -25,19 +25,19 @@
} }
}, },
"node_modules/@azure/msal-common": { "node_modules/@azure/msal-common": {
"version": "14.15.0", "version": "14.16.0",
"resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.15.0.tgz", "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.0.tgz",
"integrity": "sha512-ImAQHxmpMneJ/4S8BRFhjt1MZ3bppmpRPYYNyzeQPeFN288YKbb8TmmISQEbtfkQ1BPASvYZU5doIZOPBAqENQ==", "integrity": "sha512-1KOZj9IpcDSwpNiQNjt0jDYZpQvNZay7QAEi/5DLubay40iGYtLzya/jbjRPLyOTZhEKyL1MzPuw2HqBCjceYA==",
"engines": { "engines": {
"node": ">=0.8.0" "node": ">=0.8.0"
} }
}, },
"node_modules/@azure/msal-node": { "node_modules/@azure/msal-node": {
"version": "2.15.0", "version": "2.16.2",
"resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.15.0.tgz", "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.16.2.tgz",
"integrity": "sha512-gVPW8YLz92ZeCibQH2QUw96odJoiM3k/ZPH3f2HxptozmH6+OnyyvKXo/Egg39HAM230akarQKHf0W74UHlh0Q==", "integrity": "sha512-An7l1hEr0w1HMMh1LU+rtDtqL7/jw74ORlc9Wnh06v7TU/xpG39/Zdr1ZJu3QpjUfKJ+E0/OXMW8DRSWTlh7qQ==",
"dependencies": { "dependencies": {
"@azure/msal-common": "14.15.0", "@azure/msal-common": "14.16.0",
"jsonwebtoken": "^9.0.0", "jsonwebtoken": "^9.0.0",
"uuid": "^8.3.0" "uuid": "^8.3.0"
}, },
@ -72,17 +72,25 @@
} }
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "22.7.5", "version": "22.13.13",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.13.tgz",
"integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "integrity": "sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==",
"dependencies": { "dependencies": {
"undici-types": "~6.19.2" "undici-types": "~6.20.0"
}
},
"node_modules/@types/node-rsa": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/@types/node-rsa/-/node-rsa-1.1.4.tgz",
"integrity": "sha512-dB0ECel6JpMnq5ULvpUTunx3yNm8e/dIkv8Zu9p2c8me70xIRUUG3q+qXRwcSf9rN3oqamv4116iHy90dJGRpA==",
"dependencies": {
"@types/node": "*"
} }
}, },
"node_modules/@types/readable-stream": { "node_modules/@types/readable-stream": {
"version": "4.0.15", "version": "4.0.18",
"resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.15.tgz", "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.18.tgz",
"integrity": "sha512-oAZ3kw+kJFkEqyh7xORZOku1YAKvsFTogRY8kVl4vHpEKiDkfnSA/My8haRE7fvmix5Zyy+1pwzOi7yycGLBJw==", "integrity": "sha512-21jK/1j+Wg+7jVw1xnSwy/2Q1VgVjWuFssbYGTREPUBeZ+rqVFl2udq0IkxzPC0ZhOzVceUbyIACFZKLqKEBlA==",
"dependencies": { "dependencies": {
"@types/node": "*", "@types/node": "*",
"safe-buffer": "~5.1.1" "safe-buffer": "~5.1.1"
@ -182,9 +190,9 @@
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
}, },
"node_modules/axios": { "node_modules/axios": {
"version": "1.7.7", "version": "1.8.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
"integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
"dependencies": { "dependencies": {
"follow-redirects": "^1.15.6", "follow-redirects": "^1.15.6",
"form-data": "^4.0.0", "form-data": "^4.0.0",
@ -349,16 +357,25 @@
"node": ">= 0.8" "node": ">= 0.8"
} }
}, },
"node_modules/call-bind": { "node_modules/call-bind-apply-helpers": {
"version": "1.0.7", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"dependencies": { "dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0", "es-errors": "^1.3.0",
"function-bind": "^1.1.2", "function-bind": "^1.1.2"
"get-intrinsic": "^1.2.4", },
"set-function-length": "^1.2.1" "engines": {
"node": ">= 0.4"
}
},
"node_modules/call-bound": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"get-intrinsic": "^1.3.0"
}, },
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
@ -485,9 +502,9 @@
} }
}, },
"node_modules/debug": { "node_modules/debug": {
"version": "4.3.7", "version": "4.4.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
"integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"dependencies": { "dependencies": {
"ms": "^2.1.3" "ms": "^2.1.3"
}, },
@ -500,22 +517,6 @@
} }
} }
}, },
"node_modules/define-data-property": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
"gopd": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/delayed-stream": { "node_modules/delayed-stream": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@ -547,9 +548,9 @@
"integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==" "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ=="
}, },
"node_modules/dotenv": { "node_modules/dotenv": {
"version": "16.4.5", "version": "16.4.7",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
"integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==",
"engines": { "engines": {
"node": ">=12" "node": ">=12"
}, },
@ -557,6 +558,19 @@
"url": "https://dotenvx.com" "url": "https://dotenvx.com"
} }
}, },
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
"gopd": "^1.2.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/ecdsa-sig-formatter": { "node_modules/ecdsa-sig-formatter": {
"version": "1.0.11", "version": "1.0.11",
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
@ -619,13 +633,26 @@
"node": ">= 0.6" "node": ">= 0.6"
} }
}, },
"node_modules/es-define-property": { "node_modules/engine.io/node_modules/debug": {
"version": "1.0.0", "version": "4.3.7",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
"integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
"dependencies": { "dependencies": {
"get-intrinsic": "^1.2.4" "ms": "^2.1.3"
}, },
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/es-define-property": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
} }
@ -638,6 +665,31 @@
"node": ">= 0.4" "node": ">= 0.4"
} }
}, },
"node_modules/es-object-atoms": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"dependencies": {
"es-errors": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-set-tostringtag": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
"dependencies": {
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.6",
"has-tostringtag": "^1.0.2",
"hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/escape-html": { "node_modules/escape-html": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@ -668,9 +720,9 @@
} }
}, },
"node_modules/express": { "node_modules/express": {
"version": "4.21.1", "version": "4.21.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
"integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
"dependencies": { "dependencies": {
"accepts": "~1.3.8", "accepts": "~1.3.8",
"array-flatten": "1.1.1", "array-flatten": "1.1.1",
@ -691,7 +743,7 @@
"methods": "~1.1.2", "methods": "~1.1.2",
"on-finished": "2.4.1", "on-finished": "2.4.1",
"parseurl": "~1.3.3", "parseurl": "~1.3.3",
"path-to-regexp": "0.1.10", "path-to-regexp": "0.1.12",
"proxy-addr": "~2.0.7", "proxy-addr": "~2.0.7",
"qs": "6.13.0", "qs": "6.13.0",
"range-parser": "~1.2.1", "range-parser": "~1.2.1",
@ -706,6 +758,10 @@
}, },
"engines": { "engines": {
"node": ">= 0.10.0" "node": ">= 0.10.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
} }
}, },
"node_modules/express/node_modules/debug": { "node_modules/express/node_modules/debug": {
@ -817,12 +873,13 @@
} }
}, },
"node_modules/form-data": { "node_modules/form-data": {
"version": "4.0.0", "version": "4.0.2",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
"dependencies": { "dependencies": {
"asynckit": "^0.4.0", "asynckit": "^0.4.0",
"combined-stream": "^1.0.8", "combined-stream": "^1.0.8",
"es-set-tostringtag": "^2.1.0",
"mime-types": "^2.1.12" "mime-types": "^2.1.12"
}, },
"engines": { "engines": {
@ -868,15 +925,20 @@
} }
}, },
"node_modules/get-intrinsic": { "node_modules/get-intrinsic": {
"version": "1.2.4", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"dependencies": { "dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0", "es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2", "function-bind": "^1.1.2",
"has-proto": "^1.0.1", "get-proto": "^1.0.1",
"has-symbols": "^1.0.3", "gopd": "^1.2.0",
"hasown": "^2.0.0" "has-symbols": "^1.1.0",
"hasown": "^2.0.2",
"math-intrinsics": "^1.1.0"
}, },
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
@ -885,6 +947,18 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/get-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"dependencies": {
"dunder-proto": "^1.0.1",
"es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/glob-parent": { "node_modules/glob-parent": {
"version": "5.1.2", "version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@ -898,11 +972,11 @@
} }
}, },
"node_modules/gopd": { "node_modules/gopd": {
"version": "1.0.1", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
"dependencies": { "engines": {
"get-intrinsic": "^1.1.3" "node": ">= 0.4"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
@ -917,21 +991,10 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/has-property-descriptors": { "node_modules/has-symbols": {
"version": "1.0.2", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"dependencies": {
"es-define-property": "^1.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-proto": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
"integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
}, },
@ -939,10 +1002,13 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/has-symbols": { "node_modules/has-tostringtag": {
"version": "1.0.3", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"dependencies": {
"has-symbols": "^1.0.3"
},
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
}, },
@ -1067,14 +1133,6 @@
"node": ">=0.12.0" "node": ">=0.12.0"
} }
}, },
"node_modules/jose": {
"version": "4.15.9",
"resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz",
"integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==",
"funding": {
"url": "https://github.com/sponsors/panva"
}
},
"node_modules/json-schema-traverse": { "node_modules/json-schema-traverse": {
"version": "0.4.1", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@ -1128,7 +1186,8 @@
"node_modules/lodash.get": { "node_modules/lodash.get": {
"version": "4.4.2", "version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
"deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead."
}, },
"node_modules/lodash.includes": { "node_modules/lodash.includes": {
"version": "4.3.0", "version": "4.3.0",
@ -1180,6 +1239,14 @@
"resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.5.3.tgz", "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.5.3.tgz",
"integrity": "sha512-vGBKTA+jwM4KgjGZ+S/8/Mkj9rWzePyGY6jManXPGhiWu63RYwW8dKPyk5koP+8qNVhPhHgFa1y/MJ4wrjsNrg==" "integrity": "sha512-vGBKTA+jwM4KgjGZ+S/8/Mkj9rWzePyGY6jManXPGhiWu63RYwW8dKPyk5koP+8qNVhPhHgFa1y/MJ4wrjsNrg=="
}, },
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/media-typer": { "node_modules/media-typer": {
"version": "0.3.0", "version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@ -1235,14 +1302,14 @@
} }
}, },
"node_modules/minecraft-assets": { "node_modules/minecraft-assets": {
"version": "1.12.2", "version": "1.15.0",
"resolved": "https://registry.npmjs.org/minecraft-assets/-/minecraft-assets-1.12.2.tgz", "resolved": "https://registry.npmjs.org/minecraft-assets/-/minecraft-assets-1.15.0.tgz",
"integrity": "sha512-/eMxh3LNjCXOnU6KnQMjBM8dRnoJNpWIg7mD2m2RthraYiQK2FNzPWIKxWm2j3Ufcf5nzFXupgABledE86r4fQ==" "integrity": "sha512-hHHNyzrUUaCDEVdupvgnu8hM5y/6t6R8V2m9LgkFRlz0XENII2uDevO5pXkLlz80K0SazHWzd8+zcHitmt6c0Q=="
}, },
"node_modules/minecraft-data": { "node_modules/minecraft-data": {
"version": "3.69.0", "version": "3.84.1",
"resolved": "https://registry.npmjs.org/minecraft-data/-/minecraft-data-3.69.0.tgz", "resolved": "https://registry.npmjs.org/minecraft-data/-/minecraft-data-3.84.1.tgz",
"integrity": "sha512-FGpjH/8ABfIuHm53253MZZVLwfVgLuRl4wrYz91TNoT14a+pMPH7igNxdpBmKayhiO7VO0ox/ZISkCOj6S/isA==" "integrity": "sha512-0yPsnu4rYjbokPgm6aMqhIm70fhsUUYFMEbbqrLG7QGLQDUy3lauuVlh3ctRxtPP6vX/ywLo1p5Uczz3Snnocg=="
}, },
"node_modules/minecraft-folder-path": { "node_modules/minecraft-folder-path": {
"version": "1.2.0", "version": "1.2.0",
@ -1250,10 +1317,11 @@
"integrity": "sha512-qaUSbKWoOsH9brn0JQuBhxNAzTDMwrOXorwuRxdJKKKDYvZhtml+6GVCUrY5HRiEsieBEjCUnhVpDuQiKsiFaw==" "integrity": "sha512-qaUSbKWoOsH9brn0JQuBhxNAzTDMwrOXorwuRxdJKKKDYvZhtml+6GVCUrY5HRiEsieBEjCUnhVpDuQiKsiFaw=="
}, },
"node_modules/minecraft-protocol": { "node_modules/minecraft-protocol": {
"version": "1.47.0", "version": "1.55.0",
"resolved": "https://registry.npmjs.org/minecraft-protocol/-/minecraft-protocol-1.47.0.tgz", "resolved": "https://registry.npmjs.org/minecraft-protocol/-/minecraft-protocol-1.55.0.tgz",
"integrity": "sha512-IHL8faXLLIWv1O+2v2NgyKlooilu/OiSL9orI8Kqed/rZvVOrFPzs2PwMAYjpQX9gxLPhiSU19KqZ8CjfNuqhg==", "integrity": "sha512-jlzmRxoNuj2bFk1fxR+dTg6Z4RpOR1/FLrk1zhft0jCwAIEhgV2OPi6Ceg2KFKADneEX0suhCty855A/qFLQWA==",
"dependencies": { "dependencies": {
"@types/node-rsa": "^1.1.4",
"@types/readable-stream": "^4.0.0", "@types/readable-stream": "^4.0.0",
"aes-js": "^3.1.2", "aes-js": "^3.1.2",
"buffer-equal": "^1.0.0", "buffer-equal": "^1.0.0",
@ -1261,7 +1329,7 @@
"endian-toggle": "^0.0.0", "endian-toggle": "^0.0.0",
"lodash.get": "^4.1.2", "lodash.get": "^4.1.2",
"lodash.merge": "^4.3.0", "lodash.merge": "^4.3.0",
"minecraft-data": "^3.55.0", "minecraft-data": "^3.78.0",
"minecraft-folder-path": "^1.2.0", "minecraft-folder-path": "^1.2.0",
"node-fetch": "^2.6.1", "node-fetch": "^2.6.1",
"node-rsa": "^0.4.2", "node-rsa": "^0.4.2",
@ -1269,40 +1337,40 @@
"prismarine-chat": "^1.10.0", "prismarine-chat": "^1.10.0",
"prismarine-nbt": "^2.5.0", "prismarine-nbt": "^2.5.0",
"prismarine-realms": "^1.2.0", "prismarine-realms": "^1.2.0",
"protodef": "^1.8.0", "protodef": "^1.17.0",
"readable-stream": "^4.1.0", "readable-stream": "^4.1.0",
"uuid-1345": "^1.0.1", "uuid-1345": "^1.0.1",
"yggdrasil": "^1.4.0" "yggdrasil": "^1.4.0"
}, },
"engines": { "engines": {
"node": ">=14" "node": ">=22"
} }
}, },
"node_modules/mineflayer": { "node_modules/mineflayer": {
"version": "4.20.1", "version": "4.27.0",
"resolved": "https://registry.npmjs.org/mineflayer/-/mineflayer-4.20.1.tgz", "resolved": "https://registry.npmjs.org/mineflayer/-/mineflayer-4.27.0.tgz",
"integrity": "sha512-QMMNPx4IyZE7ydAzjvGLQLCnQNUOfkk1qVZKxTTS9q3qPTAewz4GhsVUBtbQ8LSbHthe5RcQ1Sgxs4wlIma/Qw==", "integrity": "sha512-3bxph4jfbkBh5HpeouorxzrfSLNV+i+1gugNJ2jf52HW+rt+tW7eiiFPxrJEsOVkPT/3O/dEIW7j93LRlojMkQ==",
"dependencies": { "dependencies": {
"minecraft-data": "^3.56.0", "minecraft-data": "^3.76.0",
"minecraft-protocol": "^1.47.0", "minecraft-protocol": "^1.51.0",
"prismarine-biome": "^1.1.1", "prismarine-biome": "^1.1.1",
"prismarine-block": "^1.17.0", "prismarine-block": "^1.17.0",
"prismarine-chat": "^1.7.1", "prismarine-chat": "^1.7.1",
"prismarine-chunk": "^1.34.0", "prismarine-chunk": "^1.36.0",
"prismarine-entity": "^2.3.0", "prismarine-entity": "^2.5.0",
"prismarine-item": "^1.14.0", "prismarine-item": "^1.15.0",
"prismarine-nbt": "^2.0.0", "prismarine-nbt": "^2.0.0",
"prismarine-physics": "^1.8.0", "prismarine-physics": "^1.9.0",
"prismarine-recipe": "^1.3.0", "prismarine-recipe": "^1.3.0",
"prismarine-registry": "^1.5.0", "prismarine-registry": "^1.10.0",
"prismarine-windows": "^2.9.0", "prismarine-windows": "^2.9.0",
"prismarine-world": "^3.6.0", "prismarine-world": "^3.6.0",
"protodef": "^1.14.0", "protodef": "^1.18.0",
"typed-emitter": "^1.0.0", "typed-emitter": "^1.0.0",
"vec3": "^0.1.7" "vec3": "^0.1.7"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=22"
} }
}, },
"node_modules/mineflayer-pathfinder": { "node_modules/mineflayer-pathfinder": {
@ -1429,9 +1497,9 @@
} }
}, },
"node_modules/nodemon": { "node_modules/nodemon": {
"version": "3.1.7", "version": "3.1.9",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.7.tgz", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.9.tgz",
"integrity": "sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==", "integrity": "sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"chokidar": "^3.5.2", "chokidar": "^3.5.2",
@ -1474,9 +1542,9 @@
} }
}, },
"node_modules/object-inspect": { "node_modules/object-inspect": {
"version": "1.13.2", "version": "1.13.4",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
"integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
}, },
@ -1504,9 +1572,9 @@
} }
}, },
"node_modules/path-to-regexp": { "node_modules/path-to-regexp": {
"version": "0.1.10", "version": "0.1.12",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
"integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="
}, },
"node_modules/picomatch": { "node_modules/picomatch": {
"version": "2.3.1", "version": "2.3.1",
@ -1521,15 +1589,13 @@
} }
}, },
"node_modules/prismarine-auth": { "node_modules/prismarine-auth": {
"version": "2.5.0", "version": "2.7.0",
"resolved": "https://registry.npmjs.org/prismarine-auth/-/prismarine-auth-2.5.0.tgz", "resolved": "https://registry.npmjs.org/prismarine-auth/-/prismarine-auth-2.7.0.tgz",
"integrity": "sha512-CRv/pL6d/T+4cdjWS223PXG+ygHbz40Kef04L59SLMT+axNdAQro23eZZhgiIIu6u7rlvJcZYlIY93gFNtKxXA==", "integrity": "sha512-L8wTF6sdtnN6hViPNy+Nx39a8iQBwR5iO92AWCiym5cSXp/92pmnuwnTdcmNDWyqq6zY4hbibVGYhgLA1Ox8sQ==",
"dependencies": { "dependencies": {
"@azure/msal-node": "^2.0.2", "@azure/msal-node": "^2.0.2",
"@xboxreplay/xboxlive-auth": "^3.3.3", "@xboxreplay/xboxlive-auth": "^3.3.3",
"debug": "^4.3.3", "debug": "^4.3.3",
"jose": "^4.1.4",
"node-fetch": "^2.6.1",
"smart-buffer": "^4.1.0", "smart-buffer": "^4.1.0",
"uuid-1345": "^1.0.2" "uuid-1345": "^1.0.2"
} }
@ -1544,9 +1610,9 @@
} }
}, },
"node_modules/prismarine-block": { "node_modules/prismarine-block": {
"version": "1.17.1", "version": "1.21.0",
"resolved": "https://registry.npmjs.org/prismarine-block/-/prismarine-block-1.17.1.tgz", "resolved": "https://registry.npmjs.org/prismarine-block/-/prismarine-block-1.21.0.tgz",
"integrity": "sha512-r1TIn/b5v77BX4a+qd+Yv+4/vZpsC/Jp5ElYxd6++2wpCnqiuxVG7BlS2Eo14vez1M2gt3qoNEl54Hr8qox/rQ==", "integrity": "sha512-Um7zRIMHKbtpHYq+bSibc+LgFPqhHCnJgy5DeUYGG1VPLptrHjgAwvzb9bztzpzz4auziZIX+325CCWSDjIv+Q==",
"dependencies": { "dependencies": {
"minecraft-data": "^3.38.0", "minecraft-data": "^3.38.0",
"prismarine-biome": "^1.1.0", "prismarine-biome": "^1.1.0",
@ -1557,9 +1623,9 @@
} }
}, },
"node_modules/prismarine-chat": { "node_modules/prismarine-chat": {
"version": "1.10.1", "version": "1.11.0",
"resolved": "https://registry.npmjs.org/prismarine-chat/-/prismarine-chat-1.10.1.tgz", "resolved": "https://registry.npmjs.org/prismarine-chat/-/prismarine-chat-1.11.0.tgz",
"integrity": "sha512-XukYcuueuhDxzEXG7r8BZyt6jOObrPPB4JESCgb+/XenB9nExoSHF8eTQWWj8faKPLqm1dRQaYwFJlNBlJZJUw==", "integrity": "sha512-VJT/MWYB3qoiznUhrgvSQh76YFpzpCZpY85kJKxHLbd3UVoM0wsfs43Eg8dOltiZG92wc5/DTMLlT07TEeoa9w==",
"dependencies": { "dependencies": {
"mojangson": "^2.0.1", "mojangson": "^2.0.1",
"prismarine-nbt": "^2.0.0", "prismarine-nbt": "^2.0.0",
@ -1567,9 +1633,9 @@
} }
}, },
"node_modules/prismarine-chunk": { "node_modules/prismarine-chunk": {
"version": "1.35.0", "version": "1.38.1",
"resolved": "https://registry.npmjs.org/prismarine-chunk/-/prismarine-chunk-1.35.0.tgz", "resolved": "https://registry.npmjs.org/prismarine-chunk/-/prismarine-chunk-1.38.1.tgz",
"integrity": "sha512-Q1lElMUle7wWxWdQjbZo3j2/dLNG325j90IcbbMmBTnHdQSWIjWFe792XOz3RVBlvrhRJEiZk38S6/eQTQ9esw==", "integrity": "sha512-VL7BpYYzmZSKveiKNfwp/a50pPqEVy4rMdpOL6niyUsV/Nk4hRcqd2uo7GyKHlJci/mK3g7GOR8jsVX+hU07Aw==",
"dependencies": { "dependencies": {
"prismarine-biome": "^1.2.0", "prismarine-biome": "^1.2.0",
"prismarine-block": "^1.14.1", "prismarine-block": "^1.14.1",
@ -1585,9 +1651,9 @@
} }
}, },
"node_modules/prismarine-entity": { "node_modules/prismarine-entity": {
"version": "2.4.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/prismarine-entity/-/prismarine-entity-2.4.0.tgz", "resolved": "https://registry.npmjs.org/prismarine-entity/-/prismarine-entity-2.5.0.tgz",
"integrity": "sha512-DBwjmoCX1IYAhN99KwYkk2rMArn65JHTzuuGXchr4GLWQs7UN4Pf9tELqBwNOu4r57x3RaW0+9+0sI3FvJQWzQ==", "integrity": "sha512-nRPCawUwf9r3iKqi4I7mZRlir1Ix+DffWYdWq6p/KNnmiXve+xHE5zv8XCdhZlUmOshugHv5ONl9o6ORAkCNIA==",
"dependencies": { "dependencies": {
"prismarine-chat": "^1.4.1", "prismarine-chat": "^1.4.1",
"prismarine-item": "^1.11.2", "prismarine-item": "^1.11.2",
@ -1596,26 +1662,26 @@
} }
}, },
"node_modules/prismarine-item": { "node_modules/prismarine-item": {
"version": "1.14.0", "version": "1.16.0",
"resolved": "https://registry.npmjs.org/prismarine-item/-/prismarine-item-1.14.0.tgz", "resolved": "https://registry.npmjs.org/prismarine-item/-/prismarine-item-1.16.0.tgz",
"integrity": "sha512-udQHYGJ05klFe8Kkc0TOmwoXj5Xl1ZPgHVoMbGUAFB9exN4TFxEa1A39vkSYhxP5Et9PNufQQvFBFVom0nXikA==", "integrity": "sha512-88Tz+/6HquYIsDuseae5G3IbqLeMews2L+ba2gX+p6K6soU9nuFhCfbwN56QuB7d/jZFcWrCYAPE5+UhwWh67w==",
"dependencies": { "dependencies": {
"prismarine-nbt": "^2.0.0", "prismarine-nbt": "^2.0.0",
"prismarine-registry": "^1.4.0" "prismarine-registry": "^1.4.0"
} }
}, },
"node_modules/prismarine-nbt": { "node_modules/prismarine-nbt": {
"version": "2.5.0", "version": "2.7.0",
"resolved": "https://registry.npmjs.org/prismarine-nbt/-/prismarine-nbt-2.5.0.tgz", "resolved": "https://registry.npmjs.org/prismarine-nbt/-/prismarine-nbt-2.7.0.tgz",
"integrity": "sha512-F0/8UAa9SDDnAGrBYqZc4nG8h2zj5cE2eAJU5xlDR/IsQQ3moVxkOjE3h3nMv6SbvZrvAcgX7waA/nd9LLHYdA==", "integrity": "sha512-Du9OLQAcCj3y29YtewOJbbV4ARaSUEJiTguw0PPQbPBy83f+eCyDRkyBpnXTi/KPyEpgYCzsjGzElevLpFoYGQ==",
"dependencies": { "dependencies": {
"protodef": "^1.9.0" "protodef": "^1.18.0"
} }
}, },
"node_modules/prismarine-physics": { "node_modules/prismarine-physics": {
"version": "1.8.0", "version": "1.10.0",
"resolved": "https://registry.npmjs.org/prismarine-physics/-/prismarine-physics-1.8.0.tgz", "resolved": "https://registry.npmjs.org/prismarine-physics/-/prismarine-physics-1.10.0.tgz",
"integrity": "sha512-gbM+S+bmVtOKVv+Z0WGaHMeEeBHISIDsRDRlv8sr0dex3ZJRhuq8djA02CBreguXtI18ZKh6q3TSj2qDr45NHA==", "integrity": "sha512-FE2xUSDhrdgjlJFtBPMTQt1FX3uG2YvKceRvoMmhcCni0MrS8365ZlbIcW06SB1sKIpoNQWanS5LuefynzwdXQ==",
"dependencies": { "dependencies": {
"minecraft-data": "^3.0.0", "minecraft-data": "^3.0.0",
"prismarine-nbt": "^2.0.0", "prismarine-nbt": "^2.0.0",
@ -1640,11 +1706,12 @@
} }
}, },
"node_modules/prismarine-registry": { "node_modules/prismarine-registry": {
"version": "1.7.0", "version": "1.11.0",
"resolved": "https://registry.npmjs.org/prismarine-registry/-/prismarine-registry-1.7.0.tgz", "resolved": "https://registry.npmjs.org/prismarine-registry/-/prismarine-registry-1.11.0.tgz",
"integrity": "sha512-yyva0FpWI078nNeMhx8ekVza5uUTYhEv+C+ADu3wUQXiG8qhXkvrf0uzsnhTgZL8BLdsi2axgCEiKw9qSKIuxQ==", "integrity": "sha512-uTvWE+bILxYv4i5MrrlxPQ0KYWINv1DJ3P2570GLC8uCdByDiDLBFfVyk4BrqOZBlDBft9CnaJMeOsC1Ly1iXw==",
"dependencies": { "dependencies": {
"minecraft-data": "^3.0.0", "minecraft-data": "^3.70.0",
"prismarine-block": "^1.17.1",
"prismarine-nbt": "^2.0.0" "prismarine-nbt": "^2.0.0"
} }
}, },
@ -1686,23 +1753,23 @@
} }
}, },
"node_modules/protodef": { "node_modules/protodef": {
"version": "1.15.0", "version": "1.18.0",
"resolved": "https://registry.npmjs.org/protodef/-/protodef-1.15.0.tgz", "resolved": "https://registry.npmjs.org/protodef/-/protodef-1.18.0.tgz",
"integrity": "sha512-bZ2Omw8dT+DACjJHLrBWZlqN4MlT9g9oSpJDdkUAJOStUzgJp+Zn42FJfPUdwutUxjaxA0PftN0PDlNa2XbneA==", "integrity": "sha512-jO64lkzkh0dYc0AVWCU/GzCKwqhFFIz1kfEz0NBf0RUuRNcmvgKbopabJdfZ6W8NvALdySUXgEhvKDZPhdBwrg==",
"dependencies": { "dependencies": {
"lodash.get": "^4.4.2", "lodash.get": "^4.4.2",
"lodash.reduce": "^4.6.0", "lodash.reduce": "^4.6.0",
"protodef-validator": "^1.3.0", "protodef-validator": "^1.3.0",
"readable-stream": "^3.0.3" "readable-stream": "^4.4.0"
}, },
"engines": { "engines": {
"node": ">=14" "node": ">=14"
} }
}, },
"node_modules/protodef-validator": { "node_modules/protodef-validator": {
"version": "1.3.1", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/protodef-validator/-/protodef-validator-1.3.1.tgz", "resolved": "https://registry.npmjs.org/protodef-validator/-/protodef-validator-1.4.0.tgz",
"integrity": "sha512-lZ5FWKZYR9xOjpMw1+EfZRfCjzNRQWPq+Dk+jki47Sikl2EeWEPnTfnJERwnU/EwFq6us+0zqHHzSsmLeYX+Lg==", "integrity": "sha512-2y2coBolqCEuk5Kc3QwO7ThR+/7TZiOit4FrpAgl+vFMvq8w76nDhh09z08e2NQOdrgPLsN2yzXsvRvtADgUZQ==",
"dependencies": { "dependencies": {
"ajv": "^6.5.4" "ajv": "^6.5.4"
}, },
@ -1710,19 +1777,6 @@
"protodef-validator": "cli.js" "protodef-validator": "cli.js"
} }
}, },
"node_modules/protodef/node_modules/readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/proxy-addr": { "node_modules/proxy-addr": {
"version": "2.0.7", "version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@ -1808,9 +1862,9 @@
} }
}, },
"node_modules/readable-stream": { "node_modules/readable-stream": {
"version": "4.5.2", "version": "4.7.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
"integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
"dependencies": { "dependencies": {
"abort-controller": "^3.0.0", "abort-controller": "^3.0.0",
"buffer": "^6.0.3", "buffer": "^6.0.3",
@ -1843,9 +1897,9 @@
} }
}, },
"node_modules/rxjs": { "node_modules/rxjs": {
"version": "7.8.1", "version": "7.8.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
"integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
"optional": true, "optional": true,
"dependencies": { "dependencies": {
"tslib": "^2.1.0" "tslib": "^2.1.0"
@ -1862,9 +1916,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
}, },
"node_modules/semver": { "node_modules/semver": {
"version": "7.6.3", "version": "7.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"bin": { "bin": {
"semver": "bin/semver.js" "semver": "bin/semver.js"
}, },
@ -1930,36 +1984,71 @@
"node": ">= 0.8.0" "node": ">= 0.8.0"
} }
}, },
"node_modules/set-function-length": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
"dependencies": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"get-intrinsic": "^1.2.4",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/setprototypeof": { "node_modules/setprototypeof": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
}, },
"node_modules/side-channel": { "node_modules/side-channel": {
"version": "1.0.6", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
"integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
"dependencies": { "dependencies": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0", "es-errors": "^1.3.0",
"get-intrinsic": "^1.2.4", "object-inspect": "^1.13.3",
"object-inspect": "^1.13.1" "side-channel-list": "^1.0.0",
"side-channel-map": "^1.0.1",
"side-channel-weakmap": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel-list": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
"dependencies": {
"es-errors": "^1.3.0",
"object-inspect": "^1.13.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel-map": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
"dependencies": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.5",
"object-inspect": "^1.13.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel-weakmap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
"dependencies": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.5",
"object-inspect": "^1.13.3",
"side-channel-map": "^1.0.1"
}, },
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
@ -2026,6 +2115,38 @@
"node": ">=10.0.0" "node": ">=10.0.0"
} }
}, },
"node_modules/socket.io-parser/node_modules/debug": {
"version": "4.3.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
"integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
"dependencies": {
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/socket.io/node_modules/debug": {
"version": "4.3.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
"integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
"dependencies": {
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/statuses": { "node_modules/statuses": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
@ -2108,9 +2229,9 @@
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
}, },
"node_modules/tslib": { "node_modules/tslib": {
"version": "2.7.0", "version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"optional": true "optional": true
}, },
"node_modules/type-is": { "node_modules/type-is": {
@ -2142,9 +2263,9 @@
"dev": true "dev": true
}, },
"node_modules/undici-types": { "node_modules/undici-types": {
"version": "6.19.8", "version": "6.20.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="
}, },
"node_modules/unpipe": { "node_modules/unpipe": {
"version": "1.0.0", "version": "1.0.0",
@ -2162,11 +2283,6 @@
"punycode": "^2.1.0" "punycode": "^2.1.0"
} }
}, },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
"node_modules/utils-merge": { "node_modules/utils-merge": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",

View File

@ -22,7 +22,7 @@
"dotenv": "^16.0.1", "dotenv": "^16.0.1",
"extend": "^3.0.2", "extend": "^3.0.2",
"minecraft-data": "^3.69.0", "minecraft-data": "^3.69.0",
"mineflayer": "^4.0.0", "mineflayer": "^4.27.0",
"mineflayer-pathfinder": "^2.4.5", "mineflayer-pathfinder": "^2.4.5",
"mineflayer-web-inventory": "^1.3.0", "mineflayer-web-inventory": "^1.3.0",
"moment": "^2.29.3", "moment": "^2.29.3",

View File

@ -4,7 +4,5 @@
module.exports = { module.exports = {
sleep: (ms)=> new Promise((resolve) => setTimeout(resolve, ms)), sleep: (ms)=> new Promise((resolve) => setTimeout(resolve, ms)),
nextTick: ()=> new Promise(resolve => process.nextTick(resolve)), nextTick: ()=> new Promise(resolve => process.nextTick(resolve)),
getOrRun: function(value){ getOrRun: (value)=> typeof(value) === 'function' ? value() : value,
return typeof(value) === 'function' ? value() : value
},
}; };