From 2ed9e4a59ed99f3b9927a3cd6cda3f19d652fd30 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal002@users.noreply.github.com> Date: Tue, 26 Sep 2023 11:47:58 +0200 Subject: Feature: Color class levels in tab list (#398) Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com> --- .../skyhanni/features/dungeon/DungeonLevelColor.kt | 24 +++++++-------- .../features/dungeon/DungeonRankTabListColor.kt | 34 ++++++++++++++++++++++ 2 files changed, 46 insertions(+), 12 deletions(-) create mode 100644 src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonRankTabListColor.kt (limited to 'src/main/java/at/hannibal2/skyhanni/features/dungeon') diff --git a/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonLevelColor.kt b/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonLevelColor.kt index 4f5ca684f..2a044adef 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonLevelColor.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonLevelColor.kt @@ -34,16 +34,16 @@ class DungeonLevelColor { } } } - - private fun getColor(level: Int): String { - if (level >= 50) return "§c§l" - if (level >= 45) return "§c" - if (level >= 40) return "§d" - if (level >= 35) return "§6" - if (level >= 30) return "§5" - if (level >= 25) return "§9" - if (level >= 20) return "§a" - if (level >= 10) return "§f" - return "§7" - } } + +fun getColor(level: Int): String { + if (level >= 50) return "§c§l" + if (level >= 45) return "§c" + if (level >= 40) return "§d" + if (level >= 35) return "§6" + if (level >= 30) return "§5" + if (level >= 25) return "§9" + if (level >= 20) return "§a" + if (level >= 10) return "§f" + return "§7" +} \ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonRankTabListColor.kt b/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonRankTabListColor.kt new file mode 100644 index 000000000..9a28dcc06 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonRankTabListColor.kt @@ -0,0 +1,34 @@ +package at.hannibal2.skyhanni.features.dungeon + +import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.events.TabListLineRenderEvent +import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.NumberUtil.romanToDecimal +import at.hannibal2.skyhanni.utils.StringUtils.cleanPlayerName +import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent + +class DungeonRankTabListColor { + private val config get() = SkyHanniMod.feature.dungeon.tabList + private val pattern = "§r(?.*) §r§f\\(§r§d(?.*) (?.*)§r§f\\)§r".toPattern() + + @SubscribeEvent + fun onTabListText(event: TabListLineRenderEvent) { + if (!isEnabled()) return + + pattern.matchMatcher(event.text) { + val playerName = group("playerName") + val split = playerName.split(" ") + val sbLevel = split[0] + val cleanName = split[1].cleanPlayerName() + + val className = group("className") + val level = group("classLevel").romanToDecimal() + val color = getColor(level) + + event.text = "$sbLevel §b$cleanName §7(§e$className $color$level§7)" + } + } + + fun isEnabled() = LorenzUtils.inDungeons && config.coloredClassLevel +} -- cgit