aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/com/dulkirfabric/util
diff options
context:
space:
mode:
authorronald <inglettronald@gmail.com>2023-07-29 00:13:53 -0500
committerronald <inglettronald@gmail.com>2023-07-29 00:13:53 -0500
commitd3e13e38e22b8eecd5198c59cf6a132cc9425b33 (patch)
treee70a8fdc86d00cf22a281fcde09b856f09b45a11 /src/main/kotlin/com/dulkirfabric/util
parent71b8238eff91de0243e641c2eeadacd61b8f0f88 (diff)
downloadDulkirMod-Fabric-d3e13e38e22b8eecd5198c59cf6a132cc9425b33.tar.gz
DulkirMod-Fabric-d3e13e38e22b8eecd5198c59cf6a132cc9425b33.tar.bz2
DulkirMod-Fabric-d3e13e38e22b8eecd5198c59cf6a132cc9425b33.zip
Lots of slayer backend and a smattering of random features (Lightning/fire culling, chat stacking improvements, aotv highlight stuff, etc)
Diffstat (limited to 'src/main/kotlin/com/dulkirfabric/util')
-rw-r--r--src/main/kotlin/com/dulkirfabric/util/ScoreBoardUtils.kt26
-rw-r--r--src/main/kotlin/com/dulkirfabric/util/Utils.kt13
2 files changed, 34 insertions, 5 deletions
diff --git a/src/main/kotlin/com/dulkirfabric/util/ScoreBoardUtils.kt b/src/main/kotlin/com/dulkirfabric/util/ScoreBoardUtils.kt
index fb2f967..c62cbab 100644
--- a/src/main/kotlin/com/dulkirfabric/util/ScoreBoardUtils.kt
+++ b/src/main/kotlin/com/dulkirfabric/util/ScoreBoardUtils.kt
@@ -2,6 +2,8 @@ package com.dulkirfabric.util
import com.dulkirfabric.DulkirModFabric
import com.dulkirfabric.events.LongUpdateEvent
+import com.dulkirfabric.events.PlaySoundEvent
+import com.dulkirfabric.events.SlayerBossEvents
import meteordevelopment.orbit.EventHandler
import net.minecraft.scoreboard.Team
import net.minecraft.text.StringVisitable
@@ -13,6 +15,7 @@ import java.util.*
object ScoreBoardUtils {
var hasActiveSlayerQuest = false
+ var slayerType: String? = ""
/**
* Gets Scoreboard lines, will return null if not in Skyblock.
@@ -77,8 +80,27 @@ object ScoreBoardUtils {
@EventHandler
fun updateUtility(event: LongUpdateEvent) {
val lines = getLines() ?: return
- hasActiveSlayerQuest = lines.any {
- it.contains("Slayer Quest")
+ lines.forEach {
+ when {
+ it.contains("Slayer Quest") -> {
+ hasActiveSlayerQuest = true
+ val i = lines.indexOf(it) + 1
+ if (i == 0) return err()
+ slayerType = lines[i]
+ }
+ }
}
}
+
+ @EventHandler
+ fun onSound(event: PlaySoundEvent) {
+ if (event.sound.id.path != "entity.wither.shoot") return
+ if (event.sound.pitch != 0.6984127f) return
+ if (event.sound.volume != .5f) return
+ SlayerBossEvents.Spawn(slayerType?: return err()).post()
+ }
+
+ fun err() {
+ TextUtils.info("ยง6Error Determining active slayer type, please report.")
+ }
} \ No newline at end of file
diff --git a/src/main/kotlin/com/dulkirfabric/util/Utils.kt b/src/main/kotlin/com/dulkirfabric/util/Utils.kt
index 93597d2..1f781d3 100644
--- a/src/main/kotlin/com/dulkirfabric/util/Utils.kt
+++ b/src/main/kotlin/com/dulkirfabric/util/Utils.kt
@@ -1,6 +1,9 @@
package com.dulkirfabric.util
import com.dulkirfabric.events.PlaySoundEvent
+import com.dulkirfabric.events.SlayerBossEvents
+import com.dulkirfabric.events.chat.ChatEvents
+import meteordevelopment.orbit.EventHandler
import net.minecraft.entity.Entity
import net.minecraft.util.math.Vec3d
@@ -13,9 +16,7 @@ object Utils {
* Prints relevant information about a sound that is being displayed
*/
fun debugSound(event: PlaySoundEvent) {
- if (event.sound.id.path == "entity.player.hurt"
- && event.sound.pitch == 0f
- && event.sound.volume == 0f) return
+ if (event.sound.id.path == "entity.player.hurt") return
println("Path: ${event.sound.id.path}")
println("Pitch: ${event.sound.pitch}")
println("Volume: ${event.sound.volume}")
@@ -32,4 +33,10 @@ object Utils {
val prevPos = Vec3d(this.prevX, this.prevY, this.prevZ)
return lerp(prevPos, this.pos, tickDelta)
}
+
+ @EventHandler
+ fun detectSlayerKill(event: ChatEvents.AllowChat) {
+ if (event.message.string.trim() != "SLAYER QUEST COMPLETE!") return
+ SlayerBossEvents.Kill(ScoreBoardUtils.slayerType?: return ScoreBoardUtils.err()).post()
+ }
} \ No newline at end of file