Arena Service に関するサービス層・業務処理を担当します。

14Fields
1Constructors
33Methods
734Lines
Package
com.example.rankingplugin.minigame.arena
Source
minigame/arena/ArenaService.java
Kind
class
Roles
イベント駆動非同期 / スケジューラサービス層
このクラスにも章立て解説を追加しています。 自動抽出の一覧だけでなく、下の『重点クラスの詳細解説』で読む順番・内部サブシステム・変更時の注意点まで追えます。 全クラス章立てガイドを見る

クラス説明

クラス直前の Javadoc は見つかりませんでした。ソースとメソッド構成から責務を補完しています。

責務と見どころ

重点クラスの詳細解説

Arena Service に関するサービス層・業務処理を担当します。minigame.arena パッケージの中でも 734 行規模の中核クラスで、運用中の主ループ・スケジューラが一か所に集まっています。中規模クラス群の中では変更影響が広く、章立てで読む価値が高いため重点解説へ追加しています。

最初に追う読む順番

  1. ArenaService
    依存オブジェクトと初期状態を束ね、このクラスが担当するランタイムの前提を固めます。
  2. ensureArenaYamlAndField
    不足テーブル・設定・内部状態を先に揃える入口です。変更を入れる前提条件の確認地点になります。
  3. startGame
    定期処理や公開 API の起動地点で、外部から見える挙動がここから立ち上がります。
  4. openMenu
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  5. enqueuePlayer
    enqueuePlayer の主要処理を担当します。
  6. buildArcheryFieldAndYaml
    表示用または出力用のデータを組み立てます。
  7. buildSpleefFieldAndYaml
    表示用または出力用のデータを組み立てます。
  8. buildKothFieldAndYaml
    表示用または出力用のデータを組み立てます。
  9. buildMobRushFieldAndYaml
    表示用または出力用のデータを組み立てます。

内部サブシステムの地図

代表フロー詳解

反映・保存・終了の流れ

  1. finishSession

結果を保持し、必要なら永続化し、最後に掃除まで行う出口です。画面更新だけ合って保存が壊れるケースや残骸が残るケースの確認に向きます。

変更時の注意点

外部接点

外部ルート

このクラス内で直接見つかる主な Web ルート/項目名です。

GET arena_mobgauntlet

フィールド

VisibilityTypeName役割
privatePluginpluginプラグイン本体参照です。
privateMinigameEngineengineengine の状態を保持します。
privateArenaServiceINSTANCEINSTANCE の状態を保持します。
privateMap<ArenaKey, UUID>hosthost の状態を保持します。
privateMap<UUID, ArenaKey>whichArenawhichArena の状態を保持します。
privateMap<UUID, Location>backAtSignTouchbackAtSignTouch の状態を保持します。
privateNamespacedKeyKEY_FS_ACTIVEKEY_FS_ACTIVE の状態を保持します。
privateNamespacedKeyKEY_FS_SCOREKEY_FS_SCORE の状態を保持します。
privateNamespacedKeyKEY_FS_BESTKEY_FS_BEST の状態を保持します。
privateNamespacedKeyKEY_FS_GAMEKEY_FS_GAME の状態を保持します。
privateNamespacedKeyKEY_MENUKEY_MENU の状態を保持します。
privateMap<ArenaKey, String>selectedGameselectedGame の状態を保持します。
privateintLOBBY_SECONDSLOBBY_SECONDS の状態を保持します。
privateMap<ArenaKey, Session>sessionssessions の状態を保持します。

コンストラクタ / 初期化

Signature説明主要呼び出し
public ArenaService(Plugin plugin, MinigameEngine engine)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。getServer → getPluginManager → registerEvents

メソッド索引

NameVisibilityKind説明
signalGameFinishedpublicメソッドsignalGameFinished の主要処理を担当します。
signalGameFinishedpublicメソッドsignalGameFinished の主要処理を担当します。
keyprivateメソッドkey の主要処理を担当します。
ArenaServicepublicコンストラクタ依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
knockOutPlayerpublicメソッドknockOutPlayer の主要処理を担当します。
arenaExitWarpprivateメソッドarenaExitWarp の主要処理を担当します。
safeTeleportprivateメソッドsafeTeleport の主要処理を担当します。
findStageYprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
signalGameFinishedByArenaNamepublicメソッドsignalGameFinishedByArenaName の主要処理を担当します。
knockOutprivateメソッドknockOut の主要処理を担当します。
onSignpublicイベント処理イベント発生時の分岐と後続処理を担当します。
openMenuprivateメソッドopenMenu の主要処理を担当します。
enqueuePlayerprivateメソッドenqueuePlayer の主要処理を担当します。
sendABprivateメソッドsendAB の主要処理を担当します。
onClickpublicイベント処理イベント発生時の分岐と後続処理を担当します。
displayNameOfprivateメソッドdisplayNameOf の主要処理を担当します。
startGameprivateメソッド初期化と各種登録を行い、機能を有効化します。
finishSessionprivateメソッドfinishSession の主要処理を担当します。
onMovepublicイベント処理イベント発生時の分岐と後続処理を担当します。
onQuitpublicイベント処理イベント発生時の分岐と後続処理を担当します。
insideprivateメソッドinside の主要処理を担当します。
findAnyInsideprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
discoverArenasInWorldprivateメソッドdiscoverArenasInWorld の主要処理を担当します。
ensureArenaYamlAndFieldprivateメソッド必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
buildArcheryFieldAndYamlprivateメソッド表示用または出力用のデータを組み立てます。
buildSpleefFieldAndYamlprivateメソッド表示用または出力用のデータを組み立てます。
buildKothFieldAndYamlprivateメソッド表示用または出力用のデータを組み立てます。
buildMobRushFieldAndYamlprivateメソッド表示用または出力用のデータを組み立てます。
buildArenaMobGauntletYamlprivateメソッド表示用または出力用のデータを組み立てます。
clearFieldprivateメソッドclearField の主要処理を担当します。
discprivateメソッドdisc の主要処理を担当します。
ringprivateメソッドring の主要処理を担当します。
rectprivateメソッドrect の主要処理を担当します。

