aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorviciscat <51047087+viciscat@users.noreply.github.com>2024-09-08 17:39:41 +0200
committerviciscat <51047087+viciscat@users.noreply.github.com>2024-12-12 18:21:01 +0100
commit2c4ce78591757958960bdb029a082170f62dcc4d (patch)
tree7a08e5a92fc1cce06ad2c6eb6e1c85949574d13e /src/main/java
parent6d02af0937697b08cccbeee3423b192f947cc221 (diff)
downloadSkyblocker-2c4ce78591757958960bdb029a082170f62dcc4d.tar.gz
Skyblocker-2c4ce78591757958960bdb029a082170f62dcc4d.tar.bz2
Skyblocker-2c4ce78591757958960bdb029a082170f62dcc4d.zip
RegisterWidget annotation!
refactor some init stuff to have less duplicate code
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/annotations/RegisterWidget.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java14
4 files changed, 35 insertions, 4 deletions
diff --git a/src/main/java/de/hysky/skyblocker/annotations/RegisterWidget.java b/src/main/java/de/hysky/skyblocker/annotations/RegisterWidget.java
new file mode 100644
index 00000000..219b0c9b
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/annotations/RegisterWidget.java
@@ -0,0 +1,15 @@
+package de.hysky.skyblocker.annotations;
+
+import java.lang.annotation.*;
+
+@Documented
+@Retention(RetentionPolicy.CLASS)
+@Target(ElementType.TYPE)
+public @interface RegisterWidget {
+ /**
+ * The priority of the widget.
+ * The higher the number, the later the widget will be instantiated.
+ * Use this to ensure that your widget is instantiated after widget method if it depends on it.
+ */
+ int priority() default 0;
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java
index 8e0a4c30..ee1b95c1 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java
@@ -1,6 +1,7 @@
package de.hysky.skyblocker.skyblock.end;
import com.mojang.authlib.properties.PropertyMap;
+import de.hysky.skyblocker.annotations.RegisterWidget;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.tabhud.widget.ComponentBasedWidget;
import de.hysky.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent;
@@ -18,10 +19,11 @@ import java.text.NumberFormat;
import java.util.Locale;
import java.util.Optional;
+@RegisterWidget
public class EndHudWidget extends ComponentBasedWidget {
private static final MutableText TITLE = Text.literal("The End").formatted(Formatting.LIGHT_PURPLE, Formatting.BOLD);
- public static final EndHudWidget INSTANCE = new EndHudWidget(TITLE, Formatting.DARK_PURPLE.getColorValue());
+ public static final EndHudWidget INSTANCE = new EndHudWidget();
private static final NumberFormat DECIMAL_FORMAT = NumberFormat.getInstance(Locale.US);
private static final ItemStack ENDERMAN_HEAD = new ItemStack(Items.PLAYER_HEAD);
private static final ItemStack POPPY = new ItemStack(Items.POPPY);
@@ -34,8 +36,8 @@ public class EndHudWidget extends ComponentBasedWidget {
POPPY.set(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE, true);
}
- public EndHudWidget(MutableText title, Integer colorValue) {
- super(title, colorValue, "hud_end");
+ public EndHudWidget() {
+ super(TITLE, Formatting.DARK_PURPLE.getColorValue(), "hud_end");
this.update();
}
@Override
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java
index 383e2061..f686b0ae 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java
@@ -1,5 +1,6 @@
package de.hysky.skyblocker.skyblock.garden;
+import de.hysky.skyblocker.annotations.RegisterWidget;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.item.tooltip.info.TooltipInfoType;
import de.hysky.skyblocker.skyblock.itemlist.ItemRepository;
@@ -20,6 +21,7 @@ import net.minecraft.util.math.MathHelper;
import java.util.Map;
+@RegisterWidget
public class FarmingHudWidget extends ComponentBasedWidget {
private static final MutableText TITLE = Text.literal("Farming").formatted(Formatting.YELLOW, Formatting.BOLD);
public static final Map<String, String> FARMING_TOOLS = Map.ofEntries(
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java
index 06207554..bffa5418 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java
@@ -151,10 +151,13 @@ public class ScreenMaster {
}
- @Init
+ // we probably want this to run pretty early?
+ @Init(priority = -1)
public static void init() {
SkyblockEvents.LOCATION_CHANGE.register(location -> ScreenBuilder.positionsNeedsUpdating = true);
+ instantiateWidgets();
+
ClientLifecycleEvents.CLIENT_STARTED.register(client -> {
try {
ClassPath.from(TabHudWidget.class.getClassLoader()).getTopLevelClasses("de.hysky.skyblocker.skyblock.tabhud.widget").iterator().forEachRemaining(classInfo -> {
@@ -187,6 +190,15 @@ public class ScreenMaster {
ClientLifecycleEvents.CLIENT_STOPPING.register(client -> saveConfig());
}
+
+ private static void instantiateWidgets() {}
+
+ @SuppressWarnings("unused")
+ public static void addWidgetInstance(HudWidget widget) {
+ HudWidget put = widgetInstances.put(widget.getInternalID(), widget);
+ if (put != null) LOGGER.warn("[Skyblocker] Duplicate hud widget found: {}", widget);
+ }
+
/**
* @implNote !! The 3 first ones shouldn't be moved, ordinal is used in some places
*/