New Year celebration (default: JST 12/31 23:00 - 01/01 01:00).

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

クラス説明

New Year celebration (default: JST 12/31 23:00 - 01/01 01:00).

Features:
- Ambient celebration effects during the window
- Countdown (ActionBar + Title + optional BossBar)
- Midnight show: ring fireworks around each player + fixed fireworks at spawn

責務と見どころ

重点クラスの詳細解説

New Year celebration (default: JST 12/31 23:00 - 01/01 01:00).。newyear パッケージの中でも 591 行規模の中核クラスで、運用中の主ループ・スケジューラが一か所に集まっています。中規模クラス群の中では変更影響が広く、章立てで読む価値が高いため重点解説へ追加しています。

最初に追う読む順番

  1. NewYearCelebrationService
    依存オブジェクトと初期状態を束ね、このクラスが担当するランタイムの前提を固めます。
  2. ensureBossBar
    不足テーブル・設定・内部状態を先に揃える入口です。変更を入れる前提条件の確認地点になります。
  3. start
    定期処理や公開 API の起動地点で、外部から見える挙動がここから立ち上がります。
  4. startCountdown
    定期処理や公開 API の起動地点で、外部から見える挙動がここから立ち上がります。
  5. startMidnightShow
    定期処理や公開 API の起動地点で、外部から見える挙動がここから立ち上がります。
  6. spawnRingParticles
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  7. spawnRingFireworks
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  8. spawnSpiralParticles
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  9. spawnFirework
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。

内部サブシステムの地図

状態反映と永続化

メモリ状態と保存状態を揃え、結果を次の呼び出しや画面表示へ繋ぐ部分です。

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

代表フロー詳解

通常運用の中心フロー

  1. tick
  2. updateCountdownDisplay

イベント受理、判定、状態更新、通知までの主経路です。体感不具合や想定外の分岐はこの流れのどこで止まるかを見ると切り分けやすいです。

反映・保存・終了の流れ

  1. updateCountdownDisplay
  2. stop
  3. cleanupBossBar

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

変更時の注意点

フィールド

VisibilityTypeName役割
privatePluginpluginプラグイン本体参照です。
privateNamespacedKeynyFireworkKeynyFireworkKey の状態を保持します。
privateBukkitTasktickTask非同期処理やスケジューラ制御に使うハンドルです。
privateBukkitTaskcountdownTask非同期処理やスケジューラ制御に使うハンドルです。
privateBukkitTaskmidnightShowTask非同期処理やスケジューラ制御に使うハンドルです。
privateBossBarcountdownBarcountdownBar の状態を保持します。
privateNewYearFireworkDamageListenerdamageListenerdamageListener の状態を保持します。
privateZoneIdzonezone の状態を保持します。
privatebooleanenabledenabled の状態を保持します。
privateintlastEventYearTriggeredlastEventYearTriggered の状態を保持します。
privateintlastAmbientKeylastAmbientKey の状態を保持します。
privateintlastFireworkKeylastFireworkKey の状態を保持します。

コンストラクタ / 初期化

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

メソッド索引

NameVisibilityKind説明
NewYearCelebrationServicepublicコンストラクタ依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
startpublicメソッド初期化と各種登録を行い、機能を有効化します。
stoppublicメソッド動作中の処理やリソースを安全に停止・解放します。
readZoneprivateメソッドreadZone の主要処理を担当します。
tickprivateメソッドtick の主要処理を担当します。
computeWindowprivateメソッドcomputeWindow の主要処理を担当します。
buildWindowprivateメソッド表示用または出力用のデータを組み立てます。
parseMdTimeprivateメソッド入力テキストや設定値を解析して内部表現へ変換します。
maybeAmbientprivateメソッドmaybeAmbient の主要処理を担当します。
maybeFireworksprivateメソッドmaybeFireworks の主要処理を担当します。
maybeStartCountdownprivateメソッドmaybeStartCountdown の主要処理を担当します。
startCountdownprivateメソッド初期化と各種登録を行い、機能を有効化します。
updateCountdownDisplayprivateメソッド状態を永続化または更新し、最新状態へ反映します。
triggerMidnightprivateメソッドtriggerMidnight の主要処理を担当します。
startMidnightShowprivateメソッド初期化と各種登録を行い、機能を有効化します。
spawnRingParticlesprivateメソッドspawnRingParticles の主要処理を担当します。
spawnRingFireworksprivateメソッドspawnRingFireworks の主要処理を担当します。
spawnSpiralParticlesprivateメソッドspawnSpiralParticles の主要処理を担当します。
spawnFireworkprivateメソッドspawnFirework の主要処理を担当します。
spawnFireworkFallbackprivateメソッドVisual-only firework fallback used when entity-spawn / explode is blocked by protections.
ensureBossBarprivateメソッド必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
cleanupBossBarprivateメソッドcleanupBossBar の主要処理を担当します。
colorprivateメソッドcolor の主要処理を担当します。
rndprivateメソッドrnd の主要処理を担当します。
rndCircleXprivateメソッドrndCircleX の主要処理を担当します。
rndCircleZprivateメソッドrndCircleZ の主要処理を担当します。

メソッド詳細

NewYearCelebrationService

コンストラクタpublic
public NewYearCelebrationService(Plugin plugin)

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

引数

throws

なし

主要な呼び出し順

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

start

メソッドpublic
public void start()

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

引数

throws

なし

主要な呼び出し順

getConfiggetBooleanreadZoneruntickgetLoggerwarninggetMessage

stop

メソッドpublic
public void stop()

動作中の処理やリソースを安全に停止・解放します。

引数

throws

なし

主要な呼び出し順

cancelcleanupBossBarunregisterAll

readZone

