summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authordestruc7i0n <destruc7i0n@users.noreply.github.com>2021-12-31 13:08:00 -0500
committerdestruc7i0n <destruc7i0n@users.noreply.github.com>2021-12-31 13:08:00 -0500
commit7987f65b4b9625060e78ec4398ec16dd26e48bfa (patch)
treeb9f4d0c40eee600de557158742806d0cbd7e7c2f
parentfallback to bot message if webhook fails (diff)
parentMerge branch 'death-message-regex' of https://github.com/MageLuingil/shulker ... (diff)
downloadshulker-7987f65b4b9625060e78ec4398ec16dd26e48bfa.tar.gz
shulker-7987f65b4b9625060e78ec4398ec16dd26e48bfa.zip
Merge branch 'MageLuingil-death-message-regex'
-rw-r--r--README.md4
-rw-r--r--config.example.json34
-rw-r--r--src/Config.ts2
-rw-r--r--src/MinecraftHandler.ts15
-rw-r--r--src/Shulker.ts11
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 {