blob: 5ca8d1e4bc14e3d03cae6358f5a64cf17215fb92 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
package com.ambientaddons.features.kuudra
import AmbientAddons.Companion.config
import AmbientAddons.Companion.mc
import com.ambientaddons.events.BossStatusEvent
import com.ambientaddons.utils.Area
import com.ambientaddons.utils.Extensions.stripControlCodes
import com.ambientaddons.utils.SBLocation
import net.minecraft.entity.boss.BossStatus
import net.minecraft.entity.monster.EntityGhast
import net.minecraft.util.Vec3
import net.minecraftforge.client.event.RenderWorldLastEvent
import net.minecraftforge.event.world.WorldEvent
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
object KuudraFeatures {
private val dropships = mutableSetOf<EntityGhast>()
private fun colorizeHealth(healthFraction: Float) = when {
healthFraction > 0.75F -> "§a"
healthFraction > 0.50F -> "§e"
healthFraction > 0.25F -> "§6"
else -> "§e"
}
@SubscribeEvent
fun onBossBarSet(event: BossStatusEvent) {
if (!config.kuudraHp || SBLocation.area != Area.Kuudra) return
val bossData = event.displayData
if (bossData.displayName.unformattedText.stripControlCodes().contains("Kuudra")) {
val healthFraction = bossData.health / bossData.maxHealth
BossStatus.healthScale = healthFraction
BossStatus.statusBarTime = 100
val percentString = String.format("%.1f", healthFraction * 100)
BossStatus.bossName =
"${bossData.displayName.formattedText} §r§8 - §r${colorizeHealth(healthFraction)} ${percentString}%"
event.isCanceled = true
}
}
@SubscribeEvent
fun onWorldUnload(event: WorldEvent.Unload) {
dropships.clear()
}
@SubscribeEvent
fun onRenderWorldLast(event: RenderWorldLastEvent) {
if (!config.kuudraAlert || SBLocation.area != Area.Kuudra) return
mc.theWorld.loadedEntityList.forEach {
if (it !is EntityGhast || dropships.contains(it)) return@forEach
if (it.positionVector.squareDistanceTo(Vec3(-101.0, 100.0, -106.0)) < 225) {
mc.ingameGUI.displayTitle("§cDropship!", null, 5, 40, 5)
mc.thePlayer.playSound("random.orb", 1f, 0.5f)
dropships.add(it)
}
}
}
}
|