MDRanks/src/main/kotlin/pw/hamzantal/mdranks/MDRanks.kt

105 lines
2.7 KiB
Kotlin

package pw.hamzantal.mdranks
import hazae41.minecraft.kutils.bukkit.BukkitPlugin
import hazae41.minecraft.kutils.bukkit.command
import hazae41.minecraft.kutils.bukkit.listen
import hazae41.minecraft.kutils.bukkit.msg
import hazae41.minecraft.kutils.get
import org.bukkit.Bukkit
import org.bukkit.entity.Player
import org.bukkit.event.player.PlayerJoinEvent
import pw.hamzantal.mdranks.api.Perms
import pw.hamzantal.mdranks.api.RankType
import pw.hamzantal.mdranks.api.Vault
import pw.hamzantal.mdranks.commands.checkBalance
import pw.hamzantal.mdranks.commands.onPrestige
import pw.hamzantal.mdranks.commands.onRankUp
import pw.hamzantal.mdranks.commands.onRebirth
class MDRanks : BukkitPlugin() {
companion object {
lateinit var pl: MDRanks
}
val ranksFile = dataFolder["ranks.yml"]
override fun onEnable() {
pl = this
saveDefaultConfig()
listen<PlayerJoinEvent> {
val p = it.player
val lvl = Perms.reg(p)
if (lvl == 0)
Vault.updateRank(p, RankType.REG, 1)
val regLevel = Perms.reg(p)
val prLevel = Perms.prestige(p)
val rbLevel = Perms.rebirth(p)
Ranks[p, "regular"] = regLevel
Ranks[p, "prestige"] = prLevel
Ranks[p, "rebirth"] = rbLevel
}
command("mdranks") { sender, args ->
if (!sender.hasPermission("mdranks.admin")) {
sender.err("no_access")
return@command
}
if (args.size == 2) {
val (player, toReset) = args
val p = Bukkit.getPlayer(player)?: run {
sender.err("player_not_found")
return@command
}
}
if (args.size < 3) {
sender.err("mdranks_usage")
return@command
}
val (player, type, num) = args
val p = Bukkit.getPlayer(player) ?: run {
sender.err("player_not_found")
return@command
}
val rank = RankType.byArg(type) ?: run {
sender.sendMessage("rank_not_found")
return@command
}
val level = num.toIntOrNull() ?: 0
Vault.updateRank(p, rank, level, true)
sender.success(
"update_player_rank_sender",
"player" to p.name,
"rank" to rank.rankName,
"level" to "$level"
)
p.general(
"update_player_rank_receiver",
"rank" to rank.rankName,
"level" to "$level"
)
}
command("rankup") { args ->
onRankUp(this, args)
}
command("prestige") { args ->
onPrestige(this, args)
}
command("rebirth") { _ ->
onRebirth(this)
}
command("bal") { args -> checkBalance(this, args) }
command("rebirthtop") { _ ->
msg("&a&m-------&f&m-------&a&m-------&f&m-------&a&m-------&f&m-------&a&m-------")
Ranks.top.forEachIndexed { i, rank ->
msg("&f&l#${i + 1}. &a${rank.name} &8» &7${rank.rebirth} Rebirth${if (rank.rebirth != 1) "s" else ""}")
}
msg("&a&m-------&f&m-------&a&m-------&f&m-------&a&m-------&f&m-------&a&m-------")
}
if (isPapi) PapiExpansion().register()
}
}