メソッド詳細

signalGameFinished

メソッドpublicstatic
public static void signalGameFinished(Location center, int radius)

signalGameFinished の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

getWorldgetBlockXgetBlockYgetBlockZ

signalGameFinished

メソッドpublicstatic
public static void signalGameFinished(World w, int cx, int cy, int cz, int r)

signalGameFinished の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

keycontainsKeyfinishSessionkeySetequalsgetUIDremove

key

メソッドprivatestatic
private static ArenaKey key(World w, int cx,int cy,int cz,int r)

key の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

getUID

ArenaService

コンストラクタpublic
public ArenaService(Plugin plugin, MinigameEngine engine)

依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。

引数

throws

なし

主要な呼び出し順

getServergetPluginManagerregisterEvents

knockOutPlayer

メソッドpublicstatic
public static void knockOutPlayer(UUID uid)

knockOutPlayer の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

knockOut

arenaExitWarp

メソッドprivate
private Location arenaExitWarp(ArenaKey ak)

arenaExitWarp の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

getWorldfindStageYsetYawsetPitch

safeTeleport

メソッドprivate
private void safeTeleport(Player pl, Location to)

safeTeleport の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

addPotionEffectgetSchedulerrunTaskteleportrunTaskLater

findStageY

メソッドprivate
private int findStageY(World w, int cx, int cz)

必要な状態を取得し、呼び出し側で利用しやすい形へ返します。

引数

throws

なし

主要な呼び出し順

getMaxHeightmaxgetMinHeightisAirisSolidtoStringcontainsendsWith

signalGameFinishedByArenaName

メソッドpublicstatic
public static void signalGameFinishedByArenaName(String arenaName)

signalGameFinishedByArenaName の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

entrySetequalsgetValuefinishSessiongetKeykeySetremove

knockOut

メソッドprivate
private void knockOut(UUID uid)

knockOut の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

valuescontainsgetPlayergetOrDefaultarenaExitWarpsafeTeleportgetPersistentDataContainerremove

onSign

イベント処理public
public void onSign(PlayerInteractEvent e)

イベント発生時の分岐と後続処理を担当します。

引数

throws

なし

主要な呼び出し順

getActiongetClickedBlockgetStategetPersistentDataContainerhasgetPlayergetUniqueIdgetLocation

openMenu

メソッドprivate
private void openMenu(Player p, ArenaKey ak)

openMenu の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

idsstreamfiltertoLowerCasestartsWithsortedtoListisEmpty

enqueuePlayer

メソッドprivate
private void enqueuePlayer(Session ses, Player pl)

enqueuePlayer の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

getUniqueIdremovegetLocationclonegetPersistentDataContainerdisplayNameOfrandomteleport

sendAB

メソッドprivatestatic
private static void sendAB(Player p, String msg)

sendAB の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

spigotsendMessagesendTitle

onClick

イベント処理public
public void onClick(InventoryClickEvent e)

イベント発生時の分岐と後続処理を担当します。

引数

throws

なし

主要な呼び出し順

getWhoClickedgetCurrentItemgetItemMetagetPersistentDataContainerhassetCancelledgetUniqueIdequalsIgnoreCase

displayNameOf

メソッドprivate
private String displayNameOf(String id)

displayNameOf の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

displayName

startGame

メソッドprivate
private void startGame(Session ses)

初期化と各種登録を行い、機能を有効化します。

引数

throws

なし

主要な呼び出し順

cancelfinishSessioncopyOfgetPlayerjoinsendMessagegetMessagegetWorld

finishSession

メソッドprivate
private void finishSession(ArenaKey ak)

finishSession の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

removeclearFieldarenaExitWarpgetPlayersafeTeleportgetPersistentDataContainer

onMove

