Score Manager に関する管理・集約処理を担当します。

60Fields
1Constructors
72Methods
1837Lines
Package
com.example.rankingplugin
Source
ScoreManager.java
Kind
class
Roles
イベント駆動非同期 / スケジューラ初期化 / ブートストラップ集約 / 制御
このクラスにも章立て解説を追加しています。 自動抽出の一覧だけでなく、下の『重点クラスの詳細解説』で読む順番・内部サブシステム・変更時の注意点まで追えます。 全クラス章立てガイドを見る
サブシステム横断ガイドもあります。 このクラスを含む上位の流れは こちらの処理遷移図ページ から読むと把握しやすいです。

クラス説明

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

責務と見どころ

重点クラスの詳細解説

ランキングサイドバーの集約器で、通常ランキング、ギルド、シーズン、ビンゴ、スロット、防御値など複数表示モードの切り替えと更新周期を一手に担っています。

最初に追う読む順番

  1. ScoreManager
    依存サービスとボード種別がどこへ差し込まれるかを確認します。
  2. start
    周期更新タスクの本体で、負荷と更新順序を見る起点です。
  3. setupBoard
    通常ランキング用ボードの初期組み立てです。
  4. setupGuildBoard
    ギルド表示の専用ボードです。
  5. setupSeasonBoard
    シーズン表示の専用ボードです。
  6. getDesiredSidebarMode
    どのプレイヤーがどのモードを見るかの分岐点です。
  7. ensureSidebarMode
    ボードの実物を切り替える中核です。
  8. buildRankingSnapshot
    表示用ランキングの材料を作ります。
  9. updateRankingSection
    上部ランキング表示を実際の行へ落とします。
  10. updateBottomSection
    自己順位、防御、ビンゴ、スロットなどの下段更新です。
  11. doMonthlyRollover
    月替わり境界処理です。

内部サブシステムの地図

代表フロー詳解

プレイヤー参加時のボード初期化

  1. onPlayerJoin
  2. setupBoard / setupGuildBoard / setupSeasonBoard
  3. ensureSidebarMode
  4. postRebuildRefresh

参加直後はまず表示モードに応じたボードを用意し、その後に補助行を順次埋めます。初回だけ欠ける表示はこの流れで見つかります。

装備変更による防御再計算

  1. onInvClick / onInvDrag / onInteract
  2. scheduleEquipResync
  3. recomputeReducePercentInt
  4. updateDefLine

装備変更イベントは瞬間的にインベントリ状態が安定しないため、少し遅らせて再計算する前提になっています。即時計算へ戻すと数値ずれが出やすいです。

変更時の注意点

外部接点

外部ルート

このクラス内で直接見つかる主な Web ルート/項目名です。

PUT season_titlePUT tier_currentPUT tier_maxPUT pointsPUT tier_reqPUT points_to_nextPUT daily_donePUT daily_totalPUT weekly_donePUT weekly_total

主な永続化テーブル

SQL 文字列から抽出できた主要テーブルです。スキーマ変更時の確認用です。

applySidebarVisibilitynowSLOTerrorfailed

フィールド

