aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/kotlin/com/dulkirfabric/Registrations.kt2
-rw-r--r--src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt13
-rw-r--r--src/main/kotlin/com/dulkirfabric/features/filters/DamageNumbers.kt78
-rw-r--r--src/main/kotlin/com/dulkirfabric/features/slayer/Demonlord.kt12
4 files changed, 102 insertions, 3 deletions
diff --git a/src/main/kotlin/com/dulkirfabric/Registrations.kt b/src/main/kotlin/com/dulkirfabric/Registrations.kt
index f0f8a8d..777cf6e 100644
--- a/src/main/kotlin/com/dulkirfabric/Registrations.kt
+++ b/src/main/kotlin/com/dulkirfabric/Registrations.kt
@@ -10,6 +10,7 @@ import com.dulkirfabric.features.*
import com.dulkirfabric.features.chat.AbiPhoneDND
import com.dulkirfabric.features.chat.BridgeBotFormatter
import com.dulkirfabric.features.filters.CullExplosionParticles
+import com.dulkirfabric.features.filters.DamageNumbers
import com.dulkirfabric.features.filters.Lightning
import com.dulkirfabric.features.slayer.BossTimer
import com.dulkirfabric.features.slayer.Demonlord
@@ -91,6 +92,7 @@ object Registrations {
EVENT_BUS.subscribe(Lightning)
EVENT_BUS.subscribe(Utils)
EVENT_BUS.subscribe(BossTimer)
+ EVENT_BUS.subscribe(DamageNumbers)
if (FabricLoader.getInstance().isDevelopmentEnvironment)
EVENT_BUS.subscribe(RenderTest)
diff --git a/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt b/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
index 8dbca32..c4cbd86 100644
--- a/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
+++ b/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
@@ -25,7 +25,6 @@ import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import me.shedaniel.clothconfig2.api.ConfigBuilder
-import meteordevelopment.orbit.EventHandler
import moe.nea.jarvis.api.Point
import net.minecraft.client.gui.screen.Screen
import net.minecraft.client.util.InputUtil
@@ -119,6 +118,15 @@ class DulkirConfig {
entryBuilder.mkToggle(Text.literal("Hide Lightning (SkyBlock only)"), configOptions::hideLightning)
)
general.addEntry(
+ entryBuilder.mkToggle(Text.literal("Hide Non-Crits"), configOptions::hideNonCrits)
+ )
+ general.addEntry(
+ entryBuilder.mkToggle(Text.literal("Hide Crits"), configOptions::hideCrits)
+ )
+ general.addEntry(
+ entryBuilder.mkToggle(Text.literal("Truncate Crits"), configOptions::truncateDamage)
+ )
+ general.addEntry(
entryBuilder.startIntSlider(Text.literal("Anti Downtime Alarm"), configOptions.alarmTimeout, 0, 1000)
.setSaveConsumer {
configOptions.alarmTimeout = it
@@ -328,6 +336,9 @@ class DulkirConfig {
var hideLightning: Boolean = false,
var cleanBlaze: Boolean= false,
var timeSlayerBoss: Boolean = false,
+ var hideNonCrits: Boolean = false,
+ var truncateDamage: Boolean = false,
+ var hideCrits: Boolean = false
)
@Serializable
diff --git a/src/main/kotlin/com/dulkirfabric/features/filters/DamageNumbers.kt b/src/main/kotlin/com/dulkirfabric/features/filters/DamageNumbers.kt
new file mode 100644
index 0000000..0f94a80
--- /dev/null
+++ b/src/main/kotlin/com/dulkirfabric/features/filters/DamageNumbers.kt
@@ -0,0 +1,78 @@
+package com.dulkirfabric.features.filters
+
+import com.dulkirfabric.DulkirModFabric.mc
+import com.dulkirfabric.config.DulkirConfig
+import com.dulkirfabric.events.WorldRenderLastEvent
+import meteordevelopment.orbit.EventHandler
+import net.minecraft.entity.decoration.ArmorStandEntity
+import net.minecraft.text.Text
+
+object DamageNumbers {
+
+ private val nonCritFormat = """^(\d{1,3}(,\d{3})*|\d+)$""".toRegex()
+ private val trimPattern = "[✧,]".toRegex()
+ private val critColorList = listOf(
+ "§e", "§f", "§c", "§6"
+ )
+ @EventHandler
+ fun worldLast(event: WorldRenderLastEvent) {
+ val ents = mc.world?.entities ?: return
+ ents.forEach {
+ if (it !is ArmorStandEntity) return@forEach
+ if (!it.isMarker) return@forEach
+ if (!it.hasCustomName()) return@forEach
+ if (!it.isCustomNameVisible) return@forEach
+ val name = it.customName?.string ?: return@forEach
+ if (name matches nonCritFormat && DulkirConfig.configOptions.hideNonCrits) {
+ it.isCustomNameVisible = false
+ }
+ if (name.startsWith('✧')) {
+ if (DulkirConfig.configOptions.hideCrits) {
+ it.isCustomNameVisible = false
+ return@forEach
+ }
+ if (!DulkirConfig.configOptions.truncateDamage) return@forEach
+ val critAmount = name.replace(trimPattern, "").toInt()
+ it.customName = Text.literal(truncate(critAmount).applyDulkirCritColors())
+ }
+ }
+ }
+
+ /**
+ * Truncate any positive int
+ */
+ private fun truncate(value: Int): String {
+ val str = value.toString()
+ return when {
+ str.length > 9 -> {
+ val i = str.length - 9
+ "✧ ${str.substring(0, i)}.${str[i]}B ✧"
+ }
+
+ str.length > 6 -> {
+ val i = str.length - 6
+ "✧ ${str.substring(0, i)}.${str[i]}M ✧"
+ }
+
+ str.length > 3 -> {
+ val i = str.length - 3
+ "✧ ${str.substring(0, i)}.${str[i]}K✧"
+ }
+
+ else -> "✧ $str ✧"
+ }
+ }
+
+ private fun String.applyDulkirCritColors(): String {
+ val sb = StringBuilder()
+ var i = 0
+ for (char in this) {
+ if (char != ' ') {
+ sb.append(critColorList[i % critColorList.size])
+ i++
+ }
+ sb.append(char)
+ }
+ return sb.toString()
+ }
+} \ 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 b9d03d1..e79a5ae 100644
--- a/src/main/kotlin/com/dulkirfabric/features/slayer/Demonlord.kt
+++ b/src/main/kotlin/com/dulkirfabric/features/slayer/Demonlord.kt
@@ -3,16 +3,16 @@ 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.EntityLoadEvent
import com.dulkirfabric.events.SlayerBossEvents
import com.dulkirfabric.events.WorldRenderLastEvent
import com.dulkirfabric.util.TablistUtils
import com.dulkirfabric.util.TextUtils
-import com.dulkirfabric.util.Utils.debugSound
import com.dulkirfabric.util.Utils.getInterpolatedPos
import com.dulkirfabric.util.render.WorldRenderUtils
import meteordevelopment.orbit.EventHandler
import net.minecraft.entity.decoration.ArmorStandEntity
+import net.minecraft.entity.projectile.SmallFireballEntity
import net.minecraft.util.math.Box
import java.awt.Color
@@ -70,4 +70,12 @@ object Demonlord {
if (!inBoss) return
event.cancel()
}
+
+ @EventHandler
+ fun onEntityLoad(event: EntityLoadEvent) {
+ if (!DulkirConfig.configOptions.cleanBlaze) return
+ if (!inBoss) return
+ if (event.entity is SmallFireballEntity)
+ event.entity.kill()
+ }
} \ No newline at end of file