From b1749bd349f8be962fe00469d8d9d754422ff850 Mon Sep 17 00:00:00 2001 From: Lorenz Date: Sat, 9 Jul 2022 03:20:48 +0200 Subject: add dungeon api stuff --- src/main/java/at/lorenz/mod/misc/HypixelData.kt | 1 + src/main/java/at/lorenz/mod/misc/ScoreboardData.kt | 45 ++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/main/java/at/lorenz/mod/misc/ScoreboardData.kt (limited to 'src/main/java/at/lorenz/mod/misc') diff --git a/src/main/java/at/lorenz/mod/misc/HypixelData.kt b/src/main/java/at/lorenz/mod/misc/HypixelData.kt index 0c2de6683..9d83e2679 100644 --- a/src/main/java/at/lorenz/mod/misc/HypixelData.kt +++ b/src/main/java/at/lorenz/mod/misc/HypixelData.kt @@ -1,5 +1,6 @@ package at.lorenz.mod.misc +import at.lorenz.mod.events.DungeonEnterEvent import at.lorenz.mod.events.PacketEvent import at.lorenz.mod.utils.LorenzUtils import net.minecraft.client.Minecraft diff --git a/src/main/java/at/lorenz/mod/misc/ScoreboardData.kt b/src/main/java/at/lorenz/mod/misc/ScoreboardData.kt new file mode 100644 index 000000000..e1735104d --- /dev/null +++ b/src/main/java/at/lorenz/mod/misc/ScoreboardData.kt @@ -0,0 +1,45 @@ +package at.lorenz.mod.misc + +import at.lorenz.mod.utils.LorenzUtils.removeColorCodes +import net.minecraft.client.Minecraft +import net.minecraft.scoreboard.Score +import net.minecraft.scoreboard.ScorePlayerTeam +import net.minecraftforge.fml.common.eventhandler.EventPriority +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import net.minecraftforge.fml.common.gameevent.TickEvent + +class ScoreboardData { + + companion object { + var sidebarLines: List = emptyList() + } + + @SubscribeEvent(priority = EventPriority.HIGHEST) + fun onTick(event: TickEvent.ClientTickEvent) { + if (event.phase != TickEvent.Phase.START) return + + sidebarLines = fetchScoreboardLines().map { cleanSB(it) } + } + + private fun cleanSB(scoreboard: String): String { + return scoreboard.removeColorCodes().toCharArray().filter { it.code in 21..126 }.joinToString(separator = "") + } + + fun fetchScoreboardLines(): List { + val scoreboard = Minecraft.getMinecraft().theWorld?.scoreboard ?: return emptyList() + val objective = scoreboard.getObjectiveInDisplaySlot(1) ?: return emptyList() + var scores = scoreboard.getSortedScores(objective) + val list = scores.filter { input: Score? -> + input != null && input.playerName != null && !input.playerName + .startsWith("#") + } + scores = if (list.size > 15) { + list.drop(15) + } else { + list + } + return scores.map { + ScorePlayerTeam.formatPlayerName(scoreboard.getPlayersTeam(it.playerName), it.playerName) + } + } +} \ No newline at end of file -- cgit