diff options
author | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2022-09-29 19:36:01 +0200 |
---|---|---|
committer | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2022-09-29 19:36:01 +0200 |
commit | 7c4744d520ba965f3bd937f4511a6873d69701c6 (patch) | |
tree | 8e3b5e63f76a497e8ab5c5807f3498572cf98175 /src/main/java/at/hannibal2/skyhanni/features/slayer | |
parent | f94ed94adc7bb33d5a766e782f06a3ffc5730c78 (diff) | |
download | skyhanni-7c4744d520ba965f3bd937f4511a6873d69701c6.tar.gz skyhanni-7c4744d520ba965f3bd937f4511a6873d69701c6.tar.bz2 skyhanni-7c4744d520ba965f3bd937f4511a6873d69701c6.zip |
right dagger overlay
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/slayer')
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/slayer/blaze/BlazeSlayerDaggerHelper.kt | 102 |
1 files changed, 83 insertions, 19 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/slayer/blaze/BlazeSlayerDaggerHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/slayer/blaze/BlazeSlayerDaggerHelper.kt index bcdbbc8e2..a16d85a00 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/slayer/blaze/BlazeSlayerDaggerHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/slayer/blaze/BlazeSlayerDaggerHelper.kt @@ -5,8 +5,10 @@ import at.hannibal2.skyhanni.config.core.util.render.TextRenderUtils import at.hannibal2.skyhanni.events.ItemClickInHandEvent import at.hannibal2.skyhanni.events.PacketEvent import at.hannibal2.skyhanni.utils.ItemUtils.name +import at.hannibal2.skyhanni.utils.LocationUtils import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.NumberUtil.roundToPrecision +import at.hannibal2.skyhanni.utils.getLorenzVec import net.minecraft.client.Minecraft import net.minecraft.client.gui.ScaledResolution import net.minecraft.client.renderer.GlStateManager @@ -19,13 +21,15 @@ import org.lwjgl.input.Keyboard class BlazeSlayerDaggerHelper { - var clientSideClicked = false - var textTopLeft = "" - var textTopRight = "" - var textBottomLeft = "" - var textBottomRight = "" + private var clientSideClicked = false + private var textTopLeft = "" + private var textTopRight = "" + private var textBottomLeft = "" + private var textBottomRight = "" - var lastCheck = 0L + private var lastDaggerCheck = 0L + private var lastNearestCheck = 0L + private var lastNearest: HellionShield? = null @SubscribeEvent fun onTick(event: TickEvent.ClientTickEvent) { @@ -46,17 +50,33 @@ class BlazeSlayerDaggerHelper { private fun setDaggerText(holding: Dagger) { checkActiveDagger() + lastNearest = findNearest() val first = Dagger.TWILIGHT val second = Dagger.FIREDUST - textTopLeft = format(holding, true, first) - textTopRight = format(holding, true, second) - textBottomLeft = format(holding, false, first) - textBottomRight = format(holding, false, second) + textTopLeft = format(holding, true, first, lastNearest) + textTopRight = format(holding, true, second, lastNearest) + textBottomLeft = format(holding, false, first, lastNearest) + textBottomRight = format(holding, false, second, lastNearest) } - private fun format(dagger: Dagger, active: Boolean, compareInHand: Dagger): String { + private fun findNearest(): HellionShield? { + if (!SkyHanniMod.feature.slayer.blazeMarkRightHellionShield) return null + + if (lastNearestCheck + 100 > System.currentTimeMillis()) return lastNearest + lastNearestCheck = System.currentTimeMillis() + + + val playerLocation = LocationUtils.playerLocation() + return HellionShieldHelper.hellionShieldMobs + .filter { it.key.getLorenzVec().distance(playerLocation) < 10 && it.key.health > 0 } + .toSortedMap { a, b -> + if (a.getLorenzVec().distance(playerLocation) < b.getLorenzVec().distance(playerLocation)) 1 else 0 + }.firstNotNullOfOrNull { it.value } + } + + private fun format(dagger: Dagger, active: Boolean, compareInHand: Dagger, nearestShield: HellionShield?): String { var daggerInHand = dagger val inHand = dagger == compareInHand @@ -70,16 +90,28 @@ class BlazeSlayerDaggerHelper { } return if (inHand && active) { - "§7[" + shield.chatColor + shield.cleanName + "§7]" + if (nearestShield == null) { + "§7[" + shield.chatColor + shield.cleanName + "§7]" + } else { + if ((shield == nearestShield)) { + "§a[" + shield.chatColor + shield.cleanName.uppercase() + "§a]" + } else { + "§c[§m" + shield.chatColor + shield.cleanName + "§c]" + } + } } else { - shield.chatColor + shield.cleanName + if (shield == nearestShield) { + "§6[" + shield.chatColor + shield.cleanName + "§6]" + } else { + shield.chatColor + shield.cleanName + } } } private fun checkActiveDagger() { - if (lastCheck + 1_000 > System.currentTimeMillis()) return - lastCheck = System.currentTimeMillis() + if (lastDaggerCheck + 1_000 > System.currentTimeMillis()) return + lastDaggerCheck = System.currentTimeMillis() for (dagger in Dagger.values()) { val first = dagger.shields[0] @@ -191,25 +223,57 @@ class BlazeSlayerDaggerHelper { GlStateManager.pushMatrix() GlStateManager.translate(((width / 2) / 1.18).toFloat(), (height / 3.8).toFloat(), 0.0f) GlStateManager.scale(4.0f, 4.0f, 4.0f) - TextRenderUtils.drawStringCenteredScaledMaxWidth(textTopLeft, renderer, 0f, 0f, false, (60f * sizeFactor).toInt(), 0) + TextRenderUtils.drawStringCenteredScaledMaxWidth( + textTopLeft, + renderer, + 0f, + 0f, + false, + (60f * sizeFactor).toInt(), + 0 + ) GlStateManager.popMatrix() GlStateManager.pushMatrix() GlStateManager.translate(((width / 2) * 1.18).toFloat(), (height / 3.8).toFloat(), 0.0f) GlStateManager.scale(4.0f, 4.0f, 4.0f) - TextRenderUtils.drawStringCenteredScaledMaxWidth(textTopRight, renderer, 0f, 0f, false, (60f * sizeFactor).toInt(), 0) + TextRenderUtils.drawStringCenteredScaledMaxWidth( + textTopRight, + renderer, + 0f, + 0f, + false, + (60f * sizeFactor).toInt(), + 0 + ) GlStateManager.popMatrix() GlStateManager.pushMatrix() GlStateManager.translate(((width / 2) / 1.18).toFloat(), (height / 3.0).toFloat(), 0.0f) GlStateManager.scale(4.0f, 4.0f, 4.0f) - TextRenderUtils.drawStringCenteredScaledMaxWidth(textBottomLeft, renderer, 0f, 0f, false, (20f * sizeFactor).toInt(), 0) + TextRenderUtils.drawStringCenteredScaledMaxWidth( + textBottomLeft, + renderer, + 0f, + 0f, + false, + (20f * sizeFactor).toInt(), + 0 + ) GlStateManager.popMatrix() GlStateManager.pushMatrix() GlStateManager.translate(((width / 2) * 1.18).toFloat(), (height / 3.0).toFloat(), 0.0f) GlStateManager.scale(4.0f, 4.0f, 4.0f) - TextRenderUtils.drawStringCenteredScaledMaxWidth(textBottomRight, renderer, 0f, 0f, false, (20f * sizeFactor).toInt(), 0) + TextRenderUtils.drawStringCenteredScaledMaxWidth( + textBottomRight, + renderer, + 0f, + 0f, + false, + (20f * sizeFactor).toInt(), + 0 + ) GlStateManager.popMatrix() } } |