イベント処理public
public void onMove(PlayerMoveEvent e)

イベント発生時の分岐と後続処理を担当します。

引数

throws

なし

主要な呼び出し順

getTogetPlayergetWorlddiscoverArenasInWorldinsidegetUniqueIdremovecontainsKey

onQuit

イベント処理public
public void onQuit(PlayerQuitEvent e)

イベント発生時の分岐と後続処理を担当します。

引数

throws

なし

主要な呼び出し順

removegetPlayergetUniqueIdequalsfindAnyInside

inside

メソッドprivate
private boolean inside(ArenaKey ak, Location l)

inside の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

getWorldequalsgetUIDgetXgetZ

findAnyInside

メソッドprivate
private UUID findAnyInside(ArenaKey ak)

必要な状態を取得し、呼び出し側で利用しやすい形へ返します。

引数

throws

なし

主要な呼び出し順

getWorldgetPlayersgetLocationdistanceSquaredgetUniqueId

discoverArenasInWorld

メソッドprivate
private List<ArenaKey> discoverArenasInWorld(World w)

discoverArenasInWorld の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

addAllkeySetvaluesstreamfilterequalsgetUIDtoList

ensureArenaYamlAndField

メソッドprivate
private String ensureArenaYamlAndField(String gameId, ArenaKey ak)

必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。

引数

throws

なし

主要な呼び出し順

getWorldtoLowerCasebuildArcheryFieldAndYamlbuildSpleefFieldAndYamlminbuildKothFieldAndYamlbuildMobRushFieldAndYamlmax

buildArcheryFieldAndYaml

メソッドprivate
private void buildArcheryFieldAndYaml(World w, Location c, String arena, int bigR) throws Exception

表示用または出力用のデータを組み立てます。

引数

throws

Exception

主要な呼び出し順

getBlockYgetBlockXgetBlockZrectgetBlockAtsetTypegetDataFoldermkdirs

buildSpleefFieldAndYaml

メソッドprivate
private void buildSpleefFieldAndYaml(World w, Location c, String arena, int r) throws Exception

表示用または出力用のデータを組み立てます。

引数

throws

Exception

主要な呼び出し順

getBlockYdiscgetBlockXgetBlockZgetDataFoldermkdirscreateNewFile

buildKothFieldAndYaml

メソッドprivate
private void buildKothFieldAndYaml(World w, Location c, String arena, int r) throws Exception

表示用または出力用のデータを組み立てます。

引数

throws

Exception

主要な呼び出し順

getBlockYdiscgetBlockXgetBlockZrectgetDataFoldermkdirsgetName

buildMobRushFieldAndYaml

メソッドprivate
private void buildMobRushFieldAndYaml(World w, Location c, String arena, int r) throws Exception

表示用または出力用のデータを組み立てます。

引数

throws

Exception

主要な呼び出し順

getBlockYdiscgetBlockXgetBlockZringgetBlockAtsetTypegetDataFolder

buildArenaMobGauntletYaml

メソッドprivate
private void buildArenaMobGauntletYaml(World w, Location c, String arena, int stageR) throws Exception

表示用または出力用のデータを組み立てます。

引数

throws

Exception

主要な呼び出し順

getDataFoldermkdirsgetNamegetXgetYgetZsavegetLogger

clearField

メソッドprivate
private void clearField(String gameId, ArenaKey ak)

clearField の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

getWorldtoLowerCasegetBlockYgetBlockXgetBlockZrectgetBlockAtsetType

disc

メソッドprivate
private void disc(World w, int cx,int y,int cz, int r, Material m)

disc の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

getBlockAtsetType

ring

メソッドprivate
private void ring(World w, int cx,int y,int cz, int r, Material m)

ring の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

getBlockAtsetType

rect

メソッドprivate
private void rect(World w, int x,int y,int z, int sx,int sy,int sz, Material m)

rect の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

getBlockAtsetType

代表的な処理フロー

  1. 初期化フロー
    ArenaService → getServer → getPluginManager → registerEvents
    依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
  2. onClick フロー
    onClick → getWhoClicked → getCurrentItem → getItemMeta → getPersistentDataContainer → has
    イベント発生時の分岐と後続処理を担当します。
  3. onMove フロー
    onMove → getTo → getPlayer → getWorld → discoverArenasInWorld → inside
    イベント発生時の分岐と後続処理を担当します。
  4. onSign フロー
    onSign → getAction → getClickedBlock → getState → getPersistentDataContainer → has
    イベント発生時の分岐と後続処理を担当します。
  5. onQuit フロー
    onQuit → remove → getPlayer → getUniqueId → equals → findAnyInside
    イベント発生時の分岐と後続処理を担当します。
  6. startGame フロー
    startGame → cancel → finishSession → copyOf → getPlayer → join
    初期化と各種登録を行い、機能を有効化します。

外部との接点

Web ルート

GET arena_mobgauntlet

SQL / テーブル

テーブル名の抽出はありませんでした。

関連クラス

補足