コマンド
コマンドはcreateCommandメソッドを実行することで作成/登録できます。
知っとくと幸せになれること
- 引数はだいたい
タイプ-getタイプって感じになってます。(例:integer-getInteger) executes内でplayerを使うとコンソール上で実行したときに勝手にエラーが出るからいいね引数のIDは補完のときに表示されるので一般プレイヤーが使えるコマンドを作る場合は日本語で表示したほうがいいかも!(例:integer("個数")-getInteger("個数"))executes内のplayer変数とplayer(Ljava.lang.String;)メソッドは別物だから気をつけてね- 割といっぱい引数タイプがあるからいろいろ試してみてね(CommandBuilderの中に全タイプかいてあるよ)
基本的なコマンド
「/test」と入力すると「Echo」と帰ってくるコマンド
createCommand("test") {
requires(2) //必要な権限レベル
executes {
source.sendFeedback(LiteralText("Echo"), false)
}
}
「/getDiamond <個数>」と入力すると個数分ダイヤモンドが取得できるコマンド
createCommand("getDiamond") {
requires(2)
integer("amount") {
executes {
val amount = getInteger("amount")
val stack = Items.DIAMOND.defaultStack.apply {
count = amount
}
player.inventory.insertStack(stack)
source.sendFeedback(LiteralText("ダイヤモンドを ${amount}個与えました"))
}
}
}
選択肢があるコマンド
リストから選択させたいんだが??
その場合は選択させたいリストをforEachとかで回してliteralで分岐させるといい感じです。
val choices = listOf("item1", "item2", "item3")
createCommand("select") {
choices.forEach { item ->
literal(item) {
executes {
source.sendFeedback(LiteralText("Selected: $item"), false)
}
}
}
}