diff options
Diffstat (limited to 'src/main/java/com/thatgravyboat/skyblockhud/api')
4 files changed, 120 insertions, 103 deletions
diff --git a/src/main/java/com/thatgravyboat/skyblockhud/api/LeaderboardGetter.java b/src/main/java/com/thatgravyboat/skyblockhud/api/LeaderboardGetter.java index 0833a0d..b722df1 100644 --- a/src/main/java/com/thatgravyboat/skyblockhud/api/LeaderboardGetter.java +++ b/src/main/java/com/thatgravyboat/skyblockhud/api/LeaderboardGetter.java @@ -19,79 +19,96 @@ import net.minecraftforge.fml.common.gameevent.TickEvent; public class LeaderboardGetter { - private static Map<Integer, String> cachedScores = new HashMap<>(); - private static List<String> cachedScoresList = new ArrayList<>(); + private static Map<Integer, String> cachedScores = new HashMap<>(); + private static List<String> cachedScoresList = new ArrayList<>(); - private static int ticks = 0; + private static int ticks = 0; - @SubscribeEvent - public void onClientUpdate(TickEvent.ClientTickEvent event) { - if (event.phase.equals(TickEvent.Phase.START)) return; - ticks++; - if (ticks % 5 != 0) return; + @SubscribeEvent + public void onClientUpdate(TickEvent.ClientTickEvent event) { + if (event.phase.equals(TickEvent.Phase.START)) return; + ticks++; + if (ticks % 5 != 0) return; - Minecraft mc = Minecraft.getMinecraft(); - if (mc.theWorld != null) { - Scoreboard scoreboard = mc.theWorld.getScoreboard(); - ScoreObjective sidebarObjective = scoreboard.getObjectiveInDisplaySlot(1); + Minecraft mc = Minecraft.getMinecraft(); + if (mc.theWorld != null) { + Scoreboard scoreboard = mc.theWorld.getScoreboard(); + ScoreObjective sidebarObjective = scoreboard.getObjectiveInDisplaySlot( + 1 + ); - if ( - sidebarObjective != null && - !MinecraftForge.EVENT_BUS.post( - new SidebarPreGetEvent(scoreboard, sidebarObjective) - ) - ) { - Collection<Score> scoreList = sidebarObjective - .getScoreboard() - .getSortedScores(sidebarObjective); - Map<Integer, String> scores = scoreList - .stream() - .collect(Collectors.toMap(Score::getScorePoints, this::getLine)); + if ( + sidebarObjective != null && + !MinecraftForge.EVENT_BUS.post( + new SidebarPreGetEvent(scoreboard, sidebarObjective) + ) + ) { + Collection<Score> scoreList = sidebarObjective + .getScoreboard() + .getSortedScores(sidebarObjective); + Map<Integer, String> scores = scoreList + .stream() + .collect( + Collectors.toMap(Score::getScorePoints, this::getLine) + ); - if (!cachedScores.equals(scores)) { - scores.forEach( - (score, name) -> { - if ( - cachedScores.get(score) == null || - !cachedScores.get(score).equals(name) - ) { + if (!cachedScores.equals(scores)) { + scores.forEach( + (score, name) -> { + if ( + cachedScores.get(score) == null || + !cachedScores.get(score).equals(name) + ) { + MinecraftForge.EVENT_BUS.post( + new SidebarLineUpdateEvent( + name, + SCOREBOARD_CHARACTERS + .matcher(name) + .replaceAll("") + .trim(), + score, + scores.size(), + scoreboard, + sidebarObjective + ) + ); + } + } + ); + cachedScores = scores; + cachedScoresList = + scores + .values() + .stream() + .map( + name -> + SCOREBOARD_CHARACTERS + .matcher(name) + .replaceAll("") + .trim() + ) + .collect(Collectors.toList()); + } MinecraftForge.EVENT_BUS.post( - new SidebarLineUpdateEvent( - name, - SCOREBOARD_CHARACTERS.matcher(name).replaceAll("").trim(), - score, - scores.size(), - scoreboard, - sidebarObjective - ) + new SidebarPostEvent( + scoreboard, + sidebarObjective, + cachedScoresList + ) ); - } } - ); - cachedScores = scores; - cachedScoresList = - scores - .values() - .stream() - .map( - name -> - SCOREBOARD_CHARACTERS.matcher(name).replaceAll("").trim() - ) - .collect(Collectors.toList()); } - MinecraftForge.EVENT_BUS.post( - new SidebarPostEvent(scoreboard, sidebarObjective, cachedScoresList) - ); - } } - } - public String getLine(Score score) { - ScorePlayerTeam scorePlayerTeam = score - .getScoreScoreboard() - .getPlayersTeam(score.getPlayerName()); - return Utils.removeColor( - ScorePlayerTeam.formatPlayerName(scorePlayerTeam, score.getPlayerName()) - ); - } + public String getLine(Score score) { + ScorePlayerTeam scorePlayerTeam = score + .getScoreScoreboard() + .getPlayersTeam(score.getPlayerName()); + return Utils.removeColor( + ScorePlayerTeam.formatPlayerName( + scorePlayerTeam, + score.getPlayerName() + ) + ); + } } diff --git a/src/main/java/com/thatgravyboat/skyblockhud/api/events/SidebarLineUpdateEvent.java b/src/main/java/com/thatgravyboat/skyblockhud/api/events/SidebarLineUpdateEvent.java index 843ad05..8a7aa39 100644 --- a/src/main/java/com/thatgravyboat/skyblockhud/api/events/SidebarLineUpdateEvent.java +++ b/src/main/java/com/thatgravyboat/skyblockhud/api/events/SidebarLineUpdateEvent.java @@ -6,24 +6,24 @@ import net.minecraftforge.fml.common.eventhandler.Event; public class SidebarLineUpdateEvent extends Event { - public String rawLine; - public String formattedLine; - public int position; - public Scoreboard scoreboard; - public ScoreObjective objective; + public String rawLine; + public String formattedLine; + public int position; + public Scoreboard scoreboard; + public ScoreObjective objective; - public SidebarLineUpdateEvent( - String rawLine, - String formattedLine, - int score, - int max, - Scoreboard scoreboard, - ScoreObjective objective - ) { - this.rawLine = rawLine; - this.formattedLine = formattedLine; - this.position = max - score; - this.scoreboard = scoreboard; - this.objective = objective; - } + public SidebarLineUpdateEvent( + String rawLine, + String formattedLine, + int score, + int max, + Scoreboard scoreboard, + ScoreObjective objective + ) { + this.rawLine = rawLine; + this.formattedLine = formattedLine; + this.position = max - score; + this.scoreboard = scoreboard; + this.objective = objective; + } } diff --git a/src/main/java/com/thatgravyboat/skyblockhud/api/events/SidebarPostEvent.java b/src/main/java/com/thatgravyboat/skyblockhud/api/events/SidebarPostEvent.java index b020e12..92ed25e 100644 --- a/src/main/java/com/thatgravyboat/skyblockhud/api/events/SidebarPostEvent.java +++ b/src/main/java/com/thatgravyboat/skyblockhud/api/events/SidebarPostEvent.java @@ -7,19 +7,19 @@ import net.minecraftforge.fml.common.eventhandler.Event; public class SidebarPostEvent extends Event { - public Scoreboard scoreboard; - public ScoreObjective objective; - public List<String> scores; - public String[] arrayScores; + public Scoreboard scoreboard; + public ScoreObjective objective; + public List<String> scores; + public String[] arrayScores; - public SidebarPostEvent( - Scoreboard scoreboard, - ScoreObjective objective, - List<String> scores - ) { - this.scoreboard = scoreboard; - this.objective = objective; - this.scores = scores; - this.arrayScores = scores.toArray(new String[] {}); - } + public SidebarPostEvent( + Scoreboard scoreboard, + ScoreObjective objective, + List<String> scores + ) { + this.scoreboard = scoreboard; + this.objective = objective; + this.scores = scores; + this.arrayScores = scores.toArray(new String[] {}); + } } diff --git a/src/main/java/com/thatgravyboat/skyblockhud/api/events/SidebarPreGetEvent.java b/src/main/java/com/thatgravyboat/skyblockhud/api/events/SidebarPreGetEvent.java index 1176b9a..0db1895 100644 --- a/src/main/java/com/thatgravyboat/skyblockhud/api/events/SidebarPreGetEvent.java +++ b/src/main/java/com/thatgravyboat/skyblockhud/api/events/SidebarPreGetEvent.java @@ -8,11 +8,11 @@ import net.minecraftforge.fml.common.eventhandler.Event; @Cancelable public class SidebarPreGetEvent extends Event { - public Scoreboard scoreboard; - public ScoreObjective objective; + public Scoreboard scoreboard; + public ScoreObjective objective; - public SidebarPreGetEvent(Scoreboard scoreboard, ScoreObjective objective) { - this.scoreboard = scoreboard; - this.objective = objective; - } + public SidebarPreGetEvent(Scoreboard scoreboard, ScoreObjective objective) { + this.scoreboard = scoreboard; + this.objective = objective; + } } |