コマンド

コマンドは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)
            }
        }
    }
}

results matching ""

    No results matching ""