diff options
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker')
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(); + + } + +} |