From 130377f112ac4c64c138e15b2541d95381964c6a Mon Sep 17 00:00:00 2001 From: ronald Date: Sat, 29 Jul 2023 12:30:06 -0500 Subject: Slayer Boss Timer and clean Blaze boss impl --- .../com/dulkirfabric/features/slayer/BossTimer.kt | 24 +++++++++++++++++ .../com/dulkirfabric/features/slayer/Demonlord.kt | 30 ++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/main/kotlin/com/dulkirfabric/features/slayer/BossTimer.kt (limited to 'src/main/kotlin/com/dulkirfabric/features') diff --git a/src/main/kotlin/com/dulkirfabric/features/slayer/BossTimer.kt b/src/main/kotlin/com/dulkirfabric/features/slayer/BossTimer.kt new file mode 100644 index 0000000..c08ed97 --- /dev/null +++ b/src/main/kotlin/com/dulkirfabric/features/slayer/BossTimer.kt @@ -0,0 +1,24 @@ +package com.dulkirfabric.features.slayer + +import com.dulkirfabric.events.SlayerBossEvents +import com.dulkirfabric.util.TextUtils +import meteordevelopment.orbit.EventHandler + +object BossTimer { + + private var lastSpawnTime: Long = 0 + private var lastType = "" + + @EventHandler + fun onSlayerStart(event: SlayerBossEvents.Spawn) { + lastType = event.type + lastSpawnTime = event.timestamp + } + + @EventHandler + fun onSlayerKill(event: SlayerBossEvents.Kill) { + if (lastType != event.type) return + val bossTime: Float = (event.timestamp - lastSpawnTime) / 1000f + TextUtils.info("§6Slayer Boss took ${"%.2f".format(bossTime)}s to kill.") + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/dulkirfabric/features/slayer/Demonlord.kt b/src/main/kotlin/com/dulkirfabric/features/slayer/Demonlord.kt index 434c866..b9d03d1 100644 --- a/src/main/kotlin/com/dulkirfabric/features/slayer/Demonlord.kt +++ b/src/main/kotlin/com/dulkirfabric/features/slayer/Demonlord.kt @@ -1,7 +1,10 @@ package com.dulkirfabric.features.slayer import com.dulkirfabric.DulkirModFabric.mc +import com.dulkirfabric.config.DulkirConfig +import com.dulkirfabric.events.AddParticleEvent import com.dulkirfabric.events.PlaySoundEvent +import com.dulkirfabric.events.SlayerBossEvents import com.dulkirfabric.events.WorldRenderLastEvent import com.dulkirfabric.util.TablistUtils import com.dulkirfabric.util.TextUtils @@ -21,6 +24,8 @@ object Demonlord { "SPIRIT ♨" to Color(255, 255, 255, 255) ) private val box = Box(-.5, -.4, -.5, .5, -1.9, .5) + private var inBoss: Boolean = false + private var lastSpawnTime: Long = 0 @EventHandler fun attunementHighlight(event: WorldRenderLastEvent) { @@ -40,4 +45,29 @@ object Demonlord { } } } + + @EventHandler + fun onSlayerStart(event: SlayerBossEvents.Spawn) { + if (event.type.contains("Demonlord")) { + inBoss = true + lastSpawnTime = event.timestamp + } + } + + @EventHandler + fun onSlayerKill(event: SlayerBossEvents.Kill) { + inBoss = false + } + + @EventHandler + fun onSlayerFail(event: SlayerBossEvents.Fail) { + inBoss = false + } + + @EventHandler + fun onParticle(event: AddParticleEvent) { + if (!DulkirConfig.configOptions.cleanBlaze) return + if (!inBoss) return + event.cancel() + } } \ No newline at end of file -- cgit