aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2023-06-23 14:27:42 -0400
committerAaron <51387595+AzureAaron@users.noreply.github.com>2023-06-24 01:02:18 -0400
commit0a3c3d61b749172464665634b392b1f68a32288e (patch)
tree7a7a9a6b9861be2eef34939ffff6f16a92159a64 /src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget
parent579feae3e4a2231bf7e6f98977762bf38b762f3b (diff)
downloadSkyblocker-0a3c3d61b749172464665634b392b1f68a32288e.tar.gz
Skyblocker-0a3c3d61b749172464665634b392b1f68a32288e.tar.bz2
Skyblocker-0a3c3d61b749172464665634b392b1f68a32288e.zip
Added Rift Tab Hud + 1 Rift related fix
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/AdvertisementWidget.java26
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/GoodToKnowWidget.java46
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftProfileWidget.java19
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftProgressWidget.java88
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftServerInfoWidget.java26
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftStatsWidget.java41
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/ShenWidget.java20
7 files changed, 266 insertions, 0 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/AdvertisementWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/AdvertisementWidget.java
new file mode 100644
index 00000000..61c79c26
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/AdvertisementWidget.java
@@ -0,0 +1,26 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.rift;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent;
+import net.minecraft.text.MutableText;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+public class AdvertisementWidget extends Widget {
+
+ private static final MutableText TITLE = Text.literal("Advertisement").formatted(Formatting.DARK_AQUA, Formatting.BOLD);
+
+ public AdvertisementWidget() {
+ super(TITLE, Formatting.DARK_AQUA.getColorValue());
+
+
+ for(int i = 73; i < 80; i++) {
+ Text text = PlayerListMgr.textAt(i);
+ if(text != null) this.addComponent(new PlainTextComponent(text));
+ }
+
+ this.pack();
+ }
+
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/GoodToKnowWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/GoodToKnowWidget.java
new file mode 100644
index 00000000..ca95f811
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/GoodToKnowWidget.java
@@ -0,0 +1,46 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.rift;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
+import net.minecraft.text.MutableText;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+public class GoodToKnowWidget extends Widget {
+
+ private static final MutableText TITLE = Text.literal("Good To Know").formatted(Formatting.BLUE, Formatting.BOLD);
+
+ public GoodToKnowWidget() {
+ super(TITLE, Formatting.BLUE.getColorValue());
+
+ //After you progress further the tab adds more info so we need to be careful of that
+ //In beginning it only shows montezuma, then timecharms and enigma souls are added
+ Text pos49 = PlayerListMgr.textAt(49); //Can be times visited rift
+ Text pos51 = PlayerListMgr.textAt(51); //Can be lifetime motes or visited rift
+ Text pos53 = PlayerListMgr.textAt(53); //Can be lifetime motes
+
+ int visitedRiftPos = 0;
+ int lifetimeMotesPos = 0;
+
+ //Check each position to see what is or isn't there so we don't try adding invalid components
+ if(pos49.getString().contains("times")) visitedRiftPos = 49;
+ if(pos51.getString().contains("Motes")) lifetimeMotesPos = 51;
+ if(pos51.getString().contains("times")) visitedRiftPos = 51;
+ if(pos53.getString().contains("Motes")) lifetimeMotesPos = 53;
+
+ Text timesVisitedRift = (visitedRiftPos == 51) ? pos51 : (visitedRiftPos == 49) ? pos49 : null;
+ Text lifetimeMotesEarned = (lifetimeMotesPos == 53) ? pos53 : (lifetimeMotesPos == 51) ? pos51 : null;
+
+ if(visitedRiftPos != 0) {
+ this.addComponent(new IcoTextComponent(Ico.EXPERIENCE_BOTTLE, Text.literal("Visited Rift: ").append(timesVisitedRift)));
+ }
+
+ if(lifetimeMotesPos != 0) {
+ this.addComponent(new IcoTextComponent(Ico.PINK_DYE, Text.literal("Lifetime Earned: ").append(lifetimeMotesEarned)));
+ }
+
+ this.pack();
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftProfileWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftProfileWidget.java
new file mode 100644
index 00000000..5460de49
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftProfileWidget.java
@@ -0,0 +1,19 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.rift;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
+import net.minecraft.text.MutableText;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+public class RiftProfileWidget extends Widget {
+
+ private static final MutableText TITLE = Text.literal("Profile").formatted(Formatting.DARK_AQUA, Formatting.BOLD);
+
+ public RiftProfileWidget() {
+ super(TITLE, Formatting.DARK_AQUA.getColorValue());
+
+ this.addSimpleIcoText(Ico.SIGN, "Profile:", Formatting.GREEN, 61);
+ this.pack();
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftProgressWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftProgressWidget.java
new file mode 100644
index 00000000..615d3cb0
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftProgressWidget.java
@@ -0,0 +1,88 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.rift;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent;
+import net.minecraft.text.MutableText;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+import net.minecraft.util.math.MathHelper;
+
+public class RiftProgressWidget extends Widget {
+
+ private static final MutableText TITLE = Text.literal("Rift Progress").formatted(Formatting.BLUE, Formatting.BOLD);
+
+ private static final Pattern TIMECHARMS_PATTERN = Pattern.compile("Timecharms: (?<current>[0-9]+)\\/(?<total>[0-9]+)");
+ private static final Pattern ENIGMA_SOULS_PATTERN = Pattern.compile("Enigma Souls: (?<current>[0-9]+)\\/(?<total>[0-9]+)");
+ private static final Pattern MONTEZUMA_PATTERN = Pattern.compile("Montezuma: (?<current>[0-9]+)\\/(?<total>[0-9]+)");
+
+ public RiftProgressWidget() {
+ super(TITLE, Formatting.BLUE.getColorValue());
+
+ //After you progress further the tab adds more info so we need to be careful of that
+ //In beginning it only shows montezuma, then timecharms and enigma souls are added
+ String pos45 = PlayerListMgr.strAt(45); //Can be Montezuma or Timecharms
+ String pos46 = PlayerListMgr.strAt(46); //Can be Enigma Souls or Empty
+ String pos47 = PlayerListMgr.strAt(47); //Can be Montezuma or "Good to know" heading
+
+ boolean hasTimecharms = false;
+ boolean hasEnigmaSouls = false;
+ int montezumaPos = 0;
+
+ //Check each position to see what is or isn't there so we don't try adding invalid components
+ if(pos45.contains("Timecharms")) hasTimecharms = true;
+ if(pos46.contains("Enigma Souls")) hasEnigmaSouls = true;
+
+ //Small ternary to account for positions, defaults to -1 if it for some reason does not exist (which shouldn't be the case!)
+ montezumaPos = (pos47.contains("Montezuma")) ? 47 : (pos45.contains("Montezuma")) ? 45 : -1;
+
+ if(hasTimecharms) {
+ Matcher m = PlayerListMgr.regexAt(45, TIMECHARMS_PATTERN);
+
+ int current = Integer.parseInt(m.group("current"));
+ int total = Integer.parseInt(m.group("total"));
+ float pcnt = ((float) current / (float) total) * 100f;
+ Text progressText = Text.literal(current + "/" + total);
+
+ ProgressComponent pc = new ProgressComponent(Ico.NETHER_STAR, Text.literal("Timecharms"), progressText, pcnt, pcntToCol(pcnt));
+
+ this.addComponent(pc);
+ }
+
+ if(hasEnigmaSouls) {
+ Matcher m = PlayerListMgr.regexAt(46, ENIGMA_SOULS_PATTERN);
+
+ int current = Integer.parseInt(m.group("current"));
+ int total = Integer.parseInt(m.group("total"));
+ float pcnt = ((float) current / (float) total) * 100f;
+ Text progressText = Text.literal(current + "/" + total);
+
+ ProgressComponent pc = new ProgressComponent(Ico.HEART_OF_THE_SEA, Text.literal("Enigma Souls"), progressText, pcnt, pcntToCol(pcnt));
+
+ this.addComponent(pc);
+ }
+
+ if(montezumaPos != -1) {
+ Matcher m = PlayerListMgr.regexAt(montezumaPos, MONTEZUMA_PATTERN);
+
+ int current = Integer.parseInt(m.group("current"));
+ int total = Integer.parseInt(m.group("total"));
+ float pcnt = ((float) current / (float) total) * 100f;
+ Text progressText = Text.literal(current + "/" + total);
+
+ ProgressComponent pc = new ProgressComponent(Ico.BONE, Text.literal("Montezuma"), progressText, pcnt, pcntToCol(pcnt));
+
+ this.addComponent(pc);
+ }
+
+ this.pack();
+ }
+
+ private static int pcntToCol(float pcnt) {
+ return MathHelper.hsvToRgb(pcnt / 300f, 0.9f, 0.9f);
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftServerInfoWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftServerInfoWidget.java
new file mode 100644
index 00000000..2ac2a35d
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftServerInfoWidget.java
@@ -0,0 +1,26 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.rift;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
+import net.minecraft.text.MutableText;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+/**
+ * Special version of the server info widget for the rift!
+ *
+ */
+public class RiftServerInfoWidget extends Widget {
+
+ private static final MutableText TITLE = Text.literal("Server Info").formatted(Formatting.LIGHT_PURPLE, Formatting.BOLD);
+
+ public RiftServerInfoWidget() {
+ super(TITLE, Formatting.LIGHT_PURPLE.getColorValue());
+
+ this.addSimpleIcoText(Ico.MAP, "Area:", Formatting.LIGHT_PURPLE, 41);
+ this.addSimpleIcoText(Ico.NTAG, "Server ID:", Formatting.GRAY, 42);
+
+ this.pack();
+ }
+
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftStatsWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftStatsWidget.java
new file mode 100644
index 00000000..ef5876f2
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftStatsWidget.java
@@ -0,0 +1,41 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.rift;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent;
+
+import net.minecraft.text.MutableText;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+public class RiftStatsWidget extends Widget {
+
+ private static final MutableText TITLE = Text.literal("Stats").formatted(Formatting.DARK_AQUA, Formatting.BOLD);
+
+ public RiftStatsWidget() {
+ super(TITLE, Formatting.DARK_AQUA.getColorValue());
+
+ Text riftDamage = Widget.simpleEntryText(64, "RDG", Formatting.DARK_PURPLE);
+ IcoTextComponent rdg = new IcoTextComponent(Ico.DIASWORD, riftDamage);
+
+ Text speed = Widget.simpleEntryText(65, "SPD", Formatting.WHITE);
+ IcoTextComponent spd = new IcoTextComponent(Ico.SUGAR, speed);
+
+ Text intelligence = Widget.simpleEntryText(66, "INT", Formatting.AQUA);
+ IcoTextComponent intel = new IcoTextComponent(Ico.ENCHANTED_BOOK, intelligence);
+
+ Text manaRegen = Widget.simpleEntryText(67, "MRG", Formatting.AQUA);
+ IcoTextComponent mrg = new IcoTextComponent(Ico.DIAMOND, manaRegen);
+
+ TableComponent tc = new TableComponent(2, 2, Formatting.AQUA.getColorValue());
+ tc.addToCell(0, 0, rdg);
+ tc.addToCell(0, 1, spd);
+ tc.addToCell(1, 0, intel);
+ tc.addToCell(1, 1, mrg);
+
+ this.addComponent(tc);
+ this.pack();
+ }
+
+} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/ShenWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/ShenWidget.java
new file mode 100644
index 00000000..5dcc08c0
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/ShenWidget.java
@@ -0,0 +1,20 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.rift;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent;
+import net.minecraft.text.MutableText;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+public class ShenWidget extends Widget {
+
+ private static final MutableText TITLE = Text.literal("Shen's Countdown").formatted(Formatting.DARK_AQUA, Formatting.BOLD);
+
+ public ShenWidget() {
+ super(TITLE, Formatting.DARK_AQUA.getColorValue());
+
+ this.addComponent(new PlainTextComponent(Text.literal(PlayerListMgr.strAt(70))));
+ this.pack();
+ }
+}