VisibilityTypeName役割
privateStringFANTASIA_WORLD_NAMEFANTASIA_WORLD_NAME の状態を保持します。
privateJavaPluginpluginプラグイン本体参照です。
privateScoreServiceservice関連サービスへの参照です。
privateAdvancementTrackertrackertracker の状態を保持します。
privateRewardServicerewardService関連サービスへの参照です。
privateOnlineStatusServiceonlineStatusService関連サービスへの参照です。
privateBingoDataServicebingoDataService関連サービスへの参照です。
privateSlotManagerslotManager関連マネージャーへの参照です。
privateCurrencyServicecurrencyService関連サービスへの参照です。
privateObjectvaultEcovaultEco の状態を保持します。
privateList<Map.Entry<String,Long>>lastTopListlastTopList の状態を保持します。
privateMap<String, Set<String>>lastTopOnlineServerslastTopOnlineServers の状態を保持します。
privatelonglastTopDisplayPhaselastTopDisplayPhase の状態を保持します。
privateMap<UUID, SelfData>lastSelfDatalastSelfData の状態を保持します。
privateSeasonServiceseasonService関連サービスへの参照です。
privateGuildServiceguildService関連サービスへの参照です。
privateLevelingServicelevelingService関連サービスへの参照です。
privateSidebarPrefssidebarPrefssidebarPrefs の状態を保持します。
privatejava.lang.reflect.MethodvaultGetBalanceMethodvaultGetBalanceMethod の状態を保持します。
privatejava.util.Set<java.util.UUID>sidebarEnabledsidebarEnabled の状態を保持します。
privateStringSEP_ENTRYSEP_ENTRY の状態を保持します。
privateStringSELF_ENTRYSELF_ENTRY の状態を保持します。
privateStringCURRENCY_ENTRYCURRENCY_ENTRY の状態を保持します。
privateintTOP_SIZETOP_SIZE の状態を保持します。
privateString[]RANK_KEYSRANK_KEYS の状態を保持します。
privateChatColorSEP_KEYSEP_KEY の状態を保持します。
privateChatColorBINGO_KEYBINGO_KEY の状態を保持します。
privateString[]BINGO_ROW_KEYSBINGO_ROW_KEYS の状態を保持します。
privateChatColorSLOT_KEYSLOT_KEY の状態を保持します。
privateStringDEF_ENTRYDEF_ENTRY の状態を保持します。
privateStringSHIELD_ENTRYSHIELD_ENTRY の状態を保持します。
privateShieldManagershieldManager関連マネージャーへの参照です。
privateMap<UUID, Scoreboard>boardsboards の状態を保持します。
privateBukkitTaskrankingTask非同期処理やスケジューラ制御に使うハンドルです。
privateBukkitTaskslotUpdateTask非同期処理やスケジューラ制御に使うハンドルです。
privateBukkitTaskselfLineTask非同期処理やスケジューラ制御に使うハンドルです。
privateZoneIdMONTH_TZMONTH_TZ の状態を保持します。
privateStringGUILD_OBJGUILD_OBJ の状態を保持します。
privateYearMonthlastMonthlastMonth の状態を保持します。
privateBukkitTaskguildSidebarTask非同期処理やスケジューラ制御に使うハンドルです。
privateintSLOT_UPDATE_STRIPESSLOT_UPDATE_STRIPES の状態を保持します。
privateintslotStripeCursorslotStripeCursor の状態を保持します。
privatejava.util.concurrent.ConcurrentHashMap<java.util.UUID, String>lastSlotLinelastSlotLine の状態を保持します。
privateMap<UUID, BingoManager>bingoMapbingoMap の状態を保持します。
privateintTREE_GAP_SPACESTREE_GAP_SPACES の状態を保持します。
privateAnimaTreeEngineanimaTreeanimaTree の状態を保持します。
privateMap<String, Long>cachedAllScoresキャッシュまたは直近計算結果を保持します。
privateMap<String, Integer>cachedRanksキャッシュまたは直近計算結果を保持します。
privatelongcachedRankAtMsキャッシュまたは直近計算結果を保持します。
privatelongRANK_CACHE_INTERVAL_MSキャッシュまたは直近計算結果を保持します。
privatelongMONTHLY_TOP_CACHE_MSキャッシュまたは直近計算結果を保持します。
privatejava.util.concurrent.ConcurrentHashMap<java.util.UUID, Integer>cachedReducePctIntキャッシュまたは直近計算結果を保持します。
privatejava.util.concurrent.ConcurrentHashMap<java.util.UUID, Integer>cachedShieldCurIntキャッシュまたは直近計算結果を保持します。
privatejava.util.concurrent.ConcurrentHashMap<java.util.UUID, Integer>cachedShieldMaxIntキャッシュまたは直近計算結果を保持します。
privatejava.util.concurrent.ConcurrentHashMap<java.util.UUID, String>lastDefPrefixlastDefPrefix の状態を保持します。
privatejava.util.Set<java.util.UUID>pendingEquipRefreshpendingEquipRefresh の状態を保持します。
privateStringMETA_DEF_ZEROMETA_DEF_ZERO の状態を保持します。
privatejava.util.concurrent.ConcurrentHashMap<java.util.UUID, BottomCache>bottomCacheキャッシュまたは直近計算結果を保持します。
privatelongCURRENCY_CACHE_MSキャッシュまたは直近計算結果を保持します。
privatelongTREE_CACHE_MSキャッシュまたは直近計算結果を保持します。

コンストラクタ / 初期化

Signature説明主要呼び出し
public ScoreManager(JavaPlugin plugin, ScoreService service, AdvancementTracker tracker, RewardService rewardService, OnlineStatusService onlineStatusService, BingoDataService bingoDataService, SlotManager slotManager, CurrencyService currencyService, ShieldManager shieldManager, AnimaTreeEngine animaTree, SeasonService seasonService, GuildService guildService, LevelingService levelingService, SidebarPrefs sidebarPrefs)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。loadLastMonthOrNow → forName → getServer → getServicesManager → getRegistration → getProvider

