blob: 38c62a7bb037011bb845be540275d4f3df3c265d (
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
|
package com.dulkirfabric.util
import com.dulkirfabric.DulkirModFabric.mc
import com.dulkirfabric.events.AreaChangeEvent
import com.dulkirfabric.events.LongUpdateEvent
import meteordevelopment.orbit.EventHandler
import net.minecraft.client.network.PlayerListEntry
object TablistUtils {
var tablist: List<PlayerListEntry>? = null
private val areaPattern = "Area: (.+)".toRegex()
private val speedPattern = "^Speed: (.+)".toRegex()
private val visitorPattern = "Visitors: \\((.+)\\)".toRegex()
private val compostTimePattern = "Time Left: (.+)".toRegex()
data class PersistentInfo(
var area: String = "",
var speed: String = "",
var numVisitors: Int = 0,
var nextVisitorTime: String = "",
var compostTime: String = ""
)
var persistentInfo: PersistentInfo = PersistentInfo()
@EventHandler
fun onLongUpdate(event: LongUpdateEvent) {
if (mc.player == null) return
tablist = mc.inGameHud.playerListHud.collectPlayerEntries()
updatePersistentData()
}
private fun updatePersistentData() {
if (tablist == null) return
tablist!!.forEach {
val str = it.displayName?.string?.trim() ?: return@forEach
areaPattern.find(str)?.let { result ->
if (persistentInfo.area != result.groupValues[1]) {
AreaChangeEvent(result.groupValues[1], persistentInfo.area).post()
persistentInfo.area = result.groupValues[1]
}
return@forEach
}
speedPattern.matchEntire(str)?.let { result ->
persistentInfo.speed = result.groupValues[1]
return@forEach
}
visitorPattern.matchEntire(str)?.let { result ->
persistentInfo.nextVisitorTime = result.groupValues[1]
var index = tablist!!.indexOf(it) + 1
var visitors = 0
while (tablist!!.get(index).displayName?.string != "") {
index++
visitors++
}
persistentInfo.numVisitors = visitors
return@forEach
}
compostTimePattern.matchEntire(str)?.let { result ->
persistentInfo.compostTime = result.groupValues[1]
return@forEach
}
}
}
}
|