From 646eaeee8a30b4edf82b2b401e930adf6627f65e Mon Sep 17 00:00:00 2001 From: Yasin Date: Tue, 23 Jul 2024 00:04:37 +0200 Subject: livid fix now it will only highlight the correct livid also after the "change" --- .../skyblocker/skyblock/dungeon/LividColor.java | 23 +++++++++++++++++++++- .../skyblock/entity/MobBoundingBoxes.java | 2 +- .../hysky/skyblocker/skyblock/entity/MobGlow.java | 7 +++---- 3 files changed, 26 insertions(+), 6 deletions(-) (limited to 'src/main/java/de/hysky') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/LividColor.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/LividColor.java index 15d0d6dd..d360ae2e 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/LividColor.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/LividColor.java @@ -46,10 +46,12 @@ public class LividColor { ); public static final Set LIVID_NAMES = Set.copyOf(LIVID_TO_FORMATTING.keySet()); public static final DungeonsConfig.Livid CONFIG = SkyblockerConfigManager.get().dungeons.livid; - private static Formatting color; + private static Formatting color = Formatting.AQUA; private static Block lastColor = Blocks.AIR; + private static int lividID = 0; private static boolean isInitialized = false; + private static boolean originLividFound = false; private static final long OFFSET_DURATION = 2000; private static long toggleTime = 0; @@ -74,6 +76,18 @@ public class LividColor { isInitialized = true; } else if (isInitialized && System.currentTimeMillis() - toggleTime >= OFFSET_DURATION) { onLividColorFound(client, currentColor); + if (!originLividFound) { + String lividName = LIVID_TO_FORMATTING.entrySet().stream() + .filter(entry -> entry.getValue() == color) + .map(Map.Entry::getKey) + .findFirst() + .orElse("unknown"); + client.world.getPlayers().stream() + .filter(entity -> entity.getName().getString().equals(lividName)) + .findFirst() + .ifPresent(entity -> lividID = entity.getId()); + originLividFound = true; + } lastColor = currentColor; } @@ -114,9 +128,16 @@ public class LividColor { return Formatting.WHITE.getColorValue(); } + public static int getLividID(){ + return lividID; + } + private static void reset() { lastColor = Blocks.AIR; toggleTime = 0; isInitialized = false; + originLividFound = false; + lividID = 0; + color = Formatting.AQUA; } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/entity/MobBoundingBoxes.java b/src/main/java/de/hysky/skyblocker/skyblock/entity/MobBoundingBoxes.java index da6e0226..b7b3e0e0 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/entity/MobBoundingBoxes.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/entity/MobBoundingBoxes.java @@ -32,7 +32,7 @@ public class MobBoundingBoxes { return switch (entity) { case PlayerEntity _p when name.equals("Lost Adventurer") || name.equals("Shadow Assassin") || name.equals("Diamond Guy") -> SkyblockerConfigManager.get().dungeons.starredMobBoundingBoxes; - case PlayerEntity p when LividColor.LIVID_NAMES.contains(name) -> LividColor.shouldDrawBoundingBox(name); + case PlayerEntity p when entity.getId() == LividColor.getLividID() -> LividColor.shouldDrawBoundingBox(name); case ArmorStandEntity _armorStand -> false; // Regular Mobs diff --git a/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java b/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java index d1a7b83c..1322004e 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java @@ -36,7 +36,7 @@ public class MobGlow { return switch (entity) { // Minibosses case PlayerEntity p when name.equals("Lost Adventurer") || name.equals("Shadow Assassin") || name.equals("Diamond Guy") -> SkyblockerConfigManager.get().dungeons.starredMobGlow; - case PlayerEntity p when LividColor.LIVID_NAMES.contains(name) -> LividColor.shouldGlow(name); + case PlayerEntity p when entity.getId() == LividColor.getLividID() -> LividColor.shouldGlow(name); // Bats case BatEntity b -> SkyblockerConfigManager.get().dungeons.starredMobGlow || SkyblockerConfigManager.get().dungeons.starredMobBoundingBoxes; @@ -49,7 +49,6 @@ public class MobGlow { }; } - return switch (entity) { // Rift case PlayerEntity p when Utils.isInTheRift() && !entity.isInvisible() && name.equals("Blobbercyst ") -> SkyblockerConfigManager.get().otherLocations.rift.blobbercystGlow; @@ -111,11 +110,11 @@ public class MobGlow { case PlayerEntity p when name.equals("Lost Adventurer") -> 0xfee15c; case PlayerEntity p when name.equals("Shadow Assassin") -> 0x5b2cb2; case PlayerEntity p when name.equals("Diamond Guy") -> 0x57c2f7; - case PlayerEntity p when LividColor.LIVID_NAMES.contains(name) -> LividColor.getGlowColor(name); + case PlayerEntity p when entity.getId() == LividColor.getLividID() -> LividColor.getGlowColor(name); case PlayerEntity p when name.equals("Blobbercyst ") -> Formatting.GREEN.getColorValue(); case EndermanEntity enderman when TheEnd.isSpecialZealot(enderman) -> Formatting.RED.getColorValue(); - case ArmorStandEntity armorStand when isNukekubiHead(armorStand) -> 0x990099; + case ArmorStandEntity armorStand when isNukekubiHead(armorStand) -> Formatting.GREEN.getColorValue(); case ZombieEntity zombie when Utils.isInCrimson() && DojoManager.inArena -> DojoManager.getColor(); default -> 0xf57738; -- cgit