Arena Mob Gauntlet を担当するclassです。

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

クラス説明

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

責務と見どころ

重点クラスの詳細解説

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

最初に追う読む順番

  1. ArenaMobGauntlet
    依存オブジェクトと初期状態を束ね、このクラスが担当するランタイムの前提を固めます。
  2. startIfNeeded
    定期処理や公開 API の起動地点で、外部から見える挙動がここから立ち上がります。
  3. load
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  4. join
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  5. spawnWave
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  6. spawnMultiplierForPlayers
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  7. spawnAtRing
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  8. handleArenaSetupCmd
    運用中の中心ループです。イベント受理から状態更新までの主経路を追えます。
  9. onRegistered
    運用中の中心ループです。イベント受理から状態更新までの主経路を追えます。

内部サブシステムの地図

終了処理と掃除

停止時やフロー終端で残る実体・タスク・キャッシュを戻す出口です。

主なメソッド
主なフィールド

非同期処理と定期実行

メインスレッド境界とバックグラウンド処理が交差します。重い処理やタイミング起因の不具合を追うときの要所です。

主なメソッド
主なフィールド

代表フロー詳解

反映・保存・終了の流れ

  1. leave

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

変更時の注意点

フィールド

VisibilityTypeName役割
privateJavaPluginpluginプラグイン本体参照です。
privateMinigameDaodaodao の状態を保持します。
privateNamespacedKeyKIT_TAGKIT_TAG の状態を保持します。
privateNamespacedKeyKEY_FS_ACTIVEKEY_FS_ACTIVE の状態を保持します。
privateNamespacedKeyKEY_FS_SCOREKEY_FS_SCORE の状態を保持します。
privateNamespacedKeyKEY_FS_BESTKEY_FS_BEST の状態を保持します。
privateNamespacedKeyKEY_FS_GAMEKEY_FS_GAME の状態を保持します。
privateNamespacedKeyKEY_FS_HISCOREKEY_FS_HISCORE の状態を保持します。
privateNamespacedKeyKEY_ARENA_MOBKEY_ARENA_MOB の状態を保持します。
privateSet<String>arenaIdsarenaIds の状態を保持します。
privateMap<String, Session>sessionssessions の状態を保持します。

コンストラクタ / 初期化

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

メソッド索引

NameVisibilityKind説明
ArenaMobGauntletpublicコンストラクタ依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
onRegisteredpublicメソッドonRegistered の主要処理を担当します。
idpublicメソッドid の主要処理を担当します。
idpublicメソッドid の主要処理を担当します。
arenaIdspublicメソッドarenaIds の主要処理を担当します。
arenaIdspublicメソッドarenaIds の主要処理を担当します。
handleArenaSetupCmdpublicメソッド入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。
inside2Dprivateメソッドinside2D の主要処理を担当します。
joinpublicメソッドjoin の主要処理を担当します。
findSessionByPlayerprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
persistScoreAndBestprivateメソッドpersistScoreAndBest の主要処理を担当します。
giveStartKitpublicメソッドgiveStartKit の主要処理を担当します。
tagKitprivateメソッドtagKit の主要処理を担当します。
isKitprivateメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
stripKitprivateメソッドstripKit の主要処理を担当します。
isActiveprivateメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
onEntityExplodepublicイベント処理イベント発生時の分岐と後続処理を担当します。
onBlockExplodepublicイベント処理イベント発生時の分岐と後続処理を担当します。
onEntityChangeBlockpublicイベント処理エンダーマン/ウィザー/ラヴェジャーなどの“ブロック改変”も禁止
onBlockIgnitepublicイベント処理爆発や火球による着火も広がらないように
onHangingBreakByEntitypublicイベント処理額縁/絵画などの破壊も保護したい場合(任意)
onMobDeathpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onLethalDamagepublicイベント処理瀕死ダメージをキャンセルして即ロビーへ返す(= 死亡画面を出さない)
onDeathpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onRespawnpublicイベント処理イベント発生時の分岐と後続処理を担当します。
leavepublicメソッドleave の主要処理を担当します。
endGameprivateメソッドendGame の主要処理を担当します。
toppublicメソッドtop の主要処理を担当します。
loadprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
startIfNeededprivateメソッド初期化と各種登録を行い、機能を有効化します。
announceprivateメソッドannounce の主要処理を担当します。
countHostilesprivateメソッドcountHostiles の主要処理を担当します。
giveSuppliesprivateメソッドgiveSupplies の主要処理を担当します。
suppliesForLevelprivateメソッドsuppliesForLevel の主要処理を担当します。
kitItemprivateメソッドkitItem の主要処理を担当します。
fireResPotionprivateメソッドfireResPotion の主要処理を担当します。
tryPotionTypeprivateメソッドtryPotionType の主要処理を担当します。
effectPotionprivateメソッドeffectPotion の主要処理を担当します。
regenPotionprivateメソッドregenPotion の主要処理を担当します。
strengthPotionprivateメソッドstrengthPotion の主要処理を担当します。
resistancePotionprivateメソッドresistancePotion の主要処理を担当します。
spawnWaveprivateメソッドspawnWave の主要処理を担当します。
waveCountForLevelprivateメソッドwaveCountForLevel の主要処理を担当します。
spawnMultiplierForPlayersprivateメソッドspawnMultiplierForPlayers の主要処理を担当します。
spawnAtRingprivateメソッドspawnAtRing の主要処理を担当します。
protectFromZombificationprivateメソッドprotectFromZombification の主要処理を担当します。
onCreatureSpawnpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onTransformpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onEndermanTeleportpublicイベント処理イベント発生時の分岐と後続処理を担当します。
findSessionContainingprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
enforceBoundsprivateメソッドenforceBounds の主要処理を担当します。
purgeArenaEntitiesprivateメソッドpurgeArenaEntities の主要処理を担当します。
nearestPlayerprivateメソッドnearestPlayer の主要処理を担当します。
pickTypesForLevelprivateメソッドpickTypesForLevel の主要処理を担当します。

