起動・前提準備
初期テーブル、依存状態、定期処理の点灯など、このクラスが動き始める前提をまとめています。
主なメソッド
主なフィールド
Advancement 達成でスコアを付与する。
com.example.rankingpluginAdvancementListener.javaclassAdvancement 達成でスコアを付与する。 重要: - Bukkit API(AdvancementProgress / getBiome / getBlockAt など)はメインスレッドのみ。 - DB / ScoreService の処理は非同期に逃がす。
Advancement 達成でスコアを付与する。(root) パッケージの 小〜中規模クラスで、運用中の主ループ・スケジューラを確認する起点です。全面展開版では、他の重点クラスと同じ章立てで読めるように補強しています。
AdvancementListenerprocessDoneKeysonPlayerJoinonAdvancementcatchUpAdvancementscalcDelta初期テーブル、依存状態、定期処理の点灯など、このクラスが動き始める前提をまとめています。
イベント受理、定期監視、判定、進行更新など、実際に挙動を生む中心ロジックです。
メインスレッド境界とバックグラウンド処理が交差します。重い処理やタイミング起因の不具合を追うときの要所です。
Bukkit イベントや内部イベントを受けたあと、どの状態を更新するかをまとめています。
このクラスが前提状態を揃え、外部から利用可能な形まで立ち上がる流れです。新規依存の追加や起動失敗の調査はまずここから追います。
イベント受理、判定、状態更新、通知までの主経路です。体感不具合や想定外の分岐はこの流れのどこで止まるかを見ると切り分けやすいです。
結果を保持し、必要なら永続化し、最後に掃除まで行う出口です。画面更新だけ合って保存が壊れるケースや残骸が残るケースの確認に向きます。
| Signature | 説明 | 主要呼び出し |
|---|---|---|
public AdvancementListener(JavaPlugin plugin, ScoreManager manager, ScoreService service, AdvancementTracker tracker, RewardService rewardService) | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 | 主要呼び出しなし |
| Name | Visibility | Kind | 説明 |
|---|---|---|---|
| AdvancementListener | public | コンストラクタ | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 |
| onPlayerJoin | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| catchUpAdvancements | public | メソッド | 既に達成済みの進捗を「月ごとに重複しない」形でキャッチアップ付与する。 |
| processDoneKeys | private | メソッド | processDoneKeys の主要処理を担当します。 |
| onAdvancement | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| calcDelta | private | メソッド | calcDelta の主要処理を担当します。 |
public AdvancementListener(JavaPlugin plugin, ScoreManager manager, ScoreService service, AdvancementTracker tracker, RewardService rewardService)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
JavaPlugin pluginScoreManager managerScoreService serviceAdvancementTracker trackerRewardService rewardServiceなし
public void onPlayerJoin(PlayerJoinEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerJoinEvent eなし
public void catchUpAdvancements(Player p)既に達成済みの進捗を「月ごとに重複しない」形でキャッチアップ付与する。
Player pなし
private void processDoneKeys(UUID uuid, String name, YearMonth month, Set<NamespacedKey> doneKeys)processDoneKeys の主要処理を担当します。
UUID uuidString nameYearMonth monthSet<NamespacedKey> doneKeysなし
public void onAdvancement(PlayerAdvancementDoneEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerAdvancementDoneEvent eなし
private static long calcDelta(NamespacedKey key)calcDelta の主要処理を担当します。
NamespacedKey keyなし
onAdvancement → getPlayer → blocked → isLikelyMcid → getName → getUniqueIdonPlayerJoin → getPlayer → blocked → getScheduler → runTaskLater → isOnlineprocessDoneKeys → getScore → toString → has → record → calcDeltacatchUpAdvancements → isOnline → isPrimaryThread → getScheduler → runTask → blockedcalcDelta → contains