From 9cbce39d68c1c766e20819101fbb803ad05e8fdc Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 2 Apr 2023 14:58:42 +0200 Subject: Merging SkyHyTab into Skyblocker: Initial commit Needs cleanup --- .../xmrvizzy/skyblocker/SkyblockerInitializer.java | 2 + .../skyblocker/config/SkyblockerConfig.java | 2 + .../skyblocker/mixin/PlayerListHudAccessor.java | 18 ++ .../skyblocker/mixin/PlayerListHudMixin.java | 70 ++++++ .../skyblocker/skyblock/tabhud/TabHud.java | 40 ++++ .../skyblock/tabhud/screens/DungeonHubScreen.java | 24 ++ .../tabhud/screens/DungeonPlayerScreen.java | 30 +++ .../skyblock/tabhud/screens/DungeonScreen.java | 37 +++ .../skyblock/tabhud/screens/EmptyScreen.java | 19 ++ .../tabhud/screens/FarmingServerScreen.java | 23 ++ .../skyblock/tabhud/screens/GardenScreen.java | 23 ++ .../skyblock/tabhud/screens/GenericInfoScreen.java | 51 +++++ .../tabhud/screens/GenericServerScreen.java | 19 ++ .../skyblock/tabhud/screens/GuestPlayerScreen.java | 23 ++ .../skyblock/tabhud/screens/GuestServerScreen.java | 19 ++ .../skyblock/tabhud/screens/HomePlayerScreen.java | 22 ++ .../skyblock/tabhud/screens/HomeServerScreen.java | 24 ++ .../skyblock/tabhud/screens/HubServerScreen.java | 23 ++ .../skyblock/tabhud/screens/MineServerScreen.java | 30 +++ .../skyblock/tabhud/screens/ParkServerScreen.java | 19 ++ .../skyblock/tabhud/screens/PlayerListScreen.java | 19 ++ .../skyblocker/skyblock/tabhud/screens/Screen.java | 250 +++++++++++++++++++++ .../skyblocker/skyblock/tabhud/util/Ico.java | 50 +++++ .../skyblocker/skyblock/tabhud/util/StrMan.java | 64 ++++++ .../skyblock/tabhud/widget/CommsWidget.java | 53 +++++ .../skyblock/tabhud/widget/ComposterWidget.java | 44 ++++ .../skyblock/tabhud/widget/CookieWidget.java | 33 +++ .../skyblock/tabhud/widget/DungeonDeathWidget.java | 53 +++++ .../tabhud/widget/DungeonDownedWidget.java | 42 ++++ .../tabhud/widget/DungeonPlayerWidget.java | 83 +++++++ .../tabhud/widget/DungeonPuzzleWidget.java | 51 +++++ .../tabhud/widget/DungeonSecretWidget.java | 35 +++ .../tabhud/widget/DungeonServerWidget.java | 56 +++++ .../skyblock/tabhud/widget/EffectWidget.java | 40 ++++ .../skyblock/tabhud/widget/ElectionWidget.java | 97 ++++++++ .../skyblock/tabhud/widget/EmptyWidget.java | 27 +++ .../skyblock/tabhud/widget/EssenceWidget.java | 48 ++++ .../skyblock/tabhud/widget/EventWidget.java | 33 +++ .../skyblock/tabhud/widget/FireSaleWidget.java | 56 +++++ .../skyblock/tabhud/widget/ForgeWidget.java | 60 +++++ .../skyblock/tabhud/widget/GardenServerWidget.java | 59 +++++ .../skyblock/tabhud/widget/GuestServerWidget.java | 41 ++++ .../skyblock/tabhud/widget/IslandGuestsWidget.java | 44 ++++ .../skyblock/tabhud/widget/IslandOwnersWidget.java | 47 ++++ .../skyblock/tabhud/widget/IslandSelfWidget.java | 40 ++++ .../skyblock/tabhud/widget/IslandServerWidget.java | 47 ++++ .../skyblock/tabhud/widget/MinionWidget.java | 135 +++++++++++ .../skyblock/tabhud/widget/ParkServerWidget.java | 42 ++++ .../skyblock/tabhud/widget/PlayerListWidget.java | 61 +++++ .../skyblock/tabhud/widget/PowderWidget.java | 35 +++ .../skyblock/tabhud/widget/ProfileWidget.java | 42 ++++ .../skyblock/tabhud/widget/ServerWidget.java | 40 ++++ .../skyblock/tabhud/widget/SkillsWidget.java | 63 ++++++ .../skyblock/tabhud/widget/TrapperWidget.java | 29 +++ .../skyblock/tabhud/widget/UpgradeWidget.java | 38 ++++ .../skyblocker/skyblock/tabhud/widget/Widget.java | 183 +++++++++++++++ .../tabhud/widget/component/Component.java | 29 +++ .../widget/component/IcoFatTextComponent.java | 30 +++ .../tabhud/widget/component/IcoTextComponent.java | 26 +++ .../widget/component/PlainTextComponent.java | 22 ++ .../tabhud/widget/component/PlayerComponent.java | 33 +++ .../tabhud/widget/component/ProgressComponent.java | 49 ++++ .../tabhud/widget/component/TableComponent.java | 53 +++++ 63 files changed, 2900 insertions(+) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonHubScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonPlayerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/EmptyScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/FarmingServerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericServerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GuestPlayerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GuestServerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HomePlayerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HomeServerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HubServerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/MineServerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ParkServerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlayerListScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/StrMan.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CommsWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ComposterWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CookieWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDeathWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDownedWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPuzzleWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonSecretWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonServerWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EffectWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ElectionWidget.java create 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/EssenceWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EventWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ForgeWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenServerWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GuestServerWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandGuestsWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandSelfWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandServerWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/MinionWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ParkServerWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PowderWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ProfileWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ServerWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/SkillsWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/TrapperWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/UpgradeWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/TableComponent.java (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java index 3d713727..c866ea01 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java @@ -9,6 +9,7 @@ import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup; import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; +import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; import me.xmrvizzy.skyblocker.utils.UpdateChecker; import net.fabricmc.api.ClientModInitializer; @@ -25,5 +26,6 @@ public class SkyblockerInitializer implements ClientModInitializer { ChatMessageListener.init(); UpdateChecker.init(); DiscordRPCManager.init(); + TabHud.init(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 21322c81..41ac7f2d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -125,6 +125,8 @@ public class SkyblockerConfig implements ConfigData { public final boolean enableUpdateNotification = true; public final boolean backpackPreviewWithoutShift = false; + public boolean tabHudEnabled = true; + @ConfigEntry.Gui.Excluded public String apiKey; diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java new file mode 100644 index 00000000..e96e4ede --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java @@ -0,0 +1,18 @@ +package me.xmrvizzy.skyblocker.mixin; + +import java.util.Comparator; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import net.minecraft.client.gui.hud.PlayerListHud; +import net.minecraft.client.network.PlayerListEntry; + +@Mixin(PlayerListHud.class) +public interface PlayerListHudAccessor { + + @Accessor("ENTRY_ORDERING") + public static Comparator getOrdering() { + throw new AssertionError(); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java new file mode 100644 index 00000000..36d4a375 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -0,0 +1,70 @@ +package me.xmrvizzy.skyblocker.mixin; + +import java.util.List; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +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.utils.Utils; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.hud.PlayerListHud; +import net.minecraft.client.network.ClientPlayNetworkHandler; +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.scoreboard.Scoreboard; +import net.minecraft.scoreboard.ScoreboardObjective; +import net.minecraft.text.Text; + +@Environment(EnvType.CLIENT) +@Mixin(PlayerListHud.class) +public class PlayerListHudMixin { + + @Shadow + private Text footer; + + boolean ok = true; + @Inject(at = @At("HEAD"), method = "render(Lnet/minecraft/client/util/math/MatrixStack;ILnet/minecraft/scoreboard/Scoreboard;Lnet/minecraft/scoreboard/ScoreboardObjective;)V", cancellable = true) + public void skyblocker$renderTabHud(MatrixStack ms, int scaledW, Scoreboard sb, ScoreboardObjective sbo, CallbackInfo info) { + + if (!Utils.isOnSkyblock) { + return; + } + + if (TabHud.defaultTgl.isPressed()) { + return; + } + + MinecraftClient client = MinecraftClient.getInstance(); + ClientPlayNetworkHandler nwH = client.getNetworkHandler(); + if (nwH == null) { + return; + } + + List list = nwH.getListedPlayerListEntries().stream().sorted(PlayerListHudAccessor.getOrdering()).toList(); + int w = scaledW; + int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); + + try { + + Screen screen = Screen.getCorrect(w, h, list, footer); + if (screen != null) { + screen.render(ms); + info.cancel(); + } + } catch (Exception e) { + e.printStackTrace(); + SkyblockerConfig.get().general.tabHudEnabled = false; + MinecraftClient.getInstance().player.sendMessage(Text.of("The tab HUD has crashed due to some unexpected text, see log! :(")); + } + + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java new file mode 100644 index 00000000..3cc75e00 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java @@ -0,0 +1,40 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud; + +import org.lwjgl.glfw.GLFW; + +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.util.InputUtil; + +public class TabHud { + + public static KeyBinding playerTgl; + public static KeyBinding genericTgl; + // public static KeyBinding mapTgl; + public static KeyBinding defaultTgl; + + public static void init() { + + playerTgl = KeyBindingHelper.registerKeyBinding( + new KeyBinding("key.skyhytab.playerTgl", + InputUtil.Type.KEYSYM, + GLFW.GLFW_KEY_LEFT_SHIFT, + "key.categories.skyblocker")); + genericTgl = KeyBindingHelper.registerKeyBinding( + new KeyBinding("key.tabhud.genericTgl", + InputUtil.Type.KEYSYM, + GLFW.GLFW_KEY_LEFT_ALT, + "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.tabhud.defaultTgl", + InputUtil.Type.KEYSYM, + GLFW.GLFW_KEY_B, + "key.categories.skyblocker")); + + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonHubScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonHubScreen.java new file mode 100644 index 00000000..4bd48f89 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonHubScreen.java @@ -0,0 +1,24 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EssenceWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class DungeonHubScreen extends Screen{ + + public DungeonHubScreen(int w, int h, List list, Text footer) { + super(w, h); + ServerWidget sw = new ServerWidget(list); + EssenceWidget ew = new EssenceWidget(list); + centerW(sw); + centerW(ew); + stackWidgetsH(sw, ew); + this.addWidget(ew); + this.addWidget(sw); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonPlayerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonPlayerScreen.java new file mode 100644 index 00000000..ce87a035 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonPlayerScreen.java @@ -0,0 +1,30 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonPlayerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class DungeonPlayerScreen extends Screen { + + public DungeonPlayerScreen(int w, int h, List ple, Text footer) { + super(w, h); + DungeonPlayerWidget dpw1 = new DungeonPlayerWidget(ple, 1); + DungeonPlayerWidget dpw2 = new DungeonPlayerWidget(ple, 2); + DungeonPlayerWidget dpw3 = new DungeonPlayerWidget(ple, 3); + DungeonPlayerWidget dpw4 = new DungeonPlayerWidget(ple, 4); + DungeonPlayerWidget dpw5 = new DungeonPlayerWidget(ple, 5); + + offCenterL(dpw1); + offCenterL(dpw2); + offCenterL(dpw3); + offCenterR(dpw4); + offCenterR(dpw5); + stackWidgetsH(dpw1, dpw2, dpw3); + stackWidgetsH(dpw4, dpw5); + addWidgets(dpw1, dpw2, dpw3, dpw4, dpw5); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonScreen.java new file mode 100644 index 00000000..bb80b01b --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonScreen.java @@ -0,0 +1,37 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +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.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class DungeonScreen extends Screen { + + public DungeonScreen(int w, int h, List ple, Text footer) { + super(w, h); + DungeonDownedWidget ddow = new DungeonDownedWidget(ple); + DungeonDeathWidget ddew = new DungeonDeathWidget(ple); + DungeonSecretWidget dscw = new DungeonSecretWidget(ple); + DungeonServerWidget dsrw = new DungeonServerWidget(ple); + DungeonPuzzleWidget dpuw = new DungeonPuzzleWidget(ple); + + offCenterL(ddow); + offCenterL(ddew); + offCenterL(dscw); + offCenterR(dsrw); + offCenterR(dpuw); + + stackWidgetsH(ddow, ddew, dscw); + stackWidgetsH(dsrw, dpuw); + + addWidgets(ddow, ddew, dscw, dsrw, dpuw); + + } + +} 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 new file mode 100644 index 00000000..07162834 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/EmptyScreen.java @@ -0,0 +1,19 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EmptyWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class EmptyScreen extends Screen { + + public EmptyScreen(int w, int h, List ple, Text footer) { + super(w, h); + EmptyWidget ew = new EmptyWidget(ple); + this.center(ew); + this.addWidget(ew); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/FarmingServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/FarmingServerScreen.java new file mode 100644 index 00000000..f66638a9 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/FarmingServerScreen.java @@ -0,0 +1,23 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.TrapperWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class FarmingServerScreen extends Screen{ + + public FarmingServerScreen(int w, int h, List list, Text footer) { + super(w, h); + ServerWidget sw = new ServerWidget(list); + TrapperWidget tw = new TrapperWidget(list); + centerW(sw); + centerW(tw); + stackWidgetsH(sw, tw); + this.addWidgets(tw, sw); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenScreen.java new file mode 100644 index 00000000..30f4bbc3 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenScreen.java @@ -0,0 +1,23 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ComposterWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.GardenServerWidget; +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class GardenScreen extends Screen{ + + public GardenScreen(int w, int h, List ple, Text footer) { + super(w, h); + GardenServerWidget gsw = new GardenServerWidget(ple); + ComposterWidget cw = new ComposterWidget(ple); + + 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/GenericInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java new file mode 100644 index 00000000..01b159e2 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java @@ -0,0 +1,51 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +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.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class GenericInfoScreen extends Screen { + + public GenericInfoScreen(int w, int h, List ple, Text footer) { + super(w, h); + + String f = footer.getString(); + + SkillsWidget sw = new SkillsWidget(ple); + EventWidget evw = new EventWidget(ple); + UpgradeWidget uw = new UpgradeWidget(f); + + ProfileWidget pw = new ProfileWidget(ple); + EffectWidget efw = new EffectWidget(f); + + ElectionWidget elw = new ElectionWidget(ple); + CookieWidget cw = new CookieWidget(f); + + // goofy ahh layout code incoming + 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/GenericServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericServerScreen.java new file mode 100644 index 00000000..fee4a9f8 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericServerScreen.java @@ -0,0 +1,19 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class GenericServerScreen extends Screen { + + public GenericServerScreen(int w, int h, List ple, Text footer) { + super(w, h); + ServerWidget sw = new ServerWidget(ple); + this.center(sw); + this.addWidget(sw); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GuestPlayerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GuestPlayerScreen.java new file mode 100644 index 00000000..4647da7a --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GuestPlayerScreen.java @@ -0,0 +1,23 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandGuestsWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandOwnersWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class GuestPlayerScreen extends Screen{ + + public GuestPlayerScreen(int w, int h, List list, Text footer) { + super(w, h); + IslandGuestsWidget igw = new IslandGuestsWidget(list); + IslandOwnersWidget iow = new IslandOwnersWidget(list); + 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/GuestServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GuestServerScreen.java new file mode 100644 index 00000000..03e22292 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GuestServerScreen.java @@ -0,0 +1,19 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.GuestServerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class GuestServerScreen extends Screen{ + + public GuestServerScreen(int w, int h, List list, Text footer) { + super(w, h); + GuestServerWidget gsw = new GuestServerWidget(list); + this.center(gsw); + this.addWidget(gsw); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HomePlayerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HomePlayerScreen.java new file mode 100644 index 00000000..506f773f --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HomePlayerScreen.java @@ -0,0 +1,22 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandGuestsWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandSelfWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class HomePlayerScreen extends Screen { + + public HomePlayerScreen(int w, int h, List list, Text footer) { + super(w, h); + IslandSelfWidget isw = new IslandSelfWidget(list); + IslandGuestsWidget igw = new IslandGuestsWidget(list); + 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/HomeServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HomeServerScreen.java new file mode 100644 index 00000000..6d67f829 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HomeServerScreen.java @@ -0,0 +1,24 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandServerWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.MinionWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class HomeServerScreen extends Screen { + + public HomeServerScreen(int w, int h, List list, Text footer) { + super(w, h); + + IslandServerWidget isw = new IslandServerWidget(list); + MinionWidget mw = new MinionWidget(list); + 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/HubServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HubServerScreen.java new file mode 100644 index 00000000..15ac3183 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HubServerScreen.java @@ -0,0 +1,23 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.FireSaleWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class HubServerScreen extends Screen { + + public HubServerScreen(int w, int h, List ple, Text footer) { + super(w, h); + ServerWidget sw = new ServerWidget(ple); + FireSaleWidget fsw = new FireSaleWidget(ple); + 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/MineServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/MineServerScreen.java new file mode 100644 index 00000000..0e581852 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/MineServerScreen.java @@ -0,0 +1,30 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +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.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class MineServerScreen extends Screen{ + + public MineServerScreen(int w, int h, List list, Text footer) { + super(w, h); + ServerWidget sw = new ServerWidget(list); + PowderWidget pw = new PowderWidget(list); + CommsWidget cw = new CommsWidget(list); + ForgeWidget fw = new ForgeWidget(list); + stackWidgetsH(sw, pw, cw); + centerH(fw); + offCenterL(sw); + offCenterL(pw); + offCenterL(cw); + offCenterR(fw); + this.addWidgets(fw, cw, pw, sw); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ParkServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ParkServerScreen.java new file mode 100644 index 00000000..bb601251 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ParkServerScreen.java @@ -0,0 +1,19 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ParkServerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class ParkServerScreen extends Screen{ + + public ParkServerScreen(int w, int h, List ple, Text footer) { + super(w, h); + ParkServerWidget sw = new ParkServerWidget(ple); + this.center(sw); + this.addWidget(sw); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlayerListScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlayerListScreen.java new file mode 100644 index 00000000..14adc322 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlayerListScreen.java @@ -0,0 +1,19 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.PlayerListWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class PlayerListScreen extends Screen { + + public PlayerListScreen(int w, int h, List ple, Text footer) { + super(w, h); + PlayerListWidget plw = new PlayerListWidget(ple); + this.center(plw); + this.addWidget(plw); + } + +} 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 new file mode 100644 index 00000000..8e99698b --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java @@ -0,0 +1,250 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.ArrayList; +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.Text; + +public class Screen { + + private enum ScreenType { + 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, + NONE + } + + private ArrayList widgets = new ArrayList<>(); + private int w, h; + + public Screen(int w, int h) { + this.w = w; + this.h = h; + } + + public void addWidget(Widget w) { + widgets.add(w); + } + + public void addWidgets(Widget... ws) { + for (Widget w : ws) { + widgets.add(w); + } + } + + public void render(MatrixStack ms) { + for (Widget w : widgets) { + w.render(ms); + } + } + + 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; + } + } + + 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; + } + } + + public void centerH(Widget wid) { + wid.setY((h - wid.getHeight()) / 2); + } + + public void centerW(Widget wid) { + wid.setX((w - wid.getWidth()) / 2); + } + + public void center(Widget wid) { + this.centerH(wid); + this.centerW(wid); + } + + public void offCenterL(Widget wid) { + int wHalf = this.w / 2; + wid.setX(wHalf - 3 - wid.getWidth()); + } + + 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); + } + + public static Screen getCorrect(int w, int h, List ple, Text footer) { + if (TabHud.genericTgl.isPressed()) { + return new GenericInfoScreen(w, h, ple, footer); + // } else if (TabHud.mapTgl.isPressed()) { + // return Screen.correctMapScrn(w, h, ple, footer); + } else if (TabHud.playerTgl.isPressed()) { + return Screen.correctPlayerScrn(w, h, ple, footer); + } else { + return Screen.correctMainScrn(w, h, ple, footer); + } + } + + private static ScreenType getScreenType(List ple) { + String cat2Name = StrMan.strAt(ple, 40); + + if (cat2Name.contains("Dungeon Stats")) { + return ScreenType.DUNGEON; + } + + String areaDesciptor = StrMan.strAt(ple, 41).substring(6); + switch (areaDesciptor) { + case "Private Island": + if (ple.get(44).getDisplayName().getString().endsWith("Guest")) { + return ScreenType.GUEST_ISLAND; + } else { + return ScreenType.HOME_ISLAND; + } + case "Crimson Isle": + return ScreenType.CRIMSON_ISLE; + case "Dungeon Hub": + return ScreenType.DUNGEON_HUB; + case "The Farming Islands": + return ScreenType.FARMING_ISLAND; + case "The Park": + return ScreenType.PARK; + case "Dwarven Mines": + return ScreenType.DWARVEN_MINES; + case "Crystal Hollows": + return ScreenType.CRYSTAL_HOLLOWS; + case "The End": + return ScreenType.END; + case "Gold Mine": + return ScreenType.GOLD_MINE; + case "Deep Caverns": + return ScreenType.DEEP_CAVERNS; + case "Hub": + return ScreenType.HUB; + case "Spider's Den": + return ScreenType.SPIDER_DEN; + case "Jerry's Workshop": + return ScreenType.JERRY; + case "Garden": + return ScreenType.GARDEN; + default: + return ScreenType.NONE; + } + } + + // private static Screen correctMapScrn(int w, int h, List list, Text footer) { + // // return switch (getScreenType(list)) { + // // case CRYSTAL_HOLLOWS -> null; + // // case DUNGEON -> null; + // // default -> new EmptyScreen(w, h, list, footer); + // // }; + // return new EmptyScreen(w, h, list, footer); + // } + + private static Screen correctPlayerScrn(int w, int h, List list, Text footer) { + return switch (getScreenType(list)) { + case GUEST_ISLAND -> new GuestPlayerScreen(w, h, list, footer); // ok + case HOME_ISLAND -> new HomePlayerScreen(w, h, list, footer); // ok + case DUNGEON -> new DungeonPlayerScreen(w, h, list, footer); + default -> new PlayerListScreen(w, h, list, footer); // ok + }; + } + + private static Screen correctMainScrn(int w, int h, List list, Text footer) { + return switch (getScreenType(list)) { + case PARK -> new ParkServerScreen(w, h, list, footer); // ok + case HUB -> new HubServerScreen(w, h, list, footer); // ok + case HOME_ISLAND -> new HomeServerScreen(w, h, list, footer); // ok + case GUEST_ISLAND -> new GuestServerScreen(w, h, list, footer); // ok + case CRYSTAL_HOLLOWS, DWARVEN_MINES -> new MineServerScreen(w, h, list, footer); + case FARMING_ISLAND -> new FarmingServerScreen(w, h, list, footer); // ok + case DUNGEON_HUB -> new DungeonHubScreen(w, h, list, footer); // ok + case DUNGEON -> new DungeonScreen(w, h, list, footer); + case CRIMSON_ISLE -> null; // TODO + case GARDEN -> new GardenScreen(w, h, list, footer); + default -> new GenericServerScreen(w, h, list, footer); // ok + }; + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java new file mode 100644 index 00000000..a9f8e22f --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java @@ -0,0 +1,50 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.util; + +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; + +public class Ico { + public static final ItemStack MAP = new ItemStack(Items.FILLED_MAP); + public static final ItemStack NTAG = new ItemStack(Items.NAME_TAG); + public static final ItemStack EMERALD = new ItemStack(Items.EMERALD); + public static final ItemStack CLOCK = new ItemStack(Items.CLOCK); + public static final ItemStack DIASWORD = new ItemStack(Items.DIAMOND_SWORD); + public static final ItemStack DBUSH = new ItemStack(Items.DEAD_BUSH); + public static final ItemStack VILLAGER = new ItemStack(Items.VILLAGER_SPAWN_EGG); + public static final ItemStack MOREGOLD = new ItemStack(Items.GOLDEN_APPLE); + public static final ItemStack COMPASS = new ItemStack(Items.COMPASS); + public static final ItemStack SUGAR = new ItemStack(Items.SUGAR); + public static final ItemStack HOE = new ItemStack(Items.IRON_HOE); + public static final ItemStack GOLD = new ItemStack(Items.GOLD_INGOT); + public static final ItemStack BONE = new ItemStack(Items.BONE); + public static final ItemStack SIGN = new ItemStack(Items.OAK_SIGN); + public static final ItemStack FISH_ROD = new ItemStack(Items.FISHING_ROD); + public static final ItemStack SWORD = new ItemStack(Items.IRON_SWORD); + public static final ItemStack LANTERN = new ItemStack(Items.LANTERN); + public static final ItemStack COOKIE = new ItemStack(Items.COOKIE); + public static final ItemStack POTION = new ItemStack(Items.POTION); + public static final ItemStack BARRIER = new ItemStack(Items.BARRIER); + public static final ItemStack PLAYER = new ItemStack(Items.PLAYER_HEAD); + public static final ItemStack WATER = new ItemStack(Items.WATER_BUCKET); + public static final ItemStack LEATHER = new ItemStack(Items.LEATHER); + public static final ItemStack MITHRIL = new ItemStack(Items.PRISMARINE_CRYSTALS); + public static final ItemStack REDSTONE = new ItemStack(Items.REDSTONE); + public static final ItemStack FIRE = new ItemStack(Items.CAMPFIRE); + public static final ItemStack STRING = new ItemStack(Items.STRING); + public static final ItemStack WITHER = new ItemStack(Items.WITHER_SKELETON_SKULL); + public static final ItemStack FLESH = new ItemStack(Items.ROTTEN_FLESH); + public static final ItemStack DRAGON = new ItemStack(Items.DRAGON_HEAD); + public static final ItemStack DIAMOND = new ItemStack(Items.DIAMOND); + public static final ItemStack ICE = new ItemStack(Items.ICE); + public static final ItemStack CHEST = new ItemStack(Items.CHEST); + public static final ItemStack COMMAND = new ItemStack(Items.COMMAND_BLOCK); + public static final ItemStack SKULL = new ItemStack(Items.SKELETON_SKULL); + public static final ItemStack BOOK = new ItemStack(Items.WRITABLE_BOOK); + public static final ItemStack FURNACE = new ItemStack(Items.FURNACE); + public static final ItemStack CHESTPLATE = new ItemStack(Items.IRON_CHESTPLATE); + public static final ItemStack B_ROD = new ItemStack(Items.BLAZE_ROD); + public static final ItemStack BOW = new ItemStack(Items.BOW); + public static final ItemStack COPPER = new ItemStack(Items.COPPER_INGOT); + public static final ItemStack COMPOSTER = new ItemStack(Items.COMPOSTER); + public static final ItemStack SAPLING = new ItemStack(Items.OAK_SAPLING); +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/StrMan.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/StrMan.java new file mode 100644 index 00000000..8cd77ac2 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/StrMan.java @@ -0,0 +1,64 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.util; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +public class StrMan { + + private static final Logger LOGGER = LoggerFactory.getLogger(StrMan.class.getName()); + private static final Text ERROR_TXT = Text.literal("[ERROR]").formatted(Formatting.RED, Formatting.BOLD); + + public static Text stdEntry(List ple, int idx, String entryName, Formatting contentFmt) { + Text txt = ple.get(idx).getDisplayName(); + if (txt == null) { + return ERROR_TXT; + } + String src = txt.getString(); + src = src.substring(src.indexOf(':') + 1); + return StrMan.stdEntry(src, entryName, contentFmt); + } + + public static Text stdEntry(String entryContent, String entryName, Formatting contentFmt) { + return Text.literal(entryName).append(Text.literal(entryContent).formatted(contentFmt)); + } + + public static Text plainEntry(List ple, int idx) { + Text txt = ple.get(idx).getDisplayName(); + if (txt == null) { + return ERROR_TXT; + } + return Text.of(txt.getString().trim()); + } + + public static Matcher regexAt(List ple, int idx, Pattern p) { + Text txt = ple.get(idx).getDisplayName(); + if (txt == null) { + return null; + } + String str = txt.getString(); + Matcher m = p.matcher(str); + if (!m.matches()) { + LOGGER.error("ERROR: Regex {} failed for input \"{}\"", p.pattern(), str); + return null; + } else { + return m; + } + } + + public static String strAt(List ple, int idx) { + Text txt = ple.get(idx).getDisplayName(); + if (txt == null) { + return null; + } + return txt.getString(); + } + +} 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 new file mode 100644 index 00000000..ef86b8f0 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CommsWidget.java @@ -0,0 +1,53 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; + +import net.minecraft.client.network.PlayerListEntry; +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. +// works in both the dwarven mines and the CH + +public class CommsWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Commissions").formatted(Formatting.DARK_AQUA, + Formatting.BOLD); + + // match a comm + // group 1: comm name + // group 2: comm progress (without "%" for comms that show a percentage) + private static final Pattern COMM_PATTERN = Pattern.compile(" (.*): (.*)%?"); + + public CommsWidget(List list) { + super(TITLE, Formatting.DARK_AQUA.getColorValue()); + + for (int i = 50; i <= 51; i++) { + Matcher m = StrMan.regexAt(list, i, COMM_PATTERN); + + String g2 = m.group(2); + ProgressComponent pc; + if (g2.equals("DONE")) { + pc = new ProgressComponent(Ico.BOOK, Text.of(m.group(1)), Text.of(g2), 100f, pcntToCol(100)); + } else { + float pcnt = Float.parseFloat(g2.substring(0, g2.length() - 1)); + pc = new ProgressComponent(Ico.BOOK, Text.of(m.group(1)), pcnt, pcntToCol(pcnt)); + } + this.addComponent(pc); + } + this.pack(); + } + + 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/ComposterWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ComposterWidget.java new file mode 100644 index 00000000..2537b90a --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ComposterWidget.java @@ -0,0 +1,44 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about the garden's composter + +public class ComposterWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Composter").formatted(Formatting.GREEN, + Formatting.BOLD); + + + public ComposterWidget(List list) { + super(TITLE, Formatting.GREEN.getColorValue()); + + Text matter = StrMan.stdEntry(list, 48, "Organic Matter:", Formatting.YELLOW); + IcoTextComponent mat = new IcoTextComponent(Ico.SAPLING, matter); + this.addComponent(mat); + + Text fuel = StrMan.stdEntry(list, 49, "Fuel:", Formatting.BLUE); + IcoTextComponent f = new IcoTextComponent(Ico.FURNACE, fuel); + this.addComponent(f); + + Text timeLeft = StrMan.stdEntry(list, 50, "Time Left:", Formatting.RED); + IcoTextComponent time = new IcoTextComponent(Ico.CLOCK, timeLeft); + this.addComponent(time); + + Text compost = StrMan.stdEntry(list, 51, "Stored Compost:", Formatting.DARK_GREEN); + IcoTextComponent comp = new IcoTextComponent(Ico.COMPOSTER, compost); + this.addComponent(comp); + + 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 new file mode 100644 index 00000000..86d9dd7f --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CookieWidget.java @@ -0,0 +1,33 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about active super cookies +// or not, if you're unwilling to buy one +// TODO: test with active cookie. I'm not buying one. + +public class CookieWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Cookie Info").formatted(Formatting.DARK_PURPLE, + Formatting.BOLD); + + public CookieWidget(String footertext) { + super(TITLE, Formatting.DARK_PURPLE.getColorValue()); + + String interesting = footertext.split("Cookie Buff")[1]; + String[] lines = interesting.split("\n"); + if (lines[1].startsWith("Not")) { + this.addComponent(new IcoTextComponent(Ico.COOKIE, Text.of("Not active"))); + } else { + Text cookie = Text.literal("Time Left: ").append(lines[2]); + this.addComponent(new IcoTextComponent(Ico.COOKIE, cookie)); + } + this.pack(); + } + +} 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 new file mode 100644 index 00000000..928d9f76 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDeathWidget.java @@ -0,0 +1,53 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows various dungeon info +// deaths, healing, dmg taken, milestones + +public class DungeonDeathWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Death").formatted(Formatting.DARK_PURPLE, + Formatting.BOLD); + + // match the deaths entry + // group 1: amount of deaths + private static final Pattern DEATH_PATTERN = Pattern.compile("\\S*: \\((\\d+)\\).*"); + + public DungeonDeathWidget(List list) { + super(TITLE, Formatting.DARK_PURPLE.getColorValue()); + + Matcher m = StrMan.regexAt(list, 25, DEATH_PATTERN); + Formatting f = (m.group(1).equals("0")) ? Formatting.GREEN : Formatting.RED; + Text d = Text.literal("Deaths: ").append(Text.literal(m.group(1)).formatted(f)); + IcoTextComponent deaths = new IcoTextComponent(Ico.SKULL, d); + this.addComponent(deaths); + + Text dealt = StrMan.stdEntry(list, 26, "Damage Dealt:", Formatting.RED); + IcoTextComponent de = new IcoTextComponent(Ico.SWORD, dealt); + this.addComponent(de); + + Text heal = StrMan.stdEntry(list, 27, "Healing Done:", Formatting.RED); + IcoTextComponent he = new IcoTextComponent(Ico.POTION, heal); + this.addComponent(he); + + Text mile = StrMan.stdEntry(list, 28, "Milestone:", Formatting.YELLOW); + IcoTextComponent mi = new IcoTextComponent(Ico.NTAG, mile); + this.addComponent(mi); + + 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 new file mode 100644 index 00000000..9146fdbb --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDownedWidget.java @@ -0,0 +1,42 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about... something? +// TODO: test this. + +public class DungeonDownedWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Downed").formatted(Formatting.DARK_PURPLE, + Formatting.BOLD); + + public DungeonDownedWidget(List list) { + super(TITLE, Formatting.DARK_PURPLE.getColorValue()); + Formatting format = Formatting.RED; + if (StrMan.strAt(list, 21).endsWith("NONE")) { + format = Formatting.GRAY; + } + Text downed = StrMan.stdEntry(list, 21, "Downed:", format); + IcoTextComponent down = new IcoTextComponent(Ico.SKULL, downed); + this.addComponent(down); + + Text time = StrMan.stdEntry(list, 22, "Time:", Formatting.GRAY); + IcoTextComponent t = new IcoTextComponent(Ico.CLOCK, time); + this.addComponent(t); + + Text revive = StrMan.stdEntry(list, 23, "Revive:", Formatting.GRAY); + IcoTextComponent rev = new IcoTextComponent(Ico.POTION, revive); + this.addComponent(rev); + 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 new file mode 100644 index 00000000..ce7b13bd --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java @@ -0,0 +1,83 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.HashMap; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.item.ItemStack; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about a player in the current dungeon group +// when inside a dungeon + +public class DungeonPlayerWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Player").formatted(Formatting.DARK_PURPLE, + Formatting.BOLD); + + // match a player entry + // group 1: name + // group 2: class (or literal "EMPTY" pre dungeon start) + // group 3: level (or nothing, if pre dungeon start) + // as a side effect, this regex keeps the iron man icon in the name + // not sure if that should be + private static final Pattern PLAYER_PATTERN = Pattern.compile("\\[\\d*\\] (.*) \\((\\S*) ?([XVI]*)\\)"); + + private static final HashMap ICOS = new HashMap<>(); + static { + ICOS.put("Tank", Ico.CHESTPLATE); + ICOS.put("Mage", Ico.B_ROD); + ICOS.put("Berserk", Ico.DIASWORD); + ICOS.put("Archer", Ico.BOW); + ICOS.put("Healer", Ico.POTION); + } + + // title needs to be changeable here + public DungeonPlayerWidget(List list, int player) { + super(TITLE, Formatting.DARK_PURPLE.getColorValue()); + + int start = 1 + (player - 1) * 4; + + if (list.get(start).getDisplayName().getString().length() < 2) { + this.addComponent( + new IcoTextComponent(Ico.SIGN, Text.literal("PRESS A TO JOIN").formatted(Formatting.GRAY))); + } else { + Matcher m = StrMan.regexAt(list, start, PLAYER_PATTERN); + + Text name = Text.literal("Name: ").append(Text.literal(m.group(1)).formatted(Formatting.YELLOW)); + this.addComponent(new IcoTextComponent(Ico.PLAYER, name)); + + String cl = m.group(2); + Formatting clf = Formatting.GRAY; + ItemStack cli = Ico.BARRIER; + if (!cl.equals("EMPTY")) { + cli = ICOS.get(cl); + clf = Formatting.LIGHT_PURPLE; + cl += " " + m.group(3); + } + + Text class_ = Text.literal("Class: ").append(Text.literal(cl).formatted(clf)); + IcoTextComponent itclass = new IcoTextComponent(cli, class_); + this.addComponent(itclass); + + Text ult = StrMan.stdEntry(list, start + 1, "Ult Cooldown:", Formatting.GOLD); + IcoTextComponent ul = new IcoTextComponent(Ico.CLOCK, ult); + this.addComponent(ul); + + Text revive = StrMan.stdEntry(list, start + 2, "Revives:", Formatting.DARK_PURPLE); + IcoTextComponent re = new IcoTextComponent(Ico.POTION, revive); + this.addComponent(re); + + } + 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 new file mode 100644 index 00000000..906d449b --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPuzzleWidget.java @@ -0,0 +1,51 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about all puzzeles in the dungeon (name and status) +// TODO: if puzzle was failed, show player name + +public class DungeonPuzzleWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Puzzles").formatted(Formatting.DARK_PURPLE, + Formatting.BOLD); + + // match a puzzle entry + // group 1: name + // group 2: status + // yes, that " ?" is needed. + // the teleport maze has a trailing whitespace that messes with the regex + private static final Pattern PUZZLE_PATTERN = Pattern.compile(" (.*): \\[(.*)\\] ?"); + + public DungeonPuzzleWidget(List list) { + super(TITLE, Formatting.DARK_PURPLE.getColorValue()); + + int pos = 48; + + while (pos < 60) { + Matcher m = StrMan.regexAt(list, pos, PUZZLE_PATTERN); + if (m == null) { + break; + } + Text t = Text.literal(m.group(1) + ": ").append(Text.literal("[").formatted(Formatting.GRAY)) + .append(m.group(2)).append(Text.literal("]").formatted(Formatting.GRAY)); + IcoTextComponent itc = new IcoTextComponent(Ico.SIGN, t); + this.addComponent(itc); + pos++; + } + 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 new file mode 100644 index 00000000..fed6b0b2 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonSecretWidget.java @@ -0,0 +1,35 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about secrets of the dungeon + +public class DungeonSecretWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Discoveries").formatted(Formatting.DARK_PURPLE, + Formatting.BOLD); + + public DungeonSecretWidget(List list) { + super(TITLE, Formatting.DARK_PURPLE.getColorValue()); + + Text secrets = StrMan.stdEntry(list, 31, "Secrets:", Formatting.YELLOW); + IcoTextComponent sec = new IcoTextComponent(Ico.CHEST, secrets); + this.addComponent(sec); + + Text crypts = StrMan.stdEntry(list, 32, "Crypts:", Formatting.YELLOW); + IcoTextComponent cry = new IcoTextComponent(Ico.SKULL, crypts); + this.addComponent(cry); + + 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 new file mode 100644 index 00000000..89d3b1ca --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonServerWidget.java @@ -0,0 +1,56 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows broad info about the current dungeon +// opened/completed rooms, % of secrets found and time taken + +public class DungeonServerWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Dungeon Info").formatted(Formatting.DARK_PURPLE, + Formatting.BOLD); + + // match the secrets text + // group 1: % of secrets found (without "%") + private static final Pattern SECRET_PATTERN = Pattern.compile(" Secrets Found: (.*)%"); + + public DungeonServerWidget(List list) { + super(TITLE, Formatting.DARK_PURPLE.getColorValue()); + Text name = StrMan.stdEntry(list, 41, "Name:", Formatting.AQUA); + IcoTextComponent na = new IcoTextComponent(Ico.NTAG, name); + this.addComponent(na); + + Text open = StrMan.stdEntry(list, 42, "Rooms Visited:", Formatting.DARK_PURPLE); + IcoTextComponent op = new IcoTextComponent(Ico.SIGN, open); + this.addComponent(op); + + Text compl = StrMan.stdEntry(list, 43, "Rooms Completed:", Formatting.LIGHT_PURPLE); + IcoTextComponent co = new IcoTextComponent(Ico.SIGN, compl); + this.addComponent(co); + + Matcher m = StrMan.regexAt(list, 44, SECRET_PATTERN); + Text secrets = Text.of("Secrets found:"); + ProgressComponent scp = new ProgressComponent(Ico.CHEST, secrets, Float.parseFloat(m.group(1)), + Formatting.DARK_PURPLE.getColorValue()); + this.addComponent(scp); + + Text time = StrMan.stdEntry(list, 45, "Time:", Formatting.GOLD); + IcoTextComponent ti = new IcoTextComponent(Ico.CLOCK, time); + this.addComponent(ti); + + 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 new file mode 100644 index 00000000..54b49465 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EffectWidget.java @@ -0,0 +1,40 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoFatTextComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widgte shows, how many active effects you have +// it also shows one of those in detail + +public class EffectWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Effect Info").formatted(Formatting.DARK_PURPLE, + Formatting.BOLD); + + public EffectWidget(String footertext) { + super(TITLE, Formatting.DARK_PURPLE.getColorValue()); + + String interesting = footertext.split("Active Effects")[1]; + String[] lines = interesting.split("\n"); + + if (lines[1].startsWith("No")) { + Text txt = Text.literal("No effects active").formatted(Formatting.GRAY); + this.addComponent(new IcoTextComponent(Ico.POTION, txt)); + } else { + String number = lines[1].substring("You have ".length()); + number = number.substring(0, number.indexOf(' ')); + Text active = Text.literal("Active Effects: ").append(Text.literal(number).formatted(Formatting.YELLOW)); + + IcoFatTextComponent iftc = new IcoFatTextComponent(Ico.POTION, active, + 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 new file mode 100644 index 00000000..e75b7152 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ElectionWidget.java @@ -0,0 +1,97 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.HashMap; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.item.ItemStack; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// XXX crashes when in garden, as this shows jacob's farming info there... +// "starts in", then the three farmable things +// this widget shows the status or results of the current election + +public class ElectionWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Election Info").formatted(Formatting.YELLOW, + Formatting.BOLD); + + private static final HashMap MAYOR_DATA = new HashMap<>(); + + private static final Text EL_OVER = Text.literal("Election ") + .append(Text.literal("over!").formatted(Formatting.RED)); + + // pattern matching a candidate while people are voting + // group 1: name + // group 2: % of votes + private static final Pattern VOTE_PATTERN = Pattern.compile(" (\\S*): \\|+ \\((\\d*)%\\)"); + + static { + MAYOR_DATA.put("Aatrox", Ico.DIASWORD); + MAYOR_DATA.put("Diana", Ico.BONE); + MAYOR_DATA.put("Diaz", Ico.GOLD); + MAYOR_DATA.put("Finnegan", Ico.HOE); + MAYOR_DATA.put("Foxy", Ico.SUGAR); + MAYOR_DATA.put("Paul", Ico.COMPASS); + MAYOR_DATA.put("Scorpius", Ico.MOREGOLD); + MAYOR_DATA.put("Jerry", Ico.VILLAGER); + MAYOR_DATA.put("Derpy", Ico.DBUSH); + MAYOR_DATA.put("Marina", Ico.FISH_ROD); + } + + private static final Formatting[] COLS = { Formatting.GOLD, Formatting.RED, Formatting.LIGHT_PURPLE }; + + public ElectionWidget(List list) { + super(TITLE, Formatting.YELLOW.getColorValue()); + + if (StrMan.strAt(list, 76).contains("Over!")) { + // election is over + + IcoTextComponent over = new IcoTextComponent(Ico.BARRIER, EL_OVER); + this.addComponent(over); + + String winnername = StrMan.strAt(list, 77).split(": ")[1]; + Text winnertext = Text.literal("Winner: ") + .append(Text.literal(winnername).formatted(Formatting.GREEN)); + IcoTextComponent winner = new IcoTextComponent(MAYOR_DATA.get(winnername), winnertext); + this.addComponent(winner); + + Text participants = StrMan.stdEntry(list, 78, "Participants:", Formatting.AQUA); + IcoTextComponent part = new IcoTextComponent(Ico.PLAYER, participants); + this.addComponent(part); + + Text year = StrMan.stdEntry(list, 79, "Year:", Formatting.LIGHT_PURPLE); + IcoTextComponent y = new IcoTextComponent(Ico.SIGN, year); + this.addComponent(y); + + } else { + // election is going on + Text time = StrMan.stdEntry(list, 76, "End in:", Formatting.GOLD); + IcoTextComponent t = new IcoTextComponent(Ico.CLOCK, time); + this.addComponent(t); + + for (int i = 77; i <= 79; i++) { + Matcher m = StrMan.regexAt(list, i, VOTE_PATTERN); + String g1 = m.group(1); + String g2 = m.group(2); + float pcnt = Float.parseFloat(g2); + Text candidate = Text.literal(g1).formatted(COLS[i - 77]); + ProgressComponent pc = new ProgressComponent(MAYOR_DATA.get(g1), candidate, pcnt, + COLS[i - 77].getColorValue()); + this.addComponent(pc); + + } + } + 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 new file mode 100644 index 00000000..584a593e --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EmptyWidget.java @@ -0,0 +1,27 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +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(List list) { + super(TITLE, Formatting.RED.getColorValue()); + + 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 new file mode 100644 index 00000000..903c3a3d --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EssenceWidget.java @@ -0,0 +1,48 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows your dungeon essences + +public class EssenceWidget extends Widget { + + private Text undead, wither, diamond, gold, dragon, spider, ice, crimson; + + private static final MutableText TITLE = Text.literal("Essences").formatted(Formatting.DARK_AQUA, + Formatting.BOLD); + + public EssenceWidget(List list) { + super(TITLE, Formatting.DARK_AQUA.getColorValue()); + wither = StrMan.stdEntry(list, 46, "Wither:", Formatting.DARK_PURPLE); + spider = StrMan.stdEntry(list, 47, "Spider:", Formatting.DARK_PURPLE); + undead = StrMan.stdEntry(list, 48, "Undead:", Formatting.DARK_PURPLE); + dragon = StrMan.stdEntry(list, 49, "Dragon:", Formatting.DARK_PURPLE); + gold = StrMan.stdEntry(list, 50, "Gold:", Formatting.DARK_PURPLE); + diamond = StrMan.stdEntry(list, 51, "Diamond:", Formatting.DARK_PURPLE); + ice = StrMan.stdEntry(list, 52, "Ice:", Formatting.DARK_PURPLE); + crimson = StrMan.stdEntry(list, 53, "Crimson:", Formatting.DARK_PURPLE); + + TableComponent tc = new TableComponent(2, 4, Formatting.DARK_AQUA.getColorValue()); + + tc.addToCell(0, 0, new IcoTextComponent(Ico.WITHER, wither)); + tc.addToCell(0, 1, new IcoTextComponent(Ico.STRING, spider)); + tc.addToCell(0, 2, new IcoTextComponent(Ico.FLESH, undead)); + tc.addToCell(0, 3, new IcoTextComponent(Ico.DRAGON, dragon)); + tc.addToCell(1, 0, new IcoTextComponent(Ico.GOLD, gold)); + tc.addToCell(1, 1, new IcoTextComponent(Ico.DIAMOND, diamond)); + 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 new file mode 100644 index 00000000..051ce11c --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EventWidget.java @@ -0,0 +1,33 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about ongoing events (e.g. jacob's farming) + +public class EventWidget extends Widget { + private static final MutableText TITLE = Text.literal("Event Info").formatted(Formatting.YELLOW, Formatting.BOLD); + + public EventWidget(List list) { + super(TITLE, Formatting.YELLOW.getColorValue()); + + Text eventName = StrMan.stdEntry(list, 73, "Name:", Formatting.YELLOW); + IcoTextComponent event = new IcoTextComponent(Ico.NTAG, eventName); + this.addComponent(event); + + // this could look better + Text time = StrMan.plainEntry(list, 74); + 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 new file mode 100644 index 00000000..7531b071 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java @@ -0,0 +1,56 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// TODO: untested with active fire sales +// this widget shows info about fire sales when in the hub +// or not, if there isn't one going on + +public class FireSaleWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Fire Sale").formatted(Formatting.DARK_AQUA, + Formatting.BOLD); + + // matches a fire sale item + // group 1: item name + // group 2: # items bought + // group 1: # items available in total (1 digit + "k") + private static final Pattern FIRE_PATTERN = Pattern.compile(" (.*): (\\d*)/(\\d)k"); + + public FireSaleWidget(List list) { + super(TITLE, Formatting.DARK_AQUA.getColorValue()); + + boolean found = false; + + for (int i = 46;; i++) { + Matcher m = StrMan.regexAt(list, i, FIRE_PATTERN); + if (m == null ||!m.matches()) { + break; + } + found = true; + Text a = Text.literal(m.group(1)); + Text b = Text.literal(m.group(2) + "/" + m.group(3) + "000"); + float pcnt = (1 - (Float.parseFloat(m.group(2)) / (Float.parseFloat(m.group(3)) * 1000)))/100f; + ProgressComponent pc = new ProgressComponent(Ico.GOLD, a, b, pcnt, Formatting.LIGHT_PURPLE.getColorValue()); + this.addComponent(pc); + } + if (!found) { + this.addComponent(new PlainTextComponent(Text.literal("No Fire Sale!").formatted(Formatting.GRAY))); + } + 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 new file mode 100644 index 00000000..553a001f --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ForgeWidget.java @@ -0,0 +1,60 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.Component; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoFatTextComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows what you're forging right now +// for locked slots, the unlock requirement is shown + +public class ForgeWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Forge Status").formatted(Formatting.DARK_AQUA, + Formatting.BOLD); + + public ForgeWidget(List list) { + super(TITLE, Formatting.DARK_AQUA.getColorValue()); + + for (int i = 0; i < 5; i++) { + String fstr = StrMan.strAt(list, i + 54).substring(4); + Component c; + Text l1, l2; + + switch (fstr) { + case "LOCKED": + l1 = Text.literal("Locked").formatted(Formatting.RED); + l2 = switch (i + 1) { + case 3 -> Text.literal("Req. HotM 3").formatted(Formatting.GRAY); + case 4 -> Text.literal("Req. HotM 4").formatted(Formatting.GRAY); + case 5 -> Text.literal("Req. PotM 2").formatted(Formatting.GRAY); + default -> + Text.literal("This message should not appear").formatted(Formatting.RED, Formatting.BOLD); + }; + c = new IcoFatTextComponent(Ico.BARRIER, l1, l2); + break; + case "EMPTY": + l1 = Text.literal("Empty").formatted(Formatting.GRAY); + c = new IcoTextComponent(Ico.FURNACE, l1); + break; + default: + String[] parts = fstr.split(": "); + l1 = Text.of(parts[0]); + l2 = Text.literal(parts[1]).formatted(Formatting.YELLOW); + c = new IcoFatTextComponent(Ico.FIRE, l1, l2); + break; + } + 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 new file mode 100644 index 00000000..c6c334d5 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenServerWidget.java @@ -0,0 +1,59 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about the garden server + +public class GardenServerWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Server Info").formatted(Formatting.DARK_AQUA, + Formatting.BOLD); + + private static final Pattern VISITOR_PATTERN = Pattern.compile(" Next Visitor: (.*)$"); + + public GardenServerWidget(List list) { + super(TITLE, Formatting.DARK_AQUA.getColorValue()); + + Text areaName = StrMan.stdEntry(list, 41, "Area:", Formatting.DARK_AQUA); + IcoTextComponent area = new IcoTextComponent(Ico.MAP, areaName); + this.addComponent(area); + + Text serverName = StrMan.stdEntry(list, 42, "Server ID:", Formatting.GRAY); + IcoTextComponent server = new IcoTextComponent(Ico.NTAG, serverName); + this.addComponent(server); + + Text amtGems = StrMan.stdEntry(list, 43, "Gems:", Formatting.GREEN); + IcoTextComponent gems = new IcoTextComponent(Ico.EMERALD, amtGems); + this.addComponent(gems); + + Text copper = StrMan.stdEntry(list, 44, "Copper:", Formatting.GOLD); + IcoTextComponent co = new IcoTextComponent(Ico.COPPER, copper); + this.addComponent(co); + + Matcher v = StrMan.regexAt(list, 45, VISITOR_PATTERN); + String vString = v.group(1); + Formatting col; + if (vString.equals("Not Unlocked!")) { + col = Formatting.RED; + } else { + col = Formatting.GREEN; + } + MutableText visitor = Text.literal("Next Visitor: ") + .append(Text.literal(vString).formatted(col)); + IcoTextComponent vis = new IcoTextComponent(Ico.PLAYER, visitor); + this.addComponent(vis); + 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 new file mode 100644 index 00000000..67b61667 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GuestServerWidget.java @@ -0,0 +1,41 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about the private island you're visiting + +public class GuestServerWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Island Info").formatted(Formatting.DARK_AQUA, + Formatting.BOLD); + + public GuestServerWidget(List list) { + super(TITLE, Formatting.DARK_AQUA.getColorValue()); + Text areaName = StrMan.stdEntry(list, 41, "Area:", Formatting.DARK_AQUA); + IcoTextComponent area = new IcoTextComponent(Ico.MAP, areaName); + this.addComponent(area); + + Text serverName = StrMan.stdEntry(list, 42, "Server ID:", Formatting.GRAY); + IcoTextComponent server = new IcoTextComponent(Ico.NTAG, serverName); + this.addComponent(server); + + Text owner = StrMan.stdEntry(list, 43, "Owner:", Formatting.GREEN); + IcoTextComponent own = new IcoTextComponent(Ico.SIGN, owner); + this.addComponent(own); + + Text status = StrMan.stdEntry(list, 44, "Status:", Formatting.BLUE); + IcoTextComponent stat = new IcoTextComponent(Ico.SIGN, status); + this.addComponent(stat); + this.pack(); + } + +} 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 new file mode 100644 index 00000000..5814c15c --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandGuestsWidget.java @@ -0,0 +1,44 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows a list of all people visiting +// the same private island as you + +public class IslandGuestsWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Guests").formatted(Formatting.AQUA, + Formatting.BOLD); + + // matches a player entry, removing their level and the hand icon + // group 1: player name + private static final Pattern GUEST_PATTERN = Pattern.compile("\\[\\d*\\] (.*) \\[.\\]"); + + public IslandGuestsWidget(List list) { + super(TITLE, Formatting.AQUA.getColorValue()); + for (int i = 21; i < 40; i++) { + String str = list.get(i).getDisplayName().getString(); + if (str.length() == 0) { + if (i == 21) { + this.addComponent(new PlainTextComponent(Text.literal("No Visitors!").formatted(Formatting.GRAY))); + } + break; + } + Matcher m = StrMan.regexAt(list, i, GUEST_PATTERN); + PlainTextComponent ptc = new PlainTextComponent(Text.of(m.group(1))); + this.addComponent(ptc); + } + 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 new file mode 100644 index 00000000..a0056a06 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java @@ -0,0 +1,47 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows a list of the owners of a private island +// when you're visiting someone else + +public class IslandOwnersWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Owners").formatted(Formatting.DARK_PURPLE, + Formatting.BOLD); + + // matches an owner + // group 1: player name (cut off by hypixel for some reason) + // group 2: last seem + // TODO: test with owner online + private static final Pattern OWNER_PATTERN = Pattern.compile("(.*) \\((.*)\\)"); + + public IslandOwnersWidget(List list) { + super(TITLE, Formatting.DARK_PURPLE.getColorValue()); + for (int i = 1; i < 20; i++) { + if (list.get(i).getDisplayName().getString().length() == 0) { + break; + } + + Matcher m = StrMan.regexAt(list, i, OWNER_PATTERN); + Text entry = Text.literal(m.group(1)) + .append( + Text.literal(" (" + m.group(2) + ")") + .formatted(Formatting.GRAY)); + 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 new file mode 100644 index 00000000..96ec8ba5 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandSelfWidget.java @@ -0,0 +1,40 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows a list of the owners of your home island + +public class IslandSelfWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Owners").formatted(Formatting.DARK_PURPLE, + Formatting.BOLD); + + // matches an owner + // group 1: player name + private static final Pattern OWNER_PATTERN = Pattern.compile("\\[\\d*\\] (.*)"); + + public IslandSelfWidget(List list) { + super(TITLE, Formatting.DARK_PURPLE.getColorValue()); + for (int i = 1; i < 20; i++) { + String str = list.get(i).getDisplayName().getString(); + if (str.length() == 0) { + break; + } + Matcher m = StrMan.regexAt(list, i, OWNER_PATTERN); + PlainTextComponent ptc = new PlainTextComponent(Text.of(m.group(1))); + this.addComponent(ptc); + } + 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 new file mode 100644 index 00000000..1bbe0ed7 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandServerWidget.java @@ -0,0 +1,47 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about your home island + +public class IslandServerWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Island Info").formatted(Formatting.DARK_AQUA, + Formatting.BOLD); + + public IslandServerWidget(List list) { + super(TITLE, Formatting.DARK_AQUA.getColorValue()); + + Text areaName = StrMan.stdEntry(list, 41, "Area:", Formatting.DARK_AQUA); + IcoTextComponent area = new IcoTextComponent(Ico.MAP, areaName); + this.addComponent(area); + + Text serverName = StrMan.stdEntry(list, 42, "Server ID:", Formatting.GRAY); + IcoTextComponent server = new IcoTextComponent(Ico.NTAG, serverName); + this.addComponent(server); + + Text crystals = StrMan.stdEntry(list, 43, "Crystals:", Formatting.DARK_PURPLE); + IcoTextComponent crys = new IcoTextComponent(Ico.EMERALD, crystals); + this.addComponent(crys); + + Text stash = StrMan.stdEntry(list, 44, "Stash:", Formatting.GREEN); + IcoTextComponent st = new IcoTextComponent(Ico.CHEST, stash); + this.addComponent(st); + + Text minions = StrMan.stdEntry(list, 45, "Minions:", Formatting.BLUE); + IcoTextComponent min = new IcoTextComponent(Ico.COMMAND, minions); + this.addComponent(min); + 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 new file mode 100644 index 00000000..2ba94b48 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/MinionWidget.java @@ -0,0 +1,135 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.HashMap; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about minions placed on the home island + +public class MinionWidget extends Widget { + private static final MutableText TITLE = Text.literal("Minions").formatted(Formatting.DARK_AQUA, + Formatting.BOLD); + + private static final HashMap MIN_ICOS = new HashMap<>(); + + // hmm... + static { + MIN_ICOS.put("Blaze", new ItemStack(Items.BLAZE_ROD)); + MIN_ICOS.put("Cave Spider", new ItemStack(Items.SPIDER_EYE)); + MIN_ICOS.put("Creeper", new ItemStack(Items.GUNPOWDER)); + MIN_ICOS.put("Enderman", new ItemStack(Items.ENDER_PEARL)); + MIN_ICOS.put("Ghast", new ItemStack(Items.GHAST_TEAR)); + MIN_ICOS.put("Magma Cube", new ItemStack(Items.MAGMA_CREAM)); + MIN_ICOS.put("Skeleton", new ItemStack(Items.BONE)); + MIN_ICOS.put("Slime", new ItemStack(Items.SLIME_BALL)); + MIN_ICOS.put("Spider", new ItemStack(Items.STRING)); + MIN_ICOS.put("Zombie", new ItemStack(Items.ROTTEN_FLESH)); + MIN_ICOS.put("Cactus", new ItemStack(Items.CACTUS)); + MIN_ICOS.put("Carrot", new ItemStack(Items.CARROT)); + MIN_ICOS.put("Chicken", new ItemStack(Items.CHICKEN)); + MIN_ICOS.put("Cocoa Beans", new ItemStack(Items.COCOA_BEANS)); + MIN_ICOS.put("Cow", new ItemStack(Items.BEEF)); + MIN_ICOS.put("Melon", new ItemStack(Items.MELON_SLICE)); + MIN_ICOS.put("Mushroom", new ItemStack(Items.RED_MUSHROOM)); + MIN_ICOS.put("Nether Wart", new ItemStack(Items.NETHER_WART)); + MIN_ICOS.put("Pig", new ItemStack(Items.PORKCHOP)); + MIN_ICOS.put("Potato", new ItemStack(Items.POTATO)); + MIN_ICOS.put("Pumpkin", new ItemStack(Items.PUMPKIN)); + MIN_ICOS.put("Rabbit", new ItemStack(Items.RABBIT)); + MIN_ICOS.put("Sheep", new ItemStack(Items.WHITE_WOOL)); + MIN_ICOS.put("Sugar Cane", new ItemStack(Items.SUGAR_CANE)); + MIN_ICOS.put("Wheat", new ItemStack(Items.WHEAT)); + MIN_ICOS.put("Clay", new ItemStack(Items.CLAY)); + MIN_ICOS.put("Fishing", new ItemStack(Items.FISHING_ROD)); + MIN_ICOS.put("Coal", new ItemStack(Items.COAL)); + MIN_ICOS.put("Cobblestone", new ItemStack(Items.COBBLESTONE)); + MIN_ICOS.put("Diamond", new ItemStack(Items.DIAMOND)); + MIN_ICOS.put("Emerald", new ItemStack(Items.EMERALD)); + MIN_ICOS.put("End Stone", new ItemStack(Items.END_STONE)); + MIN_ICOS.put("Glowstone", new ItemStack(Items.GLOWSTONE_DUST)); + MIN_ICOS.put("Gold", new ItemStack(Items.GOLD_INGOT)); + MIN_ICOS.put("Gravel", new ItemStack(Items.GRAVEL)); + MIN_ICOS.put("Hard Stone", new ItemStack(Items.STONE)); + MIN_ICOS.put("Ice", new ItemStack(Items.ICE)); + MIN_ICOS.put("Iron", new ItemStack(Items.IRON_INGOT)); + MIN_ICOS.put("Lapis", new ItemStack(Items.LAPIS_LAZULI)); + MIN_ICOS.put("Mithril", new ItemStack(Items.PRISMARINE_CRYSTALS)); + MIN_ICOS.put("Mycelium", new ItemStack(Items.MYCELIUM)); + MIN_ICOS.put("Obsidian", new ItemStack(Items.OBSIDIAN)); + MIN_ICOS.put("Quartz", new ItemStack(Items.QUARTZ)); + MIN_ICOS.put("Red Sand", new ItemStack(Items.RED_SAND)); + MIN_ICOS.put("Redstone", new ItemStack(Items.REDSTONE)); + MIN_ICOS.put("Sand", new ItemStack(Items.SAND)); + MIN_ICOS.put("Snow", new ItemStack(Items.SNOWBALL)); + MIN_ICOS.put("Inferno", new ItemStack(Items.BLAZE_SPAWN_EGG)); + MIN_ICOS.put("Revenant", new ItemStack(Items.ZOMBIE_SPAWN_EGG)); + MIN_ICOS.put("Tarantula", new ItemStack(Items.SPIDER_SPAWN_EGG)); + MIN_ICOS.put("Voidling", new ItemStack(Items.ENDERMAN_SPAWN_EGG)); + MIN_ICOS.put("Acacia", new ItemStack(Items.ACACIA_LOG)); + MIN_ICOS.put("Birch", new ItemStack(Items.BIRCH_LOG)); + MIN_ICOS.put("Dark Oak", new ItemStack(Items.DARK_OAK_LOG)); + MIN_ICOS.put("Flower", new ItemStack(Items.POPPY)); + MIN_ICOS.put("Jungle", new ItemStack(Items.JUNGLE_LOG)); + MIN_ICOS.put("Oak", new ItemStack(Items.OAK_LOG)); + MIN_ICOS.put("Spruce", new ItemStack(Items.SPRUCE_LOG)); + } + + // matches a minion entry + // group 1: name + // group 2: level + // group 3: status + public static final Pattern MINION_PATTERN = Pattern.compile(" (.*) ([XVI]*) \\[(.*)\\]"); + + public MinionWidget(List list) { + super(TITLE, Formatting.DARK_AQUA.getColorValue()); + + for (int i = 48; i < 59; i++) { + Matcher m = StrMan.regexAt(list, i, MINION_PATTERN); + if (m != null) { + + String min = m.group(1); + String lvl = m.group(2); + String stat = m.group(3); + + MutableText mt = Text.literal(min + " " + lvl).append(Text.literal(": ")); + + Formatting format = Formatting.RED; + if (stat.equals("ACTIVE")) { + format = Formatting.GREEN; + } else if (stat.equals("SLOW")) { + format = Formatting.YELLOW; + } + // makes "BLOCKED" also red. in reality, it's some kind of crimson + mt.append(Text.literal(stat).formatted(format)); + + IcoTextComponent itc = new IcoTextComponent(MIN_ICOS.get(min), mt); + this.addComponent(itc); + + } else { + break; + } + } + + // if more minions are placed than the tab menu can display, + // a "And X more..." text is shown + // look for that and add it to the widget + if (list.get(59).getDisplayName() != null) { + String other = list.get(59).getDisplayName().getString(); + this.addComponent(new PlainTextComponent(Text.of(other.trim()))); + } + 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 new file mode 100644 index 00000000..a94b5948 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ParkServerWidget.java @@ -0,0 +1,42 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about the park server + +public class ParkServerWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Server Info").formatted(Formatting.DARK_AQUA, + Formatting.BOLD); + + public ParkServerWidget(List list) { + super(TITLE, Formatting.DARK_AQUA.getColorValue()); + + Text areaName = StrMan.stdEntry(list, 41, "Area:", Formatting.DARK_AQUA); + IcoTextComponent area = new IcoTextComponent(Ico.MAP, areaName); + this.addComponent(area); + + Text serverName = StrMan.stdEntry(list, 42, "Server ID:", Formatting.GRAY); + IcoTextComponent server = new IcoTextComponent(Ico.NTAG, serverName); + this.addComponent(server); + + Text amtGems = StrMan.stdEntry(list, 43, "Gems:", Formatting.GREEN); + IcoTextComponent gems = new IcoTextComponent(Ico.EMERALD, amtGems); + this.addComponent(gems); + + Text rain = StrMan.stdEntry(list, 44, "Rain:", Formatting.BLUE); + IcoTextComponent ra = new IcoTextComponent(Ico.WATER, rain); + this.addComponent(ra); + 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 new file mode 100644 index 00000000..27c69567 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java @@ -0,0 +1,61 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlayerComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows a list of players with their skins +// in most areas + +public class PlayerListWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Players").formatted(Formatting.GREEN, + Formatting.BOLD); + + private ArrayList list = new ArrayList<>(); + + public PlayerListWidget(List l) { + super(TITLE, Formatting.GREEN.getColorValue()); + + // unintuitive int ceil division stolen from + // https://stackoverflow.com/questions/7139382/java-rounding-up-to-an-int-using-math-ceil#21830188 + int tblW = ((l.size() - 80) - 1) / 20 + 1; + + TableComponent tc = new TableComponent(tblW, (l.size() - 80 >= 20) ? 20 : l.size() - 80, + Formatting.GREEN.getColorValue()); + + for (int i = 80; i < l.size(); i++) { + list.add(l.get(i)); + } + + Collections.sort(list, new Comparator() { + @Override + public int compare(PlayerListEntry o1, PlayerListEntry o2) { + return o1.getProfile().getName().toLowerCase().compareTo(o2.getProfile().getName().toLowerCase()); + } + }); + + int x = 0, y = 0; + + for (PlayerListEntry ple : list) { + tc.addToCell(x, y, new PlayerComponent(ple)); + y++; + if (y >= 20) { + y = 0; + x++; + } + } + + 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 new file mode 100644 index 00000000..97485b4f --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PowderWidget.java @@ -0,0 +1,35 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows how much mithril and gemstone powder you have + +public class PowderWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Powders").formatted(Formatting.DARK_AQUA, + Formatting.BOLD); + + public PowderWidget(List list) { + super(TITLE, Formatting.DARK_AQUA.getColorValue()); + + Text amtMith = StrMan.stdEntry(list, 46, "Mithril:", Formatting.AQUA); + IcoTextComponent mith = new IcoTextComponent(Ico.MITHRIL, amtMith); + this.addComponent(mith); + + Text amtGem = StrMan.stdEntry(list, 47, "Gemstone:", Formatting.DARK_PURPLE); + IcoTextComponent gem = new IcoTextComponent(Ico.EMERALD, amtGem); + this.addComponent(gem); + 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 new file mode 100644 index 00000000..59342b9d --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ProfileWidget.java @@ -0,0 +1,42 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about your profile and bank + +public class ProfileWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Profile").formatted(Formatting.YELLOW, Formatting.BOLD); + + public ProfileWidget(List list) { + super(TITLE, Formatting.YELLOW.getColorValue()); + + Text profileType = StrMan.stdEntry(list, 61, "Type:", Formatting.GREEN); + IcoTextComponent profile = new IcoTextComponent(Ico.SIGN, profileType); + this.addComponent(profile); + + Text petInfo = StrMan.stdEntry(list, 62, "Pet Sitter:", Formatting.AQUA); + IcoTextComponent pet = new IcoTextComponent(Ico.BONE, petInfo); + this.addComponent(pet); + + Text bankAmt = StrMan.stdEntry(list, 63, "Balance:", Formatting.GOLD); + IcoTextComponent bank = new IcoTextComponent(Ico.EMERALD, bankAmt); + this.addComponent(bank); + + Text interest = StrMan.stdEntry(list, 64, "Interest in:", Formatting.GOLD); + IcoTextComponent inter = new IcoTextComponent(Ico.CLOCK, interest); + this.addComponent(inter); + 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 new file mode 100644 index 00000000..ce7bc56f --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ServerWidget.java @@ -0,0 +1,40 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about "generic" servers +// a server is "generic", when only name, server ID and gems are shown +// in the thrid column of the tab menu + +public class ServerWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Server Info").formatted(Formatting.DARK_AQUA, + Formatting.BOLD); + + public ServerWidget(List list) { + super(TITLE, Formatting.DARK_AQUA.getColorValue()); + + Text areaName = StrMan.stdEntry(list, 41, "Area:", Formatting.DARK_AQUA); + IcoTextComponent area = new IcoTextComponent(Ico.MAP, areaName); + this.addComponent(area); + + Text serverName = StrMan.stdEntry(list, 42, "Server ID:", Formatting.GRAY); + IcoTextComponent server = new IcoTextComponent(Ico.NTAG, serverName); + this.addComponent(server); + + Text amtGems = StrMan.stdEntry(list, 43, "Gems:", Formatting.GREEN); + IcoTextComponent gems = new IcoTextComponent(Ico.EMERALD, amtGems); + this.addComponent(gems); + 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 new file mode 100644 index 00000000..85bd630b --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/SkillsWidget.java @@ -0,0 +1,63 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about a skill and some stats + +public class SkillsWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Skill Info").formatted(Formatting.YELLOW, + Formatting.BOLD); + + // match the skill entry + // group 1: skill name and level + // group 2: progress to next level (without "%") + private static final Pattern SKILL_PATTERN = Pattern.compile("\\S*: ([A-Za-z]* [0-9]*): (\\S*)%"); + + public SkillsWidget(List list) { + super(TITLE, Formatting.YELLOW.getColorValue()); + + Matcher m = StrMan.regexAt(list, 66, SKILL_PATTERN); + + float pcnt = Float.parseFloat(m.group(2)); + String skill = m.group(1); + + ProgressComponent pc = new ProgressComponent(Ico.LANTERN, Text.of(skill), pcnt, Formatting.GOLD.getColorValue()); + + this.addComponent(pc); + + Text speed = StrMan.stdEntry(list, 67, "SPD", Formatting.WHITE); + IcoTextComponent spd = new IcoTextComponent(Ico.SUGAR, speed); + Text strength = StrMan.stdEntry(list, 68, "STR", Formatting.RED); + IcoTextComponent str = new IcoTextComponent(Ico.SWORD, strength); + Text critDmg = StrMan.stdEntry(list, 69, "CDG", Formatting.BLUE); + IcoTextComponent cdg = new IcoTextComponent(Ico.SWORD, critDmg); + Text critCh = StrMan.stdEntry(list, 70, "CCH", Formatting.BLUE); + IcoTextComponent cch = new IcoTextComponent(Ico.SWORD, critCh); + Text aSpeed = StrMan.stdEntry(list, 71, "ASP", Formatting.YELLOW); + IcoTextComponent asp = new IcoTextComponent(Ico.HOE, aSpeed); + + TableComponent tc = new TableComponent(2, 3, Formatting.YELLOW.getColorValue()); + tc.addToCell(0, 0, spd); + tc.addToCell(0, 1, str); + tc.addToCell(0, 2, asp); + 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 new file mode 100644 index 00000000..981e4eef --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/TrapperWidget.java @@ -0,0 +1,29 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows, how meny pelts you have (farming island only) + +public class TrapperWidget extends Widget { + private static final MutableText TITLE = Text.literal("Trapper").formatted(Formatting.DARK_AQUA, + Formatting.BOLD); + + public TrapperWidget(List list) { + super(TITLE, Formatting.DARK_AQUA.getColorValue()); + + Text amtPelts = StrMan.stdEntry(list, 46, "Pelts:", Formatting.AQUA); + IcoTextComponent pelts = new IcoTextComponent(Ico.LEATHER, amtPelts); + this.addComponent(pelts); + 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 new file mode 100644 index 00000000..9f3be82a --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/UpgradeWidget.java @@ -0,0 +1,38 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; + +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows info about current profile/account upgrades +// or not, if there aren't any +// TODO: not very pretty atm + +public class UpgradeWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Upgrade Info").formatted(Formatting.GOLD, + Formatting.BOLD); + + public UpgradeWidget(String footertext) { + super(TITLE, Formatting.GOLD.getColorValue()); + String[] interesting = footertext.split("Upgrades"); + if (interesting.length < 2) { + this.addComponent(new PlainTextComponent(Text.of("Currently no upgrades..."))); + this.pack(); + return; + } + String[] lines = interesting[1].split("\n"); + IcoTextComponent u1 = new IcoTextComponent(Ico.SIGN, Text.of(lines[1])); + this.addComponent(u1); + if (lines.length == 5) { + IcoTextComponent u2 = new IcoTextComponent(Ico.SIGN, Text.of(lines[2])); + this.addComponent(u2); + } + 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 new file mode 100644 index 00000000..1fdad37a --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java @@ -0,0 +1,183 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.ArrayList; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.Component; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; + +public abstract class Widget { + + private ArrayList components = new ArrayList<>(); + private int w = 0, h = 0; + private int x = 0, y = 0; + private int color; + private Text title; + + private static TextRenderer txtRend = MinecraftClient.getInstance().textRenderer; + + static final int BORDER_SZE_N = txtRend.fontHeight + 4; + static final int BORDER_SZE_S = 4; + static final int BORDER_SZE_W = 4; + static final int BORDER_SZE_E = 4; + static final int COL_BG_BOX = 0xc00c0c0c; + + public Widget(MutableText title, Integer colorValue) { + this.title = title; + this.color = 0xff000000 | colorValue; + } + + public final void addComponent(Component c) { + components.add(c); + } + + public final void pack() { + for (Component c : components) { + h += c.getHeight() + 4; + w = Math.max(w, c.getWidth()); + } + h += BORDER_SZE_N + BORDER_SZE_S - 2; + w += BORDER_SZE_E + BORDER_SZE_W; + + // min width is dependent on title + w = Math.max(w, BORDER_SZE_W + BORDER_SZE_E + Widget.txtRend.getWidth(title) + 4 + 4 + 1); + } + + public final void setX(int x) { + this.x = x; + } + + public final int getY() { + return this.y; + } + + public final int getX() { + return this.x; + } + + public final void setY(int y) { + this.y = y; + } + + public final int getWidth() { + return this.w; + } + + public final int getHeight() { + return this.h; + } + + public final void render(MatrixStack ms) { + + DrawableHelper.fill(ms, x + 1, y, x + w - 1, y + h, COL_BG_BOX); + DrawableHelper.fill(ms, x, y + 1, x + 1, y + h - 1, COL_BG_BOX); + DrawableHelper.fill(ms, x + w - 1, y + 1, x + w, y + h - 1, COL_BG_BOX); + + int strHeightHalf = Widget.txtRend.fontHeight / 2; + int strAreaWidth = Widget.txtRend.getWidth(title) + 4; + + txtRend.draw(ms, title, x + 8, y + 2, this.color); + + DrawableHelper.fill(ms, x + 2, y + 1 + strHeightHalf, strAreaWidth, strHeightHalf, strAreaWidth); + + this.drawHLine(ms, x + 2, y + 1 + strHeightHalf, 4); + this.drawHLine(ms, x + 2 + strAreaWidth + 4, y + 1 + strHeightHalf, w - 4 - 4 - strAreaWidth); + this.drawHLine(ms, x + 2, y + h - 2, w - 4); + + this.drawVLine(ms, x + 1, y + 2 + strHeightHalf, h - 4 - strHeightHalf); + this.drawVLine(ms, x + w - 2, y + 2 + strHeightHalf, h - 4 - strHeightHalf); + + int yOffs = y + BORDER_SZE_N; + + for (Component c : components) { + c.render(ms, x + BORDER_SZE_W, yOffs); + yOffs += c.getHeight() + 4; + } + } + + private void drawHLine(MatrixStack ms, int xpos, int ypos, int width) { + DrawableHelper.fill(ms, xpos, ypos, xpos + width, ypos + 1, this.color); + } + + private void drawVLine(MatrixStack ms, int xpos, int ypos, int height) { + DrawableHelper.fill(ms, xpos, ypos, xpos + 1, ypos + height, this.color); + } + + // static final int ICO_DIM = 16; + // static final int PAD_S = 2; + // static final int PAD_L = 4; + // static final int SKIN_ICO_DIM = 8; + + // static final int TEXT_H = txtRend.fontHeight; + // static final int BAR_H = TEXT_H; + + // static final int TITLED_BAR_H = TEXT_H + PAD_S + BAR_H + PAD_L; + // static final int ICO_LINE_H = ICO_DIM + PAD_L; + + // public void drawRect(MatrixStack ms, int x, int y, int w, int h) { + // DrawableHelper.fill(ms, x + xpos + CONTENT_OFFS_X, y + ypos + CONTENT_OFFS_Y, + // x + xpos + CONTENT_OFFS_X + w, + // y + ypos + CONTENT_OFFS_Y + h, this.color); + // } + + // void drawIcon(ItemStack ico, int x, int y) { + // itmRend.renderGuiItemIcon(ico, x + x + CONTENT_OFFS_X, y + y + // + CONTENT_OFFS_Y); + // } + + // void drawText(MatrixStack ms, Text text, int x, int y, int color) { + // txtRend.draw(ms, text, x + x + CONTENT_OFFS_X, y + y + + // CONTENT_OFFS_Y, 0xff000000 | color); + // } + + // void drawText(MatrixStack ms, Text text, int x, int y) { + // this.drawText(ms, text, x, y, 0xffffffff); + // } + + // void drawIcoText(MatrixStack ms, ItemStack ico, Text text, int x, int y) { + // this.drawIcon(ico, x, y); + // this.drawText(ms, text, x + ICO_DIM + PAD_L, y + 5); + // } + + // void fill(MatrixStack ms, int x1, int y1, int x2, int y2, int color) { + // DrawableHelper.fill(ms, x1 + x + CONTENT_OFFS_X, y1 + y + + // CONTENT_OFFS_Y, + // x2 + x + CONTENT_OFFS_X, y2 + y + CONTENT_OFFS_Y, 0xff000000 + // | color); + // } + + // void drawBar(MatrixStack ms, int x, int y, int width, float fillPcnt, int + // color) { + // this.fill(ms, x, y, x + width, y + 10, COL_BG_BAR); + // this.fill(ms, x, y, x + (int) (width * (fillPcnt / 100f)), y + 10, color); + // } + + // void drawTitledIcoBar(MatrixStack ms, ItemStack ico, Text title, int width, + // float pcnt, int x, int y, int color) { + // final int ICO_OFFS = 3; + // this.drawIcon(ico, x, y + ICO_OFFS); + // this.drawText(ms, title, x + ICO_DIM + PAD_L, y); + // this.drawBar(ms, x + ICO_DIM + PAD_L, y + TEXT_H + PAD_S, width, pcnt, + // color); + // } + + // void drawIcoFatText(MatrixStack ms, ItemStack ico, Text line1, Text line2, + // int x, int y) { + // final int ICO_OFFS = 1; + // this.drawIcon(ico, x, y + ICO_OFFS); + // this.drawText(ms, line1, x + ICO_DIM + PAD_L, y); + // this.drawText(ms, line2, x + ICO_DIM + PAD_L, y + TEXT_H + PAD_S); + // } + + // public void drawPlayerIco(MatrixStack ms, int x, int y, Identifier + // skinTexture) { + // RenderSystem.setShaderTexture(0, skinTexture); + // PlayerSkinDrawer.draw(ms, x + x + CONTENT_OFFS_X, y + y + + // CONTENT_OFFS_Y, SKIN_ICO_DIM); + // } +} 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 new file mode 100644 index 00000000..92b7ed1b --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java @@ -0,0 +1,29 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.render.item.ItemRenderer; +import net.minecraft.client.util.math.MatrixStack; + +public abstract class Component { + + static final int ICO_DIM = 16; + static final int PAD_S = 2; + static final int PAD_L = 4; + + static TextRenderer txtRend = MinecraftClient.getInstance().textRenderer; + static ItemRenderer itmRend = MinecraftClient.getInstance().getItemRenderer(); + + int width, height; + + public abstract void render(MatrixStack ms, int x, int y); + + public int getWidth() { + return this.width; + } + + public int getHeight() { + return this.height; + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java new file mode 100644 index 00000000..5865138c --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java @@ -0,0 +1,30 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; + +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.ItemStack; +import net.minecraft.text.Text; + +public class IcoFatTextComponent extends Component { + + private static final int ICO_OFFS = 1; + + private ItemStack ico; + private Text l1, l2; + + public IcoFatTextComponent(ItemStack ico, Text l1, Text l2) { + this.ico = ico; + this.l1 = l1; + this.l2 = l2; + + this.width = ICO_DIM + PAD_L + Math.max(txtRend.getWidth(l1), txtRend.getWidth(l2)) + PAD_S; + this.height = txtRend.fontHeight * 2 + PAD_S; + } + + @Override + public void render(MatrixStack ms, int x, int y) { + itmRend.renderGuiItemIcon(ms, ico, x, y + ICO_OFFS); + txtRend.draw(ms, l1, x + ICO_DIM + PAD_L, y, 0xffffffff); + txtRend.draw(ms, l2, x + ICO_DIM + PAD_L, y + txtRend.fontHeight + PAD_S, 0xffffffff); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java new file mode 100644 index 00000000..66f15479 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java @@ -0,0 +1,26 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; + +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.ItemStack; +import net.minecraft.text.Text; + +public class IcoTextComponent extends Component { + + private ItemStack ico; + private Text text; + + public IcoTextComponent(ItemStack ico, Text text) { + this.ico = ico; + this.text = text; + + this.width = ICO_DIM + PAD_L + txtRend.getWidth(text) + PAD_S; + this.height = ICO_DIM; + } + + @Override + public void render(MatrixStack ms, int x, int y) { + itmRend.renderGuiItemIcon(ms, ico, x, y); + txtRend.draw(ms, text, x + ICO_DIM + PAD_L, y + 5, 0xffffffff); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java new file mode 100644 index 00000000..b801f3aa --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java @@ -0,0 +1,22 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; + +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.Text; + +public class PlainTextComponent extends Component { + + private Text text; + + public PlainTextComponent(Text text) { + this.text = text; + + this.width = PAD_S + txtRend.getWidth(text) + PAD_S; + this.height = txtRend.fontHeight; + } + + @Override + public void render(MatrixStack ms, int x, int y) { + txtRend.draw(ms, text, x + PAD_S, y, 0xffffffff); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java new file mode 100644 index 00000000..7e1fd399 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java @@ -0,0 +1,33 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; + +import com.mojang.blaze3d.systems.RenderSystem; + +import net.minecraft.client.gui.PlayerSkinDrawer; +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.Identifier; + +public class PlayerComponent extends Component { + + private static final int SKIN_ICO_DIM = 8; + + private String name; + private Identifier tex; + + public PlayerComponent(PlayerListEntry ple) { + + name = ple.getProfile().getName(); + tex = ple.getSkinTexture(); + + this.width = txtRend.getWidth(name) + PAD_S + SKIN_ICO_DIM; + this.height = txtRend.fontHeight; + } + + @Override + public void render(MatrixStack ms, int x, int y) { + RenderSystem.setShaderTexture(0, tex); + PlayerSkinDrawer.draw(ms, x, y, SKIN_ICO_DIM); + txtRend.draw(ms, name, x + SKIN_ICO_DIM + PAD_S, y, 0xffffffff); + } + +} 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 new file mode 100644 index 00000000..41539d1c --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java @@ -0,0 +1,49 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; + +import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.ItemStack; +import net.minecraft.text.Text; + +public class ProgressComponent extends Component { + + private static final int BAR_WIDTH = 100; + private static final int BAR_HEIGHT = txtRend.fontHeight + 3; + 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; + + public ProgressComponent(ItemStack ico, Text desc, Text bar, float pcnt, int color) { + this.ico = ico; + this.desc = desc; + this.bar = bar; + this.color = 0xff000000 | color; + this.pcnt = pcnt; + + this.barW = BAR_WIDTH; + this.height = txtRend.fontHeight + PAD_S + 2 + txtRend.fontHeight + 2; + this.width = ICO_DIM + PAD_L + Math.max(this.barW, txtRend.getWidth(desc)) + PAD_S; + } + + public ProgressComponent(ItemStack ico, Text text, float pcnt, int color) { + this(ico, text, Text.of(pcnt + "%"), pcnt, color); + } + + @Override + public void render(MatrixStack ms, int x, int y) { + itmRend.renderGuiItemIcon(ms, ico, x, y + ICO_OFFS); + txtRend.draw(ms, desc, x + ICO_DIM + PAD_L, y, 0xffffffff); + + int barX = x + ICO_DIM + PAD_L; + int barY = y + txtRend.fontHeight + PAD_S; + DrawableHelper.fill(ms, barX, barY, barX + this.barW, barY + BAR_HEIGHT, COL_BG_BAR); + DrawableHelper.fill(ms, barX, barY, barX + ((int) (this.barW * (this.pcnt / 100f))), barY + BAR_HEIGHT, + this.color); + txtRend.drawWithShadow(ms, bar, barX + 3, barY + 2, 0xffffffff); + } +} 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 new file mode 100644 index 00000000..66c1b73b --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/TableComponent.java @@ -0,0 +1,53 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; + +import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.util.math.MatrixStack; + +// FIXME: table isn't wide enough sometimes +// FIXME: dividers drift when there are >2 cols +public class TableComponent extends Component { + + private Component[][] comps; + private int color; + private int tw, th; + private int cellW, cellH; + + public TableComponent(int w, int h, int col) { + comps = new Component[w][h]; + color = 0xff000000 | col; + tw = w; + th = h; + } + + public void addToCell(int x, int y, Component c) { + comps[x][y] = c; + + // are tables still too wide? + cellW = Math.max(cellW, c.width + PAD_S); + + // assume all rows are equally high so overwriting doesn't matter + // if this wasn't the case, drawing would need more math + // not doing any of that if it's not needed + cellH = c.height; + + this.width = cellW * tw; + this.height = (cellH + PAD_S) * th - PAD_S; + + } + + @Override + public void render(MatrixStack ms, int xpos, int ypos) { + for (int x = 0; x < tw; x++) { + for (int y = 0; y < th; y++) { + if (comps[x][y] != null) { + comps[x][y].render(ms, xpos + x * cellW + x * PAD_L, ypos + y * cellH + y * PAD_S); + } + } + if (x != tw - 1) { + DrawableHelper.fill(ms, xpos + ((x + 1) * (cellW + PAD_S)) - 1, ypos + 1, + xpos + ((x + 1) * (cellW + PAD_S)), ypos + this.height - 1, color); + } + } + } + +} -- cgit From 96789bb84ae43ba71ea8ac45cdf4561513ee3234 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 2 Apr 2023 15:15:08 +0200 Subject: Fix fire sale progress bar not working --- .../skyblocker/skyblock/tabhud/widget/FireSaleWidget.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/main/java/me') 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 7531b071..97b0e8a2 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 @@ -12,6 +12,7 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; +import net.minecraft.util.math.MathHelper; import net.minecraft.util.Formatting; // TODO: untested with active fire sales @@ -42,8 +43,8 @@ public class FireSaleWidget extends Widget { found = true; Text a = Text.literal(m.group(1)); Text b = Text.literal(m.group(2) + "/" + m.group(3) + "000"); - float pcnt = (1 - (Float.parseFloat(m.group(2)) / (Float.parseFloat(m.group(3)) * 1000)))/100f; - ProgressComponent pc = new ProgressComponent(Ico.GOLD, a, b, pcnt, Formatting.LIGHT_PURPLE.getColorValue()); + float pcnt = (1 - (Float.parseFloat(m.group(2)) / (Float.parseFloat(m.group(3)) * 1000)))*100f; + ProgressComponent pc = new ProgressComponent(Ico.GOLD, a, b, pcnt, pcntToCol(pcnt)); this.addComponent(pc); } if (!found) { @@ -53,4 +54,8 @@ public class FireSaleWidget extends Widget { } + private int pcntToCol(float pcnt) { + return MathHelper.hsvToRgb(pcnt / 300f, 0.9f, 0.9f); + } + } -- cgit From c97e7033aebadfcaa9827b7264fe03c24581757e Mon Sep 17 00:00:00 2001 From: msg-programs Date: Fri, 7 Apr 2023 12:18:23 +0200 Subject: Improve support for garden area, works fully now --- .../skyblock/tabhud/screens/GardenInfoScreen.java | 50 +++++++++++++++++ .../skyblock/tabhud/screens/GenericInfoScreen.java | 2 +- .../skyblocker/skyblock/tabhud/screens/Screen.java | 11 +++- .../skyblocker/skyblock/tabhud/util/Ico.java | 1 + .../skyblock/tabhud/widget/EventWidget.java | 10 ++-- .../skyblock/tabhud/widget/GardenSkillsWidget.java | 63 ++++++++++++++++++++++ .../tabhud/widget/JacobsContestWidget.java | 56 +++++++++++++++++++ 7 files changed, 188 insertions(+), 5 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenInfoScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenSkillsWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenInfoScreen.java new file mode 100644 index 00000000..a9547283 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenInfoScreen.java @@ -0,0 +1,50 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +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.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class GardenInfoScreen extends Screen { + + public GardenInfoScreen(int w, int h, List ple, Text footer) { + super(w, h); + + String f = footer.getString(); + + GardenSkillsWidget gsw = new GardenSkillsWidget(ple); + EventWidget evw = new EventWidget(ple, true); + UpgradeWidget uw = new UpgradeWidget(f); + + ProfileWidget pw = new ProfileWidget(ple); + EffectWidget efw = new EffectWidget(f); + + JacobsContestWidget jcw = new JacobsContestWidget(ple); + CookieWidget cw = new CookieWidget(f); + + // goofy ahh 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/GenericInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java index 01b159e2..b9b03a75 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java @@ -21,7 +21,7 @@ public class GenericInfoScreen extends Screen { String f = footer.getString(); SkillsWidget sw = new SkillsWidget(ple); - EventWidget evw = new EventWidget(ple); + EventWidget evw = new EventWidget(ple, false); UpgradeWidget uw = new UpgradeWidget(f); ProfileWidget pw = new ProfileWidget(ple); 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 8e99698b..fb5159a8 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 @@ -157,7 +157,7 @@ public class Screen { public static Screen getCorrect(int w, int h, List ple, Text footer) { if (TabHud.genericTgl.isPressed()) { - return new GenericInfoScreen(w, h, ple, footer); + return Screen.correctGenericScrn(w, h, ple, footer); // } else if (TabHud.mapTgl.isPressed()) { // return Screen.correctMapScrn(w, h, ple, footer); } else if (TabHud.playerTgl.isPressed()) { @@ -167,6 +167,7 @@ public class Screen { } } + private static ScreenType getScreenType(List ple) { String cat2Name = StrMan.strAt(ple, 40); @@ -222,6 +223,14 @@ public class Screen { // return new EmptyScreen(w, h, list, footer); // } + private static Screen correctGenericScrn(int w, int h, List list, Text footer) { + return switch (getScreenType(list)) { + case GARDEN -> new GardenInfoScreen(w, h, list, footer); + default -> new GenericInfoScreen(w, h, list, footer); // ok + }; + } + + private static Screen correctPlayerScrn(int w, int h, List list, Text footer) { return switch (getScreenType(list)) { case GUEST_ISLAND -> new GuestPlayerScreen(w, h, list, footer); // ok diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java index a9f8e22f..f3e18b44 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java @@ -47,4 +47,5 @@ public class Ico { public static final ItemStack COPPER = new ItemStack(Items.COPPER_INGOT); public static final ItemStack COMPOSTER = new ItemStack(Items.COMPOSTER); public static final ItemStack SAPLING = new ItemStack(Items.OAK_SAPLING); + public static final ItemStack MILESTONE = new ItemStack(Items.LODESTONE); } 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 051ce11c..7fcbe1c1 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 @@ -16,15 +16,19 @@ import net.minecraft.util.Formatting; public class EventWidget extends Widget { private static final MutableText TITLE = Text.literal("Event Info").formatted(Formatting.YELLOW, Formatting.BOLD); - public EventWidget(List list) { + public EventWidget(List list, boolean isInGarden) { super(TITLE, Formatting.YELLOW.getColorValue()); - Text eventName = StrMan.stdEntry(list, 73, "Name:", Formatting.YELLOW); + // 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; + + Text eventName = StrMan.stdEntry(list, 73 + offset, "Name:", Formatting.YELLOW); IcoTextComponent event = new IcoTextComponent(Ico.NTAG, eventName); this.addComponent(event); // this could look better - Text time = StrMan.plainEntry(list, 74); + Text time = StrMan.plainEntry(list, 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/GardenSkillsWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenSkillsWidget.java new file mode 100644 index 00000000..99011616 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/GardenSkillsWidget.java @@ -0,0 +1,63 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + + +public class GardenSkillsWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Skill Info").formatted(Formatting.YELLOW, + Formatting.BOLD); + + // match the skill entry + // group 1: skill name and level + // group 2: progress to next level (without "%") + private static final Pattern SKILL_PATTERN = Pattern.compile("\\S*: ([A-Za-z]* [0-9]*): (\\S*)%"); + // same with leading space + // TODO: make better, maybe + private static final Pattern MS_PATTERN = Pattern.compile(" \\S*: ([A-Za-z]* [0-9]*): (\\S*)%"); + + public GardenSkillsWidget(List list) { + super(TITLE, Formatting.YELLOW.getColorValue()); + + Matcher m = StrMan.regexAt(list, 66, SKILL_PATTERN); + + float pcnt = Float.parseFloat(m.group(2)); + String skill = m.group(1); + + ProgressComponent pc = new ProgressComponent(Ico.LANTERN, Text.of(skill), pcnt, Formatting.GOLD.getColorValue()); + this.addComponent(pc); + + Text speed = StrMan.stdEntry(list, 67, "SPD", Formatting.WHITE); + IcoTextComponent spd = new IcoTextComponent(Ico.SUGAR, speed); + Text farmfort = StrMan.stdEntry(list, 68, "FFO", Formatting.GOLD); + IcoTextComponent ffo = new IcoTextComponent(Ico.HOE, farmfort); + + TableComponent tc = new TableComponent(2, 1, Formatting.YELLOW.getColorValue()); + tc.addToCell(0, 0, spd); + tc.addToCell(1, 0, ffo); + this.addComponent(tc); + + m = StrMan.regexAt(list, 69, MS_PATTERN); + pcnt = Float.parseFloat(m.group(2)); + skill = m.group(1); + + ProgressComponent pc2 = new ProgressComponent(Ico.MILESTONE, Text.of(skill), pcnt, Formatting.GREEN.getColorValue()); + this.addComponent(pc2); + + 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 new file mode 100644 index 00000000..11817662 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java @@ -0,0 +1,56 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.HashMap; +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent; +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +public class JacobsContestWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Jacob's Contest").formatted(Formatting.YELLOW, + Formatting.BOLD); + + private static final HashMap FARM_DATA = new HashMap<>(); + + // again, there HAS to be a better way to do this + static { + FARM_DATA.put("Wheat", new ItemStack(Items.WHEAT)); + FARM_DATA.put("Sugar Cane", new ItemStack(Items.SUGAR_CANE)); + FARM_DATA.put("Carrot", new ItemStack(Items.CARROT)); + FARM_DATA.put("Potato", new ItemStack(Items.POTATO)); + FARM_DATA.put("Melon", new ItemStack(Items.MELON_SLICE)); + FARM_DATA.put("Pumpkin", new ItemStack(Items.PUMPKIN)); + FARM_DATA.put("Cocoa Beans", new ItemStack(Items.COCOA_BEANS)); + FARM_DATA.put("Nether Wart", new ItemStack(Items.NETHER_WART)); + FARM_DATA.put("Cactus", new ItemStack(Items.CACTUS)); + FARM_DATA.put("Mushroom", new ItemStack(Items.RED_MUSHROOM)); + } + + public JacobsContestWidget(List list) { + super(TITLE, Formatting.YELLOW.getColorValue()); + + Text time = StrMan.stdEntry(list, 76, "Starts in:", Formatting.GOLD); + IcoTextComponent t = new IcoTextComponent(Ico.CLOCK, time); + this.addComponent(t); + + TableComponent tc = new TableComponent(1, 3, Formatting.YELLOW .getColorValue()); + + for (int i = 77; i < 80; i++) { + String item = StrMan.strAt(list, i).trim(); + tc.addToCell(0, i - 77, new IcoTextComponent(FARM_DATA.get(item), Text.of(item))); + } + this.addComponent(tc); + + this.pack(); + } + +} -- cgit From 06846ed4d80943961552357c68866d3f1d2a9f95 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Fri, 7 Apr 2023 12:31:38 +0200 Subject: Put screens in respective packages to make src navigation simpler --- .../skyblock/tabhud/screens/DungeonHubScreen.java | 24 ---------- .../tabhud/screens/DungeonPlayerScreen.java | 30 ------------- .../skyblock/tabhud/screens/DungeonScreen.java | 37 --------------- .../tabhud/screens/FarmingServerScreen.java | 23 ---------- .../skyblock/tabhud/screens/GardenInfoScreen.java | 50 --------------------- .../skyblock/tabhud/screens/GardenScreen.java | 23 ---------- .../skyblock/tabhud/screens/GenericInfoScreen.java | 51 --------------------- .../tabhud/screens/GenericServerScreen.java | 19 -------- .../skyblock/tabhud/screens/GuestPlayerScreen.java | 23 ---------- .../skyblock/tabhud/screens/GuestServerScreen.java | 19 -------- .../skyblock/tabhud/screens/HomePlayerScreen.java | 22 --------- .../skyblock/tabhud/screens/HomeServerScreen.java | 24 ---------- .../skyblock/tabhud/screens/HubServerScreen.java | 23 ---------- .../skyblock/tabhud/screens/MineServerScreen.java | 30 ------------- .../skyblock/tabhud/screens/ParkServerScreen.java | 19 -------- .../skyblock/tabhud/screens/PlayerListScreen.java | 19 -------- .../skyblocker/skyblock/tabhud/screens/Screen.java | 5 ++- .../screens/genericInfo/GardenInfoScreen.java | 51 +++++++++++++++++++++ .../screens/genericInfo/GenericInfoScreen.java | 52 ++++++++++++++++++++++ .../tabhud/screens/main/DungeonHubScreen.java | 25 +++++++++++ .../tabhud/screens/main/DungeonScreen.java | 38 ++++++++++++++++ .../tabhud/screens/main/FarmingServerScreen.java | 24 ++++++++++ .../skyblock/tabhud/screens/main/GardenScreen.java | 24 ++++++++++ .../tabhud/screens/main/GenericServerScreen.java | 20 +++++++++ .../tabhud/screens/main/GuestServerScreen.java | 20 +++++++++ .../tabhud/screens/main/HomeServerScreen.java | 25 +++++++++++ .../tabhud/screens/main/HubServerScreen.java | 24 ++++++++++ .../tabhud/screens/main/MineServerScreen.java | 31 +++++++++++++ .../tabhud/screens/main/ParkServerScreen.java | 20 +++++++++ .../screens/playerList/DungeonPlayerScreen.java | 31 +++++++++++++ .../screens/playerList/GuestPlayerScreen.java | 24 ++++++++++ .../screens/playerList/HomePlayerScreen.java | 23 ++++++++++ .../screens/playerList/PlayerListScreen.java | 20 +++++++++ 33 files changed, 456 insertions(+), 437 deletions(-) delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonHubScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonPlayerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/FarmingServerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenInfoScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericServerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GuestPlayerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GuestServerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HomePlayerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HomeServerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HubServerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/MineServerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ParkServerScreen.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlayerListScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GardenInfoScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericInfoScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/DungeonHubScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/DungeonScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/FarmingServerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GardenScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GenericServerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GuestServerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/HomeServerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/HubServerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/MineServerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/ParkServerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/DungeonPlayerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/GuestPlayerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/HomePlayerScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/PlayerListScreen.java (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonHubScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonHubScreen.java deleted file mode 100644 index 4bd48f89..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonHubScreen.java +++ /dev/null @@ -1,24 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EssenceWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; - -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class DungeonHubScreen extends Screen{ - - public DungeonHubScreen(int w, int h, List list, Text footer) { - super(w, h); - ServerWidget sw = new ServerWidget(list); - EssenceWidget ew = new EssenceWidget(list); - centerW(sw); - centerW(ew); - stackWidgetsH(sw, ew); - this.addWidget(ew); - this.addWidget(sw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonPlayerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonPlayerScreen.java deleted file mode 100644 index ce87a035..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonPlayerScreen.java +++ /dev/null @@ -1,30 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonPlayerWidget; - -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class DungeonPlayerScreen extends Screen { - - public DungeonPlayerScreen(int w, int h, List ple, Text footer) { - super(w, h); - DungeonPlayerWidget dpw1 = new DungeonPlayerWidget(ple, 1); - DungeonPlayerWidget dpw2 = new DungeonPlayerWidget(ple, 2); - DungeonPlayerWidget dpw3 = new DungeonPlayerWidget(ple, 3); - DungeonPlayerWidget dpw4 = new DungeonPlayerWidget(ple, 4); - DungeonPlayerWidget dpw5 = new DungeonPlayerWidget(ple, 5); - - offCenterL(dpw1); - offCenterL(dpw2); - offCenterL(dpw3); - offCenterR(dpw4); - offCenterR(dpw5); - stackWidgetsH(dpw1, dpw2, dpw3); - stackWidgetsH(dpw4, dpw5); - addWidgets(dpw1, dpw2, dpw3, dpw4, dpw5); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonScreen.java deleted file mode 100644 index bb80b01b..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonScreen.java +++ /dev/null @@ -1,37 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -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.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class DungeonScreen extends Screen { - - public DungeonScreen(int w, int h, List ple, Text footer) { - super(w, h); - DungeonDownedWidget ddow = new DungeonDownedWidget(ple); - DungeonDeathWidget ddew = new DungeonDeathWidget(ple); - DungeonSecretWidget dscw = new DungeonSecretWidget(ple); - DungeonServerWidget dsrw = new DungeonServerWidget(ple); - DungeonPuzzleWidget dpuw = new DungeonPuzzleWidget(ple); - - offCenterL(ddow); - offCenterL(ddew); - offCenterL(dscw); - offCenterR(dsrw); - offCenterR(dpuw); - - stackWidgetsH(ddow, ddew, dscw); - stackWidgetsH(dsrw, dpuw); - - addWidgets(ddow, ddew, dscw, dsrw, dpuw); - - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/FarmingServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/FarmingServerScreen.java deleted file mode 100644 index f66638a9..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/FarmingServerScreen.java +++ /dev/null @@ -1,23 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.TrapperWidget; - -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class FarmingServerScreen extends Screen{ - - public FarmingServerScreen(int w, int h, List list, Text footer) { - super(w, h); - ServerWidget sw = new ServerWidget(list); - TrapperWidget tw = new TrapperWidget(list); - centerW(sw); - centerW(tw); - stackWidgetsH(sw, tw); - this.addWidgets(tw, sw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenInfoScreen.java deleted file mode 100644 index a9547283..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenInfoScreen.java +++ /dev/null @@ -1,50 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -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.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class GardenInfoScreen extends Screen { - - public GardenInfoScreen(int w, int h, List ple, Text footer) { - super(w, h); - - String f = footer.getString(); - - GardenSkillsWidget gsw = new GardenSkillsWidget(ple); - EventWidget evw = new EventWidget(ple, true); - UpgradeWidget uw = new UpgradeWidget(f); - - ProfileWidget pw = new ProfileWidget(ple); - EffectWidget efw = new EffectWidget(f); - - JacobsContestWidget jcw = new JacobsContestWidget(ple); - CookieWidget cw = new CookieWidget(f); - - // goofy ahh 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/GardenScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenScreen.java deleted file mode 100644 index 30f4bbc3..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenScreen.java +++ /dev/null @@ -1,23 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ComposterWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.GardenServerWidget; -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class GardenScreen extends Screen{ - - public GardenScreen(int w, int h, List ple, Text footer) { - super(w, h); - GardenServerWidget gsw = new GardenServerWidget(ple); - ComposterWidget cw = new ComposterWidget(ple); - - 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/GenericInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java deleted file mode 100644 index b9b03a75..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java +++ /dev/null @@ -1,51 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -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.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class GenericInfoScreen extends Screen { - - public GenericInfoScreen(int w, int h, List ple, Text footer) { - super(w, h); - - String f = footer.getString(); - - SkillsWidget sw = new SkillsWidget(ple); - EventWidget evw = new EventWidget(ple, false); - UpgradeWidget uw = new UpgradeWidget(f); - - ProfileWidget pw = new ProfileWidget(ple); - EffectWidget efw = new EffectWidget(f); - - ElectionWidget elw = new ElectionWidget(ple); - CookieWidget cw = new CookieWidget(f); - - // goofy ahh layout code incoming - 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/GenericServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericServerScreen.java deleted file mode 100644 index fee4a9f8..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericServerScreen.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; - -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class GenericServerScreen extends Screen { - - public GenericServerScreen(int w, int h, List ple, Text footer) { - super(w, h); - ServerWidget sw = new ServerWidget(ple); - this.center(sw); - this.addWidget(sw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GuestPlayerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GuestPlayerScreen.java deleted file mode 100644 index 4647da7a..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GuestPlayerScreen.java +++ /dev/null @@ -1,23 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandGuestsWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandOwnersWidget; - -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class GuestPlayerScreen extends Screen{ - - public GuestPlayerScreen(int w, int h, List list, Text footer) { - super(w, h); - IslandGuestsWidget igw = new IslandGuestsWidget(list); - IslandOwnersWidget iow = new IslandOwnersWidget(list); - 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/GuestServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GuestServerScreen.java deleted file mode 100644 index 03e22292..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GuestServerScreen.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.GuestServerWidget; - -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class GuestServerScreen extends Screen{ - - public GuestServerScreen(int w, int h, List list, Text footer) { - super(w, h); - GuestServerWidget gsw = new GuestServerWidget(list); - this.center(gsw); - this.addWidget(gsw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HomePlayerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HomePlayerScreen.java deleted file mode 100644 index 506f773f..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HomePlayerScreen.java +++ /dev/null @@ -1,22 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandGuestsWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandSelfWidget; - -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class HomePlayerScreen extends Screen { - - public HomePlayerScreen(int w, int h, List list, Text footer) { - super(w, h); - IslandSelfWidget isw = new IslandSelfWidget(list); - IslandGuestsWidget igw = new IslandGuestsWidget(list); - 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/HomeServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HomeServerScreen.java deleted file mode 100644 index 6d67f829..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HomeServerScreen.java +++ /dev/null @@ -1,24 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandServerWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.MinionWidget; - -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class HomeServerScreen extends Screen { - - public HomeServerScreen(int w, int h, List list, Text footer) { - super(w, h); - - IslandServerWidget isw = new IslandServerWidget(list); - MinionWidget mw = new MinionWidget(list); - 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/HubServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HubServerScreen.java deleted file mode 100644 index 15ac3183..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/HubServerScreen.java +++ /dev/null @@ -1,23 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.FireSaleWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; - -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class HubServerScreen extends Screen { - - public HubServerScreen(int w, int h, List ple, Text footer) { - super(w, h); - ServerWidget sw = new ServerWidget(ple); - FireSaleWidget fsw = new FireSaleWidget(ple); - 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/MineServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/MineServerScreen.java deleted file mode 100644 index 0e581852..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/MineServerScreen.java +++ /dev/null @@ -1,30 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -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.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class MineServerScreen extends Screen{ - - public MineServerScreen(int w, int h, List list, Text footer) { - super(w, h); - ServerWidget sw = new ServerWidget(list); - PowderWidget pw = new PowderWidget(list); - CommsWidget cw = new CommsWidget(list); - ForgeWidget fw = new ForgeWidget(list); - stackWidgetsH(sw, pw, cw); - centerH(fw); - offCenterL(sw); - offCenterL(pw); - offCenterL(cw); - offCenterR(fw); - this.addWidgets(fw, cw, pw, sw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ParkServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ParkServerScreen.java deleted file mode 100644 index bb601251..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ParkServerScreen.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ParkServerWidget; - -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class ParkServerScreen extends Screen{ - - public ParkServerScreen(int w, int h, List ple, Text footer) { - super(w, h); - ParkServerWidget sw = new ParkServerWidget(ple); - this.center(sw); - this.addWidget(sw); - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlayerListScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlayerListScreen.java deleted file mode 100644 index 14adc322..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlayerListScreen.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.List; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.PlayerListWidget; - -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.text.Text; - -public class PlayerListScreen extends Screen { - - public PlayerListScreen(int w, int h, List ple, Text footer) { - super(w, h); - PlayerListWidget plw = new PlayerListWidget(ple); - this.center(plw); - this.addWidget(plw); - } - -} 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 fb5159a8..0274f839 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 @@ -4,6 +4,9 @@ import java.util.ArrayList; import java.util.List; import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.genericInfo.*; +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.*; +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList.*; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; @@ -225,7 +228,7 @@ public class Screen { private static Screen correctGenericScrn(int w, int h, List list, Text footer) { return switch (getScreenType(list)) { - case GARDEN -> new GardenInfoScreen(w, h, list, footer); + case GARDEN -> new GardenInfoScreen(w, h, list, footer); // ok default -> new GenericInfoScreen(w, h, list, footer); // ok }; } 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 new file mode 100644 index 00000000..639bc135 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GardenInfoScreen.java @@ -0,0 +1,51 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.genericInfo; + +import java.util.List; + +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.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class GardenInfoScreen extends Screen { + + public GardenInfoScreen(int w, int h, List ple, Text footer) { + super(w, h); + + String f = footer.getString(); + + GardenSkillsWidget gsw = new GardenSkillsWidget(ple); + EventWidget evw = new EventWidget(ple, true); + UpgradeWidget uw = new UpgradeWidget(f); + + ProfileWidget pw = new ProfileWidget(ple); + EffectWidget efw = new EffectWidget(f); + + JacobsContestWidget jcw = new JacobsContestWidget(ple); + CookieWidget cw = new CookieWidget(f); + + // goofy ahh 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 new file mode 100644 index 00000000..dda4b401 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericInfoScreen.java @@ -0,0 +1,52 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.genericInfo; + +import java.util.List; + +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.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class GenericInfoScreen extends Screen { + + public GenericInfoScreen(int w, int h, List ple, Text footer) { + super(w, h); + + String f = footer.getString(); + + SkillsWidget sw = new SkillsWidget(ple); + EventWidget evw = new EventWidget(ple, false); + UpgradeWidget uw = new UpgradeWidget(f); + + ProfileWidget pw = new ProfileWidget(ple); + EffectWidget efw = new EffectWidget(f); + + ElectionWidget elw = new ElectionWidget(ple); + CookieWidget cw = new CookieWidget(f); + + // goofy ahh layout code incoming + 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/main/DungeonHubScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/DungeonHubScreen.java new file mode 100644 index 00000000..5279f196 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/DungeonHubScreen.java @@ -0,0 +1,25 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EssenceWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class DungeonHubScreen extends Screen{ + + public DungeonHubScreen(int w, int h, List list, Text footer) { + super(w, h); + ServerWidget sw = new ServerWidget(list); + EssenceWidget ew = new EssenceWidget(list); + centerW(sw); + centerW(ew); + 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 new file mode 100644 index 00000000..ed8160cb --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/DungeonScreen.java @@ -0,0 +1,38 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.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.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class DungeonScreen extends Screen { + + public DungeonScreen(int w, int h, List ple, Text footer) { + super(w, h); + DungeonDownedWidget ddow = new DungeonDownedWidget(ple); + DungeonDeathWidget ddew = new DungeonDeathWidget(ple); + DungeonSecretWidget dscw = new DungeonSecretWidget(ple); + DungeonServerWidget dsrw = new DungeonServerWidget(ple); + DungeonPuzzleWidget dpuw = new DungeonPuzzleWidget(ple); + + offCenterL(ddow); + offCenterL(ddew); + offCenterL(dscw); + offCenterR(dsrw); + offCenterR(dpuw); + + stackWidgetsH(ddow, ddew, dscw); + stackWidgetsH(dsrw, dpuw); + + addWidgets(ddow, ddew, dscw, dsrw, dpuw); + + } + +} 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 new file mode 100644 index 00000000..ea374c6d --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/FarmingServerScreen.java @@ -0,0 +1,24 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.TrapperWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class FarmingServerScreen extends Screen{ + + public FarmingServerScreen(int w, int h, List list, Text footer) { + super(w, h); + ServerWidget sw = new ServerWidget(list); + TrapperWidget tw = new TrapperWidget(list); + centerW(sw); + centerW(tw); + 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 new file mode 100644 index 00000000..4ea11109 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GardenScreen.java @@ -0,0 +1,24 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ComposterWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.GardenServerWidget; +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class GardenScreen extends Screen{ + + public GardenScreen(int w, int h, List ple, Text footer) { + super(w, h); + GardenServerWidget gsw = new GardenServerWidget(ple); + ComposterWidget cw = new ComposterWidget(ple); + + 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 new file mode 100644 index 00000000..c8cc60a6 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GenericServerScreen.java @@ -0,0 +1,20 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class GenericServerScreen extends Screen { + + public GenericServerScreen(int w, int h, List ple, Text footer) { + super(w, h); + ServerWidget sw = new ServerWidget(ple); + 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 new file mode 100644 index 00000000..6a583c38 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/GuestServerScreen.java @@ -0,0 +1,20 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.GuestServerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class GuestServerScreen extends Screen{ + + public GuestServerScreen(int w, int h, List list, Text footer) { + super(w, h); + GuestServerWidget gsw = new GuestServerWidget(list); + 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 new file mode 100644 index 00000000..3c2b8fac --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/HomeServerScreen.java @@ -0,0 +1,25 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandServerWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.MinionWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class HomeServerScreen extends Screen { + + public HomeServerScreen(int w, int h, List list, Text footer) { + super(w, h); + + IslandServerWidget isw = new IslandServerWidget(list); + MinionWidget mw = new MinionWidget(list); + 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 new file mode 100644 index 00000000..0a488d1d --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/HubServerScreen.java @@ -0,0 +1,24 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.FireSaleWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class HubServerScreen extends Screen { + + public HubServerScreen(int w, int h, List ple, Text footer) { + super(w, h); + ServerWidget sw = new ServerWidget(ple); + FireSaleWidget fsw = new FireSaleWidget(ple); + 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 new file mode 100644 index 00000000..0fe408bc --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/MineServerScreen.java @@ -0,0 +1,31 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.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.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class MineServerScreen extends Screen{ + + public MineServerScreen(int w, int h, List list, Text footer) { + super(w, h); + ServerWidget sw = new ServerWidget(list); + PowderWidget pw = new PowderWidget(list); + CommsWidget cw = new CommsWidget(list); + ForgeWidget fw = new ForgeWidget(list); + stackWidgetsH(sw, pw, cw); + centerH(fw); + offCenterL(sw); + offCenterL(pw); + offCenterL(cw); + 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 new file mode 100644 index 00000000..90ab9edb --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/ParkServerScreen.java @@ -0,0 +1,20 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ParkServerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class ParkServerScreen extends Screen{ + + public ParkServerScreen(int w, int h, List ple, Text footer) { + super(w, h); + ParkServerWidget sw = new ParkServerWidget(ple); + this.center(sw); + this.addWidget(sw); + } + +} 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 new file mode 100644 index 00000000..a7aa970d --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/DungeonPlayerScreen.java @@ -0,0 +1,31 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonPlayerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class DungeonPlayerScreen extends Screen { + + public DungeonPlayerScreen(int w, int h, List ple, Text footer) { + super(w, h); + DungeonPlayerWidget dpw1 = new DungeonPlayerWidget(ple, 1); + DungeonPlayerWidget dpw2 = new DungeonPlayerWidget(ple, 2); + DungeonPlayerWidget dpw3 = new DungeonPlayerWidget(ple, 3); + DungeonPlayerWidget dpw4 = new DungeonPlayerWidget(ple, 4); + DungeonPlayerWidget dpw5 = new DungeonPlayerWidget(ple, 5); + + offCenterL(dpw1); + offCenterL(dpw2); + offCenterL(dpw3); + offCenterR(dpw4); + offCenterR(dpw5); + stackWidgetsH(dpw1, dpw2, dpw3); + stackWidgetsH(dpw4, dpw5); + 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 new file mode 100644 index 00000000..30c3a4ba --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/GuestPlayerScreen.java @@ -0,0 +1,24 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList; + +import java.util.List; + +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.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class GuestPlayerScreen extends Screen{ + + public GuestPlayerScreen(int w, int h, List list, Text footer) { + super(w, h); + IslandGuestsWidget igw = new IslandGuestsWidget(list); + IslandOwnersWidget iow = new IslandOwnersWidget(list); + 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 new file mode 100644 index 00000000..08f44d8f --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/HomePlayerScreen.java @@ -0,0 +1,23 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList; + +import java.util.List; + +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.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class HomePlayerScreen extends Screen { + + public HomePlayerScreen(int w, int h, List list, Text footer) { + super(w, h); + IslandSelfWidget isw = new IslandSelfWidget(list); + IslandGuestsWidget igw = new IslandGuestsWidget(list); + 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 new file mode 100644 index 00000000..d40353b8 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/playerList/PlayerListScreen.java @@ -0,0 +1,20 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.PlayerListWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class PlayerListScreen extends Screen { + + public PlayerListScreen(int w, int h, List ple, Text footer) { + super(w, h); + PlayerListWidget plw = new PlayerListWidget(ple); + this.center(plw); + this.addWidget(plw); + } + +} -- cgit From 20ef6eaf4672fac2d98022f9f2368b3b83868ab0 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 8 Apr 2023 20:20:07 +0200 Subject: Cleanup unused things in the mixin, reword crashing text --- src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index 36d4a375..ca6c9b41 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -30,7 +30,6 @@ public class PlayerListHudMixin { @Shadow private Text footer; - boolean ok = true; @Inject(at = @At("HEAD"), method = "render(Lnet/minecraft/client/util/math/MatrixStack;ILnet/minecraft/scoreboard/Scoreboard;Lnet/minecraft/scoreboard/ScoreboardObjective;)V", cancellable = true) public void skyblocker$renderTabHud(MatrixStack ms, int scaledW, Scoreboard sb, ScoreboardObjective sbo, CallbackInfo info) { @@ -61,8 +60,7 @@ public class PlayerListHudMixin { } } catch (Exception e) { e.printStackTrace(); - SkyblockerConfig.get().general.tabHudEnabled = false; - MinecraftClient.getInstance().player.sendMessage(Text.of("The tab HUD has crashed due to some unexpected text, see log! :(")); + MinecraftClient.getInstance().player.sendMessage(Text.of("The tab HUD has encountered unexpected text, see log! :(")); } } -- cgit From 122db60f573737502842f95089b68ba5bc8920dd Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 8 Apr 2023 20:22:06 +0200 Subject: Set correct translation keys for keybinds. --- src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/main/java/me') 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 3cc75e00..01c196f7 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java @@ -16,12 +16,12 @@ public class TabHud { public static void init() { playerTgl = KeyBindingHelper.registerKeyBinding( - new KeyBinding("key.skyhytab.playerTgl", + new KeyBinding("key.skyblocker.playerTgl", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_LEFT_SHIFT, "key.categories.skyblocker")); genericTgl = KeyBindingHelper.registerKeyBinding( - new KeyBinding("key.tabhud.genericTgl", + new KeyBinding("key.skyblocker.genericTgl", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_LEFT_ALT, "key.categories.skyblocker")); @@ -31,7 +31,7 @@ public class TabHud { // GLFW.GLFW_KEY_LEFT_ALT, // "key.categories.skyblocker")); defaultTgl = KeyBindingHelper.registerKeyBinding( - new KeyBinding("key.tabhud.defaultTgl", + new KeyBinding("key.skyblocker.defaultTgl", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_B, "key.categories.skyblocker")); -- cgit From 0f49a755cd93ad11d37290a7744a36297df1960b Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 8 Apr 2023 20:23:16 +0200 Subject: Fix crashing election widget. Cole was missing from the mayor list --- src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java | 1 + .../me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ElectionWidget.java | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java index f3e18b44..120cabd8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java @@ -48,4 +48,5 @@ public class Ico { public static final ItemStack COMPOSTER = new ItemStack(Items.COMPOSTER); public static final ItemStack SAPLING = new ItemStack(Items.OAK_SAPLING); public static final ItemStack MILESTONE = new ItemStack(Items.LODESTONE); + public static final ItemStack PICKAXE = new ItemStack(Items.IRON_PICKAXE); } 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 e75b7152..1c845467 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 @@ -16,8 +16,6 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// XXX crashes when in garden, as this shows jacob's farming info there... -// "starts in", then the three farmable things // this widget shows the status or results of the current election public class ElectionWidget extends Widget { @@ -37,6 +35,7 @@ public class ElectionWidget extends Widget { static { MAYOR_DATA.put("Aatrox", Ico.DIASWORD); + MAYOR_DATA.put("Cole", Ico.PICKAXE); MAYOR_DATA.put("Diana", Ico.BONE); MAYOR_DATA.put("Diaz", Ico.GOLD); MAYOR_DATA.put("Finnegan", Ico.HOE); @@ -55,7 +54,6 @@ public class ElectionWidget extends Widget { if (StrMan.strAt(list, 76).contains("Over!")) { // election is over - IcoTextComponent over = new IcoTextComponent(Ico.BARRIER, EL_OVER); this.addComponent(over); -- cgit From 0249b4c809ef017949b280fcf5deaf973bb1eb87 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 15 Apr 2023 16:39:28 +0200 Subject: Add new "tab-menu-like" style options to dwarven mines HUD. --- .../skyblocker/config/SkyblockerConfig.java | 18 +++++++ .../skyblocker/skyblock/dwarven/DwarvenHud.java | 59 ++++++++++++++++------ .../skyblock/tabhud/widget/CommsWidget.java | 30 ++++++++++- .../skyblocker/skyblock/tabhud/widget/Widget.java | 12 +++-- .../resources/assets/skyblocker/lang/en_us.json | 4 ++ 5 files changed, 103 insertions(+), 20 deletions(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index ae96a8f7..089f67c8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -277,11 +277,29 @@ public class SkyblockerConfig implements ConfigData { public static class DwarvenHud { public boolean enabled = true; + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) + @ConfigEntry.Gui.Tooltip(count = 3) + public Style style = Style.SIMPLE; public boolean enableBackground = true; public int x = 10; public int y = 10; } + public enum Style { + SIMPLE, + FANCY, + CLASSIC; + + @Override + public String toString() { + return switch (this) { + case SIMPLE -> "Simple"; + case FANCY -> "Fancy"; + case CLASSIC -> "Classic"; + }; + } + } + public static class Messages { @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) public ChatFilterResult hideAbility = ChatFilterResult.PASS; 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 86fe58fe..9f1e783c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java @@ -1,6 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.CommsWidget; 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; @@ -55,17 +56,49 @@ public class DwarvenHud { } public static void render(MatrixStack matrixStack, int hudX, int hudY, List commissions) { - if (commissions.size() > 0){ - if (SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground) - DrawableHelper.fill(matrixStack, hudX, hudY, hudX + 200, hudY + (20 * commissions.size()), 0x64000000); - int y = 0; - for (Commission commission : commissions) { - client.textRenderer.drawWithShadow(matrixStack, Text.literal(commission.commission).styled(style -> style.withColor(Formatting.AQUA)).append(Text.literal(": " + commission.progression).styled(style -> style.withColor(Formatting.GREEN))), hudX + 5, hudY + y + 5, 0xFFFFFFFF); - y += 20; - } + if (commissions.size() <= 0) { + return; + } + + switch(SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.style) { + case SIMPLE -> renderSimple(matrixStack, hudX, hudY, commissions); + case FANCY -> renderFancy(matrixStack, hudX, hudY, commissions); + case CLASSIC -> renderClassic(matrixStack, hudX, hudY, commissions); + } + } + + public static void renderClassic(MatrixStack matrixStack, int hudX, int hudY, List commissions) { + if (SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground) { + DrawableHelper.fill(matrixStack, hudX, hudY, hudX + 200, hudY + (20 * commissions.size()), 0x64000000); + } + + int y = 0; + for (Commission commission : commissions) { + client.textRenderer + .drawWithShadow(matrixStack, + Text.literal(commission.commission + ": ") + .styled(style -> style.withColor(Formatting.AQUA)) + .append(Text.literal(commission.progression) + .styled(style -> style.withColor(Formatting.GREEN))), + hudX + 5, hudY + y + 5, 0xFFFFFFFF); + y += 20; } } + public static void renderSimple(MatrixStack matrixStack, int hudX, int hudY, List commissions) { + CommsWidget cw = new CommsWidget(commissions, false); + cw.setX(hudX); + cw.setY(hudY); + cw.render(matrixStack, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground); + } + + public static void renderFancy(MatrixStack matrixStack, int hudX, int hudY, List commissions) { + CommsWidget cw = new CommsWidget(commissions, true); + cw.setX(hudX); + cw.setY(hudY); + cw.render(matrixStack, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground); + } + public static void update() { commissionList = new ArrayList<>(); if (client.player == null || !SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enabled) return; @@ -83,13 +116,7 @@ public class DwarvenHud { }); } - public static class Commission{ - final String commission; - final String progression; + // steamroller tactics to get visibility from outside classes + public static record Commission(String commission, String progression){} - public Commission(String commission, String progression){ - this.commission = commission; - this.progression = progression; - } - } } 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 ef86b8f0..120c53d8 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 @@ -4,10 +4,12 @@ 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.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.Component; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; - import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; @@ -46,6 +48,32 @@ public class CommsWidget extends Widget { 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) { return MathHelper.hsvToRgb(pcnt / 300f, 0.9f, 0.9f); } 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 1fdad37a..63a72563 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 @@ -73,10 +73,16 @@ public abstract class Widget { } public final void render(MatrixStack ms) { + this.render(ms, true); + } + + public final void render(MatrixStack ms, boolean hasBG) { - DrawableHelper.fill(ms, x + 1, y, x + w - 1, y + h, COL_BG_BOX); - DrawableHelper.fill(ms, x, y + 1, x + 1, y + h - 1, COL_BG_BOX); - DrawableHelper.fill(ms, x + w - 1, y + 1, x + w, y + h - 1, COL_BG_BOX); + if (hasBG) { + DrawableHelper.fill(ms, x + 1, y, x + w - 1, y + h, COL_BG_BOX); + DrawableHelper.fill(ms, x, y + 1, x + 1, y + h - 1, COL_BG_BOX); + DrawableHelper.fill(ms, x + w - 1, y + 1, x + w, y + h - 1, COL_BG_BOX); + } int strHeightHalf = Widget.txtRend.fontHeight / 2; int strAreaWidth = Widget.txtRend.getWidth(title) + 4; diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 143cac3b..a33fd125 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -77,6 +77,10 @@ "text.autoconfig.skyblocker.option.locations.dwarvenMines.solvePuzzler": "Solve Puzzler Puzzle", "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud": "Dwarven HUD", "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enabled": "Enabled", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style": "Style for HUD", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[0]": "Simple: Shows name and percentage.", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[1]": "Fancy: Shows name, percentage, progress bar and an icon.", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[2]": "Classic: Shows name and percentage in a very simple box.", "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enableBackground": "Enable Background", "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.x": "X", "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.y": "Y", -- cgit From 54935e6e6e17f9f7ca54b3bef53b24f65278e86d Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 23 Apr 2023 12:21:34 +0200 Subject: Dungeon puzzle widget now works as intended. --- README.md | 1 - .../java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/StrMan.java | 4 ++++ .../skyblocker/skyblock/tabhud/widget/DungeonPuzzleWidget.java | 7 +++++-- 3 files changed, 9 insertions(+), 3 deletions(-) (limited to 'src/main/java/me') diff --git a/README.md b/README.md index eac4ec16..4b28a2e8 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,6 @@ This will be merged into Skyblocker when ready. It's not at the moment, but you ### Known Issues * Relevant for players: * Crimson Isle is not yet supported. (Getting Combat 24 is just... oof) - * Dungeon puzzles HUD isn't working correctly * Minor visual bugs when using ImmediatelyFast * Relevant for devs: * Scraping the entire player list every frame isn't ideal. (possible optimisation for later) diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/StrMan.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/StrMan.java index 8cd77ac2..4a30cf0f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/StrMan.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/StrMan.java @@ -44,6 +44,10 @@ public class StrMan { return null; } String str = txt.getString(); + if (str.length() == 0) { + return null; + } + Matcher m = p.matcher(str); if (!m.matches()) { LOGGER.error("ERROR: Regex {} failed for input \"{}\"", p.pattern(), str); 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 906d449b..3aba547c 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 @@ -24,9 +24,9 @@ public class DungeonPuzzleWidget extends Widget { // match a puzzle entry // group 1: name // group 2: status - // yes, that " ?" is needed. + // " ?.*" to diescard the solver's name if present // the teleport maze has a trailing whitespace that messes with the regex - private static final Pattern PUZZLE_PATTERN = Pattern.compile(" (.*): \\[(.*)\\] ?"); + private static final Pattern PUZZLE_PATTERN = Pattern.compile(" (.*): \\[(.*)\\] ?.*"); public DungeonPuzzleWidget(List list) { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); @@ -43,6 +43,9 @@ public class DungeonPuzzleWidget extends Widget { IcoTextComponent itc = new IcoTextComponent(Ico.SIGN, t); this.addComponent(itc); pos++; + // code points for puzzle status chars unsolved and solved: 10022, 10004 + // not sure which one is which + // still need to find out codepoint for the puzzle failed char } this.pack(); -- cgit From 19247f09636e10ab673a0f49bc364bd1c3ac518d Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 29 Apr 2023 08:57:23 +0200 Subject: Add untested crimson isle support --- .../skyblocker/skyblock/tabhud/screens/Screen.java | 4 +- .../tabhud/screens/main/CrimsonIsleScreen.java | 30 ++++++++++++ .../skyblock/tabhud/widget/QuestWidget.java | 33 +++++++++++++ .../skyblock/tabhud/widget/ReputationWidget.java | 51 ++++++++++++++++++++ .../skyblock/tabhud/widget/VolcanoWidget.java | 55 ++++++++++++++++++++++ 5 files changed, 171 insertions(+), 2 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/CrimsonIsleScreen.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/QuestWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ReputationWidget.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java index 0274f839..f5a620bf 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java @@ -252,8 +252,8 @@ public class Screen { case CRYSTAL_HOLLOWS, DWARVEN_MINES -> new MineServerScreen(w, h, list, footer); case FARMING_ISLAND -> new FarmingServerScreen(w, h, list, footer); // ok case DUNGEON_HUB -> new DungeonHubScreen(w, h, list, footer); // ok - case DUNGEON -> new DungeonScreen(w, h, list, footer); - case CRIMSON_ISLE -> null; // TODO + case DUNGEON -> new DungeonScreen(w, h, list, footer); // ok + case CRIMSON_ISLE -> new CrimsonIsleScreen(w, h, list, footer); // ??? case GARDEN -> new GardenScreen(w, h, list, footer); default -> new GenericServerScreen(w, h, list, footer); // ok }; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/CrimsonIsleScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/CrimsonIsleScreen.java new file mode 100644 index 00000000..182f6897 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/main/CrimsonIsleScreen.java @@ -0,0 +1,30 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.QuestWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ReputationWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.VolcanoWidget; +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class CrimsonIsleScreen extends Screen { + + public CrimsonIsleScreen(int w, int h, List ple, Text footer) { + super(w, h); + ServerWidget sw = new ServerWidget(ple); + ReputationWidget rw = new ReputationWidget(ple); + QuestWidget qw = new QuestWidget(ple); + VolcanoWidget vw = new VolcanoWidget(ple); + this.stackWidgetsH(sw, rw, vw); + this.offCenterL(sw); + this.offCenterL(rw); + this.offCenterL(vw); + this.offCenterR(qw); + this.centerH(qw); + this.addWidgets(sw, rw, qw, vw); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/QuestWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/QuestWidget.java new file mode 100644 index 00000000..e2bd7fd3 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/QuestWidget.java @@ -0,0 +1,33 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows your Crimson Isle suests + +public class QuestWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Faction Quests").formatted(Formatting.AQUA, + Formatting.BOLD); + + public QuestWidget(List list) { + super(TITLE, Formatting.AQUA.getColorValue()); + + for (int i = 51; i<56; i++) { + String q = StrMan.strAt(list, i).trim(); + IcoTextComponent itc = new IcoTextComponent(Ico.BOOK, Text.literal(q)); + this.addComponent(itc); + } + this.pack(); + + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ReputationWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ReputationWidget.java new file mode 100644 index 00000000..09e1bb00 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ReputationWidget.java @@ -0,0 +1,51 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +// this widget shows your faction status + +public class ReputationWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Faction Status").formatted(Formatting.AQUA, + Formatting.BOLD); + + private static final Pattern PROGRESS_PATTERN = Pattern.compile(" \\|+ \\((\\d+%)\\)"); + private static final Pattern STATE_PATTERN = Pattern.compile("(\\S*) *(\\S*)"); + + public ReputationWidget(List list) { + super(TITLE, Formatting.AQUA.getColorValue()); + + String fname = StrMan.strAt(list, 45).split(" ")[0]; + String rep = StrMan.strAt(list, 46).trim(); + Matcher prog = StrMan.regexAt(list, 47, PROGRESS_PATTERN); + Matcher state = StrMan.regexAt(list, 48, STATE_PATTERN); + + IcoTextComponent faction; + if (fname.equals("Mage")) { + faction = new IcoTextComponent(Ico.POTION, Text.literal(fname).formatted(Formatting.DARK_AQUA)); + } else { + faction = new IcoTextComponent(Ico.SWORD, Text.literal(fname).formatted(Formatting.RED)); + } + this.addComponent(faction); + + float pcnt = Float.parseFloat(prog.group(1)); + + ProgressComponent pc = new ProgressComponent(Ico.LANTERN, Text.of(state.group(1) + " -> " + state.group(2)), pcnt, Formatting.AQUA.getColorValue()); + this.addComponent(pc); + + this.pack(); + + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java new file mode 100644 index 00000000..9c81133f --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java @@ -0,0 +1,55 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; + +import java.util.HashMap; +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; +import net.minecraft.util.Pair; + +// this widget shows the volcano status + +public class VolcanoWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Volcano Status").formatted(Formatting.AQUA, + Formatting.BOLD); + + private static final HashMap> BOOM_TYPE = new HashMap<>(); + + static { + BOOM_TYPE.put("INACTIVE", + new Pair(new ItemStack(Items.BARRIER), Formatting.DARK_GRAY)); + BOOM_TYPE.put("CHILL", + new Pair(new ItemStack(Items.ICE), Formatting.AQUA)); + BOOM_TYPE.put("LOW", + new Pair(new ItemStack(Items.FLINT_AND_STEEL), Formatting.GRAY)); + BOOM_TYPE.put("DISRUPTIVE", + new Pair(new ItemStack(Items.CAMPFIRE), Formatting.WHITE)); + BOOM_TYPE.put("MEDIUM", + new Pair(new ItemStack(Items.LAVA_BUCKET), Formatting.YELLOW)); + BOOM_TYPE.put("HIGH", + new Pair(new ItemStack(Items.FIRE_CHARGE), Formatting.GOLD)); + BOOM_TYPE.put("EXPLOSIVE", + new Pair(new ItemStack(Items.TNT), Formatting.RED)); + BOOM_TYPE.put("CATACLYSMIC", + new Pair(new ItemStack(Items.SKELETON_SKULL), Formatting.DARK_RED)); + } + + public VolcanoWidget(List list) { + super(TITLE, Formatting.AQUA.getColorValue()); + + String s = StrMan.strAt(list, 58).trim(); + Pair p = BOOM_TYPE.get(s); + IcoTextComponent itc = new IcoTextComponent(p.getLeft(), Text.literal(s).formatted(p.getRight())); + this.addComponent(itc); + this.pack(); + + } + +} -- cgit From ea8a507b8a2cc7d59d0bf3b13e3d9f9f17b16703 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 6 May 2023 10:48:23 +0200 Subject: Fire sale widget now correctly shows time until event start. --- .../xmrvizzy/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/main/java/me') 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 97b0e8a2..2f982c61 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 @@ -6,6 +6,7 @@ import java.util.regex.Pattern; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; @@ -34,6 +35,12 @@ public class FireSaleWidget extends Widget { super(TITLE, Formatting.DARK_AQUA.getColorValue()); boolean found = false; + if (StrMan.strAt(list, 46).contains("Starts In")) { + IcoTextComponent start = new IcoTextComponent(Ico.CLOCK, StrMan.stdEntry(list, 46, "Starts in", Formatting.DARK_AQUA)); + this.addComponent(start); + this.pack(); + return; + } for (int i = 46;; i++) { Matcher m = StrMan.regexAt(list, i, FIRE_PATTERN); -- cgit From 13c394fbf2afe77bce080ffdcff99d59d7d8b33d Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 6 May 2023 10:49:13 +0200 Subject: Skills widget should now handle maxxed skills correctly --- .../skyblock/tabhud/widget/SkillsWidget.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/main/java/me') 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 85bd630b..c2eedfa4 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 @@ -6,6 +6,8 @@ import java.util.regex.Pattern; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.Component; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoFatTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent; @@ -25,19 +27,25 @@ public class SkillsWidget extends Widget { // match the skill entry // group 1: skill name and level // group 2: progress to next level (without "%") - private static final Pattern SKILL_PATTERN = Pattern.compile("\\S*: ([A-Za-z]* [0-9]*): (\\S*)%"); + private static final Pattern SKILL_PATTERN = Pattern.compile("\\S*: ([A-Za-z]* [0-9]*): ([0-9.]*)%?"); public SkillsWidget(List list) { super(TITLE, Formatting.YELLOW.getColorValue()); Matcher m = StrMan.regexAt(list, 66, SKILL_PATTERN); - - float pcnt = Float.parseFloat(m.group(2)); String skill = m.group(1); + String pcntStr = m.group(2); - ProgressComponent pc = new ProgressComponent(Ico.LANTERN, Text.of(skill), pcnt, Formatting.GOLD.getColorValue()); + Component progress; + if (!pcntStr.equals("MAX")) { + float pcnt = Float.parseFloat(pcntStr); + progress = new ProgressComponent(Ico.LANTERN, Text.of(skill), + Text.of(pcntStr), pcnt, Formatting.GOLD.getColorValue()); + } else { + progress = new IcoFatTextComponent(Ico.LANTERN, Text.of(skill), Text.literal(pcntStr).formatted(Formatting.RED)); + } - this.addComponent(pc); + this.addComponent(progress); Text speed = StrMan.stdEntry(list, 67, "SPD", Formatting.WHITE); IcoTextComponent spd = new IcoTextComponent(Ico.SUGAR, speed); -- cgit From b1e5e212242bf06c763196743c44b71d92458bb9 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 6 May 2023 10:55:35 +0200 Subject: Hopefully fix CI reputation progress regex. --- .../xmrvizzy/skyblocker/skyblock/tabhud/widget/ReputationWidget.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/java/me') 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 09e1bb00..121e41e8 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 @@ -20,7 +20,7 @@ public class ReputationWidget extends Widget { private static final MutableText TITLE = Text.literal("Faction Status").formatted(Formatting.AQUA, Formatting.BOLD); - private static final Pattern PROGRESS_PATTERN = Pattern.compile(" \\|+ \\((\\d+%)\\)"); + private static final Pattern PROGRESS_PATTERN = Pattern.compile(" \\|+ \\(([0-9.]*%)\\)"); private static final Pattern STATE_PATTERN = Pattern.compile("(\\S*) *(\\S*)"); public ReputationWidget(List list) { @@ -41,7 +41,7 @@ public class ReputationWidget extends Widget { float pcnt = Float.parseFloat(prog.group(1)); - ProgressComponent pc = new ProgressComponent(Ico.LANTERN, Text.of(state.group(1) + " -> " + state.group(2)), pcnt, Formatting.AQUA.getColorValue()); + ProgressComponent pc = new ProgressComponent(Ico.LANTERN, Text.of(state.group(1) + " -> " + state.group(2)), Text.of(rep), pcnt, Formatting.AQUA.getColorValue()); this.addComponent(pc); this.pack(); -- cgit From abde3072657817ce3cec3480e02969b57f7214ca Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 6 May 2023 11:31:58 +0200 Subject: Make code style in screen classes more consistent --- .../skyblocker/skyblock/tabhud/screens/EmptyScreen.java | 2 +- .../tabhud/screens/genericInfo/GardenInfoScreen.java | 4 ++-- .../tabhud/screens/genericInfo/GenericInfoScreen.java | 3 +-- .../skyblock/tabhud/screens/main/CrimsonIsleScreen.java | 2 ++ .../skyblock/tabhud/screens/main/DungeonHubScreen.java | 8 +++++--- .../skyblock/tabhud/screens/main/DungeonScreen.java | 16 ++++++++-------- .../tabhud/screens/main/FarmingServerScreen.java | 8 +++++--- .../skyblock/tabhud/screens/main/GardenScreen.java | 1 + .../tabhud/screens/main/GenericServerScreen.java | 2 ++ .../skyblock/tabhud/screens/main/GuestServerScreen.java | 2 ++ .../skyblock/tabhud/screens/main/HomeServerScreen.java | 1 + .../skyblock/tabhud/screens/main/HubServerScreen.java | 2 ++ .../skyblock/tabhud/screens/main/MineServerScreen.java | 14 ++++++++------ .../skyblock/tabhud/screens/main/ParkServerScreen.java | 2 ++ .../tabhud/screens/playerList/DungeonPlayerScreen.java | 17 +++++++++-------- .../tabhud/screens/playerList/GuestPlayerScreen.java | 2 ++ .../tabhud/screens/playerList/HomePlayerScreen.java | 2 ++ .../tabhud/screens/playerList/PlayerListScreen.java | 2 ++ 18 files changed, 57 insertions(+), 33 deletions(-) (limited to 'src/main/java/me') 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 index 07162834..efc64a70 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/EmptyScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/EmptyScreen.java @@ -8,7 +8,7 @@ import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.Text; public class EmptyScreen extends Screen { - + public EmptyScreen(int w, int h, List ple, Text footer) { super(w, h); EmptyWidget ew = new EmptyWidget(ple); 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 639bc135..f24fb82a 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 @@ -29,8 +29,8 @@ public class GardenInfoScreen extends Screen { JacobsContestWidget jcw = new JacobsContestWidget(ple); CookieWidget cw = new CookieWidget(f); - - // goofy ahh layout code incoming + + // layout code incoming this.stackWidgetsH(gsw, evw, uw); this.stackWidgetsH(pw, efw); this.stackWidgetsH(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 dda4b401..764397ae 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 @@ -30,8 +30,7 @@ public class GenericInfoScreen extends Screen { ElectionWidget elw = new ElectionWidget(ple); CookieWidget cw = new CookieWidget(f); - - // goofy ahh layout code incoming + this.stackWidgetsH(sw, evw, uw); this.stackWidgetsH(pw, efw); this.stackWidgetsH(elw, cw); 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 index 182f6897..7e6e03af 100644 --- 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 @@ -14,10 +14,12 @@ public class CrimsonIsleScreen extends Screen { public CrimsonIsleScreen(int w, int h, List ple, Text footer) { super(w, h); + ServerWidget sw = new ServerWidget(ple); ReputationWidget rw = new ReputationWidget(ple); QuestWidget qw = new QuestWidget(ple); VolcanoWidget vw = new VolcanoWidget(ple); + this.stackWidgetsH(sw, rw, vw); this.offCenterL(sw); this.offCenterL(rw); 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 index 5279f196..4f721dfc 100644 --- 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 @@ -13,11 +13,13 @@ public class DungeonHubScreen extends Screen{ public DungeonHubScreen(int w, int h, List list, Text footer) { super(w, h); + ServerWidget sw = new ServerWidget(list); EssenceWidget ew = new EssenceWidget(list); - centerW(sw); - centerW(ew); - stackWidgetsH(sw, ew); + + 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 index ed8160cb..35383f1b 100644 --- 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 @@ -22,16 +22,16 @@ public class DungeonScreen extends Screen { DungeonServerWidget dsrw = new DungeonServerWidget(ple); DungeonPuzzleWidget dpuw = new DungeonPuzzleWidget(ple); - offCenterL(ddow); - offCenterL(ddew); - offCenterL(dscw); - offCenterR(dsrw); - offCenterR(dpuw); + this.offCenterL(ddow); + this.offCenterL(ddew); + this.offCenterL(dscw); + this.offCenterR(dsrw); + this.offCenterR(dpuw); - stackWidgetsH(ddow, ddew, dscw); - stackWidgetsH(dsrw, dpuw); + this.stackWidgetsH(ddow, ddew, dscw); + this.stackWidgetsH(dsrw, dpuw); - addWidgets(ddow, ddew, dscw, dsrw, dpuw); + this.addWidgets(ddow, ddew, dscw, dsrw, dpuw); } 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 index ea374c6d..206af26c 100644 --- 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 @@ -13,11 +13,13 @@ public class FarmingServerScreen extends Screen{ public FarmingServerScreen(int w, int h, List list, Text footer) { super(w, h); + ServerWidget sw = new ServerWidget(list); TrapperWidget tw = new TrapperWidget(list); - centerW(sw); - centerW(tw); - stackWidgetsH(sw, tw); + + 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 index 4ea11109..3debf905 100644 --- 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 @@ -12,6 +12,7 @@ public class GardenScreen extends Screen{ public GardenScreen(int w, int h, List ple, Text footer) { super(w, h); + GardenServerWidget gsw = new GardenServerWidget(ple); ComposterWidget cw = new ComposterWidget(ple); 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 index c8cc60a6..8afdcac5 100644 --- 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 @@ -12,7 +12,9 @@ public class GenericServerScreen extends Screen { public GenericServerScreen(int w, int h, List ple, Text footer) { super(w, h); + ServerWidget sw = new ServerWidget(ple); + 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 index 6a583c38..b6388be9 100644 --- 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 @@ -12,7 +12,9 @@ public class GuestServerScreen extends Screen{ public GuestServerScreen(int w, int h, List list, Text footer) { super(w, h); + GuestServerWidget gsw = new GuestServerWidget(list); + 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 index 3c2b8fac..9ce8ee0e 100644 --- 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 @@ -16,6 +16,7 @@ public class HomeServerScreen extends Screen { IslandServerWidget isw = new IslandServerWidget(list); MinionWidget mw = new MinionWidget(list); + this.centerH(isw); this.centerH(mw); this.stackWidgetsW(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 index 0a488d1d..3ba8fc47 100644 --- 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 @@ -13,8 +13,10 @@ public class HubServerScreen extends Screen { public HubServerScreen(int w, int h, List ple, Text footer) { super(w, h); + ServerWidget sw = new ServerWidget(ple); FireSaleWidget fsw = new FireSaleWidget(ple); + this.centerW(sw); this.centerW(fsw); this.stackWidgetsH(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 index 0fe408bc..f0dd6e0a 100644 --- 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 @@ -15,16 +15,18 @@ public class MineServerScreen extends Screen{ public MineServerScreen(int w, int h, List list, Text footer) { super(w, h); + ServerWidget sw = new ServerWidget(list); PowderWidget pw = new PowderWidget(list); CommsWidget cw = new CommsWidget(list); ForgeWidget fw = new ForgeWidget(list); - stackWidgetsH(sw, pw, cw); - centerH(fw); - offCenterL(sw); - offCenterL(pw); - offCenterL(cw); - offCenterR(fw); + + this.stackWidgetsH(sw, pw, cw); + this.centerH(fw); + this.offCenterL(sw); + this.offCenterL(pw); + this.offCenterL(cw); + 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 index 90ab9edb..c1d09f6c 100644 --- 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 @@ -12,7 +12,9 @@ public class ParkServerScreen extends Screen{ public ParkServerScreen(int w, int h, List ple, Text footer) { super(w, h); + ParkServerWidget sw = new ParkServerWidget(ple); + this.center(sw); this.addWidget(sw); } 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 index a7aa970d..aba19c56 100644 --- 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 @@ -12,20 +12,21 @@ public class DungeonPlayerScreen extends Screen { public DungeonPlayerScreen(int w, int h, List ple, Text footer) { super(w, h); + DungeonPlayerWidget dpw1 = new DungeonPlayerWidget(ple, 1); DungeonPlayerWidget dpw2 = new DungeonPlayerWidget(ple, 2); DungeonPlayerWidget dpw3 = new DungeonPlayerWidget(ple, 3); DungeonPlayerWidget dpw4 = new DungeonPlayerWidget(ple, 4); DungeonPlayerWidget dpw5 = new DungeonPlayerWidget(ple, 5); - offCenterL(dpw1); - offCenterL(dpw2); - offCenterL(dpw3); - offCenterR(dpw4); - offCenterR(dpw5); - stackWidgetsH(dpw1, dpw2, dpw3); - stackWidgetsH(dpw4, dpw5); - addWidgets(dpw1, dpw2, dpw3, dpw4, dpw5); + 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 index 30c3a4ba..f8210443 100644 --- 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 @@ -13,8 +13,10 @@ public class GuestPlayerScreen extends Screen{ public GuestPlayerScreen(int w, int h, List list, Text footer) { super(w, h); + IslandGuestsWidget igw = new IslandGuestsWidget(list); IslandOwnersWidget iow = new IslandOwnersWidget(list); + this.centerH(iow); this.centerH(igw); this.stackWidgetsW(igw, iow); 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 index 08f44d8f..d89f6d6a 100644 --- 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 @@ -13,8 +13,10 @@ public class HomePlayerScreen extends Screen { public HomePlayerScreen(int w, int h, List list, Text footer) { super(w, h); + IslandSelfWidget isw = new IslandSelfWidget(list); IslandGuestsWidget igw = new IslandGuestsWidget(list); + this.centerH(isw); this.centerH(igw); this.stackWidgetsW(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 index d40353b8..eca2e4aa 100644 --- 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 @@ -12,7 +12,9 @@ public class PlayerListScreen extends Screen { public PlayerListScreen(int w, int h, List ple, Text footer) { super(w, h); + PlayerListWidget plw = new PlayerListWidget(ple); + this.center(plw); this.addWidget(plw); } -- cgit From 0c3831ee62f933963d176129d63da35b302482d0 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 6 May 2023 11:32:37 +0200 Subject: Add more info to comment about Commission record --- src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/me') 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 9f1e783c..142a1856 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java @@ -116,7 +116,7 @@ public class DwarvenHud { }); } - // steamroller tactics to get visibility from outside classes + // steamroller tactics to get visibility from outside classes (CommsWidget) public static record Commission(String commission, String progression){} } -- cgit From 763507b427d151c77a3c5a1b8dfe03f0a4a059e1 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 6 May 2023 11:32:50 +0200 Subject: Minor refactoring --- .../me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index ca6c9b41..f4089f83 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -31,13 +31,12 @@ public class PlayerListHudMixin { private Text footer; @Inject(at = @At("HEAD"), method = "render(Lnet/minecraft/client/util/math/MatrixStack;ILnet/minecraft/scoreboard/Scoreboard;Lnet/minecraft/scoreboard/ScoreboardObjective;)V", cancellable = true) - public void skyblocker$renderTabHud(MatrixStack ms, int scaledW, Scoreboard sb, ScoreboardObjective sbo, CallbackInfo info) { + public void skyblocker$renderTabHud(MatrixStack ms, int scaledW, Scoreboard sb, ScoreboardObjective sbo, + CallbackInfo info) { - if (!Utils.isOnSkyblock) { - return; - } - - if (TabHud.defaultTgl.isPressed()) { + if (!Utils.isOnSkyblock + || !SkyblockerConfig.get().general.tabHudEnabled + || TabHud.defaultTgl.isPressed()) { return; } @@ -47,7 +46,8 @@ public class PlayerListHudMixin { return; } - List list = nwH.getListedPlayerListEntries().stream().sorted(PlayerListHudAccessor.getOrdering()).toList(); + List list = nwH.getListedPlayerListEntries().stream() + .sorted(PlayerListHudAccessor.getOrdering()).toList(); int w = scaledW; int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); @@ -60,7 +60,7 @@ public class PlayerListHudMixin { } } catch (Exception e) { e.printStackTrace(); - MinecraftClient.getInstance().player.sendMessage(Text.of("The tab HUD has encountered unexpected text, see log! :(")); + client.player.sendMessage(Text.of("The tab HUD has encountered unexpected text, see log! :(")); } } -- cgit From cff839b60cc2d5c09defcf7b4608022ebc1e4fdb Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 6 May 2023 11:33:24 +0200 Subject: Move logic to find the player's location to it's own class --- .../skyblocker/skyblock/tabhud/screens/Screen.java | 179 +++++++-------------- .../skyblock/tabhud/util/PlayerLocator.java | 86 ++++++++++ 2 files changed, 142 insertions(+), 123 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java (limited to 'src/main/java/me') 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 f5a620bf..f60af79d 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 @@ -7,7 +7,7 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.genericInfo.*; import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.*; import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList.*; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerLocator; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; import net.minecraft.client.network.PlayerListEntry; @@ -16,26 +16,6 @@ import net.minecraft.text.Text; public class Screen { - private enum ScreenType { - 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, - NONE - } - private ArrayList widgets = new ArrayList<>(); private int w, h; @@ -44,6 +24,61 @@ public class Screen { this.h = h; } + public static Screen getCorrect(int w, int h, List ple, Text footer) { + if (TabHud.genericTgl.isPressed()) { + return Screen.correctGenericScrn(w, h, ple, footer); + // } else if (TabHud.mapTgl.isPressed()) { + // return Screen.correctMapScrn(w, h, ple, footer); + } else if (TabHud.playerTgl.isPressed()) { + return Screen.correctPlayerScrn(w, h, ple, footer); + } else { + return Screen.correctMainScrn(w, h, ple, footer); + } + } + + + // private static Screen correctMapScrn(int w, int h, List list, Text footer) { + // // return switch (getScreenType(list)) { + // // case CRYSTAL_HOLLOWS -> null; + // // case DUNGEON -> null; + // // default -> new EmptyScreen(w, h, list, footer); + // // }; + // return new EmptyScreen(w, h, list, footer); + // } + + private static Screen correctGenericScrn(int w, int h, List list, Text footer) { + return switch (PlayerLocator.getPlayerLocation()) { + case GARDEN -> new GardenInfoScreen(w, h, list, footer); // ok + default -> new GenericInfoScreen(w, h, list, footer); // ok + }; + } + + + private static Screen correctPlayerScrn(int w, int h, List list, Text footer) { + return switch (PlayerLocator.getPlayerLocation()) { + case GUEST_ISLAND -> new GuestPlayerScreen(w, h, list, footer); // ok + case HOME_ISLAND -> new HomePlayerScreen(w, h, list, footer); // ok + case DUNGEON -> new DungeonPlayerScreen(w, h, list, footer); + default -> new PlayerListScreen(w, h, list, footer); // ok + }; + } + + private static Screen correctMainScrn(int w, int h, List list, Text footer) { + return switch (PlayerLocator.getPlayerLocation()) { + case PARK -> new ParkServerScreen(w, h, list, footer); // ok + case HUB -> new HubServerScreen(w, h, list, footer); // ok + case HOME_ISLAND -> new HomeServerScreen(w, h, list, footer); // ok + case GUEST_ISLAND -> new GuestServerScreen(w, h, list, footer); // ok + case CRYSTAL_HOLLOWS, DWARVEN_MINES -> new MineServerScreen(w, h, list, footer); + case FARMING_ISLAND -> new FarmingServerScreen(w, h, list, footer); // ok + case DUNGEON_HUB -> new DungeonHubScreen(w, h, list, footer); // ok + case DUNGEON -> new DungeonScreen(w, h, list, footer); // ok + case CRIMSON_ISLE -> new CrimsonIsleScreen(w, h, list, footer); // ??? + case GARDEN -> new GardenScreen(w, h, list, footer); + default -> new GenericServerScreen(w, h, list, footer); // ok + }; + } + public void addWidget(Widget w) { widgets.add(w); } @@ -157,106 +192,4 @@ public class Screen { } w.setX(xCor); } - - public static Screen getCorrect(int w, int h, List ple, Text footer) { - if (TabHud.genericTgl.isPressed()) { - return Screen.correctGenericScrn(w, h, ple, footer); - // } else if (TabHud.mapTgl.isPressed()) { - // return Screen.correctMapScrn(w, h, ple, footer); - } else if (TabHud.playerTgl.isPressed()) { - return Screen.correctPlayerScrn(w, h, ple, footer); - } else { - return Screen.correctMainScrn(w, h, ple, footer); - } - } - - - private static ScreenType getScreenType(List ple) { - String cat2Name = StrMan.strAt(ple, 40); - - if (cat2Name.contains("Dungeon Stats")) { - return ScreenType.DUNGEON; - } - - String areaDesciptor = StrMan.strAt(ple, 41).substring(6); - switch (areaDesciptor) { - case "Private Island": - if (ple.get(44).getDisplayName().getString().endsWith("Guest")) { - return ScreenType.GUEST_ISLAND; - } else { - return ScreenType.HOME_ISLAND; - } - case "Crimson Isle": - return ScreenType.CRIMSON_ISLE; - case "Dungeon Hub": - return ScreenType.DUNGEON_HUB; - case "The Farming Islands": - return ScreenType.FARMING_ISLAND; - case "The Park": - return ScreenType.PARK; - case "Dwarven Mines": - return ScreenType.DWARVEN_MINES; - case "Crystal Hollows": - return ScreenType.CRYSTAL_HOLLOWS; - case "The End": - return ScreenType.END; - case "Gold Mine": - return ScreenType.GOLD_MINE; - case "Deep Caverns": - return ScreenType.DEEP_CAVERNS; - case "Hub": - return ScreenType.HUB; - case "Spider's Den": - return ScreenType.SPIDER_DEN; - case "Jerry's Workshop": - return ScreenType.JERRY; - case "Garden": - return ScreenType.GARDEN; - default: - return ScreenType.NONE; - } - } - - // private static Screen correctMapScrn(int w, int h, List list, Text footer) { - // // return switch (getScreenType(list)) { - // // case CRYSTAL_HOLLOWS -> null; - // // case DUNGEON -> null; - // // default -> new EmptyScreen(w, h, list, footer); - // // }; - // return new EmptyScreen(w, h, list, footer); - // } - - private static Screen correctGenericScrn(int w, int h, List list, Text footer) { - return switch (getScreenType(list)) { - case GARDEN -> new GardenInfoScreen(w, h, list, footer); // ok - default -> new GenericInfoScreen(w, h, list, footer); // ok - }; - } - - - private static Screen correctPlayerScrn(int w, int h, List list, Text footer) { - return switch (getScreenType(list)) { - case GUEST_ISLAND -> new GuestPlayerScreen(w, h, list, footer); // ok - case HOME_ISLAND -> new HomePlayerScreen(w, h, list, footer); // ok - case DUNGEON -> new DungeonPlayerScreen(w, h, list, footer); - default -> new PlayerListScreen(w, h, list, footer); // ok - }; - } - - private static Screen correctMainScrn(int w, int h, List list, Text footer) { - return switch (getScreenType(list)) { - case PARK -> new ParkServerScreen(w, h, list, footer); // ok - case HUB -> new HubServerScreen(w, h, list, footer); // ok - case HOME_ISLAND -> new HomeServerScreen(w, h, list, footer); // ok - case GUEST_ISLAND -> new GuestServerScreen(w, h, list, footer); // ok - case CRYSTAL_HOLLOWS, DWARVEN_MINES -> new MineServerScreen(w, h, list, footer); - case FARMING_ISLAND -> new FarmingServerScreen(w, h, list, footer); // ok - case DUNGEON_HUB -> new DungeonHubScreen(w, h, list, footer); // ok - case DUNGEON -> new DungeonScreen(w, h, list, footer); // ok - case CRIMSON_ISLE -> new CrimsonIsleScreen(w, h, list, footer); // ??? - case GARDEN -> new GardenScreen(w, h, list, footer); - default -> new GenericServerScreen(w, h, list, footer); // ok - }; - } - } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java new file mode 100644 index 00000000..cffac5c4 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java @@ -0,0 +1,86 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.util; + +import java.util.List; + +import me.xmrvizzy.skyblocker.mixin.PlayerListHudAccessor; +import me.xmrvizzy.skyblocker.utils.Utils; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.PlayerListEntry; + +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, + UNKNOWN, + NONE + } + + public static Location getPlayerLocation() { + + if (!Utils.isOnSkyblock) { + return Location.UNKNOWN; + } + + List ple = MinecraftClient.getInstance().getNetworkHandler().getPlayerList().stream() + .sorted(PlayerListHudAccessor.getOrdering()).toList(); + + String cat2Name = StrMan.strAt(ple, 40); + + if (cat2Name.contains("Dungeon Stats")) { + return Location.DUNGEON; + } + + String areaDesciptor = StrMan.strAt(ple, 41).substring(6); + switch (areaDesciptor) { + case "Private Island": + if (ple.get(44).getDisplayName().getString().endsWith("Guest")) { + return Location.GUEST_ISLAND; + } else { + return 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; + default: + return Location.NONE; + } + } +} -- cgit From af26bd68e8a7b3f2b4691640d81360c3c31ea003 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 6 May 2023 12:22:17 +0200 Subject: Enable depth test to fix Z-layering issues The HUD is now drawn above the hotbar and chat. Blocks in the HUD aren't drawn behind the BG anymore. --- .../skyblocker/skyblock/tabhud/widget/Widget.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/main/java/me') 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 63a72563..55b2aa94 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 @@ -2,8 +2,9 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; import java.util.ArrayList; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.Component; +import com.mojang.blaze3d.systems.RenderSystem; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.Component; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawableHelper; @@ -78,19 +79,25 @@ public abstract class Widget { public final void render(MatrixStack ms, boolean hasBG) { + // 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 + RenderSystem.enableDepthTest(); + ms.push(); + // move above other UI elements + ms.translate(0, 0, 200); if (hasBG) { DrawableHelper.fill(ms, x + 1, y, x + w - 1, y + h, COL_BG_BOX); DrawableHelper.fill(ms, x, y + 1, x + 1, y + h - 1, COL_BG_BOX); DrawableHelper.fill(ms, x + w - 1, y + 1, x + w, y + h - 1, COL_BG_BOX); } + // move above background (if exists) + ms.translate(0, 0, 100); int strHeightHalf = Widget.txtRend.fontHeight / 2; int strAreaWidth = Widget.txtRend.getWidth(title) + 4; txtRend.draw(ms, title, x + 8, y + 2, this.color); - DrawableHelper.fill(ms, x + 2, y + 1 + strHeightHalf, strAreaWidth, strHeightHalf, strAreaWidth); - this.drawHLine(ms, x + 2, y + 1 + strHeightHalf, 4); this.drawHLine(ms, x + 2 + strAreaWidth + 4, y + 1 + strHeightHalf, w - 4 - 4 - strAreaWidth); this.drawHLine(ms, x + 2, y + h - 2, w - 4); @@ -104,6 +111,8 @@ public abstract class Widget { c.render(ms, x + BORDER_SZE_W, yOffs); yOffs += c.getHeight() + 4; } + // pop manipulations above + ms.pop(); } private void drawHLine(MatrixStack ms, int xpos, int ypos, int width) { -- cgit From 4825f2044b4cc674f4147a73ebdae08874cf8563 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 6 May 2023 13:15:15 +0200 Subject: Add option to scale HUD relatively to the vanilla GUI scale --- .../skyblocker/config/SkyblockerConfig.java | 3 ++ .../skyblocker/skyblock/tabhud/screens/Screen.java | 48 ++++++++++++++-------- .../skyblocker/skyblock/tabhud/widget/Widget.java | 5 +++ .../resources/assets/skyblocker/lang/de_de.json | 2 + .../resources/assets/skyblocker/lang/en_us.json | 2 + 5 files changed, 43 insertions(+), 17 deletions(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 6d43eff8..f612ae08 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -128,6 +128,9 @@ public class SkyblockerConfig implements ConfigData { public boolean hideEmptyTooltips = true; public boolean tabHudEnabled = true; + @ConfigEntry.BoundedDiscrete(min=10, max=200) + @ConfigEntry.Gui.Tooltip() + public int tabHudScale = 100; @ConfigEntry.Gui.Excluded public String apiKey; 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 f60af79d..8edfbb56 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 @@ -3,13 +3,27 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; import java.util.ArrayList; import java.util.List; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.genericInfo.*; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.*; -import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList.*; +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.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.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.network.PlayerListEntry; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; @@ -20,15 +34,16 @@ public class Screen { private int w, h; public Screen(int w, int h) { - this.w = w; - this.h = h; + float scale = SkyblockerConfig.get().general.tabHudScale / 100f; + this.w = (int) (w / scale); + this.h = (int) (h / scale); } public static Screen getCorrect(int w, int h, List ple, Text footer) { if (TabHud.genericTgl.isPressed()) { return Screen.correctGenericScrn(w, h, ple, footer); - // } else if (TabHud.mapTgl.isPressed()) { - // return Screen.correctMapScrn(w, h, ple, footer); + // } else if (TabHud.mapTgl.isPressed()) { + // return Screen.correctMapScrn(w, h, ple, footer); } else if (TabHud.playerTgl.isPressed()) { return Screen.correctPlayerScrn(w, h, ple, footer); } else { @@ -36,14 +51,14 @@ public class Screen { } } - - // private static Screen correctMapScrn(int w, int h, List list, Text footer) { - // // return switch (getScreenType(list)) { - // // case CRYSTAL_HOLLOWS -> null; - // // case DUNGEON -> null; - // // default -> new EmptyScreen(w, h, list, footer); - // // }; - // return new EmptyScreen(w, h, list, footer); + // private static Screen correctMapScrn(int w, int h, List + // list, Text footer) { + // // return switch (getScreenType(list)) { + // // case CRYSTAL_HOLLOWS -> null; + // // case DUNGEON -> null; + // // default -> new EmptyScreen(w, h, list, footer); + // // }; + // return new EmptyScreen(w, h, list, footer); // } private static Screen correctGenericScrn(int w, int h, List list, Text footer) { @@ -53,7 +68,6 @@ public class Screen { }; } - private static Screen correctPlayerScrn(int w, int h, List list, Text footer) { return switch (PlayerLocator.getPlayerLocation()) { case GUEST_ISLAND -> new GuestPlayerScreen(w, h, list, footer); // ok 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 55b2aa94..f7f24db2 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 @@ -4,6 +4,7 @@ import java.util.ArrayList; import com.mojang.blaze3d.systems.RenderSystem; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.Component; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; @@ -83,6 +84,10 @@ public abstract class Widget { // like blocks being rendered behind the BG and the hotbar clipping into things RenderSystem.enableDepthTest(); ms.push(); + + float scale = SkyblockerConfig.get().general.tabHudScale / 100f; + ms.scale(scale, scale, 1); + // move above other UI elements ms.translate(0, 0, 200); if (hasBG) { diff --git a/src/main/resources/assets/skyblocker/lang/de_de.json b/src/main/resources/assets/skyblocker/lang/de_de.json index 15bbf13a..1b6b75ac 100644 --- a/src/main/resources/assets/skyblocker/lang/de_de.json +++ b/src/main/resources/assets/skyblocker/lang/de_de.json @@ -5,6 +5,8 @@ "text.autoconfig.skyblocker.category.general": "Allgemein", "text.autoconfig.skyblocker.option.general.bars": "Gesundheits-, Mana-, Verteidigungs- und XP-Balken", "text.autoconfig.skyblocker.option.general.tabHudEnabled": "Schöneres Tab-HUD aktivieren", + "text.autoconfig.skyblocker.option.general.tabHudScale": "Skalierungsfaktor für schöners Tab-HUD", + "text.autoconfig.skyblocker.option.general.tabHudScale.@Tooltip": "Wert in %, relativ zur Skalierung des Vanilla-GUIs", "text.autoconfig.skyblocker.option.general.bars.enableBars": "Balken aktivieren", "text.autoconfig.skyblocker.option.general.hideEmptyTooltips": "Leere Item-Tooltips in Menüs verstecken", diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 80e247a4..ae1b2719 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -24,6 +24,8 @@ "text.autoconfig.skyblocker.option.general.quicknav.enableQuicknav": "Enable Quicknav", "text.autoconfig.skyblocker.option.general.backpackPreviewWithoutShift": "View backpack preview without holding Shift", "text.autoconfig.skyblocker.option.general.tabHudEnabled": "Enable fancy tab HUD", + "text.autoconfig.skyblocker.option.general.tabHudScale": "Scale factor of fancy tab HUD", + "text.autoconfig.skyblocker.option.general.tabHudScale.@Tooltip": "Value in %, relative to your vanilla GUI scale", "text.autoconfig.skyblocker.option.general.itemTooltip": "Item Tooltip", "text.autoconfig.skyblocker.option.general.itemTooltip.enableNPCPrice": "Enable NPC Price", "text.autoconfig.skyblocker.option.general.itemTooltip.enableAvgBIN": "Enable Avg. BIN Price", -- cgit From e332b243dcea6ec567bd38db99ec3cfa35a57fe1 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 6 May 2023 13:15:51 +0200 Subject: Minor foramtting and code style changes --- .../me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java | 4 ++-- .../skyblock/tabhud/widget/component/TableComponent.java | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java index e96e4ede..db329775 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java @@ -10,9 +10,9 @@ import net.minecraft.client.network.PlayerListEntry; @Mixin(PlayerListHud.class) public interface PlayerListHudAccessor { - + @Accessor("ENTRY_ORDERING") public static Comparator getOrdering() { - throw new AssertionError(); + throw new AssertionError(); } } 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 66c1b73b..2d367b11 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 @@ -20,18 +20,18 @@ public class TableComponent extends Component { } public void addToCell(int x, int y, Component c) { - comps[x][y] = c; + this.comps[x][y] = c; // are tables still too wide? - cellW = Math.max(cellW, c.width + PAD_S); + this.cellW = Math.max(this.cellW, c.width + PAD_S); // assume all rows are equally high so overwriting doesn't matter // if this wasn't the case, drawing would need more math // not doing any of that if it's not needed - cellH = c.height; + this.cellH = c.height; - this.width = cellW * tw; - this.height = (cellH + PAD_S) * th - PAD_S; + this.width = this.cellW * this.tw; + this.height = (this.cellH + PAD_S) * this.th - PAD_S; } @@ -45,7 +45,7 @@ public class TableComponent extends Component { } if (x != tw - 1) { DrawableHelper.fill(ms, xpos + ((x + 1) * (cellW + PAD_S)) - 1, ypos + 1, - xpos + ((x + 1) * (cellW + PAD_S)), ypos + this.height - 1, color); + xpos + ((x + 1) * (cellW + PAD_S)), ypos + this.height - 1, this.color); } } } -- cgit From 444b71d0fd4a32abb950eea33dd5fe16f34c1bcc Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 6 May 2023 23:29:22 +0200 Subject: Disable depth test again after rendering --- src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src/main/java/me') 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 f7f24db2..b7e8f1e9 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 @@ -118,6 +118,7 @@ public abstract class Widget { } // pop manipulations above ms.pop(); + RenderSystem.disableDepthTest(); } private void drawHLine(MatrixStack ms, int xpos, int ypos, int width) { -- cgit From c4af58e95fff7515de9f49f2a84817401dc274c0 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 6 May 2023 23:29:46 +0200 Subject: Fix various faulty regexes --- .../skyblocker/skyblock/tabhud/widget/FireSaleWidget.java | 15 ++++++++------- .../skyblock/tabhud/widget/ReputationWidget.java | 2 +- .../skyblocker/skyblock/tabhud/widget/SkillsWidget.java | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) (limited to 'src/main/java/me') 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 2f982c61..ad82417f 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 @@ -16,7 +16,6 @@ import net.minecraft.text.Text; import net.minecraft.util.math.MathHelper; import net.minecraft.util.Formatting; -// TODO: untested with active fire sales // this widget shows info about fire sales when in the hub // or not, if there isn't one going on @@ -29,14 +28,15 @@ public class FireSaleWidget extends Widget { // group 1: item name // group 2: # items bought // group 1: # items available in total (1 digit + "k") - private static final Pattern FIRE_PATTERN = Pattern.compile(" (.*): (\\d*)/(\\d)k"); + private static final Pattern FIRE_PATTERN = Pattern.compile(" (.*): (\\d*)/([0-9.]*)k"); public FireSaleWidget(List list) { super(TITLE, Formatting.DARK_AQUA.getColorValue()); boolean found = false; if (StrMan.strAt(list, 46).contains("Starts In")) { - IcoTextComponent start = new IcoTextComponent(Ico.CLOCK, StrMan.stdEntry(list, 46, "Starts in", Formatting.DARK_AQUA)); + IcoTextComponent start = new IcoTextComponent(Ico.CLOCK, + StrMan.stdEntry(list, 46, "Starts in", Formatting.DARK_AQUA)); this.addComponent(start); this.pack(); return; @@ -44,13 +44,14 @@ public class FireSaleWidget extends Widget { for (int i = 46;; i++) { Matcher m = StrMan.regexAt(list, i, FIRE_PATTERN); - if (m == null ||!m.matches()) { + if (m == null || !m.matches()) { break; } found = true; + float amt = Float.parseFloat(m.group(3)) * 1000; Text a = Text.literal(m.group(1)); - Text b = Text.literal(m.group(2) + "/" + m.group(3) + "000"); - float pcnt = (1 - (Float.parseFloat(m.group(2)) / (Float.parseFloat(m.group(3)) * 1000)))*100f; + Text b = Text.literal(String.format("%s/%.0f", m.group(2), amt)); + float pcnt = (Float.parseFloat(m.group(2)) / (amt)) * 100f; ProgressComponent pc = new ProgressComponent(Ico.GOLD, a, b, pcnt, pcntToCol(pcnt)); this.addComponent(pc); } @@ -62,7 +63,7 @@ public class FireSaleWidget extends Widget { } private int pcntToCol(float pcnt) { - return MathHelper.hsvToRgb(pcnt / 300f, 0.9f, 0.9f); + return MathHelper.hsvToRgb( pcnt / 300f, 0.9f, 0.9f); } } 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 121e41e8..e234763b 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 @@ -20,7 +20,7 @@ public class ReputationWidget extends Widget { private static final MutableText TITLE = Text.literal("Faction Status").formatted(Formatting.AQUA, Formatting.BOLD); - private static final Pattern PROGRESS_PATTERN = Pattern.compile(" \\|+ \\(([0-9.]*%)\\)"); + private static final Pattern PROGRESS_PATTERN = Pattern.compile(" \\|+ \\(([0-9.]*)%\\)"); private static final Pattern STATE_PATTERN = Pattern.compile("(\\S*) *(\\S*)"); public ReputationWidget(List list) { 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 c2eedfa4..ca5bca67 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 @@ -27,7 +27,7 @@ public class SkillsWidget extends Widget { // match the skill entry // group 1: skill name and level // group 2: progress to next level (without "%") - private static final Pattern SKILL_PATTERN = Pattern.compile("\\S*: ([A-Za-z]* [0-9]*): ([0-9.]*)%?"); + private static final Pattern SKILL_PATTERN = Pattern.compile("\\S*: ([A-Za-z]* [0-9]*): ([0-9.MAX]*)%?"); public SkillsWidget(List list) { super(TITLE, Formatting.YELLOW.getColorValue()); -- cgit From 3e9677c0b944f306e9d59b7c47e492e883d1d551 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 7 May 2023 11:11:45 +0200 Subject: Fix another regex... --- .../skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/main/java/me') 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 ce7b13bd..978447fe 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 @@ -29,8 +29,8 @@ public class DungeonPlayerWidget extends Widget { // group 3: level (or nothing, if pre dungeon start) // as a side effect, this regex keeps the iron man icon in the name // not sure if that should be - private static final Pattern PLAYER_PATTERN = Pattern.compile("\\[\\d*\\] (.*) \\((\\S*) ?([XVI]*)\\)"); - + private static final Pattern PLAYER_PATTERN = Pattern.compile("\\[\\d*\\] (.*) \\((\\S*) ?([LXVI]*)\\)"); + private static final HashMap ICOS = new HashMap<>(); static { ICOS.put("Tank", Ico.CHESTPLATE); @@ -54,7 +54,7 @@ public class DungeonPlayerWidget extends Widget { Text name = Text.literal("Name: ").append(Text.literal(m.group(1)).formatted(Formatting.YELLOW)); this.addComponent(new IcoTextComponent(Ico.PLAYER, name)); - + String cl = m.group(2); Formatting clf = Formatting.GRAY; ItemStack cli = Ico.BARRIER; -- cgit From 8716da49090362275e94d159b0dc7be4781f6451 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 7 May 2023 11:32:45 +0200 Subject: Put fancy tab HUD config into its own section --- .../me/xmrvizzy/skyblocker/config/SkyblockerConfig.java | 15 +++++++++++---- .../me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java | 2 +- .../skyblocker/skyblock/tabhud/screens/Screen.java | 2 +- .../skyblocker/skyblock/tabhud/widget/Widget.java | 2 +- src/main/resources/assets/skyblocker/lang/de_de.json | 7 ++++--- src/main/resources/assets/skyblocker/lang/en_us.json | 7 ++++--- 6 files changed, 22 insertions(+), 13 deletions(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index f612ae08..e89c32bd 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -127,10 +127,9 @@ public class SkyblockerConfig implements ConfigData { public boolean backpackPreviewWithoutShift = false; public boolean hideEmptyTooltips = true; - public boolean tabHudEnabled = true; - @ConfigEntry.BoundedDiscrete(min=10, max=200) - @ConfigEntry.Gui.Tooltip() - public int tabHudScale = 100; + @ConfigEntry.Category("tabHud") + @ConfigEntry.Gui.CollapsibleObject() + public TabHudConf tabHud = new TabHudConf(); @ConfigEntry.Gui.Excluded public String apiKey; @@ -155,6 +154,14 @@ public class SkyblockerConfig implements ConfigData { public List lockedSlots = new ArrayList<>(); } + public static class TabHudConf { + public boolean tabHudEnabled = true; + + @ConfigEntry.BoundedDiscrete(min=10, max=200) + @ConfigEntry.Gui.Tooltip() + public int tabHudScale = 100; + } + public static class Bars { public boolean enableBars = true; diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index f4089f83..bb2c0e0c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -35,7 +35,7 @@ public class PlayerListHudMixin { CallbackInfo info) { if (!Utils.isOnSkyblock - || !SkyblockerConfig.get().general.tabHudEnabled + || !SkyblockerConfig.get().general.tabHud.tabHudEnabled || TabHud.defaultTgl.isPressed()) { return; } 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 8edfbb56..cc16da8b 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 @@ -34,7 +34,7 @@ public class Screen { private int w, h; public Screen(int w, int h) { - float scale = SkyblockerConfig.get().general.tabHudScale / 100f; + float scale = SkyblockerConfig.get().general.tabHud.tabHudScale / 100f; this.w = (int) (w / scale); this.h = (int) (h / scale); } 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 b7e8f1e9..c0d3bf0e 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 @@ -85,7 +85,7 @@ public abstract class Widget { RenderSystem.enableDepthTest(); ms.push(); - float scale = SkyblockerConfig.get().general.tabHudScale / 100f; + float scale = SkyblockerConfig.get().general.tabHud.tabHudScale / 100f; ms.scale(scale, scale, 1); // move above other UI elements diff --git a/src/main/resources/assets/skyblocker/lang/de_de.json b/src/main/resources/assets/skyblocker/lang/de_de.json index 1b6b75ac..4a84719c 100644 --- a/src/main/resources/assets/skyblocker/lang/de_de.json +++ b/src/main/resources/assets/skyblocker/lang/de_de.json @@ -4,9 +4,10 @@ "text.autoconfig.skyblocker.title": "Skyblocker-Einstellungen", "text.autoconfig.skyblocker.category.general": "Allgemein", "text.autoconfig.skyblocker.option.general.bars": "Gesundheits-, Mana-, Verteidigungs- und XP-Balken", - "text.autoconfig.skyblocker.option.general.tabHudEnabled": "Schöneres Tab-HUD aktivieren", - "text.autoconfig.skyblocker.option.general.tabHudScale": "Skalierungsfaktor für schöners Tab-HUD", - "text.autoconfig.skyblocker.option.general.tabHudScale.@Tooltip": "Wert in %, relativ zur Skalierung des Vanilla-GUIs", + "text.autoconfig.skyblocker.option.general.tabHud": "Schöneres Tab-HUD", + "text.autoconfig.skyblocker.option.general.tabHud.tabHudEnabled": "Schöneres Tab-HUD aktivieren", + "text.autoconfig.skyblocker.option.general.tabHud.tabHudScale": "Skalierungsfaktor für schöners Tab-HUD", + "text.autoconfig.skyblocker.option.general.tabHud.tabHudScale.@Tooltip": "Wert in %, relativ zur Skalierung des Vanilla-GUIs", "text.autoconfig.skyblocker.option.general.bars.enableBars": "Balken aktivieren", "text.autoconfig.skyblocker.option.general.hideEmptyTooltips": "Leere Item-Tooltips in Menüs verstecken", diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index ae1b2719..9e467505 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -23,9 +23,10 @@ "text.autoconfig.skyblocker.option.general.quicknav": "Quicknav", "text.autoconfig.skyblocker.option.general.quicknav.enableQuicknav": "Enable Quicknav", "text.autoconfig.skyblocker.option.general.backpackPreviewWithoutShift": "View backpack preview without holding Shift", - "text.autoconfig.skyblocker.option.general.tabHudEnabled": "Enable fancy tab HUD", - "text.autoconfig.skyblocker.option.general.tabHudScale": "Scale factor of fancy tab HUD", - "text.autoconfig.skyblocker.option.general.tabHudScale.@Tooltip": "Value in %, relative to your vanilla GUI scale", + "text.autoconfig.skyblocker.option.general.tabHud": "Fancy tab HUD", + "text.autoconfig.skyblocker.option.general.tabHud.tabHudEnabled": "Enable fancy tab HUD", + "text.autoconfig.skyblocker.option.general.tabHud.tabHudScale": "Scale factor of fancy tab HUD", + "text.autoconfig.skyblocker.option.general.tabHud.tabHudScale.@Tooltip": "Value in %, relative to your vanilla GUI scale", "text.autoconfig.skyblocker.option.general.itemTooltip": "Item Tooltip", "text.autoconfig.skyblocker.option.general.itemTooltip.enableNPCPrice": "Enable NPC Price", "text.autoconfig.skyblocker.option.general.itemTooltip.enableAvgBIN": "Enable Avg. BIN Price", -- cgit From abd07df92f283cc7a714c4a1bafe2a7ce420e43b Mon Sep 17 00:00:00 2001 From: msg-programs Date: Tue, 9 May 2023 22:12:47 +0200 Subject: Change layout of CI screen --- .../skyblocker/skyblock/tabhud/screens/main/CrimsonIsleScreen.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/main/java/me') 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 index 7e6e03af..046abcbb 100644 --- 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 @@ -20,12 +20,12 @@ public class CrimsonIsleScreen extends Screen { QuestWidget qw = new QuestWidget(ple); VolcanoWidget vw = new VolcanoWidget(ple); - this.stackWidgetsH(sw, rw, vw); + this.stackWidgetsH(sw, rw); + this.stackWidgetsH(qw, vw); this.offCenterL(sw); this.offCenterL(rw); - this.offCenterL(vw); + this.offCenterR(vw); this.offCenterR(qw); - this.centerH(qw); this.addWidgets(sw, rw, qw, vw); } -- cgit From d6024d1d50b2ad2346ca1b9bba96608b945864d1 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Tue, 9 May 2023 22:13:18 +0200 Subject: Fix CommsWidget to handle 4 commissions correctly --- .../me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CommsWidget.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/main/java/me') 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 120c53d8..dbe3e457 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 @@ -32,9 +32,11 @@ public class CommsWidget extends Widget { public CommsWidget(List list) { super(TITLE, Formatting.DARK_AQUA.getColorValue()); - for (int i = 50; i <= 51; i++) { + for (int i = 50; i <= 53; i++) { Matcher m = StrMan.regexAt(list, i, COMM_PATTERN); - + if (m == null) { + break; + } String g2 = m.group(2); ProgressComponent pc; if (g2.equals("DONE")) { -- cgit From 22f2311111b4444285c52b44d517374288404c36 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Tue, 9 May 2023 22:13:32 +0200 Subject: Show correct text in cookie widget --- .../me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CookieWidget.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/me') 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 86d9dd7f..dfab6818 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 @@ -24,7 +24,7 @@ public class CookieWidget extends Widget { if (lines[1].startsWith("Not")) { this.addComponent(new IcoTextComponent(Ico.COOKIE, Text.of("Not active"))); } else { - Text cookie = Text.literal("Time Left: ").append(lines[2]); + Text cookie = Text.literal("Time Left: ").append(lines[1]); this.addComponent(new IcoTextComponent(Ico.COOKIE, cookie)); } this.pack(); -- cgit From 5b710138e98b8182d7b7499318286dd3304da5b9 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Tue, 9 May 2023 22:13:54 +0200 Subject: Add more missing player messages to dungeon player widget --- .../skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/main/java/me') 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 978447fe..41d5d67a 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 @@ -1,5 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.regex.Matcher; @@ -8,7 +9,6 @@ import java.util.regex.Pattern; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; - import net.minecraft.client.network.PlayerListEntry; import net.minecraft.item.ItemStack; import net.minecraft.text.MutableText; @@ -32,12 +32,17 @@ public class DungeonPlayerWidget extends Widget { private static final Pattern PLAYER_PATTERN = Pattern.compile("\\[\\d*\\] (.*) \\((\\S*) ?([LXVI]*)\\)"); private static final HashMap ICOS = new HashMap<>(); + private static final ArrayList MSGS = new ArrayList<>(); static { ICOS.put("Tank", Ico.CHESTPLATE); ICOS.put("Mage", Ico.B_ROD); ICOS.put("Berserk", Ico.DIASWORD); ICOS.put("Archer", Ico.BOW); ICOS.put("Healer", Ico.POTION); + + MSGS.add("PRESS A TO JOIN"); + MSGS.add("Invite a friend!"); + MSGS.add("But nobody came."); } // title needs to be changeable here @@ -48,7 +53,7 @@ public class DungeonPlayerWidget extends Widget { if (list.get(start).getDisplayName().getString().length() < 2) { this.addComponent( - new IcoTextComponent(Ico.SIGN, Text.literal("PRESS A TO JOIN").formatted(Formatting.GRAY))); + new IcoTextComponent(Ico.SIGN, Text.literal(MSGS.get((int)(Math.random()*MSGS.size()))).formatted(Formatting.GRAY))); } else { Matcher m = StrMan.regexAt(list, start, PLAYER_PATTERN); -- cgit From 2e15d1b09990ce8660b8956844e68ff74bac552f Mon Sep 17 00:00:00 2001 From: msg-programs Date: Tue, 9 May 2023 22:14:16 +0200 Subject: Handle god potion in EffectWidget --- .../xmrvizzy/skyblocker/skyblock/tabhud/widget/EffectWidget.java | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/main/java/me') 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 54b49465..49449a97 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 @@ -10,6 +10,7 @@ import net.minecraft.util.Formatting; // this widgte shows, how many active effects you have // it also shows one of those in detail +// the parsing is super suspect and should be replaced by some regexes sometime later public class EffectWidget extends Widget { @@ -25,6 +26,12 @@ public class EffectWidget extends Widget { if (lines[1].startsWith("No")) { Text txt = Text.literal("No effects active").formatted(Formatting.GRAY); this.addComponent(new IcoTextComponent(Ico.POTION, txt)); + } else if (lines[1].contains("God")) { + String timeleft = lines[1].split("! ")[0]; + Text godpot = Text.literal("God potion!").formatted(Formatting.RED, Formatting.BOLD); + Text txttleft = Text.literal(timeleft).formatted(Formatting.LIGHT_PURPLE); + IcoFatTextComponent iftc = new IcoFatTextComponent(Ico.POTION, godpot, txttleft); + this.addComponent(iftc); } else { String number = lines[1].substring("You have ".length()); number = number.substring(0, number.indexOf(' ')); -- cgit From aadcc237ff39e52c39421b278f672c7bc16134ed Mon Sep 17 00:00:00 2001 From: msg-programs Date: Tue, 9 May 2023 22:14:35 +0200 Subject: Correct crit dmg/chance text in skills widget --- .../me/xmrvizzy/skyblocker/skyblock/tabhud/widget/SkillsWidget.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/java/me') 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 ca5bca67..0d105a53 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 @@ -51,9 +51,9 @@ public class SkillsWidget extends Widget { IcoTextComponent spd = new IcoTextComponent(Ico.SUGAR, speed); Text strength = StrMan.stdEntry(list, 68, "STR", Formatting.RED); IcoTextComponent str = new IcoTextComponent(Ico.SWORD, strength); - Text critDmg = StrMan.stdEntry(list, 69, "CDG", Formatting.BLUE); + Text critDmg = StrMan.stdEntry(list, 69, "CCH", Formatting.BLUE); IcoTextComponent cdg = new IcoTextComponent(Ico.SWORD, critDmg); - Text critCh = StrMan.stdEntry(list, 70, "CCH", Formatting.BLUE); + Text critCh = StrMan.stdEntry(list, 70, "CDG", Formatting.BLUE); IcoTextComponent cch = new IcoTextComponent(Ico.SWORD, critCh); Text aSpeed = StrMan.stdEntry(list, 71, "ASP", Formatting.YELLOW); IcoTextComponent asp = new IcoTextComponent(Ico.HOE, aSpeed); -- cgit From 477af98b6fffaa7f5c0d01a7f158e91b494dcf83 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Tue, 9 May 2023 22:15:03 +0200 Subject: Let forge widget handle 4 commissions --- .../skyblocker/skyblock/tabhud/widget/ForgeWidget.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/main/java/me') 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 553a001f..787d9311 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 @@ -23,16 +23,22 @@ public class ForgeWidget extends Widget { public ForgeWidget(List list) { super(TITLE, Formatting.DARK_AQUA.getColorValue()); + int forgestart = 54; + // why is it forges and not fabrics >:( + if (!StrMan.strAt(list, 53).startsWith("Forge")) { + forgestart += 2; + } + - for (int i = 0; i < 5; i++) { - String fstr = StrMan.strAt(list, i + 54).substring(4); + for (int i = forgestart, slot = 0; i < forgestart + 5 && i < 60; i++,slot ++) { + String fstr = StrMan.strAt(list, i).substring(4); Component c; Text l1, l2; switch (fstr) { case "LOCKED": l1 = Text.literal("Locked").formatted(Formatting.RED); - l2 = switch (i + 1) { + l2 = switch (slot) { case 3 -> Text.literal("Req. HotM 3").formatted(Formatting.GRAY); case 4 -> Text.literal("Req. HotM 4").formatted(Formatting.GRAY); case 5 -> Text.literal("Req. PotM 2").formatted(Formatting.GRAY); -- cgit From bb16f61a2034848dc686bbcb30e79c2f0a624e97 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Tue, 9 May 2023 22:35:06 +0200 Subject: Add comments to and change comments of widget classes where needed --- .../skyblock/tabhud/widget/CommsWidget.java | 2 +- .../skyblock/tabhud/widget/CookieWidget.java | 1 - .../tabhud/widget/DungeonDownedWidget.java | 2 +- .../tabhud/widget/DungeonPlayerWidget.java | 1 - .../tabhud/widget/DungeonPuzzleWidget.java | 1 - .../tabhud/widget/DungeonSecretWidget.java | 2 +- .../skyblock/tabhud/widget/EffectWidget.java | 4 +- .../skyblock/tabhud/widget/EssenceWidget.java | 2 +- .../skyblock/tabhud/widget/EventWidget.java | 2 +- .../skyblock/tabhud/widget/FireSaleWidget.java | 4 +- .../skyblock/tabhud/widget/ForgeWidget.java | 2 +- .../skyblock/tabhud/widget/GardenServerWidget.java | 2 + .../skyblock/tabhud/widget/GardenSkillsWidget.java | 4 +- .../skyblock/tabhud/widget/IslandGuestsWidget.java | 3 +- .../skyblock/tabhud/widget/IslandOwnersWidget.java | 3 +- .../skyblock/tabhud/widget/IslandSelfWidget.java | 4 +- .../tabhud/widget/JacobsContestWidget.java | 2 + .../skyblock/tabhud/widget/PlayerListWidget.java | 4 +- .../skyblock/tabhud/widget/PowderWidget.java | 1 + .../skyblock/tabhud/widget/QuestWidget.java | 2 +- .../skyblock/tabhud/widget/ReputationWidget.java | 8 ++- .../skyblock/tabhud/widget/ServerWidget.java | 4 +- .../skyblock/tabhud/widget/SkillsWidget.java | 3 +- .../skyblock/tabhud/widget/TrapperWidget.java | 2 +- .../skyblock/tabhud/widget/UpgradeWidget.java | 2 +- .../skyblock/tabhud/widget/VolcanoWidget.java | 2 +- .../skyblocker/skyblock/tabhud/widget/Widget.java | 73 ---------------------- .../widget/component/IcoFatTextComponent.java | 2 + .../tabhud/widget/component/IcoTextComponent.java | 4 +- .../widget/component/PlainTextComponent.java | 2 + .../tabhud/widget/component/PlayerComponent.java | 2 + .../tabhud/widget/component/ProgressComponent.java | 4 ++ .../tabhud/widget/component/TableComponent.java | 3 + 33 files changed, 54 insertions(+), 105 deletions(-) (limited to 'src/main/java/me') 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 dbe3e457..e45865e4 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 @@ -17,7 +17,7 @@ import net.minecraft.util.Formatting; import net.minecraft.util.math.MathHelper; // this widget shows the status of the king's commissions. -// works in both the dwarven mines and the CH +// (dwarven mines and crystal hollows) public class CommsWidget extends Widget { 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 dfab6818..8974efa7 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 @@ -9,7 +9,6 @@ import net.minecraft.util.Formatting; // this widget shows info about active super cookies // or not, if you're unwilling to buy one -// TODO: test with active cookie. I'm not buying one. public class CookieWidget extends Widget { 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 9146fdbb..36245a4e 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 @@ -12,7 +12,7 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; // this widget shows info about... something? -// TODO: test this. +// related to downed people in dungeons, not sure what this is supposed to show public class DungeonDownedWidget extends Widget { 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 41d5d67a..7195e455 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 @@ -16,7 +16,6 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; // this widget shows info about a player in the current dungeon group -// when inside a dungeon public class DungeonPlayerWidget extends Widget { 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 3aba547c..86d1f938 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 @@ -14,7 +14,6 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; // this widget shows info about all puzzeles in the dungeon (name and status) -// TODO: if puzzle was failed, show player name public class DungeonPuzzleWidget extends Widget { 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 fed6b0b2..e0c83a35 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 @@ -11,7 +11,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widget shows info about secrets of the dungeon +// this widget shows info about the secrets of the dungeon public class DungeonSecretWidget extends Widget { 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 49449a97..d44d1ea7 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 @@ -8,8 +8,8 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widgte shows, how many active effects you have -// it also shows one of those in detail +// this widgte shows, how many active effects you have. +// it also shows one of those in detail. // the parsing is super suspect and should be replaced by some regexes sometime later public class EffectWidget extends Widget { 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 903c3a3d..7063ce3f 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 @@ -12,7 +12,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widget shows your dungeon essences +// this widget shows your dungeon essences (dungeon hub only) public class EssenceWidget extends Widget { 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 7fcbe1c1..eb741566 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.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widget shows info about ongoing events (e.g. jacob's farming) +// this widget shows info about ongoing events (e.g. election) public class EventWidget extends Widget { private static final MutableText TITLE = Text.literal("Event Info").formatted(Formatting.YELLOW, Formatting.BOLD); 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 ad82417f..9b7b2678 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 @@ -16,7 +16,7 @@ import net.minecraft.text.Text; import net.minecraft.util.math.MathHelper; import net.minecraft.util.Formatting; -// this widget shows info about fire sales when in the hub +// this widget shows info about fire sales when in the hub. // or not, if there isn't one going on public class FireSaleWidget extends Widget { @@ -27,7 +27,7 @@ public class FireSaleWidget extends Widget { // matches a fire sale item // group 1: item name // group 2: # items bought - // group 1: # items available in total (1 digit + "k") + // group 3: # items available in total (1 digit + "k") private static final Pattern FIRE_PATTERN = Pattern.compile(" (.*): (\\d*)/([0-9.]*)k"); public FireSaleWidget(List list) { 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 787d9311..40e2f56d 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 @@ -13,7 +13,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widget shows what you're forging right now +// this widget shows what you're forging right now. // for locked slots, the unlock requirement is shown public class ForgeWidget extends Widget { 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 c6c334d5..864dee8e 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 @@ -20,6 +20,8 @@ public class GardenServerWidget extends Widget { private static final MutableText TITLE = Text.literal("Server Info").formatted(Formatting.DARK_AQUA, Formatting.BOLD); + // match the next visitor in the garden + // group 1: visitor name private static final Pattern VISITOR_PATTERN = Pattern.compile(" Next Visitor: (.*)$"); public GardenServerWidget(List list) { 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 99011616..26c90df7 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 @@ -15,6 +15,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +// this widget shows info about your skills while in the garden public class GardenSkillsWidget extends Widget { @@ -25,8 +26,7 @@ public class GardenSkillsWidget extends Widget { // group 1: skill name and level // group 2: progress to next level (without "%") private static final Pattern SKILL_PATTERN = Pattern.compile("\\S*: ([A-Za-z]* [0-9]*): (\\S*)%"); - // same with leading space - // TODO: make better, maybe + // same, but with leading space private static final Pattern MS_PATTERN = Pattern.compile(" \\S*: ([A-Za-z]* [0-9]*): (\\S*)%"); public GardenSkillsWidget(List list) { 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 5814c15c..fa27eaa0 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 @@ -12,8 +12,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widget shows a list of all people visiting -// the same private island as you +// this widget shows a list of all people visiting the same private island as you public class IslandGuestsWidget extends Widget { 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 a0056a06..083f72b7 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 @@ -12,8 +12,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widget shows a list of the owners of a private island -// when you're visiting someone else +// this widget shows a list of the owners of a home island while guesting public class IslandOwnersWidget extends Widget { 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 96ec8ba5..aa1d951b 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 @@ -12,7 +12,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widget shows a list of the owners of your home island +// this widget shows a list of the owners while on your home island public class IslandSelfWidget extends Widget { @@ -20,7 +20,7 @@ public class IslandSelfWidget extends Widget { Formatting.BOLD); // matches an owner - // group 1: player name + // group 1: player name private static final Pattern OWNER_PATTERN = Pattern.compile("\\[\\d*\\] (.*)"); public IslandSelfWidget(List list) { 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 11817662..03defb4c 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 @@ -14,6 +14,8 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +// this widget shows info about the current jacob's contest (garden only) + public class JacobsContestWidget extends Widget { private static final MutableText TITLE = Text.literal("Jacob's Contest").formatted(Formatting.YELLOW, 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 27c69567..90069c90 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 @@ -13,8 +13,8 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widget shows a list of players with their skins -// in most areas +// this widget shows a list of players with their skins. +// responsible for non-private-island areas public class PlayerListWidget extends Widget { 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 97485b4f..cca09d77 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 @@ -12,6 +12,7 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; // this widget shows how much mithril and gemstone powder you have +// (dwarven mines and crystal hollows) public class PowderWidget extends Widget { 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 e2bd7fd3..5fdb1a5b 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 @@ -11,7 +11,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widget shows your Crimson Isle suests +// this widget shows your crimson isle faction quests public class QuestWidget extends Widget { 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 e234763b..75bd4e92 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 @@ -13,14 +13,20 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widget shows your faction status +// this widget shows your faction status (crimson isle) public class ReputationWidget extends Widget { private static final MutableText TITLE = Text.literal("Faction Status").formatted(Formatting.AQUA, Formatting.BOLD); + // matches your faction alignment progress + // group 1: percentage to next alignment level private static final Pattern PROGRESS_PATTERN = Pattern.compile(" \\|+ \\(([0-9.]*)%\\)"); + + // matches alignment level names + // group 1: left level name + // group 2: right level name private static final Pattern STATE_PATTERN = Pattern.compile("(\\S*) *(\\S*)"); public ReputationWidget(List list) { 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 ce7bc56f..4084d4dd 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 @@ -11,9 +11,9 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widget shows info about "generic" servers +// this widget shows info about "generic" servers. // a server is "generic", when only name, server ID and gems are shown -// in the thrid column of the tab menu +// in the third column of the tab HUD public class ServerWidget extends Widget { 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 0d105a53..be412421 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 @@ -17,7 +17,8 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widget shows info about a skill and some stats +// this widget shows info about a skill and some stats, +// as seen in the rightmost column of the default HUD public class SkillsWidget extends Widget { 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 981e4eef..4252888e 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 @@ -11,7 +11,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widget shows, how meny pelts you have (farming island only) +// this widget shows how meny pelts you have (farming island) public class TrapperWidget extends Widget { private static final MutableText TITLE = Text.literal("Trapper").formatted(Formatting.DARK_AQUA, 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 9f3be82a..0e0fe6b7 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 @@ -8,7 +8,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// this widget shows info about current profile/account upgrades +// this widget shows info about ongoing profile/account upgrades // or not, if there aren't any // TODO: not very pretty atm 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 9c81133f..cca4ca1b 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 @@ -13,7 +13,7 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Pair; -// this widget shows the volcano status +// shows the volcano status (crimson isle) public class VolcanoWidget extends Widget { 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 c0d3bf0e..9e3c87cf 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 @@ -128,77 +128,4 @@ public abstract class Widget { private void drawVLine(MatrixStack ms, int xpos, int ypos, int height) { DrawableHelper.fill(ms, xpos, ypos, xpos + 1, ypos + height, this.color); } - - // static final int ICO_DIM = 16; - // static final int PAD_S = 2; - // static final int PAD_L = 4; - // static final int SKIN_ICO_DIM = 8; - - // static final int TEXT_H = txtRend.fontHeight; - // static final int BAR_H = TEXT_H; - - // static final int TITLED_BAR_H = TEXT_H + PAD_S + BAR_H + PAD_L; - // static final int ICO_LINE_H = ICO_DIM + PAD_L; - - // public void drawRect(MatrixStack ms, int x, int y, int w, int h) { - // DrawableHelper.fill(ms, x + xpos + CONTENT_OFFS_X, y + ypos + CONTENT_OFFS_Y, - // x + xpos + CONTENT_OFFS_X + w, - // y + ypos + CONTENT_OFFS_Y + h, this.color); - // } - - // void drawIcon(ItemStack ico, int x, int y) { - // itmRend.renderGuiItemIcon(ico, x + x + CONTENT_OFFS_X, y + y - // + CONTENT_OFFS_Y); - // } - - // void drawText(MatrixStack ms, Text text, int x, int y, int color) { - // txtRend.draw(ms, text, x + x + CONTENT_OFFS_X, y + y + - // CONTENT_OFFS_Y, 0xff000000 | color); - // } - - // void drawText(MatrixStack ms, Text text, int x, int y) { - // this.drawText(ms, text, x, y, 0xffffffff); - // } - - // void drawIcoText(MatrixStack ms, ItemStack ico, Text text, int x, int y) { - // this.drawIcon(ico, x, y); - // this.drawText(ms, text, x + ICO_DIM + PAD_L, y + 5); - // } - - // void fill(MatrixStack ms, int x1, int y1, int x2, int y2, int color) { - // DrawableHelper.fill(ms, x1 + x + CONTENT_OFFS_X, y1 + y + - // CONTENT_OFFS_Y, - // x2 + x + CONTENT_OFFS_X, y2 + y + CONTENT_OFFS_Y, 0xff000000 - // | color); - // } - - // void drawBar(MatrixStack ms, int x, int y, int width, float fillPcnt, int - // color) { - // this.fill(ms, x, y, x + width, y + 10, COL_BG_BAR); - // this.fill(ms, x, y, x + (int) (width * (fillPcnt / 100f)), y + 10, color); - // } - - // void drawTitledIcoBar(MatrixStack ms, ItemStack ico, Text title, int width, - // float pcnt, int x, int y, int color) { - // final int ICO_OFFS = 3; - // this.drawIcon(ico, x, y + ICO_OFFS); - // this.drawText(ms, title, x + ICO_DIM + PAD_L, y); - // this.drawBar(ms, x + ICO_DIM + PAD_L, y + TEXT_H + PAD_S, width, pcnt, - // color); - // } - - // void drawIcoFatText(MatrixStack ms, ItemStack ico, Text line1, Text line2, - // int x, int y) { - // final int ICO_OFFS = 1; - // this.drawIcon(ico, x, y + ICO_OFFS); - // this.drawText(ms, line1, x + ICO_DIM + PAD_L, y); - // this.drawText(ms, line2, x + ICO_DIM + PAD_L, y + TEXT_H + PAD_S); - // } - - // public void drawPlayerIco(MatrixStack ms, int x, int y, Identifier - // skinTexture) { - // RenderSystem.setShaderTexture(0, skinTexture); - // PlayerSkinDrawer.draw(ms, x + x + CONTENT_OFFS_X, y + y + - // CONTENT_OFFS_Y, SKIN_ICO_DIM); - // } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java index 5865138c..9aec581b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java @@ -4,6 +4,8 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; +// widget component that consists of an icon and two lines of text + public class IcoFatTextComponent extends Component { private static final int ICO_OFFS = 1; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java index 66f15479..defbb2e6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java @@ -4,8 +4,10 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; +// widget component that consists of an icon and a line of text + public class IcoTextComponent extends Component { - + private ItemStack ico; private Text text; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java index b801f3aa..8976e6a2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java @@ -3,6 +3,8 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; +// widget component that consists of a line of text + public class PlainTextComponent extends Component { private Text text; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java index 7e1fd399..56e2b3c3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java @@ -7,6 +7,8 @@ import net.minecraft.client.network.PlayerListEntry; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Identifier; +// widget component that consists of a player's skin icon and their name + public class PlayerComponent extends Component { private static final int SKIN_ICO_DIM = 8; 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 41539d1c..1803e327 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 @@ -5,6 +5,10 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; +// widget component that consists of an icon, some text and a progress bar +// progress bar either shows percentage or custom text +// NOTICE: pcnt is 0-100, not 0-1! + public class ProgressComponent extends Component { private static final int BAR_WIDTH = 100; 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 2d367b11..eeb8ce3b 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 @@ -3,6 +3,9 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.util.math.MatrixStack; +// widget component that consists of a grid of other components +// grid cols are separated by lines + // FIXME: table isn't wide enough sometimes // FIXME: dividers drift when there are >2 cols public class TableComponent extends Component { -- cgit From 272b19c2d8219380caf4ed74042d6d62152ac2fb Mon Sep 17 00:00:00 2001 From: msg-programs Date: Fri, 12 May 2023 23:57:21 +0200 Subject: Prevent errors when player list is incomplete shortly after join or area change --- src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index bb2c0e0c..a2ab848a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -48,6 +48,12 @@ public class PlayerListHudMixin { List list = nwH.getListedPlayerListEntries().stream() .sorted(PlayerListHudAccessor.getOrdering()).toList(); + + // list hasn't loaded completely, abort until widgets handle errors correctly + if (list.size() < 40) { + return; + } + int w = scaledW; int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); -- cgit From f1e16784b8e8f76ea79446486e01d260715a30c1 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 13 May 2023 00:00:42 +0200 Subject: Only allow 80 entries in player list widget --- .../skyblocker/skyblock/tabhud/widget/PlayerListWidget.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/main/java/me') 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 90069c90..1678ca56 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,14 +26,18 @@ public class PlayerListWidget extends Widget { public PlayerListWidget(List l) { super(TITLE, Formatting.GREEN.getColorValue()); + // hard cap to 4x20 entries. + // 5x20 is too wide (and not possible in theory. in reality however...) + int listlen = Math.min(l.size(), 160); + // unintuitive int ceil division stolen from // https://stackoverflow.com/questions/7139382/java-rounding-up-to-an-int-using-math-ceil#21830188 - int tblW = ((l.size() - 80) - 1) / 20 + 1; + int tblW = ((listlen - 80) - 1) / 20 + 1; - TableComponent tc = new TableComponent(tblW, (l.size() - 80 >= 20) ? 20 : l.size() - 80, + TableComponent tc = new TableComponent(tblW, (listlen - 80 >= 20) ? 20 : listlen - 80, Formatting.GREEN.getColorValue()); - for (int i = 80; i < l.size(); i++) { + for (int i = 80; i < listlen; i++) { list.add(l.get(i)); } -- cgit From fbfd885064e2b7677a0b26f1d7c9dc24788b8e7f Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 13 May 2023 00:01:12 +0200 Subject: Change confusing label for profile type in profile widget --- .../me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ProfileWidget.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/me') 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 59342b9d..3d94fc59 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 @@ -20,7 +20,7 @@ public class ProfileWidget extends Widget { public ProfileWidget(List list) { super(TITLE, Formatting.YELLOW.getColorValue()); - Text profileType = StrMan.stdEntry(list, 61, "Type:", Formatting.GREEN); + Text profileType = StrMan.stdEntry(list, 61, "Profile:", Formatting.GREEN); IcoTextComponent profile = new IcoTextComponent(Ico.SIGN, profileType); this.addComponent(profile); -- cgit From 2c8cfe48f26424175d169d8328e0b4294b108c8c Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 13 May 2023 00:05:27 +0200 Subject: Rework component paddings, see below Components now consistently don't include any padding to the left and downwards. This "external" padding is used by widgets and the TableComponent to position their (sub-)components, so they should apply it themselves. This finally fixes the player list widget's drifting seperators and not-wide-enough cols. --- .../skyblocker/skyblock/tabhud/widget/Widget.java | 8 ++++-- .../tabhud/widget/component/Component.java | 5 ++-- .../widget/component/IcoFatTextComponent.java | 4 +-- .../tabhud/widget/component/IcoTextComponent.java | 2 +- .../widget/component/PlainTextComponent.java | 4 +-- .../tabhud/widget/component/PlayerComponent.java | 2 +- .../tabhud/widget/component/ProgressComponent.java | 2 +- .../tabhud/widget/component/TableComponent.java | 32 ++++++++++++---------- 8 files changed, 33 insertions(+), 26 deletions(-) (limited to 'src/main/java/me') 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 9e3c87cf..01f47933 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 @@ -40,9 +40,11 @@ public abstract class Widget { public final void pack() { for (Component c : components) { - h += c.getHeight() + 4; - w = Math.max(w, c.getWidth()); + h += c.getHeight() + Component.PAD_L; + w = Math.max(w, c.getWidth() + Component.PAD_S); } + + h -= Component.PAD_L / 2; // less padding after lowest/last component h += BORDER_SZE_N + BORDER_SZE_S - 2; w += BORDER_SZE_E + BORDER_SZE_W; @@ -114,7 +116,7 @@ public abstract class Widget { for (Component c : components) { c.render(ms, x + BORDER_SZE_W, yOffs); - yOffs += c.getHeight() + 4; + yOffs += c.getHeight() + Component.PAD_L; } // pop manipulations above ms.pop(); 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 92b7ed1b..d9d84bc4 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 @@ -8,12 +8,13 @@ import net.minecraft.client.util.math.MatrixStack; public abstract class Component { static final int ICO_DIM = 16; - static final int PAD_S = 2; - static final int PAD_L = 4; + public static final int PAD_S = 2; + public static final int PAD_L = 4; static TextRenderer txtRend = MinecraftClient.getInstance().textRenderer; static ItemRenderer itmRend = MinecraftClient.getInstance().getItemRenderer(); + // these should always be the content dimensions without any padding. int width, height; public abstract void render(MatrixStack ms, int x, int y); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java index 9aec581b..6a780159 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java @@ -18,8 +18,8 @@ public class IcoFatTextComponent extends Component { this.l1 = l1; this.l2 = l2; - this.width = ICO_DIM + PAD_L + Math.max(txtRend.getWidth(l1), txtRend.getWidth(l2)) + PAD_S; - this.height = txtRend.fontHeight * 2 + PAD_S; + this.width = ICO_DIM + PAD_L + Math.max(txtRend.getWidth(l1), txtRend.getWidth(l2)); + this.height = txtRend.fontHeight + PAD_S + txtRend.fontHeight; } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java index defbb2e6..b54affbc 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java @@ -15,7 +15,7 @@ public class IcoTextComponent extends Component { this.ico = ico; this.text = text; - this.width = ICO_DIM + PAD_L + txtRend.getWidth(text) + PAD_S; + this.width = ICO_DIM + PAD_L + txtRend.getWidth(text); this.height = ICO_DIM; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java index 8976e6a2..a2ffced9 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java @@ -12,13 +12,13 @@ public class PlainTextComponent extends Component { public PlainTextComponent(Text text) { this.text = text; - this.width = PAD_S + txtRend.getWidth(text) + PAD_S; + this.width = PAD_S + txtRend.getWidth(text); // looks off without padding this.height = txtRend.fontHeight; } @Override public void render(MatrixStack ms, int x, int y) { - txtRend.draw(ms, text, x + PAD_S, y, 0xffffffff); + txtRend.draw(ms, text, x, y, 0xffffffff); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java index 56e2b3c3..ff296f28 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java @@ -21,7 +21,7 @@ public class PlayerComponent extends Component { name = ple.getProfile().getName(); tex = ple.getSkinTexture(); - this.width = txtRend.getWidth(name) + PAD_S + SKIN_ICO_DIM; + this.width = SKIN_ICO_DIM + PAD_S + txtRend.getWidth(name) ; this.height = txtRend.fontHeight; } 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 1803e327..753c9b21 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 @@ -30,8 +30,8 @@ public class ProgressComponent extends Component { this.pcnt = pcnt; this.barW = BAR_WIDTH; + this.width = ICO_DIM + PAD_L + Math.max(this.barW, txtRend.getWidth(desc)); this.height = txtRend.fontHeight + PAD_S + 2 + txtRend.fontHeight + 2; - this.width = ICO_DIM + PAD_L + Math.max(this.barW, txtRend.getWidth(desc)) + PAD_S; } public ProgressComponent(ItemStack ico, Text text, float pcnt, int color) { 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 eeb8ce3b..5d27380e 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 @@ -12,43 +12,47 @@ public class TableComponent extends Component { private Component[][] comps; private int color; - private int tw, th; + private int cols, rows; private int cellW, cellH; public TableComponent(int w, int h, int col) { comps = new Component[w][h]; color = 0xff000000 | col; - tw = w; - th = h; + cols = w; + rows = h; } public void addToCell(int x, int y, Component c) { this.comps[x][y] = c; - // are tables still too wide? - this.cellW = Math.max(this.cellW, c.width + PAD_S); + // pad extra to add a vertical line later + this.cellW = Math.max(this.cellW, c.width + PAD_S + PAD_L); // assume all rows are equally high so overwriting doesn't matter // if this wasn't the case, drawing would need more math // not doing any of that if it's not needed - this.cellH = c.height; + this.cellH = c.height + PAD_S; - this.width = this.cellW * this.tw; - this.height = (this.cellH + PAD_S) * this.th - PAD_S; + this.width = this.cellW * this.cols; + this.height = (this.cellH * this.rows) - PAD_S / 2; } @Override public void render(MatrixStack ms, int xpos, int ypos) { - for (int x = 0; x < tw; x++) { - for (int y = 0; y < th; y++) { + for (int x = 0; x < cols; x++) { + for (int y = 0; y < rows; y++) { if (comps[x][y] != null) { - comps[x][y].render(ms, xpos + x * cellW + x * PAD_L, ypos + y * cellH + y * PAD_S); + comps[x][y].render(ms, xpos + (x * cellW), ypos + y * cellH); } } - if (x != tw - 1) { - DrawableHelper.fill(ms, xpos + ((x + 1) * (cellW + PAD_S)) - 1, ypos + 1, - xpos + ((x + 1) * (cellW + PAD_S)), ypos + this.height - 1, this.color); + // add a line before the col if we're not drawing the first one + if (x != 0) { + int lineX1 = xpos + (x * cellW) - PAD_S - 1; + int lineX2 = xpos + (x * cellW) - PAD_S; + int lineY1 = ypos + 1; + int lineY2 = ypos + this.height - PAD_S - 1; // not sure why but it looks correct + DrawableHelper.fill(ms, lineX1, lineY1, lineX2, lineY2, this.color); } } } -- cgit From 73968e490b4a6886b05f45a95bfcd2328affdac4 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Fri, 19 May 2023 17:05:00 +0200 Subject: Rework just about everything to gracefully handle unexpected inputs --- .../java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 2 + .../skyblocker/mixin/PlayerListHudMixin.java | 25 ++---- .../skyblock/tabhud/screens/EmptyScreen.java | 7 +- .../skyblocker/skyblock/tabhud/screens/Screen.java | 65 +++++++-------- .../screens/genericInfo/GardenInfoScreen.java | 14 ++-- .../screens/genericInfo/GenericInfoScreen.java | 14 ++-- .../tabhud/screens/main/CrimsonIsleScreen.java | 14 ++-- .../tabhud/screens/main/DungeonHubScreen.java | 8 +- .../tabhud/screens/main/DungeonScreen.java | 16 ++-- .../tabhud/screens/main/FarmingServerScreen.java | 10 +-- .../skyblock/tabhud/screens/main/GardenScreen.java | 8 +- .../tabhud/screens/main/GenericServerScreen.java | 7 +- .../tabhud/screens/main/GuestServerScreen.java | 8 +- .../tabhud/screens/main/HomeServerScreen.java | 10 +-- .../tabhud/screens/main/HubServerScreen.java | 10 +-- .../tabhud/screens/main/MineServerScreen.java | 14 ++-- .../tabhud/screens/main/ParkServerScreen.java | 7 +- .../screens/playerList/DungeonPlayerScreen.java | 16 ++-- .../screens/playerList/GuestPlayerScreen.java | 10 +-- .../screens/playerList/HomePlayerScreen.java | 10 +-- .../screens/playerList/PlayerListScreen.java | 6 +- .../skyblock/tabhud/util/PlayerListMgr.java | 92 ++++++++++++++++++++++ .../skyblock/tabhud/util/PlayerLocator.java | 29 +++---- .../skyblocker/skyblock/tabhud/util/StrMan.java | 68 ---------------- .../skyblock/tabhud/widget/CommsWidget.java | 28 ++++--- .../skyblock/tabhud/widget/ComposterWidget.java | 26 ++---- .../skyblock/tabhud/widget/CookieWidget.java | 20 +++-- .../skyblock/tabhud/widget/DungeonDeathWidget.java | 38 ++++----- .../tabhud/widget/DungeonDownedWidget.java | 26 +++--- .../tabhud/widget/DungeonPlayerWidget.java | 47 +++++------ .../tabhud/widget/DungeonPuzzleWidget.java | 20 +++-- .../tabhud/widget/DungeonSecretWidget.java | 16 +--- .../tabhud/widget/DungeonServerWidget.java | 45 +++++------ .../skyblock/tabhud/widget/EffectWidget.java | 23 +++++- .../skyblock/tabhud/widget/ElectionWidget.java | 69 +++++++++------- .../skyblock/tabhud/widget/EmptyWidget.java | 5 +- .../skyblock/tabhud/widget/EssenceWidget.java | 22 +++--- .../skyblock/tabhud/widget/EventWidget.java | 12 +-- .../skyblock/tabhud/widget/FireSaleWidget.java | 45 ++++++----- .../skyblock/tabhud/widget/ForgeWidget.java | 47 +++++++---- .../skyblock/tabhud/widget/GardenServerWidget.java | 44 +++++------ .../skyblock/tabhud/widget/GardenSkillsWidget.java | 47 +++++++---- .../skyblock/tabhud/widget/GuestServerWidget.java | 23 ++---- .../skyblock/tabhud/widget/IslandGuestsWidget.java | 19 ++--- .../skyblock/tabhud/widget/IslandOwnersWidget.java | 16 ++-- .../skyblock/tabhud/widget/IslandSelfWidget.java | 15 ++-- .../skyblock/tabhud/widget/IslandServerWidget.java | 29 ++----- .../tabhud/widget/JacobsContestWidget.java | 20 ++--- .../skyblock/tabhud/widget/MinionWidget.java | 24 +++--- .../skyblock/tabhud/widget/ParkServerWidget.java | 24 ++---- .../skyblock/tabhud/widget/PlayerListWidget.java | 16 +++- .../skyblock/tabhud/widget/PowderWidget.java | 14 +--- .../skyblock/tabhud/widget/ProfileWidget.java | 24 ++---- .../skyblock/tabhud/widget/QuestWidget.java | 12 +-- .../skyblock/tabhud/widget/ReputationWidget.java | 42 ++++++---- .../skyblock/tabhud/widget/ServerWidget.java | 20 +---- .../skyblock/tabhud/widget/SkillsWidget.java | 40 +++++----- .../skyblock/tabhud/widget/TrapperWidget.java | 11 +-- .../skyblock/tabhud/widget/UpgradeWidget.java | 13 ++- .../skyblock/tabhud/widget/VolcanoWidget.java | 18 +++-- .../skyblocker/skyblock/tabhud/widget/Widget.java | 38 +++++++++ .../widget/component/IcoFatTextComponent.java | 26 ++++-- .../tabhud/widget/component/IcoTextComponent.java | 19 ++++- .../widget/component/PlainTextComponent.java | 11 ++- .../tabhud/widget/component/ProgressComponent.java | 26 ++++-- 65 files changed, 780 insertions(+), 770 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/StrMan.java (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index f804d90e..fa80bcc2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -6,6 +6,7 @@ import me.xmrvizzy.skyblocker.skyblock.BackpackPreview; import me.xmrvizzy.skyblocker.skyblock.StatusBarTracker; import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonBlaze; import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.utils.Scheduler; import me.xmrvizzy.skyblocker.utils.Utils; @@ -23,6 +24,7 @@ public class SkyblockerMod { scheduler.scheduleCyclic(DungeonBlaze::update, 4); scheduler.scheduleCyclic(BackpackPreview::tick, 50); scheduler.scheduleCyclic(DwarvenHud::update, 40); + scheduler.scheduleCyclic(PlayerListMgr::updateList, 20); } public static SkyblockerMod getInstance() { diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index a2ab848a..53494940 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -1,7 +1,5 @@ package me.xmrvizzy.skyblocker.mixin; -import java.util.List; - import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -17,7 +15,6 @@ import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.hud.PlayerListHud; import net.minecraft.client.network.ClientPlayNetworkHandler; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.scoreboard.Scoreboard; import net.minecraft.scoreboard.ScoreboardObjective; @@ -46,29 +43,17 @@ public class PlayerListHudMixin { return; } - List list = nwH.getListedPlayerListEntries().stream() - .sorted(PlayerListHudAccessor.getOrdering()).toList(); - - // list hasn't loaded completely, abort until widgets handle errors correctly - if (list.size() < 40) { - return; - } - int w = scaledW; int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); - try { - - Screen screen = Screen.getCorrect(w, h, list, footer); - if (screen != null) { - screen.render(ms); - info.cancel(); - } + long then = System.nanoTime(); + Screen screen = Screen.getCorrect(w, h, footer); + screen.render(ms); + info.cancel(); } catch (Exception e) { e.printStackTrace(); - client.player.sendMessage(Text.of("The tab HUD has encountered unexpected text, see log! :(")); } } -} +} \ 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 index efc64a70..5c302eb3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/EmptyScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/EmptyScreen.java @@ -1,17 +1,14 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; -import java.util.List; - import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EmptyWidget; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.Text; public class EmptyScreen extends Screen { - public EmptyScreen(int w, int h, List ple, Text footer) { + public EmptyScreen(int w, int h, Text footer) { super(w, h); - EmptyWidget ew = new EmptyWidget(ple); + 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 index cc16da8b..ae71d7bd 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 @@ -1,7 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; import java.util.ArrayList; -import java.util.List; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; @@ -24,7 +23,6 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList.HomePlayerScree 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.network.PlayerListEntry; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; @@ -39,57 +37,48 @@ public class Screen { this.h = (int) (h / scale); } - public static Screen getCorrect(int w, int h, List ple, Text footer) { + public static Screen getCorrect(int w, int h, Text footer) { if (TabHud.genericTgl.isPressed()) { - return Screen.correctGenericScrn(w, h, ple, footer); - // } else if (TabHud.mapTgl.isPressed()) { - // return Screen.correctMapScrn(w, h, ple, footer); + return Screen.correctGenericScrn(w, h, footer); } else if (TabHud.playerTgl.isPressed()) { - return Screen.correctPlayerScrn(w, h, ple, footer); + return Screen.correctPlayerScrn(w, h, footer); } else { - return Screen.correctMainScrn(w, h, ple, footer); + return Screen.correctMainScrn(w, h, footer); } } - // private static Screen correctMapScrn(int w, int h, List - // list, Text footer) { - // // return switch (getScreenType(list)) { - // // case CRYSTAL_HOLLOWS -> null; - // // case DUNGEON -> null; - // // default -> new EmptyScreen(w, h, list, footer); - // // }; - // return new EmptyScreen(w, h, list, footer); - // } - - private static Screen correctGenericScrn(int w, int h, List list, Text footer) { + private static Screen correctGenericScrn(int w, int h, Text footer) { return switch (PlayerLocator.getPlayerLocation()) { - case GARDEN -> new GardenInfoScreen(w, h, list, footer); // ok - default -> new GenericInfoScreen(w, h, list, footer); // ok + case GARDEN -> new GardenInfoScreen(w, h, footer); // ok + case UNKNOWN -> new EmptyScreen(w, h, footer); // ok + default -> new GenericInfoScreen(w, h, footer); // ok }; } - private static Screen correctPlayerScrn(int w, int h, List list, Text footer) { + private static Screen correctPlayerScrn(int w, int h, Text footer) { return switch (PlayerLocator.getPlayerLocation()) { - case GUEST_ISLAND -> new GuestPlayerScreen(w, h, list, footer); // ok - case HOME_ISLAND -> new HomePlayerScreen(w, h, list, footer); // ok - case DUNGEON -> new DungeonPlayerScreen(w, h, list, footer); - default -> new PlayerListScreen(w, h, list, footer); // ok + 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, List list, Text footer) { + private static Screen correctMainScrn(int w, int h, Text footer) { return switch (PlayerLocator.getPlayerLocation()) { - case PARK -> new ParkServerScreen(w, h, list, footer); // ok - case HUB -> new HubServerScreen(w, h, list, footer); // ok - case HOME_ISLAND -> new HomeServerScreen(w, h, list, footer); // ok - case GUEST_ISLAND -> new GuestServerScreen(w, h, list, footer); // ok - case CRYSTAL_HOLLOWS, DWARVEN_MINES -> new MineServerScreen(w, h, list, footer); - case FARMING_ISLAND -> new FarmingServerScreen(w, h, list, footer); // ok - case DUNGEON_HUB -> new DungeonHubScreen(w, h, list, footer); // ok - case DUNGEON -> new DungeonScreen(w, h, list, footer); // ok - case CRIMSON_ISLE -> new CrimsonIsleScreen(w, h, list, footer); // ??? - case GARDEN -> new GardenScreen(w, h, list, footer); - default -> new GenericServerScreen(w, h, list, footer); // ok + case PARK -> new ParkServerScreen(w, h, footer); // ok + case HUB -> new HubServerScreen(w, h, footer); // ok when fire sale incoming, TODO active fs, no fs + 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 4 comms, 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 UNKNOWN -> new EmptyScreen(w, h, footer); // ok + default -> new GenericServerScreen(w, h, footer); // ok }; } 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 f24fb82a..0bb12c8e 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 @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.genericInfo; -import java.util.List; + import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.CookieWidget; @@ -10,24 +10,24 @@ 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.client.network.PlayerListEntry; + import net.minecraft.text.Text; public class GardenInfoScreen extends Screen { - public GardenInfoScreen(int w, int h, List ple, Text footer) { + public GardenInfoScreen(int w, int h, Text footer) { super(w, h); String f = footer.getString(); - GardenSkillsWidget gsw = new GardenSkillsWidget(ple); - EventWidget evw = new EventWidget(ple, true); + GardenSkillsWidget gsw = new GardenSkillsWidget(); + EventWidget evw = new EventWidget(true); UpgradeWidget uw = new UpgradeWidget(f); - ProfileWidget pw = new ProfileWidget(ple); + ProfileWidget pw = new ProfileWidget(); EffectWidget efw = new EffectWidget(f); - JacobsContestWidget jcw = new JacobsContestWidget(ple); + JacobsContestWidget jcw = new JacobsContestWidget(); CookieWidget cw = new CookieWidget(f); // layout code incoming 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 764397ae..a3e75ab6 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 @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.genericInfo; -import java.util.List; + import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.CookieWidget; @@ -11,24 +11,24 @@ 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.client.network.PlayerListEntry; + import net.minecraft.text.Text; public class GenericInfoScreen extends Screen { - public GenericInfoScreen(int w, int h, List ple, Text footer) { + public GenericInfoScreen(int w, int h, Text footer) { super(w, h); String f = footer.getString(); - SkillsWidget sw = new SkillsWidget(ple); - EventWidget evw = new EventWidget(ple, false); + SkillsWidget sw = new SkillsWidget(); + EventWidget evw = new EventWidget(false); UpgradeWidget uw = new UpgradeWidget(f); - ProfileWidget pw = new ProfileWidget(ple); + ProfileWidget pw = new ProfileWidget(); EffectWidget efw = new EffectWidget(f); - ElectionWidget elw = new ElectionWidget(ple); + ElectionWidget elw = new ElectionWidget(); CookieWidget cw = new CookieWidget(f); this.stackWidgetsH(sw, evw, uw); 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 index 046abcbb..6e6f563b 100644 --- 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 @@ -1,24 +1,24 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; -import java.util.List; + import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.QuestWidget; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ReputationWidget; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.VolcanoWidget; -import net.minecraft.client.network.PlayerListEntry; + import net.minecraft.text.Text; public class CrimsonIsleScreen extends Screen { - public CrimsonIsleScreen(int w, int h, List ple, Text footer) { + public CrimsonIsleScreen(int w, int h, Text footer) { super(w, h); - ServerWidget sw = new ServerWidget(ple); - ReputationWidget rw = new ReputationWidget(ple); - QuestWidget qw = new QuestWidget(ple); - VolcanoWidget vw = new VolcanoWidget(ple); + ServerWidget sw = new ServerWidget(); + ReputationWidget rw = new ReputationWidget(); + QuestWidget qw = new QuestWidget(); + VolcanoWidget vw = new VolcanoWidget(); this.stackWidgetsH(sw, rw); this.stackWidgetsH(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 index 4f721dfc..5db461af 100644 --- 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 @@ -1,21 +1,19 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; -import java.util.List; import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EssenceWidget; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.Text; public class DungeonHubScreen extends Screen{ - public DungeonHubScreen(int w, int h, List list, Text footer) { + public DungeonHubScreen(int w, int h, Text footer) { super(w, h); - ServerWidget sw = new ServerWidget(list); - EssenceWidget ew = new EssenceWidget(list); + ServerWidget sw = new ServerWidget(); + EssenceWidget ew = new EssenceWidget(); this.centerW(sw); this.centerW(ew); 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 index 35383f1b..98ce476e 100644 --- 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 @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; -import java.util.List; + import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonDeathWidget; @@ -9,18 +9,18 @@ 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.client.network.PlayerListEntry; + import net.minecraft.text.Text; public class DungeonScreen extends Screen { - public DungeonScreen(int w, int h, List ple, Text footer) { + public DungeonScreen(int w, int h, Text footer) { super(w, h); - DungeonDownedWidget ddow = new DungeonDownedWidget(ple); - DungeonDeathWidget ddew = new DungeonDeathWidget(ple); - DungeonSecretWidget dscw = new DungeonSecretWidget(ple); - DungeonServerWidget dsrw = new DungeonServerWidget(ple); - DungeonPuzzleWidget dpuw = new DungeonPuzzleWidget(ple); + DungeonDownedWidget ddow = new DungeonDownedWidget(); + DungeonDeathWidget ddew = new DungeonDeathWidget(); + DungeonSecretWidget dscw = new DungeonSecretWidget(); + DungeonServerWidget dsrw = new DungeonServerWidget(); + DungeonPuzzleWidget dpuw = new DungeonPuzzleWidget(); this.offCenterL(ddow); this.offCenterL(ddew); 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 index 206af26c..02c81f23 100644 --- 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 @@ -1,21 +1,21 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; -import java.util.List; + import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.TrapperWidget; -import net.minecraft.client.network.PlayerListEntry; + import net.minecraft.text.Text; public class FarmingServerScreen extends Screen{ - public FarmingServerScreen(int w, int h, List list, Text footer) { + public FarmingServerScreen(int w, int h, Text footer) { super(w, h); - ServerWidget sw = new ServerWidget(list); - TrapperWidget tw = new TrapperWidget(list); + ServerWidget sw = new ServerWidget(); + TrapperWidget tw = new TrapperWidget(); this.centerW(sw); this.centerW(tw); 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 index 3debf905..ae5b642f 100644 --- 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 @@ -1,20 +1,18 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; -import java.util.List; import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ComposterWidget; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.GardenServerWidget; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.Text; public class GardenScreen extends Screen{ - public GardenScreen(int w, int h, List ple, Text footer) { + public GardenScreen(int w, int h, Text footer) { super(w, h); - GardenServerWidget gsw = new GardenServerWidget(ple); - ComposterWidget cw = new ComposterWidget(ple); + GardenServerWidget gsw = new GardenServerWidget(); + ComposterWidget cw = new ComposterWidget(); this.stackWidgetsH(gsw, cw); this.centerW(gsw); 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 index 8afdcac5..a89563db 100644 --- 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 @@ -1,19 +1,18 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; -import java.util.List; + import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.Text; public class GenericServerScreen extends Screen { - public GenericServerScreen(int w, int h, List ple, Text footer) { + public GenericServerScreen(int w, int h, Text footer) { super(w, h); - ServerWidget sw = new ServerWidget(ple); + 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 index b6388be9..57d7a199 100644 --- 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 @@ -1,19 +1,19 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; -import java.util.List; + import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.GuestServerWidget; -import net.minecraft.client.network.PlayerListEntry; + import net.minecraft.text.Text; public class GuestServerScreen extends Screen{ - public GuestServerScreen(int w, int h, List list, Text footer) { + public GuestServerScreen(int w, int h, Text footer) { super(w, h); - GuestServerWidget gsw = new GuestServerWidget(list); + 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 index 9ce8ee0e..e61ba4b0 100644 --- 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 @@ -1,21 +1,21 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; -import java.util.List; + import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.IslandServerWidget; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.MinionWidget; -import net.minecraft.client.network.PlayerListEntry; + import net.minecraft.text.Text; public class HomeServerScreen extends Screen { - public HomeServerScreen(int w, int h, List list, Text footer) { + public HomeServerScreen(int w, int h, Text footer) { super(w, h); - IslandServerWidget isw = new IslandServerWidget(list); - MinionWidget mw = new MinionWidget(list); + IslandServerWidget isw = new IslandServerWidget(); + MinionWidget mw = new MinionWidget(); this.centerH(isw); this.centerH(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 index 3ba8fc47..e2857f7e 100644 --- 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 @@ -1,21 +1,21 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; -import java.util.List; + import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.FireSaleWidget; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; -import net.minecraft.client.network.PlayerListEntry; + import net.minecraft.text.Text; public class HubServerScreen extends Screen { - public HubServerScreen(int w, int h, List ple, Text footer) { + public HubServerScreen(int w, int h, Text footer) { super(w, h); - ServerWidget sw = new ServerWidget(ple); - FireSaleWidget fsw = new FireSaleWidget(ple); + ServerWidget sw = new ServerWidget(); + FireSaleWidget fsw = new FireSaleWidget(); this.centerW(sw); this.centerW(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 index f0dd6e0a..22eb0ffa 100644 --- 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 @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; -import java.util.List; + import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.CommsWidget; @@ -8,18 +8,18 @@ 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.client.network.PlayerListEntry; + import net.minecraft.text.Text; public class MineServerScreen extends Screen{ - public MineServerScreen(int w, int h, List list, Text footer) { + public MineServerScreen(int w, int h, Text footer) { super(w, h); - ServerWidget sw = new ServerWidget(list); - PowderWidget pw = new PowderWidget(list); - CommsWidget cw = new CommsWidget(list); - ForgeWidget fw = new ForgeWidget(list); + ServerWidget sw = new ServerWidget(); + PowderWidget pw = new PowderWidget(); + CommsWidget cw = new CommsWidget(); + ForgeWidget fw = new ForgeWidget(); this.stackWidgetsH(sw, pw, cw); this.centerH(fw); 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 index c1d09f6c..aa65d946 100644 --- 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 @@ -1,19 +1,16 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; -import java.util.List; - import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ParkServerWidget; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.Text; public class ParkServerScreen extends Screen{ - public ParkServerScreen(int w, int h, List ple, Text footer) { + public ParkServerScreen(int w, int h, Text footer) { super(w, h); - ParkServerWidget sw = new ParkServerWidget(ple); + ParkServerWidget sw = new ParkServerWidget(); this.center(sw); this.addWidget(sw); 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 index aba19c56..64d0db99 100644 --- 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 @@ -1,23 +1,23 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList; -import java.util.List; + import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonPlayerWidget; -import net.minecraft.client.network.PlayerListEntry; + import net.minecraft.text.Text; public class DungeonPlayerScreen extends Screen { - public DungeonPlayerScreen(int w, int h, List ple, Text footer) { + public DungeonPlayerScreen(int w, int h, Text footer) { super(w, h); - DungeonPlayerWidget dpw1 = new DungeonPlayerWidget(ple, 1); - DungeonPlayerWidget dpw2 = new DungeonPlayerWidget(ple, 2); - DungeonPlayerWidget dpw3 = new DungeonPlayerWidget(ple, 3); - DungeonPlayerWidget dpw4 = new DungeonPlayerWidget(ple, 4); - DungeonPlayerWidget dpw5 = new DungeonPlayerWidget(ple, 5); + 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); 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 index f8210443..5a9733cc 100644 --- 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 @@ -1,21 +1,21 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList; -import java.util.List; + 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.client.network.PlayerListEntry; + import net.minecraft.text.Text; public class GuestPlayerScreen extends Screen{ - public GuestPlayerScreen(int w, int h, List list, Text footer) { + public GuestPlayerScreen(int w, int h, Text footer) { super(w, h); - IslandGuestsWidget igw = new IslandGuestsWidget(list); - IslandOwnersWidget iow = new IslandOwnersWidget(list); + IslandGuestsWidget igw = new IslandGuestsWidget(); + IslandOwnersWidget iow = new IslandOwnersWidget(); this.centerH(iow); this.centerH(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 index d89f6d6a..2a159ecc 100644 --- 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 @@ -1,21 +1,21 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList; -import java.util.List; + 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.client.network.PlayerListEntry; + import net.minecraft.text.Text; public class HomePlayerScreen extends Screen { - public HomePlayerScreen(int w, int h, List list, Text footer) { + public HomePlayerScreen(int w, int h, Text footer) { super(w, h); - IslandSelfWidget isw = new IslandSelfWidget(list); - IslandGuestsWidget igw = new IslandGuestsWidget(list); + IslandSelfWidget isw = new IslandSelfWidget(); + IslandGuestsWidget igw = new IslandGuestsWidget(); this.centerH(isw); this.centerH(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 index eca2e4aa..5db01512 100644 --- 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 @@ -1,19 +1,17 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList; -import java.util.List; import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.PlayerListWidget; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.Text; public class PlayerListScreen extends Screen { - public PlayerListScreen(int w, int h, List ple, Text footer) { + public PlayerListScreen(int w, int h, Text footer) { super(w, h); - PlayerListWidget plw = new PlayerListWidget(ple); + PlayerListWidget plw = new PlayerListWidget(); this.center(plw); this.addWidget(plw); 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 new file mode 100644 index 00000000..6243415d --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java @@ -0,0 +1,92 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.util; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import me.xmrvizzy.skyblocker.mixin.PlayerListHudAccessor; +import me.xmrvizzy.skyblocker.utils.Utils; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientPlayNetworkHandler; +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class PlayerListMgr { + + public static final Logger LOGGER = LoggerFactory.getLogger("Skyblocker Regex"); + + private static List playerList; + + public static void updateList() { + + if (!Utils.isOnSkyblock) { + return; + } + + ClientPlayNetworkHandler cpnwh = MinecraftClient.getInstance().getNetworkHandler(); + + // check is needed, else crash on server leave + if (cpnwh != null) { + + playerList = cpnwh.getPlayerList() + .stream() + .sorted(PlayerListHudAccessor.getOrdering()) + .toList(); + } + } + + // apply pattern to entry at index of player list. + // return null if there's nothing to match against in the entry, + // or if the pattern doesn't fully match. + public static Matcher regexAt(int idx, Pattern p) { + + String str = PlayerListMgr.strAt(idx); + + if (str == null) { + return null; + } + + Matcher m = p.matcher(str); + if (!m.matches()) { + LOGGER.debug("no match: \"{}\" against \"{}\"", str, p); + return null; + } else { + return m; + } + } + + // return string (i.e. displayName) at index of player list. + // return null if string is null, empty or whitespace only. + public static String strAt(int idx) { + + if (playerList == null) { + return null; + } + + if (playerList.size() <= idx) { + return null; + } + + Text txt = playerList.get(idx).getDisplayName(); + if (txt == null) { + return null; + } + String str = txt.getString().trim(); + if (str.length() == 0) { + return null; + } + return str; + } + + public static PlayerListEntry getRaw(int i) { + return playerList.get(i); + } + + public static int getSize() { + return playerList.size(); + } + +} 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 cffac5c4..eb8210d9 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 @@ -1,11 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.util; -import java.util.List; - -import me.xmrvizzy.skyblocker.mixin.PlayerListHudAccessor; import me.xmrvizzy.skyblocker.utils.Utils; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.network.PlayerListEntry; public class PlayerLocator { @@ -26,8 +21,7 @@ public class PlayerLocator { SPIDER_DEN, JERRY, GARDEN, - UNKNOWN, - NONE + UNKNOWN } public static Location getPlayerLocation() { @@ -36,19 +30,22 @@ public class PlayerLocator { return Location.UNKNOWN; } - List ple = MinecraftClient.getInstance().getNetworkHandler().getPlayerList().stream() - .sorted(PlayerListHudAccessor.getOrdering()).toList(); + if (Utils.isInDungeons) { + return Location.DUNGEON; + } - String cat2Name = StrMan.strAt(ple, 40); + String areaDesciptor = PlayerListMgr.strAt(41); - if (cat2Name.contains("Dungeon Stats")) { - return Location.DUNGEON; + if (areaDesciptor == null || areaDesciptor.length() < 6) { + return Location.UNKNOWN; } - String areaDesciptor = StrMan.strAt(ple, 41).substring(6); - switch (areaDesciptor) { + switch (areaDesciptor.substring(6)) { case "Private Island": - if (ple.get(44).getDisplayName().getString().endsWith("Guest")) { + String islandType = PlayerListMgr.strAt(44); + if (islandType == null) { + return Location.UNKNOWN; + } else if (islandType.endsWith("Guest")) { return Location.GUEST_ISLAND; } else { return Location.HOME_ISLAND; @@ -80,7 +77,7 @@ public class PlayerLocator { case "Garden": return Location.GARDEN; default: - return Location.NONE; + return Location.UNKNOWN; } } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/StrMan.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/StrMan.java deleted file mode 100644 index 4a30cf0f..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/StrMan.java +++ /dev/null @@ -1,68 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.util; - -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; - -public class StrMan { - - private static final Logger LOGGER = LoggerFactory.getLogger(StrMan.class.getName()); - private static final Text ERROR_TXT = Text.literal("[ERROR]").formatted(Formatting.RED, Formatting.BOLD); - - public static Text stdEntry(List ple, int idx, String entryName, Formatting contentFmt) { - Text txt = ple.get(idx).getDisplayName(); - if (txt == null) { - return ERROR_TXT; - } - String src = txt.getString(); - src = src.substring(src.indexOf(':') + 1); - return StrMan.stdEntry(src, entryName, contentFmt); - } - - public static Text stdEntry(String entryContent, String entryName, Formatting contentFmt) { - return Text.literal(entryName).append(Text.literal(entryContent).formatted(contentFmt)); - } - - public static Text plainEntry(List ple, int idx) { - Text txt = ple.get(idx).getDisplayName(); - if (txt == null) { - return ERROR_TXT; - } - return Text.of(txt.getString().trim()); - } - - public static Matcher regexAt(List ple, int idx, Pattern p) { - Text txt = ple.get(idx).getDisplayName(); - if (txt == null) { - return null; - } - String str = txt.getString(); - if (str.length() == 0) { - return null; - } - - Matcher m = p.matcher(str); - if (!m.matches()) { - LOGGER.error("ERROR: Regex {} failed for input \"{}\"", p.pattern(), str); - return null; - } else { - return m; - } - } - - public static String strAt(List ple, int idx) { - Text txt = ple.get(idx).getDisplayName(); - if (txt == null) { - return null; - } - return txt.getString(); - } - -} 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 e45865e4..de90cf30 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 @@ -6,11 +6,11 @@ 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.StrMan; +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.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -27,23 +27,31 @@ public class CommsWidget extends Widget { // match a comm // group 1: comm name // group 2: comm progress (without "%" for comms that show a percentage) - private static final Pattern COMM_PATTERN = Pattern.compile(" (.*): (.*)%?"); + private static final Pattern COMM_PATTERN = Pattern.compile("(?.*): (?.*)%?"); - public CommsWidget(List list) { + public CommsWidget() { super(TITLE, Formatting.DARK_AQUA.getColorValue()); for (int i = 50; i <= 53; i++) { - Matcher m = StrMan.regexAt(list, i, COMM_PATTERN); + Matcher m = PlayerListMgr.regexAt(i, COMM_PATTERN); + // end of comms found? if (m == null) { + if (i == 50) { + this.addComponent(new IcoTextComponent()); + } break; } - String g2 = m.group(2); + ProgressComponent pc; - if (g2.equals("DONE")) { - pc = new ProgressComponent(Ico.BOOK, Text.of(m.group(1)), Text.of(g2), 100f, pcntToCol(100)); + + String name = m.group("name"); + String progress = m.group("progress"); + + if (progress.equals("DONE")) { + pc = new ProgressComponent(Ico.BOOK, Text.of(name), Text.of(progress), 100f, pcntToCol(100)); } else { - float pcnt = Float.parseFloat(g2.substring(0, g2.length() - 1)); - pc = new ProgressComponent(Ico.BOOK, Text.of(m.group(1)), pcnt, pcntToCol(pcnt)); + float pcnt = Float.parseFloat(progress.substring(0, progress.length() - 1)); + pc = new ProgressComponent(Ico.BOOK, Text.of(name), pcnt, pcntToCol(pcnt)); } this.addComponent(pc); } 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 2537b90a..5922fcbc 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 @@ -1,12 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -18,25 +14,13 @@ public class ComposterWidget extends Widget { private static final MutableText TITLE = Text.literal("Composter").formatted(Formatting.GREEN, Formatting.BOLD); - - public ComposterWidget(List list) { + public ComposterWidget() { super(TITLE, Formatting.GREEN.getColorValue()); - Text matter = StrMan.stdEntry(list, 48, "Organic Matter:", Formatting.YELLOW); - IcoTextComponent mat = new IcoTextComponent(Ico.SAPLING, matter); - this.addComponent(mat); - - Text fuel = StrMan.stdEntry(list, 49, "Fuel:", Formatting.BLUE); - IcoTextComponent f = new IcoTextComponent(Ico.FURNACE, fuel); - this.addComponent(f); - - Text timeLeft = StrMan.stdEntry(list, 50, "Time Left:", Formatting.RED); - IcoTextComponent time = new IcoTextComponent(Ico.CLOCK, timeLeft); - this.addComponent(time); - - Text compost = StrMan.stdEntry(list, 51, "Stored Compost:", Formatting.DARK_GREEN); - IcoTextComponent comp = new IcoTextComponent(Ico.COMPOSTER, compost); - this.addComponent(comp); + 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 8974efa7..42298fcd 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 @@ -1,8 +1,10 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; - import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -15,15 +17,23 @@ public class CookieWidget extends Widget { private static final MutableText TITLE = Text.literal("Cookie Info").formatted(Formatting.DARK_PURPLE, Formatting.BOLD); + private static final Pattern COOKIE_PATTERN = Pattern.compile(".*\\nCookie Buff\\n(?.*)\\n"); + public CookieWidget(String footertext) { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); - String interesting = footertext.split("Cookie Buff")[1]; - String[] lines = interesting.split("\n"); - if (lines[1].startsWith("Not")) { + Matcher m = COOKIE_PATTERN.matcher(footertext); + if (!m.find() || m.group("buff") == null) { + this.addComponent(new IcoTextComponent()); + this.pack(); + return; + } + + String buff = m.group("buff"); + if (buff.startsWith("Not")) { this.addComponent(new IcoTextComponent(Ico.COOKIE, Text.of("Not active"))); } else { - Text cookie = Text.literal("Time Left: ").append(lines[1]); + 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/DungeonDeathWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDeathWidget.java index 928d9f76..3e5d8d6a 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 @@ -1,14 +1,12 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -23,28 +21,24 @@ public class DungeonDeathWidget extends Widget { // match the deaths entry // group 1: amount of deaths - private static final Pattern DEATH_PATTERN = Pattern.compile("\\S*: \\((\\d+)\\).*"); + private static final Pattern DEATH_PATTERN = Pattern.compile("\\S*: \\((?\\d+)\\).*"); - public DungeonDeathWidget(List list) { + public DungeonDeathWidget() { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); - Matcher m = StrMan.regexAt(list, 25, DEATH_PATTERN); - Formatting f = (m.group(1).equals("0")) ? Formatting.GREEN : Formatting.RED; - Text d = Text.literal("Deaths: ").append(Text.literal(m.group(1)).formatted(f)); - IcoTextComponent deaths = new IcoTextComponent(Ico.SKULL, d); - this.addComponent(deaths); - - Text dealt = StrMan.stdEntry(list, 26, "Damage Dealt:", Formatting.RED); - IcoTextComponent de = new IcoTextComponent(Ico.SWORD, dealt); - this.addComponent(de); - - Text heal = StrMan.stdEntry(list, 27, "Healing Done:", Formatting.RED); - IcoTextComponent he = new IcoTextComponent(Ico.POTION, heal); - this.addComponent(he); - - Text mile = StrMan.stdEntry(list, 28, "Milestone:", Formatting.YELLOW); - IcoTextComponent mi = new IcoTextComponent(Ico.NTAG, mile); - this.addComponent(mi); + Matcher m = PlayerListMgr.regexAt( 25, DEATH_PATTERN); + if (m == null) { + this.addComponent(new IcoTextComponent()); + } else { + Formatting f = (m.group("deathnum").equals("0")) ? Formatting.GREEN : Formatting.RED; + Text d = Text.literal("Deaths: ").append(Text.literal(m.group("deathnum")).formatted(f)); + IcoTextComponent deaths = new IcoTextComponent(Ico.SKULL, d); + this.addComponent(deaths); + } + + this.addSimpleIcoText(Ico.SWORD, "Damage Dealt:", Formatting.RED, 26); + 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 36245a4e..35926d7d 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 @@ -1,12 +1,9 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; - import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -19,23 +16,20 @@ public class DungeonDownedWidget extends Widget { private static final MutableText TITLE = Text.literal("Downed").formatted(Formatting.DARK_PURPLE, Formatting.BOLD); - public DungeonDownedWidget(List list) { + public DungeonDownedWidget() { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); Formatting format = Formatting.RED; - if (StrMan.strAt(list, 21).endsWith("NONE")) { + String down = PlayerListMgr.strAt(21); + if (down != null && down.endsWith("NONE")) { format = Formatting.GRAY; } - Text downed = StrMan.stdEntry(list, 21, "Downed:", format); - IcoTextComponent down = new IcoTextComponent(Ico.SKULL, downed); - this.addComponent(down); - - Text time = StrMan.stdEntry(list, 22, "Time:", Formatting.GRAY); - IcoTextComponent t = new IcoTextComponent(Ico.CLOCK, time); - this.addComponent(t); + int idx = down.indexOf(": "); + Text downed = (down == null || idx== -1) ? null : Widget.simpleEntryText(down.substring(idx + 2), "Downed:", format); + IcoTextComponent d = new IcoTextComponent(Ico.SKULL, downed); + this.addComponent(d); - Text revive = StrMan.stdEntry(list, 23, "Revive:", Formatting.GRAY); - IcoTextComponent rev = new IcoTextComponent(Ico.POTION, revive); - this.addComponent(rev); + 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 7195e455..8f28a2c6 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 @@ -2,14 +2,12 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.item.ItemStack; import net.minecraft.text.MutableText; import net.minecraft.text.Text; @@ -28,7 +26,8 @@ public class DungeonPlayerWidget extends Widget { // group 3: level (or nothing, if pre dungeon start) // as a side effect, this regex keeps the iron man icon in the name // not sure if that should be - private static final Pattern PLAYER_PATTERN = Pattern.compile("\\[\\d*\\] (.*) \\((\\S*) ?([LXVI]*)\\)"); + private static final Pattern PLAYER_PATTERN = Pattern + .compile("\\[\\d*\\] (?.*) \\((?\\S*) ?(?[LXVI]*)\\)"); private static final HashMap ICOS = new HashMap<>(); private static final ArrayList MSGS = new ArrayList<>(); @@ -42,45 +41,49 @@ public class DungeonPlayerWidget extends Widget { MSGS.add("PRESS A TO JOIN"); MSGS.add("Invite a friend!"); MSGS.add("But nobody came."); + MSGS.add("More is better!"); } // title needs to be changeable here - public DungeonPlayerWidget(List list, int player) { + public DungeonPlayerWidget(int player) { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); int start = 1 + (player - 1) * 4; - if (list.get(start).getDisplayName().getString().length() < 2) { - this.addComponent( - new IcoTextComponent(Ico.SIGN, Text.literal(MSGS.get((int)(Math.random()*MSGS.size()))).formatted(Formatting.GRAY))); + if (PlayerListMgr.strAt(start) == null) { + int idx = player - 2; + 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); + if (m == null) { + this.addComponent(new IcoTextComponent()); + this.addComponent(new IcoTextComponent()); } else { - Matcher m = StrMan.regexAt(list, start, PLAYER_PATTERN); - Text name = Text.literal("Name: ").append(Text.literal(m.group(1)).formatted(Formatting.YELLOW)); + Text name = Text.literal("Name: ").append(Text.literal(m.group("name")).formatted(Formatting.YELLOW)); this.addComponent(new IcoTextComponent(Ico.PLAYER, name)); - String cl = m.group(2); + String cl = m.group("class"); Formatting clf = Formatting.GRAY; ItemStack cli = Ico.BARRIER; if (!cl.equals("EMPTY")) { cli = ICOS.get(cl); clf = Formatting.LIGHT_PURPLE; - cl += " " + m.group(3); + cl += " " + m.group("level"); } - Text class_ = Text.literal("Class: ").append(Text.literal(cl).formatted(clf)); - IcoTextComponent itclass = new IcoTextComponent(cli, class_); + Text clazz = Text.literal("Class: ").append(Text.literal(cl).formatted(clf)); + IcoTextComponent itclass = new IcoTextComponent(cli, clazz); this.addComponent(itclass); + } - Text ult = StrMan.stdEntry(list, start + 1, "Ult Cooldown:", Formatting.GOLD); - IcoTextComponent ul = new IcoTextComponent(Ico.CLOCK, ult); - this.addComponent(ul); - - Text revive = StrMan.stdEntry(list, start + 2, "Revives:", Formatting.DARK_PURPLE); - IcoTextComponent re = new IcoTextComponent(Ico.POTION, revive); - this.addComponent(re); + 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 86d1f938..b689228d 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 @@ -1,14 +1,12 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -25,20 +23,22 @@ public class DungeonPuzzleWidget extends Widget { // group 2: status // " ?.*" to diescard the solver's name if present // the teleport maze has a trailing whitespace that messes with the regex - private static final Pattern PUZZLE_PATTERN = Pattern.compile(" (.*): \\[(.*)\\] ?.*"); + private static final Pattern PUZZLE_PATTERN = Pattern.compile("(?.*): \\[(?.*)\\] ?.*"); - public DungeonPuzzleWidget(List list) { + public DungeonPuzzleWidget() { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); int pos = 48; while (pos < 60) { - Matcher m = StrMan.regexAt(list, pos, PUZZLE_PATTERN); + Matcher m = PlayerListMgr.regexAt(pos, PUZZLE_PATTERN); if (m == null) { break; } - Text t = Text.literal(m.group(1) + ": ").append(Text.literal("[").formatted(Formatting.GRAY)) - .append(m.group(2)).append(Text.literal("]").formatted(Formatting.GRAY)); + Text t = Text.literal(m.group("name") + ": ") + .append(Text.literal("[").formatted(Formatting.GRAY)) + .append(m.group("status")) + .append(Text.literal("]").formatted(Formatting.GRAY)); IcoTextComponent itc = new IcoTextComponent(Ico.SIGN, t); this.addComponent(itc); pos++; @@ -46,6 +46,10 @@ public class DungeonPuzzleWidget extends Widget { // not sure which one is which // still need to find out codepoint for the puzzle failed char } + if (pos == 48) { + 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 e0c83a35..2c760dad 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 @@ -1,12 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; - import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -18,16 +13,11 @@ public class DungeonSecretWidget extends Widget { private static final MutableText TITLE = Text.literal("Discoveries").formatted(Formatting.DARK_PURPLE, Formatting.BOLD); - public DungeonSecretWidget(List list) { + public DungeonSecretWidget() { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); - Text secrets = StrMan.stdEntry(list, 31, "Secrets:", Formatting.YELLOW); - IcoTextComponent sec = new IcoTextComponent(Ico.CHEST, secrets); - this.addComponent(sec); - - Text crypts = StrMan.stdEntry(list, 32, "Crypts:", Formatting.YELLOW); - IcoTextComponent cry = new IcoTextComponent(Ico.SKULL, crypts); - this.addComponent(cry); + 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 89d3b1ca..8801df68 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 @@ -1,15 +1,12 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -24,31 +21,25 @@ public class DungeonServerWidget extends Widget { // match the secrets text // group 1: % of secrets found (without "%") - private static final Pattern SECRET_PATTERN = Pattern.compile(" Secrets Found: (.*)%"); + private static final Pattern SECRET_PATTERN = Pattern.compile("Secrets Found: (?.*)%"); - public DungeonServerWidget(List list) { + public DungeonServerWidget() { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); - Text name = StrMan.stdEntry(list, 41, "Name:", Formatting.AQUA); - IcoTextComponent na = new IcoTextComponent(Ico.NTAG, name); - this.addComponent(na); - - Text open = StrMan.stdEntry(list, 42, "Rooms Visited:", Formatting.DARK_PURPLE); - IcoTextComponent op = new IcoTextComponent(Ico.SIGN, open); - this.addComponent(op); - - Text compl = StrMan.stdEntry(list, 43, "Rooms Completed:", Formatting.LIGHT_PURPLE); - IcoTextComponent co = new IcoTextComponent(Ico.SIGN, compl); - this.addComponent(co); - - Matcher m = StrMan.regexAt(list, 44, SECRET_PATTERN); - Text secrets = Text.of("Secrets found:"); - ProgressComponent scp = new ProgressComponent(Ico.CHEST, secrets, Float.parseFloat(m.group(1)), - Formatting.DARK_PURPLE.getColorValue()); - this.addComponent(scp); - - Text time = StrMan.stdEntry(list, 45, "Time:", Formatting.GOLD); - IcoTextComponent ti = new IcoTextComponent(Ico.CLOCK, time); - this.addComponent(ti); + + 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); + + Matcher m = PlayerListMgr.regexAt(44, SECRET_PATTERN); + if (m == null) { + this.addComponent(new ProgressComponent()); + } else { + ProgressComponent scp = new ProgressComponent(Ico.CHEST, Text.of("Secrets found:"), Float.parseFloat(m.group("secnum")), + Formatting.DARK_PURPLE.getColorValue()); + this.addComponent(scp); + } + + 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 d44d1ea7..b24f7535 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 @@ -20,8 +20,19 @@ public class EffectWidget extends Widget { public EffectWidget(String footertext) { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); - String interesting = footertext.split("Active Effects")[1]; - String[] lines = interesting.split("\n"); + if (footertext == null ||!footertext.contains("Active Effects")) { + this.addComponent(new IcoTextComponent()); + this.pack(); + return; + + } + + String[] lines = footertext.split("Active Effects")[1].split("\n"); + if (lines.length < 2) { + this.addComponent(new IcoTextComponent()); + this.pack(); + return; + } if (lines[1].startsWith("No")) { Text txt = Text.literal("No effects active").formatted(Formatting.GRAY); @@ -34,7 +45,13 @@ public class EffectWidget extends Widget { this.addComponent(iftc); } else { String number = lines[1].substring("You have ".length()); - number = number.substring(0, number.indexOf(' ')); + int idx = number.indexOf(' '); + if (idx == -1 ||lines.length < 4) { + this.addComponent(new IcoFatTextComponent()); + this.pack(); + return; + } + number = number.substring(0, idx); Text active = Text.literal("Active Effects: ").append(Text.literal(number).formatted(Formatting.YELLOW)); IcoFatTextComponent iftc = new IcoFatTextComponent(Ico.POTION, active, 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 1c845467..1a26026e 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 @@ -1,16 +1,14 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; import java.util.HashMap; -import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.item.ItemStack; import net.minecraft.text.MutableText; import net.minecraft.text.Text; @@ -31,7 +29,7 @@ public class ElectionWidget extends Widget { // pattern matching a candidate while people are voting // group 1: name // group 2: % of votes - private static final Pattern VOTE_PATTERN = Pattern.compile(" (\\S*): \\|+ \\((\\d*)%\\)"); + private static final Pattern VOTE_PATTERN = Pattern.compile("(?\\S*): \\|+ \\((?\\d*)%\\)"); static { MAYOR_DATA.put("Aatrox", Ico.DIASWORD); @@ -49,44 +47,55 @@ public class ElectionWidget extends Widget { private static final Formatting[] COLS = { Formatting.GOLD, Formatting.RED, Formatting.LIGHT_PURPLE }; - public ElectionWidget(List list) { + public ElectionWidget() { super(TITLE, Formatting.YELLOW.getColorValue()); - if (StrMan.strAt(list, 76).contains("Over!")) { + 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; + } + + if (status.contains("Over!")) { // election is over IcoTextComponent over = new IcoTextComponent(Ico.BARRIER, EL_OVER); this.addComponent(over); - String winnername = StrMan.strAt(list, 77).split(": ")[1]; - Text winnertext = Text.literal("Winner: ") - .append(Text.literal(winnername).formatted(Formatting.GREEN)); - IcoTextComponent winner = new IcoTextComponent(MAYOR_DATA.get(winnername), winnertext); - this.addComponent(winner); - - Text participants = StrMan.stdEntry(list, 78, "Participants:", Formatting.AQUA); - IcoTextComponent part = new IcoTextComponent(Ico.PLAYER, participants); - this.addComponent(part); + String win = PlayerListMgr.strAt(77); + if (win == null || !win.contains(": ")) { + this.addComponent(new IcoTextComponent()); + } else { + String winnername = win.split(": ")[1]; + Text winnertext = Widget.simpleEntryText(winnername, "Winner: ", Formatting.GREEN); + IcoTextComponent winner = new IcoTextComponent(MAYOR_DATA.get(winnername), winnertext); + this.addComponent(winner); + } - Text year = StrMan.stdEntry(list, 79, "Year:", Formatting.LIGHT_PURPLE); - IcoTextComponent y = new IcoTextComponent(Ico.SIGN, year); - this.addComponent(y); + this.addSimpleIcoText(Ico.PLAYER, "Participants:", Formatting.AQUA, 78); + this.addSimpleIcoText(Ico.SIGN, "Year:", Formatting.LIGHT_PURPLE, 79); } else { // election is going on - Text time = StrMan.stdEntry(list, 76, "End in:", Formatting.GOLD); - IcoTextComponent t = new IcoTextComponent(Ico.CLOCK, time); - this.addComponent(t); + this.addSimpleIcoText(Ico.CLOCK, "End in:", Formatting.GOLD, 76); for (int i = 77; i <= 79; i++) { - Matcher m = StrMan.regexAt(list, i, VOTE_PATTERN); - String g1 = m.group(1); - String g2 = m.group(2); - float pcnt = Float.parseFloat(g2); - Text candidate = Text.literal(g1).formatted(COLS[i - 77]); - ProgressComponent pc = new ProgressComponent(MAYOR_DATA.get(g1), candidate, pcnt, - COLS[i - 77].getColorValue()); - this.addComponent(pc); - + Matcher m = PlayerListMgr.regexAt(i, VOTE_PATTERN); + if (m == null) { + this.addComponent(new ProgressComponent()); + } else { + + String mayorname = m.group("mayor"); + String pcntstr = m.group("pcnt"); + float pcnt = Float.parseFloat(pcntstr); + Text candidate = Text.literal(mayorname).formatted(COLS[i - 77]); + ProgressComponent pc = new ProgressComponent(MAYOR_DATA.get(mayorname), candidate, pcnt, + COLS[i - 77].getColorValue()); + this.addComponent(pc); + } } } 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 584a593e..52d6cfbd 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 @@ -1,10 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; - import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -15,7 +12,7 @@ public class EmptyWidget extends Widget { private static final MutableText TITLE = Text.literal("Empty").formatted(Formatting.RED, Formatting.BOLD); - public EmptyWidget(List list) { + public EmptyWidget() { super(TITLE, Formatting.RED.getColorValue()); Text info = Text.of("No info for this area!"); 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 7063ce3f..fc0780e1 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 @@ -1,13 +1,9 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; - import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -21,16 +17,16 @@ public class EssenceWidget extends Widget { private static final MutableText TITLE = Text.literal("Essences").formatted(Formatting.DARK_AQUA, Formatting.BOLD); - public EssenceWidget(List list) { + public EssenceWidget() { super(TITLE, Formatting.DARK_AQUA.getColorValue()); - wither = StrMan.stdEntry(list, 46, "Wither:", Formatting.DARK_PURPLE); - spider = StrMan.stdEntry(list, 47, "Spider:", Formatting.DARK_PURPLE); - undead = StrMan.stdEntry(list, 48, "Undead:", Formatting.DARK_PURPLE); - dragon = StrMan.stdEntry(list, 49, "Dragon:", Formatting.DARK_PURPLE); - gold = StrMan.stdEntry(list, 50, "Gold:", Formatting.DARK_PURPLE); - diamond = StrMan.stdEntry(list, 51, "Diamond:", Formatting.DARK_PURPLE); - ice = StrMan.stdEntry(list, 52, "Ice:", Formatting.DARK_PURPLE); - crimson = StrMan.stdEntry(list, 53, "Crimson:", Formatting.DARK_PURPLE); + wither = Widget.simpleEntryText(46, "Wither:", Formatting.DARK_PURPLE); + spider = Widget.simpleEntryText(47, "Spider:", Formatting.DARK_PURPLE); + undead = Widget.simpleEntryText(48, "Undead:", Formatting.DARK_PURPLE); + dragon = Widget.simpleEntryText(49, "Dragon:", Formatting.DARK_PURPLE); + gold = Widget.simpleEntryText(50, "Gold:", Formatting.DARK_PURPLE); + diamond = Widget.simpleEntryText(51, "Diamond:", Formatting.DARK_PURPLE); + ice = Widget.simpleEntryText(52, "Ice:", Formatting.DARK_PURPLE); + crimson = Widget.simpleEntryText(53, "Crimson:", Formatting.DARK_PURPLE); TableComponent tc = new TableComponent(2, 4, Formatting.DARK_AQUA.getColorValue()); 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 eb741566..f9483bde 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 @@ -1,12 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; - import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -16,19 +12,17 @@ import net.minecraft.util.Formatting; public class EventWidget extends Widget { private static final MutableText TITLE = Text.literal("Event Info").formatted(Formatting.YELLOW, Formatting.BOLD); - public EventWidget(List list, boolean isInGarden) { + public EventWidget(boolean isInGarden) { super(TITLE, Formatting.YELLOW.getColorValue()); // 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; - Text eventName = StrMan.stdEntry(list, 73 + offset, "Name:", Formatting.YELLOW); - IcoTextComponent event = new IcoTextComponent(Ico.NTAG, eventName); - this.addComponent(event); + this.addSimpleIcoText(Ico.NTAG, "Name:", Formatting.YELLOW, 73 + offset); // this could look better - Text time = StrMan.plainEntry(list, 74 + offset); + 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 9b7b2678..ddf51f32 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 @@ -1,16 +1,13 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.math.MathHelper; @@ -26,38 +23,40 @@ public class FireSaleWidget extends Widget { // matches a fire sale item // group 1: item name - // group 2: # items bought + // group 2: # items available // group 3: # items available in total (1 digit + "k") - private static final Pattern FIRE_PATTERN = Pattern.compile(" (.*): (\\d*)/([0-9.]*)k"); + private static final Pattern FIRE_PATTERN = Pattern.compile("(?.*): (?\\d*)/(?[0-9.]*)k"); - public FireSaleWidget(List list) { + public FireSaleWidget() { super(TITLE, Formatting.DARK_AQUA.getColorValue()); - boolean found = false; - if (StrMan.strAt(list, 46).contains("Starts In")) { - IcoTextComponent start = new IcoTextComponent(Ico.CLOCK, - StrMan.stdEntry(list, 46, "Starts in", Formatting.DARK_AQUA)); - this.addComponent(start); + 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; } for (int i = 46;; i++) { - Matcher m = StrMan.regexAt(list, i, FIRE_PATTERN); - if (m == null || !m.matches()) { + Matcher m = PlayerListMgr.regexAt( i, FIRE_PATTERN); + if (m == null) { break; } - found = true; - float amt = Float.parseFloat(m.group(3)) * 1000; - Text a = Text.literal(m.group(1)); - Text b = Text.literal(String.format("%s/%.0f", m.group(2), amt)); - float pcnt = (Float.parseFloat(m.group(2)) / (amt)) * 100f; - ProgressComponent pc = new ProgressComponent(Ico.GOLD, a, b, pcnt, pcntToCol(pcnt)); + String avail = m.group("avail"); + Text itemTxt = Text.literal(m.group("item")); + float total = Float.parseFloat(m.group("total")) * 1000; + Text prgressTxt = Text.literal(String.format("%s/%.0f", avail, total)); + float pcnt = (Float.parseFloat(avail) / (total)) * 100f; + ProgressComponent pc = new ProgressComponent(Ico.GOLD, itemTxt, prgressTxt, pcnt, pcntToCol(pcnt)); this.addComponent(pc); } - if (!found) { - this.addComponent(new PlainTextComponent(Text.literal("No Fire Sale!").formatted(Formatting.GRAY))); - } 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 40e2f56d..4de4a0b4 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 @@ -1,14 +1,11 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; - import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.Component; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoFatTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -21,27 +18,39 @@ public class ForgeWidget extends Widget { private static final MutableText TITLE = Text.literal("Forge Status").formatted(Formatting.DARK_AQUA, Formatting.BOLD); - public ForgeWidget(List list) { + public ForgeWidget() { super(TITLE, Formatting.DARK_AQUA.getColorValue()); - int forgestart = 54; + int forgestart = 54; // why is it forges and not fabrics >:( - if (!StrMan.strAt(list, 53).startsWith("Forge")) { - forgestart += 2; + String pos = PlayerListMgr.strAt(53); + if (pos == null) { + this.addComponent(new IcoTextComponent()); + this.pack(); + return; } + if (!pos.startsWith("Forges")) { + forgestart += 2; + } - for (int i = forgestart, slot = 0; i < forgestart + 5 && i < 60; i++,slot ++) { - String fstr = StrMan.strAt(list, i).substring(4); + for (int i = forgestart, slot = 1; i < forgestart + 5 && i < 60; i++, slot++) { + String fstr = PlayerListMgr.strAt(i); + if (fstr == null || fstr.length() < 3) { + if (i == forgestart) { + this.addComponent(new IcoTextComponent()); + } + break; + } Component c; Text l1, l2; - switch (fstr) { + switch (fstr.substring(3)) { case "LOCKED": l1 = Text.literal("Locked").formatted(Formatting.RED); l2 = switch (slot) { - case 3 -> Text.literal("Req. HotM 3").formatted(Formatting.GRAY); - case 4 -> Text.literal("Req. HotM 4").formatted(Formatting.GRAY); - case 5 -> Text.literal("Req. PotM 2").formatted(Formatting.GRAY); + 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); }; @@ -53,9 +62,13 @@ public class ForgeWidget extends Widget { break; default: String[] parts = fstr.split(": "); - l1 = Text.of(parts[0]); - l2 = Text.literal(parts[1]).formatted(Formatting.YELLOW); - c = new IcoFatTextComponent(Ico.FIRE, l1, l2); + if (parts.length != 2) { + c = new IcoFatTextComponent(); + } else { + l1 = Text.of(parts[0]); + l2 = Text.literal(parts[1]).formatted(Formatting.YELLOW); + c = new IcoFatTextComponent(Ico.FIRE, l1, l2); + } break; } this.addComponent(c); 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 864dee8e..b0fc160f 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 @@ -1,14 +1,12 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -22,39 +20,33 @@ public class GardenServerWidget extends Widget { // match the next visitor in the garden // group 1: visitor name - private static final Pattern VISITOR_PATTERN = Pattern.compile(" Next Visitor: (.*)$"); + private static final Pattern VISITOR_PATTERN = Pattern.compile("Next Visitor: (?.*)"); - public GardenServerWidget(List list) { + public GardenServerWidget() { super(TITLE, Formatting.DARK_AQUA.getColorValue()); - Text areaName = StrMan.stdEntry(list, 41, "Area:", Formatting.DARK_AQUA); - IcoTextComponent area = new IcoTextComponent(Ico.MAP, areaName); - this.addComponent(area); + 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.COPPER, "Copper:", Formatting.GOLD, 44); - Text serverName = StrMan.stdEntry(list, 42, "Server ID:", Formatting.GRAY); - IcoTextComponent server = new IcoTextComponent(Ico.NTAG, serverName); - this.addComponent(server); - - Text amtGems = StrMan.stdEntry(list, 43, "Gems:", Formatting.GREEN); - IcoTextComponent gems = new IcoTextComponent(Ico.EMERALD, amtGems); - this.addComponent(gems); - - Text copper = StrMan.stdEntry(list, 44, "Copper:", Formatting.GOLD); - IcoTextComponent co = new IcoTextComponent(Ico.COPPER, copper); - this.addComponent(co); + Matcher m = PlayerListMgr.regexAt(45, VISITOR_PATTERN); + if (m == null ) { + this.addComponent(new IcoTextComponent()); + this.pack(); + return; + } - Matcher v = StrMan.regexAt(list, 45, VISITOR_PATTERN); - String vString = v.group(1); + String vis = m.group("vis"); Formatting col; - if (vString.equals("Not Unlocked!")) { + if (vis.equals("Not Unlocked!")) { col = Formatting.RED; } else { col = Formatting.GREEN; } - MutableText visitor = Text.literal("Next Visitor: ") - .append(Text.literal(vString).formatted(col)); - IcoTextComponent vis = new IcoTextComponent(Ico.PLAYER, visitor); - this.addComponent(vis); + 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 26c90df7..26e29ce2 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 @@ -1,16 +1,14 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -25,24 +23,33 @@ public class GardenSkillsWidget extends Widget { // match the skill entry // group 1: skill name and level // group 2: progress to next level (without "%") - private static final Pattern SKILL_PATTERN = Pattern.compile("\\S*: ([A-Za-z]* [0-9]*): (\\S*)%"); + private static final Pattern SKILL_PATTERN = Pattern + .compile("\\S*: (?[A-Za-z]* [0-9]*): (?\\S*)%"); // same, but with leading space - private static final Pattern MS_PATTERN = Pattern.compile(" \\S*: ([A-Za-z]* [0-9]*): (\\S*)%"); + private static final Pattern MS_PATTERN = Pattern.compile("\\S*: (?[A-Za-z]* [0-9]*): (?\\S*)%"); - public GardenSkillsWidget(List list) { + public GardenSkillsWidget() { super(TITLE, Formatting.YELLOW.getColorValue()); - Matcher m = StrMan.regexAt(list, 66, SKILL_PATTERN); + ProgressComponent pc; + Matcher m = PlayerListMgr.regexAt(66, SKILL_PATTERN); + if (m == null) { + pc = new ProgressComponent(); + } else { - float pcnt = Float.parseFloat(m.group(2)); - String skill = m.group(1); + String strpcnt = m.group("progress"); + String skill = m.group("skill"); + + float pcnt = Float.parseFloat(strpcnt); + pc = new ProgressComponent(Ico.LANTERN, Text.of(skill), pcnt, + Formatting.GOLD.getColorValue()); + } - ProgressComponent pc = new ProgressComponent(Ico.LANTERN, Text.of(skill), pcnt, Formatting.GOLD.getColorValue()); this.addComponent(pc); - Text speed = StrMan.stdEntry(list, 67, "SPD", Formatting.WHITE); + Text speed = Widget.simpleEntryText(67, "SPD", Formatting.WHITE); IcoTextComponent spd = new IcoTextComponent(Ico.SUGAR, speed); - Text farmfort = StrMan.stdEntry(list, 68, "FFO", Formatting.GOLD); + Text farmfort = Widget.simpleEntryText(68, "FFO", Formatting.GOLD); IcoTextComponent ffo = new IcoTextComponent(Ico.HOE, farmfort); TableComponent tc = new TableComponent(2, 1, Formatting.YELLOW.getColorValue()); @@ -50,11 +57,19 @@ public class GardenSkillsWidget extends Widget { tc.addToCell(1, 0, ffo); this.addComponent(tc); - m = StrMan.regexAt(list, 69, MS_PATTERN); - pcnt = Float.parseFloat(m.group(2)); - skill = m.group(1); + ProgressComponent pc2; + m = PlayerListMgr.regexAt(69, MS_PATTERN); + if (m == null) { + pc2 = new ProgressComponent(); + } else { + String strpcnt = m.group("progress"); + String skill = m.group("skill"); + + float pcnt = Float.parseFloat(strpcnt); + pc2 = new ProgressComponent(Ico.MILESTONE, Text.of(skill), pcnt, + Formatting.GREEN.getColorValue()); - ProgressComponent pc2 = new ProgressComponent(Ico.MILESTONE, Text.of(skill), pcnt, Formatting.GREEN.getColorValue()); + } 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 67b61667..cb208e92 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 @@ -1,12 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -18,23 +14,14 @@ public class GuestServerWidget extends Widget { private static final MutableText TITLE = Text.literal("Island Info").formatted(Formatting.DARK_AQUA, Formatting.BOLD); - public GuestServerWidget(List list) { + public GuestServerWidget() { super(TITLE, Formatting.DARK_AQUA.getColorValue()); - Text areaName = StrMan.stdEntry(list, 41, "Area:", Formatting.DARK_AQUA); - IcoTextComponent area = new IcoTextComponent(Ico.MAP, areaName); - this.addComponent(area); - Text serverName = StrMan.stdEntry(list, 42, "Server ID:", Formatting.GRAY); - IcoTextComponent server = new IcoTextComponent(Ico.NTAG, serverName); - this.addComponent(server); + 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); - Text owner = StrMan.stdEntry(list, 43, "Owner:", Formatting.GREEN); - IcoTextComponent own = new IcoTextComponent(Ico.SIGN, owner); - this.addComponent(own); - - Text status = StrMan.stdEntry(list, 44, "Status:", Formatting.BLUE); - IcoTextComponent stat = new IcoTextComponent(Ico.SIGN, status); - this.addComponent(stat); this.pack(); } 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 fa27eaa0..e0f5f1a3 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 @@ -1,13 +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.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -23,19 +21,22 @@ public class IslandGuestsWidget extends Widget { // group 1: player name private static final Pattern GUEST_PATTERN = Pattern.compile("\\[\\d*\\] (.*) \\[.\\]"); - public IslandGuestsWidget(List list) { + public IslandGuestsWidget() { super(TITLE, Formatting.AQUA.getColorValue()); for (int i = 21; i < 40; i++) { - String str = list.get(i).getDisplayName().getString(); - if (str.length() == 0) { + String str = PlayerListMgr.strAt(i); + if (str == null) { if (i == 21) { this.addComponent(new PlainTextComponent(Text.literal("No Visitors!").formatted(Formatting.GRAY))); } break; } - Matcher m = StrMan.regexAt(list, i, GUEST_PATTERN); - PlainTextComponent ptc = new PlainTextComponent(Text.of(m.group(1))); - this.addComponent(ptc); + Matcher m = PlayerListMgr.regexAt( i, GUEST_PATTERN); + if (m == null) { + this.addComponent(new PlainTextComponent(Text.of("???"))); + } else { + 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 083f72b7..1c640ed1 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 @@ -1,13 +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.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -23,19 +21,19 @@ public class IslandOwnersWidget extends Widget { // group 1: player name (cut off by hypixel for some reason) // group 2: last seem // TODO: test with owner online - private static final Pattern OWNER_PATTERN = Pattern.compile("(.*) \\((.*)\\)"); + private static final Pattern OWNER_PATTERN = Pattern.compile("(?.*) \\((?.*)\\)"); - public IslandOwnersWidget(List list) { + public IslandOwnersWidget() { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); for (int i = 1; i < 20; i++) { - if (list.get(i).getDisplayName().getString().length() == 0) { + Matcher m = PlayerListMgr.regexAt( i, OWNER_PATTERN); + if (m == null) { break; } - Matcher m = StrMan.regexAt(list, i, OWNER_PATTERN); - Text entry = Text.literal(m.group(1)) + Text entry = Text.literal(m.group("name")) .append( - Text.literal(" (" + m.group(2) + ")") + Text.literal(" (" + m.group("lastseen") + ")") .formatted(Formatting.GRAY)); PlainTextComponent ptc = new PlainTextComponent(entry); this.addComponent(ptc); 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 aa1d951b..4324dad9 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 @@ -1,13 +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.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -20,17 +18,16 @@ public class IslandSelfWidget extends Widget { Formatting.BOLD); // matches an owner - // group 1: player name - private static final Pattern OWNER_PATTERN = Pattern.compile("\\[\\d*\\] (.*)"); + // group 1: player name, optionally offline time + private static final Pattern OWNER_PATTERN = Pattern.compile("^\\[\\d*\\] (.*)$|^(.*)$"); - public IslandSelfWidget(List list) { + public IslandSelfWidget() { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); for (int i = 1; i < 20; i++) { - String str = list.get(i).getDisplayName().getString(); - if (str.length() == 0) { + Matcher m = PlayerListMgr.regexAt( i, OWNER_PATTERN); + if (m == null) { break; } - Matcher m = StrMan.regexAt(list, i, OWNER_PATTERN); PlainTextComponent ptc = new PlainTextComponent(Text.of(m.group(1))); this.addComponent(ptc); } 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 1bbe0ed7..2b02c514 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 @@ -1,12 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -18,28 +14,15 @@ public class IslandServerWidget extends Widget { private static final MutableText TITLE = Text.literal("Island Info").formatted(Formatting.DARK_AQUA, Formatting.BOLD); - public IslandServerWidget(List list) { + public IslandServerWidget() { super(TITLE, Formatting.DARK_AQUA.getColorValue()); - Text areaName = StrMan.stdEntry(list, 41, "Area:", Formatting.DARK_AQUA); - IcoTextComponent area = new IcoTextComponent(Ico.MAP, areaName); - this.addComponent(area); + 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); - Text serverName = StrMan.stdEntry(list, 42, "Server ID:", Formatting.GRAY); - IcoTextComponent server = new IcoTextComponent(Ico.NTAG, serverName); - this.addComponent(server); - - Text crystals = StrMan.stdEntry(list, 43, "Crystals:", Formatting.DARK_PURPLE); - IcoTextComponent crys = new IcoTextComponent(Ico.EMERALD, crystals); - this.addComponent(crys); - - Text stash = StrMan.stdEntry(list, 44, "Stash:", Formatting.GREEN); - IcoTextComponent st = new IcoTextComponent(Ico.CHEST, stash); - this.addComponent(st); - - Text minions = StrMan.stdEntry(list, 45, "Minions:", Formatting.BLUE); - IcoTextComponent min = new IcoTextComponent(Ico.COMMAND, minions); - this.addComponent(min); 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 03defb4c..8d49efaa 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 @@ -1,13 +1,11 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; import java.util.HashMap; -import java.util.List; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.text.MutableText; @@ -37,18 +35,22 @@ public class JacobsContestWidget extends Widget { FARM_DATA.put("Mushroom", new ItemStack(Items.RED_MUSHROOM)); } - public JacobsContestWidget(List list) { + public JacobsContestWidget() { super(TITLE, Formatting.YELLOW.getColorValue()); - Text time = StrMan.stdEntry(list, 76, "Starts in:", Formatting.GOLD); - IcoTextComponent t = new IcoTextComponent(Ico.CLOCK, time); - this.addComponent(t); + this.addSimpleIcoText(Ico.CLOCK, "Starts in:", Formatting.GOLD, 76); TableComponent tc = new TableComponent(1, 3, Formatting.YELLOW .getColorValue()); for (int i = 77; i < 80; i++) { - String item = StrMan.strAt(list, i).trim(); - tc.addToCell(0, i - 77, new IcoTextComponent(FARM_DATA.get(item), Text.of(item))); + String item = PlayerListMgr.strAt(i); + IcoTextComponent itc; + if (item == null) { + itc = new IcoTextComponent(); + } else { + itc = new IcoTextComponent(FARM_DATA.get(item), Text.of(item)); + } + tc.addToCell(0, i - 77, itc); } this.addComponent(tc); 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 2ba94b48..22082202 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 @@ -1,15 +1,13 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; import java.util.HashMap; -import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +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; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.text.MutableText; @@ -90,18 +88,18 @@ public class MinionWidget extends Widget { // group 1: name // group 2: level // group 3: status - public static final Pattern MINION_PATTERN = Pattern.compile(" (.*) ([XVI]*) \\[(.*)\\]"); + public static final Pattern MINION_PATTERN = Pattern.compile("(?.*) (?[XVI]*) \\[(?.*)\\]"); - public MinionWidget(List list) { + public MinionWidget() { super(TITLE, Formatting.DARK_AQUA.getColorValue()); for (int i = 48; i < 59; i++) { - Matcher m = StrMan.regexAt(list, i, MINION_PATTERN); + Matcher m = PlayerListMgr.regexAt(i, MINION_PATTERN); if (m != null) { - String min = m.group(1); - String lvl = m.group(2); - String stat = m.group(3); + String min = m.group("name"); + String lvl = m.group("level"); + String stat = m.group("status"); MutableText mt = Text.literal(min + " " + lvl).append(Text.literal(": ")); @@ -111,7 +109,7 @@ public class MinionWidget extends Widget { } else if (stat.equals("SLOW")) { format = Formatting.YELLOW; } - // makes "BLOCKED" also red. in reality, it's some kind of crimson + // makes "BLOCKED" also red. in reality, it's some kind of crimson mt.append(Text.literal(stat).formatted(format)); IcoTextComponent itc = new IcoTextComponent(MIN_ICOS.get(min), mt); @@ -125,9 +123,9 @@ public class MinionWidget extends Widget { // if more minions are placed than the tab menu can display, // a "And X more..." text is shown // look for that and add it to the widget - if (list.get(59).getDisplayName() != null) { - String other = list.get(59).getDisplayName().getString(); - this.addComponent(new PlainTextComponent(Text.of(other.trim()))); + String more = PlayerListMgr.strAt(59); + 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 a94b5948..4148ed77 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 @@ -1,12 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -18,24 +14,14 @@ public class ParkServerWidget extends Widget { private static final MutableText TITLE = Text.literal("Server Info").formatted(Formatting.DARK_AQUA, Formatting.BOLD); - public ParkServerWidget(List list) { + public ParkServerWidget() { super(TITLE, Formatting.DARK_AQUA.getColorValue()); - Text areaName = StrMan.stdEntry(list, 41, "Area:", Formatting.DARK_AQUA); - IcoTextComponent area = new IcoTextComponent(Ico.MAP, areaName); - this.addComponent(area); + 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); - Text serverName = StrMan.stdEntry(list, 42, "Server ID:", Formatting.GRAY); - IcoTextComponent server = new IcoTextComponent(Ico.NTAG, serverName); - this.addComponent(server); - - Text amtGems = StrMan.stdEntry(list, 43, "Gems:", Formatting.GREEN); - IcoTextComponent gems = new IcoTextComponent(Ico.EMERALD, amtGems); - this.addComponent(gems); - - Text rain = StrMan.stdEntry(list, 44, "Rain:", Formatting.BLUE); - IcoTextComponent ra = new IcoTextComponent(Ico.WATER, rain); - this.addComponent(ra); 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 1678ca56..2cd710eb 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 @@ -3,8 +3,9 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; -import java.util.List; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlayerComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent; @@ -23,12 +24,19 @@ public class PlayerListWidget extends Widget { private ArrayList list = new ArrayList<>(); - public PlayerListWidget(List l) { + public PlayerListWidget() { super(TITLE, Formatting.GREEN.getColorValue()); // hard cap to 4x20 entries. // 5x20 is too wide (and not possible in theory. in reality however...) - int listlen = Math.min(l.size(), 160); + int listlen = Math.min(PlayerListMgr.getSize(), 160); + + // 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; + } // unintuitive int ceil division stolen from // https://stackoverflow.com/questions/7139382/java-rounding-up-to-an-int-using-math-ceil#21830188 @@ -38,7 +46,7 @@ public class PlayerListWidget extends Widget { Formatting.GREEN.getColorValue()); for (int i = 80; i < listlen; i++) { - list.add(l.get(i)); + list.add(PlayerListMgr.getRaw(i)); } Collections.sort(list, new Comparator() { 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 cca09d77..459e3de2 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 @@ -1,12 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -19,16 +15,12 @@ public class PowderWidget extends Widget { private static final MutableText TITLE = Text.literal("Powders").formatted(Formatting.DARK_AQUA, Formatting.BOLD); - public PowderWidget(List list) { + public PowderWidget() { super(TITLE, Formatting.DARK_AQUA.getColorValue()); - Text amtMith = StrMan.stdEntry(list, 46, "Mithril:", Formatting.AQUA); - IcoTextComponent mith = new IcoTextComponent(Ico.MITHRIL, amtMith); - this.addComponent(mith); + this.addSimpleIcoText(Ico.MITHRIL, "Mithril:", Formatting.AQUA, 46); + this.addSimpleIcoText(Ico.EMERALD, "Gemstone:", Formatting.DARK_PURPLE, 47); - Text amtGem = StrMan.stdEntry(list, 47, "Gemstone:", Formatting.DARK_PURPLE); - IcoTextComponent gem = new IcoTextComponent(Ico.EMERALD, amtGem); - this.addComponent(gem); 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 3d94fc59..ed375c6e 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 @@ -1,12 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -17,24 +13,14 @@ public class ProfileWidget extends Widget { private static final MutableText TITLE = Text.literal("Profile").formatted(Formatting.YELLOW, Formatting.BOLD); - public ProfileWidget(List list) { + public ProfileWidget() { super(TITLE, Formatting.YELLOW.getColorValue()); - Text profileType = StrMan.stdEntry(list, 61, "Profile:", Formatting.GREEN); - IcoTextComponent profile = new IcoTextComponent(Ico.SIGN, profileType); - this.addComponent(profile); + 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); - Text petInfo = StrMan.stdEntry(list, 62, "Pet Sitter:", Formatting.AQUA); - IcoTextComponent pet = new IcoTextComponent(Ico.BONE, petInfo); - this.addComponent(pet); - - Text bankAmt = StrMan.stdEntry(list, 63, "Balance:", Formatting.GOLD); - IcoTextComponent bank = new IcoTextComponent(Ico.EMERALD, bankAmt); - this.addComponent(bank); - - Text interest = StrMan.stdEntry(list, 64, "Interest in:", Formatting.GOLD); - IcoTextComponent inter = new IcoTextComponent(Ico.CLOCK, interest); - this.addComponent(inter); 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 5fdb1a5b..5c89964e 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 @@ -1,12 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; - import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -18,12 +14,12 @@ public class QuestWidget extends Widget { private static final MutableText TITLE = Text.literal("Faction Quests").formatted(Formatting.AQUA, Formatting.BOLD); - public QuestWidget(List list) { + public QuestWidget() { super(TITLE, Formatting.AQUA.getColorValue()); - for (int i = 51; i<56; i++) { - String q = StrMan.strAt(list, i).trim(); - IcoTextComponent itc = new IcoTextComponent(Ico.BOOK, Text.literal(q)); + for (int i = 51; i < 56; i++) { + Text q = Widget.plainEntryText(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 75bd4e92..c0379623 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 @@ -1,14 +1,12 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -22,33 +20,45 @@ public class ReputationWidget extends Widget { // matches your faction alignment progress // group 1: percentage to next alignment level - private static final Pattern PROGRESS_PATTERN = Pattern.compile(" \\|+ \\(([0-9.]*)%\\)"); + private static final Pattern PROGRESS_PATTERN = Pattern.compile("\\|+ \\((?[0-9.]*)%\\)"); // matches alignment level names // group 1: left level name // group 2: right level name - private static final Pattern STATE_PATTERN = Pattern.compile("(\\S*) *(\\S*)"); + private static final Pattern STATE_PATTERN = Pattern.compile("(?\\S*) *(?\\S*)"); - public ReputationWidget(List list) { + public ReputationWidget() { super(TITLE, Formatting.AQUA.getColorValue()); - String fname = StrMan.strAt(list, 45).split(" ")[0]; - String rep = StrMan.strAt(list, 46).trim(); - Matcher prog = StrMan.regexAt(list, 47, PROGRESS_PATTERN); - Matcher state = StrMan.regexAt(list, 48, STATE_PATTERN); + String fracstr = PlayerListMgr.strAt(45); + int spaceidx; IcoTextComponent faction; - if (fname.equals("Mage")) { - faction = new IcoTextComponent(Ico.POTION, Text.literal(fname).formatted(Formatting.DARK_AQUA)); + if (fracstr == null || (spaceidx = fracstr.indexOf(' ')) == -1) { + faction = new IcoTextComponent(); } else { - faction = new IcoTextComponent(Ico.SWORD, Text.literal(fname).formatted(Formatting.RED)); + String fname = fracstr.substring(0, spaceidx); + if (fname.equals("Mage")) { + faction = new IcoTextComponent(Ico.POTION, Text.literal(fname).formatted(Formatting.DARK_AQUA)); + } else { + faction = new IcoTextComponent(Ico.SWORD, Text.literal(fname).formatted(Formatting.RED)); + } } this.addComponent(faction); - float pcnt = Float.parseFloat(prog.group(1)); + Text rep = Widget.plainEntryText(46); + Matcher prog = PlayerListMgr.regexAt(47, PROGRESS_PATTERN); + Matcher state = PlayerListMgr.regexAt(48, STATE_PATTERN); - ProgressComponent pc = new ProgressComponent(Ico.LANTERN, Text.of(state.group(1) + " -> " + state.group(2)), Text.of(rep), pcnt, Formatting.AQUA.getColorValue()); - this.addComponent(pc); + if (prog == null || state == null) { + this.addComponent(new ProgressComponent()); + } else { + float pcnt = Float.parseFloat(prog.group("prog")); + ProgressComponent pc = new ProgressComponent(Ico.LANTERN, + Text.of(state.group("from") + " -> " + state.group("to")), rep, pcnt, + Formatting.AQUA.getColorValue()); + 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 4084d4dd..2d8d1c63 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 @@ -1,12 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -20,20 +16,12 @@ public class ServerWidget extends Widget { private static final MutableText TITLE = Text.literal("Server Info").formatted(Formatting.DARK_AQUA, Formatting.BOLD); - public ServerWidget(List list) { + public ServerWidget() { super(TITLE, Formatting.DARK_AQUA.getColorValue()); - Text areaName = StrMan.stdEntry(list, 41, "Area:", Formatting.DARK_AQUA); - IcoTextComponent area = new IcoTextComponent(Ico.MAP, areaName); - this.addComponent(area); - - Text serverName = StrMan.stdEntry(list, 42, "Server ID:", Formatting.GRAY); - IcoTextComponent server = new IcoTextComponent(Ico.NTAG, serverName); - this.addComponent(server); - - Text amtGems = StrMan.stdEntry(list, 43, "Gems:", Formatting.GREEN); - IcoTextComponent gems = new IcoTextComponent(Ico.EMERALD, amtGems); - this.addComponent(gems); + 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 be412421..b426d9e6 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 @@ -1,18 +1,16 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.Component; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoFatTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -30,33 +28,39 @@ public class SkillsWidget extends Widget { // group 2: progress to next level (without "%") private static final Pattern SKILL_PATTERN = Pattern.compile("\\S*: ([A-Za-z]* [0-9]*): ([0-9.MAX]*)%?"); - public SkillsWidget(List list) { + public SkillsWidget() { super(TITLE, Formatting.YELLOW.getColorValue()); - Matcher m = StrMan.regexAt(list, 66, SKILL_PATTERN); - String skill = m.group(1); - String pcntStr = m.group(2); - + Matcher m = PlayerListMgr.regexAt(66, SKILL_PATTERN); Component progress; - if (!pcntStr.equals("MAX")) { - float pcnt = Float.parseFloat(pcntStr); - progress = new ProgressComponent(Ico.LANTERN, Text.of(skill), - Text.of(pcntStr), pcnt, Formatting.GOLD.getColorValue()); + if (m == null) { + progress = new ProgressComponent(); } else { - progress = new IcoFatTextComponent(Ico.LANTERN, Text.of(skill), Text.literal(pcntStr).formatted(Formatting.RED)); + + String skill = m.group(1); + String pcntStr = m.group(2); + + if (!pcntStr.equals("MAX")) { + float pcnt = Float.parseFloat(pcntStr); + progress = new ProgressComponent(Ico.LANTERN, Text.of(skill), + Text.of(pcntStr), pcnt, Formatting.GOLD.getColorValue()); + } else { + progress = new IcoFatTextComponent(Ico.LANTERN, Text.of(skill), + Text.literal(pcntStr).formatted(Formatting.RED)); + } } this.addComponent(progress); - Text speed = StrMan.stdEntry(list, 67, "SPD", Formatting.WHITE); + Text speed = Widget.simpleEntryText(67, "SPD", Formatting.WHITE); IcoTextComponent spd = new IcoTextComponent(Ico.SUGAR, speed); - Text strength = StrMan.stdEntry(list, 68, "STR", Formatting.RED); + Text strength = Widget.simpleEntryText(68, "STR", Formatting.RED); IcoTextComponent str = new IcoTextComponent(Ico.SWORD, strength); - Text critDmg = StrMan.stdEntry(list, 69, "CCH", Formatting.BLUE); + Text critDmg = Widget.simpleEntryText(69, "CCH", Formatting.BLUE); IcoTextComponent cdg = new IcoTextComponent(Ico.SWORD, critDmg); - Text critCh = StrMan.stdEntry(list, 70, "CDG", Formatting.BLUE); + Text critCh = Widget.simpleEntryText(70, "CDG", Formatting.BLUE); IcoTextComponent cch = new IcoTextComponent(Ico.SWORD, critCh); - Text aSpeed = StrMan.stdEntry(list, 71, "ASP", Formatting.YELLOW); + Text aSpeed = Widget.simpleEntryText(71, "ASP", Formatting.YELLOW); IcoTextComponent asp = new IcoTextComponent(Ico.HOE, aSpeed); TableComponent tc = new TableComponent(2, 3, Formatting.YELLOW.getColorValue()); 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 4252888e..d47849c3 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 @@ -1,12 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import java.util.List; - import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -17,12 +12,10 @@ public class TrapperWidget extends Widget { private static final MutableText TITLE = Text.literal("Trapper").formatted(Formatting.DARK_AQUA, Formatting.BOLD); - public TrapperWidget(List list) { + public TrapperWidget() { super(TITLE, Formatting.DARK_AQUA.getColorValue()); - Text amtPelts = StrMan.stdEntry(list, 46, "Pelts:", Formatting.AQUA); - IcoTextComponent pelts = new IcoTextComponent(Ico.LEATHER, amtPelts); - this.addComponent(pelts); + 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 0e0fe6b7..178c9c3c 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 @@ -19,16 +19,21 @@ public class UpgradeWidget extends Widget { public UpgradeWidget(String footertext) { super(TITLE, Formatting.GOLD.getColorValue()); - String[] interesting = footertext.split("Upgrades"); - if (interesting.length < 2) { - this.addComponent(new PlainTextComponent(Text.of("Currently no upgrades..."))); + + if (footertext == null || !footertext.contains("Upgrades")) { + this.addComponent(new PlainTextComponent(Text.literal("No data").formatted(Formatting.GRAY))); this.pack(); return; } + + String[] interesting = footertext.split("Upgrades"); + this.addComponent(new PlainTextComponent(Text.of("Currently no upgrades..."))); + this.pack(); + String[] lines = interesting[1].split("\n"); IcoTextComponent u1 = new IcoTextComponent(Ico.SIGN, Text.of(lines[1])); this.addComponent(u1); - if (lines.length == 5) { + if (lines.length == 5) { // ??? no idea how this works, but it does. don't touch until understood... IcoTextComponent u2 = new IcoTextComponent(Ico.SIGN, Text.of(lines[2])); this.addComponent(u2); } 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 cca4ca1b..ec6a35fb 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 @@ -1,11 +1,9 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; import java.util.HashMap; -import java.util.List; -import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.text.MutableText; @@ -41,13 +39,17 @@ public class VolcanoWidget extends Widget { new Pair(new ItemStack(Items.SKELETON_SKULL), Formatting.DARK_RED)); } - public VolcanoWidget(List list) { + public VolcanoWidget() { super(TITLE, Formatting.AQUA.getColorValue()); - String s = StrMan.strAt(list, 58).trim(); - Pair p = BOOM_TYPE.get(s); - IcoTextComponent itc = new IcoTextComponent(p.getLeft(), Text.literal(s).formatted(p.getRight())); - this.addComponent(itc); + String s = PlayerListMgr.strAt(58); + if (s == null) { + this.addComponent(new IcoTextComponent()); + } else { + Pair p = BOOM_TYPE.get(s); + 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 01f47933..23ec15d0 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 @@ -5,13 +5,17 @@ import java.util.ArrayList; import com.mojang.blaze3d.systems.RenderSystem; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +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 net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.ItemStack; import net.minecraft.text.MutableText; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; public abstract class Widget { @@ -38,6 +42,11 @@ public abstract class Widget { components.add(c); } + public final void addSimpleIcoText(ItemStack ico, String string, Formatting fmt, int idx) { + Text txt = Widget.simpleEntryText(idx, string, fmt); + this.addComponent(new IcoTextComponent(ico, txt)); + } + public final void pack() { for (Component c : components) { h += c.getHeight() + Component.PAD_L; @@ -130,4 +139,33 @@ public abstract class Widget { private void drawVLine(MatrixStack ms, int xpos, int ypos, int height) { DrawableHelper.fill(ms, xpos, ypos, xpos + 1, ypos + height, this.color); } + + public static Text simpleEntryText(int idx, String entryName, Formatting contentFmt) { + + String src = PlayerListMgr.strAt(idx); + + if (src == null) { + return null; + } + + int cidx = src.indexOf(':'); + if (cidx == -1) { + return null; + } + + src = src.substring(src.indexOf(':') + 1); + return Widget.simpleEntryText(src, entryName, contentFmt); + } + + public static Text simpleEntryText(String entryContent, String entryName, Formatting contentFmt) { + return Text.literal(entryName).append(Text.literal(entryContent).formatted(contentFmt)); + } + + public static Text plainEntryText(int idx) { + String str = PlayerListMgr.strAt(idx); + if (str == null) { + return null; + } + return Text.of(str); + } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java index 6a780159..55d9b889 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java @@ -1,8 +1,10 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; // widget component that consists of an icon and two lines of text @@ -11,22 +13,32 @@ public class IcoFatTextComponent extends Component { private static final int ICO_OFFS = 1; private ItemStack ico; - private Text l1, l2; + private Text line1, line2; public IcoFatTextComponent(ItemStack ico, Text l1, Text l2) { - this.ico = ico; - this.l1 = l1; - this.l2 = l2; + this.ico = (ico == null) ? Ico.BARRIER : ico; + this.line1 = l1; + this.line2 = l2; - this.width = ICO_DIM + PAD_L + Math.max(txtRend.getWidth(l1), txtRend.getWidth(l2)); + if (l1 == null || l2 == null) { + this.ico = Ico.BARRIER; + this.line1 = Text.literal("No data").formatted(Formatting.GRAY); + this.line2 = Text.literal("No data").formatted(Formatting.GRAY); + } + + this.width = ICO_DIM + PAD_L + Math.max(txtRend.getWidth(this.line1), txtRend.getWidth(this.line2)); this.height = txtRend.fontHeight + PAD_S + txtRend.fontHeight; } + public IcoFatTextComponent() { + this(null, null, null); + } + @Override public void render(MatrixStack ms, int x, int y) { itmRend.renderGuiItemIcon(ms, ico, x, y + ICO_OFFS); - txtRend.draw(ms, l1, x + ICO_DIM + PAD_L, y, 0xffffffff); - txtRend.draw(ms, l2, x + ICO_DIM + PAD_L, y + txtRend.fontHeight + PAD_S, 0xffffffff); + txtRend.draw(ms, line1, x + ICO_DIM + PAD_L, y, 0xffffffff); + txtRend.draw(ms, line2, x + ICO_DIM + PAD_L, y + txtRend.fontHeight + PAD_S, 0xffffffff); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java index b54affbc..a14d0531 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java @@ -1,8 +1,10 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; // widget component that consists of an icon and a line of text @@ -11,14 +13,23 @@ public class IcoTextComponent extends Component { private ItemStack ico; private Text text; - public IcoTextComponent(ItemStack ico, Text text) { - this.ico = ico; - this.text = text; + public IcoTextComponent(ItemStack ico, Text txt) { + this.ico = (ico == null) ? Ico.BARRIER : ico; + this.text = txt; - this.width = ICO_DIM + PAD_L + txtRend.getWidth(text); + if (txt == null) { + this.ico = Ico.BARRIER; + this.text = Text.literal("No data").formatted(Formatting.GRAY); + } + + this.width = ICO_DIM + PAD_L + txtRend.getWidth(this.text); this.height = ICO_DIM; } + public IcoTextComponent() { + this(null, null); + } + @Override public void render(MatrixStack ms, int x, int y) { itmRend.renderGuiItemIcon(ms, ico, x, y); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java index a2ffced9..70a72715 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java @@ -2,6 +2,7 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; // widget component that consists of a line of text @@ -9,10 +10,14 @@ public class PlainTextComponent extends Component { private Text text; - public PlainTextComponent(Text text) { - this.text = text; + public PlainTextComponent(Text txt) { + this.text = txt; - this.width = PAD_S + txtRend.getWidth(text); // looks off without padding + if (txt == null) { + this.text = Text.literal("No data").formatted(Formatting.GRAY); + } + + this.width = PAD_S + txtRend.getWidth(this.text); // looks off without padding this.height = txtRend.fontHeight; } 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 753c9b21..f6618a98 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 @@ -1,9 +1,11 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; +import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; // widget component that consists of an icon, some text and a progress bar // progress bar either shows percentage or custom text @@ -22,15 +24,23 @@ public class ProgressComponent extends Component { private int color; private int barW; - public ProgressComponent(ItemStack ico, Text desc, Text bar, float pcnt, int color) { - this.ico = ico; - this.desc = desc; - this.bar = bar; - this.color = 0xff000000 | color; + 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 = 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(); + } + this.barW = BAR_WIDTH; - this.width = ICO_DIM + PAD_L + Math.max(this.barW, txtRend.getWidth(desc)); + this.width = ICO_DIM + PAD_L + Math.max(this.barW, txtRend.getWidth(this.desc)); this.height = txtRend.fontHeight + PAD_S + 2 + txtRend.fontHeight + 2; } @@ -38,6 +48,10 @@ public class ProgressComponent extends Component { this(ico, text, Text.of(pcnt + "%"), pcnt, color); } + public ProgressComponent() { + this(null, null, null, 100, 0); + } + @Override public void render(MatrixStack ms, int x, int y) { itmRend.renderGuiItemIcon(ms, ico, x, y + ICO_OFFS); -- cgit From 2512857cf028b7f72f951d975c745a4c50f22bf3 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 21 May 2023 20:57:11 +0200 Subject: Remove debugging leftover --- src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java | 1 - 1 file changed, 1 deletion(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index 53494940..3d915f8b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -46,7 +46,6 @@ public class PlayerListHudMixin { int w = scaledW; int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); try { - long then = System.nanoTime(); Screen screen = Screen.getCorrect(w, h, footer); screen.render(ms); info.cancel(); -- cgit From 42f140963c9d06f2d692935f16bcf1b545ba18ab Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 21 May 2023 20:58:09 +0200 Subject: Add missing space in DungeonDownedWidget --- .../xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonDownedWidget.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/me') 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 35926d7d..60f3313f 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 @@ -24,7 +24,7 @@ public class DungeonDownedWidget extends Widget { format = Formatting.GRAY; } int idx = down.indexOf(": "); - Text downed = (down == null || idx== -1) ? null : Widget.simpleEntryText(down.substring(idx + 2), "Downed:", format); + Text downed = (down == null || idx== -1) ? null : Widget.simpleEntryText(down.substring(idx + 2), "Downed: ", format); IcoTextComponent d = new IcoTextComponent(Ico.SKULL, downed); this.addComponent(d); -- cgit From 1b0053152f33164cc7e8572b87f6cf4755a75353 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 21 May 2023 20:58:21 +0200 Subject: Add missing percent sign in SkillsWidget --- .../me/xmrvizzy/skyblocker/skyblock/tabhud/widget/SkillsWidget.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/me') 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 b426d9e6..92ee0ca9 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 @@ -43,7 +43,7 @@ public class SkillsWidget extends Widget { if (!pcntStr.equals("MAX")) { float pcnt = Float.parseFloat(pcntStr); progress = new ProgressComponent(Ico.LANTERN, Text.of(skill), - Text.of(pcntStr), pcnt, Formatting.GOLD.getColorValue()); + Text.of(pcntStr + "%"), pcnt, Formatting.GOLD.getColorValue()); } else { progress = new IcoFatTextComponent(Ico.LANTERN, Text.of(skill), Text.literal(pcntStr).formatted(Formatting.RED)); -- cgit From 6be72d37c9da40c5361699084808b52c32c29278 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 21 May 2023 20:59:44 +0200 Subject: Fix colored part of ProgressComponent being transparent --- .../skyblock/tabhud/widget/component/ProgressComponent.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/main/java/me') 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 f6618a98..6aaf9f67 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 @@ -28,7 +28,7 @@ public class ProgressComponent extends Component { this.ico = (ico == null) ? Ico.BARRIER : ico; this.desc = d; this.bar = b; - this.color = color; + this.color = 0xff000000 | color; this.pcnt = pcnt; if (d == null || b == null) { @@ -59,8 +59,9 @@ public class ProgressComponent extends Component { int barX = x + ICO_DIM + PAD_L; int barY = y + txtRend.fontHeight + PAD_S; - DrawableHelper.fill(ms, barX, barY, barX + this.barW, barY + BAR_HEIGHT, COL_BG_BAR); - DrawableHelper.fill(ms, barX, barY, barX + ((int) (this.barW * (this.pcnt / 100f))), barY + BAR_HEIGHT, + int endOffsX = ((int) (this.barW * (this.pcnt / 100f))); + DrawableHelper.fill(ms, barX + endOffsX, barY, barX + this.barW, barY + BAR_HEIGHT, COL_BG_BAR); + DrawableHelper.fill(ms, barX, barY, barX + endOffsX, barY + BAR_HEIGHT, this.color); txtRend.drawWithShadow(ms, bar, barX + 3, barY + 2, 0xffffffff); } -- cgit From b446021b397fd70c98ac6dab595b8df6d026d355 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 28 May 2023 11:12:37 +0200 Subject: Adjust default keybinds, add logger. --- .../java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/main/java/me') 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 01c196f7..6d90b269 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java @@ -1,6 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud; import org.lwjgl.glfw.GLFW; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.minecraft.client.option.KeyBinding; @@ -13,17 +15,19 @@ public class TabHud { // public static KeyBinding mapTgl; public static KeyBinding defaultTgl; + public static final Logger LOGGER = LoggerFactory.getLogger("Skyblocker Tab HUD"); + public static void init() { playerTgl = KeyBindingHelper.registerKeyBinding( new KeyBinding("key.skyblocker.playerTgl", InputUtil.Type.KEYSYM, - GLFW.GLFW_KEY_LEFT_SHIFT, + GLFW.GLFW_KEY_B, "key.categories.skyblocker")); genericTgl = KeyBindingHelper.registerKeyBinding( new KeyBinding("key.skyblocker.genericTgl", InputUtil.Type.KEYSYM, - GLFW.GLFW_KEY_LEFT_ALT, + GLFW.GLFW_KEY_N, "key.categories.skyblocker")); // mapTgl = KeyBindingHelper.registerKeyBinding( // new KeyBinding("key.tabhud.mapTgl", @@ -33,7 +37,7 @@ public class TabHud { defaultTgl = KeyBindingHelper.registerKeyBinding( new KeyBinding("key.skyblocker.defaultTgl", InputUtil.Type.KEYSYM, - GLFW.GLFW_KEY_B, + GLFW.GLFW_KEY_M, "key.categories.skyblocker")); } -- cgit From eeaae397b0000b725e2a1cb63613b28e712a6d68 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 28 May 2023 11:46:05 +0200 Subject: Add javadoc comments to key classes. --- .../skyblocker/skyblock/tabhud/screens/Screen.java | 27 +++++++++++++++ .../skyblocker/skyblock/tabhud/util/Ico.java | 3 ++ .../skyblock/tabhud/util/PlayerListMgr.java | 39 ++++++++++++++++------ .../skyblock/tabhud/util/PlayerLocator.java | 9 ++--- .../skyblocker/skyblock/tabhud/widget/Widget.java | 31 +++++++++++++++++ .../tabhud/widget/component/Component.java | 3 ++ .../widget/component/IcoFatTextComponent.java | 5 +-- .../tabhud/widget/component/IcoTextComponent.java | 5 +-- .../widget/component/PlainTextComponent.java | 5 +-- .../tabhud/widget/component/PlayerComponent.java | 7 ++-- .../tabhud/widget/component/ProgressComponent.java | 8 +++-- .../tabhud/widget/component/TableComponent.java | 9 +++-- 12 files changed, 120 insertions(+), 31 deletions(-) (limited to 'src/main/java/me') 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 ae71d7bd..cca2ed9e 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 @@ -82,10 +82,16 @@ public class Screen { }; } + /** + * 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); @@ -98,6 +104,9 @@ public class Screen { } } + /** + * 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) { @@ -111,6 +120,9 @@ public class Screen { } } + /** + * 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; @@ -125,24 +137,39 @@ public class Screen { } } + /** + * 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); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java index 120cabd8..ca767617 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/Ico.java @@ -3,6 +3,9 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.util; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +/** + * Stores convenient shorthands for common ItemStack definitions + */ public class Ico { public static final ItemStack MAP = new ItemStack(Items.FILLED_MAP); public static final ItemStack NTAG = new ItemStack(Items.NAME_TAG); 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 6243415d..2cab4597 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 @@ -8,12 +8,19 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import me.xmrvizzy.skyblocker.mixin.PlayerListHudAccessor; +import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.network.PlayerListEntry; import net.minecraft.text.Text; +/** + * This class may be used to get data from the player list. + * It doesn't get its data every frame, instead, a scheduler is used to + * update the data this class is holding periodically. + * The list is sorted like in the vanilla game. + */ public class PlayerListMgr { public static final Logger LOGGER = LoggerFactory.getLogger("Skyblocker Regex"); @@ -28,9 +35,8 @@ public class PlayerListMgr { ClientPlayNetworkHandler cpnwh = MinecraftClient.getInstance().getNetworkHandler(); - // check is needed, else crash on server leave + // check is needed, else game crash on server leave if (cpnwh != null) { - playerList = cpnwh.getPlayerList() .stream() .sorted(PlayerListHudAccessor.getOrdering()) @@ -38,9 +44,12 @@ public class PlayerListMgr { } } - // apply pattern to entry at index of player list. - // return null if there's nothing to match against in the entry, - // or if the pattern doesn't fully match. + /** + * Get the display name at some index of the player list and apply a pattern to + * it + * + * @return the matcher if p fully matches, else null + */ public static Matcher regexAt(int idx, Pattern p) { String str = PlayerListMgr.strAt(idx); @@ -51,15 +60,19 @@ public class PlayerListMgr { Matcher m = p.matcher(str); if (!m.matches()) { - LOGGER.debug("no match: \"{}\" against \"{}\"", str, p); + LOGGER.error("no match: \"{}\" against \"{}\"", str, p); return null; } else { return m; } } - // return string (i.e. displayName) at index of player list. - // return null if string is null, empty or whitespace only. + /** + * Get the display name at some index of the player list as string + * + * @return the string or null, if the display name is null, empty or whitespace + * only + */ public static String strAt(int idx) { if (playerList == null) { @@ -81,8 +94,14 @@ public class PlayerListMgr { return str; } - public static PlayerListEntry getRaw(int i) { - return playerList.get(i); + /** + * Get the display name at some index of the player list as Text as seen in the + * game + * + * @return the PlayerListEntry at that index + */ + public static PlayerListEntry getRaw(int idx) { + return playerList.get(idx); } public static int getSize() { 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 eb8210d9..49d080e2 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 @@ -2,6 +2,9 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.util; import me.xmrvizzy.skyblocker.utils.Utils; +/** + * Uses data from the player list to determine the area the player is in. + */ public class PlayerLocator { public static enum Location { @@ -30,10 +33,6 @@ public class PlayerLocator { return Location.UNKNOWN; } - if (Utils.isInDungeons) { - return Location.DUNGEON; - } - String areaDesciptor = PlayerListMgr.strAt(41); if (areaDesciptor == null || areaDesciptor.length() < 6) { @@ -76,6 +75,8 @@ public class PlayerLocator { return Location.JERRY; case "Garden": return Location.GARDEN; + case "Catacombs": + return Location.DUNGEON; default: return Location.UNKNOWN; } 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 23ec15d0..6b96c151 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 @@ -17,6 +17,12 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +/** + * Abstract base class for a Widget. + * Widgets are containers for components with a border and a title. + * Their size is dependent on the components inside, + * the position may be changed after construction. + */ public abstract class Widget { private ArrayList components = new ArrayList<>(); @@ -42,11 +48,20 @@ public abstract class Widget { components.add(c); } + /** + * Shorthand function for simple components. + * 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) { Text txt = Widget.simpleEntryText(idx, string, fmt); this.addComponent(new IcoTextComponent(ico, txt)); } + /** + * Calculate the size of this widget. + * Must be called before returning from the widget constructor and after all components are added! + */ public final void pack() { for (Component c : components) { h += c.getHeight() + Component.PAD_L; @@ -85,10 +100,16 @@ public abstract class Widget { return this.h; } + /** + * Draw this widget with a background + */ public final void render(MatrixStack ms) { this.render(ms, true); } + /** + * Draw this widget, possibly with a background + */ public final void render(MatrixStack ms, boolean hasBG) { // not sure if this is the way to go, but it fixes Z-layer issues @@ -140,6 +161,10 @@ public abstract class Widget { DrawableHelper.fill(ms, xpos, ypos, xpos + 1, ypos + height, this.color); } + /** + * 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); @@ -157,10 +182,16 @@ public abstract class Widget { return Widget.simpleEntryText(src, entryName, contentFmt); } + /** + * @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)); } + /** + * @return the entry at idx as unformatted Text + */ public static Text plainEntryText(int idx) { String str = PlayerListMgr.strAt(idx); if (str == null) { 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 d9d84bc4..671b1f41 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 @@ -5,6 +5,9 @@ import net.minecraft.client.font.TextRenderer; import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.client.util.math.MatrixStack; +/** + * Abstract base class for a component that may be added to a Widget. + */ public abstract class Component { static final int ICO_DIM = 16; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java index 55d9b889..f845eba5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java @@ -6,8 +6,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// widget component that consists of an icon and two lines of text - +/** + * Component that consists of an icon and two lines of text + */ public class IcoFatTextComponent extends Component { private static final int ICO_OFFS = 1; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java index a14d0531..7a495a13 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java @@ -6,8 +6,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// widget component that consists of an icon and a line of text - +/** + * Component that consists of an icon and a line of text. + */ public class IcoTextComponent extends Component { private ItemStack ico; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java index 70a72715..f356a6a3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java @@ -4,8 +4,9 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// widget component that consists of a line of text - +/** + * Component that consists of a line of text. + */ public class PlainTextComponent extends Component { private Text text; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java index ff296f28..18859080 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java @@ -7,8 +7,9 @@ import net.minecraft.client.network.PlayerListEntry; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Identifier; -// widget component that consists of a player's skin icon and their name - +/** + * Component that consists of a player's skin icon and their name + */ public class PlayerComponent extends Component { private static final int SKIN_ICO_DIM = 8; @@ -21,7 +22,7 @@ public class PlayerComponent extends Component { name = ple.getProfile().getName(); tex = ple.getSkinTexture(); - this.width = SKIN_ICO_DIM + PAD_S + txtRend.getWidth(name) ; + this.width = SKIN_ICO_DIM + PAD_S + txtRend.getWidth(name); this.height = txtRend.fontHeight; } 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 6aaf9f67..b9ebc0e9 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 @@ -7,10 +7,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -// widget component that consists of an icon, some text and a progress bar -// progress bar either shows percentage or custom text -// NOTICE: pcnt is 0-100, not 0-1! +/** + * Component that consists of an icon, some text and a progress bar. + * The progress bar either shows the fill percentage or custom text. + * NOTICE: pcnt is 0-100, not 0-1! + */ public class ProgressComponent extends Component { private static final int BAR_WIDTH = 100; 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 5d27380e..5d49be2c 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 @@ -3,11 +3,10 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.util.math.MatrixStack; -// widget component that consists of a grid of other components -// grid cols are separated by lines - -// FIXME: table isn't wide enough sometimes -// FIXME: dividers drift when there are >2 cols +/** + * Meta-Component that consists of a grid of other components + * Grid cols are separated by lines. + */ public class TableComponent extends Component { private Component[][] comps; -- cgit From ad9986028e5f7b1c2ec38323d3af19088d7089ac Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 28 May 2023 11:46:49 +0200 Subject: Use logger on PlayerListHudMixin exception instead of printStackTrace --- src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index 3d915f8b..eee4eaca 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -1,5 +1,7 @@ package me.xmrvizzy.skyblocker.mixin; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -50,9 +52,8 @@ public class PlayerListHudMixin { screen.render(ms); info.cancel(); } catch (Exception e) { - e.printStackTrace(); + TabHud.LOGGER.error("Drawing default hud. Reason: Screen exception {}", e); } - } } \ No newline at end of file -- cgit From 480f19534eaea240da6a9340f1a4335c2bf5bb79 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 28 May 2023 11:51:46 +0200 Subject: Adjust formatting --- .../skyblock/tabhud/screens/genericInfo/GenericInfoScreen.java | 3 --- .../skyblocker/skyblock/tabhud/screens/main/DungeonScreen.java | 4 +--- .../skyblock/tabhud/screens/playerList/DungeonPlayerScreen.java | 5 +---- .../xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java | 2 +- .../skyblocker/skyblock/tabhud/widget/DungeonPuzzleWidget.java | 2 -- .../skyblocker/skyblock/tabhud/widget/DungeonSecretWidget.java | 1 - .../skyblocker/skyblock/tabhud/widget/DungeonServerWidget.java | 4 ++-- .../xmrvizzy/skyblocker/skyblock/tabhud/widget/EffectWidget.java | 8 ++++---- .../skyblocker/skyblock/tabhud/widget/ElectionWidget.java | 1 - .../xmrvizzy/skyblocker/skyblock/tabhud/widget/EventWidget.java | 1 - .../xmrvizzy/skyblocker/skyblock/tabhud/widget/ProfileWidget.java | 3 --- .../xmrvizzy/skyblocker/skyblock/tabhud/widget/SkillsWidget.java | 1 - .../xmrvizzy/skyblocker/skyblock/tabhud/widget/UpgradeWidget.java | 1 - 13 files changed, 9 insertions(+), 27 deletions(-) (limited to 'src/main/java/me') 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 a3e75ab6..046a9313 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 @@ -1,7 +1,5 @@ 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; @@ -11,7 +9,6 @@ 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 { 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 index 98ce476e..02ac9617 100644 --- 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 @@ -1,7 +1,5 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main; - - import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonDeathWidget; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonDownedWidget; @@ -9,13 +7,13 @@ 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); + DungeonDownedWidget ddow = new DungeonDownedWidget(); DungeonDeathWidget ddew = new DungeonDeathWidget(); DungeonSecretWidget dscw = new DungeonSecretWidget(); 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 index 64d0db99..2567da13 100644 --- 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 @@ -1,16 +1,13 @@ 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); 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 2cab4597..b7784a2b 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 @@ -8,7 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import me.xmrvizzy.skyblocker.mixin.PlayerListHudAccessor; -import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; + import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayNetworkHandler; 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 b689228d..2529e876 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 @@ -6,7 +6,6 @@ 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; import net.minecraft.util.Formatting; @@ -51,7 +50,6 @@ public class DungeonPuzzleWidget extends Widget { 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 2c760dad..93eb69de 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 @@ -1,7 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; - import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; 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 8801df68..81b8f907 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 @@ -6,7 +6,6 @@ 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.ProgressComponent; - import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -34,7 +33,8 @@ public class DungeonServerWidget extends Widget { if (m == null) { this.addComponent(new ProgressComponent()); } else { - ProgressComponent scp = new ProgressComponent(Ico.CHEST, Text.of("Secrets found:"), Float.parseFloat(m.group("secnum")), + ProgressComponent scp = new ProgressComponent(Ico.CHEST, Text.of("Secrets found:"), + Float.parseFloat(m.group("secnum")), Formatting.DARK_PURPLE.getColorValue()); this.addComponent(scp); } 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 b24f7535..10596fe2 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 @@ -3,7 +3,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoFatTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; - import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -20,7 +19,7 @@ public class EffectWidget extends Widget { public EffectWidget(String footertext) { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); - if (footertext == null ||!footertext.contains("Active Effects")) { + if (footertext == null || !footertext.contains("Active Effects")) { this.addComponent(new IcoTextComponent()); this.pack(); return; @@ -46,13 +45,14 @@ public class EffectWidget extends Widget { } else { String number = lines[1].substring("You have ".length()); int idx = number.indexOf(' '); - if (idx == -1 ||lines.length < 4) { + if (idx == -1 || lines.length < 4) { this.addComponent(new IcoFatTextComponent()); this.pack(); return; } number = number.substring(0, idx); - Text active = Text.literal("Active Effects: ").append(Text.literal(number).formatted(Formatting.YELLOW)); + Text active = Text.literal("Active Effects: ") + .append(Text.literal(number).formatted(Formatting.YELLOW)); IcoFatTextComponent iftc = new IcoFatTextComponent(Ico.POTION, active, Text.literal(lines[3]).formatted(Formatting.AQUA)); 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 1a26026e..ed07982c 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 @@ -8,7 +8,6 @@ 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.ProgressComponent; - import net.minecraft.item.ItemStack; import net.minecraft.text.MutableText; import net.minecraft.text.Text; 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 f9483bde..1b46e621 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 @@ -2,7 +2,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; - import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; 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 ed375c6e..a6d9e82d 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 @@ -1,8 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; - import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; - import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -24,5 +22,4 @@ public class ProfileWidget extends Widget { 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 92ee0ca9..88ba8022 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 @@ -10,7 +10,6 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoFatTextCompone import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent; - import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; 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 178c9c3c..e9d239ae 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 @@ -19,7 +19,6 @@ public class UpgradeWidget extends Widget { public UpgradeWidget(String footertext) { super(TITLE, Formatting.GOLD.getColorValue()); - if (footertext == null || !footertext.contains("Upgrades")) { this.addComponent(new PlainTextComponent(Text.literal("No data").formatted(Formatting.GRAY))); this.pack(); -- cgit From cb000d7ea1d4a7d70f6168c4e3c5417bb9399430 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 28 May 2023 11:52:22 +0200 Subject: Add null failsafe to cookie widget --- .../me/xmrvizzy/skyblocker/skyblock/tabhud/widget/CookieWidget.java | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/main/java/me') 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 42298fcd..48cb90bd 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 @@ -22,6 +22,12 @@ public class CookieWidget extends Widget { public CookieWidget(String footertext) { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); + 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()); -- cgit From 67eead9c88f7840990bee398c45f1567d358ed1b Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 28 May 2023 11:52:46 +0200 Subject: Use shorthand method in DungeonDeathWidget --- .../skyblocker/skyblock/tabhud/widget/DungeonDeathWidget.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/main/java/me') 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 3e5d8d6a..78e1aeae 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 @@ -6,7 +6,6 @@ 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; import net.minecraft.util.Formatting; @@ -26,12 +25,12 @@ public class DungeonDeathWidget extends Widget { public DungeonDeathWidget() { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); - Matcher m = PlayerListMgr.regexAt( 25, DEATH_PATTERN); + Matcher m = PlayerListMgr.regexAt(25, DEATH_PATTERN); if (m == null) { this.addComponent(new IcoTextComponent()); } else { Formatting f = (m.group("deathnum").equals("0")) ? Formatting.GREEN : Formatting.RED; - Text d = Text.literal("Deaths: ").append(Text.literal(m.group("deathnum")).formatted(f)); + Text d = Widget.simpleEntryText(m.group("deathnum"), "Deaths: ", f); IcoTextComponent deaths = new IcoTextComponent(Ico.SKULL, d); this.addComponent(deaths); } @@ -41,7 +40,6 @@ public class DungeonDeathWidget extends Widget { this.addSimpleIcoText(Ico.NTAG, "Milestone:", Formatting.YELLOW, 28); this.pack(); - } } -- cgit From 93147b4ab60fed4e5f6067ff6a6c638b0738cb71 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 28 May 2023 11:53:21 +0200 Subject: Handle dead players correctly in DungeonPlayerWidget --- .../tabhud/widget/DungeonPlayerWidget.java | 31 ++++++++++++++-------- 1 file changed, 20 insertions(+), 11 deletions(-) (limited to 'src/main/java/me') 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 8f28a2c6..c1f9e235 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 @@ -8,6 +8,7 @@ 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 me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; import net.minecraft.item.ItemStack; import net.minecraft.text.MutableText; import net.minecraft.text.Text; @@ -68,23 +69,31 @@ public class DungeonPlayerWidget extends Widget { this.addComponent(new IcoTextComponent(Ico.PLAYER, name)); String cl = m.group("class"); - Formatting clf = Formatting.GRAY; - ItemStack cli = Ico.BARRIER; - if (!cl.equals("EMPTY")) { - cli = ICOS.get(cl); - clf = Formatting.LIGHT_PURPLE; - cl += " " + m.group("level"); + String level = m.group("level"); + + if (level == null) { + PlainTextComponent ptc = new PlainTextComponent( + Text.literal("Player is dead").formatted(Formatting.RED)); + this.addComponent(ptc); + } else { + + Formatting clf = Formatting.GRAY; + ItemStack cli = Ico.BARRIER; + if (!cl.equals("EMPTY")) { + cli = ICOS.get(cl); + clf = Formatting.LIGHT_PURPLE; + cl += " " + m.group("level"); + } + + Text clazz = Text.literal("Class: ").append(Text.literal(cl).formatted(clf)); + IcoTextComponent itclass = new IcoTextComponent(cli, clazz); + this.addComponent(itclass); } - - Text clazz = Text.literal("Class: ").append(Text.literal(cl).formatted(clf)); - IcoTextComponent itclass = new IcoTextComponent(cli, clazz); - this.addComponent(itclass); } this.addSimpleIcoText(Ico.CLOCK, "Ult Cooldown:", Formatting.GOLD, start + 1); this.addSimpleIcoText(Ico.POTION, "Revives:", Formatting.DARK_PURPLE, start + 2); this.pack(); - } } -- cgit From d6777f8545f7a6d1f288329a2fa6385d550da876 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 28 May 2023 11:53:59 +0200 Subject: Fix logic error in DungeonDownedWidget that may cause null pointer execptions. --- .../tabhud/widget/DungeonDownedWidget.java | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'src/main/java/me') 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 60f3313f..9bb250f7 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 @@ -3,7 +3,6 @@ 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 net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -18,15 +17,22 @@ public class DungeonDownedWidget extends Widget { public DungeonDownedWidget() { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); - Formatting format = Formatting.RED; + String down = PlayerListMgr.strAt(21); - if (down != null && down.endsWith("NONE")) { - format = Formatting.GRAY; + if (down == null) { + this.addComponent(new IcoTextComponent()); + } else { + + Formatting format = Formatting.RED; + if (down.endsWith("NONE")) { + format = Formatting.GRAY; + } + int idx = down.indexOf(": "); + Text downed = (idx == -1) ? null + : Widget.simpleEntryText(down.substring(idx + 2), "Downed: ", format); + IcoTextComponent d = new IcoTextComponent(Ico.SKULL, downed); + this.addComponent(d); } - int idx = down.indexOf(": "); - Text downed = (down == null || idx== -1) ? null : Widget.simpleEntryText(down.substring(idx + 2), "Downed: ", format); - IcoTextComponent d = new IcoTextComponent(Ico.SKULL, downed); - this.addComponent(d); this.addSimpleIcoText(Ico.CLOCK, "Time:", Formatting.GRAY, 22); this.addSimpleIcoText(Ico.POTION, "Revive:", Formatting.GRAY, 23); -- cgit From cec7f0f6f2ba47208a1bab32dcf454d52feb0932 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 28 May 2023 12:39:10 +0200 Subject: Fix PlayerLocator not being able to find people in the dungeon --- .../me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/main/java/me') 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 49d080e2..bcc7e338 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 @@ -39,6 +39,10 @@ public class PlayerLocator { return Location.UNKNOWN; } + if (areaDesciptor.startsWith("Dungeon")) { + return Location.DUNGEON; + } + switch (areaDesciptor.substring(6)) { case "Private Island": String islandType = PlayerListMgr.strAt(44); @@ -75,8 +79,6 @@ public class PlayerLocator { return Location.JERRY; case "Garden": return Location.GARDEN; - case "Catacombs": - return Location.DUNGEON; default: return Location.UNKNOWN; } -- cgit From bf7ec68ff7f318864b33692d289c2acbf1ef9302 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 4 Jun 2023 13:02:23 +0200 Subject: Update TODOs for tests in Screen --- .../java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/java/me') 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 cca2ed9e..43b7f956 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 @@ -68,10 +68,10 @@ public class Screen { 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, TODO active fs, no fs + 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 4 comms, active forge + 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 -- cgit From a8f69bdda78768ba6303810e4dbee4482f21464f Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 4 Jun 2023 13:02:43 +0200 Subject: Add widget to display dungeon buffs --- .../tabhud/screens/main/DungeonScreen.java | 14 ++++--- .../skyblock/tabhud/widget/DungeonBuffWidget.java | 44 ++++++++++++++++++++++ 2 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonBuffWidget.java (limited to 'src/main/java/me') 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 index 02ac9617..852ee876 100644 --- 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 @@ -1,12 +1,12 @@ 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 { @@ -14,22 +14,26 @@ 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(dscw); + this.offCenterL(dbw); this.offCenterR(dsrw); this.offCenterR(dpuw); + this.offCenterR(dscw); - this.stackWidgetsH(ddow, ddew, dscw); - this.stackWidgetsH(dsrw, dpuw); + this.stackWidgetsH(ddow, ddew, dbw); + this.stackWidgetsH(dsrw, dpuw, dscw); - this.addWidgets(ddow, ddew, dscw, dsrw, dpuw); + this.addWidgets(ddow, ddew, dscw, dsrw, dpuw, dbw); } 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 new file mode 100644 index 00000000..6ad5268e --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonBuffWidget.java @@ -0,0 +1,44 @@ +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; + +// this widget shows a list of obtained dungeon buffs +// TODO: could be more pretty, can't be arsed atm + +public class DungeonBuffWidget extends Widget { + + private static final MutableText TITLE = Text.literal("Dungeon Buffs").formatted(Formatting.DARK_PURPLE, + Formatting.BOLD); + + public DungeonBuffWidget(String footertext) { + super(TITLE, Formatting.DARK_PURPLE.getColorValue()); + + if (footertext == null || !footertext.contains("Dungeon Buffs")) { + this.addComponent(new PlainTextComponent(Text.literal("No data").formatted(Formatting.GRAY))); + this.pack(); + return; + } + + String interesting = footertext.split("Dungeon Buffs")[1]; + String[] lines = interesting.split("\n"); + + if (!lines[1].startsWith("Blessing")) { + this.addComponent(new PlainTextComponent(Text.literal("No buffs found!").formatted(Formatting.GRAY))); + this.pack(); + return; + } + + for (int i = 1; i < lines.length; i++) { + if (lines[i].length() < 3) { // empty line is §s + break; + } + this.addComponent(new PlainTextComponent(Text.of(lines[i]))); + } + + this.pack(); + } + +} -- cgit From a4548ef21d733fe28de880456bfafadce8ddb064 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 4 Jun 2023 13:03:03 +0200 Subject: Add "INSTANCED" location for e.g. Kuudra's --- .../me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/main/java/me') 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 bcc7e338..134bfea8 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 @@ -24,6 +24,7 @@ public class PlayerLocator { SPIDER_DEN, JERRY, GARDEN, + INSTANCED, UNKNOWN } @@ -79,6 +80,8 @@ public class PlayerLocator { return Location.JERRY; case "Garden": return Location.GARDEN; + case "Instanced": + return Location.INSTANCED; default: return Location.UNKNOWN; } -- cgit From a84f34c56cdcf6646576bbf1806315c28b5ebc9c Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 4 Jun 2023 13:03:21 +0200 Subject: Fix IslandOwnersWidget crashing when owner is online --- .../skyblock/tabhud/widget/IslandOwnersWidget.java | 28 +++++++++++++++------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'src/main/java/me') 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 1c640ed1..8550b27d 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 @@ -18,23 +18,35 @@ public class IslandOwnersWidget extends Widget { Formatting.BOLD); // matches an owner - // group 1: player name (cut off by hypixel for some reason) - // group 2: last seem - // TODO: test with owner online - private static final Pattern OWNER_PATTERN = Pattern.compile("(?.*) \\((?.*)\\)"); + // group 1: player name + // group 2: last seen, if owner not online + private static final Pattern OWNER_PATTERN = Pattern + .compile("^(?.*) \\((?.*)?\\)$|^\\[\\d*\\] (?.*)$"); public IslandOwnersWidget() { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); 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 = Text.literal(m.group("name")) + String name = null, lastseen = null; + Formatting format = null; + if (m.group("nameA") != null) { + name = m.group("nameA"); + lastseen = m.group("lastseen"); + format = Formatting.GRAY; + } else { + name = m.group("nameB"); + lastseen = "Online"; + format = Formatting.WHITE; + } + + Text entry = Text.literal(name) .append( - Text.literal(" (" + m.group("lastseen") + ")") - .formatted(Formatting.GRAY)); + Text.literal(" (" + lastseen + ")") + .formatted(format)); PlainTextComponent ptc = new PlainTextComponent(entry); this.addComponent(ptc); } -- cgit From 34d87f0e435963cb571568a783c9c4456e811012 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 4 Jun 2023 13:03:49 +0200 Subject: Fix UpgradeWidget not showing current upgrades --- .../skyblock/tabhud/widget/UpgradeWidget.java | 25 +++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'src/main/java/me') 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 e9d239ae..ef7c21d0 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 @@ -19,22 +19,27 @@ public class UpgradeWidget extends Widget { public UpgradeWidget(String footertext) { super(TITLE, Formatting.GOLD.getColorValue()); - if (footertext == null || !footertext.contains("Upgrades")) { + if (footertext == null) { this.addComponent(new PlainTextComponent(Text.literal("No data").formatted(Formatting.GRAY))); this.pack(); return; } - String[] interesting = footertext.split("Upgrades"); - this.addComponent(new PlainTextComponent(Text.of("Currently no upgrades..."))); - this.pack(); + if (!footertext.contains("Upgrades")) { + this.addComponent(new PlainTextComponent(Text.of("Currently no upgrades..."))); + this.pack(); + return; + } + + String interesting = footertext.split("Upgrades")[1]; + String[] lines = interesting.split("\n"); - String[] lines = interesting[1].split("\n"); - IcoTextComponent u1 = new IcoTextComponent(Ico.SIGN, Text.of(lines[1])); - this.addComponent(u1); - if (lines.length == 5) { // ??? no idea how this works, but it does. don't touch until understood... - IcoTextComponent u2 = new IcoTextComponent(Ico.SIGN, Text.of(lines[2])); - this.addComponent(u2); + for (int i = 1; i < lines.length; i++) { + if (lines[i].trim().length() < 3) { // empty line is §s + break; + } + IcoTextComponent itc = new IcoTextComponent(Ico.SIGN, Text.of(lines[i])); + this.addComponent(itc); } this.pack(); } -- cgit From 029b4dc43ba1a5cbeb0330085af64ba073e46d05 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 4 Jun 2023 14:24:48 +0200 Subject: Fix edge case where home island owner isn't on but no offline text is given --- .../skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/main/java/me') 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 8550b27d..6c2d6b47 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 @@ -21,7 +21,7 @@ public class IslandOwnersWidget extends Widget { // group 1: player name // group 2: last seen, if owner not online private static final Pattern OWNER_PATTERN = Pattern - .compile("^(?.*) \\((?.*)?\\)$|^\\[\\d*\\] (?.*)$"); + .compile("^(?.*) \\((?.*)\\)$|^\\[\\d*\\] (?.*)$|^(?.*)$"); public IslandOwnersWidget() { super(TITLE, Formatting.DARK_PURPLE.getColorValue()); @@ -37,10 +37,14 @@ public class IslandOwnersWidget extends Widget { name = m.group("nameA"); lastseen = m.group("lastseen"); format = Formatting.GRAY; - } else { + } else if (m.group("nameB")!=null){ name = m.group("nameB"); lastseen = "Online"; format = Formatting.WHITE; + } else { + name = m.group("nameC"); + lastseen = "Online"; + format = Formatting.WHITE; } Text entry = Text.literal(name) -- cgit From 1931f2ce957d02374d8f2ce43dd2118e040d2103 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Thu, 8 Jun 2023 22:47:09 +0200 Subject: Don't draw dwarven HUD when the tab HUD is open. Also remove a redundant check --- .../me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/main/java/me') 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 142a1856..15f9e58b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java @@ -50,15 +50,17 @@ public class DwarvenHud { }))))); HudRenderCallback.EVENT.register((matrixStack, tickDelta) -> { - if (!SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enabled || client.player == null || commissionList.isEmpty()) return; + if (!SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enabled + || client.options.playerListKey.isPressed() + || client.player == null + || commissionList.isEmpty()) { + return; + } render(matrixStack, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.x, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.y, commissionList); }); } public static void render(MatrixStack matrixStack, int hudX, int hudY, List commissions) { - if (commissions.size() <= 0) { - return; - } switch(SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.style) { case SIMPLE -> renderSimple(matrixStack, hudX, hudY, commissions); -- cgit From f21cac6a03ec60ccf22ed3f2dafb49e1fe81c4c4 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Thu, 8 Jun 2023 22:47:39 +0200 Subject: Modify layout of MineServerScreen to be more balanced --- .../skyblock/tabhud/screens/main/MineServerScreen.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'src/main/java/me') 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 index 22eb0ffa..616c3e82 100644 --- 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 @@ -1,17 +1,14 @@ 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 class MineServerScreen extends Screen { public MineServerScreen(int w, int h, Text footer) { super(w, h); @@ -21,11 +18,11 @@ public class MineServerScreen extends Screen{ CommsWidget cw = new CommsWidget(); ForgeWidget fw = new ForgeWidget(); - this.stackWidgetsH(sw, pw, cw); - this.centerH(fw); + this.stackWidgetsH(sw, cw); + this.stackWidgetsH(fw, pw); this.offCenterL(sw); - this.offCenterL(pw); this.offCenterL(cw); + this.offCenterR(pw); this.offCenterR(fw); this.addWidgets(fw, cw, pw, sw); } -- cgit From adb9df0a2f4412394027df6157cdce743e403d47 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Thu, 8 Jun 2023 22:48:09 +0200 Subject: Fix EffectWidget showing incorrect text when god pot is active. --- .../me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EffectWidget.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/java/me') 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 10596fe2..cd39a25a 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 @@ -37,8 +37,8 @@ public class EffectWidget extends Widget { Text txt = Text.literal("No effects active").formatted(Formatting.GRAY); this.addComponent(new IcoTextComponent(Ico.POTION, txt)); } else if (lines[1].contains("God")) { - String timeleft = lines[1].split("! ")[0]; - Text godpot = Text.literal("God potion!").formatted(Formatting.RED, Formatting.BOLD); + String timeleft = lines[1].split("! ")[1]; + Text godpot = Text.literal("God potion!").formatted(Formatting.RED); Text txttleft = Text.literal(timeleft).formatted(Formatting.LIGHT_PURPLE); IcoFatTextComponent iftc = new IcoFatTextComponent(Ico.POTION, godpot, txttleft); this.addComponent(iftc); -- cgit From 8b8de6bf27943f5487fce1643e5859c368220b06 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Thu, 8 Jun 2023 22:49:13 +0200 Subject: Improve text for currently forging items. Also improve joke --- .../me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ForgeWidget.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/main/java/me') 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 4de4a0b4..da1ba6c5 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 @@ -21,7 +21,7 @@ public class ForgeWidget extends Widget { public ForgeWidget() { super(TITLE, Formatting.DARK_AQUA.getColorValue()); int forgestart = 54; - // why is it forges and not fabrics >:( + // why is it forges and not looms >:( String pos = PlayerListMgr.strAt(53); if (pos == null) { this.addComponent(new IcoTextComponent()); @@ -65,8 +65,8 @@ public class ForgeWidget extends Widget { if (parts.length != 2) { c = new IcoFatTextComponent(); } else { - l1 = Text.of(parts[0]); - l2 = Text.literal(parts[1]).formatted(Formatting.YELLOW); + l1 = Text.literal(parts[0].substring(3)).formatted(Formatting.YELLOW); + l2 = Text.literal("Done in: ").formatted(Formatting.GRAY).append(Text.literal(parts[1]).formatted(Formatting.WHITE)); c = new IcoFatTextComponent(Ico.FIRE, l1, l2); } break; -- cgit From 9b93e87859276cd7e37de0b6b02ca27c27228b87 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Thu, 8 Jun 2023 22:49:55 +0200 Subject: Make PlainTextComponent use padding --- .../skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java index f356a6a3..265d11f1 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java @@ -24,7 +24,7 @@ public class PlainTextComponent extends Component { @Override public void render(MatrixStack ms, int x, int y) { - txtRend.draw(ms, text, x, y, 0xffffffff); + txtRend.draw(ms, text, x + PAD_S, y, 0xffffffff); } } -- cgit