UNPKG

myncraftjs

Version:

Simple minecraft bot package extends from mineflayer

124 lines (123 loc) 4.09 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Client = void 0; const events_1 = __importDefault(require("events")); const mineflayer_1 = require("mineflayer"); const logger_1 = require("@myncraftjs/logger"); const colorchat_1 = __importDefault(require("@myncraftjs/colorchat")); const spawncommands_1 = __importDefault(require("@myncraftjs/spawncommands")); const defaultEventsSetup_1 = __importDefault(require("../utils/defaultEventsSetup")); class Client extends events_1.default { _client; bot; logger; options; plugins = []; _persistentListeners = []; constructor(opt) { super(); opt.hideErrors ??= true; opt.logEvent ??= true; this.options = opt; this.bot = (0, mineflayer_1.createBot)(opt); this._client = this.bot._client; this.loadPlugins([colorchat_1.default, spawncommands_1.default]); this.logger = new logger_1.Logger({ header: opt.username || "Bot" }); if (!(opt.logger) && typeof opt.logger === "boolean") { this.logger.error = () => { }; this.logger.log = () => { }; this.logger.warn = () => { }; } if (opt.logEvent) { const error = this.logger.error; const log = this.logger.log; const warn = this.logger.warn; this.logger.error = (...texts) => { this.emit("logger:error", texts); error(texts); }; this.logger.log = (...texts) => { this.emit("logger:log", texts); log(texts); }; this.logger.error = (...texts) => { this.emit("logger:error", texts); warn(texts); }; } console.clear(); (0, defaultEventsSetup_1.default)(this); this.bot.on("resourcePack", () => { this.bot.acceptResourcePack(); }); } restart() { this.bot.end(); this._client.end(); this.bot = (0, mineflayer_1.createBot)(this.options); this._client = this.bot._client; this.loadPlugins(this.plugins); console.clear(); this.bot.on("resourcePack", () => { this.bot.acceptResourcePack(); }); this._bindPersistentListeners(); } getBot() { return this.bot; } _bindPersistentListeners() { for (const { type, event, listener } of this._persistentListeners) { if (type === "on") { this.bot.on(event, listener); } else { this.bot.once(event, listener); } } } on(event, listener) { this._persistentListeners.push({ type: "on", event, listener }); super.on(event, listener); this.bot.on(event, listener); return this; } once(event, listener) { this._persistentListeners.push({ type: "once", event, listener }); super.once(event, listener); this.bot.once(event, listener); return this; } loadPlugin(plugin) { if (!this.plugins.includes(plugin)) this.plugins.push(plugin); this.bot.loadPlugin(plugin); } loadPlugins(plugins) { plugins.forEach(plugin => this.bot.loadPlugin(plugin)); } chat(message) { if (message.startsWith('/')) { this.bot.chat(message); } else { if (message.includes("\n")) message.split("\n").forEach(m => { console.log("Chat message:", m); this.bot.chat(m); }); else this.bot.chat(message); } } lookAt(username) { const player = this.bot.players[username]; if (player && player.entity) { this.bot.lookAt(player.entity.position); } } } exports.Client = Client;