Skip to content

[JP] API Tutorial

チュパカブラ edited this page Jan 29, 2021 · 67 revisions

プロジェクトへの追加

Maven

  <repositories>
    <repository>
      <id>jitpack.io</id>
      <url>https://jitpack.io</url>
    </repository>
  </repositories>

  <dependency>
    <groupId>com.github.yuttyann</groupId>
    <artifactId>ScriptBlockPlus</artifactId>
    <version>v2.0.7</version>
  </dependency>

Gradle

 allprojects {
   repositories {
     ...
     maven { url 'https://jitpack.io' }
   }
 }

 dependencies {
   implementation 'com.github.yuttyann:ScriptBlockPlus:v2.0.7'
 }

APIの取得

クラスの詳細 <ScriptBlockAPI.java>

ScriptBlockAPI sbapi = ScriptBlock.getInstance().getAPI();

APIの使用(簡易的な物です。)

スクリプトが存在するかチェックする。

【SBEdit】
SBEdit se = sbapi.getSBEdit(ScriptKey scriptKey);
boolean has = se.has();

【SBFile】
SBFile sf = sbapi.getSBFile(Location location, ScriptKey scriptKey);
boolean has = sf.has();

スクリプトを実行する。

sbapi.scriptRead(Player player, Location location, ScriptKey scriptKey, int index);

スクリプトの作者を取得する。

SBFile sf = sbapi.getSBFile(Location location, ScriptKey scriptKey);
List<UUID> author = sf.getAuthor();

スクリプトを作成、追加する。

SBEdit se = sbapi.getSBEdit(ScriptKey scriptKey);
se.create(Player player, Location location, String script);

SBEdit se = sbapi.getSBEdit(ScriptKey scriptKey);
se.add(Player player, Location location, String script);

スクリプトを削除する。

【SBEdit】
SBEdit se = sbapi.getSBEdit(ScriptKey scriptKey);
se.remove(Player player, Location location);

【SBFile】
SBFile sf = sbapi.getSBFile(Location location, ScriptKey scriptKey);
sf.remove();

変更を保存する。

【SBEdit】
SBEdit se = sbapi.getSBEdit(ScriptKey scriptKey);
se.save();

【SBFile】
SBFile sf = sbapi.getSBFile(Location location, ScriptKey scriptKey);
sf.save();

トリガーを追加する
トリガーの詳細 <TriggerListener.java>
トリガーの実装例 <listener/trigger/****Trigger.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) {
        // トリガーを生成 プレイヤーとブロックとイベントを渡す
        return new Trigger(event.getPlayer(), event.getBlock(), event);
    }

    // 特定のタイミングで呼ばれるメソッド(継承は任意)
    @Override
    @NotNull
    protected Result handle(@NotNull Trigger trigger) {
        // パーミッション判定、イベント生成、スクリプト実行のタイミングで呼ばれます。
        switch (trigger.getProgress()) { // プロセスの進行度を取得
            case PERM: // パーミッション判定
                break;
            case EVENT: // TriggerEvent の生成
                Optional<TriggerEvent> triggerEvent = trigger.getTriggerEvent(); // イベントの取得
                // 処理
                break;
            case READ: // スクリプトの実行
                Optional<ObjectMap> tempMap = trigger.getTempMap(); // 実行クラスの取得
                // 処理
                break;
        }
        // Result.FAILURE を返すとプロセスが中断されます。
        return super.handle(trigger); // デフォルトの戻り値の"Result.SUCCESS"を返す
    }
}

Clone this wiki locally