aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/dulkirmod/command/LeapNameCommand.kt
blob: b7156b74507dbcc53105e968faef3951adb608ed (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
package dulkirmod.command

import dulkirmod.DulkirMod
import dulkirmod.config.Config
import dulkirmod.utils.TabListUtils
import net.minecraft.command.CommandException
import net.minecraft.command.ICommandSender
import net.minecraft.util.ChatComponentText

class LeapNameCommand : ClientCommandBase("hl") {
    @Throws(CommandException::class)
    override fun processCommand(sender: ICommandSender, args: Array<String>) {
        if (args.isEmpty()) {
            DulkirMod.mc.thePlayer.addChatMessage(
                ChatComponentText("${DulkirMod.CHAT_PREFIX} §6Please give a username or class argument for who you want to be highlighted.")
            )
            DulkirMod.mc.thePlayer.addChatMessage(
                ChatComponentText("${DulkirMod.CHAT_PREFIX} §7 - Class argument will take the first person tab list with that class.")
            )
            DulkirMod.mc.thePlayer.addChatMessage(
                ChatComponentText("${DulkirMod.CHAT_PREFIX} §7 - example: §f/hl h§7, §f/hl tank§7, or §f/hl Tazboi§7.")
            )
            DulkirMod.mc.thePlayer.addChatMessage(
                ChatComponentText("${DulkirMod.CHAT_PREFIX} §7 - This command will need to be ran again if some person of class §fX §7leaves and a new one joins.")
            )
            return
        }

        val username = args[0].lowercase()

        var isClassName = true
        var foundPlayer = when (username) {
            "h", "healer" -> findUserNameFor("(Healer", true)
            "b", "berserk" -> findUserNameFor("(Berserk", true)
            "m", "mage" -> findUserNameFor("(Mage", true)
            "t", "tank" -> findUserNameFor("(Tank", true)
            "a", "archer" -> findUserNameFor("(Archer", true)
            else -> {
                isClassName = false
                findUserNameFor(username, false)
            }
        }

        if (foundPlayer) {
            DulkirMod.mc.thePlayer.addChatMessage(
                ChatComponentText("${DulkirMod.CHAT_PREFIX} §6Selected Leap Highlight for username: §f${Config.highlightLeapName}§6.")
            )
        }
    }
    private fun findUserNameFor(input: String, isClassName: Boolean): Boolean {
        val scoreboardList: List<String?> = TabListUtils.fetchTabEntires().map {
            it.displayName?.unformattedText
        }
        if (isClassName) {
            for (l in scoreboardList) {
                if (l != null && l.contains(input)) {
                    val strArr = l.split(" ")
                    Config.highlightLeapName = strArr[1]
                    return true
                }
            }
            DulkirMod.mc.thePlayer.addChatMessage(
                ChatComponentText("${DulkirMod.CHAT_PREFIX} §6Couldn't find anyone playing this class.")
            )
            return false
        } else {
            for (l in scoreboardList) {
                if (l == null) continue
                val strArr = l.split(" ")
                // another safety check, probably not necessary but oh well
                if (strArr.size < 2) continue
                val username = strArr[1]
                if (username.lowercase() == input.lowercase()) {
                    Config.highlightLeapName = username
                    return true
                }
            }
            DulkirMod.mc.thePlayer.addChatMessage(
                ChatComponentText("${DulkirMod.CHAT_PREFIX} §6Couldn't find anyone with this username on tab list.")
            )
            return false
        }
    }

}