feat: add a basic feature to rejoin on server restart

This commit is contained in:
jay 2020-12-24 13:38:16 +05:00
parent 0ae961521f
commit 086251bce6
2 changed files with 27 additions and 14 deletions

View File

@ -9,19 +9,22 @@ let cfg = {
const mineflayer = require("mineflayer"); const mineflayer = require("mineflayer");
// const { createGetAccessor } = require('typescript'); // const { createGetAccessor } = require('typescript');
const bot = const options = !isNaN(parseInt(process.argv[3])) && parseInt(process.argv[3]) > 1e2 ?
!isNaN(parseInt(process.argv[3])) && parseInt(process.argv[3]) > 1e2 ? {
mineflayer.createBot({ host: process.argv[2] || process.env.MINECRAFT_HOST || env.MINECRAFT_HOST || 'localhost', // Change this to the ip you want.
host: process.argv[2] || process.env.MINECRAFT_HOST || env.MINECRAFT_HOST || 'localhost', // Change this to the ip you want. port: parseInt(process.argv[3]) || process.env.MINECRAFT_PORT || env.MINECRAFT_PORT // || 58471,
port: parseInt(process.argv[3]) || process.env.MINECRAFT_PORT || env.MINECRAFT_PORT // || 58471, }
}) :
: {
mineflayer.createBot({ host: process.argv[2] || process.env.MINECRAFT_HOST || env.MINECRAFT_HOST || 'localhost', // Change this to the ip you want.
host: process.argv[2] || process.env.MINECRAFT_HOST || env.MINECRAFT_HOST || 'localhost', // Change this to the ip you want. username: process.argv[3] || process.env.MINECRAFT_USER || env.MINECRAFT_USER,
username: process.argv[3] || process.env.MINECRAFT_USER || env.MINECRAFT_USER, password: process.argv[4] || process.env.MINECRAFT_PASS || env.MINECRAFT_PASS,
password: process.argv[4] || process.env.MINECRAFT_PASS || env.MINECRAFT_PASS, // port: process.argv[5] || process.env.MINECRAFT_PORT || 58471,
// port: process.argv[5] || process.env.MINECRAFT_PORT || 58471, }
})
const bot = mineflayer.createBot(options)
cfg.botOptions = options
let plugins = {} let plugins = {}

View File

@ -46,7 +46,17 @@ const events = {
} }
} }
, chat: command , chat: command
, kicked: (reason, loggedIn) => console.warn(reason, loggedIn) , kicked: function rejoin(reason, loggedIn) {
console.warn(reason, loggedIn && "logged_in")
if (reason.extra && reason.extra[0].text === "Server closed") {
bot.quit()
bot.end()
// TODO implement all startup features (maybe refactor all into a single function / module?)
setTimeout((bot, cfg) => {
bot = mineflayer.createBot(cfg.botOptions)
}, 15 * 60 * 1000, bot, cfg);
}
}
} }
const events_registered = [] const events_registered = []