aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/utils')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java40
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java103
2 files changed, 129 insertions, 14 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java
new file mode 100644
index 00000000..ea1db236
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java
@@ -0,0 +1,40 @@
+package me.xmrvizzy.skyblocker.utils;
+
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.text.Text;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class ItemUtils {
+
+ public static List<String> getLore(ItemStack item) {
+ if (item.hasTag() && item.getTag().contains("display", 10)) {
+ CompoundTag tag = item.getTag().getCompound("display");
+
+ if (tag.contains("Lore", 9)) {
+ ListTag lore = tag.getList("Lore", 8);
+
+ List<String> list = new ArrayList<>();
+ for (int line = 0; line < lore.size(); line++) {
+ String string = lore.getString(line);
+ try {
+ Text text = Text.Serializer.fromJson(string);
+ if (text != null) {
+ string = text.getString();
+ if (!string.replaceAll("\\s+","").isEmpty())
+ list.add(string);
+ }
+ } catch (Exception e) {}
+ }
+
+ return list;
+ }
+ }
+
+ return Collections.emptyList();
+ }
+} \ No newline at end of file
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