aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRime <81419447+Emirlol@users.noreply.github.com>2024-01-20 13:25:04 +0300
committerRime <81419447+Emirlol@users.noreply.github.com>2024-01-21 09:37:49 +0300
commitb1bfa5e0009b2a969c913e701a56b812517a0700 (patch)
tree106f1ce4a117d13c918bdfb4a441c8372d1315d7
parentf7f8e5f0b8f9d638566e8528e1a64219b8bf40ad (diff)
downloadSkyblocker-b1bfa5e0009b2a969c913e701a56b812517a0700.tar.gz
Skyblocker-b1bfa5e0009b2a969c913e701a56b812517a0700.tar.bz2
Skyblocker-b1bfa5e0009b2a969c913e701a56b812517a0700.zip
Add death message filter and improve death regex
-rw-r--r--src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonScore.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/filters/DeathFilter.java25
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java3
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json4
6 files changed, 46 insertions, 3 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
index e47b008d..4e7f9802 100644
--- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
@@ -996,6 +996,9 @@ public class SkyblockerConfig {
public ChatFilterResult hideMimicKill = ChatFilterResult.PASS;
@SerialEntry
+ public ChatFilterResult hideDeath = ChatFilterResult.PASS;
+
+ @SerialEntry
public boolean hideMana = false;
}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java
index 3fe285de..ce349049 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java
@@ -110,6 +110,14 @@ public class MessageFilterCategory {
newValue -> config.messages.hideMimicKill = newValue)
.controller(ConfigUtils::createEnumCyclingListController)
.build())
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideDeath"))
+ .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.messages.hideDeath.@Tooltip")))
+ .binding(defaults.messages.hideDeath,
+ () -> config.messages.hideDeath,
+ newValue -> config.messages.hideDeath = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
.build();
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonScore.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonScore.java
index c6dbf8dc..a59d5615 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonScore.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonScore.java
@@ -47,7 +47,7 @@ public class DungeonScore {
private static final Pattern CRYPTS_PATTERN = Pattern.compile("Crypts: (?<crypts>\\d+)");
private static final Pattern COMPLETED_ROOMS_PATTERN = Pattern.compile(" *Completed Rooms: (?<rooms>\\d+)");
//Chat patterns
- private static final Pattern DEATHS_PATTERN = Pattern.compile(".*?\u2620 (?<whodied>\\S+) .*");
+ private static final Pattern DEATHS_PATTERN = Pattern.compile(" \\u2620 (?<whodied>\\S+) .*");
//Other patterns
private static final Pattern MIMIC_FLOORS_PATTERN = Pattern.compile("[FM][67]");
@@ -82,6 +82,10 @@ public class DungeonScore {
checkMessageForWatcher(str);
}
});
+ ClientReceiveMessageEvents.GAME_CANCELED.register((message, overlay) -> {
+ if (overlay || !Utils.isInDungeons() || !dungeonStarted) return;
+ checkMessageForDeaths(message.getString());
+ });
}
public static void tick() {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/filters/DeathFilter.java b/src/main/java/de/hysky/skyblocker/skyblock/filters/DeathFilter.java
new file mode 100644
index 00000000..f2b9e7c5
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/filters/DeathFilter.java
@@ -0,0 +1,25 @@
+package de.hysky.skyblocker.skyblock.filters;
+
+import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.utils.chat.ChatFilterResult;
+import de.hysky.skyblocker.utils.chat.ChatPatternListener;
+import net.minecraft.text.Text;
+
+import java.util.regex.Matcher;
+
+public class DeathFilter extends ChatPatternListener {
+
+ public DeathFilter() {
+ super(" \\u2620 .*");
+ }
+
+ @Override
+ protected ChatFilterResult state() {
+ return SkyblockerConfigManager.get().messages.hideDeath;
+ }
+
+ @Override
+ protected boolean onMatch(Text message, Matcher matcher) {
+ return true;
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java b/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java
index 97398625..ee43bc4c 100644
--- a/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java
+++ b/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java
@@ -55,7 +55,8 @@ public interface ChatMessageListener {
new AutopetFilter(),
new ShowOffFilter(),
new ToggleSkyMallFilter(),
- new MimicFilter()
+ new MimicFilter(),
+ new DeathFilter()
};
// Register all listeners to EVENT
for (ChatMessageListener listener : listeners) {
diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json
index 3381e67a..91354ae7 100644
--- a/src/main/resources/assets/skyblocker/lang/en_us.json
+++ b/src/main/resources/assets/skyblocker/lang/en_us.json
@@ -202,7 +202,7 @@
"text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.dungeonScoreMessage.@Tooltip": "Message which will be sent in the chat when reaching %d score in dungeons. The string \"[score]\" will be replaced with the dungeon score (%d).",
"text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableScoreHUD": "Enable Score HUD",
"text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableScoreHUD.@Tooltip": "Displays the dungeon score in the HUD.",
- "text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableScoreHUD.deathMessagesNote": "\n\n\nNote: This only works correctly if death messages are enabled in your skyblock settings.",
+ "text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableScoreHUD.deathMessagesNote": "\n\n\nNote: This only works correctly if death messages are enabled in your skyblock settings. If you want to hide death messages, use this mod's Hide Player Death Messages setting instead to allow further processing of death messages.",
"text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.scoreScaling": "Score Scaling",
"text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit": "Dungeon Chest Profit Calculator",
"text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.enableProfitCalculator": "Enable Profit Calculator",
@@ -305,6 +305,8 @@
"text.autoconfig.skyblocker.option.messages.hideToggleSkyMall.@Tooltip": "Hides those pesky messages telling you to disable the Sky Mall HOTM perk when you want it enabled!",
"text.autoconfig.skyblocker.option.messages.hideMimicKill": "Hide Mimic Kill Messages",
"text.autoconfig.skyblocker.option.messages.hideMimicKill.@Tooltip": "Filters the \"Mimic dead!\" and \"Mimic killed!\" messages from chat.",
+ "text.autoconfig.skyblocker.option.messages.hideDeath": "Hide Player Death Messages",
+ "text.autoconfig.skyblocker.option.messages.hideDeath.@Tooltip": "Filters the player death messages from chat.",
"text.autoconfig.skyblocker.category.slayer": "Slayers",
"text.autoconfig.skyblocker.option.slayer.vampireSlayer": "Vampire Slayer",
"text.autoconfig.skyblocker.option.slayer.vampireSlayer.enableEffigyWaypoints": "Enable Effigy Waypoints",