aboutsummaryrefslogtreecommitdiff
path: root/Danker/handlers/ScoreboardHandler.java
diff options
context:
space:
mode:
authorbowser0000 <bowser0000@gmail.com>2020-07-11 00:56:53 -0400
committerbowser0000 <bowser0000@gmail.com>2020-07-11 00:56:53 -0400
commitc0017a23a6aefa6ac779551022b928bca451d46a (patch)
tree149e30a6be1b4f4d79c9d73c0a914a028a54b62f /Danker/handlers/ScoreboardHandler.java
parent126f20c221bd2626bb873faa14843e669ad5859f (diff)
downloadSkyblockMod-c0017a23a6aefa6ac779551022b928bca451d46a.tar.gz
SkyblockMod-c0017a23a6aefa6ac779551022b928bca451d46a.tar.bz2
SkyblockMod-c0017a23a6aefa6ac779551022b928bca451d46a.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 'Danker/handlers/ScoreboardHandler.java')
-rw-r--r--Danker/handlers/ScoreboardHandler.java60
1 files changed, 60 insertions, 0 deletions
diff --git a/Danker/handlers/ScoreboardHandler.java b/Danker/handlers/ScoreboardHandler.java
new file mode 100644
index 0000000..e89591b
--- /dev/null
+++ b/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;
+ }
+}