diff options
author | bowser0000 <bowser0000@gmail.com> | 2020-07-11 00:37:32 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-11 00:37:32 -0400 |
commit | 9ef7d0c75496281946f6139e98095d01f0164ba3 (patch) | |
tree | bb23c544960f6baba2b47c25b006b1dc95aaf427 /me/Danker/handlers/ScoreboardHandler.java | |
parent | 734f08a5d50ce2c8d7ecc5b946316b269d1d57f2 (diff) | |
download | SkyblockMod-9ef7d0c75496281946f6139e98095d01f0164ba3.tar.gz SkyblockMod-9ef7d0c75496281946f6139e98095d01f0164ba3.tar.bz2 SkyblockMod-9ef7d0c75496281946f6139e98095d01f0164ba3.zip |
Add tracker and display for all slayer drops
Added token and 20% chance slayer drops. Also added display for the slayer tracker with /display.
This was more difficult than I thought. I first tried to use the PlayerEvent.ItemPickupEvent event, but it was server side only. Then I tried to use the ClientChatReceivedEvent event, but the boss slain message was sent to late. Ultimately, I decided on the PlaySoundEvent event, which waits for the noise for when a slayer boss dies.
Diffstat (limited to 'me/Danker/handlers/ScoreboardHandler.java')
-rw-r--r-- | me/Danker/handlers/ScoreboardHandler.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/me/Danker/handlers/ScoreboardHandler.java b/me/Danker/handlers/ScoreboardHandler.java new file mode 100644 index 0000000..44b246d --- /dev/null +++ b/me/Danker/handlers/ScoreboardHandler.java @@ -0,0 +1,60 @@ +package me.Danker.handlers;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.scoreboard.Score;
+import net.minecraft.scoreboard.ScoreObjective;
+import net.minecraft.scoreboard.ScorePlayerTeam;
+import net.minecraft.scoreboard.Scoreboard;
+import net.minecraft.util.StringUtils;
+
+public class ScoreboardHandler {
+
+ public static String cleanSB(String scoreboard) {
+ char[] nvString = StringUtils.stripControlCodes(scoreboard).toCharArray();
+ StringBuilder cleaned = new StringBuilder();
+
+ for (char c : nvString) {
+ if ((int) c > 20 && (int) c < 127) {
+ cleaned.append(c);
+ }
+ }
+
+ return cleaned.toString();
+ }
+
+ public static List<String> getSidebarLines() {
+ List<String> lines = new ArrayList<>();
+ Scoreboard scoreboard = Minecraft.getMinecraft().theWorld.getScoreboard();
+ if (scoreboard == null) return lines;
+
+ ScoreObjective objective = scoreboard.getObjectiveInDisplaySlot(1);
+ if (objective == null) return lines;
+
+ Collection<Score> scores = scoreboard.getSortedScores(objective);
+ List<Score> list = Lists.newArrayList(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 (Score score : scores) {
+ ScorePlayerTeam team = scoreboard.getPlayersTeam(score.getPlayerName());
+ lines.add(ScorePlayerTeam.formatPlayerName(team, score.getPlayerName()));
+ }
+
+ return lines;
+ }
+}
|