diff options
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/slayer')
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/slayer/HideMobNames.kt | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/slayer/HideMobNames.kt b/src/main/java/at/hannibal2/skyhanni/features/slayer/HideMobNames.kt new file mode 100644 index 000000000..383419cda --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/slayer/HideMobNames.kt @@ -0,0 +1,87 @@ +package at.hannibal2.skyhanni.features.slayer + +import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.utils.LorenzUtils +import net.minecraft.entity.EntityLivingBase +import net.minecraft.entity.item.EntityArmorStand +import net.minecraftforge.client.event.RenderLivingEvent +import net.minecraftforge.fml.common.eventhandler.EventPriority +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import java.util.regex.Pattern + +class HideMobNames { + + private val lastMobName = mutableMapOf<EntityArmorStand, String>() + private val mobNamesHidden = mutableListOf<EntityArmorStand>() + private val patterns = mutableListOf<Pattern>() + + init { + addMobToHide("Zombie") + addMobToHide("Zombie") + addMobToHide("Zombie Villager") + addMobToHide("Crypt Ghoul") + + addMobToHide("Dasher Spider") + addMobToHide("Weaver Spider") + addMobToHide("Splitter Spider") + addMobToHide("Voracious Spider") + addMobToHide("Silverfish") + + addMobToHide("Wolf") + addMobToHide("§bHowling Spirit") + addMobToHide("§bPack Spirit") + + addMobToHide("Enderman") + addMobToHide("Voidling Fanatic") + + addMobToHide("Blaze") // 1.2m + addMobToHide("Mutated Blaze") // 1.5m + addMobToHide("Bezal") // 2m + addMobToHide("Smoldering Blaze") // 5.5m + } + + private fun addMobToHide(bossName: String) { + patterns.add(Pattern.compile("§8\\[§7Lv(\\d+)§8] §c$bossName§r §[ae](.+)§f/§a(.+)§c❤")) + } + + @SubscribeEvent(priority = EventPriority.HIGH) + fun onRenderLiving(event: RenderLivingEvent.Specials.Pre<EntityLivingBase>) { + if (!LorenzUtils.inSkyblock) return + if (!SkyHanniMod.feature.slayer.hideMobNames) return + + val entity = event.entity + if (entity !is EntityArmorStand) return + if (!entity.hasCustomName()) return + + val name = entity.name + if (lastMobName.getOrDefault(entity, "abc") == name) { + if (entity in mobNamesHidden) { + event.isCanceled = true + } + return + } + + lastMobName[entity] = name + mobNamesHidden.remove(entity) + + if (shouldNameBeHidden(name)) { + event.isCanceled = true + mobNamesHidden.add(entity) + } + } + + private fun shouldNameBeHidden(name: String): Boolean { + for (pattern in patterns) { + val matcher = pattern.matcher(name) + if (matcher.matches()) { + val min = matcher.group(2) + val max = matcher.group(3) + if (min == max || min == "0") { + return true + } + } + } + + return false + } +}
\ No newline at end of file |
