Extractioncraft 開発者API
Extractioncraftは com.magmaguy.extractioncraft.api パッケージの下にクエリクラスとBukkitイベントを公開しており、他のプラグインはこれを使ってマッチを追跡し、それに反応できます。すべてのイベントは標準的な同期Bukkitイベントです。
クエリ
| メソッド | 戻り値 |
|---|---|
ExtractionCraftAPI.getMatch(Player player) | プレイヤーが参加している ExtractionMatch(プレイヤーまたは観戦者として)。参加していなければ null |
ExtractionCraftAPI.getMatches() | 作成済みでまだ破棄されていないすべてのマッチのコピー |
ExtractionMatch は、Extractioncraftのjarに同梱されたMagmaCoreのマッチクラスを継承しています。このクラスは com.magmaguy.extractioncraft.magmacore.match.Match に再配置されています。公開メソッドには getPhase()、getMatchPlayers()、getActivePlayers()、admit(players)、admitSpectator(player)、leave(player, reason)、start()、end(outcome) があります。Extractioncraftには参加や観戦のコマンドがないため、他のプラグインがマッチにプレイヤーや観戦者を追加するには admit と admitSpectator を使います。プレイヤーを受け入れられるのはマッチが待機中の間だけで、上限は maxPlayers です。観戦者を受け入れるには、コンテンツパッケージで spectatable: true を設定する必要があります。
イベント
| イベント | キャンセル可能 | 公開データ | 発火タイミング |
|---|---|---|---|
ExtractionMatchJoinEvent | はい | ExtractionMatch match, Player player | プレイヤーまたは観戦者が受け入れられる前に、プレイヤーごとに1回 |
ExtractionMatchStartEvent | はい | ExtractionMatch match | /exc start が最少プレイヤー数のチェックを通過したとき、カウントダウンの前 |
ExtractionMatchLeaveEvent | いいえ | ExtractionMatch match, Player player, ExtractionLeaveReason reason | 参加者の退出処理中 |
ExtractionMatchEndEvent | いいえ | ExtractionMatch match, ExtractionMatchOutcome outcome | マッチの終了時 |
ExtractionMatchJoinEvent をキャンセルすると、そのプレイヤーと、一緒に受け入れられようとしているすべてのプレイヤーが締め出されます。生成されたばかりのマッチの作成者を拒否した場合、マッチとそのワールドは破棄され、作成者には The generated match could not be started. と通知されます。
ExtractionMatchStartEvent をキャンセルすると、マッチは待機状態のままになります。プレイヤーは再度 /exc start を実行できます。
ExtractionMatchLeaveEvent は、Extractioncraftが退出理由に応じてプレイヤーのインベントリをソウルバウンドまたは消去した後、プレイヤーがまだ参加者でマッチワールド内にいる間に発火します。プレイヤーはその後でテレポートされて外に出ます。
ExtractionMatchEndEvent は、まだ中にいるプレイヤーが除外される前に発火します。その後、彼らは MATCH_ENDED で退出します。サーバーのシャットダウンやプラグインのリロードではマッチが終了されずに破棄されるため、終了イベントは発火しません。その場合、プレイヤーは代わりに SHUTDOWN で退出します。
退出理由
ExtractionLeaveReason | 意味 | マッチ進行中のアイテム |
|---|---|---|
QUIT | 自分で退出した(例:/exc quit) | デフォルト設定では失われる |
DISCONNECT | サーバーから切断した | デフォルト設定では失われる |
DIED | 致命的なダメージを受けた | デフォルト設定では失われる |
EXTRACTED | 脱出ポイントで脱出した | 保持され、ソウルバウンドされる |
MATCH_ENDED | マッチ終了時にまだ中にいた(タイマー切れを含む) | デフォルト設定では失われる |
SHUTDOWN | マッチ中にサーバーまたはプラグインが停止した | 保持され、ソウルバウンドされる |
マッチが進行中になる前の退出では、インベントリに一切手が加えられません。死亡とアイテムの喪失を参照してください。
マッチの結果
ExtractionMatchOutcome | Extractioncraftが使用する場面 |
|---|---|
DEFEAT | 15分のタイマーが尽きたとき、または最後のアクティブなプレイヤーがマッチから退出したとき(脱出による場合を含む) |
NEUTRAL | カウントダウン中にプレイヤー数が minPlayers を下回ったとき |
VICTORY | Extractioncraft自身が設定することはありません。end(...) を呼び出すプラグインだけがこの結果を生成できます |
使用例
import com.magmaguy.extractioncraft.api.ExtractionLeaveReason;
import com.magmaguy.extractioncraft.api.ExtractionMatchLeaveEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class MyExtractionListener implements Listener {
@EventHandler
public void onLeave(ExtractionMatchLeaveEvent event) {
if (event.getReason() == ExtractionLeaveReason.EXTRACTED) {
// Reward the player for a successful extraction
}
}
}