observermc
Version:
A Node.js wrapper and API for multiple Minecraft Servers
59 lines (58 loc) • 3.27 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MinecraftServerEventParser = exports.DefaultTriggers = void 0;
exports.DefaultTriggers = {
paper: {
starting: /\[(?<time>(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)) INFO\]: Starting minecraft server version (?<version>\d\.\d{1,}\.\d{1,}) */g,
online: /\[(?<time>(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)) INFO\]: Done \((?<run>\d{1,2}.\d{3}s)\)! For help, type."help" */g,
offline: /\[(?<time>(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)) INFO\]: ThreadedAnvilChunkStorage: All dimensions are saved */g,
stopping: /\[(?<time>(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)) INFO\]: Stopping server */g,
login: /\[(?<time>(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)) INFO\]: (?<user>\w+)\[\/(?<ip>(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])):(?<port>[0-9]+)\] logged in with entity id (?<entity>[0-9]+) at \(\[(?<world>\w+)\](?<x>\-?[0-9]+\.[0-9E]+), (?<y>\-?[0-9]+\.[0-9E]+), (?<z>\-?[0-9]+\.[0-9E]+)\) */g,
logout: /\[(?<time>(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)) INFO\]: (?<user>\w+) left the game */g,
rconRunning: /\[(?<time>(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)) INFO\]: RCON running on (?<ip>(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])):(?<port>[0-9]+) */g,
},
};
var MinecraftServerEventParser = /** @class */ (function () {
function MinecraftServerEventParser(serverType, customEvents) {
this.serverType = serverType;
this._triggers = exports.DefaultTriggers;
if (customEvents) {
// Create empty events object
var cEvents = {};
// Save customEvents in empty events object
cEvents[this.serverType] = customEvents;
// Merge custom events into event triggers
this._triggers = __assign(__assign({}, exports.DefaultTriggers), cEvents);
}
}
MinecraftServerEventParser.prototype.parse = function (line) {
var triggers = this._triggers[this.serverType];
for (var event_1 in triggers) {
var matches = RegExp(triggers[event_1]).exec(line);
if (matches !== null) {
return { event: event_1, data: matches.groups };
}
}
return { event: "line", data: line };
};
Object.defineProperty(MinecraftServerEventParser.prototype, "triggers", {
get: function () {
return this._triggers[this.serverType];
},
enumerable: false,
configurable: true
});
return MinecraftServerEventParser;
}());
exports.MinecraftServerEventParser = MinecraftServerEventParser;