aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/CrimsonIsleScreen.java30
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/QuestWidget.java33
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ReputationWidget.java51
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java55
5 files changed, 171 insertions, 2 deletions
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 0274f839..f5a620bf 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
@@ -252,8 +252,8 @@ public class Screen {
case CRYSTAL_HOLLOWS, DWARVEN_MINES -> new MineServerScreen(w, h, list, footer);
case FARMING_ISLAND -> new FarmingServerScreen(w, h, list, footer); // ok
case DUNGEON_HUB -> new DungeonHubScreen(w, h, list, footer); // ok
- case DUNGEON -> new DungeonScreen(w, h, list, footer);
- case CRIMSON_ISLE -> null; // TODO
+ case DUNGEON -> new DungeonScreen(w, h, list, footer); // ok
+ case CRIMSON_ISLE -> new CrimsonIsleScreen(w, h, list, footer); // ???
case GARDEN -> new GardenScreen(w, h, list, footer);
default -> new GenericServerScreen(w, h, list, footer); // ok
};
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/CrimsonIsleScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/CrimsonIsleScreen.java
new file mode 100644
index 00000000..182f6897
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/CrimsonIsleScreen.java
@@ -0,0 +1,30 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main;
+
+import java.util.List;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.QuestWidget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ReputationWidget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.VolcanoWidget;
+import net.minecraft.client.network.PlayerListEntry;
+import net.minecraft.text.Text;
+
+public class CrimsonIsleScreen extends Screen {
+
+ public CrimsonIsleScreen(int w, int h, List<PlayerListEntry> ple, Text footer) {
+ super(w, h);
+ ServerWidget sw = new ServerWidget(ple);
+ ReputationWidget rw = new ReputationWidget(ple);
+ QuestWidget qw = new QuestWidget(ple);
+ VolcanoWidget vw = new VolcanoWidget(ple);
+ this.stackWidgetsH(sw, rw, vw);
+ this.offCenterL(sw);
+ this.offCenterL(rw);
+ this.offCenterL(vw);
+ this.offCenterR(qw);
+ this.centerH(qw);
+ this.addWidgets(sw, rw, qw, vw);
+ }
+
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/QuestWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/QuestWidget.java
new file mode 100644
index 00000000..e2bd7fd3
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/QuestWidget.java
@@ -0,0 +1,33 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.widget;
+
+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 net.minecraft.client.network.PlayerListEntry;
+import net.minecraft.text.MutableText;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+// this widget shows your Crimson Isle suests
+
+public class QuestWidget extends Widget {
+
+ private static final MutableText TITLE = Text.literal("Faction Quests").formatted(Formatting.AQUA,
+ Formatting.BOLD);
+
+ public QuestWidget(List<PlayerListEntry> list) {
+ super(TITLE, Formatting.AQUA.getColorValue());
+
+ for (int i = 51; i<56; i++) {
+ String q = StrMan.strAt(list, i).trim();
+ IcoTextComponent itc = new IcoTextComponent(Ico.BOOK, Text.literal(q));
+ this.addComponent(itc);
+ }
+ this.pack();
+
+ }
+
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ReputationWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ReputationWidget.java
new file mode 100644
index 00000000..09e1bb00
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ReputationWidget.java
@@ -0,0 +1,51 @@
+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 net.minecraft.client.network.PlayerListEntry;
+import net.minecraft.text.MutableText;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+// this widget shows your faction status
+
+public class ReputationWidget extends Widget {
+
+ private static final MutableText TITLE = Text.literal("Faction Status").formatted(Formatting.AQUA,
+ Formatting.BOLD);
+
+ private static final Pattern PROGRESS_PATTERN = Pattern.compile(" \\|+ \\((\\d+%)\\)");
+ private static final Pattern STATE_PATTERN = Pattern.compile("(\\S*) *(\\S*)");
+
+ public ReputationWidget(List<PlayerListEntry> list) {
+ super(TITLE, Formatting.AQUA.getColorValue());
+
+ String fname = StrMan.strAt(list, 45).split(" ")[0];
+ String rep = StrMan.strAt(list, 46).trim();
+ Matcher prog = StrMan.regexAt(list, 47, PROGRESS_PATTERN);
+ Matcher state = StrMan.regexAt(list, 48, STATE_PATTERN);
+
+ IcoTextComponent faction;
+ if (fname.equals("Mage")) {
+ faction = new IcoTextComponent(Ico.POTION, Text.literal(fname).formatted(Formatting.DARK_AQUA));
+ } else {
+ faction = new IcoTextComponent(Ico.SWORD, Text.literal(fname).formatted(Formatting.RED));
+ }
+ this.addComponent(faction);
+
+ float pcnt = Float.parseFloat(prog.group(1));
+
+ ProgressComponent pc = new ProgressComponent(Ico.LANTERN, Text.of(state.group(1) + " -> " + state.group(2)), pcnt, Formatting.AQUA.getColorValue());
+ this.addComponent(pc);
+
+ this.pack();
+
+ }
+
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java
new file mode 100644
index 00000000..9c81133f
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java
@@ -0,0 +1,55 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.widget;
+
+import java.util.HashMap;
+import java.util.List;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent;
+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;
+import net.minecraft.util.Pair;
+
+// this widget shows the volcano status
+
+public class VolcanoWidget extends Widget {
+
+ private static final MutableText TITLE = Text.literal("Volcano Status").formatted(Formatting.AQUA,
+ Formatting.BOLD);
+
+ private static final HashMap<String, Pair<ItemStack, Formatting>> BOOM_TYPE = new HashMap<>();
+
+ static {
+ BOOM_TYPE.put("INACTIVE",
+ new Pair<ItemStack, Formatting>(new ItemStack(Items.BARRIER), Formatting.DARK_GRAY));
+ BOOM_TYPE.put("CHILL",
+ new Pair<ItemStack, Formatting>(new ItemStack(Items.ICE), Formatting.AQUA));
+ BOOM_TYPE.put("LOW",
+ new Pair<ItemStack, Formatting>(new ItemStack(Items.FLINT_AND_STEEL), Formatting.GRAY));
+ BOOM_TYPE.put("DISRUPTIVE",
+ new Pair<ItemStack, Formatting>(new ItemStack(Items.CAMPFIRE), Formatting.WHITE));
+ BOOM_TYPE.put("MEDIUM",
+ new Pair<ItemStack, Formatting>(new ItemStack(Items.LAVA_BUCKET), Formatting.YELLOW));
+ BOOM_TYPE.put("HIGH",
+ new Pair<ItemStack, Formatting>(new ItemStack(Items.FIRE_CHARGE), Formatting.GOLD));
+ BOOM_TYPE.put("EXPLOSIVE",
+ new Pair<ItemStack, Formatting>(new ItemStack(Items.TNT), Formatting.RED));
+ BOOM_TYPE.put("CATACLYSMIC",
+ new Pair<ItemStack, Formatting>(new ItemStack(Items.SKELETON_SKULL), Formatting.DARK_RED));
+ }
+
+ public VolcanoWidget(List<PlayerListEntry> list) {
+ super(TITLE, Formatting.AQUA.getColorValue());
+
+ String s = StrMan.strAt(list, 58).trim();
+ Pair<ItemStack, Formatting> p = BOOM_TYPE.get(s);
+ IcoTextComponent itc = new IcoTextComponent(p.getLeft(), Text.literal(s).formatted(p.getRight()));
+ this.addComponent(itc);
+ this.pack();
+
+ }
+
+}