aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal00212@users.noreply.github.com>2022-09-30 01:40:46 +0200
committerhannibal2 <24389977+hannibal00212@users.noreply.github.com>2022-09-30 01:40:46 +0200
commitb0c0a89625d5ec1e41199981ab5f94a363b808de (patch)
treebc1ddf7e138fb626f11bdb6df2e8134c2eed9a65 /src/main/java/at/hannibal2/skyhanni
parent333cb46f87c255663294cf0368b20839039cfe42 (diff)
downloadskyhanni-b0c0a89625d5ec1e41199981ab5f94a363b808de.tar.gz
skyhanni-b0c0a89625d5ec1e41199981ab5f94a363b808de.tar.bz2
skyhanni-b0c0a89625d5ec1e41199981ab5f94a363b808de.zip
load shield from inventory
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/slayer/blaze/BlazeSlayerDaggerHelper.kt40
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/slayer/blaze/HellionShield.kt8
2 files changed, 42 insertions, 6 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 80c28f2cf..c9a010cef 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
@@ -4,6 +4,7 @@ import at.hannibal2.skyhanni.SkyHanniMod
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.getLore
import at.hannibal2.skyhanni.utils.ItemUtils.name
import at.hannibal2.skyhanni.utils.LocationUtils
import at.hannibal2.skyhanni.utils.LorenzUtils
@@ -36,7 +37,7 @@ class BlazeSlayerDaggerHelper {
if (!isEnabled()) return
val player = Minecraft.getMinecraft().thePlayer
- val dagger = getDaggerInHand(player.inventory.mainInventory[player.inventory.currentItem])
+ val dagger = getDaggerFromStack(player.inventory.mainInventory[player.inventory.currentItem])
if (dagger != null) {
setDaggerText(dagger)
return
@@ -113,14 +114,42 @@ class BlazeSlayerDaggerHelper {
lastDaggerCheck = System.currentTimeMillis()
for (dagger in Dagger.values()) {
+ if (dagger.updated) continue
+
val first = dagger.shields[0]
if (!first.active && !dagger.shields[1].active) {
- first.active = true
+
+ val shield = readFromInventory(dagger)
+ if (shield != null) {
+ shield.active = true
+ dagger.updated = true
+ } else {
+ first.active = true
+ }
+ }
+ }
+ }
+
+ private fun readFromInventory(dagger: Dagger): HellionShield? {
+ val player = Minecraft.getMinecraft().thePlayer
+ for (stack in player.inventory.mainInventory) {
+ val otherDagger = getDaggerFromStack(stack) ?: continue
+ if (dagger != otherDagger) continue
+ for (line in stack.getLore()) {
+ if (!line.contains("§7Attuned: ")) continue
+
+ for (shield in dagger.shields) {
+ if (line.contains(shield.cleanName)) {
+ return shield
+ }
+ }
}
}
+
+ return null
}
- private fun getDaggerInHand(stack: ItemStack?): Dagger? {
+ private fun getDaggerFromStack(stack: ItemStack?): Dagger? {
val itemName = stack?.name ?: ""
for (dagger in Dagger.values()) {
if (dagger.daggerNames.any { itemName.contains(it) }) {
@@ -145,6 +174,7 @@ class BlazeSlayerDaggerHelper {
if (shield.formattedName + "§r" == formattedText) {
Dagger.values().filter { shield in it.shields }.forEach {
it.shields.forEach { shield -> shield.active = false }
+ it.updated = true
}
shield.active = true
event.isCanceled = true
@@ -165,13 +195,13 @@ class BlazeSlayerDaggerHelper {
if (event.clickType != ItemClickInHandEvent.ClickType.RIGHT_CLICK) return
val itemInHand = event.itemInHand ?: return
- val dagger = getDaggerInHand(itemInHand)
+ val dagger = getDaggerFromStack(itemInHand)
dagger?.shields?.forEach { shield -> shield.active = !shield.active }
clientSideClicked = true
}
- enum class Dagger(val daggerNames: List<String>, vararg val shields: HellionShield) {
+ enum class Dagger(val daggerNames: List<String>, vararg val shields: HellionShield, var updated: Boolean = false) {
TWILIGHT(
listOf("Twilight Dagger", "Mawdredge Dagger", "Deathripper Dagger"),
HellionShield.SPIRIT,
diff --git a/src/main/java/at/hannibal2/skyhanni/features/slayer/blaze/HellionShield.kt b/src/main/java/at/hannibal2/skyhanni/features/slayer/blaze/HellionShield.kt
index dffd1ca90..3fee1e92f 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/slayer/blaze/HellionShield.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/slayer/blaze/HellionShield.kt
@@ -2,7 +2,13 @@ package at.hannibal2.skyhanni.features.slayer.blaze
import at.hannibal2.skyhanni.utils.LorenzColor
-enum class HellionShield(val formattedName: String, val cleanName: String, val color: LorenzColor, val chatColor: String = color.getChatColor(), var active: Boolean = false) {
+enum class HellionShield(
+ val formattedName: String,
+ val cleanName: String,
+ val color: LorenzColor,
+ val chatColor: String = color.getChatColor(),
+ var active: Boolean = false,
+) {
AURIC("§e§lAURIC", "Auric", LorenzColor.YELLOW),
ASHEN("§8§lASHEN", "Ashen", LorenzColor.DARK_GRAY),
SPIRIT("§f§lSPIRIT", "Spirit", LorenzColor.WHITE),