diff options
author | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2023-11-04 00:22:08 -0400 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2023-11-04 00:22:08 -0400 |
commit | ce11f3c78910f27534d2d2aba76d17857757edde (patch) | |
tree | b791820fd82f6df3bf775227797c51b6bb2b9245 /src | |
parent | de47c578ae91187d143dae07b06b1cac0496ea82 (diff) | |
download | Skyblocker-ce11f3c78910f27534d2d2aba76d17857757edde.tar.gz Skyblocker-ce11f3c78910f27534d2d2aba76d17857757edde.tar.bz2 Skyblocker-ce11f3c78910f27534d2d2aba76d17857757edde.zip |
Add Livid Highlight
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/dungeon/LividColor.java | 40 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/dungeon/StarredMobGlow.java | 15 |
2 files changed, 47 insertions, 8 deletions
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 588140be..a8428ff6 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/LividColor.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/LividColor.java @@ -4,12 +4,33 @@ import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.utils.Utils; import de.hysky.skyblocker.utils.scheduler.MessageScheduler; import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; +import net.minecraft.block.Block; +import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; +import net.minecraft.entity.Entity; import net.minecraft.registry.Registries; +import net.minecraft.text.Text; +import net.minecraft.text.TextColor; +import net.minecraft.util.Formatting; import net.minecraft.util.math.BlockPos; +import java.util.List; +import java.util.Map; + public class LividColor { + private static final Map<Block, Formatting> WOOL_TO_FORMATTING = Map.of( + Blocks.WHITE_WOOL, Formatting.WHITE, + Blocks.MAGENTA_WOOL, Formatting.LIGHT_PURPLE, + Blocks.RED_WOOL, Formatting.RED, + Blocks.GRAY_WOOL, Formatting.GRAY, + Blocks.GREEN_WOOL, Formatting.DARK_GREEN, + Blocks.LIME_WOOL, Formatting.GREEN, + Blocks.BLUE_WOOL, Formatting.BLUE, + Blocks.PURPLE_WOOL, Formatting.DARK_PURPLE, + Blocks.YELLOW_WOOL, Formatting.YELLOW + ); private static int tenTicks = 0; + private static Formatting color; public static void init() { ClientReceiveMessageEvents.GAME.register((message, overlay) -> { @@ -24,12 +45,12 @@ public class LividColor { if (tenTicks != 0) { if (SkyblockerConfigManager.get().locations.dungeons.lividColor.enableLividColor && Utils.isInDungeons() && client.world != null) { if (tenTicks == 1) { - onLividColorFound("red"); + onLividColorFound(Blocks.RED_WOOL); return; } - String key = Registries.BLOCK.getId(client.world.getBlockState(new BlockPos(5, 110, 42)).getBlock()).getPath(); - if (key.endsWith("wool") && !key.equals("red_wool")) { - onLividColorFound(key.substring(0, key.length() - 5)); + Block color = client.world.getBlockState(new BlockPos(5, 110, 42)).getBlock(); + if (WOOL_TO_FORMATTING.containsKey(color) && !color.equals(Blocks.RED_WOOL)) { + onLividColorFound(color); return; } tenTicks--; @@ -39,8 +60,15 @@ public class LividColor { } } - private static void onLividColorFound(String color) { - MessageScheduler.INSTANCE.sendMessageAfterCooldown(SkyblockerConfigManager.get().locations.dungeons.lividColor.lividColorText.replace("[color]", color)); + private static void onLividColorFound(Block color) { + LividColor.color = WOOL_TO_FORMATTING.get(color); + String colorString = Registries.BLOCK.getId(color).getPath(); + MessageScheduler.INSTANCE.sendMessageAfterCooldown(SkyblockerConfigManager.get().locations.dungeons.lividColor.lividColorText.replace("[color]", colorString.substring(0, colorString.length() - 5))); tenTicks = 0; } + + public static boolean shouldGlow(Entity armorStand) { + List<Text> nameTexts = armorStand.getName().getSiblings(); + return !nameTexts.isEmpty() && nameTexts.get(0).getStyle().getColor() == TextColor.fromFormatting(color); + } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/StarredMobGlow.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/StarredMobGlow.java index 2072017d..db478b7c 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/StarredMobGlow.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/StarredMobGlow.java @@ -8,6 +8,7 @@ import net.minecraft.entity.passive.BatEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.util.math.Box; +import net.minecraft.world.World; import java.util.List; @@ -23,13 +24,19 @@ public class StarredMobGlow { case "Lost Adventurer", "Shadow Assassin", "Diamond Guy" -> { return true; } + default -> { + List<ArmorStandEntity> armorStands = getArmorStands(entity.getWorld(), box); + + if (!armorStands.isEmpty() && LividColor.shouldGlow(armorStands.get(0))) { + return true; + } + } } } // Regular Mobs if (!(entity instanceof ArmorStandEntity)) { - Box searchBox = box.expand(0, 2, 0); - List<ArmorStandEntity> armorStands = entity.getWorld().getEntitiesByClass(ArmorStandEntity.class, searchBox, EntityPredicates.NOT_MOUNTED); + List<ArmorStandEntity> armorStands = getArmorStands(entity.getWorld(), box); if (!armorStands.isEmpty() && armorStands.get(0).getName().getString().contains("✯")) return true; } @@ -41,6 +48,10 @@ public class StarredMobGlow { return false; } + private static List<ArmorStandEntity> getArmorStands(World world, Box box) { + return world.getEntitiesByClass(ArmorStandEntity.class, box.expand(0, 2, 0), EntityPredicates.NOT_MOUNTED); + } + public static int getGlowColor(Entity entity) { if (entity instanceof PlayerEntity) { return switch (entity.getName().getString()) { |