forked from wmantly/mc-bot-town
78 lines
2.4 KiB
JavaScript
78 lines
2.4 KiB
JavaScript
'use strict';
|
|
|
|
// Require log-web early to capture all console output from other modules
|
|
const LogWeb = require('./log-web');
|
|
|
|
const {sleep} = require('../utils');
|
|
const conf = require('../conf');
|
|
const {CJbot} = require('../model/minecraft');
|
|
|
|
const commands = require('./commands');
|
|
|
|
CJbot.pluginAdd(require('./swing'));
|
|
CJbot.pluginAdd(require('./craft'));
|
|
CJbot.pluginAdd(require('./tp'));
|
|
CJbot.pluginAdd(require('./ai'));
|
|
CJbot.pluginAdd(require('./guardianFarm'));
|
|
CJbot.pluginAdd(require('./goldFarm'));
|
|
CJbot.pluginAdd(require('./storage'));
|
|
CJbot.pluginAdd(require('./auto-eat'));
|
|
|
|
for(let name in conf.mc.bots){
|
|
if(CJbot.bots[name]) continue;
|
|
let bot = new CJbot({name, host: conf.mc.host, ...conf.mc.bots[name]});
|
|
CJbot.bots[name] = bot;
|
|
|
|
for(let command of conf.mc.bots[name].commands || ['default']){
|
|
for(let [name, toAdd] of Object.entries(commands[command])){
|
|
bot.addCommand(name, toAdd)
|
|
}
|
|
}
|
|
}
|
|
|
|
// Initialize storage database early so web read-only routes work even with bots offline
|
|
const Database = require('./storage/database');
|
|
if (!Database.db) {
|
|
Database.initialize(conf.storage.dbPath || './storage/storage.db')
|
|
.then(async () => {
|
|
console.log('Early DB initialization complete');
|
|
// Seed invite sites from config after DB is ready
|
|
if (conf.invite && conf.invite.seedSites) {
|
|
await Database.seedInviteSites(conf.invite.seedSites);
|
|
console.log('Invite sites seeded');
|
|
}
|
|
})
|
|
.catch(err => console.error('Failed to initialize storage DB:', err));
|
|
}
|
|
|
|
// Start app-level web server (always available, even before bots connect)
|
|
const webServer = require('./web-server');
|
|
const ActivityWeb = require('./activity-web');
|
|
const ChatWeb = require('./chat-web');
|
|
const InvitePlugin = require('./invite');
|
|
webServer.queuePlugin(ChatWeb);
|
|
webServer.queuePlugin(ActivityWeb);
|
|
webServer.queuePlugin(LogWeb);
|
|
webServer.queuePlugin(InvitePlugin);
|
|
webServer.start().catch(err => console.error('Failed to start web server:', err));
|
|
|
|
(async ()=>{try{
|
|
for(let name in CJbot.bots){
|
|
let bot = CJbot.bots[name];
|
|
if(bot.autoConnect){
|
|
console.log('Trying to connect', name)
|
|
console.log('Status for', name, await bot.connect());
|
|
|
|
// bot.bot.setControlState('jump', true);
|
|
// await sleep(5000);
|
|
// bot.bot.setControlState('jump', false);
|
|
await sleep(30000);
|
|
}
|
|
}
|
|
}catch(e){
|
|
console.log('!!!!!!!! error:', e)
|
|
}})()
|
|
|
|
|
|
// module.exports = {bot: ez, henry, owen, linda, jimin, nova, ez};
|