メソッド索引

NameVisibilityKind説明
isFantasiaWorldprivateメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
forceRebuildSidebarprivateメソッドForce rebuild & resend sidebar scoreboard (dimension-change/respawn safe).
postRebuildRefreshprivateメソッドAfter rebuild, refresh all lines (rank/self/def/bingo/slot) without relying on long-interval tasks.
forceUpdateSlotLineprivateメソッドForce update SLOT line for one player (used right after rebuild).
ensurePlayerHasCachedBoardprivateメソッドEnsure the player is actually using our cached board (if sidebar is enabled).
trim64privateメソッドtrim64 の主要処理を担当します。
treeGapprivateメソッドtreeGap の主要処理を担当します。
safeIntForScoreboardprivateメソッドsafeIntForScoreboard の主要処理を担当します。
filterMcidprivateメソッドfilterMcid の主要処理を担当します。
filterMcidEntriesprivateメソッドfilterMcidEntries の主要処理を担当します。
buildRankingSnapshotprivateメソッド表示用または出力用のデータを組み立てます。
ScoreManagerpublicコンストラクタ依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
updateDefLineprivateメソッド状態を永続化または更新し、最新状態へ反映します。
recomputeReducePercentIntprivateメソッドrecomputeReducePercentInt の主要処理を担当します。
scheduleEquipResyncprivateメソッドscheduleEquipResync の主要処理を担当します。
onShieldChangepublicイベント処理イベント発生時の分岐と後続処理を担当します。
isArmorPieceprivateメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
onInvClickpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onInvDragpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onInteractpublicイベント処理イベント発生時の分岐と後続処理を担当します。
initShieldCacheprivateメソッド初期化と各種登録を行い、機能を有効化します。
onJoinShieldInitpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onRespawnShieldInitpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onItemBreakpublicイベント処理イベント発生時の分岐と後続処理を担当します。
isSidebarEnabledpublicメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
setSidebarEnabledpublicメソッドDB への問い合わせまたは更新処理を担当します。
inEventWorldprivateメソッドinEventWorld の主要処理を担当します。
onWorldChangepublicイベント処理イベント発生時の分岐と後続処理を担当します。
onRespawnSidebarpublicイベント処理イベント発生時の分岐と後続処理を担当します。
isSidebarVisibleprivateメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
applySidebarVisibilitypublicメソッド実際に可視状態を適用する(ON なら構築→更新 / OFF ならクリア)
isSeasonSidebarActiveprivateメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
getDesiredSidebarModeprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
ensureSidebarModeprivateメソッド開催状態とプレイヤー設定を見て、必要ならサイドバーのレイアウトだけ切替(中身は別メソッドで更新)
updateSelfLineprivateメソッド状態を永続化または更新し、最新状態へ反映します。
onPlayerJoinpublicイベント処理プレイヤー参加時に1度だけボードを組み立て+初回更新
getBingoManagerpublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
setupGuildBoardprivateメソッド初期化と各種登録を行い、機能を有効化します。
barprivateメソッドbar の主要処理を担当します。
updateGuildBoardprivateメソッド状態を永続化または更新し、最新状態へ反映します。
ensureGuildBoardLinesprivateメソッド必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
setupBoardpublicメソッド初回組み立て:Objective+Team+初期 Score を設定
scheduleMonthlyRolloverprivateメソッドscheduleMonthlyRollover の主要処理を担当します。
loadLastMonthOrNowprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
saveLastMonthprivateメソッド状態を永続化または更新し、最新状態へ反映します。
getRankingTopForBonuspublicメソッド毎日0:00の集計など、負荷を抑えて外部から「現在のランキングTOP」を取得したい用途向け。
startpublicメソッド初期化と各種登録を行い、機能を有効化します。
doMonthlyRolloverprivateメソッドDB への問い合わせまたは更新処理を担当します。
handleStartupMonthBoundaryprivateメソッド入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。
updateLevelLineprivateメソッド状態を永続化または更新し、最新状態へ反映します。
onPlayerQuitpublicイベント処理イベント発生時の分岐と後続処理を担当します。
updateAllpublicメソッド上段+下段をまとめて更新(ランキング用のときだけ)
currentTopDisplayPhaseprivateメソッドcurrentTopDisplayPhase の主要処理を担当します。
isServerIdWindowprivateメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
pickDisplayServerIdprivateメソッドpickDisplayServerId の主要処理を担当します。
abbreviateSidebarLabelprivateメソッドabbreviateSidebarLabel の主要処理を担当します。
buildRankingDisplayLabelprivateメソッド表示用または出力用のデータを組み立てます。
updateRankingSectionprivateメソッド上段:ランキングのみ差分更新
updateRankingAsBingo5x5privateメソッド状態を永続化または更新し、最新状態へ反映します。
refreshTopOnlypublicメソッドrefreshTopOnly の主要処理を担当します。
updateBottomSectionprivateメソッド下段:BINGO+SLOTのみ差分更新(ランキングボードのときだけ)
invalidateTreeCachepublicメソッドinvalidateTreeCache の主要処理を担当します。
refreshBingoAndTreeNowpublicメソッドrefreshBingoAndTreeNow の主要処理を担当します。
refreshBingoAndTreeNowSyncprivateメソッドrefreshBingoAndTreeNowSync の主要処理を担当します。
updateBottomAccuratepublicメソッド状態を永続化または更新し、最新状態へ反映します。
tryOneShotBackfillprivateメソッドtryOneShotBackfill の主要処理を担当します。
reset5x5ForNextEventpublicメソッドreset5x5ForNextEvent の主要処理を担当します。
refreshSidebarNowpublicメソッドコマンド等から即時切替を要求する
setupSeasonBoardprivateメソッドSeason Journey 用のObjective/Teamを構築(行数はconfigに合わせて可変)
updateSeasonBoardprivateメソッドSeason Journey サイドバー更新(configのtitle/linesを置換して反映)
renderLineprivateメソッド表示用または出力用のデータを組み立てます。
stoppublicメソッド動作中の処理やリソースを安全に停止・解放します。

