blob: ec722eed41bcef831b0428db253afb672fe56bf6 (
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
package at.hannibal2.skyhanni.features.misc
import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.events.RenderMobColoredEvent
import at.hannibal2.skyhanni.events.ResetEntityHurtEvent
import at.hannibal2.skyhanni.events.withAlpha
import at.hannibal2.skyhanni.utils.LorenzColor
import at.hannibal2.skyhanni.utils.LorenzUtils
import net.minecraft.client.Minecraft
import net.minecraft.client.entity.EntityOtherPlayerMP
import net.minecraftforge.event.world.WorldEvent
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import net.minecraftforge.fml.common.gameevent.TickEvent
class MarkedPlayerManager {
companion object {
val playerNamesToMark = mutableListOf<String>()
private val markedPlayers = mutableMapOf<String, EntityOtherPlayerMP>()
fun command(args: Array<String>) {
if (args.size != 1) {
LorenzUtils.chat("§cUsage: /shmarkplayer <name>")
return
}
val displayName = args[0]
val name = displayName.lowercase()
if (name == Minecraft.getMinecraft().thePlayer.name.lowercase()) {
LorenzUtils.chat("§c[SkyHanni] You can't add or remove yourself this way! Go to the settings and toggle 'Mark your own name'.")
return
}
if (name !in playerNamesToMark) {
playerNamesToMark.add(name)
findPlayers()
LorenzUtils.chat("§e[SkyHanni] §aMarked §eplayer §b$displayName§e!")
} else {
playerNamesToMark.remove(name)
markedPlayers.remove(name)
LorenzUtils.chat("§e[SkyHanni] §cUnmarked §eplayer §b$displayName§e!")
}
}
private fun findPlayers() {
for (entity in Minecraft.getMinecraft().theWorld.loadedEntityList) {
if (entity is EntityOtherPlayerMP) {
if (entity in markedPlayers.values) continue
val name = entity.name.lowercase()
if (name in playerNamesToMark) {
markedPlayers[name] = entity
}
}
}
}
fun isMarkedPlayer(player: String): Boolean = player.lowercase() in playerNamesToMark
fun toggleOwn() {
val ownName = SkyHanniMod.feature.markedPlayers.markOwnName
val name = Minecraft.getMinecraft().thePlayer.name
if (ownName) {
if (!playerNamesToMark.contains(name)) {
playerNamesToMark.add(name)
}
} else {
playerNamesToMark.remove(name)
}
}
}
var tick = 0
@SubscribeEvent
fun onTick(event: TickEvent.ClientTickEvent) {
if (!LorenzUtils.inSkyBlock) return
if (tick++ % 20 == 0) {
findPlayers()
}
}
@SubscribeEvent
fun onRenderMobColored(event: RenderMobColoredEvent) {
if (!LorenzUtils.inSkyBlock) return
if (!SkyHanniMod.feature.markedPlayers.highlightInWorld) return
val entity = event.entity
if (entity in markedPlayers.values) {
event.color = LorenzColor.YELLOW.toColor().withAlpha(127)
}
}
@SubscribeEvent
fun onResetEntityHurtTime(event: ResetEntityHurtEvent) {
if (!LorenzUtils.inSkyBlock) return
if (!SkyHanniMod.feature.markedPlayers.highlightInWorld) return
val entity = event.entity
if (entity in markedPlayers.values) {
event.shouldReset = true
}
}
@SubscribeEvent
fun onWorldChange(event: WorldEvent.Load) {
if (Minecraft.getMinecraft().thePlayer == null) return
markedPlayers.clear()
if (SkyHanniMod.feature.markedPlayers.markOwnName) {
val name = Minecraft.getMinecraft().thePlayer.name
if (!playerNamesToMark.contains(name)) {
playerNamesToMark.add(name)
}
}
}
}
|