メインコンテンツまでスキップ

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マッチ中にサーバーまたはプラグインが停止した保持され、ソウルバウンドされる

マッチが進行中になる前の退出では、インベントリに一切手が加えられません。死亡とアイテムの喪失を参照してください。

マッチの結果​

ExtractionMatchOutcomeExtractioncraftが使用する場面
DEFEAT15分のタイマーが尽きたとき、または最後のアクティブなプレイヤーがマッチから退出したとき(脱出による場合を含む)
NEUTRALカウントダウン中にプレイヤー数が minPlayers を下回ったとき
VICTORYExtractioncraft自身が設定することはありません。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
}
}
}