メソッド詳細

isFantasiaWorld

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

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

引数

throws

なし

主要な呼び出し順

getWorldgetNameequalsIgnoreCase

forceRebuildSidebar

メソッドprivate
private void forceRebuildSidebar(Player p)

Force rebuild & resend sidebar scoreboard (dimension-change/respawn safe).

引数

throws

なし

主要な呼び出し順

isOnlineinEventWorldgetUniqueIdremoveisFantasiaWorldisSidebarVisiblesetScoreboardgetScoreboardManager

postRebuildRefresh

メソッドprivate
private void postRebuildRefresh(Player p)

After rebuild, refresh all lines (rank/self/def/bingo/slot) without relying on long-interval tasks.

引数

throws

なし

主要な呼び出し順

isOnlineinEventWorldisFantasiaWorldisSidebarVisibleensureSidebarModeensurePlayerHasCachedBoardgetDesiredSidebarModeupdateSeasonBoard

forceUpdateSlotLine

メソッドprivate
private void forceUpdateSlotLine(Player p)

Force update SLOT line for one player (used right after rebuild).

引数

throws

なし

主要な呼び出し順

isOnlineinEventWorldisFantasiaWorldisSidebarVisiblegetUniqueIdgetTeamgetDisplayLinelength

ensurePlayerHasCachedBoard

メソッドprivate
private void ensurePlayerHasCachedBoard(Player p)

Ensure the player is actually using our cached board (if sidebar is enabled).

引数

throws

なし

主要な呼び出し順

isOnlineinEventWorldisFantasiaWorldisSidebarVisiblegetUniqueIdgetScoreboardsetScoreboardgetScoreboardManager

trim64

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

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

引数

throws

なし

主要な呼び出し順

lengthsubstring

treeGap

メソッドprivatestatic
private static String treeGap()

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

引数

throws

なし

主要な呼び出し順

repeat

safeIntForScoreboard

メソッドprivatestatic
private static int safeIntForScoreboard(long v)

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

引数

throws

なし

主要な呼び出し順

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

filterMcid

メソッドprivate
private Map<String, Long> filterMcid(Map<String, Long> src)

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

引数

throws

なし

主要な呼び出し順

entrySetisLikelyMcidgetKeygetValue

filterMcidEntries

メソッドprivate
private List<Map.Entry<String, Long>> filterMcidEntries(List<Map.Entry<String, Long>> src)

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

引数

throws

なし

主要な呼び出し順

streamfilterisLikelyMcidgetKeytoList

buildRankingSnapshot

メソッドprivate
private RankingSnapshot buildRankingSnapshot(int topLimit)

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