メソッド詳細

ArenaMobGauntlet

コンストラクタpublic
public ArenaMobGauntlet(JavaPlugin plugin, MinigameDao dao)

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

引数

throws

なし

主要な呼び出し順

目立つ内部呼び出しは抽出されませんでした。

onRegistered

メソッドpublic
public void onRegistered(Plugin pl)

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

引数

throws

なし

主要な呼び出し順

getServergetPluginManagerregisterEvents

id

メソッドpublic
public String id()

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

引数

throws

なし

主要な呼び出し順

目立つ内部呼び出しは抽出されませんでした。

id

メソッドpublic
public String id() { return "arena_mobgauntlet"; } public String displayName()

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

引数

throws

なし

主要な呼び出し順

目立つ内部呼び出しは抽出されませんでした。

arenaIds

メソッドpublic
public List<String> arenaIds()

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

引数

throws

なし

主要な呼び出し順

目立つ内部呼び出しは抽出されませんでした。

arenaIds

メソッドpublic
public List<String> arenaIds() { return new ArrayList<>(arenaIds); } public void reloadArenas()

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

引数

throws

なし

主要な呼び出し順

cleargetDataFolderexistslistFilesendsWithgetNamesubstringlength

handleArenaSetupCmd

メソッドpublic
public boolean handleArenaSetupCmd(Plugin plugin, CommandSender sender, String arenaId, String subCmd)

入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。

引数

throws

なし

主要な呼び出し順

equalsIgnoreCasereloadArenassendMessage

inside2D

メソッドprivatestatic
private static boolean inside2D(Location loc, Location center, double radius)

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

引数

throws

なし

主要な呼び出し順

getWorldequalsgetXgetZ

join

メソッドpublic
public void join(Player p, String arenaId)

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

引数

throws

なし

主要な呼び出し順

computeIfAbsentcompilearena__matchermatchesparseIntgroup

findSessionByPlayer

メソッドprivate
private Session findSessionByPlayer(UUID u)

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

引数

throws

なし

主要な呼び出し順

valuescontains

persistScoreAndBest

メソッドprivate
private void persistScoreAndBest(Player p, Session s)

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

引数

throws

なし

主要な呼び出し順

ofNullablegetPersistentDataContainerorElserecordScoreidgetUniqueIdgetNamecurrentSeason

giveStartKit

メソッドpublic
public void giveStartKit(Player p)

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

引数

throws

なし

主要な呼び出し順

streamgetInventorygetContentsanyMatchtagKitaddItem

tagKit

メソッドprivate
private void tagKit(ItemStack it)

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

引数

throws

なし

主要な呼び出し順

getItemMetagetPersistentDataContainersetItemMeta

isKit

メソッドprivate
private boolean isKit(ItemStack it)

条件判定を行い、後続処理の分岐に使える真偽値を返します。

引数

throws

なし

主要な呼び出し順

getItemMetagetPersistentDataContainerhas

stripKit

メソッドprivate
private void stripKit(Player p)

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

引数

throws

なし

主要な呼び出し順

getInventorygetSizegetItemisKitsetItemgetItemInOffHandsetItemInOffHandgetHelmet

isActive

メソッドprivate
private boolean isActive(UUID u)

条件判定を行い、後続処理の分岐に使える真偽値を返します。

引数

throws

なし

主要な呼び出し順

valuescontains

onEntityExplode

