aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java10
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java34
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java166
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java (renamed from src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenMaster.java)26
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/AlignStage.java53
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/CollideStage.java84
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PipelineStage.java (renamed from src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PipelineStage.java)2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PlaceStage.java31
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/StackStage.java74
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlaceStage.java29
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenBuilder.java94
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GardenInfoScreen.java38
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericInfoScreen.java38
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericRiftInfoScreen.java28
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java9
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CommsWidget.java30
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ComposterWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CookieWidget.java10
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonBuffWidget.java10
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDeathWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDownedWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java8
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPuzzleWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonSecretWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonServerWidget.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EffectWidget.java13
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ElectionWidget.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EmptyWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EssenceWidget.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EventWidget.java7
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java6
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ForgeWidget.java6
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenServerWidget.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenSkillsWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GuestServerWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/HudCommsWidget.java75
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandGuestsWidget.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java7
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandSelfWidget.java12
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandServerWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/MinionWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ParkServerWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java6
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PowderWidget.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ProfileWidget.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/QuestWidget.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ReputationWidget.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ServerWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/SkillsWidget.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/TrapperWidget.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/UpgradeWidget.java12
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java6
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java8
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/AdvertisementWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/GoodToKnowWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftProfileWidget.java6
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftProgressWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftServerInfoWidget.java7
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftStatsWidget.java6
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/ShenWidget.java6
62 files changed, 766 insertions, 312 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
index 461817ce..b6f11790 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
@@ -17,7 +17,7 @@ import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry;
import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNav;
import me.xmrvizzy.skyblocker.skyblock.rift.TheRift;
import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud;
-import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.ScreenMaster;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.ScreenMaster;
import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr;
import me.xmrvizzy.skyblocker.utils.*;
import me.xmrvizzy.skyblocker.utils.title.TitleContainer;
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java
index b3d78fa8..0acf5b31 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java
@@ -6,11 +6,13 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+import dev.architectury.event.events.common.TickEvent.Player;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.ScreenBuilder;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.ScreenMaster;
import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen;
-import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.ScreenBuilder;
-import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.ScreenMaster;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr;
import me.xmrvizzy.skyblocker.utils.Utils;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@@ -51,8 +53,10 @@ public class PlayerListHudMixin {
w = (int) (w / scale);
h = (int) (h / scale);
+ PlayerListMgr.updateFooter(footer);
+
try {
- ScreenMaster.render(context, w,h,footer);
+ ScreenMaster.render(context, w,h);
// Screen screen = Screen.getCorrect(w, h, footer);
// screen.render(context);
info.cancel();
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java
index 122f6c6c..8f8afb3a 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java
@@ -1,30 +1,29 @@
package me.xmrvizzy.skyblocker.skyblock.dwarven;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.CommsWidget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.HudCommsWidget;
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
-import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
public class DwarvenHud {
public static final MinecraftClient client = MinecraftClient.getInstance();
public static List<Commission> commissionList = new ArrayList<>();
-
public static final List<Pattern> COMMISSIONS = Stream.of(
"(?:Titanium|Mithril|Hard Stone) Miner",
"(?:Ice Walker|Goblin|Goblin Raid|Automaton|Sludge|Team Treasurite Member|Yog|Boss Corleone|Thyst) Slayer",
@@ -40,6 +39,7 @@ public class DwarvenHud {
"Chest Looter"
).map(s -> Pattern.compile("^.*(" + s + "): (\\d+\\.?\\d*%|DONE)"))
.collect(Collectors.toList());
+
public static void init() {
ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal("skyblocker")
.then(ClientCommandManager.literal("hud")
@@ -88,17 +88,17 @@ public class DwarvenHud {
}
public static void renderSimple(DrawContext context, int hudX, int hudY, List<Commission> commissions) {
- CommsWidget cw = new CommsWidget(commissions, false);
- cw.setX(hudX);
- cw.setY(hudY);
- cw.render(context, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground);
+ HudCommsWidget.INSTANCE.updateData(commissions, false);
+ HudCommsWidget.INSTANCE.setX(hudX);
+ HudCommsWidget.INSTANCE.setY(hudY);
+ HudCommsWidget.INSTANCE.render(context, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground);
}
public static void renderFancy(DrawContext context, int hudX, int hudY, List<Commission> commissions) {
- CommsWidget cw = new CommsWidget(commissions, true);
- cw.setX(hudX);
- cw.setY(hudY);
- cw.render(context, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground);
+ HudCommsWidget.INSTANCE.updateData(commissions, true);
+ HudCommsWidget.INSTANCE.setX(hudX);
+ HudCommsWidget.INSTANCE.setY(hudY);
+ HudCommsWidget.INSTANCE.render(context, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground);
}
public static void update() {
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java
new file mode 100644
index 00000000..1197ca2d
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java
@@ -0,0 +1,166 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+
+import me.xmrvizzy.skyblocker.SkyblockerMod;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline.AlignStage;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline.CollideStage;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline.PipelineStage;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline.PlaceStage;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline.StackStage;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EmptyWidget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EventWidget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.DrawContext;
+import net.minecraft.util.Identifier;
+
+public class ScreenBuilder {
+
+ // layout pipeline
+ private ArrayList<PipelineStage> layoutPipeline = new ArrayList<>();
+
+ // all widget instances this builder knows
+ private ArrayList<Widget> instances = new ArrayList<>();
+ // maps alias -> widget instance
+ private HashMap<String, Widget> objectMap = new HashMap<>();
+
+ /**
+ * Create a ScreenBuilder from a json.
+ */
+ public ScreenBuilder(String jsonfile) throws IOException {
+
+ Identifier ident = new Identifier(SkyblockerMod.NAMESPACE, "tabhud/" + jsonfile + ".json");
+ BufferedReader reader = MinecraftClient.getInstance().getResourceManager().openAsReader(ident);
+ JsonObject json = JsonParser.parseReader(reader).getAsJsonObject();
+ reader.close();
+
+ JsonArray widgets = json.getAsJsonArray("widgets");
+ JsonArray layout = json.getAsJsonArray("layout");
+
+ for (JsonElement w : widgets) {
+ JsonObject widget = w.getAsJsonObject();
+ String name = widget.get("name").getAsString();
+ String alias = widget.get("alias").getAsString();
+
+ Widget wid = instanceFrom(name, widget);
+ objectMap.put(alias, wid);
+ instances.add(wid);
+ }
+
+ for (JsonElement l : layout) {
+ layoutPipeline.add(createStage(l.getAsJsonObject()));
+ }
+
+ }
+
+ /**
+ * Try to find a class in the widget package that has the supplied name and
+ * call it's constructor. Manual work is required if the class has arguments.
+ */
+ public Widget instanceFrom(String name, JsonObject widget) {
+
+ // do widgets that require args the normal way
+ switch (name) {
+ case "EventWidget":
+ return new EventWidget(widget.get("inGarden").getAsBoolean());
+ case "Widget":
+ // clown case sanity check. don't instantiate the superclass >:|
+ return new EmptyWidget();
+ }
+
+ // reflect something together for the "normal" ones.
+ // TODO don't get package list for every widget; do it once and cache.
+ // fine for now, as this would only shorten the load time anyways
+
+ // find all packages that might contain widget classes
+ Package[] packs = Package.getPackages();
+
+ List<String> packnames = Arrays.stream(packs)
+ .map(pack -> pack.getName())
+ .filter(s -> s.startsWith("me.xmrvizzy.skyblocker.skyblock.tabhud.widget"))
+ .toList();
+
+ // construct the full class name and try to load.
+ Class<?> clazz = null;
+ for (String pn : packnames) {
+ try {
+ clazz = Class.forName(pn + "." + name);
+ } catch (LinkageError | ClassNotFoundException ex) {
+ continue;
+ }
+ }
+
+ // load failed.
+ if (clazz == null) {
+ return new EmptyWidget();
+ }
+
+ // return instance of that class.
+ try {
+ Constructor<?> ctor = clazz.getConstructor();
+ return (Widget) ctor.newInstance();
+ } catch (NoSuchMethodException | InstantiationException | IllegalAccessException
+ | IllegalArgumentException | InvocationTargetException | SecurityException ex) {
+ return new EmptyWidget();
+ }
+ }
+
+ /**
+ * Create a PipelineStage from a json object.
+ */
+ public PipelineStage createStage(JsonObject descr) {
+
+ String op = descr.get("op").getAsString();
+
+ switch (op) {
+ case "place":
+ return new PlaceStage(this, descr);
+ case "stack":
+ return new StackStage(this, descr);
+ case "align":
+ return new AlignStage(this, descr);
+ case "collideAgainst":
+ return new CollideStage(this, descr);
+ }
+ return null;
+ }
+
+ /**
+ * Lookup Widget instance from alias name
+ */
+ public Widget getInstance(String name) {
+ return this.objectMap.get(name);
+ }
+
+ /**
+ * Run the pipeline to build a Screen
+ */
+ public void run(DrawContext context, int screenW, int screenH) {
+ // TODO for future:
+ // no need to update and run pipeline if PlayerListMgr wasn't updated.
+
+ for (Widget w : instances) {
+ w.update();
+ }
+ for (PipelineStage ps : layoutPipeline) {
+ ps.run(screenW, screenH);
+ }
+ for (Widget w : instances) {
+ w.render(context);
+ }
+ }
+
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenMaster.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java
index 02b595d1..97969503 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenMaster.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java
@@ -1,4 +1,4 @@
-package me.xmrvizzy.skyblocker.skyblock.tabhud.screens;
+package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder;
import java.io.BufferedReader;
import java.io.IOException;
@@ -15,7 +15,6 @@ import com.google.gson.JsonParser;
import me.xmrvizzy.skyblocker.SkyblockerMod;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
-import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
public class ScreenMaster {
@@ -23,21 +22,24 @@ public class ScreenMaster {
private static final Identifier ASSIGNMENT_JSON = new Identifier(SkyblockerMod.NAMESPACE, "tabhud/assignment.json");
private static final Logger LOGGER = LoggerFactory.getLogger("skyblocker");
- private static HashMap<String, ScreenBuilder> screenAMap = new HashMap<>();
+ private static HashMap<String, ScreenBuilder> standardMap = new HashMap<>();
+ // private static HashMap<String, ScreenBuilder> screenAMap = new HashMap<>();
// private static HashMap<String, ScreenBuilder> screenBMap = new HashMap<>();
- // private static HashMap<String, ScreenBuilder> screenCMap = new HashMap<>();
static {
init();
}
+ /**
+ * Load the assignment json and construct the screen mapping
+ */
public static void init() {
try (BufferedReader reader = MinecraftClient.getInstance().getResourceManager().openAsReader(ASSIGNMENT_JSON)) {
JsonObject json = JsonParser.parseReader(reader).getAsJsonObject();
- JsonObject screenA = json.getAsJsonObject("screenA");
- for (Entry<String, JsonElement> entry : screenA.entrySet()) {
- screenAMap.put(entry.getKey(), new ScreenBuilder(entry.getValue().getAsString()));
+ JsonObject standard = json.getAsJsonObject("standard");
+ for (Entry<String, JsonElement> entry : standard.entrySet()) {
+ standardMap.put(entry.getKey(), new ScreenBuilder(entry.getValue().getAsString()));
}
} catch (IOException ioex) {
@@ -46,13 +48,17 @@ public class ScreenMaster {
}
}
- public static void render(DrawContext context, int w, int h, Text footer) {
- screenAMap.get("default").run(context, w, h, footer);
+ /**
+ * Top level render method.
+ * Calls the appropriate ScreenBuilder with the screen's dimensions
+ */
+ public static void render(DrawContext context, int w, int h) {
+ standardMap.get("default").run(context, w, h);
}
}
/*
- *
+ *
* stackWidgetsH
stackWidgetsW
--> stack (direction?) horiz/vert (align?) center/top/bottom/left/right
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/AlignStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/AlignStage.java
new file mode 100644
index 00000000..87638c33
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/AlignStage.java
@@ -0,0 +1,53 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline;
+
+import java.util.ArrayList;
+
+import com.google.gson.JsonObject;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.ScreenBuilder;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
+
+public class AlignStage extends PipelineStage {
+
+ private String reference;
+
+ public AlignStage(ScreenBuilder builder, JsonObject descr) {
+ this.reference = descr.get("reference").getAsString();
+ this.primary = new ArrayList<Widget>(descr.getAsJsonArray("apply_to")
+ .asList()
+ .stream()
+ .map(x -> builder.getInstance(x.getAsString()))
+ .toList());
+ }
+
+ public void run(int screenW, int screenH) {
+ int wHalf, hHalf;
+ for (Widget wid : primary) {
+ switch (this.reference) {
+ case "horizontalCenter":
+ wid.setX((screenW - wid.getWidth()) / 2);
+ break;
+ case "verticalCenter":
+ wid.setY((screenH - wid.getHeight()) / 2);
+ break;
+ case "leftOfCenter":
+ wHalf = screenW / 2;
+ wid.setX(wHalf - 3 - wid.getWidth());
+ break;
+ case "rightOfCenter":
+ wHalf = screenW / 2;
+ wid.setX(wHalf + 3);
+ break;
+ case "topOfCenter":
+ hHalf = screenH / 2;
+ wid.setY(hHalf - 3 - wid.getHeight());
+ break;
+ case "botOfCenter":
+ hHalf = screenH / 2;
+ wid.setY(hHalf + 3);
+ break;
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/CollideStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/CollideStage.java
new file mode 100644
index 00000000..8275e842
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/CollideStage.java
@@ -0,0 +1,84 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline;
+
+import java.util.ArrayList;
+
+import com.google.gson.JsonObject;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.ScreenBuilder;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
+
+public class CollideStage extends PipelineStage {
+
+ private String direction;
+
+ public CollideStage(ScreenBuilder builder, JsonObject descr) {
+ this.direction = descr.get("direction").getAsString();
+ this.primary = new ArrayList<Widget>(descr.getAsJsonArray("widgets")
+ .asList()
+ .stream()
+ .map(x -> builder.getInstance(x.getAsString()))
+ .toList());
+ this.secondary = new ArrayList<Widget>(descr.getAsJsonArray("colliders")
+ .asList()
+ .stream()
+ .map(x -> builder.getInstance(x.getAsString()))
+ .toList());
+ }
+
+ public void run(int screenW, int screenH) {
+ if (this.direction.equals("left")) {
+ primary.forEach(w -> collideAgainstL(screenW, w));
+ } else if (this.direction.equals("right")) {
+ primary.forEach(w -> collideAgainstR(screenW, w));
+ }
+ }
+
+ public void collideAgainstL(int screenW, Widget w) {
+ int yMin = w.getY();
+ int yMax = w.getY() + w.getHeight();
+
+ int xCor = screenW / 2;
+
+ // assume others to be sorted top-bottom.
+ for (Widget other : secondary) {
+ if (other.getY() + other.getHeight() + 5 < yMin) {
+ // too high, next one
+ continue;
+ }
+
+ if (other.getY() - 5 > yMax) {
+ // too low, next
+ continue;
+ }
+
+ int xPos = other.getX() - 5 - w.getWidth();
+ xCor = Math.min(xCor, xPos);
+ }
+ w.setX(xCor);
+ }
+
+ public void collideAgainstR(int screenW, Widget w) {
+ int yMin = w.getY();
+ int yMax = w.getY() + w.getHeight();
+
+ int xCor = screenW / 2;
+
+ // assume others to be sorted top-bottom.
+ for (Widget other : secondary) {
+ if (other.getY() + other.getHeight() + 5 < yMin) {
+ // too high, next one
+ continue;
+ }
+
+ if (other.getY() - 5 > yMax) {
+ // too low, next
+ continue;
+ }
+
+ int xPos = other.getX() + other.getWidth() + 5;
+ xCor = Math.max(xCor, xPos);
+ }
+ w.setX(xCor);
+ }
+
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PipelineStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PipelineStage.java
index d33078d8..e560058c 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PipelineStage.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PipelineStage.java
@@ -1,4 +1,4 @@
-package me.xmrvizzy.skyblocker.skyblock.tabhud.screens;
+package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline;
import java.util.ArrayList;
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PlaceStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PlaceStage.java
new file mode 100644
index 00000000..3ed89fda
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PlaceStage.java
@@ -0,0 +1,31 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline;
+
+import java.util.ArrayList;
+
+import com.google.gson.JsonObject;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.ScreenBuilder;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
+
+public class PlaceStage extends PipelineStage {
+
+ private String where;
+
+ public PlaceStage(ScreenBuilder builder, JsonObject descr) {
+ this.where = descr.get("where").getAsString();
+ this.primary = new ArrayList<Widget>(descr.getAsJsonArray("apply_to")
+ .asList()
+ .stream()
+ .map(x -> builder.getInstance(x.getAsString()))
+ .limit(1)
+ .toList());
+ }
+
+ public void run(int screenW, int screenH) {
+ Widget wid = primary.get(0);
+ if (where.equals("center")) {
+ wid.setY((screenH - wid.getHeight()) / 2);
+ wid.setX((screenW - wid.getWidth()) / 2);
+ }
+ }
+} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/StackStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/StackStage.java
new file mode 100644
index 00000000..d144c67b
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/StackStage.java
@@ -0,0 +1,74 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline;
+
+import java.util.ArrayList;
+
+import com.google.gson.JsonObject;
+
+import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.ScreenBuilder;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
+
+public class StackStage extends PipelineStage {
+
+ private String direction;
+ private String align;
+
+ public StackStage(ScreenBuilder builder, JsonObject descr) {
+ this.direction = descr.get("direction").getAsString();
+ this.align = descr.get("align").getAsString();
+ this.primary = new ArrayList<Widget>(descr.getAsJsonArray("apply_to")
+ .asList()
+ .stream()
+ .map(x -> builder.getInstance(x.getAsString()))
+ .toList());
+ }
+
+ public void run(int screenW, int screenH) {
+ switch (this.direction) {
+ case "horizontal":
+ stackWidgetsHoriz(screenW);
+ break;
+ case "vertical":
+ stackWidgetsVert(screenH);
+ break;
+ }
+ }
+
+ public void stackWidgetsVert( int screenH) {
+ int compHeight = -5;
+ for (Widget wid : primary) {
+ compHeight += wid.getHeight() + 5;
+ }
+
+ int y = switch (this.align) {
+
+ case "top" -> y = 5;
+ case "bot" -> y = (screenH-compHeight) - 5;
+ default -> y = (screenH-compHeight)/2;
+ };
+
+ for (Widget wid : primary) {
+ wid.setY(y);
+ y += wid.getHeight() + 5;
+ }
+ }
+
+ public void stackWidgetsHoriz(int screenW) {
+ // TODO not centered
+ int compWidth = -5;
+ for (Widget wid : primary) {
+ compWidth += wid.getWidth() + 5;
+ }
+
+ int x = switch (this.align) {
+
+ case "left" -> x = 5;
+ case "right" -> x = (screenW-compWidth) - 5;
+ default -> x = (screenW-compWidth)/2;
+ };
+
+ for (Widget wid : primary) {
+ wid.setX(x);
+ x += wid.getWidth() + 5;
+ }
+ }
+} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlaceStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlaceStage.java
deleted file mode 100644
index aba952a0..00000000
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlaceStage.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package me.xmrvizzy.skyblocker.skyblock.tabhud.screens;
-
-import java.util.ArrayList;
-
-import com.google.gson.JsonObject;
-import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
-
-public class PlaceStage extends PipelineStage {
-
- private String where;
-
- public PlaceStage(ScreenBuilder builder, JsonObject descr) {
- this.where = descr.get("where").getAsString();
- this.primary = new ArrayList<Widget>(descr.getAsJsonArray("apply_to")
- .asList()
- .stream()
- .map(x -> builder.getInstance(x.getAsString()))
- .toList());
- }
-
- public void run(int screenW, int screenH) {
- for (Widget wid : primary) {
- if (where.equals("center")) {
- wid.setY((screenH - wid.getHeight()) / 2);
- wid.setX((screenW - wid.getWidth()) / 2);
- }
- }
- }
-} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenBuilder.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenBuilder.java
deleted file mode 100644
index c9c4ad18..00000000
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenBuilder.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package me.xmrvizzy.skyblocker.skyblock.tabhud.screens;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-
-import me.xmrvizzy.skyblocker.SkyblockerMod;
-import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EmptyWidget;
-import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
-import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.gui.DrawContext;
-import net.minecraft.text.Text;
-import net.minecraft.util.Identifier;
-
-public class ScreenBuilder {
-
- private ArrayList<PipelineStage> layoutPipeline = new ArrayList<>();
-
- private ArrayList<Widget> instances = new ArrayList<>();
- private HashMap<String, Widget> objectMap = new HashMap<>();
-
-
- public ScreenBuilder(String jsonfile) throws IOException {
-
- Identifier ident = new Identifier(SkyblockerMod.NAMESPACE, "tabhud/" + jsonfile + ".json");
- BufferedReader reader = MinecraftClient.getInstance().getResourceManager().openAsReader(ident);
- JsonObject json = JsonParser.parseReader(reader).getAsJsonObject();
- reader.close();
-
- JsonArray widgets = json.getAsJsonArray("widgets");
- JsonArray layout = json.getAsJsonArray("layout");
-
- for (JsonElement w : widgets) {
- JsonObject widget = w.getAsJsonObject();
- String name = widget.get("name").getAsString();
- String alias = widget.get("alias").getAsString();
-
- JsonElement args = widget.get("args");
- JsonObject argsObj = (args == null) ? null : args.getAsJsonObject();
-
- Widget wid = instanceFrom(name, argsObj);
- objectMap.put(alias, wid);
- instances.add(wid);
- }
-
- for (JsonElement l : layout) {
- layoutPipeline.add(createStage(l.getAsJsonObject()));
- }
-
- }
-
- public Widget instanceFrom(String name, JsonObject args) {
- return switch (name) {
- case "EmptyWidget" -> new EmptyWidget();
- default -> new EmptyWidget();
- };
- }
-
- public PipelineStage createStage(JsonObject descr) {
-
- String op = descr.get("op").getAsString();
-
- switch (op) {
- case "place":
- return new PlaceStage(this, descr);
- }
- return null;
- }
-
- public Widget getInstance(String name) {
- return this.objectMap.get(name);
- }
-
- public void run(DrawContext context, int screenW, int screenH, Text footer) {
-
- for (Widget w : instances) {
- w.update();
- }
- for (PipelineStage ps : layoutPipeline) {
- ps.run(screenW, screenH);
- }
- for (Widget w : instances) {
- w.render(context);
- }
- }
-
-}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GardenInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GardenInfoScreen.java
index 0bb12c8e..587c2274 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GardenInfoScreen.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GardenInfoScreen.java
@@ -20,32 +20,32 @@ public class GardenInfoScreen extends Screen {
String f = footer.getString();
- GardenSkillsWidget gsw = new GardenSkillsWidget();
- EventWidget evw = new EventWidget(true);
- UpgradeWidget uw = new UpgradeWidget(f);
+ // GardenSkillsWidget gsw = new GardenSkillsWidget();
+ // EventWidget evw = new EventWidget(true);
+ // // UpgradeWidget uw = new UpgradeWidget(f);
- ProfileWidget pw = new ProfileWidget();
- EffectWidget efw = new EffectWidget(f);
+ // ProfileWidget pw = new ProfileWidget();
+ // EffectWidget efw = new EffectWidget(f);
- JacobsContestWidget jcw = new JacobsContestWidget();
- CookieWidget cw = new CookieWidget(f);
+ // JacobsContestWidget jcw = new JacobsContestWidget();
+ // CookieWidget cw = new CookieWidget(f);
- // layout code incoming
- this.stackWidgetsH(gsw, evw, uw);
- this.stackWidgetsH(pw, efw);
- this.stackWidgetsH(jcw, cw);
+ // // 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.centerW(gsw);
+ // this.centerW(evw);
+ // this.centerW(uw);
- this.collideAgainstL(pw, gsw, evw, uw);
- this.collideAgainstL(efw, gsw, evw, 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.collideAgainstR(jcw, gsw, evw, uw);
+ // this.collideAgainstR(cw, gsw, evw, uw);
- this.addWidgets(gsw, evw, uw, pw, efw, jcw, cw);
+ // this.addWidgets(gsw, evw, uw, pw, efw, jcw, cw);
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericInfoScreen.java
index 046a9313..15c3b0e5 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericInfoScreen.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericInfoScreen.java
@@ -16,33 +16,33 @@ public class GenericInfoScreen extends Screen {
public GenericInfoScreen(int w, int h, Text footer) {
super(w, h);
- String f = footer.getString();
+ // String f = footer.getString();
- SkillsWidget sw = new SkillsWidget();
- EventWidget evw = new EventWidget(false);
- UpgradeWidget uw = new UpgradeWidget(f);
+ // SkillsWidget sw = new SkillsWidget();
+ // EventWidget evw = new EventWidget(false);
+ // UpgradeWidget uw = new UpgradeWidget(f);
- ProfileWidget pw = new ProfileWidget();
- EffectWidget efw = new EffectWidget(f);
+ // ProfileWidget pw = new ProfileWidget();
+ // EffectWidget efw = new EffectWidget(f);
- ElectionWidget elw = new ElectionWidget();
- CookieWidget cw = new CookieWidget(f);
+ // ElectionWidget elw = new ElectionWidget();
+ // CookieWidget cw = new CookieWidget(f);
- this.stackWidgetsH(sw, evw, uw);
- this.stackWidgetsH(pw, efw);
- this.stackWidgetsH(elw, cw);
+ // this.stackWidgetsH(sw, evw, uw);
+ // this.stackWidgetsH(pw, efw);
+ // this.stackWidgetsH(elw, cw);
- this.centerW(sw);
- this.centerW(evw);
- this.centerW(uw);
+ // this.centerW(sw);
+ // this.centerW(evw);
+ // this.centerW(uw);
- this.collideAgainstL(pw, sw, evw, uw);
- this.collideAgainstL(efw, sw, evw, uw);
+ // this.collideAgainstL(pw, sw, evw, uw);
+ // this.collideAgainstL(efw, sw, evw, uw);
- this.collideAgainstR(elw, sw, evw, uw);
- this.collideAgainstR(cw, sw, evw, uw);
+ // this.collideAgainstR(elw, sw, evw, uw);
+ // this.collideAgainstR(cw, sw, evw, uw);
- this.addWidgets(sw, evw, uw, pw, efw, elw, cw);
+ // this.addWidgets(sw, evw, uw, pw, efw, elw, cw);
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericRiftInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericRiftInfoScreen.java
index 9821b5a3..cf6ee77a 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericRiftInfoScreen.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericRiftInfoScreen.java
@@ -13,26 +13,26 @@ public class GenericRiftInfoScreen extends Screen {
public GenericRiftInfoScreen(int w, int h, Text footer) {
super(w, h);
- String f = footer.getString();
+ // String f = footer.getString();
- RiftProfileWidget profile = new RiftProfileWidget();
- RiftStatsWidget stats = new RiftStatsWidget();
- ShenWidget shen = new ShenWidget();
+ // RiftProfileWidget profile = new RiftProfileWidget();
+ // RiftStatsWidget stats = new RiftStatsWidget();
+ // ShenWidget shen = new ShenWidget();
- CookieWidget cookie = new CookieWidget(f);
- AdvertisementWidget advertisement = new AdvertisementWidget();
+ // // CookieWidget cookie = new CookieWidget(f);
+ // AdvertisementWidget advertisement = new AdvertisementWidget();
- this.stackWidgetsH(stats, advertisement);
- this.stackWidgetsH(profile, shen, cookie);
+ // this.stackWidgetsH(stats, advertisement);
+ // // this.stackWidgetsH(profile, shen, cookie);
- this.offCenterL(stats);
- this.offCenterL(advertisement);
+ // this.offCenterL(stats);
+ // this.offCenterL(advertisement);
- this.offCenterR(profile);
- this.offCenterR(shen);
- this.offCenterR(cookie);
+ // this.offCenterR(profile);
+ // this.offCenterR(shen);
+ // // this.offCenterR(cookie);
- this.addWidgets(profile, stats, shen, cookie, advertisement);
+ // // this.addWidgets(profile, stats, shen, cookie, advertisement);
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java
index ee4319dc..7895b77b 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java
@@ -27,6 +27,7 @@ public class PlayerListMgr {
public static final Logger LOGGER = LoggerFactory.getLogger("Skyblocker Regex");
private static List<PlayerListEntry> playerList;
+ private static String footer;
public static void updateList() {
@@ -42,6 +43,14 @@ public class PlayerListMgr {
}
}
+ public static void updateFooter(Text f) {
+ footer = f.getString();
+ }
+
+ public static String getFooter() {
+ return footer;
+ }
+
/**
* Get the display name at some index of the player list and apply a pattern to
* it
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CommsWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CommsWidget.java
index de90cf30..1cfa0cb2 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CommsWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CommsWidget.java
@@ -31,7 +31,10 @@ public class CommsWidget extends Widget {
public CommsWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+ @Override
+ public void updateContent() {
for (int i = 50; i <= 53; i++) {
Matcher m = PlayerListMgr.regexAt(i, COMM_PATTERN);
// end of comms found?
@@ -55,33 +58,6 @@ public class CommsWidget extends Widget {
}
this.addComponent(pc);
}
- this.pack();
- }
-
- // for the dwarven hud
- public CommsWidget(List<Commission> commissions, boolean isFancy) {
- super(TITLE, Formatting.AQUA.getColorValue());
- for (Commission comm : commissions) {
-
- Text c = Text.literal(comm.commission());
-
- float p = 100f;
- if (!comm.progression().contains("DONE")) {
- p = Float.parseFloat(comm.progression().substring(0, comm.progression().length() - 1));
- }
-
- Component comp;
- if (isFancy) {
- comp = new ProgressComponent(Ico.BOOK, c, p, pcntToCol(p));
- } else {
- comp = new PlainTextComponent(
- Text.literal(comm.commission() + ": ")
- .append(Text.literal(comm.progression()).formatted(Formatting.GREEN)));
- }
- this.addComponent(comp);
- }
- this.pack();
-
}
private int pcntToCol(float pcnt) {
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ComposterWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ComposterWidget.java
index 5922fcbc..1307b407 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ComposterWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ComposterWidget.java
@@ -16,13 +16,15 @@ public class ComposterWidget extends Widget {
public ComposterWidget() {
super(TITLE, Formatting.GREEN.getColorValue());
+ }
+ @Override
+ public void updateContent() {
this.addSimpleIcoText(Ico.SAPLING, "Organic Matter:", Formatting.YELLOW, 48);
this.addSimpleIcoText(Ico.FURNACE, "Fuel:", Formatting.BLUE, 49);
this.addSimpleIcoText(Ico.CLOCK, "Time Left:", Formatting.RED, 50);
this.addSimpleIcoText(Ico.COMPOSTER, "Stored Compost:", Formatting.DARK_GREEN, 51);
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CookieWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CookieWidget.java
index 48cb90bd..bf1d086f 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CookieWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CookieWidget.java
@@ -4,6 +4,7 @@ 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.component.IcoTextComponent;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
@@ -19,19 +20,21 @@ public class CookieWidget extends Widget {
private static final Pattern COOKIE_PATTERN = Pattern.compile(".*\\nCookie Buff\\n(?<buff>.*)\\n");
- public CookieWidget(String footertext) {
+ public CookieWidget() {
super(TITLE, Formatting.DARK_PURPLE.getColorValue());
+ }
+ @Override
+ public void updateContent() {
+ String footertext = PlayerListMgr.getFooter();
if (footertext == null || !footertext.contains("Cookie Buff")) {
this.addComponent(new IcoTextComponent());
- this.pack();
return;
}
Matcher m = COOKIE_PATTERN.matcher(footertext);
if (!m.find() || m.group("buff") == null) {
this.addComponent(new IcoTextComponent());
- this.pack();
return;
}
@@ -42,7 +45,6 @@ public class CookieWidget extends Widget {
Text cookie = Text.literal("Time Left: ").append(buff);
this.addComponent(new IcoTextComponent(Ico.COOKIE, cookie));
}
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonBuffWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonBuffWidget.java
index d56d3522..5b880514 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonBuffWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonBuffWidget.java
@@ -1,5 +1,6 @@
package me.xmrvizzy.skyblocker.skyblock.tabhud.widget;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr;
import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
@@ -18,10 +19,15 @@ public class DungeonBuffWidget extends Widget {
public DungeonBuffWidget(String footertext) {
super(TITLE, Formatting.DARK_PURPLE.getColorValue());
+ }
+
+ @Override
+ public void updateContent() {
+
+ String footertext = PlayerListMgr.getFooter();
if (footertext == null || !footertext.contains("Dungeon Buffs")) {
this.addComponent(new PlainTextComponent(Text.literal("No data").formatted(Formatting.GRAY)));
- this.pack();
return;
}
@@ -30,7 +36,6 @@ public class DungeonBuffWidget extends Widget {
if (!lines[1].startsWith("Blessing")) {
this.addComponent(new PlainTextComponent(Text.literal("No buffs found!").formatted(Formatting.GRAY)));
- this.pack();
return;
}
@@ -48,7 +53,6 @@ public class DungeonBuffWidget extends Widget {
this.addComponent(new PlainTextComponent(Text.literal(line).styled(style -> style.withColor(color))));
}
- this.pack();
}
@SuppressWarnings("DataFlowIssue")
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDeathWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDeathWidget.java
index 78e1aeae..6cdf946a 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDeathWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDeathWidget.java
@@ -24,7 +24,10 @@ public class DungeonDeathWidget extends Widget {
public DungeonDeathWidget() {
super(TITLE, Formatting.DARK_PURPLE.getColorValue());
+ }
+ @Override
+ public void updateContent() {
Matcher m = PlayerListMgr.regexAt(25, DEATH_PATTERN);
if (m == null) {
this.addComponent(new IcoTextComponent());
@@ -39,7 +42,6 @@ public class DungeonDeathWidget extends Widget {
this.addSimpleIcoText(Ico.POTION, "Healing Done:", Formatting.RED, 27);
this.addSimpleIcoText(Ico.NTAG, "Milestone:", Formatting.YELLOW, 28);
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDownedWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDownedWidget.java
index 9bb250f7..2ca617ee 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDownedWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDownedWidget.java
@@ -17,7 +17,10 @@ public class DungeonDownedWidget extends Widget {
public DungeonDownedWidget() {
super(TITLE, Formatting.DARK_PURPLE.getColorValue());
+ }
+ @Override
+ public void updateContent() {
String down = PlayerListMgr.strAt(21);
if (down == null) {
this.addComponent(new IcoTextComponent());
@@ -36,7 +39,6 @@ public class DungeonDownedWidget extends Widget {
this.addSimpleIcoText(Ico.CLOCK, "Time:", Formatting.GRAY, 22);
this.addSimpleIcoText(Ico.POTION, "Revive:", Formatting.GRAY, 23);
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java
index 443cca55..e565bd8f 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java
@@ -45,10 +45,16 @@ public class DungeonPlayerWidget extends Widget {
MSGS.add("More is better!");
}
+ private int player;
+
// title needs to be changeable here
public DungeonPlayerWidget(int player) {
super(TITLE, Formatting.DARK_PURPLE.getColorValue());
+ this.player = player;
+ }
+ @Override
+ public void updateContent() {
int start = 1 + (player - 1) * 4;
if (PlayerListMgr.strAt(start) == null) {
@@ -56,7 +62,6 @@ public class DungeonPlayerWidget extends Widget {
IcoTextComponent noplayer = new IcoTextComponent(Ico.SIGN,
Text.literal(MSGS.get(idx)).formatted(Formatting.GRAY));
this.addComponent(noplayer);
- this.pack();
return;
}
Matcher m = PlayerListMgr.regexAt(start, PLAYER_PATTERN);
@@ -94,6 +99,5 @@ public class DungeonPlayerWidget extends Widget {
this.addSimpleIcoText(Ico.CLOCK, "Ult Cooldown:", Formatting.GOLD, start + 1);
this.addSimpleIcoText(Ico.POTION, "Revives:", Formatting.DARK_PURPLE, start + 2);
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPuzzleWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPuzzleWidget.java
index 2529e876..ef765fc3 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPuzzleWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPuzzleWidget.java
@@ -26,7 +26,10 @@ public class DungeonPuzzleWidget extends Widget {
public DungeonPuzzleWidget() {
super(TITLE, Formatting.DARK_PURPLE.getColorValue());
+ }
+ @Override
+ public void updateContent() {
int pos = 48;
while (pos < 60) {
@@ -49,7 +52,6 @@ public class DungeonPuzzleWidget extends Widget {
this.addComponent(
new IcoTextComponent(Ico.BARRIER, Text.literal("No puzzles!").formatted(Formatting.GRAY)));
}
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonSecretWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonSecretWidget.java
index 93eb69de..a985b4b1 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonSecretWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonSecretWidget.java
@@ -14,11 +14,13 @@ public class DungeonSecretWidget extends Widget {
public DungeonSecretWidget() {
super(TITLE, Formatting.DARK_PURPLE.getColorValue());
+ }
+ @Override
+ public void updateContent() {
this.addSimpleIcoText(Ico.CHEST, "Secrets:", Formatting.YELLOW, 31);
this.addSimpleIcoText(Ico.SKULL, "Crypts:", Formatting.YELLOW, 32);
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonServerWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonServerWidget.java
index 81b8f907..05b88127 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonServerWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonServerWidget.java
@@ -24,7 +24,10 @@ public class DungeonServerWidget extends Widget {
public DungeonServerWidget() {
super(TITLE, Formatting.DARK_PURPLE.getColorValue());
+ }
+ @Override
+ public void updateContent() {
this.addSimpleIcoText(Ico.NTAG, "Name:", Formatting.AQUA, 41);
this.addSimpleIcoText(Ico.SIGN, "Rooms Visited:", Formatting.DARK_PURPLE, 42);
this.addSimpleIcoText(Ico.SIGN, "Rooms Completed:", Formatting.LIGHT_PURPLE, 43);
@@ -40,8 +43,6 @@ public class DungeonServerWidget extends Widget {
}
this.addSimpleIcoText(Ico.CLOCK, "Time:", Formatting.GOLD, 45);
-
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EffectWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EffectWidget.java
index cd39a25a..718ea2d3 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EffectWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EffectWidget.java
@@ -1,6 +1,7 @@
package me.xmrvizzy.skyblocker.skyblock.tabhud.widget;
import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr;
import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoFatTextComponent;
import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent;
import net.minecraft.text.MutableText;
@@ -16,12 +17,17 @@ public class EffectWidget extends Widget {
private static final MutableText TITLE = Text.literal("Effect Info").formatted(Formatting.DARK_PURPLE,
Formatting.BOLD);
- public EffectWidget(String footertext) {
+ public EffectWidget() {
super(TITLE, Formatting.DARK_PURPLE.getColorValue());
+ }
+
+ @Override
+ public void updateContent() {
+
+ String footertext = PlayerListMgr.getFooter();
if (footertext == null || !footertext.contains("Active Effects")) {
this.addComponent(new IcoTextComponent());
- this.pack();
return;
}
@@ -29,7 +35,6 @@ public class EffectWidget extends Widget {
String[] lines = footertext.split("Active Effects")[1].split("\n");
if (lines.length < 2) {
this.addComponent(new IcoTextComponent());
- this.pack();
return;
}
@@ -47,7 +52,6 @@ public class EffectWidget extends Widget {
int idx = number.indexOf(' ');
if (idx == -1 || lines.length < 4) {
this.addComponent(new IcoFatTextComponent());
- this.pack();
return;
}
number = number.substring(0, idx);
@@ -58,7 +62,6 @@ public class EffectWidget extends Widget {
Text.literal(lines[3]).formatted(Formatting.AQUA));
this.addComponent(iftc);
}
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ElectionWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ElectionWidget.java
index ed07982c..0f858fb6 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ElectionWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ElectionWidget.java
@@ -48,14 +48,16 @@ public class ElectionWidget extends Widget {
public ElectionWidget() {
super(TITLE, Formatting.YELLOW.getColorValue());
+ }
+ @Override
+ public void updateContent() {
String status = PlayerListMgr.strAt(76);
if (status == null) {
this.addComponent(new IcoTextComponent());
this.addComponent(new IcoTextComponent());
this.addComponent(new IcoTextComponent());
this.addComponent(new IcoTextComponent());
- this.pack();
return;
}
@@ -97,7 +99,6 @@ public class ElectionWidget extends Widget {
}
}
}
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EmptyWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EmptyWidget.java
index 61da439a..0e85003f 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EmptyWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EmptyWidget.java
@@ -17,12 +17,10 @@ public class EmptyWidget extends Widget {
}
@Override
- public void update() {
- super.update();
+ public void updateContent() {
Text info = Text.of("No info for this area!");
PlainTextComponent inf = new PlainTextComponent(info);
this.addComponent(inf);
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EssenceWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EssenceWidget.java
index fc0780e1..c503d89f 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EssenceWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EssenceWidget.java
@@ -19,6 +19,10 @@ public class EssenceWidget extends Widget {
public EssenceWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+
+ @Override
+ public void updateContent() {
wither = Widget.simpleEntryText(46, "Wither:", Formatting.DARK_PURPLE);
spider = Widget.simpleEntryText(47, "Spider:", Formatting.DARK_PURPLE);
undead = Widget.simpleEntryText(48, "Undead:", Formatting.DARK_PURPLE);
@@ -39,6 +43,5 @@ public class EssenceWidget extends Widget {
tc.addToCell(1, 2, new IcoTextComponent(Ico.ICE, ice));
tc.addToCell(1, 3, new IcoTextComponent(Ico.REDSTONE, crimson));
this.addComponent(tc);
- this.pack();
}
}
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 1b46e621..b3563f1b 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
@@ -11,9 +11,15 @@ import net.minecraft.util.Formatting;
public class EventWidget extends Widget {
private static final MutableText TITLE = Text.literal("Event Info").formatted(Formatting.YELLOW, Formatting.BOLD);
+ private boolean isInGarden;
+
public EventWidget(boolean isInGarden) {
super(TITLE, Formatting.YELLOW.getColorValue());
+ this.isInGarden = isInGarden;
+ }
+ @Override
+ public void updateContent() {
// 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;
@@ -24,7 +30,6 @@ public class EventWidget extends Widget {
Text time = Widget.plainEntryText(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/FireSaleWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java
index ddf51f32..ba6a0ec1 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java
@@ -29,18 +29,19 @@ public class FireSaleWidget extends Widget {
public FireSaleWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+ @Override
+ public void updateContent() {
String event = PlayerListMgr.strAt(46);
if (event == null) {
this.addComponent(new PlainTextComponent(Text.literal("No Fire Sale!").formatted(Formatting.GRAY)));
- this.pack();
return;
}
if (event.contains("Starts In")) {
this.addSimpleIcoText(Ico.CLOCK, "Starts in:", Formatting.DARK_AQUA, 46);
- this.pack();
return;
}
@@ -57,7 +58,6 @@ public class FireSaleWidget extends Widget {
ProgressComponent pc = new ProgressComponent(Ico.GOLD, itemTxt, prgressTxt, pcnt, pcntToCol(pcnt));
this.addComponent(pc);
}
- this.pack();
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ForgeWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ForgeWidget.java
index da1ba6c5..96b85fef 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ForgeWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ForgeWidget.java
@@ -20,12 +20,15 @@ public class ForgeWidget extends Widget {
public ForgeWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+
+ @Override
+ public void updateContent() {
int forgestart = 54;
// why is it forges and not looms >:(
String pos = PlayerListMgr.strAt(53);
if (pos == null) {
this.addComponent(new IcoTextComponent());
- this.pack();
return;
}
@@ -73,7 +76,6 @@ public class ForgeWidget extends Widget {
}
this.addComponent(c);
}
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenServerWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenServerWidget.java
index b0fc160f..2fd81873 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenServerWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenServerWidget.java
@@ -24,7 +24,10 @@ public class GardenServerWidget extends Widget {
public GardenServerWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+ @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);
@@ -33,7 +36,6 @@ public class GardenServerWidget extends Widget {
Matcher m = PlayerListMgr.regexAt(45, VISITOR_PATTERN);
if (m == null ) {
this.addComponent(new IcoTextComponent());
- this.pack();
return;
}
@@ -47,7 +49,6 @@ public class GardenServerWidget extends Widget {
Text visitor = Widget.simpleEntryText(vis, "Next Visitor: ", col);
IcoTextComponent v = new IcoTextComponent(Ico.PLAYER, visitor);
this.addComponent(v);
- 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
index 26e29ce2..2b928cba 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenSkillsWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenSkillsWidget.java
@@ -30,7 +30,10 @@ public class GardenSkillsWidget extends Widget {
public GardenSkillsWidget() {
super(TITLE, Formatting.YELLOW.getColorValue());
+ }
+ @Override
+ public void updateContent() {
ProgressComponent pc;
Matcher m = PlayerListMgr.regexAt(66, SKILL_PATTERN);
if (m == null) {
@@ -72,7 +75,6 @@ public class GardenSkillsWidget extends Widget {
}
this.addComponent(pc2);
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GuestServerWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GuestServerWidget.java
index cb208e92..6f1f4811 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GuestServerWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GuestServerWidget.java
@@ -16,13 +16,15 @@ public class GuestServerWidget extends Widget {
public GuestServerWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+ @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.SIGN, "Owner:", Formatting.GREEN, 43);
this.addSimpleIcoText(Ico.SIGN, "Status:", Formatting.BLUE, 44);
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/HudCommsWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/HudCommsWidget.java
new file mode 100644
index 00000000..4ba4b0aa
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/HudCommsWidget.java
@@ -0,0 +1,75 @@
+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.dwarven.DwarvenHud.Commission;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.Component;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent;
+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;
+
+// this widget shows the status of the king's commissions.
+// (dwarven mines and crystal hollows)
+// USE ONLY WITH THE DWARVEN HUD!
+
+public class HudCommsWidget extends Widget {
+
+ private static final MutableText TITLE = Text.literal("Commissions").formatted(Formatting.DARK_AQUA,
+ Formatting.BOLD);
+
+ private List<Commission> commissions;
+ private boolean isFancy;
+
+ // disgusting hack to get around text renderer issues.
+ // the ctor eventually tries to get the font's height, which doesn't work
+ // when called before the client window is created (roughly).
+ // the rebdering god 2 from the fabricord explained that detail, thanks!
+ public static HudCommsWidget INSTANCE = new HudCommsWidget();
+
+ // another repulsive hack to make this widget-like hud element work with the new widget class
+ // DON'T USE WITH THE WIDGET SYSTEM, ONLY USE FOR DWARVENHUD!
+ public HudCommsWidget() {
+ super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+
+ public void updateData(List<Commission> commissions, boolean isFancy) {
+ this.commissions = commissions;
+ this.isFancy = isFancy;
+ }
+
+ @Override
+ public void updateContent() {
+ for (Commission comm : commissions) {
+
+ Text c = Text.literal(comm.commission());
+
+ float p = 100f;
+ if (!comm.progression().contains("DONE")) {
+ p = Float.parseFloat(comm.progression().substring(0, comm.progression().length() - 1));
+ }
+
+ Component comp;
+ if (isFancy) {
+ comp = new ProgressComponent(Ico.BOOK, c, p, pcntToCol(p));
+ } else {
+ comp = new PlainTextComponent(
+ Text.literal(comm.commission() + ": ")
+ .append(Text.literal(comm.progression()).formatted(Formatting.GREEN)));
+ }
+ this.addComponent(comp);
+ }
+ }
+
+ private 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/IslandGuestsWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandGuestsWidget.java
index e0f5f1a3..faf231a8 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandGuestsWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandGuestsWidget.java
@@ -23,6 +23,10 @@ public class IslandGuestsWidget extends Widget {
public IslandGuestsWidget() {
super(TITLE, Formatting.AQUA.getColorValue());
+ }
+
+ @Override
+ public void updateContent() {
for (int i = 21; i < 40; i++) {
String str = PlayerListMgr.strAt(i);
if (str == null) {
@@ -38,7 +42,6 @@ public class IslandGuestsWidget extends Widget {
this.addComponent(new PlainTextComponent(Text.of(m.group(1))));
}
}
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java
index e81a6d85..a978654f 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java
@@ -26,6 +26,11 @@ public class IslandOwnersWidget extends Widget {
public IslandOwnersWidget() {
super(TITLE, Formatting.DARK_PURPLE.getColorValue());
+ }
+
+ @Override
+ public void updateContent() {
+
for (int i = 1; i < 20; i++) {
Matcher m = PlayerListMgr.regexAt(i, OWNER_PATTERN);
if (m == null) {
@@ -55,7 +60,7 @@ public class IslandOwnersWidget extends Widget {
PlainTextComponent ptc = new PlainTextComponent(entry);
this.addComponent(ptc);
}
- this.pack();
+
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandSelfWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandSelfWidget.java
index 4b03da6e..cc7a2f0c 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandSelfWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandSelfWidget.java
@@ -20,20 +20,24 @@ public class IslandSelfWidget extends Widget {
// matches an owner
// group 1: player name, optionally offline time
// ^\[\d*\] (?:\[[A-Za-z]+\] )?([A-Za-z0-9_() ]*)(?: .*)?$|^(.*)$
- private static final Pattern OWNER_PATTERN = Pattern.compile("^\\[\\d*\\] (?:\\[[A-Za-z]+\\] )?([A-Za-z0-9_() ]*)(?: .*)?$|^(.*)$");
+ private static final Pattern OWNER_PATTERN = Pattern
+ .compile("^\\[\\d*\\] (?:\\[[A-Za-z]+\\] )?([A-Za-z0-9_() ]*)(?: .*)?$|^(.*)$");
public IslandSelfWidget() {
super(TITLE, Formatting.DARK_PURPLE.getColorValue());
+ }
+
+ @Override
+ public void updateContent() {
for (int i = 1; i < 20; i++) {
- Matcher m = PlayerListMgr.regexAt( i, OWNER_PATTERN);
+ Matcher m = PlayerListMgr.regexAt(i, OWNER_PATTERN);
if (m == null) {
break;
}
-
+
Text entry = (m.group(1) != null) ? Text.of(m.group(1)) : Text.of(m.group(2));
this.addComponent(new PlainTextComponent(entry));
}
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandServerWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandServerWidget.java
index 2b02c514..1ed15f5e 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandServerWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandServerWidget.java
@@ -16,14 +16,16 @@ public class IslandServerWidget extends Widget {
public IslandServerWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+ @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, "Crystals:", Formatting.DARK_PURPLE, 43);
this.addSimpleIcoText(Ico.CHEST, "Stash:", Formatting.GREEN, 44);
this.addSimpleIcoText(Ico.COMMAND, "Minions:", Formatting.BLUE, 45);
- 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
index 8d49efaa..888c3697 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java
@@ -37,7 +37,10 @@ public class JacobsContestWidget extends Widget {
public JacobsContestWidget() {
super(TITLE, Formatting.YELLOW.getColorValue());
+ }
+ @Override
+ public void updateContent() {
this.addSimpleIcoText(Ico.CLOCK, "Starts in:", Formatting.GOLD, 76);
TableComponent tc = new TableComponent(1, 3, Formatting.YELLOW .getColorValue());
@@ -54,7 +57,6 @@ public class JacobsContestWidget extends Widget {
}
this.addComponent(tc);
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/MinionWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/MinionWidget.java
index fe52fcdf..039871b2 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/MinionWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/MinionWidget.java
@@ -93,7 +93,10 @@ public class MinionWidget extends Widget {
public MinionWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+ @Override
+ public void updateContent() {
for (int i = 48; i < 59; i++) {
Matcher m = PlayerListMgr.regexAt(i, MINION_PATTERN);
if (m != null) {
@@ -128,7 +131,6 @@ public class MinionWidget extends Widget {
if (more != null) {
this.addComponent(new PlainTextComponent(Text.of(more)));
}
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ParkServerWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ParkServerWidget.java
index 4148ed77..2c422bd1 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ParkServerWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ParkServerWidget.java
@@ -16,13 +16,15 @@ public class ParkServerWidget extends Widget {
public ParkServerWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+ @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);
this.addSimpleIcoText(Ico.WATER, "Rain:", Formatting.BLUE, 44);
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java
index 439fcb56..04327365 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java
@@ -26,6 +26,10 @@ public class PlayerListWidget extends Widget {
public PlayerListWidget() {
super(TITLE, Formatting.GREEN.getColorValue());
+ }
+
+ @Override
+ public void updateContent() {
// hard cap to 4x20 entries.
// 5x20 is too wide (and not possible in theory. in reality however...)
int listlen = Math.min(PlayerListMgr.getSize(), 160);
@@ -33,7 +37,6 @@ public class PlayerListWidget extends Widget {
// list isn't fully loaded, so our hack won't work...
if (listlen < 80) {
this.addComponent(new PlainTextComponent(Text.literal("List loading...").formatted(Formatting.GRAY)));
- this.pack();
return;
}
@@ -63,6 +66,5 @@ public class PlayerListWidget extends Widget {
}
this.addComponent(tc);
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PowderWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PowderWidget.java
index 459e3de2..7e56d4d9 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PowderWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PowderWidget.java
@@ -17,12 +17,13 @@ public class PowderWidget extends Widget {
public PowderWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+ @Override
+ public void updateContent() {
this.addSimpleIcoText(Ico.MITHRIL, "Mithril:", Formatting.AQUA, 46);
this.addSimpleIcoText(Ico.EMERALD, "Gemstone:", Formatting.DARK_PURPLE, 47);
- this.pack();
-
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ProfileWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ProfileWidget.java
index a6d9e82d..8bc94622 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ProfileWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ProfileWidget.java
@@ -14,12 +14,15 @@ public class ProfileWidget extends Widget {
public ProfileWidget() {
super(TITLE, Formatting.YELLOW.getColorValue());
+ }
+
+ @Override
+ public void updateContent() {
this.addSimpleIcoText(Ico.SIGN, "Profile:", Formatting.GREEN, 61);
this.addSimpleIcoText(Ico.BONE, "Pet Sitter:", Formatting.AQUA, 62);
this.addSimpleIcoText(Ico.EMERALD, "Balance:", Formatting.GOLD, 63);
this.addSimpleIcoText(Ico.CLOCK, "Interest in:", Formatting.GOLD, 64);
- this.pack();
}
}
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
index 43b741ba..02137b1a 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/QuestWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/QuestWidget.java
@@ -18,12 +18,15 @@ public class QuestWidget extends Widget {
public QuestWidget() {
super(TITLE, Formatting.AQUA.getColorValue());
+ }
+
+ @Override
+ public void updateContent() {
for (int i = 51; i < 56; i++) {
Text q = PlayerListMgr.textAt(i);
IcoTextComponent itc = new IcoTextComponent(Ico.BOOK, 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
index 3685e0ca..32060bd0 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ReputationWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ReputationWidget.java
@@ -29,7 +29,10 @@ public class ReputationWidget extends Widget {
public ReputationWidget() {
super(TITLE, Formatting.AQUA.getColorValue());
+ }
+ @Override
+ public void updateContent() {
String fracstr = PlayerListMgr.strAt(45);
int spaceidx;
@@ -61,8 +64,6 @@ public class ReputationWidget extends Widget {
this.addComponent(pc);
}
- this.pack();
-
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ServerWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ServerWidget.java
index 2d8d1c63..62c01b63 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ServerWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ServerWidget.java
@@ -18,11 +18,13 @@ public class ServerWidget extends Widget {
public ServerWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+ @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);
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/SkillsWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/SkillsWidget.java
index 88ba8022..cecee76c 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/SkillsWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/SkillsWidget.java
@@ -30,6 +30,10 @@ public class SkillsWidget extends Widget {
public SkillsWidget() {
super(TITLE, Formatting.YELLOW.getColorValue());
+ }
+
+ @Override
+ public void updateContent() {
Matcher m = PlayerListMgr.regexAt(66, SKILL_PATTERN);
Component progress;
if (m == null) {
@@ -69,7 +73,6 @@ public class SkillsWidget extends Widget {
tc.addToCell(1, 0, cdg);
tc.addToCell(1, 1, cch);
this.addComponent(tc);
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/TrapperWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/TrapperWidget.java
index d47849c3..68f8dcf2 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/TrapperWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/TrapperWidget.java
@@ -15,8 +15,11 @@ public class TrapperWidget extends Widget {
public TrapperWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+
+ @Override
+ public void updateContent() {
this.addSimpleIcoText(Ico.LEATHER, "Pelts:", Formatting.AQUA, 46);
- this.pack();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/UpgradeWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/UpgradeWidget.java
index ef7c21d0..4553c7f9 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/UpgradeWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/UpgradeWidget.java
@@ -1,6 +1,7 @@
package me.xmrvizzy.skyblocker.skyblock.tabhud.widget;
import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr;
import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent;
import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent;
@@ -17,17 +18,21 @@ public class UpgradeWidget extends Widget {
private static final MutableText TITLE = Text.literal("Upgrade Info").formatted(Formatting.GOLD,
Formatting.BOLD);
- public UpgradeWidget(String footertext) {
+ public UpgradeWidget() {
super(TITLE, Formatting.GOLD.getColorValue());
+ }
+
+ @Override
+ public void updateContent() {
+ String footertext = PlayerListMgr.getFooter();
+
if (footertext == null) {
this.addComponent(new PlainTextComponent(Text.literal("No data").formatted(Formatting.GRAY)));
- this.pack();
return;
}
if (!footertext.contains("Upgrades")) {
this.addComponent(new PlainTextComponent(Text.of("Currently no upgrades...")));
- this.pack();
return;
}
@@ -41,7 +46,6 @@ public class UpgradeWidget extends Widget {
IcoTextComponent itc = new IcoTextComponent(Ico.SIGN, Text.of(lines[i]));
this.addComponent(itc);
}
- 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
index ec6a35fb..d0e01590 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java
@@ -42,6 +42,10 @@ public class VolcanoWidget extends Widget {
public VolcanoWidget() {
super(TITLE, Formatting.AQUA.getColorValue());
+ }
+
+ @Override
+ public void updateContent() {
String s = PlayerListMgr.strAt(58);
if (s == null) {
this.addComponent(new IcoTextComponent());
@@ -50,8 +54,6 @@ public class VolcanoWidget extends Widget {
this.addComponent(new IcoTextComponent(p.getLeft(), Text.literal(s).formatted(p.getRight())));
}
- this.pack();
-
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java
index 15b2adf2..3e037256 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java
@@ -48,10 +48,14 @@ public abstract class Widget {
this.components.add(c);
}
- public void update() {
+ public final void update() {
this.components.clear();
+ this.updateContent();
+ this.pack();
}
+ public abstract void updateContent();
+
/**
* Shorthand function for simple components.
* If the entry at idx has the format "<textA>: <textB>", an IcoTextComponent is
@@ -68,7 +72,7 @@ public abstract class Widget {
* <b>Must be called before returning from the widget constructor and after all
* components are added!</b>
*/
- public final void pack() {
+ private void pack() {
h = 0;
w = 0;
for (Component c : components) {
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
index 287b25b1..88e3a5cd 100644
--- 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
@@ -14,14 +14,16 @@ public class AdvertisementWidget extends Widget {
public AdvertisementWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
+ }
+ @Override
+ public void updateContent() {
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
index 667bc154..e3b462a9 100644
--- 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
@@ -14,7 +14,10 @@ public class GoodToKnowWidget extends Widget {
public GoodToKnowWidget() {
super(TITLE, Formatting.BLUE.getColorValue());
+ }
+ @Override
+ public void updateContent() {
// 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
@@ -50,6 +53,5 @@ public class GoodToKnowWidget extends Widget {
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
index 5460de49..0b6ff5bf 100644
--- 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
@@ -12,8 +12,10 @@ public class RiftProfileWidget extends Widget {
public RiftProfileWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
-
+ }
+
+ @Override
+ public void updateContent() {
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
index 9ce12e76..ea67a309 100644
--- 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
@@ -22,7 +22,10 @@ public class RiftProgressWidget extends Widget {
public RiftProgressWidget() {
super(TITLE, Formatting.BLUE.getColorValue());
+ }
+ @Override
+ public void updateContent() {
// 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
@@ -88,7 +91,6 @@ public class RiftProgressWidget extends Widget {
this.addComponent(pc);
}
- this.pack();
}
private static int pcntToCol(float pcnt) {
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
index 2ac2a35d..cab38a86 100644
--- 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
@@ -16,11 +16,12 @@ public class RiftServerInfoWidget extends Widget {
public RiftServerInfoWidget() {
super(TITLE, Formatting.LIGHT_PURPLE.getColorValue());
-
+ }
+
+ @Override
+ public void updateContent() {
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
index ef5876f2..8fab3dd4 100644
--- 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
@@ -15,7 +15,10 @@ public class RiftStatsWidget extends Widget {
public RiftStatsWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
-
+ }
+
+ @Override
+ public void updateContent() {
Text riftDamage = Widget.simpleEntryText(64, "RDG", Formatting.DARK_PURPLE);
IcoTextComponent rdg = new IcoTextComponent(Ico.DIASWORD, riftDamage);
@@ -35,7 +38,6 @@ public class RiftStatsWidget extends Widget {
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
index 5dcc08c0..a1345c49 100644
--- 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
@@ -13,8 +13,10 @@ public class ShenWidget extends Widget {
public ShenWidget() {
super(TITLE, Formatting.DARK_AQUA.getColorValue());
-
+ }
+
+ @Override
+ public void updateContent() {
this.addComponent(new PlainTextComponent(Text.literal(PlayerListMgr.strAt(70))));
- this.pack();
}
}