引数

throws

なし

主要な呼び出し順

getLiveSnapshotgetMonthlyTopCachedisEmptytopListallScoresranksfilterMcidEntriesfilterMcid

ScoreManager

コンストラクタpublic
public ScoreManager(JavaPlugin plugin, ScoreService service, AdvancementTracker tracker, RewardService rewardService, OnlineStatusService onlineStatusService, BingoDataService bingoDataService, SlotManager slotManager, CurrencyService currencyService, ShieldManager shieldManager, AnimaTreeEngine animaTree, SeasonService seasonService, GuildService guildService, LevelingService levelingService, SidebarPrefs sidebarPrefs)

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

引数

throws

なし

主要な呼び出し順

loadLastMonthOrNowforNamegetServergetServicesManagergetRegistrationgetProvidergetClassgetMethod

updateDefLine

メソッドprivate
private void updateDefLine(Player p)

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

引数

throws

なし

主要な呼び出し順

inEventWorldisSidebarVisibleisSeasonSidebarActivegetUniqueIdgetObjectivegetTeamgetOrDefaultformat

recomputeReducePercentInt

メソッドprivate
private int recomputeReducePercentInt(Player p)

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

引数

throws

なし

主要な呼び出し順

hasMetadatagetInventorygetArmorContentsgetTypegetItemMetareadUpgradeLevelminround

scheduleEquipResync

メソッドprivate
private void scheduleEquipResync(Player p)

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

引数

throws

なし

主要な呼び出し順

getUniqueIdgetSchedulerrunTaskLatergetPlayerisOnlinerecomputeReducePercentIntresyncNowround

onShieldChange

イベント処理public
public void onShieldChange(com.example.rankingplugin.combat.ShieldChangeEvent e)

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

引数

throws

なし

主要な呼び出し順

getPlayerIdgetCurgetMaxgetPlayerisOnlineupdateDefLine

isArmorPiece

メソッドprivate
private boolean isArmorPiece(org.bukkit.inventory.ItemStack it)

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

引数

throws

なし

主要な呼び出し順

getType

onInvClick

イベント処理public
public void onInvClick(org.bukkit.event.inventory.InventoryClickEvent e)

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

引数

throws

なし

主要な呼び出し順

getWhoClickedgetSlotTypegetClickisShiftClickisArmorPiecegetCurrentItemscheduleEquipResync

onInvDrag

イベント処理public
public void onInvDrag(org.bukkit.event.inventory.InventoryDragEvent e)

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

引数

throws

なし

主要な呼び出し順

getWhoClickedisArmorPiecegetOldCursorgetCursorscheduleEquipResync

onInteract

イベント処理public
public void onInteract(org.bukkit.event.player.PlayerInteractEvent e)

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

引数

throws

なし

主要な呼び出し順

getItemisArmorPiecescheduleEquipResyncgetPlayer

initShieldCache

メソッドprivate
private void initShieldCache(Player p)

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

引数

throws

なし

主要な呼び出し順

getUniqueIdroundgetCurrentgetMaxcomputeIfAbsentrecomputeReducePercentIntupdateDefLine

onJoinShieldInit

イベント処理public
public void onJoinShieldInit(org.bukkit.event.player.PlayerJoinEvent e)

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

引数

throws

なし

主要な呼び出し順

getSchedulerrunTaskinitShieldCachegetPlayer

onRespawnShieldInit

イベント処理public
public void onRespawnShieldInit(org.bukkit.event.player.PlayerRespawnEvent e)

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

引数

throws

なし

主要な呼び出し順

getSchedulerrunTaskinitShieldCachegetPlayer

onItemBreak

イベント処理public
public void onItemBreak(org.bukkit.event.player.PlayerItemBreakEvent e)

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

引数

throws

なし

主要な呼び出し順

isArmorPiecegetBrokenItemscheduleEquipResyncgetPlayer

isSidebarEnabled

メソッドpublic
public boolean isSidebarEnabled(UUID id)

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

引数

throws

なし

主要な呼び出し順

contains

setSidebarEnabled

メソッドpublic
public void setSidebarEnabled(Player p, boolean enabled)

DB への問い合わせまたは更新処理を担当します。

引数

throws

なし

主要な呼び出し順

getUniqueIdremoveisFantasiaWorldapplySidebarVisibility

inEventWorld

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

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

引数

throws

なし

主要な呼び出し順

blocked

onWorldChange

イベント処理public
public void onWorldChange(PlayerChangedWorldEvent e)

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

