const m = require("minecraft-protocol") const settings = require("./settings.json") const secret = require(settings.secret) const EventEmitter = require("node:events") const crypto = require("crypto") const fs=require("fs") module.exports.bot=[]; const generateUser = function generateUser(){ return "@s["+crypto.randomBytes(2).toString("hex")+"_=\xa7c "+crypto.randomBytes(2).toString("hex") } const loadplug = (botno) => { const botplug = [] const bpl = fs.readdirSync('plugins') for (const i in bpl) { if (!bpl[i].endsWith('.js')) { continue } try { botplug.push(require(`./plugins/${bpl[i]}`)) } catch (e) { console.log(e) } } botplug.forEach((plug) => { try { if (botno !== undefined) { if (plug.loadBot) { plug.loadBot(module.exports.bot[botno]) } } else { plug.load() } } catch (e) { console.log(e) } }) } loadplug() const createBot = function createBot(host,oldId){ const bot = new EventEmitter(); bot._client = m.createClient({ host: host.host, port: host.port ? host.port : 25565, username: generateUser(), version: settings.version_mc }) bot._client.on("success",()=>{ //console.log(bot); }) if(typeof oldId !== "undefined"){ for(const i in module.exports.bot[oldId].interval){ clearInterval(module.exports.bot[oldId].interval[i]); } delete module.exports.bot[oldId]; bot.id=oldId; module.exports.bot[oldId]=bot; console.log("Re-creating bot "+bot.id) } else { bot.id=module.exports.bot.length; module.exports.bot.push(bot); console.log("Creating bot "+bot.id) } bot.host=host; bot.interval={}; bot.info=(msg)=>{ console.log(`[${bot.id}] [info] ${msg}`) } /*bot.error=(msg){ console.log(`[${bot.id}] [error] ${msg}`) }*/ loadplug(bot.id); bot._client.on("error",(err)=>{ console.log(err) }) } for(const i in settings.servers){ createBot(settings.servers[i]); } module.exports.createBot = createBot;