import { createClient } from "minecraft-protocol"; import { default as settings } from './settings.json' with {type: "json"} import generateUser from './util/usergen.js' import EventEmitter from 'node:events' import { readdirSync } from "node:fs"; const bots = []; const plugins = []; const bpl = readdirSync('plugins') for (const plugin of bpl) { if (!plugin.endsWith('.js')) { continue } try { import(`./plugins/${plugin}`).then((pluginItem)=>{ for(const bot of bots){ pluginItem.default(bot) } plugins.push(pluginItem.default) // For rejoining }) } catch (e) { console.log(e) } } const createBot = function createBot (host, oldId) { const bot = new EventEmitter() bot.host = host bot.interval = {} bot._client = createClient({ host: host.host, port: host.port ? host.port : 25565, username: generateUser(host.options.legalName), version: host.version ? host.version : settings.version_mc }) if (typeof oldId !== 'undefined') { for (const i in bots[oldId].interval) { clearInterval(bots[oldId].interval[i]) } delete bots[oldId] bot.id = oldId bots[oldId] = bot for(const pluginItem of plugins){ pluginItem(bot) } } else { bot.id = bots.length bots.push(bot) } bot.info = (msg) => { console.log(`[${bot.id}] [info] ${msg}`) } bot.displayChat = (type, subtype, msg) => { if (settings.displaySubtypesToConsole) { console.log(`[${bot.id}] [${type}] [${subtype}] ${msg}`) } else { console.log(`[${bot.id}] [${type}] ${msg}`) } } bot._client.on('error', (err) => { console.log(err) }) } for (const i in settings.servers) { createBot(settings.servers[i]) } export { bots, createBot }