Score Listener に関するイベント監視を担当します。

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

クラス説明

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

責務と見どころ

重点クラスの詳細解説

Score Listener に関するイベント監視を担当します。(root) パッケージの中でも 485 行規模の中核クラスで、運用中の主ループ・スケジューラが一か所に集まっています。中規模クラス群の中では変更影響が広く、章立てで読む価値が高いため重点解説へ追加しています。

最初に追う読む順番

  1. ScoreListener
    依存オブジェクトと初期状態を束ね、このクラスが担当するランタイムの前提を固めます。
  2. onPlayerDeath
    運用中の中心ループです。イベント受理から状態更新までの主経路を追えます。
  3. onMobDamage
    運用中の中心ループです。イベント受理から状態更新までの主経路を追えます。
  4. onMobDeath
    運用中の中心ループです。イベント受理から状態更新までの主経路を追えます。
  5. extractScoringDamage
    newDamage のうち、「スコアに反映してよいダメージ量」を返す。
  6. isRealScorePlayer
    スコア対象として扱っていい「本物のプレイヤー」かどうか。
  7. scrubServantAliasScore
    scrubServantAliasScore の主要処理を担当します。
  8. inFantasia
    inFantasia の主要処理を担当します。
  9. fantasiaMobGameActive
    fantasiaMobGameActive の主要処理を担当します。

内部サブシステムの地図

代表フロー詳解

初期化と起動の流れ

  1. ScoreListener
  2. getFsScore

このクラスが前提状態を揃え、外部から利用可能な形まで立ち上がる流れです。新規依存の追加や起動失敗の調査はまずここから追います。

通常運用の中心フロー

  1. onPlayerDeath
  2. onMobDamage
  3. onMobDeath

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

変更時の注意点

フィールド

VisibilityTypeName役割
privateJavaPluginpluginプラグイン本体参照です。
privateScoreManagermanager関連マネージャーへの参照です。
privateScoreServiceservice関連サービスへの参照です。
privateRewardServicerewardService関連サービスへの参照です。
privateDamageTrackerdamageTrackerdamageTracker の状態を保持します。
privateJackpotServicejackpotService関連サービスへの参照です。
privateMiniJackpotServiceminiJackpotService関連サービスへの参照です。
privateCurrencyServicecurrencyService関連サービスへの参照です。
privateEventServiceeventService関連サービスへの参照です。
privateEventRuntimeServiceeventRuntimeeventRuntime の状態を保持します。
privateServerDifficultyServicedifficultyService関連サービスへの参照です。
privateLevelServantServicelevelServantService関連サービスへの参照です。
privateMap<UUID, Long>lastDeathHandledlastDeathHandled の状態を保持します。
privateMap<UUID, Double>damageScoreCountdamageScoreCount の状態を保持します。
privateStringFANTASIA_WORLDFANTASIA_WORLD の状態を保持します。
privateNamespacedKeyKEY_FS_ACTIVEKEY_FS_ACTIVE の状態を保持します。
privateNamespacedKeyKEY_FS_SCOREKEY_FS_SCORE の状態を保持します。
privateNamespacedKeyKEY_FS_HISCOREKEY_FS_HISCORE の状態を保持します。
privateSet<EntityType>NEUTRALNEUTRAL の状態を保持します。
privateSet<EntityType>MID_BOSSMID_BOSS の状態を保持します。
privateSet<EntityType>BOSSBOSS の状態を保持します。

コンストラクタ / 初期化

Signature説明主要呼び出し
public ScoreListener(JavaPlugin plugin, ScoreManager manager, ScoreService service, RewardService rewardService, DamageTracker damageTracker, JackpotService jackpotService, MiniJackpotService miniJackpotService, CurrencyService currencyService, EventService eventService, EventRuntimeService eventRuntime, ServerDifficultyService difficultyService, LevelServantService levelServantService)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。主要呼び出しなし

メソッド索引

NameVisibilityKind説明
ScoreListenerpublicコンストラクタ依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
extractScoringDamageprivateメソッドnewDamage のうち、「スコアに反映してよいダメージ量」を返す。
isRealScorePlayerprivateメソッドスコア対象として扱っていい「本物のプレイヤー」かどうか。
scrubServantAliasScoreprivateメソッドscrubServantAliasScore の主要処理を担当します。
inFantasiaprivateメソッドinFantasia の主要処理を担当します。
fantasiaMobGameActiveprivateメソッドfantasiaMobGameActive の主要処理を担当します。
getFsScoreprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
addFsScoreprivateメソッドaddFsScore の主要処理を担当します。
finalizeFsOnDeathprivateメソッドfinalizeFsOnDeath の主要処理を担当します。
isUltraDiffprivateメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
onPlayerDeathpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onMobDamagepublicイベント処理イベント発生時の分岐と後続処理を担当します。
onMobDeathpublicイベント処理イベント発生時の分岐と後続処理を担当します。
calcMultiplierprivateメソッドcalcMultiplier の主要処理を担当します。

