aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenInfoScreen.java50
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java11
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java1
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EventWidget.java10
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenSkillsWidget.java63
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java56
7 files changed, 188 insertions, 5 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenInfoScreen.java
new file mode 100644
index 00000000..a9547283
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenInfoScreen.java
@@ -0,0 +1,50 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.screens;
+
+import java.util.List;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.CookieWidget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EffectWidget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EventWidget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.GardenSkillsWidget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.JacobsContestWidget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ProfileWidget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.UpgradeWidget;
+import net.minecraft.client.network.PlayerListEntry;
+import net.minecraft.text.Text;
+
+public class GardenInfoScreen extends Screen {
+
+ public GardenInfoScreen(int w, int h, List<PlayerListEntry> ple, Text footer) {
+ super(w, h);
+
+ String f = footer.getString();
+
+ GardenSkillsWidget gsw = new GardenSkillsWidget(ple);
+ EventWidget evw = new EventWidget(ple, true);
+ UpgradeWidget uw = new UpgradeWidget(f);
+
+ ProfileWidget pw = new ProfileWidget(ple);
+ EffectWidget efw = new EffectWidget(f);
+
+ JacobsContestWidget jcw = new JacobsContestWidget(ple);
+ CookieWidget cw = new CookieWidget(f);
+
+ // goofy ahh layout code incoming
+ this.stackWidgetsH(gsw, evw, uw);
+ this.stackWidgetsH(pw, efw);
+ this.stackWidgetsH(jcw, cw);
+
+ this.centerW(gsw);
+ this.centerW(evw);
+ this.centerW(uw);
+
+ this.collideAgainstL(pw, gsw, evw, uw);
+ this.collideAgainstL(efw, gsw, evw, uw);
+
+ this.collideAgainstR(jcw, gsw, evw, uw);
+ this.collideAgainstR(cw, gsw, evw, uw);
+
+ this.addWidgets(gsw, evw, uw, pw, efw, jcw, cw);
+ }
+
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java
index 01b159e2..b9b03a75 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java
@@ -21,7 +21,7 @@ public class GenericInfoScreen extends Screen {
String f = footer.getString();
SkillsWidget sw = new SkillsWidget(ple);
- EventWidget evw = new EventWidget(ple);
+ EventWidget evw = new EventWidget(ple, false);
UpgradeWidget uw = new UpgradeWidget(f);
ProfileWidget pw = new ProfileWidget(ple);
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java
index 8e99698b..fb5159a8 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java
@@ -157,7 +157,7 @@ public class Screen {
public static Screen getCorrect(int w, int h, List<PlayerListEntry> ple, Text footer) {
if (TabHud.genericTgl.isPressed()) {
- return new GenericInfoScreen(w, h, ple, footer);
+ return Screen.correctGenericScrn(w, h, ple, footer);
// } else if (TabHud.mapTgl.isPressed()) {
// return Screen.correctMapScrn(w, h, ple, footer);
} else if (TabHud.playerTgl.isPressed()) {
@@ -167,6 +167,7 @@ public class Screen {
}
}
+
private static ScreenType getScreenType(List<PlayerListEntry> ple) {
String cat2Name = StrMan.strAt(ple, 40);
@@ -222,6 +223,14 @@ public class Screen {
// return new EmptyScreen(w, h, list, footer);
// }
+ private static Screen correctGenericScrn(int w, int h, List<PlayerListEntry> list, Text footer) {
+ return switch (getScreenType(list)) {
+ case GARDEN -> new GardenInfoScreen(w, h, list, footer);
+ default -> new GenericInfoScreen(w, h, list, footer); // ok
+ };
+ }
+
+
private static Screen correctPlayerScrn(int w, int h, List<PlayerListEntry> list, Text footer) {
return switch (getScreenType(list)) {
case GUEST_ISLAND -> new GuestPlayerScreen(w, h, list, footer); // ok
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java
index a9f8e22f..f3e18b44 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java
@@ -47,4 +47,5 @@ public class Ico {
public static final ItemStack COPPER = new ItemStack(Items.COPPER_INGOT);
public static final ItemStack COMPOSTER = new ItemStack(Items.COMPOSTER);
public static final ItemStack SAPLING = new ItemStack(Items.OAK_SAPLING);
+ public static final ItemStack MILESTONE = new ItemStack(Items.LODESTONE);
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EventWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EventWidget.java
index 051ce11c..7fcbe1c1 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EventWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EventWidget.java
@@ -16,15 +16,19 @@ import net.minecraft.util.Formatting;
public class EventWidget extends Widget {
private static final MutableText TITLE = Text.literal("Event Info").formatted(Formatting.YELLOW, Formatting.BOLD);
- public EventWidget(List<PlayerListEntry> list) {
+ public EventWidget(List<PlayerListEntry> list, boolean isInGarden) {
super(TITLE, Formatting.YELLOW.getColorValue());
- Text eventName = StrMan.stdEntry(list, 73, "Name:", Formatting.YELLOW);
+ // hypixel devs carefully inserting the most random edge cases #317:
+ // the event info is placed a bit differently when in the garden.
+ int offset = (isInGarden) ? -1 : 0;
+
+ Text eventName = StrMan.stdEntry(list, 73 + offset, "Name:", Formatting.YELLOW);
IcoTextComponent event = new IcoTextComponent(Ico.NTAG, eventName);
this.addComponent(event);
// this could look better
- Text time = StrMan.plainEntry(list, 74);
+ Text time = StrMan.plainEntry(list, 74 + offset);
IcoTextComponent t = new IcoTextComponent(Ico.CLOCK, time);
this.addComponent(t);
this.pack();
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenSkillsWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenSkillsWidget.java
new file mode 100644
index 00000000..99011616
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenSkillsWidget.java
@@ -0,0 +1,63 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.widget;
+
+import java.util.List;
+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.StrMan;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent;
+
+import net.minecraft.client.network.PlayerListEntry;
+import net.minecraft.text.MutableText;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+
+public class GardenSkillsWidget extends Widget {
+
+ private static final MutableText TITLE = Text.literal("Skill Info").formatted(Formatting.YELLOW,
+ Formatting.BOLD);
+
+ // match the skill entry
+ // group 1: skill name and level
+ // group 2: progress to next level (without "%")
+ private static final Pattern SKILL_PATTERN = Pattern.compile("\\S*: ([A-Za-z]* [0-9]*): (\\S*)%");
+ // same with leading space
+ // TODO: make better, maybe
+ private static final Pattern MS_PATTERN = Pattern.compile(" \\S*: ([A-Za-z]* [0-9]*): (\\S*)%");
+
+ public GardenSkillsWidget(List<PlayerListEntry> list) {
+ super(TITLE, Formatting.YELLOW.getColorValue());
+
+ Matcher m = StrMan.regexAt(list, 66, SKILL_PATTERN);
+
+ float pcnt = Float.parseFloat(m.group(2));
+ String skill = m.group(1);
+
+ ProgressComponent pc = new ProgressComponent(Ico.LANTERN, Text.of(skill), pcnt, Formatting.GOLD.getColorValue());
+ this.addComponent(pc);
+
+ Text speed = StrMan.stdEntry(list, 67, "SPD", Formatting.WHITE);
+ IcoTextComponent spd = new IcoTextComponent(Ico.SUGAR, speed);
+ Text farmfort = StrMan.stdEntry(list, 68, "FFO", Formatting.GOLD);
+ IcoTextComponent ffo = new IcoTextComponent(Ico.HOE, farmfort);
+
+ TableComponent tc = new TableComponent(2, 1, Formatting.YELLOW.getColorValue());
+ tc.addToCell(0, 0, spd);
+ tc.addToCell(1, 0, ffo);
+ this.addComponent(tc);
+
+ m = StrMan.regexAt(list, 69, MS_PATTERN);
+ pcnt = Float.parseFloat(m.group(2));
+ skill = m.group(1);
+
+ ProgressComponent pc2 = new ProgressComponent(Ico.MILESTONE, Text.of(skill), pcnt, Formatting.GREEN.getColorValue());
+ this.addComponent(pc2);
+
+ this.pack();
+ }
+
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java
new file mode 100644
index 00000000..11817662
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java
@@ -0,0 +1,56 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.widget;
+
+import java.util.HashMap;
+import java.util.List;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent;
+import net.minecraft.client.network.PlayerListEntry;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.Items;
+import net.minecraft.text.MutableText;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+public class JacobsContestWidget extends Widget {
+
+ private static final MutableText TITLE = Text.literal("Jacob's Contest").formatted(Formatting.YELLOW,
+ Formatting.BOLD);
+
+ private static final HashMap<String, ItemStack> FARM_DATA = new HashMap<>();
+
+ // again, there HAS to be a better way to do this
+ static {
+ FARM_DATA.put("Wheat", new ItemStack(Items.WHEAT));
+ FARM_DATA.put("Sugar Cane", new ItemStack(Items.SUGAR_CANE));
+ FARM_DATA.put("Carrot", new ItemStack(Items.CARROT));
+ FARM_DATA.put("Potato", new ItemStack(Items.POTATO));
+ FARM_DATA.put("Melon", new ItemStack(Items.MELON_SLICE));
+ FARM_DATA.put("Pumpkin", new ItemStack(Items.PUMPKIN));
+ FARM_DATA.put("Cocoa Beans", new ItemStack(Items.COCOA_BEANS));
+ FARM_DATA.put("Nether Wart", new ItemStack(Items.NETHER_WART));
+ FARM_DATA.put("Cactus", new ItemStack(Items.CACTUS));
+ FARM_DATA.put("Mushroom", new ItemStack(Items.RED_MUSHROOM));
+ }
+
+ public JacobsContestWidget(List<PlayerListEntry> list) {
+ super(TITLE, Formatting.YELLOW.getColorValue());
+
+ Text time = StrMan.stdEntry(list, 76, "Starts in:", Formatting.GOLD);
+ IcoTextComponent t = new IcoTextComponent(Ico.CLOCK, time);
+ this.addComponent(t);
+
+ TableComponent tc = new TableComponent(1, 3, Formatting.YELLOW .getColorValue());
+
+ for (int i = 77; i < 80; i++) {
+ String item = StrMan.strAt(list, i).trim();
+ tc.addToCell(0, i - 77, new IcoTextComponent(FARM_DATA.get(item), Text.of(item)));
+ }
+ this.addComponent(tc);
+
+ this.pack();
+ }
+
+}