aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-11-04 00:22:08 -0400
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-11-04 00:22:08 -0400
commitce11f3c78910f27534d2d2aba76d17857757edde (patch)
treeb791820fd82f6df3bf775227797c51b6bb2b9245 /src
parentde47c578ae91187d143dae07b06b1cac0496ea82 (diff)
downloadSkyblocker-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.java40
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/StarredMobGlow.java15
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()) {