引数

throws

なし

主要な呼び出し順

getPlayergetSchedulerrunTaskLaterisOnlineinEventWorldsetScoreboardgetScoreboardManagergetNewScoreboard

onRespawnSidebar

イベント処理public
public void onRespawnSidebar(org.bukkit.event.player.PlayerRespawnEvent e)

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

引数

throws

なし

主要な呼び出し順

getPlayergetSchedulerrunTaskLaterisOnlineinEventWorldisFantasiaWorldisSidebarVisibleforceRebuildSidebar

isSidebarVisible

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

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

引数

throws

なし

主要な呼び出し順

isSidebarEnabledgetUniqueId

applySidebarVisibility

メソッドpublic
public void applySidebarVisibility(Player p, boolean visible)

実際に可視状態を適用する(ON なら構築→更新 / OFF ならクリア)

引数

throws

なし

主要な呼び出し順

isFantasiaWorldinEventWorldsetScoreboardgetScoreboardManagergetNewScoreboardremovegetUniqueIdensureSidebarMode

isSeasonSidebarActive

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

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

引数

throws

なし

主要な呼び出し順

getConfiggetBooleangetActiveSeasonisPresentisSidebarEnabledgetUniqueId

getDesiredSidebarMode

メソッドprivate
private SidebarMode getDesiredSidebarMode(Player p)

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

引数

throws

なし

主要な呼び出し順

isSidebarVisibleinEventWorldisSeasonSidebarActivegetSidebarModegetUniqueIdequalsIgnoreCase

ensureSidebarMode

メソッドprivate
private void ensureSidebarMode(Player p)

開催状態とプレイヤー設定を見て、必要ならサイドバーのレイアウトだけ切替(中身は別メソッドで更新)

引数

throws

なし

主要な呼び出し順

inEventWorldisSidebarVisiblegetDesiredSidebarModegetUniqueIdgetObjectivegetNameensurePlayerHasCachedBoardsetScoreboard

updateSelfLine

メソッドprivate
private void updateSelfLine(Player p)

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

引数

throws

なし

主要な呼び出し順

getRankgetNamegetScoreupdateBottomSection

onPlayerJoin

イベント処理public
public void onPlayerJoin(PlayerJoinEvent e)

プレイヤー参加時に1度だけボードを組み立て+初回更新

引数

throws

なし

主要な呼び出し順

getPlayerinEventWorldsetScoreboardgetScoreboardManagergetNewScoreboardremovegetUniqueIdsendMessage

getBingoManager

メソッドpublic
public BingoManager getBingoManager(UUID playerId)

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

引数

throws

なし

主要な呼び出し順

getPlayergetLevelServantServiceresolveOwnerIdByServantEntityUuidcomputeIfAbsentrequireNonNullloadOrCreateCard

setupGuildBoard

メソッドprivate
private void setupGuildBoard(Player p)

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

引数

throws

なし

主要な呼び出し順

inEventWorldgetScoreboardManagergetNewScoreboardregisterNewObjectivesetDisplaySlotregisterNewTeamvaluestoString

bar

メソッドprivate
private String bar(long cur, long max, int w)

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

引数

throws

なし

主要な呼び出し順

minroundtoStringappend

updateGuildBoard

メソッドprivate
private void updateGuildBoard(Player p)

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

引数

throws

なし

主要な呼び出し順

inEventWorldgetUniqueIdgetObjectivesetupGuildBoardgetSidebarLayoutgetSidebarKeygetGuildIdorElse

ensureGuildBoardLines

メソッドprivate
private void ensureGuildBoardLines(Player p, int lines)

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

引数

throws

なし

主要な呼び出し順

getUniqueIdgetObjectivesetupGuildBoardgetTeamsstreamfiltergetNamestartsWith

setupBoard

メソッドpublic
public void setupBoard(Player p)

初回組み立て:Objective+Team+初期 Score を設定

引数

throws

なし

主要な呼び出し順

inEventWorldgetScoreboardManagergetNewScoreboardregisterNewObjectiveformatgetYeargetMonthValuesetDisplaySlot

scheduleMonthlyRollover

メソッドprivate
private void scheduleMonthlyRollover()

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

引数

throws

なし

主要な呼び出し順

nowplusDaystruncatedTomaxbetweentoMillisrunequals

loadLastMonthOrNow

メソッドprivate
private YearMonth loadLastMonthOrNow()

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

引数

throws

なし

主要な呼び出し順

loadLastRolloverMonthnow

