イベント、コマンド、スケジューリング

プラグインを開発する上で、イベントハンドラーの登録、コマンドの実装、処理のスケジューリングは必須です。 MCScriptでは、専用の構文を使って上記処理を簡潔に記述出来ます。

イベント

イベントハンドラーの登録は、非常に簡単です。 @のマークの後にEvent名を記述し(Eventは省略)、ブロック内に処理を記述するだけです。 ブロック内では、event定数にイベントオブジェクトが渡されます。

@PlayerInteract {
    event.player.sendMessage("interact")
}

EventPriorityを指定する場合は、イベント名の後に括弧で記述します。

@PlayerInteract(LOWEST) {
    event.player.sendMessage("lowest")
}

コマンド

コマンドの実装は、ほぼ関数宣言と同じです。 関数名をコマンド名として記述し、引数にその後に続く文字列が代入されます。 コマンド実行時、引数の数が一致している場合のみ実行されます。 関数内では、sender定数にCommandSenderが渡されます。

command test(arg1, arg2) {
    sender.sendMessage(arg1 + ":" + arg2)
}

minecraft

/test arg1 arg2 # arg1:arg2
/test arg1 # nothing

関数同様に、デフォルト引数が利用できます。

command test(arg1, arg2: "arg2") {
    sender.sendMessage(arg1 + ":" + arg2)
}
/test arg1 arg2 # arg1:arg2
/test arg1 # arg1:arg2

コマンドの引数を配列として受け取りたい場合、~を関数名の前につけます。 この場合、引数の数にかかわらず常に実行されます。

command ~test(args) {
    for (arg in args) {
        sender.sendMessage(arg)
    }
}
/test 1 2 3 4 5
/*
1
2
3
4
5
*/

スケジューリング

MCScriptで処理をスケジューリングする場合、runnable式を使います。

r = runnable {
    Println("test")
}

r.run() # runTask(PLUGIN)
r.run(5) # runTaskLater(PLUGIN, 5)
r.run(0, 1) # runTaskTimer(PLUGIN, 0, 1)

runnable式では、最大実行回数を指定できます。

runnable(5) {
    Println(getCount())
}.run(0, 1)
/*
5
4
3
2
1
*/

runnable式のブロック内では、以下のメソッドが利用できます。

  • cancel()
  • isCancelled()
  • getTaskId()
  • setCount(int)
  • getCount()

results matching ""

    No results matching ""