-
Notifications
You must be signed in to change notification settings - Fork 9
[JP] ScriptKey Tutorial
ゆっちゃん edited this page Dec 31, 2021
·
10 revisions
スクリプトを判別するためのキーです。
叩く、壊す、踏む、当てる等の条件の追加も"ScriptKey"を利用しています。
クラスの詳細 <ScriptKey.java>
インスタンスを生成した時点で追加されます。
追加した時点で、パーミッション、コマンド、Tab保管に自動で反映されます。
トリガーの作成、初期パーミッションの権限振り分け(plugin.yml)の設定等は各自のプラグインで行ってください。
// HOGE というキーを追加
public static final ScriptKey HOGE = new ScriptKey("hoge");トリガーの実装例 <listener/trigger/****Trigger.java>
トリガーリスナーの詳細 <TriggerListener.java>
// 追加
TriggerListener.register(new HogeTrigger(plugin));
// 実装
public class HogeTrigger extends TriggerListener<HogeBlockEvent> {
// スクリプトキーを生成
public static final ScriptKey HOGE = new ScriptKey("hoge");
public HogeTrigger(@NotNull Plugin plugin) {
// スクリプトキーとイベントの優先度を指定
super(plugin, HOGE, EventPriority.NORMAL);
}
@Override
@Nullable
protected Trigger create(@NotNull HogeBlockEvent event) {
// トリガーを生成 プレイヤーとブロックとイベントを渡す
// NULLを返すことでトリガーの処理をキャンセルします
if (...) {
return null;
}
return new Trigger(event.getPlayer(), event.getBlock(), event);
}
// 任意継承
// パーミッション判定、イベント生成、スクリプト実行のタイミングで呼ばれます。
@Override
@NotNull
protected Result handle(@NotNull Trigger trigger) {
switch (trigger.getProgress()) { // プロセスの進行度を取得
case PERM: // パーミッションの判定
break;
case EVENT: // トリガーイベントの生成
Optional<TriggerEvent> triggerEvent = trigger.getTriggerEvent(); // イベントの取得
break;
case READ: // スクリプトの実行
Optional<ObjectMap> tempMap = trigger.getTempMap();
ScriptRead scriptRead = (ScriptRead) tempMap.get(); // 実行クラスの取得
break;
}
// デフォルトの戻り値の"Result.SUCCESS"を返す(Result.FAILURE を返すとプロセスが中断されます。)
return super.handle(trigger);
}
}