diff options
15 files changed, 237 insertions, 106 deletions
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 index d4ddef8e..f570f6db 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java @@ -6,6 +6,7 @@ import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.HashMap; +import java.util.NoSuchElementException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,7 +22,7 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline.PipelineSta 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.DungeonPlayerWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EmptyWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ErrorWidget; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EventWidget; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; import net.minecraft.client.MinecraftClient; @@ -30,9 +31,6 @@ import net.minecraft.util.Identifier; public class ScreenBuilder { - // TODO: Let EmptyWidget contain an error message - - private static final Logger LOGGER = LoggerFactory.getLogger("skyblocker"); // layout pipeline private ArrayList<PipelineStage> layoutPipeline = new ArrayList<>(); @@ -46,34 +44,34 @@ public class ScreenBuilder { /** * Create a ScreenBuilder from a json. */ - public ScreenBuilder(Identifier ident) throws IOException { + public ScreenBuilder(Identifier ident) { - this.builderName = ident.getPath(); + try (BufferedReader reader = MinecraftClient.getInstance().getResourceManager().openAsReader(ident);) { + this.builderName = ident.getPath(); - BufferedReader reader = MinecraftClient.getInstance().getResourceManager().openAsReader(ident); - JsonObject json = JsonParser.parseReader(reader).getAsJsonObject(); - reader.close(); + JsonObject json = JsonParser.parseReader(reader).getAsJsonObject(); - JsonArray widgets = json.getAsJsonArray("widgets"); - JsonArray layout = json.getAsJsonArray("layout"); + 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(); + 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); - } + Widget wid = instanceFrom(name, widget); + objectMap.put(alias, wid); + instances.add(wid); + } - for (JsonElement l : layout) { - PipelineStage ps = createStage(l.getAsJsonObject()); - if (ps != null) { + for (JsonElement l : layout) { + PipelineStage ps = createStage(l.getAsJsonObject()); layoutPipeline.add(ps); } + } catch (Exception ex) { + // rethrow as unchecked exception so that I don't have to catch anything in the ScreenMaster + throw new IllegalStateException("Failed to load file " + ident + "Reason: " + ex.getMessage()); } - } /** @@ -83,15 +81,25 @@ public class ScreenBuilder { public Widget instanceFrom(String name, JsonObject widget) { // do widgets that require args the normal way + JsonElement arg; switch (name) { case "EventWidget": return new EventWidget(widget.get("inGarden").getAsBoolean()); + case "DungeonPlayerWidget": return new DungeonPlayerWidget(widget.get("player").getAsInt()); + + case "ErrorWidget": + arg = widget.get("text"); + if (arg == null) { + return new ErrorWidget(); + } else { + return new ErrorWidget(arg.getAsString()); + } + case "Widget": // clown case sanity check. don't instantiate the superclass >:| - LOGGER.error("Couldn't find class \"{}\"!", name); - return new EmptyWidget(); + throw new NoSuchElementException(builderName + "[ERROR]: No such Widget type \"Widget\"!"); } // reflect something together for the "normal" ones. @@ -100,11 +108,11 @@ public class ScreenBuilder { // list all packages that might contain widget classes // using Package isn't reliable, as some classes might not be loaded yet, - // causing the packages not to show. + // causing the packages not to show. String packbase = "me.xmrvizzy.skyblocker.skyblock.tabhud.widget"; String[] packnames = { - packbase, - packbase + ".rift" + packbase, + packbase + ".rift" }; // construct the full class name and try to load. @@ -119,8 +127,7 @@ public class ScreenBuilder { // load failed. if (clazz == null) { - LOGGER.error("Couldn't find class \"{}\"!", name); - return new EmptyWidget(); + throw new NoSuchElementException(builderName + "/[ERROR]: No such Widget type \"" + name + "\"!"); } // return instance of that class. @@ -129,15 +136,14 @@ public class ScreenBuilder { return (Widget) ctor.newInstance(); } catch (NoSuchMethodException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | SecurityException ex) { - LOGGER.error("Failed to create instance of class {}!", clazz.getSimpleName()); - return new EmptyWidget(); + throw new IllegalStateException(builderName + "/" + name + ": Internal error..."); } } /** * Create a PipelineStage from a json object. */ - public PipelineStage createStage(JsonObject descr) { + public PipelineStage createStage(JsonObject descr) throws NoSuchElementException { String op = descr.get("op").getAsString(); @@ -151,8 +157,7 @@ public class ScreenBuilder { case "collideAgainst": return new CollideStage(this, descr); default: - LOGGER.error("No such op \"{}\" as requested by {}", op, this.builderName); - return null; + throw new NoSuchElementException("No such op " + op + " as requested by " + this.builderName); } } @@ -160,7 +165,9 @@ public class ScreenBuilder { * Lookup Widget instance from alias name */ public Widget getInstance(String name) { - // TODO: filter null here or in stage classes + if (!this.objectMap.containsKey(name)) { + throw new NoSuchElementException("No widget with alias " + name + " in screen " + builderName); + } return this.objectMap.get(name); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java index 114aa0cb..64ec4289 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder; -import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -28,7 +28,7 @@ public class ScreenMaster { private static HashMap<String, ScreenBuilder> screenBMap = new HashMap<>(); /** - * Load a screen mapping from + * Load a screen mapping from an identifier */ public static void load(Identifier ident) { @@ -38,20 +38,14 @@ public class ScreenMaster { String location = parts[parts.length - 1]; location = location.replace(".json", ""); - try { - - if (screenType.equals("standard")) { - standardMap.put(location, new ScreenBuilder(ident)); - } else if (screenType.equals("screen_a")) { - screenAMap.put(location, new ScreenBuilder(ident)); - } else if (screenType.equals("screen_b")) { - screenBMap.put(location, new ScreenBuilder(ident)); - } - - } catch (IOException ioex) { - LOGGER.error("Can't load screen definition from {}", path); + ScreenBuilder sb = new ScreenBuilder(ident); + if (screenType.equals("standard")) { + standardMap.put(location, sb); + } else if (screenType.equals("screen_a")) { + screenAMap.put(location, sb); + } else if (screenType.equals("screen_b")) { + screenBMap.put(location, sb); } - } /** @@ -106,10 +100,21 @@ public class ScreenMaster { screenAMap.clear(); screenBMap.clear(); + int ex = 0; + for (Map.Entry<Identifier, Resource> entry : manager .findResources("tabhud", path -> path.getPath().endsWith(".json")) .entrySet()) { - load(entry.getKey()); + try { + + load(entry.getKey()); + } catch (Exception e) { + LOGGER.error(e.getMessage()); + ex++; + } + } + if (ex > 0) { + throw new IllegalStateException("This screen definition isn't valid, see above"); } } }); 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 index 4d5a90be..93a11190 100644 --- 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 @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline; -import java.security.InvalidParameterException; import java.util.ArrayList; +import java.util.NoSuchElementException; import com.google.gson.JsonObject; @@ -10,13 +10,38 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; public class AlignStage extends PipelineStage { - private String reference; + private enum AlignReference { + HORICENT("horizontalCenter"), + VERTCENT("verticalCenter"), + LEFTCENT("leftOfCenter"), + RIGHTCENT("rightOfCenter"), + TOPCENT("topOfCenter"), + BOTCENT("botOfCenter"), + TOP("top"), + BOT("bot"), + LEFT("left"), + RIGHT("right"); - public AlignStage(ScreenBuilder builder, JsonObject descr) { - if (!descr.has("reference")) { - throw new InvalidParameterException("no reference in " + descr); + private String str; + + private AlignReference(String d) { + this.str = d; + } + + public static AlignReference parse(String s) throws NoSuchElementException { + for (AlignReference d : AlignReference.values()) { + if (d.str.equals(s)) { + return d; + } + } + throw new NoSuchElementException("\"" + s + "\" is not a valid reference for an align op!"); } - this.reference = descr.get("reference").getAsString(); + } + + private AlignReference reference; + + public AlignStage(ScreenBuilder builder, JsonObject descr) { + this.reference = AlignReference.parse(descr.get("reference").getAsString()); this.primary = new ArrayList<Widget>(descr.getAsJsonArray("apply_to") .asList() .stream() @@ -28,38 +53,38 @@ public class AlignStage extends PipelineStage { int wHalf, hHalf; for (Widget wid : primary) { switch (this.reference) { - case "horizontalCenter": + case HORICENT: wid.setX((screenW - wid.getWidth()) / 2); break; - case "verticalCenter": + case VERTCENT: wid.setY((screenH - wid.getHeight()) / 2); break; - case "leftOfCenter": + case LEFTCENT: wHalf = screenW / 2; wid.setX(wHalf - 3 - wid.getWidth()); break; - case "rightOfCenter": + case RIGHTCENT: wHalf = screenW / 2; wid.setX(wHalf + 3); break; - case "topOfCenter": + case TOPCENT: hHalf = screenH / 2; wid.setY(hHalf - 3 - wid.getHeight()); break; - case "botOfCenter": + case BOTCENT: hHalf = screenH / 2; wid.setY(hHalf + 3); break; - case "top": + case TOP: wid.setY(5); break; - case "bot": + case BOT: wid.setY(screenH - wid.getHeight() - 5); break; - case "left": + case LEFT: wid.setX(5); break; - case "right": + case RIGHT: wid.setX(screenW - wid.getWidth() - 5); 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 index 8275e842..837d1da4 100644 --- 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 @@ -1,6 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline; import java.util.ArrayList; +import java.util.NoSuchElementException; import com.google.gson.JsonObject; @@ -9,10 +10,30 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; public class CollideStage extends PipelineStage { - private String direction; + private enum CollideDirection { + LEFT("left"), + RIGHT("right"); + + private String str; + + private CollideDirection(String d) { + this.str = d; + } + + public static CollideDirection parse(String s) throws NoSuchElementException { + for (CollideDirection d : CollideDirection.values()) { + if (d.str.equals(s)) { + return d; + } + } + throw new NoSuchElementException("\"" + s + "\" is not a valid direction for a collide op!"); + } + } + + private CollideDirection direction; public CollideStage(ScreenBuilder builder, JsonObject descr) { - this.direction = descr.get("direction").getAsString(); + this.direction = CollideDirection.parse(descr.get("direction").getAsString()); this.primary = new ArrayList<Widget>(descr.getAsJsonArray("widgets") .asList() .stream() @@ -26,10 +47,13 @@ public class CollideStage extends PipelineStage { } 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)); + switch (this.direction) { + case LEFT: + primary.forEach(w -> collideAgainstL(screenW, w)); + break; + case RIGHT: + primary.forEach(w -> collideAgainstR(screenW, w)); + break; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PipelineStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PipelineStage.java index 47b9e96e..e560058c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PipelineStage.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PipelineStage.java @@ -6,8 +6,6 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; public abstract class PipelineStage { - // TODO for all subclasses: error checking, use enums instead of strings - protected ArrayList<Widget> primary = null; protected ArrayList<Widget> secondary = null; 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 index c6b72999..94e0ac07 100644 --- 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 @@ -1,6 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline; import java.util.ArrayList; +import java.util.NoSuchElementException; import com.google.gson.JsonObject; @@ -9,10 +10,31 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; public class PlaceStage extends PipelineStage { - private String where; + private enum PlaceLocation { + CENTER("center"), + TOPCENT("centerTop"); + + private String str; + + private PlaceLocation(String d) { + this.str = d; + } + + public static PlaceLocation parse(String s) throws NoSuchElementException { + for (PlaceLocation d : PlaceLocation.values()) { + if (d.str.equals(s)) { + return d; + } + } + throw new NoSuchElementException("\"" + s + "\" is not a valid location for a place op!"); + } + } + + + private PlaceLocation where; public PlaceStage(ScreenBuilder builder, JsonObject descr) { - this.where = descr.get("where").getAsString(); + this.where = PlaceLocation.parse(descr.get("where").getAsString()); this.primary = new ArrayList<Widget>(descr.getAsJsonArray("apply_to") .asList() .stream() @@ -24,11 +46,11 @@ public class PlaceStage extends PipelineStage { public void run(int screenW, int screenH) { Widget wid = primary.get(0); switch (where) { - case "center": + case CENTER: wid.setY((screenH - wid.getHeight()) / 2); wid.setX((screenW - wid.getWidth()) / 2); break; - case "centerTop": + case TOPCENT: wid.setX((screenW - wid.getWidth()) / 2); wid.setY(5); break; 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 index d144c67b..9fe83601 100644 --- 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 @@ -1,6 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline; import java.util.ArrayList; +import java.util.NoSuchElementException; import com.google.gson.JsonObject; @@ -9,12 +10,55 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; public class StackStage extends PipelineStage { - private String direction; - private String align; + private enum StackDirection { + HORIZONTAL("horizontal"), + VERTICAL("vertical"); + + private String str; + + private StackDirection(String d) { + this.str = d; + } + + public static StackDirection parse(String s) throws NoSuchElementException { + for (StackDirection d : StackDirection.values()) { + if (d.str.equals(s)) { + return d; + } + } + throw new NoSuchElementException("\"" + s + "\" is not a valid direction for a stack op!"); + } + } + + private enum StackAlign { + TOP("top"), + BOT("bot"), + LEFT("left"), + RIGHT("right"), + CENTER("center"); + + private String str; + + private StackAlign(String d) { + this.str = d; + } + + public static StackAlign parse(String s) throws NoSuchElementException { + for (StackAlign d : StackAlign.values()) { + if (d.str.equals(s)) { + return d; + } + } + throw new NoSuchElementException("\"" + s + "\" is not a valid alignment for a stack op!"); + } + } + + private StackDirection direction; + private StackAlign align; public StackStage(ScreenBuilder builder, JsonObject descr) { - this.direction = descr.get("direction").getAsString(); - this.align = descr.get("align").getAsString(); + this.direction = StackDirection.parse(descr.get("direction").getAsString()); + this.align = StackAlign.parse(descr.get("align").getAsString()); this.primary = new ArrayList<Widget>(descr.getAsJsonArray("apply_to") .asList() .stream() @@ -24,16 +68,16 @@ public class StackStage extends PipelineStage { public void run(int screenW, int screenH) { switch (this.direction) { - case "horizontal": + case HORIZONTAL: stackWidgetsHoriz(screenW); break; - case "vertical": + case VERTICAL: stackWidgetsVert(screenH); break; } } - public void stackWidgetsVert( int screenH) { + public void stackWidgetsVert(int screenH) { int compHeight = -5; for (Widget wid : primary) { compHeight += wid.getHeight() + 5; @@ -41,9 +85,9 @@ public class StackStage extends PipelineStage { int y = switch (this.align) { - case "top" -> y = 5; - case "bot" -> y = (screenH-compHeight) - 5; - default -> y = (screenH-compHeight)/2; + case TOP -> y = 5; + case BOT -> y = (screenH - compHeight) - 5; + default -> y = (screenH - compHeight) / 2; }; for (Widget wid : primary) { @@ -53,7 +97,7 @@ public class StackStage extends PipelineStage { } public void stackWidgetsHoriz(int screenW) { - // TODO not centered + // TODO not centered (?) int compWidth = -5; for (Widget wid : primary) { compWidth += wid.getWidth() + 5; @@ -61,9 +105,9 @@ public class StackStage extends PipelineStage { int x = switch (this.align) { - case "left" -> x = 5; - case "right" -> x = (screenW-compWidth) - 5; - default -> x = (screenW-compWidth)/2; + case LEFT-> x = 5; + case RIGHT -> x = (screenW - compWidth) - 5; + default -> x = (screenW - compWidth) / 2; }; for (Widget wid : primary) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EmptyWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ErrorWidget.java index 0e85003f..7f53fde7 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EmptyWidget.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ErrorWidget.java @@ -8,18 +8,24 @@ import net.minecraft.util.Formatting; // empty widget for when nothing can be shown -public class EmptyWidget extends Widget { - private static final MutableText TITLE = Text.literal("Empty").formatted(Formatting.RED, +public class ErrorWidget extends Widget { + private static final MutableText TITLE = Text.literal("Error").formatted(Formatting.RED, Formatting.BOLD); - public EmptyWidget() { + Text error = Text.of("No info available!"); + + public ErrorWidget() { + super(TITLE, Formatting.RED.getColorValue()); + } + + public ErrorWidget(String error) { super(TITLE, Formatting.RED.getColorValue()); + this.error = Text.of(error); } @Override public void updateContent() { - Text info = Text.of("No info for this area!"); - PlainTextComponent inf = new PlainTextComponent(info); + PlainTextComponent inf = new PlainTextComponent(this.error); this.addComponent(inf); } diff --git a/src/main/resources/assets/skyblocker/tabhud/readme.md b/src/main/resources/assets/skyblocker/tabhud/readme.md index 1f294cb4..f8394c3e 100644 --- a/src/main/resources/assets/skyblocker/tabhud/readme.md +++ b/src/main/resources/assets/skyblocker/tabhud/readme.md @@ -57,7 +57,7 @@ Grouped by themes (roughly) - EffectWidget: Currently active effects. - ElectionWidget: The current mayor election. - EssenceWidget: Your dungeon essences. -- EmptyWidget: Generic "No data available" display. +- ErrorWidget: Displays an error message, "No data available" by default. Optional arg `text`: The error to be displayed. - EventWidget: Current events. Arg `inGarden: true|false`: Is this widget displayed in the garden area? - FireSaleWidget: Ongoing fire sales. - MinionWidget: The minions on your island. diff --git a/src/main/resources/assets/skyblocker/tabhud/screen_a/unknown.json b/src/main/resources/assets/skyblocker/tabhud/screen_a/unknown.json index 0252940a..b682cc3d 100644 --- a/src/main/resources/assets/skyblocker/tabhud/screen_a/unknown.json +++ b/src/main/resources/assets/skyblocker/tabhud/screen_a/unknown.json @@ -1,7 +1,7 @@ { "widgets": [ { - "name": "EmptyWidget", + "name": "ErrorWidget", "alias": "ew" } ], diff --git a/src/main/resources/assets/skyblocker/tabhud/screen_b/unknown.json b/src/main/resources/assets/skyblocker/tabhud/screen_b/unknown.json index 0252940a..b682cc3d 100644 --- a/src/main/resources/assets/skyblocker/tabhud/screen_b/unknown.json +++ b/src/main/resources/assets/skyblocker/tabhud/screen_b/unknown.json @@ -1,7 +1,7 @@ { "widgets": [ { - "name": "EmptyWidget", + "name": "ErrorWidget", "alias": "ew" } ], diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/unknown.json b/src/main/resources/assets/skyblocker/tabhud/standard/unknown.json index 0252940a..b682cc3d 100644 --- a/src/main/resources/assets/skyblocker/tabhud/standard/unknown.json +++ b/src/main/resources/assets/skyblocker/tabhud/standard/unknown.json @@ -1,7 +1,7 @@ { "widgets": [ { - "name": "EmptyWidget", + "name": "ErrorWidget", "alias": "ew" } ], diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/unknown.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/unknown.json index 1b204adf..280a46a8 100644 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/unknown.json +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/unknown.json @@ -1,7 +1,7 @@ { "widgets": [ { - "name": "EmptyWidget", + "name": "ErrorWidget", "alias": "ew" } ], diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/unknown.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/unknown.json index 1b204adf..280a46a8 100644 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/unknown.json +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/unknown.json @@ -1,7 +1,7 @@ { "widgets": [ { - "name": "EmptyWidget", + "name": "ErrorWidget", "alias": "ew" } ], diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/unknown.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/unknown.json index 1b204adf..280a46a8 100644 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/unknown.json +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/unknown.json @@ -1,7 +1,7 @@ { "widgets": [ { - "name": "EmptyWidget", + "name": "ErrorWidget", "alias": "ew" } ], |