simply-minecraft-db/src/main/kotlin/net/hareworks/simplymcdb/Command.kt
2024-12-04 18:47:46 +09:00

203 lines
12 KiB
Kotlin

package net.hareworks.simplymcdb.command
import com.github.michaelbull.result.*
import net.hareworks.kommandlib.*
import net.hareworks.simplymcdb.*
import net.hareworks.simplymcdb.database.Database
import net.kyori.adventure.audience.Audience
import net.kyori.adventure.text.minimessage.MiniMessage
import org.bukkit.entity.Player
public fun Audience.sendMM(message: String) {
this.sendMessage(MiniMessage.miniMessage().deserialize(message))
}
val command_buffer = mutableMapOf<java.util.UUID, String>()
public val smcdb =
Route("smcdb") { sender, _ -> sender.sendMessage("simptlymcdb command") }
.addArgs(
Route("config") { sender, _ ->
(sender as Player).performCommand("smcdb config help")
}
.addArgs(
Route("reload") { sender, _ ->
sender.sendMessage("reloading config...")
Config.reload()
sender.sendMessage("reloaded.")
},
Route("fetch") { sender, _ ->
sender.sendMessage("fetching config...")
},
Route("upload") { sender, _ ->
sender.sendMessage("uploading config...")
},
Route("help") { sender, _ ->
var help =
MiniMessage.miniMessage()
.deserialize(
"<red>simplymcdb config help<newline><gray>reload: <green>reload the config from config.yml<newline><gray>fetch: <green>fetch the config from the database<newline><gray>upload: <green>upload the current config to the database"
)
sender.sendMessage(help)
}
),
Route("help") { sender, _ ->
sender.sendMM(
"<red>simplymcdb help<newline><gray>config: <green>configre the plugin<newline><gray>activate: <green>when the plugin is disabled, activate it<newline><gray>deactivate: <green>when the plugin is enabled, deactivate it"
)
},
Route("activate") { sender, _ ->
if (App.instance.enabled == State.ACTIVE) {
sender.sendMessage("simplymcdb is already enabled.")
return@Route
}
App.instance.enable()
sender.sendMessage("simplymcdb enabled.")
},
Route("deactivate") { sender, _ ->
if (App.instance.enabled == State.DISABLED) {
sender.sendMessage("simplymcdb is already disabled.")
return@Route
}
App.instance.disable()
sender.sendMessage("simplymcdb disabled.")
},
Route("database") { _, _ -> }
.addArgs(
Route("init") { sender, _ ->
Database.initialize()
sender.sendMessage("database initialized.")
},
Route("reset") { sender, _ ->
Database.reset()
sender.sendMessage("database reset.")
},
),
Route("check") { sender, _ ->
sender.sendMM(
"${when (App.instance.enabled) {
State.ACTIVE -> "<green>●"
State.DISCONNECTED -> "<yellow>■"
State.DISABLED -> "<red>○"
}}<white> simply-minecraft-database"
)
sender.sendMM(
"status: ${when (App.instance.enabled) {
State.ACTIVE -> "<green>active"
State.DISCONNECTED -> "<yellow>disconnected"
State.DISABLED -> "<red>disabled"}}"
)
sender.sendMM(
"<gray>- <white>database test: ${if (Database.ping()) "success" else "failed"}"
)
sender.sendMM(
"<gray>- <white>config test: ${if (Config.config.getBoolean("enabled")) "enabled" else "disabled"}"
)
},
Route("register") { sender, _ ->
if (sender !is Player) {
sender.sendMM("This command is only available for players.")
return@Route
} else
when (App.instance.enabled) {
State.DISABLED ->
sender.sendMM(
"<red>[SMCDB] simplymcdb is disabled.<br>Run /smcdb check to check the status."
)
State.DISCONNECTED ->
sender.sendMM(
"<red>[SMCDB] simplymcdb is enabled but disconnected.<br>Run /smcdb check to check the status."
)
else -> {
if (!isRegistered(sender.uniqueId)) {
sender.sendMM(
"<gray>[SMCDB] <red>The inventory of the other servers will be overwritten.<newline>" +
"Are you sure you want to register?<newline>" +
"<green>/smcdb confirm<gray> to confirm."
)
} else {
sender.sendMM("<gray>[SMCDB] You are already registered.")
}
}
}
},
Route("confirm") { sender, _ ->
if (sender !is Player) return@Route
when (command_buffer[sender.uniqueId]) {
"register" -> {
if (App.instance.enabled == State.ACTIVE) {
register(sender)
sender.sendMM("<gray>[SMCDB] Successfully registered.")
} else {
sender.sendMM("<red>[SMCDB] simplymcdb is disabled.")
}
}
else -> {
sender.sendMM("<red>[SMCDB] Invalid command.")
}
}
command_buffer.remove(sender.uniqueId)
}
// Route("update") { sender, _ ->
// if (sender !is Player) {
// sender.sendMM("This command is only available for players.")
// return@Route
// } else
// when (App.instance.enabled) {
// State.DISABLED ->
// sender.sendMM(
// "<red>[SMCDB] simplymcdb is disabled.<br>Run
// /smcdb check to check the status."
// )
// State.DISCONNECTED ->
// sender.sendMM(
// "<red>[SMCDB] simplymcdb is enabled but
// disconnected.<br>Run /smcdb check to check the status."
// )
// else -> {
// if (isRegistered(sender.uniqueId)) {
// update(sender)
// sender.sendMM("<gray>[SMCDB] Successfully updated.")
// } else {
// sender.sendMM("<red>[SMCDB] You are not registered.")
// }
// }
// }
// },
// Route("fetch") { sender, _ ->
// if (sender !is Player) {
// sender.sendMM("This command is only available for players.")
// return@Route
// } else
// when (App.instance.enabled) {
// State.DISABLED ->
// sender.sendMM(
// "<red>[SMCDB] simplymcdb is disabled.<br>Run
// /smcdb check to check the status."
// )
// State.DISCONNECTED ->
// sender.sendMM(
// "<red>[SMCDB] simplymcdb is enabled but
// disconnected.<br>Run /smcdb check to check the status."
// )
// else -> {
// if (isRegistered(sender.uniqueId)) {
// sender.sendMM(
// "<gray>[SMCDB] Welcome back,
// ${sender.name}.<newline>Fetching your data..."
// )
// fetch(sender)
// } else {
// sender.sendMM(
// "<gray>[SMCDB] Welcome, ${sender.name}.<newline>"
// +
// "SMCDB is active but you have already
// played before.<newline>" +
// "Run <green>/smcdb register<gray> to
// register yourself."
// )
// }
// }
// }
// },
)