イベント処理public
public void onEntityExplode(EntityExplodeEvent e)

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

引数

throws

なし

主要な呼び出し順

findSessionContaininggetLocationblockListclearsetYield

onBlockExplode

イベント処理public
public void onBlockExplode(BlockExplodeEvent e)

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

引数

throws

なし

主要な呼び出し順

findSessionContaininggetBlockgetLocationblockListclearsetYield

onEntityChangeBlock

イベント処理public
public void onEntityChangeBlock(EntityChangeBlockEvent e)

エンダーマン/ウィザー/ラヴェジャーなどの“ブロック改変”も禁止

引数

throws

なし

主要な呼び出し順

findSessionContaininggetBlockgetLocationgetEntitysetCancelled

onBlockIgnite

イベント処理public
public void onBlockIgnite(BlockIgniteEvent e)

爆発や火球による着火も広がらないように

引数

throws

なし

主要な呼び出し順

findSessionContaininggetBlockgetLocationsetCancelled

onHangingBreakByEntity

イベント処理public
public void onHangingBreakByEntity(HangingBreakByEntityEvent e)

額縁/絵画などの破壊も保護したい場合(任意)

引数

throws

なし

主要な呼び出し順

findSessionContaininggetEntitygetLocationgetRemoversetCancelled

onMobDeath

イベント処理public
public void onMobDeath(EntityDeathEvent e)

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

引数

throws

なし

主要な呼び出し順

getEntityfindSessionContaininggetLocationgetDropsclearsetDroppedExp

onLethalDamage

イベント処理public
public void onLethalDamage(EntityDamageEvent e)

瀕死ダメージをキャンセルして即ロビーへ返す(= 死亡画面を出さない)

引数

throws

なし

主要な呼び出し順

getEntityisActivegetUniqueIdgetHealthgetFinalDamagesetCancelledsetFireTickssetFallDistance

onDeath

イベント処理public
public void onDeath(PlayerDeathEvent e)

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

引数

throws

なし

主要な呼び出し順

getEntityisActivegetUniqueIdgetDropsremoveIfgetSchedulerrunTaskstripKit

onRespawn

イベント処理public
public void onRespawn(PlayerRespawnEvent e)

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

引数

throws

なし

主要な呼び出し順

getPlayerisActivegetUniqueIdgetSchedulerrunTaskstripKit

leave

メソッドpublic
public void leave(Player player)

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

引数

throws

なし

主要な呼び出し順

valuesremovegetUniqueId

endGame

メソッドprivate
private void endGame(Session s, String reason)

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

引数

throws

なし

主要な呼び出し順

cancelpurgeArenaEntitiesremovegetPlayerstripKitsendMessagesignalGameFinishedByArenaName

top

メソッドpublic
public List<String> top(String arenaId, String season, int limit)

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

引数

throws

なし

主要な呼び出し順

equalsIgnoreCasecurrentSeasontopLinesDescid

load

メソッドprivate
private Session load(String arena)

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

引数

throws

なし

主要な呼び出し順

getDataFolderexistsloadConfigurationgetWorldrequireNonNullgetStringgetDoublegetInt

startIfNeeded

メソッドprivate
private void startIfNeeded(Session s)

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

引数

throws

なし

主要な呼び出し順

runstreammapfiltergetWorldequalsinside2DgetLocation

announce

メソッドprivate
private void announce(List<Player> ps, String msg)

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

引数

throws

なし

主要な呼び出し順

sendTitleplaySound

countHostiles

メソッドprivate
private int countHostiles(Location c, int r)

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

引数

throws

なし

主要な呼び出し順

getWorldgetNearbyEntitiesgetTypegetLocationdistanceSquaredsize

giveSupplies

メソッドprivate
private void giveSupplies(List<Player> ps, int lv)

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

引数

throws

なし

主要な呼び出し順

suppliesForLevelgetInventoryaddItem

suppliesForLevel

メソッドprivate
private List<ItemStack> suppliesForLevel(int level, Player p)

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

引数

throws

なし

主要な呼び出し順

maxkitItemregenPotionstrengthPotionresistancePotionfireResPotion

kitItem

メソッドprivate
private ItemStack kitItem(Material m, int amount)

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

引数

throws

なし

主要な呼び出し順

tagKit

fireResPotion

メソッドprivate
private ItemStack fireResPotion(int seconds)

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

引数

throws

なし

主要な呼び出し順

getItemMetasetBasePotionTypesetItemMetatagKit

tryPotionType

メソッドprivate
private PotionType tryPotionType(String... names)

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

引数

throws

なし

主要な呼び出し順

valueOf

effectPotion

メソッドprivate
private ItemStack effectPotion(PotionEffectType type, int seconds, int amplifier, Material kind)

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

