From f9740d423146fafa83a85704580368cdc1131377 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 16 Jul 2023 14:44:32 +0200 Subject: POC for JSON-based tabhud config. --- .../java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 1 + .../skyblocker/mixin/PlayerListHudMixin.java | 11 ++- .../skyblock/tabhud/screens/PipelineStage.java | 14 ++++ .../skyblock/tabhud/screens/PlaceStage.java | 29 +++++++ .../skyblocker/skyblock/tabhud/screens/Screen.java | 4 +- .../skyblock/tabhud/screens/ScreenBuilder.java | 94 ++++++++++++++++++++++ .../skyblock/tabhud/screens/ScreenMaster.java | 76 +++++++++++++++++ .../skyblock/tabhud/widget/EmptyWidget.java | 4 + .../skyblocker/skyblock/tabhud/widget/Widget.java | 29 ++++--- 9 files changed, 248 insertions(+), 14 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PipelineStage.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlaceStage.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenBuilder.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenMaster.java (limited to 'src/main/java') diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index cc712405..461817ce 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -17,6 +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.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 ef65190f..b3d78fa8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -9,6 +9,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; 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.utils.Utils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -45,9 +47,14 @@ public class PlayerListHudMixin { int w = scaledW; int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); + float scale = SkyblockerConfig.get().general.tabHud.tabHudScale / 100f; + w = (int) (w / scale); + h = (int) (h / scale); + try { - Screen screen = Screen.getCorrect(w, h, footer); - screen.render(context); + ScreenMaster.render(context, w,h,footer); + // Screen screen = Screen.getCorrect(w, h, footer); + // screen.render(context); info.cancel(); } catch (Exception e) { TabHud.LOGGER.error("Drawing default hud. Reason: Screen exception {}", e); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PipelineStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PipelineStage.java new file mode 100644 index 00000000..d33078d8 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PipelineStage.java @@ -0,0 +1,14 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.ArrayList; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; + +public abstract class PipelineStage { + + protected ArrayList primary = null; + protected ArrayList secondary = null; + + public abstract void run(int screenW, int screenH); + +} 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 new file mode 100644 index 00000000..aba952a0 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlaceStage.java @@ -0,0 +1,29 @@ +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(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/Screen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java index 6d06c637..2673e1df 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java @@ -26,13 +26,12 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList.PlayerListScree import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerLocator; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; public class Screen { private ArrayList widgets = new ArrayList<>(); - private int w, h; + public int w, h; public Screen(int w, int h) { float scale = SkyblockerConfig.get().general.tabHud.tabHudScale / 100f; @@ -41,6 +40,7 @@ public class Screen { } public static Screen getCorrect(int w, int h, Text footer) { + if (TabHud.genericTgl.isPressed()) { return Screen.correctGenericScrn(w, h, footer); } else if (TabHud.playerTgl.isPressed()) { 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 new file mode 100644 index 00000000..c9c4ad18 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenBuilder.java @@ -0,0 +1,94 @@ +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 layoutPipeline = new ArrayList<>(); + + private ArrayList instances = new ArrayList<>(); + private HashMap 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/ScreenMaster.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenMaster.java new file mode 100644 index 00000000..02b595d1 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenMaster.java @@ -0,0 +1,76 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.io.BufferedReader; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map.Entry; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +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 { + + private static final Identifier ASSIGNMENT_JSON = new Identifier(SkyblockerMod.NAMESPACE, "tabhud/assignment.json"); + private static final Logger LOGGER = LoggerFactory.getLogger("skyblocker"); + + private static HashMap screenAMap = new HashMap<>(); + // private static HashMap screenBMap = new HashMap<>(); + // private static HashMap screenCMap = new HashMap<>(); + + static { + init(); + } + + 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 entry : screenA.entrySet()) { + screenAMap.put(entry.getKey(), new ScreenBuilder(entry.getValue().getAsString())); + } + + } catch (IOException ioex) { + LOGGER.info("[Skyblocker] Couldn't load tabhud config!"); + ioex.printStackTrace(); + } + } + + public static void render(DrawContext context, int w, int h, Text footer) { + screenAMap.get("default").run(context, w, h, footer); + } +} + +/* + * + * stackWidgetsH +stackWidgetsW +--> stack (direction?) horiz/vert (align?) center/top/bottom/left/right + +centerH +centerW +center +--> center (center/horiz/vert) +----> place (one) (where?) center/top/bot/left/right/[corners] + +offCenterL +offCenterR +--> offCenter left/right/top/bot +----> offsetPlace (where?) center/left/right/top/bot (offset to where?) left/right/top/bot + +----> align (any) (reference?) left, leftOfCenter, horizontalCenter, rightOfCenter, right, top, topOfCenter, verticalCenter, botOfCenter, bot + +collideAgainstL +collideAgainstR +--> collideAgainst (from where?) left/right/top/bot + */ \ No newline at end of file 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 52d6cfbd..61da439a 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 @@ -14,7 +14,11 @@ public class EmptyWidget extends Widget { public EmptyWidget() { super(TITLE, Formatting.RED.getColorValue()); + } + @Override + public void update() { + super.update(); Text info = Text.of("No info for this area!"); PlainTextComponent inf = new PlainTextComponent(info); this.addComponent(inf); 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 33f77933..15b2adf2 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 @@ -45,12 +45,17 @@ public abstract class Widget { } public final void addComponent(Component c) { - components.add(c); + this.components.add(c); + } + + public void update() { + this.components.clear(); } /** * Shorthand function for simple components. - * If the entry at idx has the format ": ", an IcoTextComponent is added as such: + * If the entry at idx has the format ": ", an IcoTextComponent is + * added as such: * [ico] [string] [textB.formatted(fmt)] */ public final void addSimpleIcoText(ItemStack ico, String string, Formatting fmt, int idx) { @@ -60,9 +65,12 @@ public abstract class Widget { /** * Calculate the size of this widget. - * Must be called before returning from the widget constructor and after all components are added! + * Must be called before returning from the widget constructor and after all + * components are added! */ public final void pack() { + h = 0; + w = 0; for (Component c : components) { h += c.getHeight() + Component.PAD_L; w = Math.max(w, c.getWidth() + Component.PAD_S); @@ -111,7 +119,7 @@ public abstract class Widget { * Draw this widget, possibly with a background */ public final void render(DrawContext context, boolean hasBG) { - MatrixStack ms = context.getMatrices(); + MatrixStack ms = context.getMatrices(); // not sure if this is the way to go, but it fixes Z-layer issues // like blocks being rendered behind the BG and the hotbar clipping into things @@ -124,9 +132,9 @@ public abstract class Widget { // move above other UI elements ms.translate(0, 0, 200); if (hasBG) { - context.fill(x + 1, y, x + w - 1, y + h, COL_BG_BOX); - context.fill(x, y + 1, x + 1, y + h - 1, COL_BG_BOX); - context.fill(x + w - 1, y + 1, x + w, y + h - 1, COL_BG_BOX); + context.fill(x + 1, y, x + w - 1, y + h, COL_BG_BOX); + context.fill(x, y + 1, x + 1, y + h - 1, COL_BG_BOX); + context.fill(x + w - 1, y + 1, x + w, y + h - 1, COL_BG_BOX); } // move above background (if exists) ms.translate(0, 0, 100); @@ -163,9 +171,10 @@ public abstract class Widget { } /** - * If the entry at idx has the format "[textA]: [textB]", the following is returned: + * If the entry at idx has the format "[textA]: [textB]", the following is + * returned: * [entryName] [textB.formatted(contentFmt)] - */ + */ public static Text simpleEntryText(int idx, String entryName, Formatting contentFmt) { String src = PlayerListMgr.strAt(idx); @@ -185,7 +194,7 @@ public abstract class Widget { /** * @return [entryName] [entryContent.formatted(contentFmt)] - */ + */ public static Text simpleEntryText(String entryContent, String entryName, Formatting contentFmt) { return Text.literal(entryName).append(Text.literal(entryContent).formatted(contentFmt)); } -- cgit From 384d9954aedefcee6f132d2bdadca11fca682bd7 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 23 Jul 2023 12:29:32 +0200 Subject: Massive refactor, see details Instead of creating a new widget instance every frame, instantiate once and update content. This means that every widget had to be updated to work like that. This also necessitated some ugly hackery for the dwarven HUD. Many other minor things like moving and renaming classes --- .../java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 2 +- .../skyblocker/mixin/PlayerListHudMixin.java | 10 +- .../skyblocker/skyblock/dwarven/DwarvenHud.java | 34 ++--- .../tabhud/screenbuilder/ScreenBuilder.java | 166 +++++++++++++++++++++ .../tabhud/screenbuilder/ScreenMaster.java | 82 ++++++++++ .../tabhud/screenbuilder/pipeline/AlignStage.java | 53 +++++++ .../screenbuilder/pipeline/CollideStage.java | 84 +++++++++++ .../screenbuilder/pipeline/PipelineStage.java | 14 ++ .../tabhud/screenbuilder/pipeline/PlaceStage.java | 31 ++++ .../tabhud/screenbuilder/pipeline/StackStage.java | 74 +++++++++ .../skyblock/tabhud/screens/PipelineStage.java | 14 -- .../skyblock/tabhud/screens/PlaceStage.java | 29 ---- .../skyblock/tabhud/screens/ScreenBuilder.java | 94 ------------ .../skyblock/tabhud/screens/ScreenMaster.java | 76 ---------- .../screens/genericInfo/GardenInfoScreen.java | 38 ++--- .../screens/genericInfo/GenericInfoScreen.java | 38 ++--- .../screens/genericInfo/GenericRiftInfoScreen.java | 28 ++-- .../skyblock/tabhud/util/PlayerListMgr.java | 9 ++ .../skyblock/tabhud/widget/CommsWidget.java | 30 +--- .../skyblock/tabhud/widget/ComposterWidget.java | 4 +- .../skyblock/tabhud/widget/CookieWidget.java | 10 +- .../skyblock/tabhud/widget/DungeonBuffWidget.java | 10 +- .../skyblock/tabhud/widget/DungeonDeathWidget.java | 4 +- .../tabhud/widget/DungeonDownedWidget.java | 4 +- .../tabhud/widget/DungeonPlayerWidget.java | 8 +- .../tabhud/widget/DungeonPuzzleWidget.java | 4 +- .../tabhud/widget/DungeonSecretWidget.java | 4 +- .../tabhud/widget/DungeonServerWidget.java | 5 +- .../skyblock/tabhud/widget/EffectWidget.java | 13 +- .../skyblock/tabhud/widget/ElectionWidget.java | 5 +- .../skyblock/tabhud/widget/EmptyWidget.java | 4 +- .../skyblock/tabhud/widget/EssenceWidget.java | 5 +- .../skyblock/tabhud/widget/EventWidget.java | 7 +- .../skyblock/tabhud/widget/FireSaleWidget.java | 6 +- .../skyblock/tabhud/widget/ForgeWidget.java | 6 +- .../skyblock/tabhud/widget/GardenServerWidget.java | 5 +- .../skyblock/tabhud/widget/GardenSkillsWidget.java | 4 +- .../skyblock/tabhud/widget/GuestServerWidget.java | 4 +- .../skyblock/tabhud/widget/HudCommsWidget.java | 75 ++++++++++ .../skyblock/tabhud/widget/IslandGuestsWidget.java | 5 +- .../skyblock/tabhud/widget/IslandOwnersWidget.java | 7 +- .../skyblock/tabhud/widget/IslandSelfWidget.java | 12 +- .../skyblock/tabhud/widget/IslandServerWidget.java | 4 +- .../tabhud/widget/JacobsContestWidget.java | 4 +- .../skyblock/tabhud/widget/MinionWidget.java | 4 +- .../skyblock/tabhud/widget/ParkServerWidget.java | 4 +- .../skyblock/tabhud/widget/PlayerListWidget.java | 6 +- .../skyblock/tabhud/widget/PowderWidget.java | 5 +- .../skyblock/tabhud/widget/ProfileWidget.java | 5 +- .../skyblock/tabhud/widget/QuestWidget.java | 5 +- .../skyblock/tabhud/widget/ReputationWidget.java | 5 +- .../skyblock/tabhud/widget/ServerWidget.java | 4 +- .../skyblock/tabhud/widget/SkillsWidget.java | 5 +- .../skyblock/tabhud/widget/TrapperWidget.java | 5 +- .../skyblock/tabhud/widget/UpgradeWidget.java | 12 +- .../skyblock/tabhud/widget/VolcanoWidget.java | 6 +- .../skyblocker/skyblock/tabhud/widget/Widget.java | 8 +- .../tabhud/widget/rift/AdvertisementWidget.java | 4 +- .../tabhud/widget/rift/GoodToKnowWidget.java | 4 +- .../tabhud/widget/rift/RiftProfileWidget.java | 6 +- .../tabhud/widget/rift/RiftProgressWidget.java | 4 +- .../tabhud/widget/rift/RiftServerInfoWidget.java | 7 +- .../tabhud/widget/rift/RiftStatsWidget.java | 6 +- .../skyblock/tabhud/widget/rift/ShenWidget.java | 6 +- .../assets/skyblocker/tabhud/assignment.json | 6 +- .../skyblocker/tabhud/garden_info_screen.json | 88 ----------- .../skyblocker/tabhud/generic_info_screen.json | 69 --------- .../skyblocker/tabhud/info/garden_info_screen.json | 70 +++++++++ .../tabhud/info/generic_info_screen.json | 70 +++++++++ .../skyblocker/tabhud/info/rift_info_screen.json | 48 ++++++ .../resources/assets/skyblocker/tabhud/readme.md | 100 +++++++++++++ .../assets/skyblocker/tabhud/test_screen.json | 122 +++++++++++++++ 72 files changed, 1258 insertions(+), 551 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/AlignStage.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/CollideStage.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PipelineStage.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PlaceStage.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/StackStage.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PipelineStage.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlaceStage.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenBuilder.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenMaster.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/HudCommsWidget.java delete mode 100644 src/main/resources/assets/skyblocker/tabhud/garden_info_screen.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/generic_info_screen.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/info/garden_info_screen.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/info/generic_info_screen.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/info/rift_info_screen.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/readme.md create mode 100644 src/main/resources/assets/skyblocker/tabhud/test_screen.json (limited to 'src/main/java') 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 commissionList = new ArrayList<>(); - public static final List 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 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 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 layoutPipeline = new ArrayList<>(); + + // all widget instances this builder knows + private ArrayList instances = new ArrayList<>(); + // maps alias -> widget instance + private HashMap 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 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/screenbuilder/ScreenMaster.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java new file mode 100644 index 00000000..97969503 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java @@ -0,0 +1,82 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder; + +import java.io.BufferedReader; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map.Entry; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +import me.xmrvizzy.skyblocker.SkyblockerMod; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.util.Identifier; + +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 standardMap = new HashMap<>(); + // private static HashMap screenAMap = new HashMap<>(); + // private static HashMap screenBMap = 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 standard = json.getAsJsonObject("standard"); + for (Entry entry : standard.entrySet()) { + standardMap.put(entry.getKey(), new ScreenBuilder(entry.getValue().getAsString())); + } + + } catch (IOException ioex) { + LOGGER.info("[Skyblocker] Couldn't load tabhud config!"); + ioex.printStackTrace(); + } + } + + /** + * 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 + +centerH +centerW +center +--> center (center/horiz/vert) +----> place (one) (where?) center/top/bot/left/right/[corners] + +offCenterL +offCenterR +--> offCenter left/right/top/bot +----> offsetPlace (where?) center/left/right/top/bot (offset to where?) left/right/top/bot + +----> align (any) (reference?) left, leftOfCenter, horizontalCenter, rightOfCenter, right, top, topOfCenter, verticalCenter, botOfCenter, bot + +collideAgainstL +collideAgainstR +--> collideAgainst (from where?) left/right/top/bot + */ \ No newline at end of file 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(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(descr.getAsJsonArray("widgets") + .asList() + .stream() + .map(x -> builder.getInstance(x.getAsString())) + .toList()); + this.secondary = new ArrayList(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/screenbuilder/pipeline/PipelineStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PipelineStage.java new file mode 100644 index 00000000..e560058c --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PipelineStage.java @@ -0,0 +1,14 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline; + +import java.util.ArrayList; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; + +public abstract class PipelineStage { + + protected ArrayList primary = null; + protected ArrayList secondary = null; + + public abstract void run(int screenW, int screenH); + +} 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(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(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/PipelineStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PipelineStage.java deleted file mode 100644 index d33078d8..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PipelineStage.java +++ /dev/null @@ -1,14 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.ArrayList; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; - -public abstract class PipelineStage { - - protected ArrayList primary = null; - protected ArrayList secondary = null; - - public abstract void run(int screenW, int screenH); - -} 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(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 layoutPipeline = new ArrayList<>(); - - private ArrayList instances = new ArrayList<>(); - private HashMap 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/ScreenMaster.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenMaster.java deleted file mode 100644 index 02b595d1..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenMaster.java +++ /dev/null @@ -1,76 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.io.BufferedReader; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map.Entry; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -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 { - - private static final Identifier ASSIGNMENT_JSON = new Identifier(SkyblockerMod.NAMESPACE, "tabhud/assignment.json"); - private static final Logger LOGGER = LoggerFactory.getLogger("skyblocker"); - - private static HashMap screenAMap = new HashMap<>(); - // private static HashMap screenBMap = new HashMap<>(); - // private static HashMap screenCMap = new HashMap<>(); - - static { - init(); - } - - 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 entry : screenA.entrySet()) { - screenAMap.put(entry.getKey(), new ScreenBuilder(entry.getValue().getAsString())); - } - - } catch (IOException ioex) { - LOGGER.info("[Skyblocker] Couldn't load tabhud config!"); - ioex.printStackTrace(); - } - } - - public static void render(DrawContext context, int w, int h, Text footer) { - screenAMap.get("default").run(context, w, h, footer); - } -} - -/* - * - * stackWidgetsH -stackWidgetsW ---> stack (direction?) horiz/vert (align?) center/top/bottom/left/right - -centerH -centerW -center ---> center (center/horiz/vert) -----> place (one) (where?) center/top/bot/left/right/[corners] - -offCenterL -offCenterR ---> offCenter left/right/top/bot -----> offsetPlace (where?) center/left/right/top/bot (offset to where?) left/right/top/bot - -----> align (any) (reference?) left, leftOfCenter, horizontalCenter, rightOfCenter, right, top, topOfCenter, verticalCenter, botOfCenter, bot - -collideAgainstL -collideAgainstR ---> collideAgainst (from where?) left/right/top/bot - */ \ No newline at end of file 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 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 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(?.*)\\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 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 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 ": ", an IcoTextComponent is @@ -68,7 +72,7 @@ public abstract class Widget { * Must be called before returning from the widget constructor and after all * components are added! */ - 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(); } } diff --git a/src/main/resources/assets/skyblocker/tabhud/assignment.json b/src/main/resources/assets/skyblocker/tabhud/assignment.json index a7b8dd80..85c8f938 100644 --- a/src/main/resources/assets/skyblocker/tabhud/assignment.json +++ b/src/main/resources/assets/skyblocker/tabhud/assignment.json @@ -1,11 +1,11 @@ { - "screenA": { + "standard" : { "default": "generic_info_screen" }, - "screenB": { + "screenA": { "default": "empty_screen" }, - "screenC": { + "screenB": { "default": "empty_screen" } } \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/garden_info_screen.json b/src/main/resources/assets/skyblocker/tabhud/garden_info_screen.json deleted file mode 100644 index 3ddfdfc3..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/garden_info_screen.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "widgets":[ - { - "name": "GardenSkillsWidget", - "alias": "gsw", - "args": null - }, - { - "name": "EventWidget", - "alias": "evw", - "args": true - }, - { - "name": "UpgradeWidget", - "alias": "uw", - "args": null - }, - { - "name": "ProfileWidget", - "alias": "pw", - "args": null - }, - { - "name": "EffectWidget", - "alias": "efw", - "args": null - }, - { - "name": "JacobsContestWidget", - "alias": "jcw", - "args": null - }, - { - "name": "CookieWidget", - "alias": "cw", - "args": null - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["gsw", "evw", "uw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["pw", "efw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["jcw", "cw"] - }, - { - "op": "align", - "align": "center", - "apply_to": ["gsw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "left", - "widget": "pw", - "colliders": ["gsw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "left", - "widget": "efw", - "colliders": ["gsw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "right", - "widget": "jcw", - "colliders": ["gsw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "right", - "widget": "cw", - "colliders": ["gsw", "evw", "uw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/generic_info_screen.json b/src/main/resources/assets/skyblocker/tabhud/generic_info_screen.json deleted file mode 100644 index 27a28008..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/generic_info_screen.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "widgets":[ - { - "name": "SkillsWidget", - "alias": "sw" - }, - { - "name": "EventWidget", - "alias": "evw" - }, - { - "name": "UpgradeWidget", - "alias": "uw" - }, - { - "name": "ProfileWidget", - "alias": "pw" - }, - { - "name": "EffectWidget", - "alias": "efw" - }, - { - "name": "ElectionWidget", - "alias": "elw" - }, - { - "name": "CookieWidget", - "alias": "cw" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["sw", "evw", "uw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["pw", "efw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["elw", "cw"] - }, - { - "op": "align", - "reference": "horizontalCenter", - "apply_to": ["sw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "left", - "widgets": ["pw", "efw"], - "colliders": ["sw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "right", - "widgets": ["elw", "cw"], - "colliders": ["sw", "evw", "uw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/info/garden_info_screen.json b/src/main/resources/assets/skyblocker/tabhud/info/garden_info_screen.json new file mode 100644 index 00000000..3e1556ef --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/info/garden_info_screen.json @@ -0,0 +1,70 @@ +{ + "widgets":[ + { + "name": "GardenSkillsWidget", + "alias": "gsw" + }, + { + "name": "EventWidget", + "alias": "evw", + "inGarden": true + }, + { + "name": "UpgradeWidget", + "alias": "uw" + }, + { + "name": "ProfileWidget", + "alias": "pw" + }, + { + "name": "EffectWidget", + "alias": "efw" + }, + { + "name": "JacobsContestWidget", + "alias": "jcw" + }, + { + "name": "CookieWidget", + "alias": "cw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["gsw", "evw", "uw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["pw", "efw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["jcw", "cw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["gsw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "left", + "widgets": ["pw", "efw"], + "colliders": ["gsw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "right", + "widgets": ["jcw", "cw"], + "colliders": ["gsw", "evw", "uw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/info/generic_info_screen.json b/src/main/resources/assets/skyblocker/tabhud/info/generic_info_screen.json new file mode 100644 index 00000000..dcfa5138 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/info/generic_info_screen.json @@ -0,0 +1,70 @@ +{ + "widgets":[ + { + "name": "SkillsWidget", + "alias": "sw" + }, + { + "name": "EventWidget", + "alias": "evw", + "inGarden": false + }, + { + "name": "UpgradeWidget", + "alias": "uw" + }, + { + "name": "ProfileWidget", + "alias": "pw" + }, + { + "name": "EffectWidget", + "alias": "efw" + }, + { + "name": "ElectionWidget", + "alias": "elw" + }, + { + "name": "CookieWidget", + "alias": "cw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["sw", "evw", "uw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["pw", "efw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["elw", "cw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["sw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "left", + "widgets": ["pw", "efw"], + "colliders": ["sw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "right", + "widgets": ["elw", "cw"], + "colliders": ["sw", "evw", "uw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/info/rift_info_screen.json b/src/main/resources/assets/skyblocker/tabhud/info/rift_info_screen.json new file mode 100644 index 00000000..3eda517d --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/info/rift_info_screen.json @@ -0,0 +1,48 @@ +{ + "widgets":[ + { + "name": "RiftProfileWidget", + "alias": "profile" + }, + { + "name": "RiftStatsWidget", + "alias": "stats" + }, + { + "name": "ShenWidget", + "alias": "shen" + }, + { + "name": "CookieWidget", + "alias": "cookie" + }, + { + "name": "AdvertisementWidget", + "alias": "ad" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["stats", "ad"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["profile", "shen", "cookie"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["stats", "ad"] + }, + { + "op": "align", + "direction": "rightOfCenter", + "apply_to": ["profile", "shen", "cookie"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/readme.md b/src/main/resources/assets/skyblocker/tabhud/readme.md new file mode 100644 index 00000000..7167f561 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/readme.md @@ -0,0 +1,100 @@ +# assignment.json +Assigns the screens to a type (standard, screenA, screenB). standard is shown when just pressing tab, A and B are shown when using other keys/the modifiers. +For every type, the concrete screens are mapped to the areas they are supposed to be shown in. See Appendix A for a list of valid areas. +To find the screen definition, ".json" is appended to the screen key, so specifying `"foo": "generic_info_screen"` will try to find `generic_info_screen.json` and assign this definition to the "foo" area. + +# Screen definition JSON +This file consists of one widgets section and one layout section. + +## Widget section +The widget section defines all of the widgets that a screen uses. It also defines an alias that is used in the layout section and possibly a widget's argument if its behaviour can be changed by one. +For a full list of widgets, their names and their arguments see Appendix B + +## Layout section +The layout section defines how the widgets are arranged on the screen. This is done using a pipeline; an ordered list of stages where each stage moves the widgets in some way. The initial position of the widgets is undefined. As a rule of thumb, every stage (except "Place", see below) only moves the widget in one direction, so at least two operations need to be done executed on each widget for it to be in a well defined position. A full list of operations and their arguments is found in Appendix C. + +# Appendices + +## Appendix A: Area identifiers +- default: Any area not explicitly listed in the type. + +## Appendix B: Widget identifiers and arguments + +- EmptyWidget: Generic "No data available" +- SkillsWidget: The player's skill levels and stats +- EventWidget: Info about current events. Arg `inGarden: true|false`: Is this widget displayed in the garden area? +- UpgradeWidget: Currently running upgrades +- ProfileWidget: Data about the player's profile +- EffectWidget: Currently active effects +- ElectionWidget: Info about the current mayor election +- CookieWidget: Info about your super cookie + +## Appendix C: Pipeline stages + +#### Align +- op: `align` +- reference: One of `horizontalCenter`, `verticalCenter`, `leftOfCenter`, `rightOfCenter`, `topOfCenter`, `botOfCenter` +- apply_to: List of widgets to individually apply this operation to. +- Moves a widget in *one* direction (up/down OR left/right) until it's positioned in the way described by `reference`. This reference may be thought of as a straight line, with some describing the screen's borders and others referring to it's two center axis. + +Example: align A and B with "horizontalCenter" +``` ++-----------+ +-----------+ +| | | | +| A | | -> A | +| | --> | | +| | | | +| B| | B <- | ++-----------+ +-----------+ +``` + +#### Collide +- op: `collideAgainst` +- direction: One of `left`, `right` +- widgets: List of widgets to individually move. +- colliders: List static reference widgets to "collide against". +- Moves a widget in the `direction` until it would overlap with any one of the colliders. Doesn't move the widget in the other direction, doesn't move the widget if it wouldn't collide with anything. + +Example: Collide A and B from the right with X, Y and Z +``` ++-----------+ +-----------+ +| A | | A | +| A XX | | -> AXX | +| XX | --> | XX | +| Y | | Y | +| Y BB| | -> BBY | ++-----------+ +-----------+ +``` + +#### Stack +- op: `stack` +- direction: One of `vertical`, `horizontal` +- align: One of `center`, `top`, `bot`, `left`, `right` +- apply_to: List of widgets to stack, order of the list is important (top -> bot or left -> right) +- Move the widgets vertically or horizontally as indicated by the `direction`. `align` indicates if the list is touching a screen border or is centered on the screen. This only works with borders in the direction of the stacking; combinations such as `vertical`/`left` are considered invalid and act like `align` was set to `center`. This only moves the widget in one direction so in order to get a clean list, an Align operation must be executed as well. + +Example: Stack A, B, C vertically/center-aligned, then align with leftOfCenter +``` ++-----------+ +-----------+ +-----------+ +| A | | v | | | +| | stack | A | align | -> A | +| C | --> | v B | --> | B <- | +| | | C ^ | | C <- | +| B | | | | | ++-----------+ +-----------+ +-----------+ +``` + +#### Place +- op: `place` +- where: One of `center` +- apply_to: Widget to place an the indicated position. +- Places a widget at some position, moving it in any direction as needed. Only makes sense to use on one widget at a time, as applying the same Place op to multiple widgtes causes them to be on top of each other. + +Example: Place A at "center" ++-----------+ +-----------+ +| | | | +| A | | -> v | +| | --> | A | +| | | | +| | | | ++-----------+ +-----------+ \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/test_screen.json b/src/main/resources/assets/skyblocker/tabhud/test_screen.json new file mode 100644 index 00000000..2ffa802d --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/test_screen.json @@ -0,0 +1,122 @@ +{ + "widgets": [ + { + "name": "EmptyWidget", + "alias": "ew1" + }, + { + "name": "EmptyWidget", + "alias": "ew2" + }, + { + "name": "EffectWidget", + "alias": "ew3" + }, + { + "name": "EffectWidget", + "alias": "ew4" + }, + { + "name": "CookieWidget", + "alias": "ew5" + }, + { + "name": "CookieWidget", + "alias": "ew6" + }, + { + "name": "UpgradeWidget", + "alias": "ew7" + }, + { + "name": "UpgradeWidget", + "alias": "ew8" + }, + { + "name": "FireSaleWidget", + "alias": "ew9" + }, + { + "name": "FireSaleWidget", + "alias": "ew10" + }, + { + "name": "EventWidget", + "alias": "ew11", + "inGarden": true + }, + { + "name": "EventWidget", + "alias": "ew12", + "inGarden": true + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["ew1", "ew2"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["ew1", "ew2"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["ew3", "ew4"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["ew3", "ew4"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "bot", + "apply_to": ["ew5", "ew6"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["ew5", "ew6"] + }, + { + "op": "stack", + "direction": "horizontal", + "align": "left", + "apply_to": ["ew7", "ew8"] + }, + { + "op": "align", + "reference": "topOfCenter", + "apply_to": ["ew7", "ew8"] + }, + { + "op": "stack", + "direction": "horizontal", + "align": "center", + "apply_to": ["ew9", "ew10"] + }, + { + "op": "align", + "reference": "verticalCenter", + "apply_to": ["ew9", "ew10"] + }, + { + "op": "stack", + "direction": "horizontal", + "align": "right", + "apply_to": ["ew11", "ew12"] + }, + { + "op": "align", + "reference": "botOfCenter", + "apply_to": ["ew11", "ew12"] + } + ] +} \ No newline at end of file -- cgit From c2f5155391482368425b61517848f4a11080dcf7 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Thu, 27 Jul 2023 22:09:53 +0200 Subject: Misc fixes and changes --- .../me/xmrvizzy/skyblocker/config/SkyblockerConfig.java | 3 +-- .../skyblocker/skyblock/dwarven/DwarvenHud.java | 2 ++ .../me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java | 17 ++++++----------- .../tabhud/screenbuilder/pipeline/PipelineStage.java | 2 ++ .../skyblocker/skyblock/tabhud/screens/Screen.java | 4 ++-- .../skyblock/tabhud/widget/DungeonBuffWidget.java | 2 +- .../skyblock/tabhud/widget/PlayerListWidget.java | 4 ++-- src/main/resources/assets/skyblocker/lang/en_us.json | 4 ++-- 8 files changed, 18 insertions(+), 20 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 04cfaea3..36ac4472 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -193,9 +193,8 @@ public class SkyblockerConfig implements ConfigData { @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) @ConfigEntry.Gui.Tooltip public NameSorting nameSorting = NameSorting.DEFAULT; - } - + public enum NameSorting { DEFAULT, ALPHABETICAL; 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 8f8afb3a..c1274e1e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java @@ -89,6 +89,7 @@ public class DwarvenHud { public static void renderSimple(DrawContext context, int hudX, int hudY, List commissions) { HudCommsWidget.INSTANCE.updateData(commissions, false); + HudCommsWidget.INSTANCE.update(); HudCommsWidget.INSTANCE.setX(hudX); HudCommsWidget.INSTANCE.setY(hudY); HudCommsWidget.INSTANCE.render(context, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground); @@ -96,6 +97,7 @@ public class DwarvenHud { public static void renderFancy(DrawContext context, int hudX, int hudY, List commissions) { HudCommsWidget.INSTANCE.updateData(commissions, true); + HudCommsWidget.INSTANCE.update(); HudCommsWidget.INSTANCE.setX(hudX); HudCommsWidget.INSTANCE.setY(hudY); HudCommsWidget.INSTANCE.render(context, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java index 6d90b269..8f18e367 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java @@ -10,8 +10,8 @@ import net.minecraft.client.util.InputUtil; public class TabHud { - public static KeyBinding playerTgl; - public static KeyBinding genericTgl; + public static KeyBinding toggleB; + public static KeyBinding toggleA; // public static KeyBinding mapTgl; public static KeyBinding defaultTgl; @@ -19,21 +19,16 @@ public class TabHud { public static void init() { - playerTgl = KeyBindingHelper.registerKeyBinding( - new KeyBinding("key.skyblocker.playerTgl", + toggleB = KeyBindingHelper.registerKeyBinding( + new KeyBinding("key.skyblocker.toggleB", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_B, "key.categories.skyblocker")); - genericTgl = KeyBindingHelper.registerKeyBinding( - new KeyBinding("key.skyblocker.genericTgl", + toggleA = KeyBindingHelper.registerKeyBinding( + new KeyBinding("key.skyblocker.toggleA", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_N, "key.categories.skyblocker")); - // mapTgl = KeyBindingHelper.registerKeyBinding( - // new KeyBinding("key.tabhud.mapTgl", - // InputUtil.Type.KEYSYM, - // GLFW.GLFW_KEY_LEFT_ALT, - // "key.categories.skyblocker")); defaultTgl = KeyBindingHelper.registerKeyBinding( new KeyBinding("key.skyblocker.defaultTgl", InputUtil.Type.KEYSYM, 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 e560058c..47b9e96e 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,6 +6,8 @@ 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 primary = null; protected ArrayList secondary = null; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java index 2673e1df..3d6ce64d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java @@ -41,9 +41,9 @@ public class Screen { public static Screen getCorrect(int w, int h, Text footer) { - if (TabHud.genericTgl.isPressed()) { + if (TabHud.toggleA.isPressed()) { return Screen.correctGenericScrn(w, h, footer); - } else if (TabHud.playerTgl.isPressed()) { + } else if (TabHud.toggleB.isPressed()) { return Screen.correctPlayerScrn(w, h, footer); } else { return Screen.correctMainScrn(w, h, footer); 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 5b880514..b7f58763 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 @@ -17,7 +17,7 @@ public class DungeonBuffWidget extends Widget { private static final MutableText TITLE = Text.literal("Dungeon Buffs").formatted(Formatting.DARK_PURPLE, Formatting.BOLD); - public DungeonBuffWidget(String footertext) { + public DungeonBuffWidget() { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); } 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 04327365..31370dc6 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 @@ -21,8 +21,6 @@ public class PlayerListWidget extends Widget { private static final MutableText TITLE = Text.literal("Players").formatted(Formatting.GREEN, Formatting.BOLD); - private final ArrayList list = new ArrayList<>(); - public PlayerListWidget() { super(TITLE, Formatting.GREEN.getColorValue()); @@ -30,6 +28,8 @@ public class PlayerListWidget extends Widget { @Override public void updateContent() { + ArrayList list = new ArrayList<>(); + // hard cap to 4x20 entries. // 5x20 is too wide (and not possible in theory. in reality however...) int listlen = Math.min(PlayerListMgr.getSize(), 160); diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 0cf9933c..8a30cf63 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -1,9 +1,9 @@ { "key.categories.skyblocker": "Skyblocker", "key.hotbarSlotLock": "Slot Lock (Hotbar)", - "key.skyblocker.playerTgl": "Switch tab HUD to player list", + "key.skyblocker.toggleB": "Toggle tab HUD to screen B", "key.skyblocker.defaultTgl": "Switch tab HUD to default view", - "key.skyblocker.genericTgl": "Switch tab HUD to general info", + "key.skyblocker.toggleA": "Toggle tab HUD to screen A", "key.wikiLookup": "Wiki Lookup", "text.autoconfig.skyblocker.title": "Skyblocker Settings", -- cgit From 393ec5f59d16296248fe1994d02ced699a725fcb Mon Sep 17 00:00:00 2001 From: msg-programs Date: Thu, 27 Jul 2023 22:14:54 +0200 Subject: Load layout from resoure packs, see details. Use resource pack logic to load the layouts. Finally delete the old screen defs, replace with builtin layout JSON files. Include a top-aligned layout as a builtin resource pack. Implement more possibilites for the layout to support said pack. --- .../java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 1 + .../tabhud/screenbuilder/ScreenBuilder.java | 46 +++-- .../tabhud/screenbuilder/ScreenMaster.java | 137 +++++++----- .../tabhud/screenbuilder/pipeline/AlignStage.java | 16 ++ .../tabhud/screenbuilder/pipeline/PlaceStage.java | 12 +- .../skyblock/tabhud/screens/EmptyScreen.java | 16 -- .../skyblocker/skyblock/tabhud/screens/Screen.java | 230 --------------------- .../screens/genericInfo/GardenInfoScreen.java | 51 ----- .../screens/genericInfo/GenericInfoScreen.java | 48 ----- .../screens/genericInfo/GenericRiftInfoScreen.java | 38 ---- .../tabhud/screens/main/CrimsonIsleScreen.java | 32 --- .../tabhud/screens/main/DungeonHubScreen.java | 25 --- .../tabhud/screens/main/DungeonScreen.java | 40 ---- .../tabhud/screens/main/FarmingServerScreen.java | 26 --- .../skyblock/tabhud/screens/main/GardenScreen.java | 23 --- .../tabhud/screens/main/GenericServerScreen.java | 21 -- .../tabhud/screens/main/GuestServerScreen.java | 22 -- .../tabhud/screens/main/HomeServerScreen.java | 26 --- .../tabhud/screens/main/HubServerScreen.java | 26 --- .../tabhud/screens/main/MineServerScreen.java | 30 --- .../tabhud/screens/main/ParkServerScreen.java | 19 -- .../skyblock/tabhud/screens/main/RiftScreen.java | 28 --- .../screens/playerList/DungeonPlayerScreen.java | 29 --- .../screens/playerList/GuestPlayerScreen.java | 26 --- .../screens/playerList/HomePlayerScreen.java | 25 --- .../screens/playerList/PlayerListScreen.java | 20 -- .../skyblock/tabhud/util/PlayerLocator.java | 48 +++-- .../assets/skyblocker/tabhud/assignment.json | 11 - .../assets/skyblocker/tabhud/empty_screen.json | 17 -- .../skyblocker/tabhud/info/garden_info_screen.json | 70 ------- .../tabhud/info/generic_info_screen.json | 70 ------- .../skyblocker/tabhud/info/rift_info_screen.json | 48 ----- .../resources/assets/skyblocker/tabhud/readme.md | 27 ++- .../assets/skyblocker/tabhud/screenA/default.json | 70 +++++++ .../assets/skyblocker/tabhud/screenA/garden.json | 70 +++++++ .../assets/skyblocker/tabhud/screenA/rift.json | 48 +++++ .../assets/skyblocker/tabhud/screenA/unknown.json | 17 ++ .../assets/skyblocker/tabhud/screenB/default.json | 17 ++ .../assets/skyblocker/tabhud/screenB/dungeon.json | 53 +++++ .../assets/skyblocker/tabhud/screenB/garden.json | 29 +++ .../skyblocker/tabhud/screenB/guest_island.json | 29 +++ .../skyblocker/tabhud/screenB/home_island.json | 29 +++ .../assets/skyblocker/tabhud/screenB/unknown.json | 17 ++ .../skyblocker/tabhud/standard/crimson_isle.json | 44 ++++ .../tabhud/standard/crystal_hollows.json | 44 ++++ .../assets/skyblocker/tabhud/standard/default.json | 17 ++ .../assets/skyblocker/tabhud/standard/dungeon.json | 52 +++++ .../skyblocker/tabhud/standard/dungeon_hub.json | 25 +++ .../skyblocker/tabhud/standard/dwarven_mines.json | 44 ++++ .../skyblocker/tabhud/standard/farming_island.json | 25 +++ .../assets/skyblocker/tabhud/standard/garden.json | 25 +++ .../skyblocker/tabhud/standard/guest_island.json | 17 ++ .../skyblocker/tabhud/standard/home_island.json | 29 +++ .../assets/skyblocker/tabhud/standard/hub.json | 29 +++ .../assets/skyblocker/tabhud/standard/park.json | 17 ++ .../assets/skyblocker/tabhud/standard/rift.json | 39 ++++ .../assets/skyblocker/tabhud/standard/unknown.json | 17 ++ .../assets/skyblocker/tabhud/test_screen.json | 122 ----------- .../assets/skyblocker/tabhud/screenA/default.json | 70 +++++++ .../assets/skyblocker/tabhud/screenA/garden.json | 70 +++++++ .../assets/skyblocker/tabhud/screenA/rift.json | 48 +++++ .../assets/skyblocker/tabhud/screenA/unknown.json | 17 ++ .../assets/skyblocker/tabhud/screenB/default.json | 17 ++ .../assets/skyblocker/tabhud/screenB/dungeon.json | 53 +++++ .../assets/skyblocker/tabhud/screenB/garden.json | 29 +++ .../skyblocker/tabhud/screenB/guest_island.json | 29 +++ .../skyblocker/tabhud/screenB/home_island.json | 29 +++ .../assets/skyblocker/tabhud/screenB/unknown.json | 17 ++ .../skyblocker/tabhud/standard/crimson_isle.json | 44 ++++ .../tabhud/standard/crystal_hollows.json | 44 ++++ .../assets/skyblocker/tabhud/standard/default.json | 17 ++ .../assets/skyblocker/tabhud/standard/dungeon.json | 52 +++++ .../skyblocker/tabhud/standard/dungeon_hub.json | 25 +++ .../skyblocker/tabhud/standard/dwarven_mines.json | 44 ++++ .../skyblocker/tabhud/standard/farming_island.json | 25 +++ .../assets/skyblocker/tabhud/standard/garden.json | 25 +++ .../skyblocker/tabhud/standard/guest_island.json | 17 ++ .../skyblocker/tabhud/standard/home_island.json | 29 +++ .../assets/skyblocker/tabhud/standard/hub.json | 29 +++ .../assets/skyblocker/tabhud/standard/park.json | 17 ++ .../assets/skyblocker/tabhud/standard/rift.json | 39 ++++ .../assets/skyblocker/tabhud/standard/unknown.json | 17 ++ .../resourcepacks/default_top/pack.mcmeta | 6 + 83 files changed, 1804 insertions(+), 1234 deletions(-) delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/EmptyScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GardenInfoScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericInfoScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericRiftInfoScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/CrimsonIsleScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/DungeonHubScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/DungeonScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/FarmingServerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GardenScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GenericServerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GuestServerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/HomeServerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/HubServerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/MineServerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/ParkServerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/RiftScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/DungeonPlayerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/GuestPlayerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/HomePlayerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/PlayerListScreen.java delete mode 100644 src/main/resources/assets/skyblocker/tabhud/assignment.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/empty_screen.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/info/garden_info_screen.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/info/generic_info_screen.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/info/rift_info_screen.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screenA/default.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screenA/garden.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screenA/rift.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screenA/unknown.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screenB/default.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screenB/dungeon.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screenB/garden.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screenB/guest_island.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screenB/home_island.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screenB/unknown.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/crimson_isle.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/crystal_hollows.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/default.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/dungeon.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/dungeon_hub.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/dwarven_mines.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/farming_island.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/garden.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/guest_island.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/home_island.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/hub.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/park.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/rift.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/standard/unknown.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/test_screen.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/default.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/garden.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/rift.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/unknown.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/default.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/dungeon.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/garden.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/guest_island.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/home_island.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/unknown.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crimson_isle.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crystal_hollows.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/default.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon_hub.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dwarven_mines.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/farming_island.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/garden.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/guest_island.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/home_island.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/hub.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/park.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/rift.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/unknown.json create mode 100644 src/main/resources/resourcepacks/default_top/pack.mcmeta (limited to 'src/main/java') diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index b6f11790..91ae3740 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -84,6 +84,7 @@ public class SkyblockerMod implements ClientModInitializer { DungeonMap.init(); TheRift.init(); TitleContainer.init(); + ScreenMaster.init(); containerSolverManager.init(); scheduler.scheduleCyclic(Utils::update, 20); scheduler.scheduleCyclic(DiscordRPCManager::updateDataAndPresence, 100); 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 1197ca2d..4c317a57 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 @@ -5,9 +5,10 @@ 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 org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -20,6 +21,7 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline.CollideStag 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.DungeonPlayerWidget; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EmptyWidget; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EventWidget; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; @@ -29,6 +31,9 @@ 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 layoutPipeline = new ArrayList<>(); @@ -37,12 +42,15 @@ public class ScreenBuilder { // maps alias -> widget instance private HashMap objectMap = new HashMap<>(); + private String builderName; + /** * Create a ScreenBuilder from a json. */ - public ScreenBuilder(String jsonfile) throws IOException { + public ScreenBuilder(Identifier ident) throws IOException { + + this.builderName = ident.getPath(); - Identifier ident = new Identifier(SkyblockerMod.NAMESPACE, "tabhud/" + jsonfile + ".json"); BufferedReader reader = MinecraftClient.getInstance().getResourceManager().openAsReader(ident); JsonObject json = JsonParser.parseReader(reader).getAsJsonObject(); reader.close(); @@ -61,7 +69,10 @@ public class ScreenBuilder { } for (JsonElement l : layout) { - layoutPipeline.add(createStage(l.getAsJsonObject())); + PipelineStage ps = createStage(l.getAsJsonObject()); + if (ps != null) { + layoutPipeline.add(ps); + } } } @@ -76,8 +87,11 @@ public class ScreenBuilder { switch (name) { case "EventWidget": return new EventWidget(widget.get("inGarden").getAsBoolean()); + case "DungeonPlayerWidget": + return new DungeonPlayerWidget(widget.get("player").getAsInt()); case "Widget": // clown case sanity check. don't instantiate the superclass >:| + LOGGER.error("Couldn't find class \"{}\"!", name); return new EmptyWidget(); } @@ -85,13 +99,14 @@ public class ScreenBuilder { // 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 packnames = Arrays.stream(packs) - .map(pack -> pack.getName()) - .filter(s -> s.startsWith("me.xmrvizzy.skyblocker.skyblock.tabhud.widget")) - .toList(); + // 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. + String packbase = "me.xmrvizzy.skyblocker.skyblock.tabhud.widget"; + String[] packnames = { + packbase, + packbase + ".rift" + }; // construct the full class name and try to load. Class clazz = null; @@ -105,6 +120,7 @@ public class ScreenBuilder { // load failed. if (clazz == null) { + LOGGER.error("Couldn't find class \"{}\"!", name); return new EmptyWidget(); } @@ -114,6 +130,7 @@ 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(); } } @@ -134,14 +151,17 @@ public class ScreenBuilder { return new AlignStage(this, descr); case "collideAgainst": return new CollideStage(this, descr); + default: + LOGGER.error("No such op \"{}\" as requested by {}", op, this.builderName); + return null; } - return null; } /** * Lookup Widget instance from alias name */ public Widget getInstance(String name) { + // TODO: filter null here or in stage classes 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 97969503..997bd5a9 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,51 +1,56 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder; -import java.io.BufferedReader; import java.io.IOException; import java.util.HashMap; -import java.util.Map.Entry; +import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; - -import me.xmrvizzy.skyblocker.SkyblockerMod; -import net.minecraft.client.MinecraftClient; +import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerLocator; +import net.fabricmc.fabric.api.resource.ResourceManagerHelper; +import net.fabricmc.fabric.api.resource.ResourcePackActivationType; +import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.gui.DrawContext; +import net.minecraft.resource.Resource; +import net.minecraft.resource.ResourceManager; +import net.minecraft.resource.ResourceType; import net.minecraft.util.Identifier; 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 standardMap = new HashMap<>(); - // private static HashMap screenAMap = new HashMap<>(); - // private static HashMap screenBMap = new HashMap<>(); - - static { - init(); - } + private static HashMap screenAMap = new HashMap<>(); + private static HashMap screenBMap = new HashMap<>(); /** - * Load the assignment json and construct the screen mapping + * Load a screen mapping from */ - public static void init() { - try (BufferedReader reader = MinecraftClient.getInstance().getResourceManager().openAsReader(ASSIGNMENT_JSON)) { - - JsonObject json = JsonParser.parseReader(reader).getAsJsonObject(); - JsonObject standard = json.getAsJsonObject("standard"); - for (Entry entry : standard.entrySet()) { - standardMap.put(entry.getKey(), new ScreenBuilder(entry.getValue().getAsString())); + public static void load(Identifier ident) { + + String path = ident.getPath(); + String[] parts = path.split("/"); + String screenType = parts[parts.length - 2]; + 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("screenA")) { + screenAMap.put(location, new ScreenBuilder(ident)); + } else if (screenType.equals("screenB")) { + screenBMap.put(location, new ScreenBuilder(ident)); } - } catch (IOException ioex) { - LOGGER.info("[Skyblocker] Couldn't load tabhud config!"); - ioex.printStackTrace(); + LOGGER.error("Can't load screen definition from {}", path); } + } /** @@ -53,30 +58,60 @@ public class ScreenMaster { * 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); + String location = PlayerLocator.getPlayerLocation().internal; + HashMap lookup; + if (TabHud.toggleA.isPressed()) { + lookup = screenAMap; + } else if (TabHud.toggleB.isPressed()) { + lookup = screenBMap; + } else { + lookup = standardMap; + } + + ScreenBuilder sb = lookup.get(location); + // seems suboptimal, maybe load the default first into all possible values + // and then override? + if (sb == null) { + sb = lookup.get("default"); + } + + sb.run(context, w, h); + } -} -/* - * - * stackWidgetsH -stackWidgetsW ---> stack (direction?) horiz/vert (align?) center/top/bottom/left/right - -centerH -centerW -center ---> center (center/horiz/vert) -----> place (one) (where?) center/top/bot/left/right/[corners] - -offCenterL -offCenterR ---> offCenter left/right/top/bot -----> offsetPlace (where?) center/left/right/top/bot (offset to where?) left/right/top/bot - -----> align (any) (reference?) left, leftOfCenter, horizontalCenter, rightOfCenter, right, top, topOfCenter, verticalCenter, botOfCenter, bot - -collideAgainstL -collideAgainstR ---> collideAgainst (from where?) left/right/top/bot - */ \ No newline at end of file + public static void init() { + + // WHY MUST IT ALWAYS BE SUCH NESTED GARBAGE MINECRAFT KEEP THAT IN DFU FFS + + FabricLoader.getInstance() + .getModContainer("skyblocker") + .ifPresent(container -> ResourceManagerHelper.registerBuiltinResourcePack( + new Identifier("skyblocker", "default_top"), + container, + ResourcePackActivationType.NORMAL)); + + ResourceManagerHelper.get(ResourceType.CLIENT_RESOURCES).registerReloadListener( + // ...why are we instantiating an interface again? + new SimpleSynchronousResourceReloadListener() { + @Override + public Identifier getFabricId() { + return new Identifier("skyblocker", "tabhud"); + } + + @Override + public void reload(ResourceManager manager) { + + standardMap.clear(); + screenAMap.clear(); + screenBMap.clear(); + + for (Map.Entry entry : manager + .findResources("tabhud", path -> path.getPath().endsWith(".json")) + .entrySet()) { + load(entry.getKey()); + } + } + }); + } + +} 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 87638c33..4d5a90be 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,5 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline; +import java.security.InvalidParameterException; import java.util.ArrayList; import com.google.gson.JsonObject; @@ -12,6 +13,9 @@ public class AlignStage extends PipelineStage { private String reference; public AlignStage(ScreenBuilder builder, JsonObject descr) { + if (!descr.has("reference")) { + throw new InvalidParameterException("no reference in " + descr); + } this.reference = descr.get("reference").getAsString(); this.primary = new ArrayList(descr.getAsJsonArray("apply_to") .asList() @@ -46,6 +50,18 @@ public class AlignStage extends PipelineStage { hHalf = screenH / 2; wid.setY(hHalf + 3); break; + case "top": + wid.setY(5); + break; + case "bot": + wid.setY(screenH - wid.getHeight() - 5); + break; + case "left": + wid.setX(5); + break; + case "right": + wid.setX(screenW - wid.getWidth() - 5); + break; } } } 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 3ed89fda..c6b72999 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 @@ -23,9 +23,15 @@ public class PlaceStage extends PipelineStage { 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); + switch (where) { + case "center": + wid.setY((screenH - wid.getHeight()) / 2); + wid.setX((screenW - wid.getWidth()) / 2); + break; + case "centerTop": + wid.setX((screenW - wid.getWidth()) / 2); + wid.setY(5); + break; } } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/EmptyScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/EmptyScreen.java deleted file mode 100644 index 5c302eb3..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/EmptyScreen.java +++ /dev/null @@ -1,16 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EmptyWidget; - -import net.minecraft.text.Text; - -public class EmptyScreen extends Screen { - - public EmptyScreen(int w, int h, Text footer) { - super(w, h); - EmptyWidget ew = new EmptyWidget(); - this.center(ew); - this.addWidget(ew); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java deleted file mode 100644 index 3d6ce64d..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java +++ /dev/null @@ -1,230 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.ArrayList; - -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.genericInfo.GardenInfoScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.genericInfo.GenericInfoScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.genericInfo.GenericRiftInfoScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.CrimsonIsleScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.DungeonHubScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.DungeonScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.FarmingServerScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.GardenScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.GenericServerScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.GuestServerScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.HomeServerScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.HubServerScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.MineServerScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.ParkServerScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.RiftScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList.DungeonPlayerScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList.GuestPlayerScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList.HomePlayerScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList.PlayerListScreen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerLocator; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.text.Text; - -public class Screen { - - private ArrayList widgets = new ArrayList<>(); - public int w, h; - - public Screen(int w, int h) { - float scale = SkyblockerConfig.get().general.tabHud.tabHudScale / 100f; - this.w = (int) (w / scale); - this.h = (int) (h / scale); - } - - public static Screen getCorrect(int w, int h, Text footer) { - - if (TabHud.toggleA.isPressed()) { - return Screen.correctGenericScrn(w, h, footer); - } else if (TabHud.toggleB.isPressed()) { - return Screen.correctPlayerScrn(w, h, footer); - } else { - return Screen.correctMainScrn(w, h, footer); - } - } - - private static Screen correctGenericScrn(int w, int h, Text footer) { - return switch (PlayerLocator.getPlayerLocation()) { - case GARDEN -> new GardenInfoScreen(w, h, footer); // ok - case THE_RIFT -> new GenericRiftInfoScreen(w, h, footer); - case UNKNOWN -> new EmptyScreen(w, h, footer); // ok - default -> new GenericInfoScreen(w, h, footer); // ok - }; - } - - private static Screen correctPlayerScrn(int w, int h, Text footer) { - return switch (PlayerLocator.getPlayerLocation()) { - case GUEST_ISLAND -> new GuestPlayerScreen(w, h, footer); // ok - case HOME_ISLAND, GARDEN -> new HomePlayerScreen(w, h, footer); // ok for 1 player - case DUNGEON -> new DungeonPlayerScreen(w, h, footer); - case UNKNOWN -> new EmptyScreen(w, h, footer); // ok - default -> new PlayerListScreen(w, h, footer); // ok - }; - } - - private static Screen correctMainScrn(int w, int h, Text footer) { - return switch (PlayerLocator.getPlayerLocation()) { - case PARK -> new ParkServerScreen(w, h, footer); // ok - case HUB -> new HubServerScreen(w, h, footer); // ok when fire sale incoming - case HOME_ISLAND -> new HomeServerScreen(w, h, footer); // ok - case GUEST_ISLAND -> new GuestServerScreen(w, h, footer); // ok - case CRYSTAL_HOLLOWS, DWARVEN_MINES -> new MineServerScreen(w, h, footer); // ok, TODO active forge - case FARMING_ISLAND -> new FarmingServerScreen(w, h, footer); - case DUNGEON_HUB -> new DungeonHubScreen(w, h, footer); // ok - case DUNGEON -> new DungeonScreen(w, h, footer); // ok - case CRIMSON_ISLE -> new CrimsonIsleScreen(w, h, footer); - case GARDEN -> new GardenScreen(w, h, footer); // ok - case THE_RIFT -> new RiftScreen(w, h, footer); - case UNKNOWN -> new EmptyScreen(w, h, footer); // ok - default -> new GenericServerScreen(w, h, footer); // ok - }; - } - - /** - * Add a widget to this screen - */ - public void addWidget(Widget w) { - widgets.add(w); - } - - /** - * Add many widgets to this screen - */ - public void addWidgets(Widget... ws) { - for (Widget w : ws) { - widgets.add(w); - } - } - - public void render(DrawContext context) { - for (Widget w : widgets) { - w.render(context); - } - } - - /** - * Stack these widgets on top of each other as determined by the lists's order - */ - public void stackWidgetsH(Widget... list) { - int compHeight = -5; - for (Widget wid : list) { - compHeight += wid.getHeight() + 5; - } - - int y = (h - compHeight) / 2; - for (Widget wid : list) { - wid.setY(y); - y += wid.getHeight() + 5; - } - } - - /** - * Arrange these widgets next to each other as determined by the lists's order - */ - public void stackWidgetsW(Widget... list) { - // TODO not centered - int compWidth = -5; - for (Widget wid : list) { - compWidth += wid.getWidth() + 5; - } - - int x = (w - compWidth) / 2; - for (Widget wid : list) { - wid.setX(x); - x += wid.getWidth() + 5; - } - } - - /** - * Center a widget vertically, keeping X pos - */ - public void centerH(Widget wid) { - wid.setY((h - wid.getHeight()) / 2); - } - - /** - * Center a widget horizontally, keeping Y pos - */ - public void centerW(Widget wid) { - wid.setX((w - wid.getWidth()) / 2); - } - - /** - * Center a widget vertically and horizontally - */ - public void center(Widget wid) { - this.centerH(wid); - this.centerW(wid); - } - - /** - * Let a widget's left border be on the screen's center, keeping Y pos - */ - public void offCenterL(Widget wid) { - int wHalf = this.w / 2; - wid.setX(wHalf - 3 - wid.getWidth()); - } - - /** - * Let a widget's right border be on the screen's center, keeping Y pos - */ - public void offCenterR(Widget wid) { - int wHalf = this.w / 2; - wid.setX(wHalf + 3); - } - - public void collideAgainstL(Widget w, Widget... others) { - int yMin = w.getY(); - int yMax = w.getY() + w.getHeight(); - - int xCor = this.w / 2; - - // assume others to be sorted top-bottom. - for (Widget other : others) { - if (other.getY() + other.getHeight() + 5 < yMin) { - // too high, next one - continue; - } - - if (other.getY() - 5 > yMax) { - // too low, no more collisions possible - break; - } - - int xPos = other.getX() - 5 - w.getWidth(); - xCor = Math.min(xCor, xPos); - } - w.setX(xCor); - } - - public void collideAgainstR(Widget w, Widget... others) { - int yMin = w.getY(); - int yMax = w.getY() + w.getHeight(); - - int xCor = this.w / 2; - - // assume others to be sorted top-bottom. - for (Widget other : others) { - if (other.getY() + other.getHeight() + 5 < yMin) { - // too high, next one - continue; - } - - if (other.getY() - 5 > yMax) { - // too low, no more collisions possible - break; - } - - 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/genericInfo/GardenInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GardenInfoScreen.java deleted file mode 100644 index 587c2274..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GardenInfoScreen.java +++ /dev/null @@ -1,51 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.genericInfo; - - - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.CookieWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EffectWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EventWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.GardenSkillsWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.JacobsContestWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ProfileWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.UpgradeWidget; - -import net.minecraft.text.Text; - -public class GardenInfoScreen extends Screen { - - public GardenInfoScreen(int w, int h, Text footer) { - super(w, h); - - String f = footer.getString(); - - // GardenSkillsWidget gsw = new GardenSkillsWidget(); - // EventWidget evw = new EventWidget(true); - // // UpgradeWidget uw = new UpgradeWidget(f); - - // ProfileWidget pw = new ProfileWidget(); - // EffectWidget efw = new EffectWidget(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); - - // this.centerW(gsw); - // this.centerW(evw); - // this.centerW(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.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 deleted file mode 100644 index 15c3b0e5..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericInfoScreen.java +++ /dev/null @@ -1,48 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.genericInfo; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.CookieWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EffectWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ElectionWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EventWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ProfileWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.SkillsWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.UpgradeWidget; - -import net.minecraft.text.Text; - -public class GenericInfoScreen extends Screen { - - public GenericInfoScreen(int w, int h, Text footer) { - super(w, h); - - // String f = footer.getString(); - - // SkillsWidget sw = new SkillsWidget(); - // EventWidget evw = new EventWidget(false); - // UpgradeWidget uw = new UpgradeWidget(f); - - // ProfileWidget pw = new ProfileWidget(); - // EffectWidget efw = new EffectWidget(f); - - // ElectionWidget elw = new ElectionWidget(); - // CookieWidget cw = new CookieWidget(f); - - // this.stackWidgetsH(sw, evw, uw); - // this.stackWidgetsH(pw, efw); - // this.stackWidgetsH(elw, cw); - - // this.centerW(sw); - // this.centerW(evw); - // this.centerW(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.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 deleted file mode 100644 index cf6ee77a..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericRiftInfoScreen.java +++ /dev/null @@ -1,38 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.genericInfo; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.rift.RiftProfileWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.rift.RiftStatsWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.rift.ShenWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.CookieWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.rift.AdvertisementWidget; -import net.minecraft.text.Text; - -public class GenericRiftInfoScreen extends Screen { - - public GenericRiftInfoScreen(int w, int h, Text footer) { - super(w, h); - - // String f = footer.getString(); - - // RiftProfileWidget profile = new RiftProfileWidget(); - // RiftStatsWidget stats = new RiftStatsWidget(); - // ShenWidget shen = new ShenWidget(); - - // // CookieWidget cookie = new CookieWidget(f); - // AdvertisementWidget advertisement = new AdvertisementWidget(); - - // this.stackWidgetsH(stats, advertisement); - // // this.stackWidgetsH(profile, shen, cookie); - - // this.offCenterL(stats); - // this.offCenterL(advertisement); - - // this.offCenterR(profile); - // this.offCenterR(shen); - // // this.offCenterR(cookie); - - // // this.addWidgets(profile, stats, shen, cookie, advertisement); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/CrimsonIsleScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/CrimsonIsleScreen.java deleted file mode 100644 index 6e6f563b..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/CrimsonIsleScreen.java +++ /dev/null @@ -1,32 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; - - - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.QuestWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ReputationWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.VolcanoWidget; - -import net.minecraft.text.Text; - -public class CrimsonIsleScreen extends Screen { - - public CrimsonIsleScreen(int w, int h, Text footer) { - super(w, h); - - ServerWidget sw = new ServerWidget(); - ReputationWidget rw = new ReputationWidget(); - QuestWidget qw = new QuestWidget(); - VolcanoWidget vw = new VolcanoWidget(); - - this.stackWidgetsH(sw, rw); - this.stackWidgetsH(qw, vw); - this.offCenterL(sw); - this.offCenterL(rw); - this.offCenterR(vw); - this.offCenterR(qw); - this.addWidgets(sw, rw, qw, vw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/DungeonHubScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/DungeonHubScreen.java deleted file mode 100644 index 5db461af..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/DungeonHubScreen.java +++ /dev/null @@ -1,25 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; - - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EssenceWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; - -import net.minecraft.text.Text; - -public class DungeonHubScreen extends Screen{ - - public DungeonHubScreen(int w, int h, Text footer) { - super(w, h); - - ServerWidget sw = new ServerWidget(); - EssenceWidget ew = new EssenceWidget(); - - this.centerW(sw); - this.centerW(ew); - this.stackWidgetsH(sw, ew); - this.addWidget(ew); - this.addWidget(sw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/DungeonScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/DungeonScreen.java deleted file mode 100644 index 852ee876..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/DungeonScreen.java +++ /dev/null @@ -1,40 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonBuffWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonDeathWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonDownedWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonPuzzleWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonSecretWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonServerWidget; -import net.minecraft.text.Text; - -public class DungeonScreen extends Screen { - - public DungeonScreen(int w, int h, Text footer) { - super(w, h); - - String f = footer.getString(); - - DungeonDownedWidget ddow = new DungeonDownedWidget(); - DungeonDeathWidget ddew = new DungeonDeathWidget(); - DungeonSecretWidget dscw = new DungeonSecretWidget(); - DungeonServerWidget dsrw = new DungeonServerWidget(); - DungeonPuzzleWidget dpuw = new DungeonPuzzleWidget(); - DungeonBuffWidget dbw = new DungeonBuffWidget(f); - - this.offCenterL(ddow); - this.offCenterL(ddew); - this.offCenterL(dbw); - this.offCenterR(dsrw); - this.offCenterR(dpuw); - this.offCenterR(dscw); - - this.stackWidgetsH(ddow, ddew, dbw); - this.stackWidgetsH(dsrw, dpuw, dscw); - - this.addWidgets(ddow, ddew, dscw, dsrw, dpuw, dbw); - - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/FarmingServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/FarmingServerScreen.java deleted file mode 100644 index 02c81f23..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/FarmingServerScreen.java +++ /dev/null @@ -1,26 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; - - - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.TrapperWidget; - - -import net.minecraft.text.Text; - -public class FarmingServerScreen extends Screen{ - - public FarmingServerScreen(int w, int h, Text footer) { - super(w, h); - - ServerWidget sw = new ServerWidget(); - TrapperWidget tw = new TrapperWidget(); - - this.centerW(sw); - this.centerW(tw); - this.stackWidgetsH(sw, tw); - this.addWidgets(tw, sw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GardenScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GardenScreen.java deleted file mode 100644 index ae5b642f..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GardenScreen.java +++ /dev/null @@ -1,23 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; - - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ComposterWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.GardenServerWidget; -import net.minecraft.text.Text; - -public class GardenScreen extends Screen{ - - public GardenScreen(int w, int h, Text footer) { - super(w, h); - - GardenServerWidget gsw = new GardenServerWidget(); - ComposterWidget cw = new ComposterWidget(); - - this.stackWidgetsH(gsw, cw); - this.centerW(gsw); - this.centerW(cw); - this.addWidgets(gsw, cw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GenericServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GenericServerScreen.java deleted file mode 100644 index a89563db..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GenericServerScreen.java +++ /dev/null @@ -1,21 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; - - - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; - -import net.minecraft.text.Text; - -public class GenericServerScreen extends Screen { - - public GenericServerScreen(int w, int h, Text footer) { - super(w, h); - - ServerWidget sw = new ServerWidget(); - - this.center(sw); - this.addWidget(sw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GuestServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GuestServerScreen.java deleted file mode 100644 index 57d7a199..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GuestServerScreen.java +++ /dev/null @@ -1,22 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; - - - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.GuestServerWidget; - - -import net.minecraft.text.Text; - -public class GuestServerScreen extends Screen{ - - public GuestServerScreen(int w, int h, Text footer) { - super(w, h); - - GuestServerWidget gsw = new GuestServerWidget(); - - this.center(gsw); - this.addWidget(gsw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/HomeServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/HomeServerScreen.java deleted file mode 100644 index e61ba4b0..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/HomeServerScreen.java +++ /dev/null @@ -1,26 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; - - - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandServerWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.MinionWidget; - - -import net.minecraft.text.Text; - -public class HomeServerScreen extends Screen { - - public HomeServerScreen(int w, int h, Text footer) { - super(w, h); - - IslandServerWidget isw = new IslandServerWidget(); - MinionWidget mw = new MinionWidget(); - - this.centerH(isw); - this.centerH(mw); - this.stackWidgetsW(isw, mw); - this.addWidgets(isw, mw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/HubServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/HubServerScreen.java deleted file mode 100644 index e2857f7e..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/HubServerScreen.java +++ /dev/null @@ -1,26 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; - - - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.FireSaleWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; - - -import net.minecraft.text.Text; - -public class HubServerScreen extends Screen { - - public HubServerScreen(int w, int h, Text footer) { - super(w, h); - - ServerWidget sw = new ServerWidget(); - FireSaleWidget fsw = new FireSaleWidget(); - - this.centerW(sw); - this.centerW(fsw); - this.stackWidgetsH(sw, fsw); - this.addWidgets(sw, fsw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/MineServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/MineServerScreen.java deleted file mode 100644 index 616c3e82..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/MineServerScreen.java +++ /dev/null @@ -1,30 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.CommsWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ForgeWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.PowderWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; - -import net.minecraft.text.Text; - -public class MineServerScreen extends Screen { - - public MineServerScreen(int w, int h, Text footer) { - super(w, h); - - ServerWidget sw = new ServerWidget(); - PowderWidget pw = new PowderWidget(); - CommsWidget cw = new CommsWidget(); - ForgeWidget fw = new ForgeWidget(); - - this.stackWidgetsH(sw, cw); - this.stackWidgetsH(fw, pw); - this.offCenterL(sw); - this.offCenterL(cw); - this.offCenterR(pw); - this.offCenterR(fw); - this.addWidgets(fw, cw, pw, sw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/ParkServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/ParkServerScreen.java deleted file mode 100644 index aa65d946..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/ParkServerScreen.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ParkServerWidget; - -import net.minecraft.text.Text; - -public class ParkServerScreen extends Screen{ - - public ParkServerScreen(int w, int h, Text footer) { - super(w, h); - - ParkServerWidget sw = new ParkServerWidget(); - - this.center(sw); - this.addWidget(sw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/RiftScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/RiftScreen.java deleted file mode 100644 index d63bcf62..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/RiftScreen.java +++ /dev/null @@ -1,28 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.rift.RiftProgressWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.rift.GoodToKnowWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.rift.RiftServerInfoWidget; - - -import net.minecraft.text.Text; - -public class RiftScreen extends Screen { - - public RiftScreen(int w, int h, Text footer) { - super(w, h); - - RiftProgressWidget rftProg = new RiftProgressWidget(); - GoodToKnowWidget gtk = new GoodToKnowWidget(); - RiftServerInfoWidget si = new RiftServerInfoWidget(); - - this.stackWidgetsH(si, gtk); - this.stackWidgetsH(rftProg); - this.offCenterL(si); - this.offCenterL(gtk); - this.offCenterR(rftProg); - this.addWidgets(si, gtk, rftProg); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/DungeonPlayerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/DungeonPlayerScreen.java deleted file mode 100644 index 2567da13..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/DungeonPlayerScreen.java +++ /dev/null @@ -1,29 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonPlayerWidget; -import net.minecraft.text.Text; - -public class DungeonPlayerScreen extends Screen { - - public DungeonPlayerScreen(int w, int h, Text footer) { - - super(w, h); - - DungeonPlayerWidget dpw1 = new DungeonPlayerWidget(1); - DungeonPlayerWidget dpw2 = new DungeonPlayerWidget(2); - DungeonPlayerWidget dpw3 = new DungeonPlayerWidget(3); - DungeonPlayerWidget dpw4 = new DungeonPlayerWidget(4); - DungeonPlayerWidget dpw5 = new DungeonPlayerWidget(5); - - this.offCenterL(dpw1); - this.offCenterL(dpw2); - this.offCenterL(dpw3); - this.offCenterR(dpw4); - this.offCenterR(dpw5); - this.stackWidgetsH(dpw1, dpw2, dpw3); - this.stackWidgetsH(dpw4, dpw5); - this.addWidgets(dpw1, dpw2, dpw3, dpw4, dpw5); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/GuestPlayerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/GuestPlayerScreen.java deleted file mode 100644 index 5a9733cc..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/GuestPlayerScreen.java +++ /dev/null @@ -1,26 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList; - - - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandGuestsWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandOwnersWidget; - - -import net.minecraft.text.Text; - -public class GuestPlayerScreen extends Screen{ - - public GuestPlayerScreen(int w, int h, Text footer) { - super(w, h); - - IslandGuestsWidget igw = new IslandGuestsWidget(); - IslandOwnersWidget iow = new IslandOwnersWidget(); - - this.centerH(iow); - this.centerH(igw); - this.stackWidgetsW(igw, iow); - this.addWidgets(iow, igw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/HomePlayerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/HomePlayerScreen.java deleted file mode 100644 index 2a159ecc..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/HomePlayerScreen.java +++ /dev/null @@ -1,25 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList; - - - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandGuestsWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandSelfWidget; - - -import net.minecraft.text.Text; - -public class HomePlayerScreen extends Screen { - - public HomePlayerScreen(int w, int h, Text footer) { - super(w, h); - - IslandSelfWidget isw = new IslandSelfWidget(); - IslandGuestsWidget igw = new IslandGuestsWidget(); - - this.centerH(isw); - this.centerH(igw); - this.stackWidgetsW(isw, igw); - this.addWidgets(isw, igw); - } -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/PlayerListScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/PlayerListScreen.java deleted file mode 100644 index 5db01512..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/PlayerListScreen.java +++ /dev/null @@ -1,20 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList; - - -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.PlayerListWidget; - -import net.minecraft.text.Text; - -public class PlayerListScreen extends Screen { - - public PlayerListScreen(int w, int h, Text footer) { - super(w, h); - - PlayerListWidget plw = new PlayerListWidget(); - - this.center(plw); - this.addWidget(plw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java index c2f14d3c..9b24171a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java @@ -8,25 +8,33 @@ import me.xmrvizzy.skyblocker.utils.Utils; public class PlayerLocator { public static enum Location { - DUNGEON, - GUEST_ISLAND, - HOME_ISLAND, - CRIMSON_ISLE, - DUNGEON_HUB, - FARMING_ISLAND, - PARK, - DWARVEN_MINES, - CRYSTAL_HOLLOWS, - END, - GOLD_MINE, - DEEP_CAVERNS, - HUB, - SPIDER_DEN, - JERRY, - GARDEN, - INSTANCED, - THE_RIFT, - UNKNOWN + DUNGEON("dungeon"), + GUEST_ISLAND("guest_island"), + HOME_ISLAND("home_island"), + CRIMSON_ISLE("crimson_isle"), + DUNGEON_HUB("dungeon_hub"), + FARMING_ISLAND("farming_island"), + PARK("park"), + DWARVEN_MINES("dwarven_mines"), + CRYSTAL_HOLLOWS("crystal_hollows"), + END("end"), + GOLD_MINE("gold_mine"), + DEEP_CAVERNS("deep_caverns"), + HUB("hub"), + SPIDER_DEN("spider_den"), + JERRY("jerry_workshop"), + GARDEN("garden"), + INSTANCED("kuudra"), + THE_RIFT("rift"), + UNKNOWN("unknown"); + + public String internal; + + private Location(String i) { + // as used internally by the mod, e.g. in the json + this.internal = i; + } + } public static Location getPlayerLocation() { @@ -84,7 +92,7 @@ public class PlayerLocator { case "Instanced": return Location.INSTANCED; case "The Rift": - return Location.THE_RIFT; + return Location.THE_RIFT; default: return Location.UNKNOWN; } diff --git a/src/main/resources/assets/skyblocker/tabhud/assignment.json b/src/main/resources/assets/skyblocker/tabhud/assignment.json deleted file mode 100644 index 85c8f938..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/assignment.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "standard" : { - "default": "generic_info_screen" - }, - "screenA": { - "default": "empty_screen" - }, - "screenB": { - "default": "empty_screen" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/empty_screen.json b/src/main/resources/assets/skyblocker/tabhud/empty_screen.json deleted file mode 100644 index 0252940a..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/empty_screen.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "widgets": [ - { - "name": "EmptyWidget", - "alias": "ew" - } - ], - "layout": [ - { - "op": "place", - "where": "center", - "apply_to": [ - "ew" - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/info/garden_info_screen.json b/src/main/resources/assets/skyblocker/tabhud/info/garden_info_screen.json deleted file mode 100644 index 3e1556ef..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/info/garden_info_screen.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "widgets":[ - { - "name": "GardenSkillsWidget", - "alias": "gsw" - }, - { - "name": "EventWidget", - "alias": "evw", - "inGarden": true - }, - { - "name": "UpgradeWidget", - "alias": "uw" - }, - { - "name": "ProfileWidget", - "alias": "pw" - }, - { - "name": "EffectWidget", - "alias": "efw" - }, - { - "name": "JacobsContestWidget", - "alias": "jcw" - }, - { - "name": "CookieWidget", - "alias": "cw" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["gsw", "evw", "uw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["pw", "efw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["jcw", "cw"] - }, - { - "op": "align", - "reference": "horizontalCenter", - "apply_to": ["gsw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "left", - "widgets": ["pw", "efw"], - "colliders": ["gsw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "right", - "widgets": ["jcw", "cw"], - "colliders": ["gsw", "evw", "uw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/info/generic_info_screen.json b/src/main/resources/assets/skyblocker/tabhud/info/generic_info_screen.json deleted file mode 100644 index dcfa5138..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/info/generic_info_screen.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "widgets":[ - { - "name": "SkillsWidget", - "alias": "sw" - }, - { - "name": "EventWidget", - "alias": "evw", - "inGarden": false - }, - { - "name": "UpgradeWidget", - "alias": "uw" - }, - { - "name": "ProfileWidget", - "alias": "pw" - }, - { - "name": "EffectWidget", - "alias": "efw" - }, - { - "name": "ElectionWidget", - "alias": "elw" - }, - { - "name": "CookieWidget", - "alias": "cw" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["sw", "evw", "uw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["pw", "efw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["elw", "cw"] - }, - { - "op": "align", - "reference": "horizontalCenter", - "apply_to": ["sw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "left", - "widgets": ["pw", "efw"], - "colliders": ["sw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "right", - "widgets": ["elw", "cw"], - "colliders": ["sw", "evw", "uw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/info/rift_info_screen.json b/src/main/resources/assets/skyblocker/tabhud/info/rift_info_screen.json deleted file mode 100644 index 3eda517d..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/info/rift_info_screen.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "widgets":[ - { - "name": "RiftProfileWidget", - "alias": "profile" - }, - { - "name": "RiftStatsWidget", - "alias": "stats" - }, - { - "name": "ShenWidget", - "alias": "shen" - }, - { - "name": "CookieWidget", - "alias": "cookie" - }, - { - "name": "AdvertisementWidget", - "alias": "ad" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["stats", "ad"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["profile", "shen", "cookie"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["stats", "ad"] - }, - { - "op": "align", - "direction": "rightOfCenter", - "apply_to": ["profile", "shen", "cookie"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/readme.md b/src/main/resources/assets/skyblocker/tabhud/readme.md index 7167f561..52cf5778 100644 --- a/src/main/resources/assets/skyblocker/tabhud/readme.md +++ b/src/main/resources/assets/skyblocker/tabhud/readme.md @@ -1,9 +1,19 @@ -# assignment.json -Assigns the screens to a type (standard, screenA, screenB). standard is shown when just pressing tab, A and B are shown when using other keys/the modifiers. -For every type, the concrete screens are mapped to the areas they are supposed to be shown in. See Appendix A for a list of valid areas. -To find the screen definition, ".json" is appended to the screen key, so specifying `"foo": "generic_info_screen"` will try to find `generic_info_screen.json` and assign this definition to the "foo" area. +# Directory layout +The resource pack should look like this: +``` +my_pack +├───pack.mcmeta +└───assets + └───skyblocker + └───tabhud + ├───screenA + ├───screenB + └───standard +``` +The three dirs `screenA`, `screenB` and `standard` contain the screen definition JSON files as described below. `standard` describes the screens shown when just the TAB key is pressed, while `screenA/B` describe the screens shown when using the modifier keys A and B (default binds: N and B). +The file names are used to describe where a screen is shown. They are case sensitive. For a full list of possible names see Appendix A. While this necessitates duplicate file contents and results in similar file names in different directories, it also allows for much control both when creating a complete layout or when only overriding specific screens. -# Screen definition JSON +# Screen definition JSONs This file consists of one widgets section and one layout section. ## Widget section @@ -16,7 +26,7 @@ The layout section defines how the widgets are arranged on the screen. This is d # Appendices ## Appendix A: Area identifiers -- default: Any area not explicitly listed in the type. +- default: Any area not explicitly listed. ## Appendix B: Widget identifiers and arguments @@ -28,12 +38,13 @@ The layout section defines how the widgets are arranged on the screen. This is d - EffectWidget: Currently active effects - ElectionWidget: Info about the current mayor election - CookieWidget: Info about your super cookie +- TODO: finish. see widgets package for possible values. ## Appendix C: Pipeline stages #### Align - op: `align` -- reference: One of `horizontalCenter`, `verticalCenter`, `leftOfCenter`, `rightOfCenter`, `topOfCenter`, `botOfCenter` +- reference: One of `horizontalCenter`, `verticalCenter`, `leftOfCenter`, `rightOfCenter`, `topOfCenter`, `botOfCenter`, `top`, `bot`, `left`, `right` - apply_to: List of widgets to individually apply this operation to. - Moves a widget in *one* direction (up/down OR left/right) until it's positioned in the way described by `reference`. This reference may be thought of as a straight line, with some describing the screen's borders and others referring to it's two center axis. @@ -86,7 +97,7 @@ Example: Stack A, B, C vertically/center-aligned, then align with leftOfCenter #### Place - op: `place` -- where: One of `center` +- where: One of `center`, `centerTop` - apply_to: Widget to place an the indicated position. - Places a widget at some position, moving it in any direction as needed. Only makes sense to use on one widget at a time, as applying the same Place op to multiple widgtes causes them to be on top of each other. diff --git a/src/main/resources/assets/skyblocker/tabhud/screenA/default.json b/src/main/resources/assets/skyblocker/tabhud/screenA/default.json new file mode 100644 index 00000000..dcfa5138 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screenA/default.json @@ -0,0 +1,70 @@ +{ + "widgets":[ + { + "name": "SkillsWidget", + "alias": "sw" + }, + { + "name": "EventWidget", + "alias": "evw", + "inGarden": false + }, + { + "name": "UpgradeWidget", + "alias": "uw" + }, + { + "name": "ProfileWidget", + "alias": "pw" + }, + { + "name": "EffectWidget", + "alias": "efw" + }, + { + "name": "ElectionWidget", + "alias": "elw" + }, + { + "name": "CookieWidget", + "alias": "cw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["sw", "evw", "uw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["pw", "efw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["elw", "cw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["sw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "left", + "widgets": ["pw", "efw"], + "colliders": ["sw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "right", + "widgets": ["elw", "cw"], + "colliders": ["sw", "evw", "uw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenA/garden.json b/src/main/resources/assets/skyblocker/tabhud/screenA/garden.json new file mode 100644 index 00000000..3e1556ef --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screenA/garden.json @@ -0,0 +1,70 @@ +{ + "widgets":[ + { + "name": "GardenSkillsWidget", + "alias": "gsw" + }, + { + "name": "EventWidget", + "alias": "evw", + "inGarden": true + }, + { + "name": "UpgradeWidget", + "alias": "uw" + }, + { + "name": "ProfileWidget", + "alias": "pw" + }, + { + "name": "EffectWidget", + "alias": "efw" + }, + { + "name": "JacobsContestWidget", + "alias": "jcw" + }, + { + "name": "CookieWidget", + "alias": "cw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["gsw", "evw", "uw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["pw", "efw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["jcw", "cw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["gsw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "left", + "widgets": ["pw", "efw"], + "colliders": ["gsw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "right", + "widgets": ["jcw", "cw"], + "colliders": ["gsw", "evw", "uw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenA/rift.json b/src/main/resources/assets/skyblocker/tabhud/screenA/rift.json new file mode 100644 index 00000000..8d1d4c5f --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screenA/rift.json @@ -0,0 +1,48 @@ +{ + "widgets":[ + { + "name": "RiftProfileWidget", + "alias": "profile" + }, + { + "name": "RiftStatsWidget", + "alias": "stats" + }, + { + "name": "ShenWidget", + "alias": "shen" + }, + { + "name": "CookieWidget", + "alias": "cookie" + }, + { + "name": "AdvertisementWidget", + "alias": "ad" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["stats", "ad"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["profile", "shen", "cookie"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["stats", "ad"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["profile", "shen", "cookie"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenA/unknown.json b/src/main/resources/assets/skyblocker/tabhud/screenA/unknown.json new file mode 100644 index 00000000..0252940a --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screenA/unknown.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "EmptyWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "place", + "where": "center", + "apply_to": [ + "ew" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenB/default.json b/src/main/resources/assets/skyblocker/tabhud/screenB/default.json new file mode 100644 index 00000000..a1f52ad5 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screenB/default.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "PlayerListWidget", + "alias": "plw" + } + ], + "layout": [ + { + "op": "place", + "where": "center", + "apply_to": [ + "plw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenB/dungeon.json b/src/main/resources/assets/skyblocker/tabhud/screenB/dungeon.json new file mode 100644 index 00000000..075e3d4c --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screenB/dungeon.json @@ -0,0 +1,53 @@ +{ + "widgets":[ + { + "name": "DungeonPlayerWidget", + "alias": "dpw1", + "player": 1 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw2", + "player": 2 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw3", + "player": 3 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw4", + "player": 4 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw5", + "player": 5 + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["dpw1", "dpw2", "dpw3"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["dpw4", "dpw5"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["dpw1", "dpw2", "dpw3"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["dpw4", "dpw5"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenB/garden.json b/src/main/resources/assets/skyblocker/tabhud/screenB/garden.json new file mode 100644 index 00000000..772e0594 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screenB/garden.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandSelfWidget", + "alias": "isw" + } + ], + "layout": [ + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["isw"] + }, + { + "op": "align", + "reference": "verticalCenter", + "apply_to": ["igw", "isw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenB/guest_island.json b/src/main/resources/assets/skyblocker/tabhud/screenB/guest_island.json new file mode 100644 index 00000000..54a4039d --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screenB/guest_island.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandOwnersWidget", + "alias": "iow" + } + ], + "layout": [ + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["iow"] + }, + { + "op": "align", + "reference": "verticalCenter", + "apply_to": ["igw", "iow"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenB/home_island.json b/src/main/resources/assets/skyblocker/tabhud/screenB/home_island.json new file mode 100644 index 00000000..772e0594 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screenB/home_island.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandSelfWidget", + "alias": "isw" + } + ], + "layout": [ + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["isw"] + }, + { + "op": "align", + "reference": "verticalCenter", + "apply_to": ["igw", "isw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenB/unknown.json b/src/main/resources/assets/skyblocker/tabhud/screenB/unknown.json new file mode 100644 index 00000000..0252940a --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screenB/unknown.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "EmptyWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "place", + "where": "center", + "apply_to": [ + "ew" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/crimson_isle.json b/src/main/resources/assets/skyblocker/tabhud/standard/crimson_isle.json new file mode 100644 index 00000000..7584c423 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/crimson_isle.json @@ -0,0 +1,44 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "ReputationWidget", + "alias": "rw" + }, + { + "name": "QuestWidget", + "alias": "qw" + }, + { + "name": "VolcanoWidget", + "alias": "vw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["sw", "rw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["qw", "vw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["sw", "rw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["qw", "vw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/crystal_hollows.json b/src/main/resources/assets/skyblocker/tabhud/standard/crystal_hollows.json new file mode 100644 index 00000000..7a9db97d --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/crystal_hollows.json @@ -0,0 +1,44 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "PowderWidget", + "alias": "pw" + }, + { + "name": "CommsWidget", + "alias": "cw" + }, + { + "name": "ForgeWidget", + "alias": "fw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["sw", "cw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["fw", "pw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["sw", "cw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["pw", "fw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/default.json b/src/main/resources/assets/skyblocker/tabhud/standard/default.json new file mode 100644 index 00000000..99ca3323 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/default.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "ServerWidget", + "alias": "sw" + } + ], + "layout": [ + { + "op": "place", + "where": "center", + "apply_to": [ + "sw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/dungeon.json b/src/main/resources/assets/skyblocker/tabhud/standard/dungeon.json new file mode 100644 index 00000000..f0fce5c6 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/dungeon.json @@ -0,0 +1,52 @@ +{ + "widgets":[ + { + "name": "DungeonDownedWidget", + "alias": "ddow" + }, + { + "name": "DungeonDeathWidget", + "alias": "ddew" + }, + { + "name": "DungeonSecretWidget", + "alias": "dscw" + }, + { + "name": "DungeonServerWidget", + "alias": "dsrw" + }, + { + "name": "DungeonPuzzleWidget", + "alias": "dpuw" + }, + { + "name": "DungeonBuffWidget", + "alias": "dbw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["ddow", "ddew", "dbw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["dsrw", "dpuw", "dscw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["ddow", "ddew", "dbw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["dsrw", "dpuw", "dscw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/dungeon_hub.json b/src/main/resources/assets/skyblocker/tabhud/standard/dungeon_hub.json new file mode 100644 index 00000000..09b39296 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/dungeon_hub.json @@ -0,0 +1,25 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "EssenceWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["sw", "ew"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["sw", "ew"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/dwarven_mines.json b/src/main/resources/assets/skyblocker/tabhud/standard/dwarven_mines.json new file mode 100644 index 00000000..7a9db97d --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/dwarven_mines.json @@ -0,0 +1,44 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "PowderWidget", + "alias": "pw" + }, + { + "name": "CommsWidget", + "alias": "cw" + }, + { + "name": "ForgeWidget", + "alias": "fw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["sw", "cw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["fw", "pw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["sw", "cw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["pw", "fw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/farming_island.json b/src/main/resources/assets/skyblocker/tabhud/standard/farming_island.json new file mode 100644 index 00000000..16e0c0c0 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/farming_island.json @@ -0,0 +1,25 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "TrapperWidget", + "alias": "tw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["sw", "tw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["sw", "tw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/garden.json b/src/main/resources/assets/skyblocker/tabhud/standard/garden.json new file mode 100644 index 00000000..69d854eb --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/garden.json @@ -0,0 +1,25 @@ +{ + "widgets":[ + { + "name": "GardenServerWidget", + "alias": "gsw" + }, + { + "name": "ComposterWidget", + "alias": "cw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["gsw", "cw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["gsw", "cw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/guest_island.json b/src/main/resources/assets/skyblocker/tabhud/standard/guest_island.json new file mode 100644 index 00000000..cc1be77f --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/guest_island.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "GuestServerWidget", + "alias": "gsw" + } + ], + "layout": [ + { + "op": "place", + "where": "center", + "apply_to": [ + "gsw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/home_island.json b/src/main/resources/assets/skyblocker/tabhud/standard/home_island.json new file mode 100644 index 00000000..6fe3c32d --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/home_island.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandServerWidget", + "alias": "isw" + }, + { + "name": "MinionWidget", + "alias": "mw" + } + ], + "layout": [ + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["isw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["mw"] + }, + { + "op": "align", + "reference": "verticalCenter", + "apply_to": ["isw", "mw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/hub.json b/src/main/resources/assets/skyblocker/tabhud/standard/hub.json new file mode 100644 index 00000000..cbe5aab4 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/hub.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "FireSaleWidget", + "alias": "fsw" + } + ], + "layout": [ + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["sw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["fsw"] + }, + { + "op": "align", + "reference": "verticalCenter", + "apply_to": ["sw", "fsw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/park.json b/src/main/resources/assets/skyblocker/tabhud/standard/park.json new file mode 100644 index 00000000..2c8a96cc --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/park.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "ParkServerWidget", + "alias": "psw" + } + ], + "layout": [ + { + "op": "place", + "where": "center", + "apply_to": [ + "psw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/rift.json b/src/main/resources/assets/skyblocker/tabhud/standard/rift.json new file mode 100644 index 00000000..2f5a48b2 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/rift.json @@ -0,0 +1,39 @@ +{ + "widgets":[ + { + "name": "RiftProgressWidget", + "alias": "rft" + }, + { + "name": "GoodToKnowWidget", + "alias": "gtk" + }, + { + "name": "RiftServerInfoWidget", + "alias": "si" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["si", "gtk"] + }, + { + "op": "align", + "reference": "verticalCenter", + "apply_to": ["rft"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["si", "gtk"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["rft"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/standard/unknown.json b/src/main/resources/assets/skyblocker/tabhud/standard/unknown.json new file mode 100644 index 00000000..0252940a --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/standard/unknown.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "EmptyWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "place", + "where": "center", + "apply_to": [ + "ew" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/test_screen.json b/src/main/resources/assets/skyblocker/tabhud/test_screen.json deleted file mode 100644 index 2ffa802d..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/test_screen.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "widgets": [ - { - "name": "EmptyWidget", - "alias": "ew1" - }, - { - "name": "EmptyWidget", - "alias": "ew2" - }, - { - "name": "EffectWidget", - "alias": "ew3" - }, - { - "name": "EffectWidget", - "alias": "ew4" - }, - { - "name": "CookieWidget", - "alias": "ew5" - }, - { - "name": "CookieWidget", - "alias": "ew6" - }, - { - "name": "UpgradeWidget", - "alias": "ew7" - }, - { - "name": "UpgradeWidget", - "alias": "ew8" - }, - { - "name": "FireSaleWidget", - "alias": "ew9" - }, - { - "name": "FireSaleWidget", - "alias": "ew10" - }, - { - "name": "EventWidget", - "alias": "ew11", - "inGarden": true - }, - { - "name": "EventWidget", - "alias": "ew12", - "inGarden": true - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["ew1", "ew2"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["ew1", "ew2"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["ew3", "ew4"] - }, - { - "op": "align", - "reference": "horizontalCenter", - "apply_to": ["ew3", "ew4"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "bot", - "apply_to": ["ew5", "ew6"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["ew5", "ew6"] - }, - { - "op": "stack", - "direction": "horizontal", - "align": "left", - "apply_to": ["ew7", "ew8"] - }, - { - "op": "align", - "reference": "topOfCenter", - "apply_to": ["ew7", "ew8"] - }, - { - "op": "stack", - "direction": "horizontal", - "align": "center", - "apply_to": ["ew9", "ew10"] - }, - { - "op": "align", - "reference": "verticalCenter", - "apply_to": ["ew9", "ew10"] - }, - { - "op": "stack", - "direction": "horizontal", - "align": "right", - "apply_to": ["ew11", "ew12"] - }, - { - "op": "align", - "reference": "botOfCenter", - "apply_to": ["ew11", "ew12"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/default.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/default.json new file mode 100644 index 00000000..2002591f --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/default.json @@ -0,0 +1,70 @@ +{ + "widgets":[ + { + "name": "SkillsWidget", + "alias": "sw" + }, + { + "name": "EventWidget", + "alias": "evw", + "inGarden": false + }, + { + "name": "UpgradeWidget", + "alias": "uw" + }, + { + "name": "ProfileWidget", + "alias": "pw" + }, + { + "name": "EffectWidget", + "alias": "efw" + }, + { + "name": "ElectionWidget", + "alias": "elw" + }, + { + "name": "CookieWidget", + "alias": "cw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["sw", "evw", "uw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["pw", "efw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["elw", "cw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["sw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "left", + "widgets": ["pw", "efw"], + "colliders": ["sw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "right", + "widgets": ["elw", "cw"], + "colliders": ["sw", "evw", "uw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/garden.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/garden.json new file mode 100644 index 00000000..39ee5b98 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/garden.json @@ -0,0 +1,70 @@ +{ + "widgets":[ + { + "name": "GardenSkillsWidget", + "alias": "gsw" + }, + { + "name": "EventWidget", + "alias": "evw", + "inGarden": true + }, + { + "name": "UpgradeWidget", + "alias": "uw" + }, + { + "name": "ProfileWidget", + "alias": "pw" + }, + { + "name": "EffectWidget", + "alias": "efw" + }, + { + "name": "JacobsContestWidget", + "alias": "jcw" + }, + { + "name": "CookieWidget", + "alias": "cw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["gsw", "evw", "uw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["pw", "efw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["jcw", "cw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["gsw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "left", + "widgets": ["pw", "efw"], + "colliders": ["gsw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "right", + "widgets": ["jcw", "cw"], + "colliders": ["gsw", "evw", "uw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/rift.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/rift.json new file mode 100644 index 00000000..d18efca8 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/rift.json @@ -0,0 +1,48 @@ +{ + "widgets":[ + { + "name": "RiftProfileWidget", + "alias": "profile" + }, + { + "name": "RiftStatsWidget", + "alias": "stats" + }, + { + "name": "ShenWidget", + "alias": "shen" + }, + { + "name": "CookieWidget", + "alias": "cookie" + }, + { + "name": "AdvertisementWidget", + "alias": "ad" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["stats", "ad"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["profile", "shen", "cookie"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["stats", "ad"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["profile", "shen", "cookie"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/unknown.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/unknown.json new file mode 100644 index 00000000..1b204adf --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/unknown.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "EmptyWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "ew" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/default.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/default.json new file mode 100644 index 00000000..e857ee6f --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/default.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "PlayerListWidget", + "alias": "plw" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "plw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/dungeon.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/dungeon.json new file mode 100644 index 00000000..8bb6181b --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/dungeon.json @@ -0,0 +1,53 @@ +{ + "widgets":[ + { + "name": "DungeonPlayerWidget", + "alias": "dpw1", + "player": 1 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw2", + "player": 2 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw3", + "player": 3 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw4", + "player": 4 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw5", + "player": 5 + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["dpw1", "dpw2", "dpw3"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["dpw4", "dpw5"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["dpw1", "dpw2", "dpw3"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["dpw4", "dpw5"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/garden.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/garden.json new file mode 100644 index 00000000..64fe8de4 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/garden.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandSelfWidget", + "alias": "isw" + } + ], + "layout": [ + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["isw"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["igw", "isw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/guest_island.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/guest_island.json new file mode 100644 index 00000000..98d9bd9e --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/guest_island.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandOwnersWidget", + "alias": "iow" + } + ], + "layout": [ + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["iow"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["igw", "iow"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/home_island.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/home_island.json new file mode 100644 index 00000000..64fe8de4 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/home_island.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandSelfWidget", + "alias": "isw" + } + ], + "layout": [ + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["isw"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["igw", "isw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/unknown.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/unknown.json new file mode 100644 index 00000000..1b204adf --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/unknown.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "EmptyWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "ew" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crimson_isle.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crimson_isle.json new file mode 100644 index 00000000..07e00d5f --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crimson_isle.json @@ -0,0 +1,44 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "ReputationWidget", + "alias": "rw" + }, + { + "name": "QuestWidget", + "alias": "qw" + }, + { + "name": "VolcanoWidget", + "alias": "vw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["sw", "rw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["qw", "vw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["sw", "rw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["qw", "vw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crystal_hollows.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crystal_hollows.json new file mode 100644 index 00000000..45d3c188 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crystal_hollows.json @@ -0,0 +1,44 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "PowderWidget", + "alias": "pw" + }, + { + "name": "CommsWidget", + "alias": "cw" + }, + { + "name": "ForgeWidget", + "alias": "fw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["sw", "cw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["fw", "pw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["sw", "cw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["pw", "fw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/default.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/default.json new file mode 100644 index 00000000..c56e2bc2 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/default.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "ServerWidget", + "alias": "sw" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "sw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon.json new file mode 100644 index 00000000..c2c9ce60 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon.json @@ -0,0 +1,52 @@ +{ + "widgets":[ + { + "name": "DungeonDownedWidget", + "alias": "ddow" + }, + { + "name": "DungeonDeathWidget", + "alias": "ddew" + }, + { + "name": "DungeonSecretWidget", + "alias": "dscw" + }, + { + "name": "DungeonServerWidget", + "alias": "dsrw" + }, + { + "name": "DungeonPuzzleWidget", + "alias": "dpuw" + }, + { + "name": "DungeonBuffWidget", + "alias": "dbw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["ddow", "ddew", "dbw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["dsrw", "dpuw", "dscw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["ddow", "ddew", "dbw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["dsrw", "dpuw", "dscw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon_hub.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon_hub.json new file mode 100644 index 00000000..68c0d9bb --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon_hub.json @@ -0,0 +1,25 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "EssenceWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["sw", "ew"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["sw", "ew"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dwarven_mines.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dwarven_mines.json new file mode 100644 index 00000000..45d3c188 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dwarven_mines.json @@ -0,0 +1,44 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "PowderWidget", + "alias": "pw" + }, + { + "name": "CommsWidget", + "alias": "cw" + }, + { + "name": "ForgeWidget", + "alias": "fw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["sw", "cw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["fw", "pw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["sw", "cw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["pw", "fw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/farming_island.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/farming_island.json new file mode 100644 index 00000000..5d2cc2f8 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/farming_island.json @@ -0,0 +1,25 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "TrapperWidget", + "alias": "tw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["sw", "tw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["sw", "tw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/garden.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/garden.json new file mode 100644 index 00000000..c3b082c4 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/garden.json @@ -0,0 +1,25 @@ +{ + "widgets":[ + { + "name": "GardenServerWidget", + "alias": "gsw" + }, + { + "name": "ComposterWidget", + "alias": "cw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["gsw", "cw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["gsw", "cw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/guest_island.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/guest_island.json new file mode 100644 index 00000000..9c8cff77 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/guest_island.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "GuestServerWidget", + "alias": "gsw" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "gsw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/home_island.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/home_island.json new file mode 100644 index 00000000..e775d216 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/home_island.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandServerWidget", + "alias": "isw" + }, + { + "name": "MinionWidget", + "alias": "mw" + } + ], + "layout": [ + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["isw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["mw"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["isw", "mw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/hub.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/hub.json new file mode 100644 index 00000000..37d77e98 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/hub.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "FireSaleWidget", + "alias": "fsw" + } + ], + "layout": [ + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["sw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["fsw"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["sw", "fsw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/park.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/park.json new file mode 100644 index 00000000..c8151af9 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/park.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "ParkServerWidget", + "alias": "psw" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "psw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/rift.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/rift.json new file mode 100644 index 00000000..87414cbb --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/rift.json @@ -0,0 +1,39 @@ +{ + "widgets":[ + { + "name": "RiftProgressWidget", + "alias": "rft" + }, + { + "name": "GoodToKnowWidget", + "alias": "gtk" + }, + { + "name": "RiftServerInfoWidget", + "alias": "si" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["si", "gtk"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["rft"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["si", "gtk"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["rft"] + } + ] +} \ No newline at end of file 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 new file mode 100644 index 00000000..1b204adf --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/unknown.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "EmptyWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "ew" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/pack.mcmeta b/src/main/resources/resourcepacks/default_top/pack.mcmeta new file mode 100644 index 00000000..bfbd1df3 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "pack_format": 15, + "description": "Tutorial Resource Pack" + } +} \ No newline at end of file -- cgit From ae5516daa3db0cf8a3cb1aedc928f7eff16371e1 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 29 Jul 2023 12:43:40 +0200 Subject: Move HudCommsWidget to a different dir --- .../skyblocker/skyblock/dwarven/DwarvenHud.java | 2 +- .../skyblock/tabhud/widget/HudCommsWidget.java | 75 ---------------------- .../skyblock/tabhud/widget/hud/HudCommsWidget.java | 75 ++++++++++++++++++++++ 3 files changed, 76 insertions(+), 76 deletions(-) delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/HudCommsWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java (limited to 'src/main/java') 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 c1274e1e..611ccfb9 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java @@ -9,7 +9,7 @@ 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 me.xmrvizzy.skyblocker.skyblock.tabhud.widget.hud.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; 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 deleted file mode 100644 index 4ba4b0aa..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/HudCommsWidget.java +++ /dev/null @@ -1,75 +0,0 @@ -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 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 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/hud/HudCommsWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java new file mode 100644 index 00000000..4ba4b0aa --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/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 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 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); + } + +} -- cgit From 093a32ad7bec2173691017967434234fc961c5cf Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 29 Jul 2023 14:08:33 +0200 Subject: Remove unused imports --- src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java | 3 --- .../java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java | 1 - .../skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java | 3 --- .../me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java | 1 - .../me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CommsWidget.java | 4 ---- .../skyblocker/skyblock/tabhud/widget/component/Component.java | 1 - .../skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java | 7 ++----- 7 files changed, 2 insertions(+), 18 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index 0acf5b31..a4098ce5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -6,12 +6,9 @@ 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.util.PlayerListMgr; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.api.EnvType; 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 611ccfb9..21a1b2d0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java @@ -8,7 +8,6 @@ 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.hud.HudCommsWidget; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; 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 4c317a57..d4ddef8e 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 @@ -15,7 +15,6 @@ 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; @@ -169,8 +168,6 @@ public class ScreenBuilder { * 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(); 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 7895b77b..5caa190c 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 @@ -4,7 +4,6 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 1cfa0cb2..8bbdb25f 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 @@ -1,15 +1,11 @@ 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; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java index 850cb3d2..57e26ab2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java @@ -3,7 +3,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.item.ItemRenderer; /** * Abstract base class for a component that may be added to a Widget. diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java index 4ba4b0aa..fa7a607a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java @@ -1,14 +1,11 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.hud; 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.Widget; 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; -- cgit From a3e6f2854e8c254be303ace9a01f4c195adf3e16 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 29 Jul 2023 19:15:35 +0200 Subject: Change resource dirs to not contain uppercase letters. --- .../tabhud/screenbuilder/ScreenMaster.java | 5 +- .../resources/assets/skyblocker/tabhud/readme.md | 6 +- .../assets/skyblocker/tabhud/screenA/default.json | 70 ---------------------- .../assets/skyblocker/tabhud/screenA/garden.json | 70 ---------------------- .../assets/skyblocker/tabhud/screenA/rift.json | 48 --------------- .../assets/skyblocker/tabhud/screenA/unknown.json | 17 ------ .../assets/skyblocker/tabhud/screenB/default.json | 17 ------ .../assets/skyblocker/tabhud/screenB/dungeon.json | 53 ---------------- .../assets/skyblocker/tabhud/screenB/garden.json | 29 --------- .../skyblocker/tabhud/screenB/guest_island.json | 29 --------- .../skyblocker/tabhud/screenB/home_island.json | 29 --------- .../assets/skyblocker/tabhud/screenB/unknown.json | 17 ------ .../assets/skyblocker/tabhud/screen_a/default.json | 70 ++++++++++++++++++++++ .../assets/skyblocker/tabhud/screen_a/garden.json | 70 ++++++++++++++++++++++ .../assets/skyblocker/tabhud/screen_a/rift.json | 48 +++++++++++++++ .../assets/skyblocker/tabhud/screen_a/unknown.json | 17 ++++++ .../assets/skyblocker/tabhud/screen_b/default.json | 17 ++++++ .../assets/skyblocker/tabhud/screen_b/dungeon.json | 53 ++++++++++++++++ .../assets/skyblocker/tabhud/screen_b/garden.json | 29 +++++++++ .../skyblocker/tabhud/screen_b/guest_island.json | 29 +++++++++ .../skyblocker/tabhud/screen_b/home_island.json | 29 +++++++++ .../assets/skyblocker/tabhud/screen_b/unknown.json | 17 ++++++ .../assets/skyblocker/tabhud/screenA/default.json | 70 ---------------------- .../assets/skyblocker/tabhud/screenA/garden.json | 70 ---------------------- .../assets/skyblocker/tabhud/screenA/rift.json | 48 --------------- .../assets/skyblocker/tabhud/screenA/unknown.json | 17 ------ .../assets/skyblocker/tabhud/screenB/default.json | 17 ------ .../assets/skyblocker/tabhud/screenB/dungeon.json | 53 ---------------- .../assets/skyblocker/tabhud/screenB/garden.json | 29 --------- .../skyblocker/tabhud/screenB/guest_island.json | 29 --------- .../skyblocker/tabhud/screenB/home_island.json | 29 --------- .../assets/skyblocker/tabhud/screenB/unknown.json | 17 ------ .../assets/skyblocker/tabhud/screen_a/default.json | 70 ++++++++++++++++++++++ .../assets/skyblocker/tabhud/screen_a/garden.json | 70 ++++++++++++++++++++++ .../assets/skyblocker/tabhud/screen_a/rift.json | 48 +++++++++++++++ .../assets/skyblocker/tabhud/screen_a/unknown.json | 17 ++++++ .../assets/skyblocker/tabhud/screen_b/default.json | 17 ++++++ .../assets/skyblocker/tabhud/screen_b/dungeon.json | 53 ++++++++++++++++ .../assets/skyblocker/tabhud/screen_b/garden.json | 29 +++++++++ .../skyblocker/tabhud/screen_b/guest_island.json | 29 +++++++++ .../skyblocker/tabhud/screen_b/home_island.json | 29 +++++++++ .../assets/skyblocker/tabhud/screen_b/unknown.json | 17 ++++++ 42 files changed, 764 insertions(+), 763 deletions(-) delete mode 100644 src/main/resources/assets/skyblocker/tabhud/screenA/default.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/screenA/garden.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/screenA/rift.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/screenA/unknown.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/screenB/default.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/screenB/dungeon.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/screenB/garden.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/screenB/guest_island.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/screenB/home_island.json delete mode 100644 src/main/resources/assets/skyblocker/tabhud/screenB/unknown.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screen_a/default.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screen_a/garden.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screen_a/rift.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screen_a/unknown.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screen_b/default.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screen_b/dungeon.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screen_b/garden.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screen_b/guest_island.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screen_b/home_island.json create mode 100644 src/main/resources/assets/skyblocker/tabhud/screen_b/unknown.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/default.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/garden.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/rift.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/unknown.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/default.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/dungeon.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/garden.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/guest_island.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/home_island.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/unknown.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/default.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/garden.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/rift.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/unknown.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/default.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/dungeon.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/garden.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/guest_island.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/home_island.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/unknown.json (limited to 'src/main/java') 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 997bd5a9..114aa0cb 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 @@ -42,11 +42,12 @@ public class ScreenMaster { if (screenType.equals("standard")) { standardMap.put(location, new ScreenBuilder(ident)); - } else if (screenType.equals("screenA")) { + } else if (screenType.equals("screen_a")) { screenAMap.put(location, new ScreenBuilder(ident)); - } else if (screenType.equals("screenB")) { + } else if (screenType.equals("screen_b")) { screenBMap.put(location, new ScreenBuilder(ident)); } + } catch (IOException ioex) { LOGGER.error("Can't load screen definition from {}", path); } diff --git a/src/main/resources/assets/skyblocker/tabhud/readme.md b/src/main/resources/assets/skyblocker/tabhud/readme.md index 2d3dcf67..1f294cb4 100644 --- a/src/main/resources/assets/skyblocker/tabhud/readme.md +++ b/src/main/resources/assets/skyblocker/tabhud/readme.md @@ -6,11 +6,11 @@ my_pack └───assets └───skyblocker └───tabhud - ├───screenA - ├───screenB + ├───screen_a + ├───screen_b └───standard ``` -The three dirs `screenA`, `screenB` and `standard` contain the screen definition JSON files as described below. `standard` describes the screens shown when just the TAB key is pressed, while `screenA/B` describe the screens shown when using the modifier keys A and B (default binds: N and B). +The three dirs `screen_a`, `screen_b` and `standard` contain the screen definition JSON files as described below. `standard` describes the screens shown when just the TAB key is pressed, while `screen_a/b` describe the screens shown when using the modifier keys A and B (default binds: N and B). The file names are used to describe where a screen is shown. They are case sensitive. For a full list of possible names see Appendix A. While this scheme necessitates duplicate file contents and results in similar file names in different directories, it also allows for much control both when creating a complete layout or when only overriding specific screens. # Screen definition JSONs diff --git a/src/main/resources/assets/skyblocker/tabhud/screenA/default.json b/src/main/resources/assets/skyblocker/tabhud/screenA/default.json deleted file mode 100644 index dcfa5138..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/screenA/default.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "widgets":[ - { - "name": "SkillsWidget", - "alias": "sw" - }, - { - "name": "EventWidget", - "alias": "evw", - "inGarden": false - }, - { - "name": "UpgradeWidget", - "alias": "uw" - }, - { - "name": "ProfileWidget", - "alias": "pw" - }, - { - "name": "EffectWidget", - "alias": "efw" - }, - { - "name": "ElectionWidget", - "alias": "elw" - }, - { - "name": "CookieWidget", - "alias": "cw" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["sw", "evw", "uw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["pw", "efw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["elw", "cw"] - }, - { - "op": "align", - "reference": "horizontalCenter", - "apply_to": ["sw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "left", - "widgets": ["pw", "efw"], - "colliders": ["sw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "right", - "widgets": ["elw", "cw"], - "colliders": ["sw", "evw", "uw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenA/garden.json b/src/main/resources/assets/skyblocker/tabhud/screenA/garden.json deleted file mode 100644 index 3e1556ef..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/screenA/garden.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "widgets":[ - { - "name": "GardenSkillsWidget", - "alias": "gsw" - }, - { - "name": "EventWidget", - "alias": "evw", - "inGarden": true - }, - { - "name": "UpgradeWidget", - "alias": "uw" - }, - { - "name": "ProfileWidget", - "alias": "pw" - }, - { - "name": "EffectWidget", - "alias": "efw" - }, - { - "name": "JacobsContestWidget", - "alias": "jcw" - }, - { - "name": "CookieWidget", - "alias": "cw" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["gsw", "evw", "uw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["pw", "efw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["jcw", "cw"] - }, - { - "op": "align", - "reference": "horizontalCenter", - "apply_to": ["gsw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "left", - "widgets": ["pw", "efw"], - "colliders": ["gsw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "right", - "widgets": ["jcw", "cw"], - "colliders": ["gsw", "evw", "uw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenA/rift.json b/src/main/resources/assets/skyblocker/tabhud/screenA/rift.json deleted file mode 100644 index 8d1d4c5f..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/screenA/rift.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "widgets":[ - { - "name": "RiftProfileWidget", - "alias": "profile" - }, - { - "name": "RiftStatsWidget", - "alias": "stats" - }, - { - "name": "ShenWidget", - "alias": "shen" - }, - { - "name": "CookieWidget", - "alias": "cookie" - }, - { - "name": "AdvertisementWidget", - "alias": "ad" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["stats", "ad"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["profile", "shen", "cookie"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["stats", "ad"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["profile", "shen", "cookie"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenA/unknown.json b/src/main/resources/assets/skyblocker/tabhud/screenA/unknown.json deleted file mode 100644 index 0252940a..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/screenA/unknown.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "widgets": [ - { - "name": "EmptyWidget", - "alias": "ew" - } - ], - "layout": [ - { - "op": "place", - "where": "center", - "apply_to": [ - "ew" - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenB/default.json b/src/main/resources/assets/skyblocker/tabhud/screenB/default.json deleted file mode 100644 index a1f52ad5..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/screenB/default.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "widgets": [ - { - "name": "PlayerListWidget", - "alias": "plw" - } - ], - "layout": [ - { - "op": "place", - "where": "center", - "apply_to": [ - "plw" - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenB/dungeon.json b/src/main/resources/assets/skyblocker/tabhud/screenB/dungeon.json deleted file mode 100644 index 075e3d4c..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/screenB/dungeon.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "widgets":[ - { - "name": "DungeonPlayerWidget", - "alias": "dpw1", - "player": 1 - }, - { - "name": "DungeonPlayerWidget", - "alias": "dpw2", - "player": 2 - }, - { - "name": "DungeonPlayerWidget", - "alias": "dpw3", - "player": 3 - }, - { - "name": "DungeonPlayerWidget", - "alias": "dpw4", - "player": 4 - }, - { - "name": "DungeonPlayerWidget", - "alias": "dpw5", - "player": 5 - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["dpw1", "dpw2", "dpw3"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "center", - "apply_to": ["dpw4", "dpw5"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["dpw1", "dpw2", "dpw3"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["dpw4", "dpw5"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenB/garden.json b/src/main/resources/assets/skyblocker/tabhud/screenB/garden.json deleted file mode 100644 index 772e0594..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/screenB/garden.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "widgets":[ - { - "name": "IslandGuestsWidget", - "alias": "igw" - }, - { - "name": "IslandSelfWidget", - "alias": "isw" - } - ], - "layout": [ - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["igw"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["isw"] - }, - { - "op": "align", - "reference": "verticalCenter", - "apply_to": ["igw", "isw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenB/guest_island.json b/src/main/resources/assets/skyblocker/tabhud/screenB/guest_island.json deleted file mode 100644 index 54a4039d..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/screenB/guest_island.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "widgets":[ - { - "name": "IslandGuestsWidget", - "alias": "igw" - }, - { - "name": "IslandOwnersWidget", - "alias": "iow" - } - ], - "layout": [ - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["igw"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["iow"] - }, - { - "op": "align", - "reference": "verticalCenter", - "apply_to": ["igw", "iow"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenB/home_island.json b/src/main/resources/assets/skyblocker/tabhud/screenB/home_island.json deleted file mode 100644 index 772e0594..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/screenB/home_island.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "widgets":[ - { - "name": "IslandGuestsWidget", - "alias": "igw" - }, - { - "name": "IslandSelfWidget", - "alias": "isw" - } - ], - "layout": [ - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["igw"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["isw"] - }, - { - "op": "align", - "reference": "verticalCenter", - "apply_to": ["igw", "isw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screenB/unknown.json b/src/main/resources/assets/skyblocker/tabhud/screenB/unknown.json deleted file mode 100644 index 0252940a..00000000 --- a/src/main/resources/assets/skyblocker/tabhud/screenB/unknown.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "widgets": [ - { - "name": "EmptyWidget", - "alias": "ew" - } - ], - "layout": [ - { - "op": "place", - "where": "center", - "apply_to": [ - "ew" - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screen_a/default.json b/src/main/resources/assets/skyblocker/tabhud/screen_a/default.json new file mode 100644 index 00000000..dcfa5138 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screen_a/default.json @@ -0,0 +1,70 @@ +{ + "widgets":[ + { + "name": "SkillsWidget", + "alias": "sw" + }, + { + "name": "EventWidget", + "alias": "evw", + "inGarden": false + }, + { + "name": "UpgradeWidget", + "alias": "uw" + }, + { + "name": "ProfileWidget", + "alias": "pw" + }, + { + "name": "EffectWidget", + "alias": "efw" + }, + { + "name": "ElectionWidget", + "alias": "elw" + }, + { + "name": "CookieWidget", + "alias": "cw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["sw", "evw", "uw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["pw", "efw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["elw", "cw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["sw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "left", + "widgets": ["pw", "efw"], + "colliders": ["sw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "right", + "widgets": ["elw", "cw"], + "colliders": ["sw", "evw", "uw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screen_a/garden.json b/src/main/resources/assets/skyblocker/tabhud/screen_a/garden.json new file mode 100644 index 00000000..3e1556ef --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screen_a/garden.json @@ -0,0 +1,70 @@ +{ + "widgets":[ + { + "name": "GardenSkillsWidget", + "alias": "gsw" + }, + { + "name": "EventWidget", + "alias": "evw", + "inGarden": true + }, + { + "name": "UpgradeWidget", + "alias": "uw" + }, + { + "name": "ProfileWidget", + "alias": "pw" + }, + { + "name": "EffectWidget", + "alias": "efw" + }, + { + "name": "JacobsContestWidget", + "alias": "jcw" + }, + { + "name": "CookieWidget", + "alias": "cw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["gsw", "evw", "uw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["pw", "efw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["jcw", "cw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["gsw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "left", + "widgets": ["pw", "efw"], + "colliders": ["gsw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "right", + "widgets": ["jcw", "cw"], + "colliders": ["gsw", "evw", "uw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screen_a/rift.json b/src/main/resources/assets/skyblocker/tabhud/screen_a/rift.json new file mode 100644 index 00000000..8d1d4c5f --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screen_a/rift.json @@ -0,0 +1,48 @@ +{ + "widgets":[ + { + "name": "RiftProfileWidget", + "alias": "profile" + }, + { + "name": "RiftStatsWidget", + "alias": "stats" + }, + { + "name": "ShenWidget", + "alias": "shen" + }, + { + "name": "CookieWidget", + "alias": "cookie" + }, + { + "name": "AdvertisementWidget", + "alias": "ad" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["stats", "ad"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["profile", "shen", "cookie"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["stats", "ad"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["profile", "shen", "cookie"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screen_a/unknown.json b/src/main/resources/assets/skyblocker/tabhud/screen_a/unknown.json new file mode 100644 index 00000000..0252940a --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screen_a/unknown.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "EmptyWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "place", + "where": "center", + "apply_to": [ + "ew" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screen_b/default.json b/src/main/resources/assets/skyblocker/tabhud/screen_b/default.json new file mode 100644 index 00000000..a1f52ad5 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screen_b/default.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "PlayerListWidget", + "alias": "plw" + } + ], + "layout": [ + { + "op": "place", + "where": "center", + "apply_to": [ + "plw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screen_b/dungeon.json b/src/main/resources/assets/skyblocker/tabhud/screen_b/dungeon.json new file mode 100644 index 00000000..075e3d4c --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screen_b/dungeon.json @@ -0,0 +1,53 @@ +{ + "widgets":[ + { + "name": "DungeonPlayerWidget", + "alias": "dpw1", + "player": 1 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw2", + "player": 2 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw3", + "player": 3 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw4", + "player": 4 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw5", + "player": 5 + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["dpw1", "dpw2", "dpw3"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "center", + "apply_to": ["dpw4", "dpw5"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["dpw1", "dpw2", "dpw3"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["dpw4", "dpw5"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screen_b/garden.json b/src/main/resources/assets/skyblocker/tabhud/screen_b/garden.json new file mode 100644 index 00000000..772e0594 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screen_b/garden.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandSelfWidget", + "alias": "isw" + } + ], + "layout": [ + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["isw"] + }, + { + "op": "align", + "reference": "verticalCenter", + "apply_to": ["igw", "isw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screen_b/guest_island.json b/src/main/resources/assets/skyblocker/tabhud/screen_b/guest_island.json new file mode 100644 index 00000000..54a4039d --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screen_b/guest_island.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandOwnersWidget", + "alias": "iow" + } + ], + "layout": [ + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["iow"] + }, + { + "op": "align", + "reference": "verticalCenter", + "apply_to": ["igw", "iow"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screen_b/home_island.json b/src/main/resources/assets/skyblocker/tabhud/screen_b/home_island.json new file mode 100644 index 00000000..772e0594 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screen_b/home_island.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandSelfWidget", + "alias": "isw" + } + ], + "layout": [ + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["isw"] + }, + { + "op": "align", + "reference": "verticalCenter", + "apply_to": ["igw", "isw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/screen_b/unknown.json b/src/main/resources/assets/skyblocker/tabhud/screen_b/unknown.json new file mode 100644 index 00000000..0252940a --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/screen_b/unknown.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "EmptyWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "place", + "where": "center", + "apply_to": [ + "ew" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/default.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/default.json deleted file mode 100644 index 2002591f..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/default.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "widgets":[ - { - "name": "SkillsWidget", - "alias": "sw" - }, - { - "name": "EventWidget", - "alias": "evw", - "inGarden": false - }, - { - "name": "UpgradeWidget", - "alias": "uw" - }, - { - "name": "ProfileWidget", - "alias": "pw" - }, - { - "name": "EffectWidget", - "alias": "efw" - }, - { - "name": "ElectionWidget", - "alias": "elw" - }, - { - "name": "CookieWidget", - "alias": "cw" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["sw", "evw", "uw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["pw", "efw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["elw", "cw"] - }, - { - "op": "align", - "reference": "horizontalCenter", - "apply_to": ["sw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "left", - "widgets": ["pw", "efw"], - "colliders": ["sw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "right", - "widgets": ["elw", "cw"], - "colliders": ["sw", "evw", "uw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/garden.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/garden.json deleted file mode 100644 index 39ee5b98..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/garden.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "widgets":[ - { - "name": "GardenSkillsWidget", - "alias": "gsw" - }, - { - "name": "EventWidget", - "alias": "evw", - "inGarden": true - }, - { - "name": "UpgradeWidget", - "alias": "uw" - }, - { - "name": "ProfileWidget", - "alias": "pw" - }, - { - "name": "EffectWidget", - "alias": "efw" - }, - { - "name": "JacobsContestWidget", - "alias": "jcw" - }, - { - "name": "CookieWidget", - "alias": "cw" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["gsw", "evw", "uw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["pw", "efw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["jcw", "cw"] - }, - { - "op": "align", - "reference": "horizontalCenter", - "apply_to": ["gsw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "left", - "widgets": ["pw", "efw"], - "colliders": ["gsw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "right", - "widgets": ["jcw", "cw"], - "colliders": ["gsw", "evw", "uw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/rift.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/rift.json deleted file mode 100644 index d18efca8..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/rift.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "widgets":[ - { - "name": "RiftProfileWidget", - "alias": "profile" - }, - { - "name": "RiftStatsWidget", - "alias": "stats" - }, - { - "name": "ShenWidget", - "alias": "shen" - }, - { - "name": "CookieWidget", - "alias": "cookie" - }, - { - "name": "AdvertisementWidget", - "alias": "ad" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["stats", "ad"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["profile", "shen", "cookie"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["stats", "ad"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["profile", "shen", "cookie"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/unknown.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/unknown.json deleted file mode 100644 index 1b204adf..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenA/unknown.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "widgets": [ - { - "name": "EmptyWidget", - "alias": "ew" - } - ], - "layout": [ - { - "op": "place", - "where": "centerTop", - "apply_to": [ - "ew" - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/default.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/default.json deleted file mode 100644 index e857ee6f..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/default.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "widgets": [ - { - "name": "PlayerListWidget", - "alias": "plw" - } - ], - "layout": [ - { - "op": "place", - "where": "centerTop", - "apply_to": [ - "plw" - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/dungeon.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/dungeon.json deleted file mode 100644 index 8bb6181b..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/dungeon.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "widgets":[ - { - "name": "DungeonPlayerWidget", - "alias": "dpw1", - "player": 1 - }, - { - "name": "DungeonPlayerWidget", - "alias": "dpw2", - "player": 2 - }, - { - "name": "DungeonPlayerWidget", - "alias": "dpw3", - "player": 3 - }, - { - "name": "DungeonPlayerWidget", - "alias": "dpw4", - "player": 4 - }, - { - "name": "DungeonPlayerWidget", - "alias": "dpw5", - "player": 5 - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["dpw1", "dpw2", "dpw3"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["dpw4", "dpw5"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["dpw1", "dpw2", "dpw3"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["dpw4", "dpw5"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/garden.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/garden.json deleted file mode 100644 index 64fe8de4..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/garden.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "widgets":[ - { - "name": "IslandGuestsWidget", - "alias": "igw" - }, - { - "name": "IslandSelfWidget", - "alias": "isw" - } - ], - "layout": [ - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["igw"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["isw"] - }, - { - "op": "align", - "reference": "top", - "apply_to": ["igw", "isw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/guest_island.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/guest_island.json deleted file mode 100644 index 98d9bd9e..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/guest_island.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "widgets":[ - { - "name": "IslandGuestsWidget", - "alias": "igw" - }, - { - "name": "IslandOwnersWidget", - "alias": "iow" - } - ], - "layout": [ - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["igw"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["iow"] - }, - { - "op": "align", - "reference": "top", - "apply_to": ["igw", "iow"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/home_island.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/home_island.json deleted file mode 100644 index 64fe8de4..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/home_island.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "widgets":[ - { - "name": "IslandGuestsWidget", - "alias": "igw" - }, - { - "name": "IslandSelfWidget", - "alias": "isw" - } - ], - "layout": [ - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["igw"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["isw"] - }, - { - "op": "align", - "reference": "top", - "apply_to": ["igw", "isw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/unknown.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/unknown.json deleted file mode 100644 index 1b204adf..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screenB/unknown.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "widgets": [ - { - "name": "EmptyWidget", - "alias": "ew" - } - ], - "layout": [ - { - "op": "place", - "where": "centerTop", - "apply_to": [ - "ew" - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/default.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/default.json new file mode 100644 index 00000000..2002591f --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/default.json @@ -0,0 +1,70 @@ +{ + "widgets":[ + { + "name": "SkillsWidget", + "alias": "sw" + }, + { + "name": "EventWidget", + "alias": "evw", + "inGarden": false + }, + { + "name": "UpgradeWidget", + "alias": "uw" + }, + { + "name": "ProfileWidget", + "alias": "pw" + }, + { + "name": "EffectWidget", + "alias": "efw" + }, + { + "name": "ElectionWidget", + "alias": "elw" + }, + { + "name": "CookieWidget", + "alias": "cw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["sw", "evw", "uw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["pw", "efw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["elw", "cw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["sw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "left", + "widgets": ["pw", "efw"], + "colliders": ["sw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "right", + "widgets": ["elw", "cw"], + "colliders": ["sw", "evw", "uw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/garden.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/garden.json new file mode 100644 index 00000000..39ee5b98 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/garden.json @@ -0,0 +1,70 @@ +{ + "widgets":[ + { + "name": "GardenSkillsWidget", + "alias": "gsw" + }, + { + "name": "EventWidget", + "alias": "evw", + "inGarden": true + }, + { + "name": "UpgradeWidget", + "alias": "uw" + }, + { + "name": "ProfileWidget", + "alias": "pw" + }, + { + "name": "EffectWidget", + "alias": "efw" + }, + { + "name": "JacobsContestWidget", + "alias": "jcw" + }, + { + "name": "CookieWidget", + "alias": "cw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["gsw", "evw", "uw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["pw", "efw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["jcw", "cw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["gsw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "left", + "widgets": ["pw", "efw"], + "colliders": ["gsw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "right", + "widgets": ["jcw", "cw"], + "colliders": ["gsw", "evw", "uw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/rift.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/rift.json new file mode 100644 index 00000000..d18efca8 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/rift.json @@ -0,0 +1,48 @@ +{ + "widgets":[ + { + "name": "RiftProfileWidget", + "alias": "profile" + }, + { + "name": "RiftStatsWidget", + "alias": "stats" + }, + { + "name": "ShenWidget", + "alias": "shen" + }, + { + "name": "CookieWidget", + "alias": "cookie" + }, + { + "name": "AdvertisementWidget", + "alias": "ad" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["stats", "ad"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["profile", "shen", "cookie"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["stats", "ad"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["profile", "shen", "cookie"] + } + ] +} \ No newline at end of file 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 new file mode 100644 index 00000000..1b204adf --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/unknown.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "EmptyWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "ew" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/default.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/default.json new file mode 100644 index 00000000..e857ee6f --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/default.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "PlayerListWidget", + "alias": "plw" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "plw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/dungeon.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/dungeon.json new file mode 100644 index 00000000..8bb6181b --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/dungeon.json @@ -0,0 +1,53 @@ +{ + "widgets":[ + { + "name": "DungeonPlayerWidget", + "alias": "dpw1", + "player": 1 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw2", + "player": 2 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw3", + "player": 3 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw4", + "player": 4 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw5", + "player": 5 + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["dpw1", "dpw2", "dpw3"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["dpw4", "dpw5"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["dpw1", "dpw2", "dpw3"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["dpw4", "dpw5"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/garden.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/garden.json new file mode 100644 index 00000000..64fe8de4 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/garden.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandSelfWidget", + "alias": "isw" + } + ], + "layout": [ + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["isw"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["igw", "isw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/guest_island.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/guest_island.json new file mode 100644 index 00000000..98d9bd9e --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/guest_island.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandOwnersWidget", + "alias": "iow" + } + ], + "layout": [ + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["iow"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["igw", "iow"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/home_island.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/home_island.json new file mode 100644 index 00000000..64fe8de4 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/home_island.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandSelfWidget", + "alias": "isw" + } + ], + "layout": [ + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["isw"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["igw", "isw"] + } + ] +} \ No newline at end of file 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 new file mode 100644 index 00000000..1b204adf --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/unknown.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "EmptyWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "ew" + ] + } + ] +} \ No newline at end of file -- cgit From f8c6e9454cc1354714bf46f7763ff7faf7669ddf Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 6 Aug 2023 15:20:53 +0200 Subject: Add error handling, rename EmptyWidget to ErrorWidget and allow custom string. --- .../tabhud/screenbuilder/ScreenBuilder.java | 79 ++++++++++++---------- .../tabhud/screenbuilder/ScreenMaster.java | 37 +++++----- .../tabhud/screenbuilder/pipeline/AlignStage.java | 57 +++++++++++----- .../screenbuilder/pipeline/CollideStage.java | 36 ++++++++-- .../screenbuilder/pipeline/PipelineStage.java | 2 - .../tabhud/screenbuilder/pipeline/PlaceStage.java | 30 ++++++-- .../tabhud/screenbuilder/pipeline/StackStage.java | 72 ++++++++++++++++---- .../skyblock/tabhud/widget/EmptyWidget.java | 26 ------- .../skyblock/tabhud/widget/ErrorWidget.java | 32 +++++++++ .../resources/assets/skyblocker/tabhud/readme.md | 2 +- .../assets/skyblocker/tabhud/screen_a/unknown.json | 2 +- .../assets/skyblocker/tabhud/screen_b/unknown.json | 2 +- .../assets/skyblocker/tabhud/standard/unknown.json | 2 +- .../assets/skyblocker/tabhud/screen_a/unknown.json | 2 +- .../assets/skyblocker/tabhud/screen_b/unknown.json | 2 +- .../assets/skyblocker/tabhud/standard/unknown.json | 2 +- 16 files changed, 258 insertions(+), 127 deletions(-) delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EmptyWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ErrorWidget.java (limited to 'src/main/java') 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 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 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 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(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(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 primary = null; protected ArrayList 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(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(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/EmptyWidget.java deleted file mode 100644 index 0e85003f..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EmptyWidget.java +++ /dev/null @@ -1,26 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; - -import net.minecraft.text.MutableText; -import net.minecraft.text.Text; -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, - Formatting.BOLD); - - public EmptyWidget() { - super(TITLE, Formatting.RED.getColorValue()); - } - - @Override - public void updateContent() { - Text info = Text.of("No info for this area!"); - PlainTextComponent inf = new PlainTextComponent(info); - this.addComponent(inf); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ErrorWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ErrorWidget.java new file mode 100644 index 00000000..7f53fde7 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ErrorWidget.java @@ -0,0 +1,32 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; + +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// empty widget for when nothing can be shown + +public class ErrorWidget extends Widget { + private static final MutableText TITLE = Text.literal("Error").formatted(Formatting.RED, + Formatting.BOLD); + + 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() { + 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" } ], -- cgit From f43d26234cb60650af020be7690c0d0b43771c09 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 6 Aug 2023 18:48:52 +0200 Subject: Introduce layout constants, make padding to screen bigger --- .../skyblock/tabhud/screenbuilder/ScreenMaster.java | 1 - .../tabhud/screenbuilder/pipeline/AlignStage.java | 17 +++++++++-------- .../tabhud/screenbuilder/pipeline/CollideStage.java | 13 +++++++------ .../tabhud/screenbuilder/pipeline/PlaceStage.java | 3 ++- .../tabhud/screenbuilder/pipeline/StackStage.java | 19 ++++++++++--------- .../skyblocker/skyblock/tabhud/util/ScreenConst.java | 7 +++++++ 6 files changed, 35 insertions(+), 25 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java (limited to 'src/main/java') 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 64ec4289..5c4351fd 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,5 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder; -import java.util.ArrayList; import java.util.HashMap; import java.util.Map; 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 93a11190..0f2e4107 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 @@ -6,6 +6,7 @@ import java.util.NoSuchElementException; import com.google.gson.JsonObject; import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.ScreenBuilder; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.ScreenConst; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; public class AlignStage extends PipelineStage { @@ -61,31 +62,31 @@ public class AlignStage extends PipelineStage { break; case LEFTCENT: wHalf = screenW / 2; - wid.setX(wHalf - 3 - wid.getWidth()); + wid.setX(wHalf - ScreenConst.WIDGET_PAD_HALF - wid.getWidth()); break; case RIGHTCENT: wHalf = screenW / 2; - wid.setX(wHalf + 3); + wid.setX(wHalf + ScreenConst.WIDGET_PAD_HALF); break; case TOPCENT: hHalf = screenH / 2; - wid.setY(hHalf - 3 - wid.getHeight()); + wid.setY(hHalf - ScreenConst.WIDGET_PAD_HALF - wid.getHeight()); break; case BOTCENT: hHalf = screenH / 2; - wid.setY(hHalf + 3); + wid.setY(hHalf + ScreenConst.WIDGET_PAD_HALF); break; case TOP: - wid.setY(5); + wid.setY(ScreenConst.SCREEN_PAD); break; case BOT: - wid.setY(screenH - wid.getHeight() - 5); + wid.setY(screenH - wid.getHeight() - ScreenConst.SCREEN_PAD); break; case LEFT: - wid.setX(5); + wid.setX(ScreenConst.SCREEN_PAD); break; case RIGHT: - wid.setX(screenW - wid.getWidth() - 5); + wid.setX(screenW - wid.getWidth() - ScreenConst.SCREEN_PAD); 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 837d1da4..e2911070 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 @@ -6,6 +6,7 @@ import java.util.NoSuchElementException; import com.google.gson.JsonObject; import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.ScreenBuilder; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.ScreenConst; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; public class CollideStage extends PipelineStage { @@ -65,17 +66,17 @@ public class CollideStage extends PipelineStage { // assume others to be sorted top-bottom. for (Widget other : secondary) { - if (other.getY() + other.getHeight() + 5 < yMin) { + if (other.getY() + other.getHeight() + ScreenConst.WIDGET_PAD < yMin) { // too high, next one continue; } - if (other.getY() - 5 > yMax) { + if (other.getY() - ScreenConst.WIDGET_PAD > yMax) { // too low, next continue; } - int xPos = other.getX() - 5 - w.getWidth(); + int xPos = other.getX() - ScreenConst.WIDGET_PAD - w.getWidth(); xCor = Math.min(xCor, xPos); } w.setX(xCor); @@ -89,17 +90,17 @@ public class CollideStage extends PipelineStage { // assume others to be sorted top-bottom. for (Widget other : secondary) { - if (other.getY() + other.getHeight() + 5 < yMin) { + if (other.getY() + other.getHeight() + ScreenConst.WIDGET_PAD < yMin) { // too high, next one continue; } - if (other.getY() - 5 > yMax) { + if (other.getY() - ScreenConst.WIDGET_PAD > yMax) { // too low, next continue; } - int xPos = other.getX() + other.getWidth() + 5; + int xPos = other.getX() + other.getWidth() + ScreenConst.WIDGET_PAD; xCor = Math.max(xCor, xPos); } w.setX(xCor); 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 94e0ac07..0f91a161 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 @@ -6,6 +6,7 @@ import java.util.NoSuchElementException; import com.google.gson.JsonObject; import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.ScreenBuilder; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.ScreenConst; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; public class PlaceStage extends PipelineStage { @@ -52,7 +53,7 @@ public class PlaceStage extends PipelineStage { break; case TOPCENT: wid.setX((screenW - wid.getWidth()) / 2); - wid.setY(5); + wid.setY(ScreenConst.SCREEN_PAD); 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 9fe83601..b614caef 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 @@ -6,6 +6,7 @@ import java.util.NoSuchElementException; import com.google.gson.JsonObject; import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.ScreenBuilder; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.ScreenConst; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; public class StackStage extends PipelineStage { @@ -78,41 +79,41 @@ public class StackStage extends PipelineStage { } public void stackWidgetsVert(int screenH) { - int compHeight = -5; + int compHeight = -ScreenConst.WIDGET_PAD; for (Widget wid : primary) { compHeight += wid.getHeight() + 5; } int y = switch (this.align) { - case TOP -> y = 5; - case BOT -> y = (screenH - compHeight) - 5; + case TOP -> y = ScreenConst.SCREEN_PAD; + case BOT -> y = (screenH - compHeight) - ScreenConst.SCREEN_PAD; default -> y = (screenH - compHeight) / 2; }; for (Widget wid : primary) { wid.setY(y); - y += wid.getHeight() + 5; + y += wid.getHeight() + ScreenConst.WIDGET_PAD; } } public void stackWidgetsHoriz(int screenW) { // TODO not centered (?) - int compWidth = -5; + int compWidth = -ScreenConst.WIDGET_PAD; for (Widget wid : primary) { - compWidth += wid.getWidth() + 5; + compWidth += wid.getWidth() + ScreenConst.WIDGET_PAD; } int x = switch (this.align) { - case LEFT-> x = 5; - case RIGHT -> x = (screenW - compWidth) - 5; + case LEFT-> x = ScreenConst.SCREEN_PAD; + case RIGHT -> x = (screenW - compWidth) - ScreenConst.SCREEN_PAD; default -> x = (screenW - compWidth) / 2; }; for (Widget wid : primary) { wid.setX(x); - x += wid.getWidth() + 5; + x += wid.getWidth() + ScreenConst.WIDGET_PAD; } } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java new file mode 100644 index 00000000..8788c017 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java @@ -0,0 +1,7 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.util; + +public class ScreenConst { + public static final int WIDGET_PAD = 5; + public static final int WIDGET_PAD_HALF = 3; + public static final int SCREEN_PAD = 10; +} -- cgit From 29bbcdd3cbaf391d4f4165c3b9a6d70e5c702aae Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 6 Aug 2023 20:39:12 +0200 Subject: Have screen padding respect the scale --- .../skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java | 4 ---- .../skyblock/tabhud/screenbuilder/pipeline/AlignStage.java | 8 ++++---- .../skyblock/tabhud/screenbuilder/pipeline/PlaceStage.java | 2 +- .../skyblock/tabhud/screenbuilder/pipeline/StackStage.java | 8 ++++---- .../me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java | 8 +++++++- 5 files changed, 16 insertions(+), 14 deletions(-) (limited to 'src/main/java') 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 f570f6db..feb351da 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 @@ -1,16 +1,12 @@ 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.HashMap; import java.util.NoSuchElementException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; 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 0f2e4107..e0ecbab0 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 @@ -77,16 +77,16 @@ public class AlignStage extends PipelineStage { wid.setY(hHalf + ScreenConst.WIDGET_PAD_HALF); break; case TOP: - wid.setY(ScreenConst.SCREEN_PAD); + wid.setY(ScreenConst.getScreenPad()); break; case BOT: - wid.setY(screenH - wid.getHeight() - ScreenConst.SCREEN_PAD); + wid.setY(screenH - wid.getHeight() - ScreenConst.getScreenPad()); break; case LEFT: - wid.setX(ScreenConst.SCREEN_PAD); + wid.setX(ScreenConst.getScreenPad()); break; case RIGHT: - wid.setX(screenW - wid.getWidth() - ScreenConst.SCREEN_PAD); + wid.setX(screenW - wid.getWidth() - ScreenConst.getScreenPad()); break; } } 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 0f91a161..4d19edd2 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 @@ -53,7 +53,7 @@ public class PlaceStage extends PipelineStage { break; case TOPCENT: wid.setX((screenW - wid.getWidth()) / 2); - wid.setY(ScreenConst.SCREEN_PAD); + wid.setY(ScreenConst.getScreenPad()); 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 b614caef..d861b5b8 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 @@ -86,8 +86,8 @@ public class StackStage extends PipelineStage { int y = switch (this.align) { - case TOP -> y = ScreenConst.SCREEN_PAD; - case BOT -> y = (screenH - compHeight) - ScreenConst.SCREEN_PAD; + case TOP -> y = ScreenConst.getScreenPad(); + case BOT -> y = (screenH - compHeight) - ScreenConst.getScreenPad(); default -> y = (screenH - compHeight) / 2; }; @@ -106,8 +106,8 @@ public class StackStage extends PipelineStage { int x = switch (this.align) { - case LEFT-> x = ScreenConst.SCREEN_PAD; - case RIGHT -> x = (screenW - compWidth) - ScreenConst.SCREEN_PAD; + case LEFT-> x = ScreenConst.getScreenPad(); + case RIGHT -> x = (screenW - compWidth) - ScreenConst.getScreenPad(); default -> x = (screenW - compWidth) / 2; }; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java index 8788c017..74824e3f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java @@ -1,7 +1,13 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.util; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; + public class ScreenConst { public static final int WIDGET_PAD = 5; public static final int WIDGET_PAD_HALF = 3; - public static final int SCREEN_PAD = 10; + private static final int SCREEN_PAD_BASE = 10; + + public static int getScreenPad() { + return (int) ((1f/((float)SkyblockerConfig.get().general.tabHud.tabHudScale/100f) * SCREEN_PAD_BASE)); + } } -- cgit From 812ade9e227715161c417a1aafc0e846d9af55a0 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 6 Aug 2023 21:03:46 +0200 Subject: Add missing location values for place op --- .../tabhud/screenbuilder/pipeline/PlaceStage.java | 43 ++++++++++++++++++++-- .../resources/assets/skyblocker/tabhud/readme.md | 2 +- 2 files changed, 40 insertions(+), 5 deletions(-) (limited to 'src/main/java') 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 4d19edd2..7f3dcd4b 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 @@ -11,9 +11,17 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; public class PlaceStage extends PipelineStage { - private enum PlaceLocation { + private enum PlaceLocation { CENTER("center"), - TOPCENT("centerTop"); + TOPCENT("centerTop"), + BOTCENT("centerBot"), + LEFTCENT("centerLeft"), + RIGHTCENT("centerRight"), + TRCORNER("cornerTopRight"), + TLCORNER("cornerTopLeft"), + BRCORNER("cornerBotRight"), + BLCORNER("cornerBotLeft"), + ; private String str; @@ -31,7 +39,6 @@ public class PlaceStage extends PipelineStage { } } - private PlaceLocation where; public PlaceStage(ScreenBuilder builder, JsonObject descr) { @@ -48,13 +55,41 @@ public class PlaceStage extends PipelineStage { Widget wid = primary.get(0); switch (where) { case CENTER: - wid.setY((screenH - wid.getHeight()) / 2); wid.setX((screenW - wid.getWidth()) / 2); + wid.setY((screenH - wid.getHeight()) / 2); break; case TOPCENT: wid.setX((screenW - wid.getWidth()) / 2); wid.setY(ScreenConst.getScreenPad()); break; + case BOTCENT: + wid.setX((screenW - wid.getWidth()) / 2); + wid.setY((screenH - wid.getHeight()) - ScreenConst.getScreenPad()); + break; + case LEFTCENT: + wid.setX(ScreenConst.getScreenPad()); + wid.setY((screenH - wid.getHeight()) / 2); + break; + case RIGHTCENT: + wid.setX((screenW - wid.getWidth()) - ScreenConst.getScreenPad()); + wid.setY((screenH - wid.getHeight()) / 2); + break; + case TLCORNER: + wid.setX(ScreenConst.getScreenPad()); + wid.setY(ScreenConst.getScreenPad()); + break; + case TRCORNER: + wid.setX((screenW - wid.getWidth()) - ScreenConst.getScreenPad()); + wid.setY(ScreenConst.getScreenPad()); + break; + case BLCORNER: + wid.setX(ScreenConst.getScreenPad()); + wid.setY((screenH - wid.getHeight()) - ScreenConst.getScreenPad()); + break; + case BRCORNER: + wid.setX((screenW - wid.getWidth()) - ScreenConst.getScreenPad()); + wid.setY((screenH - wid.getHeight()) - ScreenConst.getScreenPad()); + break; } } } \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/tabhud/readme.md b/src/main/resources/assets/skyblocker/tabhud/readme.md index f8394c3e..8ba473fd 100644 --- a/src/main/resources/assets/skyblocker/tabhud/readme.md +++ b/src/main/resources/assets/skyblocker/tabhud/readme.md @@ -169,7 +169,7 @@ Example: Stack A, B, C vertically/center-aligned, then align with leftOfCenter #### Place - op: `place` -- where: One of `center`, `centerTop` +- where: One of `center`, `centerTop`, `centerBot`, `centerLeft`, `centerRight`, `cornerTopRight`, `cornerTopLeft`, `cornerBotRight`, `cornerBotLeft`. - apply_to: Widget to place an the indicated position. - Places a widget at some position, moving it in any direction as needed. Only makes sense to use on one widget at a time, as applying the same Place op to multiple widgtes causes them to be on top of each other. -- cgit From bb37c6d9c0bbf6ee42c9201c383e1bac4160bd8e Mon Sep 17 00:00:00 2001 From: msg-programs Date: Thu, 10 Aug 2023 22:15:09 +0200 Subject: Implement missing arguments (top, bot) for collide op --- .../screenbuilder/pipeline/CollideStage.java | 58 ++++++++++++++++++++-- .../resources/assets/skyblocker/tabhud/readme.md | 2 +- 2 files changed, 56 insertions(+), 4 deletions(-) (limited to 'src/main/java') 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 e2911070..187dc9f9 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 @@ -13,7 +13,9 @@ public class CollideStage extends PipelineStage { private enum CollideDirection { LEFT("left"), - RIGHT("right"); + RIGHT("right"), + TOP("top"), + BOT("bot"); private String str; @@ -55,6 +57,12 @@ public class CollideStage extends PipelineStage { case RIGHT: primary.forEach(w -> collideAgainstR(screenW, w)); break; + case TOP: + primary.forEach(w -> collideAgainstT(screenH, w)); + break; + case BOT: + primary.forEach(w -> collideAgainstB(screenH, w)); + break; } } @@ -64,7 +72,6 @@ public class CollideStage extends PipelineStage { int xCor = screenW / 2; - // assume others to be sorted top-bottom. for (Widget other : secondary) { if (other.getY() + other.getHeight() + ScreenConst.WIDGET_PAD < yMin) { // too high, next one @@ -88,7 +95,6 @@ public class CollideStage extends PipelineStage { int xCor = screenW / 2; - // assume others to be sorted top-bottom. for (Widget other : secondary) { if (other.getY() + other.getHeight() + ScreenConst.WIDGET_PAD < yMin) { // too high, next one @@ -106,4 +112,50 @@ public class CollideStage extends PipelineStage { w.setX(xCor); } + public void collideAgainstT(int screenH, Widget w) { + int xMin = w.getX(); + int xMax = w.getX() + w.getWidth(); + + int yCor = screenH / 2; + + for (Widget other : secondary) { + if (other.getX() + other.getWidth() + ScreenConst.WIDGET_PAD < xMin) { + // too far left, next one + continue; + } + + if (other.getX() - ScreenConst.WIDGET_PAD > xMax) { + // too far right, next + continue; + } + + int yPos = other.getY() - ScreenConst.WIDGET_PAD - w.getHeight(); + yCor = Math.min(yCor, yPos); + } + w.setY(yCor); + } + + public void collideAgainstB(int screenH, Widget w) { + int xMin = w.getX(); + int xMax = w.getX() + w.getWidth(); + + int yCor = screenH / 2; + + for (Widget other : secondary) { + if (other.getX() + other.getWidth() + ScreenConst.WIDGET_PAD < xMin) { + // too far left, next one + continue; + } + + if (other.getX() - ScreenConst.WIDGET_PAD > xMax) { + // too far right, next + continue; + } + + int yPos = other.getY() + other.getHeight() + ScreenConst.WIDGET_PAD; + yCor = Math.max(yCor, yPos); + } + w.setY(yCor); + } + } diff --git a/src/main/resources/assets/skyblocker/tabhud/readme.md b/src/main/resources/assets/skyblocker/tabhud/readme.md index 8ba473fd..800a69d2 100644 --- a/src/main/resources/assets/skyblocker/tabhud/readme.md +++ b/src/main/resources/assets/skyblocker/tabhud/readme.md @@ -133,7 +133,7 @@ Example: align A and B with "horizontalCenter" #### Collide - op: `collideAgainst` -- direction: One of `left`, `right` +- direction: One of `left`, `right`, `top`, `bot` - widgets: List of widgets to individually move. - colliders: List static reference widgets to "collide against". - Moves a widget in the `direction` until it would overlap with any one of the colliders. Doesn't move the widget in the other direction, doesn't move the widget if it wouldn't collide with anything. -- cgit From 813271ea198f0f683677d349396eab017a778964 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 13 Aug 2023 14:09:29 +0200 Subject: Make padding from screen edges larger --- .../java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java index 74824e3f..42089e9e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java @@ -5,7 +5,7 @@ import me.xmrvizzy.skyblocker.config.SkyblockerConfig; public class ScreenConst { public static final int WIDGET_PAD = 5; public static final int WIDGET_PAD_HALF = 3; - private static final int SCREEN_PAD_BASE = 10; + private static final int SCREEN_PAD_BASE = 20; public static int getScreenPad() { return (int) ((1f/((float)SkyblockerConfig.get().general.tabHud.tabHudScale/100f) * SCREEN_PAD_BASE)); -- cgit From d68c61410c00148a4e78d65949ca40ec1e31876e Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 13 Aug 2023 21:54:53 +0200 Subject: Rework some dungeon screens from the rp, fix collideWith op to make them work correctly --- .../screenbuilder/pipeline/CollideStage.java | 8 ++-- .../assets/skyblocker/tabhud/screen_b/dungeon.json | 17 +++---- .../assets/skyblocker/tabhud/standard/dungeon.json | 52 +++++++++++++--------- 3 files changed, 45 insertions(+), 32 deletions(-) (limited to 'src/main/java') 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 187dc9f9..5f4cb1c9 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 @@ -70,7 +70,7 @@ public class CollideStage extends PipelineStage { int yMin = w.getY(); int yMax = w.getY() + w.getHeight(); - int xCor = screenW / 2; + int xCor = screenW; for (Widget other : secondary) { if (other.getY() + other.getHeight() + ScreenConst.WIDGET_PAD < yMin) { @@ -93,7 +93,7 @@ public class CollideStage extends PipelineStage { int yMin = w.getY(); int yMax = w.getY() + w.getHeight(); - int xCor = screenW / 2; + int xCor = 0; for (Widget other : secondary) { if (other.getY() + other.getHeight() + ScreenConst.WIDGET_PAD < yMin) { @@ -116,7 +116,7 @@ public class CollideStage extends PipelineStage { int xMin = w.getX(); int xMax = w.getX() + w.getWidth(); - int yCor = screenH / 2; + int yCor = screenH; for (Widget other : secondary) { if (other.getX() + other.getWidth() + ScreenConst.WIDGET_PAD < xMin) { @@ -139,7 +139,7 @@ public class CollideStage extends PipelineStage { int xMin = w.getX(); int xMax = w.getX() + w.getWidth(); - int yCor = screenH / 2; + int yCor = 0; for (Widget other : secondary) { if (other.getX() + other.getWidth() + ScreenConst.WIDGET_PAD < xMin) { diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/dungeon.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/dungeon.json index 8bb6181b..78fb6a25 100644 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/dungeon.json +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/dungeon.json @@ -29,25 +29,26 @@ "layout": [ { "op": "stack", - "direction": "vertical", - "align": "top", + "direction": "horizontal", + "align": "center", "apply_to": ["dpw1", "dpw2", "dpw3"] }, { "op": "stack", - "direction": "vertical", - "align": "top", + "direction": "horizontal", + "align": "center", "apply_to": ["dpw4", "dpw5"] }, { "op": "align", - "reference": "leftOfCenter", + "reference": "top", "apply_to": ["dpw1", "dpw2", "dpw3"] }, { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["dpw4", "dpw5"] + "op": "collideAgainst", + "direction": "bot", + "widgets": ["dpw4", "dpw5"], + "colliders": ["dpw1", "dpw2", "dpw3"] } ] } \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon.json index c2c9ce60..ac34f22a 100644 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon.json +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon.json @@ -2,51 +2,63 @@ "widgets":[ { "name": "DungeonDownedWidget", - "alias": "ddow" + "alias": "downed" }, { "name": "DungeonDeathWidget", - "alias": "ddew" + "alias": "death" }, { "name": "DungeonSecretWidget", - "alias": "dscw" + "alias": "secret" }, { "name": "DungeonServerWidget", - "alias": "dsrw" + "alias": "server" }, { "name": "DungeonPuzzleWidget", - "alias": "dpuw" + "alias": "puzzle" }, { "name": "DungeonBuffWidget", - "alias": "dbw" + "alias": "buffs" } ], "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["ddow", "ddew", "dbw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["dsrw", "dpuw", "dscw"] - }, { "op": "align", "reference": "leftOfCenter", - "apply_to": ["ddow", "ddew", "dbw"] + "apply_to": ["death", "buffs"] }, { "op": "align", "reference": "rightOfCenter", - "apply_to": ["dsrw", "dpuw", "dscw"] + "apply_to": ["server", "puzzle"] + }, + { + "op": "collideAgainst", + "direction": "left", + "widgets": ["downed"], + "colliders": ["death"] + }, + { + "op": "collideAgainst", + "direction": "right", + "widgets": ["secret"], + "colliders": ["server"] + }, + { + "op": "collideAgainst", + "direction": "bot", + "widgets": ["buffs"], + "colliders": ["death", "downed"] + }, + { + "op": "collideAgainst", + "direction": "bot", + "widgets": ["puzzle"], + "colliders": ["secret", "server"] } ] } \ No newline at end of file -- cgit From b1fc5db77f493b0fb2d09fc26b770f45fd354b89 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Mon, 14 Aug 2023 20:14:18 +0200 Subject: Make a huge spaghetti fest to fix dwarven hud config for the moment. --- .../skyblocker/skyblock/dwarven/DwarvenHud.java | 51 +++++++++++++++------- .../skyblock/dwarven/DwarvenHudConfigScreen.java | 23 ++++++---- .../skyblock/tabhud/widget/hud/HudCommsWidget.java | 1 + 3 files changed, 51 insertions(+), 24 deletions(-) (limited to 'src/main/java') 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 083cdcdf..4dcdf5c1 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java @@ -10,6 +10,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import net.minecraft.util.Pair; import java.util.ArrayList; import java.util.List; @@ -51,16 +52,34 @@ public class DwarvenHud { || commissionList.isEmpty()) { return; } - render(context, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.x, + render(HudCommsWidget.INSTANCE, context, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.x, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.y, commissionList); }); } - public static void render(DrawContext context, int hudX, int hudY, List commissions) { + public static Pair getDimForConfig(List commissions) { + switch (SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.style) { + case SIMPLE: + HudCommsWidget.INSTANCE_CFG.updateData(commissions, false); + return new Pair( + HudCommsWidget.INSTANCE_CFG.getWidth(), + HudCommsWidget.INSTANCE_CFG.getHeight()); + case FANCY : + HudCommsWidget.INSTANCE_CFG.updateData(commissions, true); + return new Pair( + HudCommsWidget.INSTANCE_CFG.getWidth(), + HudCommsWidget.INSTANCE_CFG.getHeight()); + case CLASSIC: + default: + return new Pair(200, 20 * commissions.size()); + } + } + + public static void render(HudCommsWidget hcw, DrawContext context, int hudX, int hudY, List commissions) { switch (SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.style) { - case SIMPLE -> renderSimple(context, hudX, hudY, commissions); - case FANCY -> renderFancy(context, hudX, hudY, commissions); + case SIMPLE -> renderSimple(hcw, context, hudX, hudY, commissions); + case FANCY -> renderFancy(hcw, context, hudX, hudY, commissions); case CLASSIC -> renderClassic(context, hudX, hudY, commissions); } } @@ -83,21 +102,21 @@ public class DwarvenHud { } } - public static void renderSimple(DrawContext context, int hudX, int hudY, List commissions) { - HudCommsWidget.INSTANCE.updateData(commissions, false); - HudCommsWidget.INSTANCE.update(); - HudCommsWidget.INSTANCE.setX(hudX); - HudCommsWidget.INSTANCE.setY(hudY); - HudCommsWidget.INSTANCE.render(context, + public static void renderSimple(HudCommsWidget hcw, DrawContext context, int hudX, int hudY, List commissions) { + hcw.updateData(commissions, false); + hcw.update(); + hcw.setX(hudX); + hcw.setY(hudY); + hcw.render(context, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground); } - public static void renderFancy(DrawContext context, int hudX, int hudY, List commissions) { - HudCommsWidget.INSTANCE.updateData(commissions, true); - HudCommsWidget.INSTANCE.update(); - HudCommsWidget.INSTANCE.setX(hudX); - HudCommsWidget.INSTANCE.setY(hudY); - HudCommsWidget.INSTANCE.render(context, + public static void renderFancy(HudCommsWidget hcw, DrawContext context, int hudX, int hudY, List commissions) { + hcw.updateData(commissions, true); + hcw.update(); + hcw.setX(hudX); + hcw.setY(hudY); + hcw.render(context, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java index 10e62d88..e7db0a66 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java @@ -1,17 +1,22 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; +import java.awt.Color; +import java.util.List; + import me.shedaniel.autoconfig.AutoConfig; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud.Commission; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.hud.HudCommsWidget; import me.xmrvizzy.skyblocker.utils.RenderUtils; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.text.Text; - -import java.awt.*; -import java.util.List; +import net.minecraft.util.Pair; public class DwarvenHudConfigScreen extends Screen { + private static final List CFG_COMMS = List.of(new DwarvenHud.Commission("Test Commission 1", "1%"), new DwarvenHud.Commission("Test Commission 2", "2%")); + private int hudX = SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.x; private int hudY = SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.y; @@ -23,15 +28,16 @@ public class DwarvenHudConfigScreen extends Screen { public void render(DrawContext context, int mouseX, int mouseY, float delta) { super.render(context, mouseX, mouseY, delta); renderBackground(context); - DwarvenHud.render(context, hudX, hudY, List.of(new DwarvenHud.Commission("Test Commission 1", "1%"), new DwarvenHud.Commission("Test Commission 2", "2%"))); + DwarvenHud.render(HudCommsWidget.INSTANCE_CFG, context, hudX, hudY, List.of(new DwarvenHud.Commission("Test Commission 1", "1%"), new DwarvenHud.Commission("Test Commission 2", "2%"))); context.drawCenteredTextWithShadow(textRenderer, "Right Click To Reset Position", width / 2, height / 2, Color.GRAY.getRGB()); } @Override public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) { + Pair dims = DwarvenHud.getDimForConfig(CFG_COMMS); if (RenderUtils.pointExistsInArea((int) mouseX, (int) mouseY, hudX, hudY, hudX + 200, hudY + 40) && button == 0) { - hudX = (int) Math.max(Math.min(mouseX - 100, this.width - 200), 0); - hudY = (int) Math.max(Math.min(mouseY - 20, this.height - 40), 0); + hudX = (int) Math.max(Math.min(mouseX - dims.getLeft()/2, this.width - dims.getLeft()), 0); + hudY = (int) Math.max(Math.min(mouseY - dims.getRight()/2, this.height - dims.getRight()), 0); } return super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY); } @@ -39,8 +45,9 @@ public class DwarvenHudConfigScreen extends Screen { @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { if (button == 1) { - hudX = this.width / 2 - 100; - hudY = this.height / 2 - 20; + Pair dims = DwarvenHud.getDimForConfig(CFG_COMMS); + hudX = this.width / 2 - dims.getLeft(); + hudY = this.height / 2 - dims.getRight(); } return super.mouseClicked(mouseX, mouseY, button); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java index fa7a607a..ab8546cc 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java @@ -30,6 +30,7 @@ public class HudCommsWidget extends Widget { // 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(); + public static HudCommsWidget INSTANCE_CFG = 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! -- cgit From dc47feb2137d46bec72b60f3dc3ef9e90fb26a27 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Tue, 15 Aug 2023 21:32:50 +0200 Subject: Add format version file to resource pack for future breaking changes. --- .../tabhud/screenbuilder/ScreenBuilder.java | 2 +- .../tabhud/screenbuilder/ScreenMaster.java | 36 +++++++++++++++++++--- .../resources/assets/skyblocker/tabhud/readme.md | 3 ++ .../assets/skyblocker/tabhud/version.json | 1 + .../assets/skyblocker/tabhud/version.json | 1 + 5 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/assets/skyblocker/tabhud/version.json create mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/version.json (limited to 'src/main/java') 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 feb351da..76b675ce 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 @@ -66,7 +66,7 @@ public class ScreenBuilder { } } 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()); + throw new IllegalStateException("Failed to load file " + ident + ". Reason: " + ex.getMessage()); } } 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 5c4351fd..165e875d 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,17 +1,26 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder; +import java.io.BufferedReader; import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; +import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline.PipelineStage; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerLocator; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; import net.fabricmc.fabric.api.resource.ResourceManagerHelper; import net.fabricmc.fabric.api.resource.ResourcePackActivationType; import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener; import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.resource.Resource; import net.minecraft.resource.ResourceManager; @@ -22,6 +31,8 @@ public class ScreenMaster { private static final Logger LOGGER = LoggerFactory.getLogger("skyblocker"); + private static final int VERSION = 1; + private static HashMap standardMap = new HashMap<>(); private static HashMap screenAMap = new HashMap<>(); private static HashMap screenBMap = new HashMap<>(); @@ -99,20 +110,37 @@ public class ScreenMaster { screenAMap.clear(); screenBMap.clear(); - int ex = 0; + int excnt = 0; + + for (Map.Entry entry : manager + .findResources("tabhud", path -> path.getPath().endsWith("version.json")) + .entrySet()) { + + try (BufferedReader reader = MinecraftClient.getInstance().getResourceManager() + .openAsReader(entry.getKey());) { + JsonObject json = JsonParser.parseReader(reader).getAsJsonObject(); + if (json.get("format_version").getAsInt() != VERSION) { + throw new IllegalStateException(String.format("Resource pack isn't compatible! Expected version %d, got %d", VERSION, json.get("format_version").getAsInt())); + } + + } catch (Exception ex) { + throw new IllegalStateException( + "Rejected this resource pack. Reason: " + ex.getMessage()); + } + } for (Map.Entry entry : manager - .findResources("tabhud", path -> path.getPath().endsWith(".json")) + .findResources("tabhud", path -> path.getPath().endsWith(".json") && !path.getPath().endsWith("version.json")) .entrySet()) { try { load(entry.getKey()); } catch (Exception e) { LOGGER.error(e.getMessage()); - ex++; + excnt++; } } - if (ex > 0) { + if (excnt > 0) { throw new IllegalStateException("This screen definition isn't valid, see above"); } } diff --git a/src/main/resources/assets/skyblocker/tabhud/readme.md b/src/main/resources/assets/skyblocker/tabhud/readme.md index 800a69d2..a50c1f96 100644 --- a/src/main/resources/assets/skyblocker/tabhud/readme.md +++ b/src/main/resources/assets/skyblocker/tabhud/readme.md @@ -6,12 +6,15 @@ my_pack └───assets └───skyblocker └───tabhud + ├───version.json ├───screen_a ├───screen_b └───standard ``` The three dirs `screen_a`, `screen_b` and `standard` contain the screen definition JSON files as described below. `standard` describes the screens shown when just the TAB key is pressed, while `screen_a/b` describe the screens shown when using the modifier keys A and B (default binds: N and B). The file names are used to describe where a screen is shown. They are case sensitive. For a full list of possible names see Appendix A. While this scheme necessitates duplicate file contents and results in similar file names in different directories, it also allows for much control both when creating a complete layout or when only overriding specific screens. +The `version.json` file contains a single line `{ "version": X }`, where X is the version of the internal resource pack format. This number is incremented when major changes to the resource pack structure are made in the future. It's currently 1; packs with a different version number are rejected. +IF A MAJOR CHANGE IS MADE THAT MODIFIES THE VERSION NUMBER AND THEREFORE BREAKS YOUR LAYOUT, EDITING THE VERSION FILE WITHOUT REMAKING THE RESOURCE PACK DOES NOT FIX ANYTHING. # Screen definition JSONs This file consists of one widgets section and one layout section. diff --git a/src/main/resources/assets/skyblocker/tabhud/version.json b/src/main/resources/assets/skyblocker/tabhud/version.json new file mode 100644 index 00000000..2fd60949 --- /dev/null +++ b/src/main/resources/assets/skyblocker/tabhud/version.json @@ -0,0 +1 @@ +{ "format_version": 1 } \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/version.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/version.json new file mode 100644 index 00000000..2fd60949 --- /dev/null +++ b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/version.json @@ -0,0 +1 @@ +{ "format_version": 1 } \ No newline at end of file -- cgit From 6b890fcc4d1715e548a87f36f853131df9f54deb Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 20 Aug 2023 13:21:45 +0200 Subject: Change used Pair class to FastUtil's IntIntPair --- .../skyblocker/skyblock/dwarven/DwarvenHud.java | 24 +++++++++++----------- .../skyblock/dwarven/DwarvenHudConfigScreen.java | 14 ++++++------- 2 files changed, 19 insertions(+), 19 deletions(-) (limited to 'src/main/java') 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 4dcdf5c1..8e9f0b26 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java @@ -1,5 +1,13 @@ 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 it.unimi.dsi.fastutil.ints.IntIntPair; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.hud.HudCommsWidget; import me.xmrvizzy.skyblocker.utils.Scheduler; @@ -10,14 +18,6 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -import net.minecraft.util.Pair; - -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 { @@ -57,21 +57,21 @@ public class DwarvenHud { }); } - public static Pair getDimForConfig(List commissions) { + public static IntIntPair getDimForConfig(List commissions) { switch (SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.style) { case SIMPLE: HudCommsWidget.INSTANCE_CFG.updateData(commissions, false); - return new Pair( + return IntIntPair.of( HudCommsWidget.INSTANCE_CFG.getWidth(), HudCommsWidget.INSTANCE_CFG.getHeight()); case FANCY : HudCommsWidget.INSTANCE_CFG.updateData(commissions, true); - return new Pair( + return IntIntPair.of( HudCommsWidget.INSTANCE_CFG.getWidth(), HudCommsWidget.INSTANCE_CFG.getHeight()); case CLASSIC: default: - return new Pair(200, 20 * commissions.size()); + return IntIntPair.of(200, 20 * commissions.size()); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java index e7db0a66..d3c0fa76 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java @@ -3,6 +3,7 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; import java.awt.Color; import java.util.List; +import it.unimi.dsi.fastutil.ints.IntIntPair; import me.shedaniel.autoconfig.AutoConfig; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud.Commission; @@ -11,7 +12,6 @@ import me.xmrvizzy.skyblocker.utils.RenderUtils; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.text.Text; -import net.minecraft.util.Pair; public class DwarvenHudConfigScreen extends Screen { @@ -34,10 +34,10 @@ public class DwarvenHudConfigScreen extends Screen { @Override public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) { - Pair dims = DwarvenHud.getDimForConfig(CFG_COMMS); + IntIntPair dims = DwarvenHud.getDimForConfig(CFG_COMMS); if (RenderUtils.pointExistsInArea((int) mouseX, (int) mouseY, hudX, hudY, hudX + 200, hudY + 40) && button == 0) { - hudX = (int) Math.max(Math.min(mouseX - dims.getLeft()/2, this.width - dims.getLeft()), 0); - hudY = (int) Math.max(Math.min(mouseY - dims.getRight()/2, this.height - dims.getRight()), 0); + hudX = (int) Math.max(Math.min(mouseX - dims.leftInt()/2, this.width - dims.leftInt()), 0); + hudY = (int) Math.max(Math.min(mouseY - dims.rightInt()/2, this.height - dims.rightInt()), 0); } return super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY); } @@ -45,9 +45,9 @@ public class DwarvenHudConfigScreen extends Screen { @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { if (button == 1) { - Pair dims = DwarvenHud.getDimForConfig(CFG_COMMS); - hudX = this.width / 2 - dims.getLeft(); - hudY = this.height / 2 - dims.getRight(); + IntIntPair dims = DwarvenHud.getDimForConfig(CFG_COMMS); + hudX = this.width / 2 - dims.leftInt(); + hudY = this.height / 2 - dims.rightInt(); } return super.mouseClicked(mouseX, mouseY, button); } -- cgit From bb2612feb2b86e94d23d02fbc3e66d5abeb6dd41 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 20 Aug 2023 13:21:59 +0200 Subject: Make string value of enums final --- .../skyblock/tabhud/screenbuilder/pipeline/AlignStage.java | 2 +- .../skyblock/tabhud/screenbuilder/pipeline/CollideStage.java | 2 +- .../skyblock/tabhud/screenbuilder/pipeline/PlaceStage.java | 5 ++--- .../skyblock/tabhud/screenbuilder/pipeline/StackStage.java | 4 ++-- .../me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java | 2 +- 5 files changed, 7 insertions(+), 8 deletions(-) (limited to 'src/main/java') 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 e0ecbab0..74ebed64 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 @@ -23,7 +23,7 @@ public class AlignStage extends PipelineStage { LEFT("left"), RIGHT("right"); - private String str; + private final String str; private AlignReference(String d) { this.str = d; 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 5f4cb1c9..30031c93 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 @@ -17,7 +17,7 @@ public class CollideStage extends PipelineStage { TOP("top"), BOT("bot"); - private String str; + private final String str; private CollideDirection(String d) { this.str = d; 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 7f3dcd4b..31a27001 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 @@ -20,10 +20,9 @@ public class PlaceStage extends PipelineStage { TRCORNER("cornerTopRight"), TLCORNER("cornerTopLeft"), BRCORNER("cornerBotRight"), - BLCORNER("cornerBotLeft"), - ; + BLCORNER("cornerBotLeft"); - private String str; + private final String str; private PlaceLocation(String d) { this.str = d; 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 d861b5b8..b32a3cca 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 @@ -15,7 +15,7 @@ public class StackStage extends PipelineStage { HORIZONTAL("horizontal"), VERTICAL("vertical"); - private String str; + private final String str; private StackDirection(String d) { this.str = d; @@ -38,7 +38,7 @@ public class StackStage extends PipelineStage { RIGHT("right"), CENTER("center"); - private String str; + private final String str; private StackAlign(String d) { this.str = d; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java index deadaa7d..e6aa0336 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java @@ -29,7 +29,7 @@ public class PlayerLocator { DARK_AUCTION("dark_auction"), UNKNOWN("unknown"); - public String internal; + public final String internal; private Location(String i) { // as used internally by the mod, e.g. in the json -- cgit From 82421e8ffe95290973209c11116597c2965dedd9 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 20 Aug 2023 15:53:45 +0200 Subject: Update a comment --- src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java') 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 8e9f0b26..6ac8fa6c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java @@ -138,7 +138,7 @@ public class DwarvenHud { }); } - // steamroller tactics to get visibility from outside classes (CommsWidget) + // steamroller tactics to get visibility from outside classes (HudCommsWidget) public record Commission(String commission, String progression) { } } \ No newline at end of file -- cgit From 4dbcd98640bf3c50fbd0961cb66d33c57ac4a6d7 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Mon, 21 Aug 2023 00:05:24 +0800 Subject: Refactor code --- .../tabhud/screenbuilder/ScreenBuilder.java | 45 ++++++------- .../tabhud/screenbuilder/ScreenMaster.java | 22 +++---- .../tabhud/screenbuilder/pipeline/AlignStage.java | 46 +++++--------- .../screenbuilder/pipeline/CollideStage.java | 24 +++---- .../tabhud/screenbuilder/pipeline/PlaceStage.java | 42 ++++++------ .../tabhud/screenbuilder/pipeline/StackStage.java | 30 ++++----- .../skyblock/tabhud/util/PlayerListMgr.java | 4 +- .../skyblock/tabhud/util/PlayerLocator.java | 74 +++++++++------------- .../tabhud/widget/DungeonPlayerWidget.java | 2 +- .../skyblock/tabhud/widget/EventWidget.java | 2 +- .../skyblock/tabhud/widget/ForgeWidget.java | 14 ++-- .../skyblock/tabhud/widget/IslandOwnersWidget.java | 4 +- .../skyblock/tabhud/widget/VolcanoWidget.java | 16 ++--- .../skyblocker/skyblock/tabhud/widget/Widget.java | 8 +-- .../tabhud/widget/component/Component.java | 2 +- .../tabhud/widget/component/ProgressComponent.java | 22 +++---- .../tabhud/widget/component/TableComponent.java | 6 +- .../skyblock/tabhud/widget/hud/HudCommsWidget.java | 4 +- .../tabhud/widget/rift/RiftProgressWidget.java | 2 +- 19 files changed, 159 insertions(+), 210 deletions(-) (limited to 'src/main/java') 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 76b675ce..084a6ffd 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 @@ -28,21 +28,21 @@ import net.minecraft.util.Identifier; public class ScreenBuilder { // layout pipeline - private ArrayList layoutPipeline = new ArrayList<>(); + private final ArrayList layoutPipeline = new ArrayList<>(); // all widget instances this builder knows - private ArrayList instances = new ArrayList<>(); + private final ArrayList instances = new ArrayList<>(); // maps alias -> widget instance - private HashMap objectMap = new HashMap<>(); + private final HashMap objectMap = new HashMap<>(); - private String builderName; + private final String builderName; /** * Create a ScreenBuilder from a json. */ public ScreenBuilder(Identifier ident) { - try (BufferedReader reader = MinecraftClient.getInstance().getResourceManager().openAsReader(ident);) { + try (BufferedReader reader = MinecraftClient.getInstance().getResourceManager().openAsReader(ident)) { this.builderName = ident.getPath(); JsonObject json = JsonParser.parseReader(reader).getAsJsonObject(); @@ -79,23 +79,23 @@ public class ScreenBuilder { // do widgets that require args the normal way JsonElement arg; switch (name) { - case "EventWidget": + case "EventWidget" -> { return new EventWidget(widget.get("inGarden").getAsBoolean()); - - case "DungeonPlayerWidget": + } + case "DungeonPlayerWidget" -> { return new DungeonPlayerWidget(widget.get("player").getAsInt()); - - case "ErrorWidget": + } + case "ErrorWidget" -> { arg = widget.get("text"); if (arg == null) { return new ErrorWidget(); } else { return new ErrorWidget(arg.getAsString()); } - - case "Widget": + } + case "Widget" -> // clown case sanity check. don't instantiate the superclass >:| - throw new NoSuchElementException(builderName + "[ERROR]: No such Widget type \"Widget\"!"); + throw new NoSuchElementException(builderName + "[ERROR]: No such Widget type \"Widget\"!"); } // reflect something together for the "normal" ones. @@ -143,18 +143,13 @@ public class ScreenBuilder { 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); - default: - throw new NoSuchElementException("No such op " + op + " as requested by " + this.builderName); - } + return switch (op) { + case "place" -> new PlaceStage(this, descr); + case "stack" -> new StackStage(this, descr); + case "align" -> new AlignStage(this, descr); + case "collideAgainst" -> new CollideStage(this, descr); + default -> throw new NoSuchElementException("No such op " + op + " as requested by " + this.builderName); + }; } /** 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 165e875d..f771ce83 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 @@ -7,15 +7,11 @@ import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline.PipelineStage; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerLocator; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; import net.fabricmc.fabric.api.resource.ResourceManagerHelper; import net.fabricmc.fabric.api.resource.ResourcePackActivationType; import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener; @@ -33,9 +29,9 @@ public class ScreenMaster { private static final int VERSION = 1; - private static HashMap standardMap = new HashMap<>(); - private static HashMap screenAMap = new HashMap<>(); - private static HashMap screenBMap = new HashMap<>(); + private static final HashMap standardMap = new HashMap<>(); + private static final HashMap screenAMap = new HashMap<>(); + private static final HashMap screenBMap = new HashMap<>(); /** * Load a screen mapping from an identifier @@ -49,12 +45,10 @@ public class ScreenMaster { location = location.replace(".json", ""); 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); + switch (screenType) { + case "standard" -> standardMap.put(location, sb); + case "screen_a" -> screenAMap.put(location, sb); + case "screen_b" -> screenBMap.put(location, sb); } } @@ -117,7 +111,7 @@ public class ScreenMaster { .entrySet()) { try (BufferedReader reader = MinecraftClient.getInstance().getResourceManager() - .openAsReader(entry.getKey());) { + .openAsReader(entry.getKey())) { JsonObject json = JsonParser.parseReader(reader).getAsJsonObject(); if (json.get("format_version").getAsInt() != VERSION) { throw new IllegalStateException(String.format("Resource pack isn't compatible! Expected version %d, got %d", VERSION, json.get("format_version").getAsInt())); 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 74ebed64..76789a4c 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 @@ -25,7 +25,7 @@ public class AlignStage extends PipelineStage { private final String str; - private AlignReference(String d) { + AlignReference(String d) { this.str = d; } @@ -39,11 +39,11 @@ public class AlignStage extends PipelineStage { } } - private AlignReference reference; + private final AlignReference reference; public AlignStage(ScreenBuilder builder, JsonObject descr) { this.reference = AlignReference.parse(descr.get("reference").getAsString()); - this.primary = new ArrayList(descr.getAsJsonArray("apply_to") + this.primary = new ArrayList<>(descr.getAsJsonArray("apply_to") .asList() .stream() .map(x -> builder.getInstance(x.getAsString())) @@ -54,40 +54,28 @@ public class AlignStage extends PipelineStage { int wHalf, hHalf; for (Widget wid : primary) { switch (this.reference) { - case HORICENT: - wid.setX((screenW - wid.getWidth()) / 2); - break; - case VERTCENT: - wid.setY((screenH - wid.getHeight()) / 2); - break; - case LEFTCENT: + case HORICENT -> wid.setX((screenW - wid.getWidth()) / 2); + case VERTCENT -> wid.setY((screenH - wid.getHeight()) / 2); + case LEFTCENT -> { wHalf = screenW / 2; wid.setX(wHalf - ScreenConst.WIDGET_PAD_HALF - wid.getWidth()); - break; - case RIGHTCENT: + } + case RIGHTCENT -> { wHalf = screenW / 2; wid.setX(wHalf + ScreenConst.WIDGET_PAD_HALF); - break; - case TOPCENT: + } + case TOPCENT -> { hHalf = screenH / 2; wid.setY(hHalf - ScreenConst.WIDGET_PAD_HALF - wid.getHeight()); - break; - case BOTCENT: + } + case BOTCENT -> { hHalf = screenH / 2; wid.setY(hHalf + ScreenConst.WIDGET_PAD_HALF); - break; - case TOP: - wid.setY(ScreenConst.getScreenPad()); - break; - case BOT: - wid.setY(screenH - wid.getHeight() - ScreenConst.getScreenPad()); - break; - case LEFT: - wid.setX(ScreenConst.getScreenPad()); - break; - case RIGHT: - wid.setX(screenW - wid.getWidth() - ScreenConst.getScreenPad()); - break; + } + case TOP -> wid.setY(ScreenConst.getScreenPad()); + case BOT -> wid.setY(screenH - wid.getHeight() - ScreenConst.getScreenPad()); + case LEFT -> wid.setX(ScreenConst.getScreenPad()); + case RIGHT -> wid.setX(screenW - wid.getWidth() - ScreenConst.getScreenPad()); } } } 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 30031c93..b6a5f789 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 @@ -19,7 +19,7 @@ public class CollideStage extends PipelineStage { private final String str; - private CollideDirection(String d) { + CollideDirection(String d) { this.str = d; } @@ -33,16 +33,16 @@ public class CollideStage extends PipelineStage { } } - private CollideDirection direction; + private final CollideDirection direction; public CollideStage(ScreenBuilder builder, JsonObject descr) { this.direction = CollideDirection.parse(descr.get("direction").getAsString()); - this.primary = new ArrayList(descr.getAsJsonArray("widgets") + this.primary = new ArrayList<>(descr.getAsJsonArray("widgets") .asList() .stream() .map(x -> builder.getInstance(x.getAsString())) .toList()); - this.secondary = new ArrayList(descr.getAsJsonArray("colliders") + this.secondary = new ArrayList<>(descr.getAsJsonArray("colliders") .asList() .stream() .map(x -> builder.getInstance(x.getAsString())) @@ -51,18 +51,10 @@ public class CollideStage extends PipelineStage { public void run(int screenW, int screenH) { switch (this.direction) { - case LEFT: - primary.forEach(w -> collideAgainstL(screenW, w)); - break; - case RIGHT: - primary.forEach(w -> collideAgainstR(screenW, w)); - break; - case TOP: - primary.forEach(w -> collideAgainstT(screenH, w)); - break; - case BOT: - primary.forEach(w -> collideAgainstB(screenH, w)); - break; + case LEFT -> primary.forEach(w -> collideAgainstL(screenW, w)); + case RIGHT -> primary.forEach(w -> collideAgainstR(screenW, w)); + case TOP -> primary.forEach(w -> collideAgainstT(screenH, w)); + case BOT -> primary.forEach(w -> collideAgainstB(screenH, w)); } } 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 31a27001..a950f8f2 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 @@ -24,7 +24,7 @@ public class PlaceStage extends PipelineStage { private final String str; - private PlaceLocation(String d) { + PlaceLocation(String d) { this.str = d; } @@ -38,11 +38,11 @@ public class PlaceStage extends PipelineStage { } } - private PlaceLocation where; + private final PlaceLocation where; public PlaceStage(ScreenBuilder builder, JsonObject descr) { this.where = PlaceLocation.parse(descr.get("where").getAsString()); - this.primary = new ArrayList(descr.getAsJsonArray("apply_to") + this.primary = new ArrayList<>(descr.getAsJsonArray("apply_to") .asList() .stream() .map(x -> builder.getInstance(x.getAsString())) @@ -53,42 +53,42 @@ public class PlaceStage extends PipelineStage { public void run(int screenW, int screenH) { Widget wid = primary.get(0); switch (where) { - case CENTER: + case CENTER -> { wid.setX((screenW - wid.getWidth()) / 2); wid.setY((screenH - wid.getHeight()) / 2); - break; - case TOPCENT: + } + case TOPCENT -> { wid.setX((screenW - wid.getWidth()) / 2); wid.setY(ScreenConst.getScreenPad()); - break; - case BOTCENT: + } + case BOTCENT -> { wid.setX((screenW - wid.getWidth()) / 2); wid.setY((screenH - wid.getHeight()) - ScreenConst.getScreenPad()); - break; - case LEFTCENT: + } + case LEFTCENT -> { wid.setX(ScreenConst.getScreenPad()); wid.setY((screenH - wid.getHeight()) / 2); - break; - case RIGHTCENT: + } + case RIGHTCENT -> { wid.setX((screenW - wid.getWidth()) - ScreenConst.getScreenPad()); wid.setY((screenH - wid.getHeight()) / 2); - break; - case TLCORNER: + } + case TLCORNER -> { wid.setX(ScreenConst.getScreenPad()); wid.setY(ScreenConst.getScreenPad()); - break; - case TRCORNER: + } + case TRCORNER -> { wid.setX((screenW - wid.getWidth()) - ScreenConst.getScreenPad()); wid.setY(ScreenConst.getScreenPad()); - break; - case BLCORNER: + } + case BLCORNER -> { wid.setX(ScreenConst.getScreenPad()); wid.setY((screenH - wid.getHeight()) - ScreenConst.getScreenPad()); - break; - case BRCORNER: + } + case BRCORNER -> { wid.setX((screenW - wid.getWidth()) - ScreenConst.getScreenPad()); wid.setY((screenH - wid.getHeight()) - ScreenConst.getScreenPad()); - break; + } } } } \ 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 index b32a3cca..5eb575c3 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 @@ -17,7 +17,7 @@ public class StackStage extends PipelineStage { private final String str; - private StackDirection(String d) { + StackDirection(String d) { this.str = d; } @@ -40,7 +40,7 @@ public class StackStage extends PipelineStage { private final String str; - private StackAlign(String d) { + StackAlign(String d) { this.str = d; } @@ -54,13 +54,13 @@ public class StackStage extends PipelineStage { } } - private StackDirection direction; - private StackAlign align; + private final StackDirection direction; + private final StackAlign align; public StackStage(ScreenBuilder builder, JsonObject descr) { this.direction = StackDirection.parse(descr.get("direction").getAsString()); this.align = StackAlign.parse(descr.get("align").getAsString()); - this.primary = new ArrayList(descr.getAsJsonArray("apply_to") + this.primary = new ArrayList<>(descr.getAsJsonArray("apply_to") .asList() .stream() .map(x -> builder.getInstance(x.getAsString())) @@ -69,12 +69,8 @@ public class StackStage extends PipelineStage { public void run(int screenW, int screenH) { switch (this.direction) { - case HORIZONTAL: - stackWidgetsHoriz(screenW); - break; - case VERTICAL: - stackWidgetsVert(screenH); - break; + case HORIZONTAL -> stackWidgetsHoriz(screenW); + case VERTICAL -> stackWidgetsVert(screenH); } } @@ -86,9 +82,9 @@ public class StackStage extends PipelineStage { int y = switch (this.align) { - case TOP -> y = ScreenConst.getScreenPad(); - case BOT -> y = (screenH - compHeight) - ScreenConst.getScreenPad(); - default -> y = (screenH - compHeight) / 2; + case TOP -> ScreenConst.getScreenPad(); + case BOT -> (screenH - compHeight) - ScreenConst.getScreenPad(); + default -> (screenH - compHeight) / 2; }; for (Widget wid : primary) { @@ -106,9 +102,9 @@ public class StackStage extends PipelineStage { int x = switch (this.align) { - case LEFT-> x = ScreenConst.getScreenPad(); - case RIGHT -> x = (screenW - compWidth) - ScreenConst.getScreenPad(); - default -> x = (screenW - compWidth) / 2; + case LEFT -> ScreenConst.getScreenPad(); + case RIGHT -> (screenW - compWidth) - ScreenConst.getScreenPad(); + default -> (screenW - compWidth) / 2; }; for (Widget wid : primary) { 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 30cc242e..7b35bcce 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 @@ -94,7 +94,7 @@ public class PlayerListMgr { return null; } String str = txt.getString().trim(); - if (str.length() == 0) { + if (str.isEmpty()) { return null; } return str; @@ -144,7 +144,7 @@ public class PlayerListMgr { } // Avoid returning an empty component - Rift advertisements needed this - if (newText.getString().length() == 0) { + if (newText.getString().isEmpty()) { return null; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java index e6aa0336..11c9d860 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java @@ -7,7 +7,7 @@ import me.xmrvizzy.skyblocker.utils.Utils; */ public class PlayerLocator { - public static enum Location { + public enum Location { DUNGEON("dungeon"), GUEST_ISLAND("guest_island"), HOME_ISLAND("home_island"), @@ -31,7 +31,7 @@ public class PlayerLocator { public final String internal; - private Location(String i) { + Location(String i) { // as used internally by the mod, e.g. in the json this.internal = i; } @@ -44,60 +44,44 @@ public class PlayerLocator { return Location.UNKNOWN; } - String areaDesciptor = PlayerListMgr.strAt(41); + String areaDescriptor = PlayerListMgr.strAt(41); - if (areaDesciptor == null || areaDesciptor.length() < 6) { + if (areaDescriptor == null || areaDescriptor.length() < 6) { return Location.UNKNOWN; } - if (areaDesciptor.startsWith("Dungeon")) { + if (areaDescriptor.startsWith("Dungeon")) { return Location.DUNGEON; } - switch (areaDesciptor.substring(6)) { - case "Private Island": + return switch (areaDescriptor.substring(6)) { + case "Private Island" -> { String islandType = PlayerListMgr.strAt(44); if (islandType == null) { - return Location.UNKNOWN; + yield Location.UNKNOWN; } else if (islandType.endsWith("Guest")) { - return Location.GUEST_ISLAND; + yield Location.GUEST_ISLAND; } else { - return Location.HOME_ISLAND; + yield Location.HOME_ISLAND; } - case "Crimson Isle": - return Location.CRIMSON_ISLE; - case "Dungeon Hub": - return Location.DUNGEON_HUB; - case "The Farming Islands": - return Location.FARMING_ISLAND; - case "The Park": - return Location.PARK; - case "Dwarven Mines": - return Location.DWARVEN_MINES; - case "Crystal Hollows": - return Location.CRYSTAL_HOLLOWS; - case "The End": - return Location.END; - case "Gold Mine": - return Location.GOLD_MINE; - case "Deep Caverns": - return Location.DEEP_CAVERNS; - case "Hub": - return Location.HUB; - case "Spider's Den": - return Location.SPIDER_DEN; - case "Jerry's Workshop": - return Location.JERRY; - case "Garden": - return Location.GARDEN; - case "Instanced": - return Location.INSTANCED; - case "The Rift": - return Location.THE_RIFT; - case "Dark Auction": - return Location.DARK_AUCTION; - default: - return Location.UNKNOWN; - } + } + case "Crimson Isle" -> Location.CRIMSON_ISLE; + case "Dungeon Hub" -> Location.DUNGEON_HUB; + case "The Farming Islands" -> Location.FARMING_ISLAND; + case "The Park" -> Location.PARK; + case "Dwarven Mines" -> Location.DWARVEN_MINES; + case "Crystal Hollows" -> Location.CRYSTAL_HOLLOWS; + case "The End" -> Location.END; + case "Gold Mine" -> Location.GOLD_MINE; + case "Deep Caverns" -> Location.DEEP_CAVERNS; + case "Hub" -> Location.HUB; + case "Spider's Den" -> Location.SPIDER_DEN; + case "Jerry's Workshop" -> Location.JERRY; + case "Garden" -> Location.GARDEN; + case "Instanced" -> Location.INSTANCED; + case "The Rift" -> Location.THE_RIFT; + case "Dark Auction" -> Location.DARK_AUCTION; + default -> Location.UNKNOWN; + }; } } 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 e565bd8f..2ba0c0cc 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,7 +45,7 @@ public class DungeonPlayerWidget extends Widget { MSGS.add("More is better!"); } - private int player; + private final int player; // title needs to be changeable here public DungeonPlayerWidget(int player) { 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 b3563f1b..7d07ad75 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,7 +11,7 @@ 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; + private final boolean isInGarden; public EventWidget(boolean isInGarden) { super(TITLE, Formatting.YELLOW.getColorValue()); 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 96b85fef..ed87d496 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 @@ -48,22 +48,22 @@ public class ForgeWidget extends Widget { Text l1, l2; switch (fstr.substring(3)) { - case "LOCKED": + case "LOCKED" -> { l1 = Text.literal("Locked").formatted(Formatting.RED); l2 = switch (slot) { case 3 -> Text.literal("Needs HotM 3").formatted(Formatting.GRAY); case 4 -> Text.literal("Needs HotM 4").formatted(Formatting.GRAY); case 5 -> Text.literal("Needs PotM 2").formatted(Formatting.GRAY); default -> - Text.literal("This message should not appear").formatted(Formatting.RED, Formatting.BOLD); + Text.literal("This message should not appear").formatted(Formatting.RED, Formatting.BOLD); }; c = new IcoFatTextComponent(Ico.BARRIER, l1, l2); - break; - case "EMPTY": + } + case "EMPTY" -> { l1 = Text.literal("Empty").formatted(Formatting.GRAY); c = new IcoTextComponent(Ico.FURNACE, l1); - break; - default: + } + default -> { String[] parts = fstr.split(": "); if (parts.length != 2) { c = new IcoFatTextComponent(); @@ -72,7 +72,7 @@ public class ForgeWidget extends Widget { l2 = Text.literal("Done in: ").formatted(Formatting.GRAY).append(Text.literal(parts[1]).formatted(Formatting.WHITE)); c = new IcoFatTextComponent(Ico.FIRE, l1, l2); } - break; + } } this.addComponent(c); } 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 a978654f..2e8e2c40 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 @@ -37,8 +37,8 @@ public class IslandOwnersWidget extends Widget { break; } - String name = null, lastseen = null; - Formatting format = null; + String name, lastseen; + Formatting format; if (m.group("nameA") != null) { name = m.group("nameA"); lastseen = m.group("lastseen"); 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 d0e01590..90f947ba 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 @@ -22,21 +22,21 @@ public class VolcanoWidget extends Widget { static { BOOM_TYPE.put("INACTIVE", - new Pair(new ItemStack(Items.BARRIER), Formatting.DARK_GRAY)); + new Pair<>(new ItemStack(Items.BARRIER), Formatting.DARK_GRAY)); BOOM_TYPE.put("CHILL", - new Pair(new ItemStack(Items.ICE), Formatting.AQUA)); + new Pair<>(new ItemStack(Items.ICE), Formatting.AQUA)); BOOM_TYPE.put("LOW", - new Pair(new ItemStack(Items.FLINT_AND_STEEL), Formatting.GRAY)); + new Pair<>(new ItemStack(Items.FLINT_AND_STEEL), Formatting.GRAY)); BOOM_TYPE.put("DISRUPTIVE", - new Pair(new ItemStack(Items.CAMPFIRE), Formatting.WHITE)); + new Pair<>(new ItemStack(Items.CAMPFIRE), Formatting.WHITE)); BOOM_TYPE.put("MEDIUM", - new Pair(new ItemStack(Items.LAVA_BUCKET), Formatting.YELLOW)); + new Pair<>(new ItemStack(Items.LAVA_BUCKET), Formatting.YELLOW)); BOOM_TYPE.put("HIGH", - new Pair(new ItemStack(Items.FIRE_CHARGE), Formatting.GOLD)); + new Pair<>(new ItemStack(Items.FIRE_CHARGE), Formatting.GOLD)); BOOM_TYPE.put("EXPLOSIVE", - new Pair(new ItemStack(Items.TNT), Formatting.RED)); + new Pair<>(new ItemStack(Items.TNT), Formatting.RED)); BOOM_TYPE.put("CATACLYSMIC", - new Pair(new ItemStack(Items.SKELETON_SKULL), Formatting.DARK_RED)); + new Pair<>(new ItemStack(Items.SKELETON_SKULL), Formatting.DARK_RED)); } public VolcanoWidget() { 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 3e037256..bca67b70 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 @@ -25,13 +25,13 @@ import net.minecraft.util.Formatting; */ public abstract class Widget { - private ArrayList components = new ArrayList<>(); + private final ArrayList components = new ArrayList<>(); private int w = 0, h = 0; private int x = 0, y = 0; - private int color; - private Text title; + private final int color; + private final Text title; - private static TextRenderer txtRend = MinecraftClient.getInstance().textRenderer; + private static final TextRenderer txtRend = MinecraftClient.getInstance().textRenderer; static final int BORDER_SZE_N = txtRend.fontHeight + 4; static final int BORDER_SZE_S = 4; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java index 57e26ab2..118d3cfe 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java @@ -13,7 +13,7 @@ public abstract class Component { public static final int PAD_S = 2; public static final int PAD_L = 4; - static TextRenderer txtRend = MinecraftClient.getInstance().textRenderer; + static final TextRenderer txtRend = MinecraftClient.getInstance().textRenderer; // these should always be the content dimensions without any padding. int width, height; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java index a7cc8d12..90e210e9 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java @@ -19,25 +19,25 @@ public class ProgressComponent extends Component { private static final int ICO_OFFS = 4; private static final int COL_BG_BAR = 0xf0101010; - private ItemStack ico; - private Text desc, bar; - private float pcnt; - private int color; - private int barW; + private final ItemStack ico; + private final Text desc, bar; + private final float pcnt; + private final int color; + private final int barW; public ProgressComponent(ItemStack ico, Text d, Text b, float pcnt, int color) { - this.ico = (ico == null) ? Ico.BARRIER : ico; - this.desc = d; - this.bar = b; - this.color = 0xff000000 | color; - this.pcnt = pcnt; - if (d == null || b == null) { this.ico = Ico.BARRIER; this.desc = Text.literal("No data").formatted(Formatting.GRAY); this.bar = Text.literal("---").formatted(Formatting.GRAY); this.pcnt = 100f; this.color = 0xff000000 | Formatting.DARK_GRAY.getColorValue(); + } else { + this.ico = (ico == null) ? Ico.BARRIER : ico; + this.desc = d; + this.bar = b; + this.pcnt = pcnt; + this.color = 0xff000000 | color; } this.barW = BAR_WIDTH; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/TableComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/TableComponent.java index 30287dc0..850bbb0d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/TableComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/TableComponent.java @@ -8,9 +8,9 @@ import net.minecraft.client.gui.DrawContext; */ public class TableComponent extends Component { - private Component[][] comps; - private int color; - private int cols, rows; + private final Component[][] comps; + private final int color; + private final int cols, rows; private int cellW, cellH; public TableComponent(int w, int h, int col) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java index ab8546cc..88d40891 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java @@ -29,8 +29,8 @@ public class HudCommsWidget extends Widget { // 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(); - public static HudCommsWidget INSTANCE_CFG = new HudCommsWidget(); + public static final HudCommsWidget INSTANCE = new HudCommsWidget(); + public static final HudCommsWidget INSTANCE_CFG = 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! 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 ea67a309..375a41b9 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 @@ -36,7 +36,7 @@ public class RiftProgressWidget extends Widget { boolean hasTimecharms = false; boolean hasEnigmaSouls = false; - int montezumaPos = 0; + int montezumaPos; // Check each position to see what is or isn't there so we don't try adding // invalid components -- cgit From 53ab59cb82a05e887b12645383fb740f7dd3eba5 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Thu, 24 Aug 2023 20:26:16 +0200 Subject: Rename builtin resource pack --- .../tabhud/screenbuilder/ScreenMaster.java | 2 +- .../assets/skyblocker/tabhud/screen_a/default.json | 70 --------------------- .../assets/skyblocker/tabhud/screen_a/garden.json | 70 --------------------- .../assets/skyblocker/tabhud/screen_a/rift.json | 48 -------------- .../assets/skyblocker/tabhud/screen_a/unknown.json | 17 ----- .../assets/skyblocker/tabhud/screen_b/default.json | 17 ----- .../assets/skyblocker/tabhud/screen_b/dungeon.json | 54 ---------------- .../assets/skyblocker/tabhud/screen_b/garden.json | 29 --------- .../skyblocker/tabhud/screen_b/guest_island.json | 29 --------- .../skyblocker/tabhud/screen_b/home_island.json | 29 --------- .../assets/skyblocker/tabhud/screen_b/unknown.json | 17 ----- .../skyblocker/tabhud/standard/crimson_isle.json | 44 ------------- .../tabhud/standard/crystal_hollows.json | 44 ------------- .../assets/skyblocker/tabhud/standard/default.json | 17 ----- .../assets/skyblocker/tabhud/standard/dungeon.json | 69 -------------------- .../skyblocker/tabhud/standard/dungeon_hub.json | 30 --------- .../skyblocker/tabhud/standard/dwarven_mines.json | 44 ------------- .../skyblocker/tabhud/standard/farming_island.json | 29 --------- .../assets/skyblocker/tabhud/standard/garden.json | 44 ------------- .../skyblocker/tabhud/standard/guest_island.json | 17 ----- .../skyblocker/tabhud/standard/home_island.json | 29 --------- .../assets/skyblocker/tabhud/standard/hub.json | 29 --------- .../assets/skyblocker/tabhud/standard/park.json | 17 ----- .../assets/skyblocker/tabhud/standard/rift.json | 39 ------------ .../assets/skyblocker/tabhud/standard/unknown.json | 17 ----- .../assets/skyblocker/tabhud/version.json | 1 - .../resourcepacks/default_top/pack.mcmeta | 6 -- .../resources/resourcepacks/default_top/pack.png | Bin 844 -> 0 bytes .../assets/skyblocker/tabhud/screen_a/default.json | 70 +++++++++++++++++++++ .../assets/skyblocker/tabhud/screen_a/garden.json | 70 +++++++++++++++++++++ .../assets/skyblocker/tabhud/screen_a/rift.json | 48 ++++++++++++++ .../assets/skyblocker/tabhud/screen_a/unknown.json | 17 +++++ .../assets/skyblocker/tabhud/screen_b/default.json | 17 +++++ .../assets/skyblocker/tabhud/screen_b/dungeon.json | 54 ++++++++++++++++ .../assets/skyblocker/tabhud/screen_b/garden.json | 29 +++++++++ .../skyblocker/tabhud/screen_b/guest_island.json | 29 +++++++++ .../skyblocker/tabhud/screen_b/home_island.json | 29 +++++++++ .../assets/skyblocker/tabhud/screen_b/unknown.json | 17 +++++ .../skyblocker/tabhud/standard/crimson_isle.json | 44 +++++++++++++ .../tabhud/standard/crystal_hollows.json | 44 +++++++++++++ .../assets/skyblocker/tabhud/standard/default.json | 17 +++++ .../assets/skyblocker/tabhud/standard/dungeon.json | 69 ++++++++++++++++++++ .../skyblocker/tabhud/standard/dungeon_hub.json | 30 +++++++++ .../skyblocker/tabhud/standard/dwarven_mines.json | 44 +++++++++++++ .../skyblocker/tabhud/standard/farming_island.json | 29 +++++++++ .../assets/skyblocker/tabhud/standard/garden.json | 44 +++++++++++++ .../skyblocker/tabhud/standard/guest_island.json | 17 +++++ .../skyblocker/tabhud/standard/home_island.json | 29 +++++++++ .../assets/skyblocker/tabhud/standard/hub.json | 29 +++++++++ .../assets/skyblocker/tabhud/standard/park.json | 17 +++++ .../assets/skyblocker/tabhud/standard/rift.json | 39 ++++++++++++ .../assets/skyblocker/tabhud/standard/unknown.json | 17 +++++ .../assets/skyblocker/tabhud/version.json | 1 + .../resourcepacks/top_aligned/pack.mcmeta | 6 ++ .../resources/resourcepacks/top_aligned/pack.png | Bin 0 -> 844 bytes 55 files changed, 857 insertions(+), 857 deletions(-) delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/default.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/garden.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/rift.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/unknown.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/default.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/dungeon.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/garden.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/guest_island.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/home_island.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/unknown.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crimson_isle.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crystal_hollows.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/default.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon_hub.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dwarven_mines.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/farming_island.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/garden.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/guest_island.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/home_island.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/hub.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/park.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/rift.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/unknown.json delete mode 100644 src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/version.json delete mode 100644 src/main/resources/resourcepacks/default_top/pack.mcmeta delete mode 100644 src/main/resources/resourcepacks/default_top/pack.png create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/default.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/garden.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/rift.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/unknown.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/default.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/dungeon.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/garden.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/guest_island.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/home_island.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/unknown.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/crimson_isle.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/crystal_hollows.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/default.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/dungeon.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/dungeon_hub.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/dwarven_mines.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/farming_island.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/garden.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/guest_island.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/home_island.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/hub.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/park.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/rift.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/unknown.json create mode 100644 src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/version.json create mode 100644 src/main/resources/resourcepacks/top_aligned/pack.mcmeta create mode 100644 src/main/resources/resourcepacks/top_aligned/pack.png (limited to 'src/main/java') 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 f771ce83..194ab3d4 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 @@ -85,7 +85,7 @@ public class ScreenMaster { FabricLoader.getInstance() .getModContainer("skyblocker") .ifPresent(container -> ResourceManagerHelper.registerBuiltinResourcePack( - new Identifier("skyblocker", "default_top"), + new Identifier("skyblocker", "top_aligned"), container, ResourcePackActivationType.NORMAL)); diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/default.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/default.json deleted file mode 100644 index 2002591f..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/default.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "widgets":[ - { - "name": "SkillsWidget", - "alias": "sw" - }, - { - "name": "EventWidget", - "alias": "evw", - "inGarden": false - }, - { - "name": "UpgradeWidget", - "alias": "uw" - }, - { - "name": "ProfileWidget", - "alias": "pw" - }, - { - "name": "EffectWidget", - "alias": "efw" - }, - { - "name": "ElectionWidget", - "alias": "elw" - }, - { - "name": "CookieWidget", - "alias": "cw" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["sw", "evw", "uw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["pw", "efw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["elw", "cw"] - }, - { - "op": "align", - "reference": "horizontalCenter", - "apply_to": ["sw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "left", - "widgets": ["pw", "efw"], - "colliders": ["sw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "right", - "widgets": ["elw", "cw"], - "colliders": ["sw", "evw", "uw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/garden.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/garden.json deleted file mode 100644 index 39ee5b98..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/garden.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "widgets":[ - { - "name": "GardenSkillsWidget", - "alias": "gsw" - }, - { - "name": "EventWidget", - "alias": "evw", - "inGarden": true - }, - { - "name": "UpgradeWidget", - "alias": "uw" - }, - { - "name": "ProfileWidget", - "alias": "pw" - }, - { - "name": "EffectWidget", - "alias": "efw" - }, - { - "name": "JacobsContestWidget", - "alias": "jcw" - }, - { - "name": "CookieWidget", - "alias": "cw" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["gsw", "evw", "uw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["pw", "efw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["jcw", "cw"] - }, - { - "op": "align", - "reference": "horizontalCenter", - "apply_to": ["gsw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "left", - "widgets": ["pw", "efw"], - "colliders": ["gsw", "evw", "uw"] - }, - { - "op": "collideAgainst", - "direction": "right", - "widgets": ["jcw", "cw"], - "colliders": ["gsw", "evw", "uw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/rift.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/rift.json deleted file mode 100644 index d18efca8..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/rift.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "widgets":[ - { - "name": "RiftProfileWidget", - "alias": "profile" - }, - { - "name": "RiftStatsWidget", - "alias": "stats" - }, - { - "name": "ShenWidget", - "alias": "shen" - }, - { - "name": "CookieWidget", - "alias": "cookie" - }, - { - "name": "AdvertisementWidget", - "alias": "ad" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["stats", "ad"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["profile", "shen", "cookie"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["stats", "ad"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["profile", "shen", "cookie"] - } - ] -} \ No newline at end of file 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 deleted file mode 100644 index 280a46a8..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_a/unknown.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "widgets": [ - { - "name": "ErrorWidget", - "alias": "ew" - } - ], - "layout": [ - { - "op": "place", - "where": "centerTop", - "apply_to": [ - "ew" - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/default.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/default.json deleted file mode 100644 index e857ee6f..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/default.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "widgets": [ - { - "name": "PlayerListWidget", - "alias": "plw" - } - ], - "layout": [ - { - "op": "place", - "where": "centerTop", - "apply_to": [ - "plw" - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/dungeon.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/dungeon.json deleted file mode 100644 index 78fb6a25..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/dungeon.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "widgets":[ - { - "name": "DungeonPlayerWidget", - "alias": "dpw1", - "player": 1 - }, - { - "name": "DungeonPlayerWidget", - "alias": "dpw2", - "player": 2 - }, - { - "name": "DungeonPlayerWidget", - "alias": "dpw3", - "player": 3 - }, - { - "name": "DungeonPlayerWidget", - "alias": "dpw4", - "player": 4 - }, - { - "name": "DungeonPlayerWidget", - "alias": "dpw5", - "player": 5 - } - ], - "layout": [ - { - "op": "stack", - "direction": "horizontal", - "align": "center", - "apply_to": ["dpw1", "dpw2", "dpw3"] - }, - { - "op": "stack", - "direction": "horizontal", - "align": "center", - "apply_to": ["dpw4", "dpw5"] - }, - { - "op": "align", - "reference": "top", - "apply_to": ["dpw1", "dpw2", "dpw3"] - }, - { - "op": "collideAgainst", - "direction": "bot", - "widgets": ["dpw4", "dpw5"], - "colliders": ["dpw1", "dpw2", "dpw3"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/garden.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/garden.json deleted file mode 100644 index 64fe8de4..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/garden.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "widgets":[ - { - "name": "IslandGuestsWidget", - "alias": "igw" - }, - { - "name": "IslandSelfWidget", - "alias": "isw" - } - ], - "layout": [ - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["igw"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["isw"] - }, - { - "op": "align", - "reference": "top", - "apply_to": ["igw", "isw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/guest_island.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/guest_island.json deleted file mode 100644 index 98d9bd9e..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/guest_island.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "widgets":[ - { - "name": "IslandGuestsWidget", - "alias": "igw" - }, - { - "name": "IslandOwnersWidget", - "alias": "iow" - } - ], - "layout": [ - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["igw"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["iow"] - }, - { - "op": "align", - "reference": "top", - "apply_to": ["igw", "iow"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/home_island.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/home_island.json deleted file mode 100644 index 64fe8de4..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/home_island.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "widgets":[ - { - "name": "IslandGuestsWidget", - "alias": "igw" - }, - { - "name": "IslandSelfWidget", - "alias": "isw" - } - ], - "layout": [ - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["igw"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["isw"] - }, - { - "op": "align", - "reference": "top", - "apply_to": ["igw", "isw"] - } - ] -} \ No newline at end of file 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 deleted file mode 100644 index 280a46a8..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/screen_b/unknown.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "widgets": [ - { - "name": "ErrorWidget", - "alias": "ew" - } - ], - "layout": [ - { - "op": "place", - "where": "centerTop", - "apply_to": [ - "ew" - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crimson_isle.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crimson_isle.json deleted file mode 100644 index 07e00d5f..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crimson_isle.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "widgets":[ - { - "name": "ServerWidget", - "alias": "sw" - }, - { - "name": "ReputationWidget", - "alias": "rw" - }, - { - "name": "QuestWidget", - "alias": "qw" - }, - { - "name": "VolcanoWidget", - "alias": "vw" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["sw", "rw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["qw", "vw"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["sw", "rw"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["qw", "vw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crystal_hollows.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crystal_hollows.json deleted file mode 100644 index 45d3c188..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/crystal_hollows.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "widgets":[ - { - "name": "ServerWidget", - "alias": "sw" - }, - { - "name": "PowderWidget", - "alias": "pw" - }, - { - "name": "CommsWidget", - "alias": "cw" - }, - { - "name": "ForgeWidget", - "alias": "fw" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["sw", "cw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["fw", "pw"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["sw", "cw"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["pw", "fw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/default.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/default.json deleted file mode 100644 index c56e2bc2..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/default.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "widgets": [ - { - "name": "ServerWidget", - "alias": "sw" - } - ], - "layout": [ - { - "op": "place", - "where": "centerTop", - "apply_to": [ - "sw" - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon.json deleted file mode 100644 index 5fde959f..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "widgets":[ - { - "name": "DungeonDownedWidget", - "alias": "downed" - }, - { - "name": "DungeonDeathWidget", - "alias": "death" - }, - { - "name": "DungeonSecretWidget", - "alias": "secret" - }, - { - "name": "DungeonServerWidget", - "alias": "server" - }, - { - "name": "DungeonPuzzleWidget", - "alias": "puzzle" - }, - { - "name": "DungeonBuffWidget", - "alias": "buffs" - } - ], - "layout": [ - { - "op": "align", - "reference": "top", - "apply_to": ["death", "downed", "server", "secret"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["death", "buffs"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["server", "puzzle"] - }, - { - "op": "collideAgainst", - "direction": "left", - "widgets": ["downed"], - "colliders": ["death"] - }, - { - "op": "collideAgainst", - "direction": "right", - "widgets": ["secret"], - "colliders": ["server"] - }, - { - "op": "collideAgainst", - "direction": "bot", - "widgets": ["buffs"], - "colliders": ["death", "downed"] - }, - { - "op": "collideAgainst", - "direction": "bot", - "widgets": ["puzzle"], - "colliders": ["secret", "server"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon_hub.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon_hub.json deleted file mode 100644 index 9a926fab..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dungeon_hub.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "widgets":[ - { - "name": "ServerWidget", - "alias": "sw" - }, - { - "name": "EssenceWidget", - "alias": "ew" - } - ], - "layout": [ - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["sw"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["ew"] - }, - { - "op": "align", - "reference": "top", - "apply_to": ["sw", "ew"] - } - - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dwarven_mines.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dwarven_mines.json deleted file mode 100644 index 45d3c188..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/dwarven_mines.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "widgets":[ - { - "name": "ServerWidget", - "alias": "sw" - }, - { - "name": "PowderWidget", - "alias": "pw" - }, - { - "name": "CommsWidget", - "alias": "cw" - }, - { - "name": "ForgeWidget", - "alias": "fw" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["sw", "cw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["fw", "pw"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["sw", "cw"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["pw", "fw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/farming_island.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/farming_island.json deleted file mode 100644 index ca6c0d7d..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/farming_island.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "widgets":[ - { - "name": "ServerWidget", - "alias": "sw" - }, - { - "name": "TrapperWidget", - "alias": "tw" - } - ], - "layout": [ - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["sw"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["tw"] - }, - { - "op": "align", - "reference": "top", - "apply_to": ["sw", "tw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/garden.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/garden.json deleted file mode 100644 index 6a26ebaf..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/garden.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "widgets":[ - { - "name": "GardenServerWidget", - "alias": "gsw" - }, - { - "name": "ComposterWidget", - "alias": "cw" - }, - { - "name": "GardenVisitorsWidget", - "alias": "vw" - }, - { - "name": "CameraPositionWidget", - "alias": "cpw" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["gsw", "vw"] - }, - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["cw", "cpw"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["gsw", "vw"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["cw", "cpw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/guest_island.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/guest_island.json deleted file mode 100644 index 9c8cff77..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/guest_island.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "widgets": [ - { - "name": "GuestServerWidget", - "alias": "gsw" - } - ], - "layout": [ - { - "op": "place", - "where": "centerTop", - "apply_to": [ - "gsw" - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/home_island.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/home_island.json deleted file mode 100644 index e775d216..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/home_island.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "widgets":[ - { - "name": "IslandServerWidget", - "alias": "isw" - }, - { - "name": "MinionWidget", - "alias": "mw" - } - ], - "layout": [ - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["isw"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["mw"] - }, - { - "op": "align", - "reference": "top", - "apply_to": ["isw", "mw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/hub.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/hub.json deleted file mode 100644 index 37d77e98..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/hub.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "widgets":[ - { - "name": "ServerWidget", - "alias": "sw" - }, - { - "name": "FireSaleWidget", - "alias": "fsw" - } - ], - "layout": [ - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["sw"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["fsw"] - }, - { - "op": "align", - "reference": "top", - "apply_to": ["sw", "fsw"] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/park.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/park.json deleted file mode 100644 index c8151af9..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/park.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "widgets": [ - { - "name": "ParkServerWidget", - "alias": "psw" - } - ], - "layout": [ - { - "op": "place", - "where": "centerTop", - "apply_to": [ - "psw" - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/rift.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/rift.json deleted file mode 100644 index 87414cbb..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/rift.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "widgets":[ - { - "name": "RiftProgressWidget", - "alias": "rft" - }, - { - "name": "GoodToKnowWidget", - "alias": "gtk" - }, - { - "name": "RiftServerInfoWidget", - "alias": "si" - } - ], - "layout": [ - { - "op": "stack", - "direction": "vertical", - "align": "top", - "apply_to": ["si", "gtk"] - }, - { - "op": "align", - "reference": "top", - "apply_to": ["rft"] - }, - { - "op": "align", - "reference": "leftOfCenter", - "apply_to": ["si", "gtk"] - }, - { - "op": "align", - "reference": "rightOfCenter", - "apply_to": ["rft"] - } - ] -} \ No newline at end of file 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 deleted file mode 100644 index 280a46a8..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/standard/unknown.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "widgets": [ - { - "name": "ErrorWidget", - "alias": "ew" - } - ], - "layout": [ - { - "op": "place", - "where": "centerTop", - "apply_to": [ - "ew" - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/version.json b/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/version.json deleted file mode 100644 index 2fd60949..00000000 --- a/src/main/resources/resourcepacks/default_top/assets/skyblocker/tabhud/version.json +++ /dev/null @@ -1 +0,0 @@ -{ "format_version": 1 } \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/pack.mcmeta b/src/main/resources/resourcepacks/default_top/pack.mcmeta deleted file mode 100644 index 764d5396..00000000 --- a/src/main/resources/resourcepacks/default_top/pack.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pack": { - "pack_format": 15, - "description": "Alternative layout for Skyblocker's Fancy Tab-HUD" - } -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/default_top/pack.png b/src/main/resources/resourcepacks/default_top/pack.png deleted file mode 100644 index 04c17abf..00000000 Binary files a/src/main/resources/resourcepacks/default_top/pack.png and /dev/null differ diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/default.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/default.json new file mode 100644 index 00000000..2002591f --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/default.json @@ -0,0 +1,70 @@ +{ + "widgets":[ + { + "name": "SkillsWidget", + "alias": "sw" + }, + { + "name": "EventWidget", + "alias": "evw", + "inGarden": false + }, + { + "name": "UpgradeWidget", + "alias": "uw" + }, + { + "name": "ProfileWidget", + "alias": "pw" + }, + { + "name": "EffectWidget", + "alias": "efw" + }, + { + "name": "ElectionWidget", + "alias": "elw" + }, + { + "name": "CookieWidget", + "alias": "cw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["sw", "evw", "uw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["pw", "efw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["elw", "cw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["sw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "left", + "widgets": ["pw", "efw"], + "colliders": ["sw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "right", + "widgets": ["elw", "cw"], + "colliders": ["sw", "evw", "uw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/garden.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/garden.json new file mode 100644 index 00000000..39ee5b98 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/garden.json @@ -0,0 +1,70 @@ +{ + "widgets":[ + { + "name": "GardenSkillsWidget", + "alias": "gsw" + }, + { + "name": "EventWidget", + "alias": "evw", + "inGarden": true + }, + { + "name": "UpgradeWidget", + "alias": "uw" + }, + { + "name": "ProfileWidget", + "alias": "pw" + }, + { + "name": "EffectWidget", + "alias": "efw" + }, + { + "name": "JacobsContestWidget", + "alias": "jcw" + }, + { + "name": "CookieWidget", + "alias": "cw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["gsw", "evw", "uw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["pw", "efw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["jcw", "cw"] + }, + { + "op": "align", + "reference": "horizontalCenter", + "apply_to": ["gsw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "left", + "widgets": ["pw", "efw"], + "colliders": ["gsw", "evw", "uw"] + }, + { + "op": "collideAgainst", + "direction": "right", + "widgets": ["jcw", "cw"], + "colliders": ["gsw", "evw", "uw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/rift.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/rift.json new file mode 100644 index 00000000..d18efca8 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/rift.json @@ -0,0 +1,48 @@ +{ + "widgets":[ + { + "name": "RiftProfileWidget", + "alias": "profile" + }, + { + "name": "RiftStatsWidget", + "alias": "stats" + }, + { + "name": "ShenWidget", + "alias": "shen" + }, + { + "name": "CookieWidget", + "alias": "cookie" + }, + { + "name": "AdvertisementWidget", + "alias": "ad" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["stats", "ad"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["profile", "shen", "cookie"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["stats", "ad"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["profile", "shen", "cookie"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/unknown.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/unknown.json new file mode 100644 index 00000000..280a46a8 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_a/unknown.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "ErrorWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "ew" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/default.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/default.json new file mode 100644 index 00000000..e857ee6f --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/default.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "PlayerListWidget", + "alias": "plw" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "plw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/dungeon.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/dungeon.json new file mode 100644 index 00000000..78fb6a25 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/dungeon.json @@ -0,0 +1,54 @@ +{ + "widgets":[ + { + "name": "DungeonPlayerWidget", + "alias": "dpw1", + "player": 1 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw2", + "player": 2 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw3", + "player": 3 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw4", + "player": 4 + }, + { + "name": "DungeonPlayerWidget", + "alias": "dpw5", + "player": 5 + } + ], + "layout": [ + { + "op": "stack", + "direction": "horizontal", + "align": "center", + "apply_to": ["dpw1", "dpw2", "dpw3"] + }, + { + "op": "stack", + "direction": "horizontal", + "align": "center", + "apply_to": ["dpw4", "dpw5"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["dpw1", "dpw2", "dpw3"] + }, + { + "op": "collideAgainst", + "direction": "bot", + "widgets": ["dpw4", "dpw5"], + "colliders": ["dpw1", "dpw2", "dpw3"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/garden.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/garden.json new file mode 100644 index 00000000..64fe8de4 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/garden.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandSelfWidget", + "alias": "isw" + } + ], + "layout": [ + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["isw"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["igw", "isw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/guest_island.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/guest_island.json new file mode 100644 index 00000000..98d9bd9e --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/guest_island.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandOwnersWidget", + "alias": "iow" + } + ], + "layout": [ + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["iow"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["igw", "iow"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/home_island.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/home_island.json new file mode 100644 index 00000000..64fe8de4 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/home_island.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandGuestsWidget", + "alias": "igw" + }, + { + "name": "IslandSelfWidget", + "alias": "isw" + } + ], + "layout": [ + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["igw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["isw"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["igw", "isw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/unknown.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/unknown.json new file mode 100644 index 00000000..280a46a8 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/screen_b/unknown.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "ErrorWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "ew" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/crimson_isle.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/crimson_isle.json new file mode 100644 index 00000000..07e00d5f --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/crimson_isle.json @@ -0,0 +1,44 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "ReputationWidget", + "alias": "rw" + }, + { + "name": "QuestWidget", + "alias": "qw" + }, + { + "name": "VolcanoWidget", + "alias": "vw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["sw", "rw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["qw", "vw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["sw", "rw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["qw", "vw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/crystal_hollows.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/crystal_hollows.json new file mode 100644 index 00000000..45d3c188 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/crystal_hollows.json @@ -0,0 +1,44 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "PowderWidget", + "alias": "pw" + }, + { + "name": "CommsWidget", + "alias": "cw" + }, + { + "name": "ForgeWidget", + "alias": "fw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["sw", "cw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["fw", "pw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["sw", "cw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["pw", "fw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/default.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/default.json new file mode 100644 index 00000000..c56e2bc2 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/default.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "ServerWidget", + "alias": "sw" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "sw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/dungeon.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/dungeon.json new file mode 100644 index 00000000..5fde959f --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/dungeon.json @@ -0,0 +1,69 @@ +{ + "widgets":[ + { + "name": "DungeonDownedWidget", + "alias": "downed" + }, + { + "name": "DungeonDeathWidget", + "alias": "death" + }, + { + "name": "DungeonSecretWidget", + "alias": "secret" + }, + { + "name": "DungeonServerWidget", + "alias": "server" + }, + { + "name": "DungeonPuzzleWidget", + "alias": "puzzle" + }, + { + "name": "DungeonBuffWidget", + "alias": "buffs" + } + ], + "layout": [ + { + "op": "align", + "reference": "top", + "apply_to": ["death", "downed", "server", "secret"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["death", "buffs"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["server", "puzzle"] + }, + { + "op": "collideAgainst", + "direction": "left", + "widgets": ["downed"], + "colliders": ["death"] + }, + { + "op": "collideAgainst", + "direction": "right", + "widgets": ["secret"], + "colliders": ["server"] + }, + { + "op": "collideAgainst", + "direction": "bot", + "widgets": ["buffs"], + "colliders": ["death", "downed"] + }, + { + "op": "collideAgainst", + "direction": "bot", + "widgets": ["puzzle"], + "colliders": ["secret", "server"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/dungeon_hub.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/dungeon_hub.json new file mode 100644 index 00000000..9a926fab --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/dungeon_hub.json @@ -0,0 +1,30 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "EssenceWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["sw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["ew"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["sw", "ew"] + } + + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/dwarven_mines.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/dwarven_mines.json new file mode 100644 index 00000000..45d3c188 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/dwarven_mines.json @@ -0,0 +1,44 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "PowderWidget", + "alias": "pw" + }, + { + "name": "CommsWidget", + "alias": "cw" + }, + { + "name": "ForgeWidget", + "alias": "fw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["sw", "cw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["fw", "pw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["sw", "cw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["pw", "fw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/farming_island.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/farming_island.json new file mode 100644 index 00000000..ca6c0d7d --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/farming_island.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "TrapperWidget", + "alias": "tw" + } + ], + "layout": [ + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["sw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["tw"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["sw", "tw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/garden.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/garden.json new file mode 100644 index 00000000..6a26ebaf --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/garden.json @@ -0,0 +1,44 @@ +{ + "widgets":[ + { + "name": "GardenServerWidget", + "alias": "gsw" + }, + { + "name": "ComposterWidget", + "alias": "cw" + }, + { + "name": "GardenVisitorsWidget", + "alias": "vw" + }, + { + "name": "CameraPositionWidget", + "alias": "cpw" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["gsw", "vw"] + }, + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["cw", "cpw"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["gsw", "vw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["cw", "cpw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/guest_island.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/guest_island.json new file mode 100644 index 00000000..9c8cff77 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/guest_island.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "GuestServerWidget", + "alias": "gsw" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "gsw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/home_island.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/home_island.json new file mode 100644 index 00000000..e775d216 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/home_island.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "IslandServerWidget", + "alias": "isw" + }, + { + "name": "MinionWidget", + "alias": "mw" + } + ], + "layout": [ + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["isw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["mw"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["isw", "mw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/hub.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/hub.json new file mode 100644 index 00000000..37d77e98 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/hub.json @@ -0,0 +1,29 @@ +{ + "widgets":[ + { + "name": "ServerWidget", + "alias": "sw" + }, + { + "name": "FireSaleWidget", + "alias": "fsw" + } + ], + "layout": [ + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["sw"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["fsw"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["sw", "fsw"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/park.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/park.json new file mode 100644 index 00000000..c8151af9 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/park.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "ParkServerWidget", + "alias": "psw" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "psw" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/rift.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/rift.json new file mode 100644 index 00000000..87414cbb --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/rift.json @@ -0,0 +1,39 @@ +{ + "widgets":[ + { + "name": "RiftProgressWidget", + "alias": "rft" + }, + { + "name": "GoodToKnowWidget", + "alias": "gtk" + }, + { + "name": "RiftServerInfoWidget", + "alias": "si" + } + ], + "layout": [ + { + "op": "stack", + "direction": "vertical", + "align": "top", + "apply_to": ["si", "gtk"] + }, + { + "op": "align", + "reference": "top", + "apply_to": ["rft"] + }, + { + "op": "align", + "reference": "leftOfCenter", + "apply_to": ["si", "gtk"] + }, + { + "op": "align", + "reference": "rightOfCenter", + "apply_to": ["rft"] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/unknown.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/unknown.json new file mode 100644 index 00000000..280a46a8 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/standard/unknown.json @@ -0,0 +1,17 @@ +{ + "widgets": [ + { + "name": "ErrorWidget", + "alias": "ew" + } + ], + "layout": [ + { + "op": "place", + "where": "centerTop", + "apply_to": [ + "ew" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/version.json b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/version.json new file mode 100644 index 00000000..2fd60949 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/assets/skyblocker/tabhud/version.json @@ -0,0 +1 @@ +{ "format_version": 1 } \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/pack.mcmeta b/src/main/resources/resourcepacks/top_aligned/pack.mcmeta new file mode 100644 index 00000000..764d5396 --- /dev/null +++ b/src/main/resources/resourcepacks/top_aligned/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "pack_format": 15, + "description": "Alternative layout for Skyblocker's Fancy Tab-HUD" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/top_aligned/pack.png b/src/main/resources/resourcepacks/top_aligned/pack.png new file mode 100644 index 00000000..04c17abf Binary files /dev/null and b/src/main/resources/resourcepacks/top_aligned/pack.png differ -- cgit