botv12/index.js

76 lines
1.7 KiB
JavaScript
Raw Normal View History

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 = [];
2024-10-21 17:47:49 -04:00
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.load(bot)
}
2024-10-21 17:47:49 -04:00
plugins.push(pluginItem) // For rejoining
})
} catch (e) { console.log(e) }
}
const createBot = function createBot (host, oldId) {
const bot = new EventEmitter()
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
2024-10-21 17:47:49 -04:00
for(const pluginItem of plugins){
pluginItem.load(bot)
}
} else {
bot.id = bots.length
bots.push(bot)
}
bot.host = host
bot.interval = {}
2024-10-21 17:47:49 -04:00
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
}