aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky
diff options
context:
space:
mode:
authorGhost <66458557+Ghost-3@users.noreply.github.com>2024-02-18 23:17:33 +0300
committerGhost <66458557+Ghost-3@users.noreply.github.com>2024-02-18 23:17:33 +0300
commit114e455ae4578c848b59b7a839c6ae043060edb9 (patch)
tree8cee9c0c3df0db00244143c43ca76f6412409592 /src/main/java/de/hysky
parentc2e4a0513ef19aac52c38478fdd34a8d93990e75 (diff)
downloadSkyblocker-114e455ae4578c848b59b7a839c6ae043060edb9.tar.gz
Skyblocker-114e455ae4578c848b59b7a839c6ae043060edb9.tar.bz2
Skyblocker-114e455ae4578c848b59b7a839c6ae043060edb9.zip
Spider's Den server Widget
Diffstat (limited to 'src/main/java/de/hysky')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/Ico.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/SpidersDenServerWidget.java84
2 files changed, 85 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/Ico.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/Ico.java
index 82394a78..96ab35d5 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/Ico.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/Ico.java
@@ -60,4 +60,5 @@ public class Ico {
public static final ItemStack EXPERIENCE_BOTTLE = new ItemStack(Items.EXPERIENCE_BOTTLE);
public static final ItemStack PINK_DYE = new ItemStack(Items.PINK_DYE);
public static final ItemStack ENCHANTED_BOOK = new ItemStack(Items.ENCHANTED_BOOK);
+ public static final ItemStack SPIDER_EYE = new ItemStack(Items.SPIDER_EYE);
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/SpidersDenServerWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/SpidersDenServerWidget.java
new file mode 100644
index 00000000..3c32f534
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/SpidersDenServerWidget.java
@@ -0,0 +1,84 @@
+package de.hysky.skyblocker.skyblock.tabhud.widget;
+
+import de.hysky.skyblocker.skyblock.tabhud.util.Ico;
+import de.hysky.skyblocker.skyblock.tabhud.util.PlayerListMgr;
+import net.minecraft.text.MutableText;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+import java.util.Arrays;
+
+/**
+ * This widget shows info about the Spider's Den server
+ */
+public class SpidersDenServerWidget extends Widget {
+
+ private static final MutableText TITLE =
+ Text.literal("Server Info").formatted(Formatting.DARK_AQUA, Formatting.BOLD);
+
+ /**
+ * Broodmother Mini-Boss tab states
+ */
+ private enum BroodmotherState {
+ SOON("Soon", Formatting.GOLD),
+ AWAKENING("Awakening", Formatting.GOLD),
+ ALIVE("Alive!", Formatting.DARK_RED),
+ DORMANT("Dormant", Formatting.YELLOW),
+ UNKNOWN("Unknown", Formatting.GRAY);
+
+ private final String text;
+ private final Formatting formatting;
+
+
+ BroodmotherState(String text, Formatting formatting) {
+ this.text = text;
+ this.formatting = formatting;
+ }
+
+ public String text() {
+ return this.text;
+ }
+
+ public Formatting formatting() {
+ return this.formatting;
+ }
+
+ /**
+ * Returns a state object by text
+ *
+ * @param text text state from tab
+ * @return Broodmother State object
+ */
+ public static BroodmotherState from(String text) {
+ return Arrays.stream(BroodmotherState.values())
+ .filter(broodmotherState -> text.equals(broodmotherState.text())).findFirst().orElse(UNKNOWN);
+ }
+ }
+
+ public SpidersDenServerWidget() {
+ super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+
+ /**
+ * Parses the Broodmother string from tab and returns a state object.
+ *
+ * @return Broodmother State object
+ */
+ private static BroodmotherState parseTab() {
+ String state = PlayerListMgr.strAt(45);
+ if (state == null || !state.contains(": ")) return BroodmotherState.UNKNOWN;
+
+ return BroodmotherState.from(state.split(": ")[1]);
+ }
+
+ @Override
+ public void updateContent() {
+ this.addSimpleIcoText(Ico.MAP, "Area:", Formatting.DARK_AQUA, 41);
+ this.addSimpleIcoText(Ico.NTAG, "Server ID:", Formatting.GRAY, 42);
+ this.addSimpleIcoText(Ico.EMERALD, "Gems:", Formatting.GREEN, 43);
+
+ BroodmotherState broodmotherState = parseTab();
+ this.addSimpleIcoText(
+ Ico.SPIDER_EYE, "Broodmother: ", broodmotherState.formatting(), broodmotherState.text());
+ }
+}