diff options
author | Azure <156628929+azurejelly@users.noreply.github.com> | 2024-05-26 10:06:36 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-26 16:06:36 +0200 |
commit | 92fea8e9e211118937905dc56fff9b5faafdef23 (patch) | |
tree | a24f1f2dd1b69b5764435847c8cc9a7a35e8d12d | |
parent | bbf8a530599f84923167ceeab195a39205fa5131 (diff) | |
download | skyhanni-92fea8e9e211118937905dc56fff9b5faafdef23.tar.gz skyhanni-92fea8e9e211118937905dc56fff9b5faafdef23.tar.bz2 skyhanni-92fea8e9e211118937905dc56fff9b5faafdef23.zip |
Feature: Line to Arachne (#1888)
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/config/features/combat/MobsConfig.java | 6 | ||||
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/combat/mobs/MobHighlight.kt | 38 |
2 files changed, 43 insertions, 1 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/MobsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/MobsConfig.java index abda26077..9d26facfa 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/combat/MobsConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/MobsConfig.java @@ -58,6 +58,12 @@ public class MobsConfig { public boolean arachneBossHighlighter = true; @Expose + @ConfigOption(name = "Line to Arachne", desc = "Draw a line pointing to where Arachne is currently at.") + @ConfigEditorBoolean + @FeatureToggle + public boolean lineToArachne = false; + + @Expose @ConfigOption( name = "Area Boss Timer", desc = "Show a timer when Area Bosses respawn. " + diff --git a/src/main/java/at/hannibal2/skyhanni/features/combat/mobs/MobHighlight.kt b/src/main/java/at/hannibal2/skyhanni/features/combat/mobs/MobHighlight.kt index 9303fc45e..d5cc0ed9e 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/combat/mobs/MobHighlight.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/combat/mobs/MobHighlight.kt @@ -3,14 +3,20 @@ package at.hannibal2.skyhanni.features.combat.mobs import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.events.EntityHealthUpdateEvent import at.hannibal2.skyhanni.events.EntityMaxHealthUpdateEvent +import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent +import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent import at.hannibal2.skyhanni.mixins.hooks.RenderLivingEntityHelper import at.hannibal2.skyhanni.utils.ColorUtils.withAlpha import at.hannibal2.skyhanni.utils.EntityUtils.getBlockInHand import at.hannibal2.skyhanni.utils.EntityUtils.hasNameTagWith +import at.hannibal2.skyhanni.utils.LocationUtils.distanceToPlayer import at.hannibal2.skyhanni.utils.LorenzColor import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.LorenzUtils.baseMaxHealth import at.hannibal2.skyhanni.utils.LorenzUtils.ignoreDerpy +import at.hannibal2.skyhanni.utils.RenderUtils.draw3DLine +import at.hannibal2.skyhanni.utils.RenderUtils.exactPlayerEyeLocation +import at.hannibal2.skyhanni.utils.getLorenzVec import net.minecraft.client.entity.EntityOtherPlayerMP import net.minecraft.entity.EntityLivingBase import net.minecraft.entity.monster.EntityCaveSpider @@ -22,6 +28,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent class MobHighlight { private val config get() = SkyHanniMod.feature.combat.mobs + private var arachne: EntityLivingBase? = null @SubscribeEvent fun onEntityHealthUpdate(event: EntityHealthUpdateEvent) { @@ -95,12 +102,40 @@ class MobHighlight { } } - if (config.arachneBossHighlighter && entity is EntitySpider) { + if (entity is EntitySpider) { checkArachne(entity) } } + @SubscribeEvent + fun onWorldRender(event: LorenzRenderWorldEvent) { + if (!LorenzUtils.inSkyBlock || !config.lineToArachne) return + + val arachne = arachne ?: return + if (arachne.isDead || arachne.health <= 0) { + this.arachne = null + return + } + + if (arachne.distanceToPlayer() > 10) return + + event.draw3DLine( + event.exactPlayerEyeLocation(), + arachne.getLorenzVec().add(y = 1), + LorenzColor.RED.toColor(), + 5, + true + ) + } + + @SubscribeEvent + fun onWorldChange(event: LorenzWorldChangeEvent) { + arachne = null + } + private fun checkArachne(entity: EntitySpider) { + if (!config.arachneBossHighlighter && !config.lineToArachne) return + if (!entity.hasNameTagWith(1, "[§7Lv300§8] §cArachne") && !entity.hasNameTagWith(1, "[§7Lv300§8] §lArachne") && !entity.hasNameTagWith(1, "[§7Lv500§8] §cArachne") && @@ -110,6 +145,7 @@ class MobHighlight { if (entity is EntityCaveSpider) { markArachneMinis(entity) } else if (entity.baseMaxHealth == 20_000 || entity.baseMaxHealth == 100_000) { + this.arachne = entity markArachne(entity) } } |