引数

throws

なし

主要な呼び出し順

getItemMetatryPotionTypesetBasePotionTypeaddCustomEffectmaxsetItemMetatagKit

regenPotion

メソッドprivate
private ItemStack regenPotion(int seconds, int amplifier)

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

引数

throws

なし

主要な呼び出し順

effectPotion

strengthPotion

メソッドprivate
private ItemStack strengthPotion(int seconds, int amplifier)

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

引数

throws

なし

主要な呼び出し順

effectPotion

resistancePotion

メソッドprivate
private ItemStack resistancePotion(int seconds, int amplifier)

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

引数

throws

なし

主要な呼び出し順

effectPotion

spawnWave

メソッドprivate
private void spawnWave(Session s, int players)

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

引数

throws

なし

主要な呼び出し順

getWorldwaveCountForLevelspawnMultiplierForPlayersmaxroundminspawnAtRingpickTypesForLevel

waveCountForLevel

メソッドprivate
private int waveCountForLevel(int level)

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

引数

throws

なし

主要な呼び出し順

max

spawnMultiplierForPlayers

メソッドprivate
private double spawnMultiplierForPlayers(int players)

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

引数

throws

なし

主要な呼び出し順

maxmin

spawnAtRing

メソッドprivate
private void spawnAtRing(World w, Location c, int radius, EntityType type)

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

引数

throws

なし

主要な呼び出し順

randomgetBlockXroundcosgetBlockZsingetYspawnEntity

protectFromZombification

メソッドprivate
private void protectFromZombification(Entity e)

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

引数

throws

なし

主要な呼び出し順

setImmuneToZombificationgetClassgetMethodinvoke

onCreatureSpawn

イベント処理public
public void onCreatureSpawn(CreatureSpawnEvent e)

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

引数

throws

なし

主要な呼び出し順

findSessionContaininggetLocationgetEntitygetTypegetPersistentDataContainer

onTransform

イベント処理public
public void onTransform(EntityTransformEvent e)

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

引数

throws

なし

主要な呼び出し順

getEntityfindSessionContaininggetLocationgetTransformedEntitygetTypegetTransformedEntitiesisEmptysetCancelled

onEndermanTeleport

イベント処理public
public void onEndermanTeleport(EntityTeleportEvent e)

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

引数

throws

なし

主要な呼び出し順

getEntityTypefindSessionContaininggetFromgetTogetWorldequalssetCancelledmax

findSessionContaining

メソッドprivate
private Session findSessionContaining(Location l)

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

引数

throws

なし

主要な呼び出し順

getWorldvaluesequalsgetXgetZ

enforceBounds

メソッドprivate
private void enforceBounds(Session s)

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

引数

throws

なし

主要な呼び出し順

maxgetYgetWorldgetNearbyEntitiesgetTypegetLocationgetXgetZ

purgeArenaEntities

メソッドprivate
private void purgeArenaEntities(Session s)

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

引数

throws

なし

主要な呼び出し順

getWorldgetNearbyEntitiesgetTypeforEach

nearestPlayer

メソッドprivate
private Player nearestPlayer(Location c)

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

引数

throws

なし

主要な呼び出し順

getWorldgetPlayersgetLocationdistanceSquared

pickTypesForLevel

メソッドprivate
private List<EntityType> pickTypesForLevel(int lv)

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

引数

throws

なし

主要な呼び出し順

目立つ内部呼び出しは抽出されませんでした。

代表的な処理フロー

  1. onDeath フロー
    onDeath → getEntity → isActive → getUniqueId → getDrops → removeIf
    イベント発生時の分岐と後続処理を担当します。
  2. onEndermanTeleport フロー
    onEndermanTeleport → getEntityType → findSessionContaining → getFrom → getTo → getWorld
    イベント発生時の分岐と後続処理を担当します。
  3. onLethalDamage フロー
    onLethalDamage → getEntity → isActive → getUniqueId → getHealth → getFinalDamage
    瀕死ダメージをキャンセルして即ロビーへ返す(= 死亡画面を出さない)
  4. onTransform フロー
    onTransform → getEntity → findSessionContaining → getLocation → getTransformedEntity → getType
    イベント発生時の分岐と後続処理を担当します。
  5. onBlockExplode フロー
    onBlockExplode → findSessionContaining → getBlock → getLocation → blockList → clear
    イベント発生時の分岐と後続処理を担当します。
  6. onMobDeath フロー
    onMobDeath → getEntity → findSessionContaining → getLocation → getDrops → clear
    イベント発生時の分岐と後続処理を担当します。

外部との接点

Web ルート

このクラス内に目立つ Web ルート定義は見つかりませんでした。

SQL / テーブル

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

関連クラス

補足