diff options
author | Ghost <66458557+Ghost-3@users.noreply.github.com> | 2024-02-18 23:17:33 +0300 |
---|---|---|
committer | Ghost <66458557+Ghost-3@users.noreply.github.com> | 2024-02-18 23:17:33 +0300 |
commit | 114e455ae4578c848b59b7a839c6ae043060edb9 (patch) | |
tree | 8cee9c0c3df0db00244143c43ca76f6412409592 /src/main/java/de/hysky | |
parent | c2e4a0513ef19aac52c38478fdd34a8d93990e75 (diff) | |
download | Skyblocker-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.java | 1 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/SpidersDenServerWidget.java | 84 |
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()); + } +} |