aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/at/hannibal2/skyhanni/events/LorenzTickEvent.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/damageindicator/MobFinder.kt12
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonLividFinder.kt59
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/LorenzColor.kt40
4 files changed, 56 insertions, 57 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/events/LorenzTickEvent.kt b/src/main/java/at/hannibal2/skyhanni/events/LorenzTickEvent.kt
index ce9c57e97..5bf8d7c2e 100644
--- a/src/main/java/at/hannibal2/skyhanni/events/LorenzTickEvent.kt
+++ b/src/main/java/at/hannibal2/skyhanni/events/LorenzTickEvent.kt
@@ -2,4 +2,6 @@ package at.hannibal2.skyhanni.events
class LorenzTickEvent(private val tick: Int) : LorenzEvent() {
fun isMod(i: Int) = tick % i == 0
+
+ fun repeatSeconds(i: Int) = isMod(i * 20)
} \ No newline at end of file
diff --git a/src/main/java/at/hannibal2/skyhanni/features/damageindicator/MobFinder.kt b/src/main/java/at/hannibal2/skyhanni/features/damageindicator/MobFinder.kt
index 1a44a4bc6..6b1a4f41b 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/damageindicator/MobFinder.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/damageindicator/MobFinder.kt
@@ -174,7 +174,11 @@ class MobFinder {
if (DungeonData.isOneOf("F5", "M5")) {
if (entity is EntityOtherPlayerMP) {
if (entity == DungeonLividFinder.livid) {
- return EntityResult(bossType=BossType.DUNGEON_F5, ignoreBlocks = true, finalDungeonBoss = true)
+ return EntityResult(
+ bossType = BossType.DUNGEON_F5,
+ ignoreBlocks = true,
+ finalDungeonBoss = true
+ )
}
}
}
@@ -521,7 +525,7 @@ class MobFinder {
//F5
"§c[BOSS] Livid§r§f: This Orb you see, is Thorn, or what is left of him." -> {
- floor5lividEntity = findLivid()
+ floor5lividEntity = DungeonLividFinder.livid
floor5lividEntitySpawnTime = System.currentTimeMillis() + 13_000
}
@@ -578,8 +582,4 @@ class MobFinder {
}
}
}
-
- private fun findLivid(): EntityOtherPlayerMP? {
- return DungeonLividFinder.livid
- }
} \ No newline at end of file
diff --git a/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonLividFinder.kt b/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonLividFinder.kt
index 4933ffd21..369d6e762 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonLividFinder.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonLividFinder.kt
@@ -3,7 +3,7 @@ package at.hannibal2.skyhanni.features.dungeon
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.mixins.hooks.RenderLivingEntityHelper
import at.hannibal2.skyhanni.utils.BlockUtils.getBlockStateAt
-import at.hannibal2.skyhanni.utils.LorenzColor
+import at.hannibal2.skyhanni.utils.LorenzColor.Companion.toLorenzColor
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.LorenzVec
import net.minecraft.block.BlockStainedGlass
@@ -17,43 +17,44 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import java.awt.Color
object DungeonLividFinder {
- var livid : EntityOtherPlayerMP? = null
+ var livid: EntityOtherPlayerMP? = null
private var gotBlinded = false
+ private val blockLocation = LorenzVec(6, 109, 43)
+ private val lividColor = Color(191, 0, 255).rgb
@SubscribeEvent
- fun onTick(tickEvent: LorenzTickEvent) {
- if(!LorenzUtils.inDungeons || !DungeonData.inBossRoom) return
- if(DungeonData.dungeonFloor != "F5" && DungeonData.dungeonFloor != "M5") return
- if(DungeonData.dungeonFloor == "F5" && livid != null) return
- if(tickEvent.isMod(100)) return
- if(!gotBlinded) {
+ fun onTick(event: LorenzTickEvent) {
+ if (!LorenzUtils.inDungeons || !DungeonData.inBossRoom) return
+ if (DungeonData.dungeonFloor != "F5" && DungeonData.dungeonFloor != "M5") return
+ if (DungeonData.dungeonFloor == "F5" && livid != null) return
+ if (!event.repeatSeconds(2)) return
+ if (!gotBlinded) {
gotBlinded = Minecraft.getMinecraft().thePlayer.isPotionActive(Potion.blindness)
return
} else if (Minecraft.getMinecraft().thePlayer.isPotionActive(Potion.blindness)) return
+ val dyeColor = blockLocation.getBlockStateAt().getValue(BlockStainedGlass.COLOR)
+ val chatColor = dyeColor.toLorenzColor()?.getChatColor() ?: return
- val blockStateAt = LorenzVec(6, 109, 43).getBlockStateAt()
- val color = LorenzColor.getMatchingColor(blockStateAt.getValue(BlockStainedGlass.COLOR)) ?: return
+ val world = Minecraft.getMinecraft().theWorld
+ val lividEntity = world.loadedEntityList.filterIsInstance<EntityArmorStand>()
+ .firstOrNull { it.name.startsWith("${chatColor}﴾ ${chatColor}§lLivid") } ?: return
- for(entity in Minecraft.getMinecraft().theWorld.loadedEntityList) {
- if(entity is EntityArmorStand && entity.hasCustomName()) {
- if(entity.name.startsWith("${color.getChatColor()}﴾ ${color.getChatColor()}§lLivid")) {
- val aabb = AxisAlignedBB(
- entity.posX - 0.5,
- entity.posY - 2,
- entity.posZ - 0.5,
- entity.posX + 0.5,
- entity.posY,
- entity.posZ + 0.5
- )
- val entities = Minecraft.getMinecraft().theWorld.getEntitiesWithinAABB(EntityOtherPlayerMP::class.java, aabb)
- livid = entities.takeIf { it.size == 1 }?.firstOrNull() ?: return
- livid?.let {
- RenderLivingEntityHelper.setEntityColor(it, Color(0xBF00FF).rgb) { true }
- LorenzUtils.debug("Livid found!")
- }
- }
- }
+ val aabb = with(lividEntity) {
+ AxisAlignedBB(
+ posX - 0.5,
+ posY - 2,
+ posZ - 0.5,
+ posX + 0.5,
+ posY,
+ posZ + 0.5
+ )
+ }
+ livid = world.getEntitiesWithinAABB(EntityOtherPlayerMP::class.java, aabb)
+ .takeIf { it.size == 1 }?.firstOrNull() ?: return
+ livid?.let {
+ RenderLivingEntityHelper.setEntityColor(it, lividColor) { true }
+ LorenzUtils.debug("Livid found!")
}
}
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LorenzColor.kt b/src/main/java/at/hannibal2/skyhanni/utils/LorenzColor.kt
index 4199dd6d3..6fdfaa2af 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/LorenzColor.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/LorenzColor.kt
@@ -1,9 +1,7 @@
package at.hannibal2.skyhanni.utils
import at.hannibal2.skyhanni.test.command.CopyErrorCommand
-import net.minecraft.client.Minecraft
import net.minecraft.item.EnumDyeColor
-import net.minecraft.util.ChatComponentText
import java.awt.Color
enum class LorenzColor(private var chatColorCode: Char, private val color: Color) {
@@ -38,26 +36,24 @@ enum class LorenzColor(private var chatColorCode: Char, private val color: Color
}
companion object {
- fun getMatchingColor(enumDyeColor: EnumDyeColor): LorenzColor? {
- return when(enumDyeColor) {
- EnumDyeColor.WHITE -> WHITE
- EnumDyeColor.MAGENTA -> LIGHT_PURPLE
- EnumDyeColor.PINK -> LIGHT_PURPLE
- EnumDyeColor.RED -> RED
- EnumDyeColor.SILVER -> GRAY
- EnumDyeColor.GRAY -> GRAY
- EnumDyeColor.GREEN -> DARK_GREEN
- EnumDyeColor.LIME -> GREEN
- EnumDyeColor.BLUE -> BLUE
- EnumDyeColor.PURPLE -> DARK_PURPLE
- EnumDyeColor.YELLOW -> YELLOW
- else -> {
- CopyErrorCommand.logError(
- Exception("Unknown dye color: $enumDyeColor"),
- "Unknown dye color: $enumDyeColor"
- )
- return null
- }
+ fun EnumDyeColor.toLorenzColor() = when (this) {
+ EnumDyeColor.WHITE -> WHITE
+ EnumDyeColor.MAGENTA -> LIGHT_PURPLE
+ EnumDyeColor.PINK -> LIGHT_PURPLE
+ EnumDyeColor.RED -> RED
+ EnumDyeColor.SILVER -> GRAY
+ EnumDyeColor.GRAY -> GRAY
+ EnumDyeColor.GREEN -> DARK_GREEN
+ EnumDyeColor.LIME -> GREEN
+ EnumDyeColor.BLUE -> BLUE
+ EnumDyeColor.PURPLE -> DARK_PURPLE
+ EnumDyeColor.YELLOW -> YELLOW
+ else -> {
+ CopyErrorCommand.logError(
+ Exception("Unknown dye color: $this"),
+ "Unknown dye color: $this"
+ )
+ null
}
}
}