diff options
-rw-r--r-- | README.md | 4 | ||||
-rw-r--r-- | config.example.json | 34 | ||||
-rw-r--r-- | src/Config.ts | 2 | ||||
-rw-r--r-- | src/MinecraftHandler.ts | 15 | ||||
-rw-r--r-- | src/Shulker.ts | 11 |
5 files changed, 23 insertions, 43 deletions
diff --git a/README.md b/README.md index 459acdd..08594dd 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,7 @@ tail -F /PATH_TO_MINECRAFT_SERVER_INSTALL/logs/latest.log | grep --line-buffered "WEBHOOK": "/minecraft/hook", /* Web hook, where to send the log to */ "REGEX_SERVER_PREFIX": "\\[Server thread/INFO\\]:", /* What the lines of the log should start with */ "REGEX_MATCH_CHAT_MC": "^<([^>]*)> (.*)", /* What to match for chat (best to leave as default) */ + "REGEX_DEATH_MESSAGE": "^[\w_]+ (died|...)", /* What to match for death messages (best leave this default too) */ "REGEX_IGNORED_CHAT": "packets too frequently", /* What to ignore, you can put any regex for swear words for example and it will be ignored */ "SERVER_NAME": "Shulker", /* The username used when displaying any server information in chat, e.g., Server - Shulker : Server message here*/ @@ -93,8 +94,7 @@ tail -F /PATH_TO_MINECRAFT_SERVER_INSTALL/logs/latest.log | grep --line-buffered "SHOW_PLAYER_CONN_STAT": false, /* Shows player connection status in chat, e.g., Server - Shulker : TheMachine joined the game */ "SHOW_PLAYER_ADVANCEMENT": false, /* Shows when players earn advancements in chat, e.g., Server - Shulker : TheMachine has made the advacement [MEME - Machine] */ "SHOW_PLAYER_DEATH": false, /* Shows when players die in chat, e.g., Server - Shulker : TheMachine was blown up by creeper */ - "SHOW_PLAYER_ME": false, /* Shows when players use the /me command, e.g. **destruc7i0n** says hello */ - "DEATH_KEY_WORDS": ["shot", "fell", "etc".] /* Key words to look for when trying to identify a death message. (As of 3/11/2019 this list is up to date) */ + "SHOW_PLAYER_ME": false /* Shows when players use the /me command, e.g. **destruc7i0n** says hello */ } ``` diff --git a/config.example.json b/config.example.json index c7deb0d..4225ff4 100644 --- a/config.example.json +++ b/config.example.json @@ -31,6 +31,7 @@ "WEBHOOK": "/minecraft/hook", "REGEX_SERVER_PREFIX": "\\[Server thread/INFO\\]:", "REGEX_MATCH_CHAT_MC": "^<([^>]*)> (.*)", + "REGEX_DEATH_MESSAGE": "^[\\w_]+ (died|drowned|blew up|fell|burned|froze|starved|suffocated|withered|walked into a cactus|experienced kinetic energy|discovered (the )?floor was lava|tried to swim in lava|hit the ground|didn't want to live|went (up in flames|off with a bang)|walked into (fire|danger)|was (killed|shot|slain|pummeled|pricked|blown up|impaled|squashed|squished|skewered|poked|roasted|burnt|frozen|struck by lightning|fireballed|stung|doomed))", "REGEX_IGNORED_CHAT": "packets too frequently", "SERVER_NAME": "Shulker", @@ -41,36 +42,5 @@ "SHOW_PLAYER_CONN_STAT": false, "SHOW_PLAYER_ADVANCEMENT": false, "SHOW_PLAYER_DEATH": false, - "SHOW_PLAYER_ME": false, - "DEATH_KEY_WORDS": [ - "shot", - "fell", - "death", - "died", - "doomed", - "pummeled", - "removed", - "didn't want", - "withered", - "squashed", - "flames", - "burnt", - "walked into", - "bang", - "roasted", - "squished", - "drowned", - "killed", - "slain", - "blown", - "blew", - "suffocated", - "struck", - "lava", - "impaled", - "speared", - "fireballed", - "finished", - "kinetic" - ] + "SHOW_PLAYER_ME": false } diff --git a/src/Config.ts b/src/Config.ts index bcc45ef..485d6ae 100644 --- a/src/Config.ts +++ b/src/Config.ts @@ -34,6 +34,7 @@ export interface Config { WEBHOOK: string REGEX_SERVER_PREFIX: string REGEX_MATCH_CHAT_MC: string + REGEX_DEATH_MESSAGE: string REGEX_IGNORED_CHAT: string SERVER_NAME: string @@ -45,5 +46,4 @@ export interface Config { SHOW_PLAYER_ADVANCEMENT: boolean SHOW_PLAYER_DEATH: boolean SHOW_PLAYER_ME: boolean - DEATH_KEY_WORDS: string[] } diff --git a/src/MinecraftHandler.ts b/src/MinecraftHandler.ts index 3353994..48c30b4 100644 --- a/src/MinecraftHandler.ts +++ b/src/MinecraftHandler.ts @@ -111,15 +111,14 @@ class MinecraftHandler { return { username: serverUsername, message: `**${username}** ${rest}` } } } else if (this.config.SHOW_PLAYER_DEATH) { - for (let word of this.config.DEATH_KEY_WORDS){ - if (data.includes(word)){ - if (this.config.DEBUG) { - console.log( - `[DEBUG] A player died. Matched key word "${word}"` - ) - } - return { username: serverUsername, message: logLine } + const death_msg_re = new RegExp(this.config.REGEX_DEATH_MESSAGE) + const death_msg_match = logLine.match(death_msg_re) + + if (death_msg_match) { + if (this.config.DEBUG) { + console.log(`[DEBUG] A player died. Matched on "${death_msg_match[1]}"`) } + return { username: serverUsername, message: logLine } } } diff --git a/src/Shulker.ts b/src/Shulker.ts index 220cd03..517d1e2 100644 --- a/src/Shulker.ts +++ b/src/Shulker.ts @@ -10,6 +10,11 @@ class Shulker { discordClient: DiscordClient handler: Handler + readonly deprecatedConfigs: string[] = ['DEATH_KEY_WORDS']; + + constructor() { + } + loadConfig () { const configFile = process.argv.length > 2 ? process.argv[2] : './config.json' if (!fs.existsSync(configFile)) { @@ -25,6 +30,12 @@ class Shulker { return false } + for (let option of this.deprecatedConfigs) { + if (this.config.hasOwnProperty(option)) { + console.log('[WARN] Using deprecated config option ' + option + '. Check README.md for current options.') + } + } + if (this.config.USE_WEBHOOKS) { console.log('[INFO] Using Discord WebHooks to send messages') } else { |