From 2ca33023ce5ebc0e72ca13802e7e25813a780860 Mon Sep 17 00:00:00 2001
From: LifeIsAParadox <LifeIsAParadox@users.noreply.github.com>
Date: Mon, 31 Jan 2022 17:41:46 +0100
Subject: simplify the logic of scoreboard information

---
 .../java/me/xmrvizzy/skyblocker/utils/Utils.java   | 53 ++++++++++------------
 1 file changed, 23 insertions(+), 30 deletions(-)

(limited to 'src/main/java/me/xmrvizzy/skyblocker/utils')

diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
index c8e787e9..a4736242 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
@@ -9,6 +9,7 @@ import net.minecraft.scoreboard.Scoreboard;
 import net.minecraft.scoreboard.ScoreboardObjective;
 import net.minecraft.scoreboard.ScoreboardPlayerScore;
 import net.minecraft.scoreboard.Team;
+import net.minecraft.util.Formatting;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -104,37 +105,29 @@ public class Utils {
 
 
     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;
-        }
+        try {
+            assert MinecraftClient.getInstance().player != null;
+            Scoreboard scoreboard = MinecraftClient.getInstance().player.getScoreboard();
+            ScoreboardObjective objective = scoreboard.getObjectiveForSlot(1);
+            List<String> lines = new ArrayList<>();
+            for (ScoreboardPlayerScore score : scoreboard.getAllPlayerScores(objective)) {
+                Team team = scoreboard.getPlayerTeam(score.getPlayerName());
+                if (team != null) {
+                    String line = team.getPrefix().getString() + team.getSuffix().getString();
+                    if (line.trim().length() > 0) {
+                        String formatted = Formatting.strip(line);
+                        lines.add(formatted);
+                    }
+                }
+            }
 
-        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);
+            if (objective != null) {
+                lines.add(objective.getDisplayName().getString());
+                Collections.reverse(lines);
+            }
+            return lines;
+        } catch (NullPointerException e) {
+            return null;
         }
-
-        lines.add(sidebar.getDisplayName().getString());
-        Collections.reverse(lines);
-
-        return lines;
     }
 }
\ No newline at end of file
-- 
cgit