Skip to content

[JP] API Tutorial

チュパカブラ edited this page Jan 7, 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.5</version>
  </dependency>

Gradle

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

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

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:
                Optional<TriggerEvent> triggerEvent = trigger.getTriggerEvent();
                // 処理
                break;
            case READ:
                Optional<ObjectMap> tempMap = trigger.getTempMap();
                // 処理
                break;
        }
        return super.handle(trigger); // デフォルトの"Result.SUCCESS"を返す
    }
}

Clone this wiki locally