メソッド詳細

ScoreListener

コンストラクタpublic
public ScoreListener(JavaPlugin plugin, ScoreManager manager, ScoreService service, RewardService rewardService, DamageTracker damageTracker, JackpotService jackpotService, MiniJackpotService miniJackpotService, CurrencyService currencyService, EventService eventService, EventRuntimeService eventRuntime, ServerDifficultyService difficultyService, LevelServantService levelServantService)

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

引数

throws

なし

主要な呼び出し順

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

extractScoringDamage

メソッドprivate
private double extractScoringDamage(LivingEntity target, double newDamage)

newDamage のうち、「スコアに反映してよいダメージ量」を返す。

引数

throws

なし

主要な呼び出し順

getMaxHealthgetUniqueIdgetOrDefaultmin

isRealScorePlayer

メソッドprivate
private boolean isRealScorePlayer(Player p)

スコア対象として扱っていい「本物のプレイヤー」かどうか。

引数

throws

なし

主要な呼び出し順

resolveOwnerIdForPotentialServantsaveScoregetNameisTrackedServanthasMetadataisEligibleOnlinePlayer

scrubServantAliasScore

メソッドprivate
private void scrubServantAliasScore(String servantScoreName)

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

引数

throws

なし

主要な呼び出し順

isBlanksaveScore

inFantasia

メソッドprivatestatic
private static boolean inFantasia(Player p)

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

引数

throws

なし

主要な呼び出し順

getWorldgetNameequalsIgnoreCase

fantasiaMobGameActive

メソッドprivatestatic
private static boolean fantasiaMobGameActive(Player p)

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

引数

throws

なし

主要な呼び出し順

getPersistentDataContainergetOrDefault

getFsScore

メソッドprivatestatic
private static long getFsScore(Player p)

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

引数

throws

なし

主要な呼び出し順

getPersistentDataContainergetOrDefault

addFsScore

メソッドprivatestatic
private static void addFsScore(Player p, long delta)

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

引数

throws

なし

主要な呼び出し順

getPersistentDataContainergetOrDefault

finalizeFsOnDeath

メソッドprivatestatic
private static void finalizeFsOnDeath(Player p)

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

引数

throws

なし

主要な呼び出し順

getPersistentDataContainergetOrDefaultsendMessageformat

isUltraDiff

メソッドprivate
private boolean isUltraDiff()

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

引数

throws

なし

主要な呼び出し順

getDifficulty

onPlayerDeath

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

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

引数

throws

なし

主要な呼び出し順

getEntitycurrentTimeMillisgetUniqueIdsetDeathMessageblockedinFantasiafantasiaMobGameActivefinalizeFsOnDeath

onMobDamage

イベント処理public
public void onMobDamage(EntityDamageByEntityEvent e)

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

引数

throws

なし

主要な呼び出し順

getDamagerresolveOwnerIdForPotentialServantgetNamescrubServantAliasScoregetPlayerhasMetadataisRealScorePlayerblocked

onMobDeath

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

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

引数

throws

なし

主要な呼び出し順

getEntitygetKillerresolveOwnerIdForPotentialServantgetNamescrubServantAliasScoregetPlayerhasMetadatagetScoringOwnerFromLastDamage

calcMultiplier

メソッドprivate
private int calcMultiplier(Entity entity)

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

引数

throws

なし

主要な呼び出し順

getTypecontains

代表的な処理フロー

  1. onMobDamage フロー
    onMobDamage → getDamager → resolveOwnerIdForPotentialServant → getName → scrubServantAliasScore → getPlayer
    イベント発生時の分岐と後続処理を担当します。
  2. onMobDeath フロー
    onMobDeath → getEntity → getKiller → resolveOwnerIdForPotentialServant → getName → scrubServantAliasScore
    イベント発生時の分岐と後続処理を担当します。
  3. onPlayerDeath フロー
    onPlayerDeath → getEntity → currentTimeMillis → getUniqueId → setDeathMessage → blocked
    イベント発生時の分岐と後続処理を担当します。
  4. isRealScorePlayer フロー
    isRealScorePlayer → resolveOwnerIdForPotentialServant → saveScore → getName → isTrackedServant → hasMetadata
    スコア対象として扱っていい「本物のプレイヤー」かどうか。
  5. extractScoringDamage フロー
    extractScoringDamage → getMaxHealth → getUniqueId → getOrDefault → min
    newDamage のうち、「スコアに反映してよいダメージ量」を返す。

外部との接点

Web ルート

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

SQL / テーブル

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

関連クラス

補足