Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions dotman-plugin/src/main/java/net/minevn/dotman/commands/AdminCmd.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,17 @@ import net.minevn.dotman.DotMan.Companion.transactional
import net.minevn.dotman.TopupType
import net.minevn.dotman.database.ConfigDAO
import net.minevn.dotman.database.LogDAO
import net.minevn.dotman.database.PlayerDataDAO
import net.minevn.dotman.database.PlayerInfoDAO
import net.minevn.dotman.utils.Utils.Companion.format
import net.minevn.dotman.utils.Utils.Companion.makePagination
import net.minevn.dotman.utils.Utils.Companion.runNotSync
import net.minevn.dotman.utils.Utils.Companion.send
import net.minevn.libs.bukkit.asString
import net.minevn.libs.bukkit.chat.ChatListener
import net.minevn.libs.bukkit.command
import org.bukkit.Bukkit
import org.bukkit.command.CommandSender
import org.bukkit.entity.Player
import java.time.LocalDate
import java.time.format.DateTimeParseException
Expand All @@ -28,6 +31,7 @@ class AdminCmd {
addSubCommand(history(), "lichsu", "history")
addSubCommand(napThuCong(), "napthucong", "manual")
addSubCommand(traCuuGiaoDich(), "tracuugd", "magiaodich")
addSubCommand(clearPlayerData(), "cleardata")

action {
sender.sendMessage("§b§lCác lệnh của plugin DotMan")
Expand Down Expand Up @@ -314,6 +318,78 @@ class AdminCmd {
}
}

private fun clearPlayerData() = command {
val usage = "<tên người chơi>"
description("Xóa toàn bộ dữ liệu của người chơi")

/**
* Chức năng chính của command
*/
fun removePlayerData(sender: CommandSender, playerName: String) {
val infoDao = PlayerInfoDAO.getInstance()
val dataDao = PlayerDataDAO.getInstance()
runNotSync { transactional {
try {
val uuid = infoDao.getUUID(playerName) ?: run {
sender.send("§cNgười chơi $playerName không tồn tại. Có thể họ chưa vào server bao giờ?")
return@transactional
}

val deletedCount = dataDao.deleteAllDataByUuid(uuid)
if (deletedCount > 0) {
sender.send("§aĐã xóa toàn bộ dữ liệu của người chơi §b$playerName")
} else {
sender.send("§cNgười chơi §b$playerName§c hiện không có dữ liệu để xóa")
}
} catch (e: Exception) {
sender.send("§cCó lỗi xảy ra: ${e.message} (chi tiết hãy xem Console và báo lỗi cho MineVN Studio)")
throw e
}
}}
}

Comment thread
amadeusmz marked this conversation as resolved.
tabComplete {
when {
args.isEmpty() -> emptyList()
args.size == 1 -> Bukkit.getOnlinePlayers().map { it.name }
.filter { it.lowercase().startsWith(args.last().lowercase()) }
else -> emptyList()
}
}

action {
if (args.isEmpty()) {
sender.send("§cCách dùng: /$commandTree $usage")
return@action
}

val playerName = args.first()
val player = sender as? Player ?: run {
// Nếu lệnh chạy trên console thì bỏ qua confirm
removePlayerData(sender, playerName)
return@action
}

// Nếu gõ lệnh này trong server thì yêu cầu xác nhận
player.send("§cBạn sắp xóa toàn bộ dữ liệu của người chơi §b$playerName§c.")
player.send("§eNhập §a§lXACNHAN §eđể xác nhận, hoặc nhập §c§lHUY §eđể hủy bỏ")

ChatListener(player) {
if (message.equals("huy", true)) {
player.send("§aĐã hủy bỏ xóa dữ liệu")
return@ChatListener
}

if (!message.equals("XACNHAN", true)) {
player.send("§cXác nhận không hợp lệ. Đã hủy bỏ xóa dữ liệu")
return@ChatListener
}

removePlayerData(sender, playerName)
}
}
Comment thread
amadeusmz marked this conversation as resolved.
}

/**
* Removes and returns the first argument from the list if it exists and is not an option flag.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ abstract class PlayerDataDAO : DataAccess() {
abstract fun getDataScript(): String
abstract fun getSumDataScript(): String
abstract fun getAllDataScript(): String
Comment thread
minhh2792 marked this conversation as resolved.
abstract fun deleteAllDataByUuidScript(): String

fun insertData(uuid: String, key: String, value: Int) {
insertDataScript().statement {
Expand Down Expand Up @@ -68,4 +69,11 @@ abstract class PlayerDataDAO : DataAccess() {
}.toMap()
}
}

fun deleteAllDataByUuid(uuid: String): Int {
return deleteAllDataByUuidScript().statement {
setString(1, uuid)
update()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,9 @@ class PlayerDataDAOImpl : PlayerDataDAO() {
FROM "dotman_player_data"
WHERE "uuid" = ?;
""".trimIndent()

override fun deleteAllDataByUuidScript() = """
DELETE FROM "dotman_player_data"
WHERE "uuid" = ?;
""".trimIndent()
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,9 @@ class PlayerDataDAOImpl : PlayerDataDAO() {
FROM `dotman_player_data`
WHERE `uuid` = ?;
""".trimIndent()

override fun deleteAllDataByUuidScript() = """
DELETE FROM `dotman_player_data`
WHERE `uuid` = ?;
""".trimIndent()
}
Loading