起動・前提準備
初期テーブル、依存状態、定期処理の点灯など、このクラスが動き始める前提をまとめています。
Arena Mob Gauntlet を担当するclassです。
com.example.rankingplugin.minigame.gamesminigame/games/ArenaMobGauntlet.javaclassクラス直前の Javadoc は見つかりませんでした。ソースとメソッド構成から責務を補完しています。
Arena Mob Gauntlet を担当するclassです。minigame.games パッケージの中でも 868 行規模の中核クラスで、運用中の主ループ・スケジューラが一か所に集まっています。中規模クラス群の中では変更影響が広く、章立てで読む価値が高いため重点解説へ追加しています。
ArenaMobGauntletstartIfNeededloadjoinspawnWavespawnMultiplierForPlayersspawnAtRinghandleArenaSetupCmdonRegistered初期テーブル、依存状態、定期処理の点灯など、このクラスが動き始める前提をまとめています。
外部から呼ばれる公開メソッドや、対象プレイヤー・対象データ・対象ワールドを引き当てる経路です。
イベント受理、定期監視、判定、進行更新など、実際に挙動を生む中心ロジックです。
停止時やフロー終端で残る実体・タスク・キャッシュを戻す出口です。
メインスレッド境界とバックグラウンド処理が交差します。重い処理やタイミング起因の不具合を追うときの要所です。
このクラスが前提状態を揃え、外部から利用可能な形まで立ち上がる流れです。新規依存の追加や起動失敗の調査はまずここから追います。
onRegisteredhandleArenaSetupCmdonEntityExplodeonBlockExplodeonEntityChangeBlockonBlockIgniteonHangingBreakByEntityイベント受理、判定、状態更新、通知までの主経路です。体感不具合や想定外の分岐はこの流れのどこで止まるかを見ると切り分けやすいです。
結果を保持し、必要なら永続化し、最後に掃除まで行う出口です。画面更新だけ合って保存が壊れるケースや残骸が残るケースの確認に向きます。
| Signature | 説明 | 主要呼び出し |
|---|---|---|
public ArenaMobGauntlet(JavaPlugin plugin, MinigameDao dao) | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 | 主要呼び出しなし |
| Name | Visibility | Kind | 説明 |
|---|---|---|---|
| ArenaMobGauntlet | public | コンストラクタ | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 |
| onRegistered | public | メソッド | onRegistered の主要処理を担当します。 |
| id | public | メソッド | id の主要処理を担当します。 |
| id | public | メソッド | id の主要処理を担当します。 |
| arenaIds | public | メソッド | arenaIds の主要処理を担当します。 |
| arenaIds | public | メソッド | arenaIds の主要処理を担当します。 |
| handleArenaSetupCmd | public | メソッド | 入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。 |
| inside2D | private | メソッド | inside2D の主要処理を担当します。 |
| join | public | メソッド | join の主要処理を担当します。 |
| findSessionByPlayer | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| persistScoreAndBest | private | メソッド | persistScoreAndBest の主要処理を担当します。 |
| giveStartKit | public | メソッド | giveStartKit の主要処理を担当します。 |
| tagKit | private | メソッド | tagKit の主要処理を担当します。 |
| isKit | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| stripKit | private | メソッド | stripKit の主要処理を担当します。 |
| isActive | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| onEntityExplode | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onBlockExplode | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onEntityChangeBlock | public | イベント処理 | エンダーマン/ウィザー/ラヴェジャーなどの“ブロック改変”も禁止 |
| onBlockIgnite | public | イベント処理 | 爆発や火球による着火も広がらないように |
| onHangingBreakByEntity | public | イベント処理 | 額縁/絵画などの破壊も保護したい場合(任意) |
| onMobDeath | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onLethalDamage | public | イベント処理 | 瀕死ダメージをキャンセルして即ロビーへ返す(= 死亡画面を出さない) |
| onDeath | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onRespawn | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| leave | public | メソッド | leave の主要処理を担当します。 |
| endGame | private | メソッド | endGame の主要処理を担当します。 |
| top | public | メソッド | top の主要処理を担当します。 |
| load | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| startIfNeeded | private | メソッド | 初期化と各種登録を行い、機能を有効化します。 |
| announce | private | メソッド | announce の主要処理を担当します。 |
| countHostiles | private | メソッド | countHostiles の主要処理を担当します。 |
| giveSupplies | private | メソッド | giveSupplies の主要処理を担当します。 |
| suppliesForLevel | private | メソッド | suppliesForLevel の主要処理を担当します。 |
| kitItem | private | メソッド | kitItem の主要処理を担当します。 |
| fireResPotion | private | メソッド | fireResPotion の主要処理を担当します。 |
| tryPotionType | private | メソッド | tryPotionType の主要処理を担当します。 |
| effectPotion | private | メソッド | effectPotion の主要処理を担当します。 |
| regenPotion | private | メソッド | regenPotion の主要処理を担当します。 |
| strengthPotion | private | メソッド | strengthPotion の主要処理を担当します。 |
| resistancePotion | private | メソッド | resistancePotion の主要処理を担当します。 |
| spawnWave | private | メソッド | spawnWave の主要処理を担当します。 |
| waveCountForLevel | private | メソッド | waveCountForLevel の主要処理を担当します。 |
| spawnMultiplierForPlayers | private | メソッド | spawnMultiplierForPlayers の主要処理を担当します。 |
| spawnAtRing | private | メソッド | spawnAtRing の主要処理を担当します。 |
| protectFromZombification | private | メソッド | protectFromZombification の主要処理を担当します。 |
| onCreatureSpawn | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onTransform | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onEndermanTeleport | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| findSessionContaining | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| enforceBounds | private | メソッド | enforceBounds の主要処理を担当します。 |
| purgeArenaEntities | private | メソッド | purgeArenaEntities の主要処理を担当します。 |
| nearestPlayer | private | メソッド | nearestPlayer の主要処理を担当します。 |
| pickTypesForLevel | private | メソッド | pickTypesForLevel の主要処理を担当します。 |
public ArenaMobGauntlet(JavaPlugin plugin, MinigameDao dao)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
JavaPlugin pluginMinigameDao daoなし
public void onRegistered(Plugin pl)onRegistered の主要処理を担当します。
Plugin plなし
public String id()id の主要処理を担当します。
なし
public String id() { return "arena_mobgauntlet"; } public String displayName()id の主要処理を担当します。
) { return "arena_mobgauntlet"; } public String displayName(なし
public List<String> arenaIds()arenaIds の主要処理を担当します。
なし
public List<String> arenaIds() { return new ArrayList<>(arenaIds); } public void reloadArenas()arenaIds の主要処理を担当します。
) { return new ArrayList<>(arenaIds); } public void reloadArenas(なし
public boolean handleArenaSetupCmd(Plugin plugin, CommandSender sender, String arenaId, String subCmd)入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。
Plugin pluginCommandSender senderString arenaIdString subCmdなし
private static boolean inside2D(Location loc, Location center, double radius)inside2D の主要処理を担当します。
Location locLocation centerdouble radiusなし
public void join(Player p, String arenaId)join の主要処理を担当します。
Player pString arenaIdなし
private Session findSessionByPlayer(UUID u)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
UUID uなし
private void persistScoreAndBest(Player p, Session s)persistScoreAndBest の主要処理を担当します。
Player pSession sなし
public void giveStartKit(Player p)giveStartKit の主要処理を担当します。
Player pなし
private void tagKit(ItemStack it)tagKit の主要処理を担当します。
ItemStack itなし
private boolean isKit(ItemStack it)条件判定を行い、後続処理の分岐に使える真偽値を返します。
ItemStack itなし
private void stripKit(Player p)stripKit の主要処理を担当します。
Player pなし
private boolean isActive(UUID u)条件判定を行い、後続処理の分岐に使える真偽値を返します。
UUID uなし
public void onEntityExplode(EntityExplodeEvent e)イベント発生時の分岐と後続処理を担当します。
EntityExplodeEvent eなし
public void onBlockExplode(BlockExplodeEvent e)イベント発生時の分岐と後続処理を担当します。
BlockExplodeEvent eなし
public void onEntityChangeBlock(EntityChangeBlockEvent e)エンダーマン/ウィザー/ラヴェジャーなどの“ブロック改変”も禁止
EntityChangeBlockEvent eなし
public void onBlockIgnite(BlockIgniteEvent e)爆発や火球による着火も広がらないように
BlockIgniteEvent eなし
public void onHangingBreakByEntity(HangingBreakByEntityEvent e)額縁/絵画などの破壊も保護したい場合(任意)
HangingBreakByEntityEvent eなし
public void onMobDeath(EntityDeathEvent e)イベント発生時の分岐と後続処理を担当します。
EntityDeathEvent eなし
public void onLethalDamage(EntityDamageEvent e)瀕死ダメージをキャンセルして即ロビーへ返す(= 死亡画面を出さない)
EntityDamageEvent eなし
public void onDeath(PlayerDeathEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerDeathEvent eなし
public void onRespawn(PlayerRespawnEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerRespawnEvent eなし
public void leave(Player player)leave の主要処理を担当します。
Player playerなし
private void endGame(Session s, String reason)endGame の主要処理を担当します。
Session sString reasonなし
public List<String> top(String arenaId, String season, int limit)top の主要処理を担当します。
String arenaIdString seasonint limitなし
private Session load(String arena)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
String arenaなし
private void startIfNeeded(Session s)初期化と各種登録を行い、機能を有効化します。
Session sなし
private void announce(List<Player> ps, String msg)announce の主要処理を担当します。
List<Player> psString msgなし
private int countHostiles(Location c, int r)countHostiles の主要処理を担当します。
Location cint rなし
private void giveSupplies(List<Player> ps, int lv)giveSupplies の主要処理を担当します。
List<Player> psint lvなし
private List<ItemStack> suppliesForLevel(int level, Player p)suppliesForLevel の主要処理を担当します。
int levelPlayer pなし
private ItemStack kitItem(Material m, int amount)kitItem の主要処理を担当します。
Material mint amountなし
private ItemStack fireResPotion(int seconds)fireResPotion の主要処理を担当します。
int secondsなし
private PotionType tryPotionType(String... names)tryPotionType の主要処理を担当します。
String... namesなし
private ItemStack effectPotion(PotionEffectType type, int seconds, int amplifier, Material kind)effectPotion の主要処理を担当します。
PotionEffectType typeint secondsint amplifierMaterial kindなし
private ItemStack regenPotion(int seconds, int amplifier)regenPotion の主要処理を担当します。
int secondsint amplifierなし
private ItemStack strengthPotion(int seconds, int amplifier)strengthPotion の主要処理を担当します。
int secondsint amplifierなし
private ItemStack resistancePotion(int seconds, int amplifier)resistancePotion の主要処理を担当します。
int secondsint amplifierなし
private void spawnWave(Session s, int players)spawnWave の主要処理を担当します。
Session sint playersなし
private int waveCountForLevel(int level)waveCountForLevel の主要処理を担当します。
int levelなし
private double spawnMultiplierForPlayers(int players)spawnMultiplierForPlayers の主要処理を担当します。
int playersなし
private void spawnAtRing(World w, Location c, int radius, EntityType type)spawnAtRing の主要処理を担当します。
World wLocation cint radiusEntityType typeなし
private void protectFromZombification(Entity e)protectFromZombification の主要処理を担当します。
Entity eなし
public void onCreatureSpawn(CreatureSpawnEvent e)イベント発生時の分岐と後続処理を担当します。
CreatureSpawnEvent eなし
public void onTransform(EntityTransformEvent e)イベント発生時の分岐と後続処理を担当します。
EntityTransformEvent eなし
public void onEndermanTeleport(EntityTeleportEvent e)イベント発生時の分岐と後続処理を担当します。
EntityTeleportEvent eなし
private Session findSessionContaining(Location l)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
Location lなし
private void enforceBounds(Session s)enforceBounds の主要処理を担当します。
Session sなし
private void purgeArenaEntities(Session s)purgeArenaEntities の主要処理を担当します。
Session sなし
private Player nearestPlayer(Location c)nearestPlayer の主要処理を担当します。
Location cなし
private List<EntityType> pickTypesForLevel(int lv)pickTypesForLevel の主要処理を担当します。
int lvなし
onDeath → getEntity → isActive → getUniqueId → getDrops → removeIfonEndermanTeleport → getEntityType → findSessionContaining → getFrom → getTo → getWorldonLethalDamage → getEntity → isActive → getUniqueId → getHealth → getFinalDamageonTransform → getEntity → findSessionContaining → getLocation → getTransformedEntity → getTypeonBlockExplode → findSessionContaining → getBlock → getLocation → blockList → clearonMobDeath → getEntity → findSessionContaining → getLocation → getDrops → clear