diff options
author | Lorenz <ESs95s3P5z8Pheb> | 2022-07-09 03:20:48 +0200 |
---|---|---|
committer | Lorenz <ESs95s3P5z8Pheb> | 2022-07-09 03:20:48 +0200 |
commit | f842a84e3aae31e5fe84b52f23550efca526f6aa (patch) | |
tree | 6adfe526a4e9cd9e0544df53ff902a56c823bea7 | |
parent | 1b45af4cca64914c61648da584f523b90ea0e24e (diff) | |
download | skyhanni-f842a84e3aae31e5fe84b52f23550efca526f6aa.tar.gz skyhanni-f842a84e3aae31e5fe84b52f23550efca526f6aa.tar.bz2 skyhanni-f842a84e3aae31e5fe84b52f23550efca526f6aa.zip |
add dungeon api stuff
-rw-r--r-- | src/main/java/at/lorenz/mod/LorenzMod.java | 8 | ||||
-rw-r--r-- | src/main/java/at/lorenz/mod/dungeon/DungeonData.kt | 34 | ||||
-rw-r--r-- | src/main/java/at/lorenz/mod/events/DungeonEnterEvent.kt | 3 | ||||
-rw-r--r-- | src/main/java/at/lorenz/mod/misc/HypixelData.kt | 1 | ||||
-rw-r--r-- | src/main/java/at/lorenz/mod/misc/ScoreboardData.kt | 45 |
5 files changed, 87 insertions, 4 deletions
diff --git a/src/main/java/at/lorenz/mod/LorenzMod.java b/src/main/java/at/lorenz/mod/LorenzMod.java index 9b20e924d..39da77c6a 100644 --- a/src/main/java/at/lorenz/mod/LorenzMod.java +++ b/src/main/java/at/lorenz/mod/LorenzMod.java @@ -7,11 +7,9 @@ import at.lorenz.mod.chat.ChatManager; import at.lorenz.mod.chat.PlayerChatFilter; import at.lorenz.mod.config.Features; import at.lorenz.mod.dungeon.DungeonChatFilter; +import at.lorenz.mod.dungeon.DungeonData; import at.lorenz.mod.dungeon.DungeonHighlightClickedBlocks; -import at.lorenz.mod.misc.ButtonOnPause; -import at.lorenz.mod.misc.CurrentPetDisplay; -import at.lorenz.mod.misc.ExpBottleOnGroundHider; -import at.lorenz.mod.misc.HypixelData; +import at.lorenz.mod.misc.*; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.thatgravyboat.skyblockhud_2.commands.Commands; @@ -49,6 +47,8 @@ public class LorenzMod { MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(new ChatManager()); MinecraftForge.EVENT_BUS.register(new HypixelData()); + MinecraftForge.EVENT_BUS.register(new DungeonData()); + MinecraftForge.EVENT_BUS.register(new ScoreboardData()); MinecraftForge.EVENT_BUS.register(new BazaarOrderHelper()); MinecraftForge.EVENT_BUS.register(new ChatFilter()); diff --git a/src/main/java/at/lorenz/mod/dungeon/DungeonData.kt b/src/main/java/at/lorenz/mod/dungeon/DungeonData.kt new file mode 100644 index 000000000..d14183d99 --- /dev/null +++ b/src/main/java/at/lorenz/mod/dungeon/DungeonData.kt @@ -0,0 +1,34 @@ +package at.lorenz.mod.dungeon + +import at.lorenz.mod.events.DungeonEnterEvent +import at.lorenz.mod.misc.ScoreboardData +import at.lorenz.mod.utils.LorenzUtils +import net.minecraftforge.event.world.WorldEvent +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import net.minecraftforge.fml.common.gameevent.TickEvent + +class DungeonData { + + var dungeonFloor: String? = null + + @SubscribeEvent + fun onTick(event: TickEvent.ClientTickEvent) { + if (event.phase != TickEvent.Phase.START) return + if (LorenzUtils.inDungeons) { + if (dungeonFloor == null) { + for (line in ScoreboardData.sidebarLines) { + if (line.contains("The Catacombs (")) { + dungeonFloor = line.substringAfter("(").substringBefore(")") + DungeonEnterEvent(dungeonFloor!!).postAndCatch() + break + } + } + } + } + } + + @SubscribeEvent + fun onWorldChange(event: WorldEvent.Load) { + dungeonFloor = null + } +}
\ No newline at end of file diff --git a/src/main/java/at/lorenz/mod/events/DungeonEnterEvent.kt b/src/main/java/at/lorenz/mod/events/DungeonEnterEvent.kt new file mode 100644 index 000000000..a1cb18101 --- /dev/null +++ b/src/main/java/at/lorenz/mod/events/DungeonEnterEvent.kt @@ -0,0 +1,3 @@ +package at.lorenz.mod.events + +class DungeonEnterEvent(dungeonFloor: String): LorenzEvent()
\ No newline at end of file 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<String> = 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<String> { + 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 |