From 6a057410182ca7671215e6fecc9e289e50ceb0fc Mon Sep 17 00:00:00 2001 From: Lorenz Date: Tue, 16 Aug 2022 02:32:07 +0200 Subject: hide damage splashes around damage indicator --- .../damageindicator/BossDamageIndicator.kt | 27 ++++++++++++++++++++++ .../skyhanni/damageindicator/DamageCounter.kt | 9 ++++++++ .../skyhanni/damageindicator/EntityData.kt | 3 ++- .../skyhanni/damageindicator/OldDamage.kt | 4 ++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/main/java/at/hannibal2/skyhanni/damageindicator/DamageCounter.kt create mode 100644 src/main/java/at/hannibal2/skyhanni/damageindicator/OldDamage.kt (limited to 'src/main/java/at/hannibal2/skyhanni/damageindicator') diff --git a/src/main/java/at/hannibal2/skyhanni/damageindicator/BossDamageIndicator.kt b/src/main/java/at/hannibal2/skyhanni/damageindicator/BossDamageIndicator.kt index 0841984d3..4f372bee8 100644 --- a/src/main/java/at/hannibal2/skyhanni/damageindicator/BossDamageIndicator.kt +++ b/src/main/java/at/hannibal2/skyhanni/damageindicator/BossDamageIndicator.kt @@ -13,17 +13,21 @@ import at.hannibal2.skyhanni.utils.LorenzUtils.removeColor import net.minecraft.client.Minecraft import net.minecraft.client.renderer.GlStateManager import net.minecraft.entity.EntityLivingBase +import net.minecraft.entity.item.EntityArmorStand import net.minecraft.entity.monster.EntityEnderman import net.minecraft.entity.monster.EntityMagmaCube import net.minecraft.entity.monster.EntityZombie import net.minecraft.entity.passive.EntityWolf +import net.minecraftforge.client.event.RenderLivingEvent import net.minecraftforge.client.event.RenderWorldLastEvent import net.minecraftforge.event.entity.EntityJoinWorldEvent import net.minecraftforge.event.world.WorldEvent +import net.minecraftforge.fml.common.eventhandler.EventPriority import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import net.minecraftforge.fml.common.gameevent.TickEvent import java.text.DecimalFormat import java.util.* +import java.util.regex.Pattern import kotlin.math.max class BossDamageIndicator { @@ -32,6 +36,7 @@ class BossDamageIndicator { private var bossFinder: BossFinder? = null private val decimalFormat = DecimalFormat("0.0") private val maxHealth = mutableMapOf() + private val damagePattern = Pattern.compile("✧?(\\d+[⚔+✧❤♞☄✷ﬗ]*)") @SubscribeEvent fun onWorldLoad(event: WorldEvent.Load) { @@ -445,4 +450,26 @@ class BossDamageIndicator { fun onWorldRender(event: EntityJoinWorldEvent) { bossFinder?.handleNewEntity(event.entity) } + + @SubscribeEvent(priority = EventPriority.HIGHEST) + fun onRenderLiving(e: RenderLivingEvent.Specials.Pre) { + if (!SkyHanniMod.feature.misc.damageIndicatorHideDamageSplash) return + + val entity = e.entity + if (entity.ticksExisted > 300 || entity !is EntityArmorStand) return + if (!entity.hasCustomName()) return + if (entity.isDead) return + val strippedName = entity.customNameTag.removeColor() + val damageMatcher = damagePattern.matcher(strippedName) + if (damageMatcher.matches()) { + if (data.values.any { + val distance = it.entity.getLorenzVec().distance(entity.getLorenzVec()) + val found = distance < 4.5 + found + }) { + e.isCanceled = true + } + } + } + } \ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/damageindicator/DamageCounter.kt b/src/main/java/at/hannibal2/skyhanni/damageindicator/DamageCounter.kt new file mode 100644 index 000000000..a7732a8a9 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/damageindicator/DamageCounter.kt @@ -0,0 +1,9 @@ +package at.hannibal2.skyhanni.damageindicator + +class DamageCounter { + + var currentDamage = 0L + var oldDamages = mutableListOf() + var firstTick = 0L + +} \ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/damageindicator/EntityData.kt b/src/main/java/at/hannibal2/skyhanni/damageindicator/EntityData.kt index 2f2738095..f1514ae93 100644 --- a/src/main/java/at/hannibal2/skyhanni/damageindicator/EntityData.kt +++ b/src/main/java/at/hannibal2/skyhanni/damageindicator/EntityData.kt @@ -9,6 +9,7 @@ class EntityData( var delayedStart: Long, val finalDungeonBoss: Boolean, val bossType: BossType, + val damageCounter: DamageCounter = DamageCounter(), var lastHealth: Int = 0, var healthText: String = "", @@ -17,5 +18,5 @@ class EntityData( var namePrefix: String = "", var nameSuffix: String = "", var dead: Boolean = false, - var deathLocation: LorenzVec? = null + var deathLocation: LorenzVec? = null, ) \ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/damageindicator/OldDamage.kt b/src/main/java/at/hannibal2/skyhanni/damageindicator/OldDamage.kt new file mode 100644 index 000000000..20fb9cbfa --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/damageindicator/OldDamage.kt @@ -0,0 +1,4 @@ +package at.hannibal2.skyhanni.damageindicator + +class OldDamage(val time: Long, val damage: Long) { +} \ No newline at end of file -- cgit