saveLastMonth

メソッドprivate
private void saveLastMonth()

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

引数

throws

なし

主要な呼び出し順

saveLastRolloverMonth

getRankingTopForBonus

メソッドpublic
public List<Map.Entry<String, Long>> getRankingTopForBonus(int limit)

毎日0:00の集計など、負荷を抑えて外部から「現在のランキングTOP」を取得したい用途向け。

引数

throws

なし

主要な呼び出し順

getMonthlyTopCachedisEmptygetTopScoresCachedgetMonthlyTopgetTopScoresfilterMcidEntriesgetLoggerwarning

start

メソッドpublic
public void start()

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

引数

throws

なし

主要な呼び出し順

getSchedulerrunTaskTimergetOnlinePlayersstreamfilterinEventWorldmaptoList

doMonthlyRollover

メソッドprivate
private void doMonthlyRollover(YearMonth newMonth)

DB への問い合わせまたは更新処理を担当します。

引数

throws

なし

主要な呼び出し順

filterMcidgetScoresForStoredMonthisEmptysaveMonthlyScoresgetMonthlyRankingRewardServiceawardMonthlyRankingRewardsclearCurrentScoresForMonthgetAllScores

handleStartupMonthBoundary

メソッドprivate
private void handleStartupMonthBoundary(YearMonth nowJst)

入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。

引数

throws

なし

主要な呼び出し順

hasScoresTaggedForMonthsaveLastMonthdoMonthlyRollovergetLoggerseveregetMessageprintStackTrace

updateLevelLine

メソッドprivate
private void updateLevelLine(Player p)

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

引数

throws

なし

主要な呼び出し順

getUniqueIdgetTeamsetPrefixbargetLevelgetXpmaxgetNextLevelXp

onPlayerQuit

イベント処理public
public void onPlayerQuit(PlayerQuitEvent e)

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

引数

throws

なし

主要な呼び出し順

getPlayergetUniqueIdremove

updateAll

メソッドpublic
public void updateAll(Player p)

上段+下段をまとめて更新(ランキング用のときだけ)

引数

throws

なし

主要な呼び出し順

inEventWorldisSidebarVisibleisSeasonSidebarActiveupdateSeasonBoardgetUniqueIdgetObjectivebuildRankingSnapshotupdateRankingSection

currentTopDisplayPhase

メソッドprivate
private long currentTopDisplayPhase()

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

引数

throws

なし

主要な呼び出し順

isServerIdWindow

isServerIdWindow

メソッドprivate
private boolean isServerIdWindow()

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

引数

throws

なし

主要な呼び出し順

currentTimeMillis

pickDisplayServerId

メソッドprivate
private String pickDisplayServerId(String playerName)

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

引数

throws

なし

主要な呼び出し順

isEmptysortisBlank

abbreviateSidebarLabel

メソッドprivate
private String abbreviateSidebarLabel(String text, int maxLen)

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

引数

throws

なし

主要な呼び出し順

stripColorlengthsubstringmax

buildRankingDisplayLabel

メソッドprivate
private String buildRankingDisplayLabel(int rankIndex, String playerName, ChatColor col, boolean isSelf)

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

引数

throws

なし

主要な呼び出し順

isServerIdWindowpickDisplayServerIdisBlankabbreviateSidebarLabeltrim64format

updateRankingSection

メソッドprivate
private void updateRankingSection(Player p, List<Map.Entry<String,Long>> topList)

上段:ランキングのみ差分更新

引数

throws

なし

主要な呼び出し順

inEventWorldisSidebarVisibleisSeasonSidebarActiveupdateSeasonBoardisBingo5x5RunningupdateRankingAsBingo5x5getUniqueIdgetObjective

updateRankingAsBingo5x5

メソッドprivate
private void updateRankingAsBingo5x5(Player p)

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

引数

throws

なし

主要な呼び出し順

inEventWorldisSidebarVisiblegetUniqueIdgetObjectiveensure5x5ExistsgetBingoManagergetDisplayLines5x5getTeam

refreshTopOnly

メソッドpublic
public void refreshTopOnly(Player p)

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

引数

throws

なし

主要な呼び出し順

inEventWorldisSidebarVisibleisSeasonSidebarActiveupdateSeasonBoardisBingo5x5RunningupdateRankingAsBingo5x5updateRankingSection

updateBottomSection

メソッドprivate
private void updateBottomSection(Player p, int rank, long score)

下段:BINGO+SLOTのみ差分更新(ランキングボードのときだけ)

