diff options
author | Alexey Krainev <xmrvizzy@ya.ru> | 2021-01-19 22:23:47 +0500 |
---|---|---|
committer | Alexey Krainev <xmrvizzy@ya.ru> | 2021-01-19 22:23:47 +0500 |
commit | df3eb315d2bdcb398af60a38dc44a4e739fd2128 (patch) | |
tree | 60c2c3a0b83a3a7624539914c42667e92f0465a5 /src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java | |
parent | 83918b58ef710f5e425ff6b5577f43382921300f (diff) | |
download | Skyblocker-df3eb315d2bdcb398af60a38dc44a4e739fd2128.tar.gz Skyblocker-df3eb315d2bdcb398af60a38dc44a4e739fd2128.tar.bz2 Skyblocker-df3eb315d2bdcb398af60a38dc44a4e739fd2128.zip |
v1.0.2
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java | 103 |
1 files changed, 89 insertions, 14 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java index d305370e..7318bc3f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java @@ -1,24 +1,99 @@ package me.xmrvizzy.skyblocker.utils; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.skyblock.Attribute; import net.minecraft.client.MinecraftClient; +import net.minecraft.scoreboard.Scoreboard; import net.minecraft.scoreboard.ScoreboardObjective; -import net.minecraft.text.Text; +import net.minecraft.scoreboard.ScoreboardPlayerScore; +import net.minecraft.scoreboard.Team; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.regex.Pattern; +import java.util.stream.Collectors; public class Utils { - public static boolean isSkyblock() { - MinecraftClient client = MinecraftClient.getInstance(); - if (client != null && client.world != null && !client.isInSingleplayer()) { - ScoreboardObjective scoreboard = client.world.getScoreboard().getObjectiveForSlot(1); - if (scoreboard != null) { - String name = ""; - for (Text text : scoreboard.getDisplayName().getSiblings()) { - name += text.getString(); - } - if (name.contains("SKYBLOCK")) { - return true; - } + public static boolean isSkyblock = false; + public static boolean isDungeons = false; + + public static String parseActionBar(String msg) { + String[] sections = msg.split(" {3,}"); + List<String> unused = new ArrayList<String>(); + + for (String section : sections) { + String clear = Pattern.compile("[^0-9 /]").matcher(section).replaceAll("").trim(); + String[] split = clear.split("/"); + + if (section.contains("❤")) { + if (section.startsWith("§6")) split[0] = split[0].substring(1); + Attribute.HEALTH.set(Integer.parseInt(split[0])); + Attribute.MAX_HEALTH.set(Integer.parseInt(split[1])); + } else if (section.contains("❈")) { + Attribute.DEFENCE.set(Integer.parseInt(clear)); + unused.add(section); + } else if (section.contains("✎")) { + Attribute.MANA.set(Integer.parseInt(split[0])); + Attribute.MAX_MANA.set(Integer.parseInt(split[1])); + } else { + if (section.contains("Drill Fuel") && SkyblockerConfig.get().locations.dwarvenMines.enableDrillFuel) continue; + unused.add(section); } } - return false; + + return String.join(" ", unused); + } + + public static void sbChecker() { + List<String> sidebar = getSidebar(); + String string = sidebar.toString(); + + if (sidebar.isEmpty()) return; + if (sidebar.get(sidebar.size() - 1).equals("www.hypixel.net")) { + if (sidebar.get(0).equals("SKYBLOCK")) isSkyblock = true; + else isSkyblock = false; + + if (isSkyblock && string.contains("The Catacombs")) isDungeons = true; + else isDungeons = false; + } + } + + public static List<String> getSidebar() { + List<String> lines = new ArrayList<>(); + MinecraftClient client = MinecraftClient.getInstance(); + if (client.world == null) return lines; + + Scoreboard scoreboard = client.world.getScoreboard(); + if (scoreboard == null) return lines; + ScoreboardObjective sidebar = scoreboard.getObjectiveForSlot(1); + if (sidebar == null) return lines; + + Collection<ScoreboardPlayerScore> scores = scoreboard.getAllPlayerScores(sidebar); + List<ScoreboardPlayerScore> list = scores.stream() + .filter(input -> input != null && input.getPlayerName() != null && !input.getPlayerName().startsWith("#")) + .collect(Collectors.toList()); + + if (list.size() > 15) { + scores = Lists.newArrayList(Iterables.skip(list, scores.size() - 15)); + } else { + scores = list; + } + + for (ScoreboardPlayerScore score : scores) { + Team team = scoreboard.getPlayerTeam(score.getPlayerName()); + if (team == null) return lines; + String text = team.getPrefix().getString() + team.getSuffix().getString(); + if (text.trim().length() > 0) + lines.add(text); + } + + lines.add(sidebar.getDisplayName().getString()); + Collections.reverse(lines); + + return lines; } }
\ No newline at end of file |