メソッドprivate
private ZoneId readZone()

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

引数

throws

なし

主要な呼び出し順

getConfiggetStringtrimisEmptygetLoggerwarning

tick

メソッドprivate
private void tick()

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

引数

throws

なし

主要な呼び出し順

nowcomputeWindowisInWindowcleanupBossBarmaybeAmbientmaybeFireworksmaybeStartCountdownisAfter

computeWindow

メソッドprivate
private Window computeWindow(ZonedDateTime now)

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

引数

throws

なし

主要な呼び出し順

getYearbuildWindowisInWindowisBefore

buildWindow

メソッドprivate
private Window buildWindow(int eventYear)

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

引数

throws

なし

主要な呼び出し順

parseMdTimegetConfiggetString

parseMdTime

メソッドprivatestatic
private static MdTime parseMdTime(String raw, MdTime def)

入力テキストや設定値を解析して内部表現へ変換します。

引数

throws

なし

主要な呼び出し順

trimreplacesplitparseInt

maybeAmbient

メソッドprivate
private void maybeAmbient(ZonedDateTime now)

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

引数

throws

なし

主要な呼び出し順

maxgetConfiggetInttoEpochSecondgetOnlinePlayersgetLocationgetWorldspawnParticle

maybeFireworks

メソッドprivate
private void maybeFireworks(ZonedDateTime now)

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

引数

throws

なし

主要な呼び出し順

maxgetConfiggetInttoEpochSecondgetOnlinePlayersgetWorldspawnFireworkgetLocation

maybeStartCountdown

メソッドprivate
private void maybeStartCountdown(ZonedDateTime now, Window w)

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

引数

throws

なし

主要な呼び出し順

getConfiggetBooleanmaxgetIntbetweengetSecondsstartCountdown

startCountdown

メソッドprivate
private void startCountdown(int eventYear, ZonedDateTime midnight, int startSeconds)

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

引数

throws

なし

主要な呼び出し順

maxgetConfiggetIntgetBooleanensureBossBarrunnowbetween

updateCountdownDisplay

メソッドprivate
private void updateCountdownDisplay(int secLeft, int startSeconds, int titleSeconds)

状態を永続化または更新し、最新状態へ反映します。

引数

throws

なし

主要な呼び出し順

colorgetOnlinePlayerssendTitlespigotsendMessage

triggerMidnight

メソッドprivate
private void triggerMidnight(int eventYear)

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

引数

throws

なし

主要な呼び出し順

valueOfbroadcastMessagecolorgetOnlinePlayerssendTitleplaySoundgetLocationgetConfig

startMidnightShow

メソッドprivate
private void startMidnightShow()

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

引数

throws

なし

主要な呼び出し順

maxgetConfiggetIntgetDoublegetBooleangetStringtrimisEmpty

spawnRingParticles

メソッドprivate
private void spawnRingParticles(World w, Location center, int points, double radius)

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

引数

throws

なし

主要な呼び出し順

cossinspawnParticleclone

spawnRingFireworks

メソッドprivate
private void spawnRingFireworks(World w, Location center, int fireworks, double radius)

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

引数

throws

なし

主要な呼び出し順

cossinclonespawnFirework

spawnSpiralParticles

メソッドprivate
private void spawnSpiralParticles(World w, Location center, int tickIndex)

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

引数

throws

なし

主要な呼び出し順

maxgetConfiggetIntgetDoublesincosspawnParticleclone

spawnFirework

メソッドprivate
private void spawnFirework(Location at, int power)

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

引数

throws

なし

主要な呼び出し順

getWorldspawngetPersistentDataContaineraddScoreboardTaggetFireworkMetasetPowermaxmin

spawnFireworkFallback

メソッドprivate
private void spawnFireworkFallback(Location at)

Visual-only firework fallback used when entity-spawn / explode is blocked by protections.

引数

throws

なし

主要な呼び出し順

getWorldclonemaxgetConfiggetIntspawnParticleplaySound

ensureBossBar

メソッドprivate
private void ensureBossBar()

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

引数

throws

なし

主要な呼び出し順

createBossBarcolorsetVisible

cleanupBossBar

メソッドprivate
private void cleanupBossBar()

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

引数

throws

なし

主要な呼び出し順

removeAllsetVisible

color

メソッドprivatestatic
private static String color(String s)

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

引数

throws

なし

主要な呼び出し順

translateAlternateColorCodes

rnd

メソッドprivatestatic
private static double rnd(double min, double max)

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

引数

throws

なし

主要な呼び出し順

currentnextDouble

rndCircleX

メソッドprivatestatic
private static double rndCircleX(double radius)

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

引数

throws

なし

主要な呼び出し順

currentnextDoublecos

rndCircleZ

メソッドprivatestatic
private static double rndCircleZ(double radius)

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

引数

throws

なし

主要な呼び出し順

currentnextDoublesin

代表的な処理フロー

  1. start フロー
    start → getConfig → getBoolean → readZone → run → tick
    初期化と各種登録を行い、機能を有効化します。
  2. startCountdown フロー
    startCountdown → max → getConfig → getInt → getBoolean → ensureBossBar
    初期化と各種登録を行い、機能を有効化します。
  3. startMidnightShow フロー
    startMidnightShow → max → getConfig → getInt → getDouble → getBoolean
    初期化と各種登録を行い、機能を有効化します。
  4. updateCountdownDisplay フロー
    updateCountdownDisplay → color → getOnlinePlayers → sendTitle → spigot → sendMessage
    状態を永続化または更新し、最新状態へ反映します。
  5. ensureBossBar フロー
    ensureBossBar → createBossBar → color → setVisible
    必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。

外部との接点

Web ルート

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

SQL / テーブル

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

関連クラス

補足