起動・前提準備
初期テーブル、依存状態、定期処理の点灯など、このクラスが動き始める前提をまとめています。
毎日 0:00(JST) にスコアTOP5を確定し、ランダムエフェクトを「1日1回」発動できるボーナスを配布する。
com.example.rankingplugin.scoreeffectscoreeffect/DailyScoreEffectService.javaclass毎日 0:00(JST) にスコアTOP5を確定し、ランダムエフェクトを「1日1回」発動できるボーナスを配布する。 /rp scoreeffect で発動(TOP5外 or 本日使用済みはメッセージのみ)
毎日 0:00(JST) にスコアTOP5を確定し、ランダムエフェクトを「1日1回」発動できるボーナスを配布する。scoreeffect パッケージの 小〜中規模クラスで、運用中の主ループ・スケジューラを確認する起点です。全面展開版では、他の重点クラスと同じ章立てで読めるように補強しています。
DailyScoreEffectServiceensureTodayLoadedstarthandleCommandonJoinstopsendHintrecomputeToday初期テーブル、依存状態、定期処理の点灯など、このクラスが動き始める前提をまとめています。
イベント受理、定期監視、判定、進行更新など、実際に挙動を生む中心ロジックです。
停止時やフロー終端で残る実体・タスク・キャッシュを戻す出口です。
メインスレッド境界とバックグラウンド処理が交差します。重い処理やタイミング起因の不具合を追うときの要所です。
Bukkit イベントや内部イベントを受けたあと、どの状態を更新するかをまとめています。
このクラスが前提状態を揃え、外部から利用可能な形まで立ち上がる流れです。新規依存の追加や起動失敗の調査はまずここから追います。
イベント受理、判定、状態更新、通知までの主経路です。体感不具合や想定外の分岐はこの流れのどこで止まるかを見ると切り分けやすいです。
結果を保持し、必要なら永続化し、最後に掃除まで行う出口です。画面更新だけ合って保存が壊れるケースや残骸が残るケースの確認に向きます。
| Signature | 説明 | 主要呼び出し |
|---|---|---|
public DailyScoreEffectService(JavaPlugin plugin, DataSource ds, ScoreManager scoreManager) | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 | 主要呼び出しなし |
| Name | Visibility | Kind | 説明 |
|---|---|---|---|
| DailyScoreEffectService | public | コンストラクタ | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 |
| start | public | メソッド | 初期化と各種登録を行い、機能を有効化します。 |
| stop | public | メソッド | 動作中の処理やリソースを安全に停止・解放します。 |
| handleCommand | public | メソッド | /rp scoreeffect の本体 |
| onJoin | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| sendHint | private | メソッド | sendHint の主要処理を担当します。 |
| ensureTodayLoaded | private | メソッド | 今日分キャッシュをロード(必要なら生成)。 |
| recomputeToday | public | メソッド | 今日のTOP5を確定してDB&キャッシュを書き換える(非同期計算→同期通知)。 |
| scheduleNextMidnight | private | メソッド | scheduleNextMidnight の主要処理を担当します。 |
| potionTypeFromKey | private | メソッド | potionTypeFromKey の主要処理を担当します。 |
| effectDisplayName | private | メソッド | effectDisplayName の主要処理を担当します。 |
public DailyScoreEffectService(JavaPlugin plugin, DataSource ds, ScoreManager scoreManager)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
JavaPlugin pluginDataSource dsScoreManager scoreManagerなし
public void start()初期化と各種登録を行い、機能を有効化します。
なし
public void stop()動作中の処理やリソースを安全に停止・解放します。
なし
public void handleCommand(Player p)/rp scoreeffect の本体
Player pなし
public void onJoin(PlayerJoinEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerJoinEvent eなし
private void sendHint(Player p, ScoreEffectDao.DailyBonus b)sendHint の主要処理を担当します。
Player pScoreEffectDao.DailyBonus bなし
private void ensureTodayLoaded(boolean canRecomputeIfMissing)今日分キャッシュをロード(必要なら生成)。
boolean canRecomputeIfMissingなし
public void recomputeToday()今日のTOP5を確定してDB&キャッシュを書き換える(非同期計算→同期通知)。
なし
private void scheduleNextMidnight()scheduleNextMidnight の主要処理を担当します。
なし
private PotionEffectType potionTypeFromKey(String keyStr)potionTypeFromKey の主要処理を担当します。
String keyStrなし
private String effectDisplayName(String effectKey)effectDisplayName の主要処理を担当します。
String effectKeyなし
onJoin → getPlayer → ensureTodayLoaded → getUniqueId → used → sendHinthandleCommand → ensureTodayLoaded → now → equals → sendMessage → getUniqueIdstart → ensureTables → ensureTodayLoaded → scheduleNextMidnight → getPluginManager → registerEventsensureTodayLoaded → now → equals → clear → getScheduler → runTaskAsynchronouslystop → cancel → clear