From 114e455ae4578c848b59b7a839c6ae043060edb9 Mon Sep 17 00:00:00 2001 From: Ghost <66458557+Ghost-3@users.noreply.github.com> Date: Sun, 18 Feb 2024 23:17:33 +0300 Subject: Spider's Den server Widget --- .../hysky/skyblocker/skyblock/tabhud/util/Ico.java | 1 + .../tabhud/widget/SpidersDenServerWidget.java | 84 ++++++++++++++++++++++ .../skyblocker/tabhud/standard/spider_den.json | 17 +++++ .../skyblocker/tabhud/standard/spider_den.json | 17 +++++ 4 files changed, 119 insertions(+) create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/SpidersDenServerWidget.java create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/spider_den.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/spider_den.json (limited to 'src/main') 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()); + } +} diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/spider_den.json b/src/main/resources/assets/skyblocker/tabhud/standard/spider_den.json new file mode 100644 index 00000000..faa437ac --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/spider_den.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "SpidersDenServerWidget", + "alias": "psw" + } + ], + "layout": [ + { + "op": "place", + "where": "center", + "apply_to": [ + "psw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/spider_den.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/spider_den.json new file mode 100644 index 00000000..0df51096 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/spider_den.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "SpidersDenServerWidget", + "alias": "psw" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "psw" + ] + } + ] +} \ No newline at end of file -- cgit From ed48570bc262bf0a9ebe2e3a629d389ee22fd3fe Mon Sep 17 00:00:00 2001 From: Ghost <66458557+Ghost-3@users.noreply.github.com> Date: Sun, 18 Feb 2024 23:27:41 +0300 Subject: Minor fix --- .../skyblocker/skyblock/tabhud/widget/SpidersDenServerWidget.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/main') 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 index 3c32f534..386e60ec 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/SpidersDenServerWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/SpidersDenServerWidget.java @@ -29,7 +29,6 @@ public class SpidersDenServerWidget extends Widget { private final String text; private final Formatting formatting; - BroodmotherState(String text, Formatting formatting) { this.text = text; this.formatting = formatting; @@ -71,6 +70,9 @@ public class SpidersDenServerWidget extends Widget { return BroodmotherState.from(state.split(": ")[1]); } + /** + * Updates the information in the widget. + */ @Override public void updateContent() { this.addSimpleIcoText(Ico.MAP, "Area:", Formatting.DARK_AQUA, 41); -- cgit From b96921dad617a4cc1fd36b6529596c1391f43f55 Mon Sep 17 00:00:00 2001 From: Ghost <66458557+Ghost-3@users.noreply.github.com> Date: Mon, 19 Feb 2024 07:20:23 +0300 Subject: Added Broodmother states --- .../skyblocker/skyblock/tabhud/widget/SpidersDenServerWidget.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/main') 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 index 386e60ec..6751ea5d 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/SpidersDenServerWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/SpidersDenServerWidget.java @@ -22,7 +22,9 @@ public class SpidersDenServerWidget extends Widget { private enum BroodmotherState { SOON("Soon", Formatting.GOLD), AWAKENING("Awakening", Formatting.GOLD), + IMMINENT("Imminent", Formatting.DARK_RED), ALIVE("Alive!", Formatting.DARK_RED), + SLAIN("Slain", Formatting.YELLOW), DORMANT("Dormant", Formatting.YELLOW), UNKNOWN("Unknown", Formatting.GRAY); @@ -80,7 +82,6 @@ public class SpidersDenServerWidget extends Widget { this.addSimpleIcoText(Ico.EMERALD, "Gems:", Formatting.GREEN, 43); BroodmotherState broodmotherState = parseTab(); - this.addSimpleIcoText( - Ico.SPIDER_EYE, "Broodmother: ", broodmotherState.formatting(), broodmotherState.text()); + this.addSimpleIcoText(Ico.SPIDER_EYE, "Broodmother: ", broodmotherState.formatting(), broodmotherState.text()); } } -- cgit