引数

throws

なし

主要な呼び出し順

computeIfAbsentgetUniqueIdrecomputeReducePercentIntinEventWorldisSidebarVisibleisSeasonSidebarActiveupdateSeasonBoardgetObjective

invalidateTreeCache

メソッドpublic
public void invalidateTreeCache(Player p)

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

引数

throws

なし

主要な呼び出し順

getUniqueId

refreshBingoAndTreeNow

メソッドpublic
public void refreshBingoAndTreeNow(Player p)

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

引数

throws

なし

主要な呼び出し順

isPrimaryThreadrefreshBingoAndTreeNowSyncgetSchedulerrunTask

refreshBingoAndTreeNowSync

メソッドprivate
private void refreshBingoAndTreeNowSync(Player p)

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

引数

throws

なし

主要な呼び出し順

isOnlineinEventWorldisSidebarVisibleinvalidateTreeCacheisBingo5x5RunningrefreshTopOnlyupdateBottomAccurate

updateBottomAccurate

メソッドpublic
public void updateBottomAccurate(Player p)

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

引数

throws

なし

主要な呼び出し順

inEventWorldisSidebarVisiblegetDesiredSidebarModegetNamegetRankgetScoreupdateBottomSection

tryOneShotBackfill

メソッドprivate
private void tryOneShotBackfill()

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

引数

throws

なし

主要な呼び出し順

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

reset5x5ForNextEvent

メソッドpublic
public void reset5x5ForNextEvent()

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

引数

throws

なし

主要な呼び出し順

getSchedulerrunTaskAsynchronouslydeleteAll5x5runTaskgetOnlinePlayersforEach

refreshSidebarNow

メソッドpublic
public void refreshSidebarNow(Player p)

コマンド等から即時切替を要求する

引数

throws

なし

主要な呼び出し順

inEventWorldisSidebarVisiblesetScoreboardgetScoreboardManagergetNewScoreboardremovegetUniqueIdensureSidebarMode

setupSeasonBoard

メソッドprivate
private void setupSeasonBoard(Player p)

Season Journey 用のObjective/Teamを構築(行数はconfigに合わせて可変)

引数

throws

なし

主要な呼び出し順

inEventWorldgetScoreboardManagergetNewScoreboardregisterNewObjectivesetDisplaySlotmaxgetConfiggetStringList

updateSeasonBoard

メソッドprivate
private void updateSeasonBoard(Player p)

Season Journey サイドバー更新(configのtitle/linesを置換して反映)

引数

throws

なし

主要な呼び出し順

inEventWorldgetUniqueIdgetObjectivesetupSeasonBoardgetActiveSeasonisEmptyensureSidebarModeloadTiers

renderLine

メソッドprivatestatic
private static String renderLine(String template, Map<String,String> ph)

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

引数

throws

なし

主要な呼び出し順

entrySetreplacegetKeygetValue

stop

メソッドpublic
public void stop()

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

引数

throws

なし

主要な呼び出し順

cancel

代表的な処理フロー

  1. 初期化フロー
    ScoreManager → loadLastMonthOrNow → forName → getServer → getServicesManager → getRegistration
    依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
  2. onPlayerJoin フロー
    onPlayerJoin → getPlayer → inEventWorld → setScoreboard → getScoreboardManager → getNewScoreboard
    プレイヤー参加時に1度だけボードを組み立て+初回更新
  3. onRespawnSidebar フロー
    onRespawnSidebar → getPlayer → getScheduler → runTaskLater → isOnline → inEventWorld
    イベント発生時の分岐と後続処理を担当します。
  4. onWorldChange フロー
    onWorldChange → getPlayer → getScheduler → runTaskLater → isOnline → inEventWorld
    イベント発生時の分岐と後続処理を担当します。
  5. onInvClick フロー
    onInvClick → getWhoClicked → getSlotType → getClick → isShiftClick → isArmorPiece
    イベント発生時の分岐と後続処理を担当します。
  6. onShieldChange フロー
    onShieldChange → getPlayerId → getCur → getMax → getPlayer → isOnline
    イベント発生時の分岐と後続処理を担当します。

外部との接点

Web ルート

PUT season_titlePUT tier_currentPUT tier_maxPUT pointsPUT tier_reqPUT points_to_nextPUT daily_donePUT daily_totalPUT weekly_donePUT weekly_total

SQL / テーブル

applySidebarVisibilitynowSLOTerrorfailed

関連クラス

補足