1.0.0.1
Fix commands, new arguments
This commit is contained in:
1 parent
bb68292af0
commit
4c06690f1a
6 files changed
+73
-7
No files matched your search
@@ -0,0 +1,21 @@
|
||||
package tech.carcadex.kotlinbukkitkit.commands
|
||||
|
||||
import tech.carcadex.kotlinbukkitkit.architecture.KotlinPlugin
|
||||
import tech.carcadex.kotlinbukkitkit.commands.dsl.builder.simpleCommand
|
||||
|
||||
fun KotlinPlugin.onEnable() {
|
||||
simpleCommand(
|
||||
name = "test",
|
||||
permission = "test.use",
|
||||
tabComplete = listOf("subcmd1", "subcmd2")
|
||||
) {
|
||||
sender.sendMessage("test")
|
||||
val arg1 = argument(0) //getting 1 argument of command as nullable string
|
||||
//also you can use stringOrNull
|
||||
val arg2 = string(1) //getting 1 argument of command as string
|
||||
val arg3 = integer(2) //getting 2 argument of command as integer
|
||||
//also you can use integerOrNull
|
||||
val arg4 = double(3) //getting 3 argument of command as integer
|
||||
//also you can use doubleOrNull
|
||||
}
|
||||
}
|
||||
+35
@@ -1,6 +1,11 @@
|
||||
package tech.carcadex.kotlinbukkitkit.commands.dsl
|
||||
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.Material
|
||||
import org.bukkit.OfflinePlayer
|
||||
import org.bukkit.World
|
||||
import org.bukkit.command.CommandSender
|
||||
import org.bukkit.entity.Player
|
||||
import tech.carcadex.kotlinbukkitkit.commands.exceptions.ArgumentNotFoundException
|
||||
import tech.carcadex.kotlinbukkitkit.commands.exceptions.TypeParseException
|
||||
import tech.carcadex.kotlinbukkitkit.commands.service.MessagesService
|
||||
@@ -16,4 +21,34 @@ class ExecutorContext(var sender: CommandSender, val args: Array<String>) {
|
||||
throw TypeParseException()
|
||||
} ?: throw ArgumentNotFoundException(index)
|
||||
fun integerOrNull(index: Int): Int? = argument(index)?.toIntOrNull()
|
||||
|
||||
fun double(index: Int): Double = try {
|
||||
argument(index)?.toDouble()
|
||||
} catch (e: NumberFormatException) {
|
||||
MessagesService.byTag("#not-a-number")(sender)
|
||||
throw TypeParseException()
|
||||
} ?: throw ArgumentNotFoundException(index)
|
||||
fun doubleOrNull(index: Int): Double? = argument(index)?.toDoubleOrNull()
|
||||
|
||||
fun materialOrNull(index: Int): Material? = Material.matchMaterial(string(index))
|
||||
fun material(index: Int): Material =
|
||||
materialOrNull(index) ?: run {
|
||||
MessagesService.byTag("#no-such-material")(sender)
|
||||
throw TypeParseException()
|
||||
}
|
||||
fun worldOrNull(index: Int): World? = Bukkit.getWorld(string(index))
|
||||
fun world(index: Int): World =
|
||||
worldOrNull(index) ?: run {
|
||||
MessagesService.byTag("#no-such-world")(sender)
|
||||
throw TypeParseException()
|
||||
}
|
||||
|
||||
fun playerOrNull(index: Int): Player? = Bukkit.getPlayer(string(index))
|
||||
fun player(index: Int): World =
|
||||
worldOrNull(index) ?: run {
|
||||
MessagesService.byTag("#no-such-player")(sender)
|
||||
throw TypeParseException()
|
||||
}
|
||||
|
||||
fun offlinePlayer(index: Int): OfflinePlayer = Bukkit.getOfflinePlayer(string(index))
|
||||
}
|
||||
+1
@@ -11,6 +11,7 @@ object MessagesService {
|
||||
messages["#no-such-player"] = { it.sendMessage("${ChatColor.RED}No such player was found") }
|
||||
messages["#no-such-world"] = { it.sendMessage("${ChatColor.RED}No such world was found") }
|
||||
messages["#no-such-material"] = { it.sendMessage("${ChatColor.RED}No such material was found") }
|
||||
messages["#no-such-world"] = { it.sendMessage("${ChatColor.RED}No such world was found") }
|
||||
messages["#no-such-enum"] = { it.sendMessage("${ChatColor.RED}No such value for this enum was found") }
|
||||
messages["#not-a-number"] = { it.sendMessage("${ChatColor.RED}It is not a number") }
|
||||
messages["#wrong-usage"] = { it.sendMessage("${ChatColor.RED}Wrong usage of command") }
|
||||
|
||||
Reference in new issue
Block a user