From ab3f55fc2e81f5594009ecea708a931468ec7ccf Mon Sep 17 00:00:00 2001 From: Kevin <92656833+kevinthegreat1@users.noreply.github.com> Date: Thu, 12 Oct 2023 20:32:50 -0400 Subject: Refactor Utils (#354) --- .../skyblocker/skyblock/rift/EffigyWaypoints.java | 4 +- .../skyblock/rift/HealingMelonIndicator.java | 2 +- .../skyblocker/skyblock/rift/ManiaIndicator.java | 2 +- .../skyblocker/skyblock/rift/StakeIndicator.java | 2 +- .../skyblock/rift/TwinClawsIndicator.java | 2 +- src/main/java/de/hysky/skyblocker/utils/Utils.java | 60 ++++++++-------------- .../utils/discord/DiscordRPCManager.java | 4 +- 7 files changed, 29 insertions(+), 47 deletions(-) (limited to 'src') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/rift/EffigyWaypoints.java b/src/main/java/de/hysky/skyblocker/skyblock/rift/EffigyWaypoints.java index 4cc20ca5..a0e1a0f2 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/rift/EffigyWaypoints.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/rift/EffigyWaypoints.java @@ -27,7 +27,7 @@ public class EffigyWaypoints { private static final List UNBROKEN_EFFIGIES = new ArrayList<>(); protected static void updateEffigies() { - if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableEffigyWaypoints || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château")) return; + if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableEffigyWaypoints || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getIslandArea().contains("Stillgore Château")) return; UNBROKEN_EFFIGIES.clear(); @@ -54,7 +54,7 @@ public class EffigyWaypoints { } protected static void render(WorldRenderContext context) { - if (SkyblockerConfigManager.get().slayer.vampireSlayer.enableEffigyWaypoints && Utils.getLocation().contains("Stillgore Château")) { + if (SkyblockerConfigManager.get().slayer.vampireSlayer.enableEffigyWaypoints && Utils.getIslandArea().contains("Stillgore Château")) { for (BlockPos effigy : UNBROKEN_EFFIGIES) { float[] colorComponents = DyeColor.RED.getColorComponents(); if (SkyblockerConfigManager.get().slayer.vampireSlayer.compactEffigyWaypoints) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/rift/HealingMelonIndicator.java b/src/main/java/de/hysky/skyblocker/skyblock/rift/HealingMelonIndicator.java index 333a4aa1..b94ebac1 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/rift/HealingMelonIndicator.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/rift/HealingMelonIndicator.java @@ -13,7 +13,7 @@ public class HealingMelonIndicator { private static final Title title = new Title("skyblocker.rift.healNow", Formatting.DARK_RED); public static void updateHealth() { - if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableHealingMelonIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château")) { + if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableHealingMelonIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getIslandArea().contains("Stillgore Château")) { TitleContainer.removeTitle(title); return; } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/rift/ManiaIndicator.java b/src/main/java/de/hysky/skyblocker/skyblock/rift/ManiaIndicator.java index ab252ff0..d38151ff 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/rift/ManiaIndicator.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/rift/ManiaIndicator.java @@ -17,7 +17,7 @@ public class ManiaIndicator { private static final Title title = new Title("skyblocker.rift.mania", Formatting.RED); protected static void updateMania() { - if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableManiaIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !(Utils.getLocation().contains("Stillgore Château")) || !SlayerUtils.isInSlayer()) { + if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableManiaIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !(Utils.getIslandArea().contains("Stillgore Château")) || !SlayerUtils.isInSlayer()) { TitleContainer.removeTitle(title); return; } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/rift/StakeIndicator.java b/src/main/java/de/hysky/skyblocker/skyblock/rift/StakeIndicator.java index be502143..db24efa2 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/rift/StakeIndicator.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/rift/StakeIndicator.java @@ -13,7 +13,7 @@ public class StakeIndicator { private static final Title title = new Title("skyblocker.rift.stakeNow", Formatting.RED); protected static void updateStake() { - if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableSteakStakeIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château") || !SlayerUtils.isInSlayer()) { + if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableSteakStakeIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getIslandArea().contains("Stillgore Château") || !SlayerUtils.isInSlayer()) { TitleContainer.removeTitle(title); return; } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/rift/TwinClawsIndicator.java b/src/main/java/de/hysky/skyblocker/skyblock/rift/TwinClawsIndicator.java index 1622bf4a..48bb72ea 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/rift/TwinClawsIndicator.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/rift/TwinClawsIndicator.java @@ -15,7 +15,7 @@ public class TwinClawsIndicator { private static boolean scheduled = false; protected static void updateIce() { - if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableHolyIceIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !(Utils.getLocation().contains("Stillgore Château")) || !SlayerUtils.isInSlayer()) { + if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableHolyIceIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !(Utils.getIslandArea().contains("Stillgore Château")) || !SlayerUtils.isInSlayer()) { TitleContainer.removeTitle(title); return; } diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java index f046bffb..c1b4223f 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Utils.java +++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java @@ -2,12 +2,11 @@ package de.hysky.skyblocker.utils; import com.google.gson.JsonObject; import com.google.gson.JsonParser; - import de.hysky.skyblocker.events.SkyblockEvents; -import it.unimi.dsi.fastutil.objects.ObjectArrayList; import de.hysky.skyblocker.skyblock.item.PriceInfoTooltip; import de.hysky.skyblocker.skyblock.rift.TheRift; import de.hysky.skyblocker.utils.scheduler.MessageScheduler; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback; import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents; @@ -17,11 +16,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.scoreboard.Scoreboard; -import net.minecraft.scoreboard.ScoreboardDisplaySlot; -import net.minecraft.scoreboard.ScoreboardObjective; -import net.minecraft.scoreboard.ScoreboardPlayerScore; -import net.minecraft.scoreboard.Team; +import net.minecraft.scoreboard.*; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import org.slf4j.Logger; @@ -53,7 +48,7 @@ public class Utils { private static long clientWorldJoinTime = 0; private static boolean sentLocRaw = false; private static boolean canSendLocRaw = false; - + /** * @implNote The parent text will always be empty, the actual text content is inside the text's siblings. */ @@ -139,7 +134,7 @@ public class Utils { List sidebar = STRING_SCOREBOARD; FabricLoader fabricLoader = FabricLoader.getInstance(); - if ((client.world == null || client.isInSingleplayer() || sidebar == null || sidebar.isEmpty())) { + if (client.world == null || client.isInSingleplayer() || sidebar.isEmpty()) { if (fabricLoader.isDevelopmentEnvironment()) { sidebar = Collections.emptyList(); } else { @@ -190,36 +185,26 @@ public class Utils { } } - public static String getLocation() { - String location = null; - List sidebarLines = STRING_SCOREBOARD; + public static String getIslandArea() { try { - if (sidebarLines != null) { - for (String sidebarLine : sidebarLines) { - if (sidebarLine.contains("⏣")) location = sidebarLine; - if (sidebarLine.contains("ф")) location = sidebarLine; //Rift + for (String sidebarLine : STRING_SCOREBOARD) { + if (sidebarLine.contains("⏣") || sidebarLine.contains("ф") /* Rift */) { + return sidebarLine.strip(); } - if (location == null) location = "Unknown"; - location = location.strip(); } } catch (IndexOutOfBoundsException e) { LOGGER.error("[Skyblocker] Failed to get location from sidebar", e); } - return location; + return "Unknown"; } public static double getPurse() { String purseString = null; double purse = 0; - List sidebarLines = STRING_SCOREBOARD; try { - - if (sidebarLines != null) { - for (String sidebarLine : sidebarLines) { - if (sidebarLine.contains("Piggy:")) purseString = sidebarLine; - if (sidebarLine.contains("Purse:")) purseString = sidebarLine; - } + for (String sidebarLine : STRING_SCOREBOARD) { + if (sidebarLine.contains("Piggy:") || sidebarLine.contains("Purse:")) purseString = sidebarLine; } if (purseString != null) purse = Double.parseDouble(purseString.replaceAll("[^0-9.]", "").strip()); else purse = 0; @@ -233,12 +218,9 @@ public class Utils { public static int getBits() { int bits = 0; String bitsString = null; - List sidebarLines = STRING_SCOREBOARD; try { - if (sidebarLines != null) { - for (String sidebarLine : sidebarLines) { - if (sidebarLine.contains("Bits")) bitsString = sidebarLine; - } + for (String sidebarLine : STRING_SCOREBOARD) { + if (sidebarLine.contains("Bits")) bitsString = sidebarLine; } if (bitsString != null) { bits = Integer.parseInt(bitsString.replaceAll("[^0-9.]", "").strip()); @@ -253,25 +235,25 @@ public class Utils { try { TEXT_SCOREBOARD.clear(); STRING_SCOREBOARD.clear(); - + ClientPlayerEntity player = client.player; if (player == null) return; - + Scoreboard scoreboard = player.getScoreboard(); ScoreboardObjective objective = scoreboard.getObjectiveForSlot(ScoreboardDisplaySlot.FROM_ID.apply(1)); ObjectArrayList textLines = new ObjectArrayList<>(); ObjectArrayList stringLines = new ObjectArrayList<>(); - + for (ScoreboardPlayerScore score : scoreboard.getAllPlayerScores(objective)) { Team team = scoreboard.getPlayerTeam(score.getPlayerName()); - + if (team != null) { Text textLine = Text.empty().append(team.getPrefix().copy()).append(team.getSuffix().copy()); String strLine = team.getPrefix().getString() + team.getSuffix().getString(); - + if (!strLine.trim().isEmpty()) { String formatted = Formatting.strip(strLine); - + textLines.add(textLine); stringLines.add(formatted); } @@ -281,11 +263,11 @@ public class Utils { if (objective != null) { stringLines.add(objective.getDisplayName().getString()); textLines.add(Text.empty().append(objective.getDisplayName().copy())); - + Collections.reverse(stringLines); Collections.reverse(textLines); } - + TEXT_SCOREBOARD.addAll(textLines); STRING_SCOREBOARD.addAll(stringLines); } catch (NullPointerException e) { diff --git a/src/main/java/de/hysky/skyblocker/utils/discord/DiscordRPCManager.java b/src/main/java/de/hysky/skyblocker/utils/discord/DiscordRPCManager.java index 4f48a12f..df10a44d 100644 --- a/src/main/java/de/hysky/skyblocker/utils/discord/DiscordRPCManager.java +++ b/src/main/java/de/hysky/skyblocker/utils/discord/DiscordRPCManager.java @@ -107,13 +107,13 @@ public class DiscordRPCManager { switch (SkyblockerConfigManager.get().richPresence.info) { case BITS -> info = "Bits: " + DECIMAL_FORMAT.format(Utils.getBits()); case PURSE -> info = "Purse: " + DECIMAL_FORMAT.format(Utils.getPurse()); - case LOCATION -> info = Utils.getLocation(); + case LOCATION -> info = Utils.getIslandArea(); } } else if (SkyblockerConfigManager.get().richPresence.cycleMode) { switch (cycleCount) { case 0 -> info = "Bits: " + DECIMAL_FORMAT.format(Utils.getBits()); case 1 -> info = "Purse: " + DECIMAL_FORMAT.format(Utils.getPurse()); - case 2 -> info = Utils.getLocation(); + case 2 -> info = Utils.getIslandArea(); } } return info; -- cgit