diff options
| author | Rime <81419447+Emirlol@users.noreply.github.com> | 2025-01-25 16:03:14 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-25 14:03:14 +0100 |
| commit | 76f0b6ea632cdef87e1791c8d96a2fbf586ef81f (patch) | |
| tree | ff1097cd51d8f1eb203932e7b1de998024933ad8 /src | |
| parent | 080aa301dcb36bc5f32dd72afb41ea5e1d805d60 (diff) | |
| download | Skyblocker-76f0b6ea632cdef87e1791c8d96a2fbf586ef81f.tar.gz Skyblocker-76f0b6ea632cdef87e1791c8d96a2fbf586ef81f.tar.bz2 Skyblocker-76f0b6ea632cdef87e1791c8d96a2fbf586ef81f.zip | |
Fix dungeon score not working when fancy tab hud is disabled (#1145)
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListManager.java | 50 |
1 files changed, 33 insertions, 17 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListManager.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListManager.java index c60601e9..64575800 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListManager.java @@ -40,15 +40,18 @@ import java.util.regex.Pattern; public class PlayerListManager { public static final Logger LOGGER = LoggerFactory.getLogger("Skyblocker Regex"); - private static final Pattern PLAYERS_COLUMN_PATTERN = Pattern.compile("(^|\\s*)(Players \\(\\d+\\)|Island|Coop \\(\\d+\\))(\\s*|$)"); - private static final Pattern INFO_COLUMN_PATTERN = Pattern.compile("(^|\\s*)Info(\\s*|$)"); + private static final Pattern PLAYERS_COLUMN_PATTERN = Pattern.compile("\\s*(Players \\(\\d+\\)|Island|Coop \\(\\d+\\))\\s*"); + private static final Pattern INFO_COLUMN_PATTERN = Pattern.compile("\\s*Info\\s*"); /** * The player list in tab. */ private static List<PlayerListEntry> playerList = new ArrayList<>(); // Initialize to prevent npe. + /** * The player list in tab, but a list of strings instead of {@link PlayerListEntry}s. + * + * @implNote All leading and trailing whitespace is removed from the strings. */ private static List<String> playerStringList = new ArrayList<>(); @Nullable @@ -56,31 +59,44 @@ public class PlayerListManager { public static final Map<String, TabHudWidget> tabWidgetInstances = new Object2ObjectOpenHashMap<>(); public static final List<TabHudWidget> tabWidgetsToShow = new ObjectArrayList<>(5); - public static void updateList() { + private static void reset() { + if (!tabWidgetsToShow.isEmpty()) { + tabWidgetsToShow.clear(); + ScreenBuilder.positionsNeedsUpdating = true; + } + } - if (!Utils.isOnSkyblock() || !SkyblockerConfigManager.get().uiAndVisuals.tabHud.tabHudEnabled) { - if (!tabWidgetsToShow.isEmpty()) { - tabWidgetsToShow.clear(); - ScreenBuilder.positionsNeedsUpdating = true; - } + public static void updateList() { + if (!Utils.isOnSkyblock()) { + reset(); return; } - ClientPlayNetworkHandler cpnwh = MinecraftClient.getInstance().getNetworkHandler(); + ClientPlayNetworkHandler networkHandler = MinecraftClient.getInstance().getNetworkHandler(); // check is needed, else game crashes on server leave - if (cpnwh != null) { - playerList = cpnwh.getPlayerList().stream().sorted(PlayerListHudAccessor.getOrdering()).toList(); - playerStringList = playerList.stream().map(PlayerListEntry::getDisplayName).filter(Objects::nonNull).map(Text::getString).map(String::strip).toList(); + if (networkHandler != null) { + playerList = networkHandler.getPlayerList() + .stream() + .sorted(PlayerListHudAccessor.getOrdering()) + .toList(); + playerStringList = playerList.stream() + .map(PlayerListEntry::getDisplayName) + .filter(Objects::nonNull) + .map(Text::getString) + .map(String::strip) + .toList(); + } + + if (!SkyblockerConfigManager.get().uiAndVisuals.tabHud.tabHudEnabled) { + reset(); + return; } if (MinecraftClient.getInstance().currentScreen instanceof WidgetsConfigurationScreen widgetsConfigurationScreen && widgetsConfigurationScreen.isPreviewVisible()) return; - if (Utils.isInDungeons()) { - updateDungeons(null); - } else { - updateWidgetsFrom(playerList); - } + if (Utils.isInDungeons()) updateDungeons(null); + else updateWidgetsFrom(playerList); } /** |
