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

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

クラス説明

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

責務と見どころ

重点クラスの詳細解説

Slot Manager に関する管理・集約処理を担当します。slot パッケージの中でも 548 行規模の中核クラスで、運用中の主ループ・永続化境界・スケジューラが一か所に集まっています。中規模クラス群の中では変更影響が広く、章立てで読む価値が高いため重点解説へ追加しています。

最初に追う読む順番

  1. SlotManager
    依存オブジェクトと初期状態を束ね、このクラスが担当するランタイムの前提を固めます。
  2. onMobDeath
    運用中の中心ループです。イベント受理から状態更新までの主経路を追えます。
  3. applyReward
    結果を反映・永続化する境界です。表示だけ直って保存が壊れる系の切り分けに向きます。
  4. applyFeverReward
    結果を反映・永続化する境界です。表示だけ直って保存が壊れる系の切り分けに向きます。
  5. isAnimating
    条件判定を行い、後続処理の分岐に使える真偽値を返します。
  6. getProbabilityMode
    必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
  7. setProbabilityMode
    setProbabilityMode の主要処理を担当します。
  8. refreshSlotState
    refreshSlotState の主要処理を担当します。
  9. weightedSymbol
    weightedSymbol の主要処理を担当します。

内部サブシステムの地図

運用中の主ループ

イベント受理、定期監視、判定、進行更新など、実際に挙動を生む中心ロジックです。

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

代表フロー詳解

通常運用の中心フロー

  1. onMobDeath
  2. setProbabilityMode
  3. applyReward
  4. applyFeverReward

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

反映・保存・終了の流れ

  1. setProbabilityMode
  2. applyReward
  3. applyFeverReward

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

変更時の注意点

外部接点

主な永続化テーブル

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

plugin_slot_statehit_count

フィールド

VisibilityTypeName役割
privateJavaPluginpluginプラグイン本体参照です。
privateScoreServicescoreService関連サービスへの参照です。
privateSlotDataServicedataService関連サービスへの参照です。
privateJackpotServicejackpotService関連サービスへの参照です。
privateMiniJackpotServiceminiJackpotService関連サービスへの参照です。
privateList<SlotReward>rewardsrewards の状態を保持します。
privateDataSourcedsDB 接続元を保持します。
privateStringserverIdserverId の状態を保持します。
privateMap<UUID, int[]>animNumbersanimNumbers の状態を保持します。
privateSet<UUID>animatinganimating の状態を保持します。
privateRandomrandomrandom の状態を保持します。
privateorg.bukkit.NamespacedKeyKEY_FS_ACTIVEKEY_FS_ACTIVE の状態を保持します。

コンストラクタ / 初期化

Signature説明主要呼び出し
public SlotManager(JavaPlugin plugin, ScoreService scoreService, List<SlotReward> rewards, SlotDataService slotDataService, JackpotService jackpotService, MiniJackpotService miniJackpotService, DataSource ds, String serverId)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。getPluginManager → registerEvents

メソッド索引

NameVisibilityKind説明
SlotManagerpublicコンストラクタ依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
isAnimatingpublicメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
getProbabilityModepublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
setProbabilityModepublicメソッドsetProbabilityMode の主要処理を担当します。
refreshSlotStatepublicメソッドrefreshSlotState の主要処理を担当します。
weightedSymbolprivateメソッドweightedSymbol の主要処理を担当します。
upsertSlotStateprivateメソッドDB への問い合わせまたは更新処理を担当します。
rewardTableprivateメソッドrewardTable の主要処理を担当します。
onMobDeathpublicイベント処理イベント発生時の分岐と後続処理を担当します。
getRequiredCountprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
spinAndAnimateprivateメソッドspinAndAnimate の主要処理を担当します。
symbolTextprivateメソッドsymbolText の主要処理を担当します。
modeSuffixprivateメソッドmodeSuffix の主要処理を担当します。
formatScoreprivateメソッドformatScore の主要処理を担当します。
potionLevelprivateメソッドpotionLevel の主要処理を担当します。
announcePotionprivateメソッドannouncePotion の主要処理を担当します。
rewardForSymbolprivateメソッドrewardForSymbol の主要処理を担当します。
checkPrizeprivateメソッドcheckPrize の主要処理を担当します。
applyRewardprivateメソッドapplyReward の主要処理を担当します。
applyFeverRewardprivateメソッドapplyFeverReward の主要処理を担当します。
getDisplayLinepublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。

メソッド詳細

SlotManager

コンストラクタpublic
public SlotManager(JavaPlugin plugin, ScoreService scoreService, List<SlotReward> rewards, SlotDataService slotDataService, JackpotService jackpotService, MiniJackpotService miniJackpotService, DataSource ds, String serverId)

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

引数

throws

なし

主要な呼び出し順

getPluginManagerregisterEvents

isAnimating

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

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

引数

throws

なし

主要な呼び出し順

contains

getProbabilityMode

メソッドpublic
public SlotProbabilityMode getProbabilityMode(UUID playerId)

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

引数

throws

なし

主要な呼び出し順

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

setProbabilityMode

メソッドpublic
public void setProbabilityMode(Player player, SlotProbabilityMode mode)

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

引数

throws

なし

主要な呼び出し順

getUniqueIdrefreshSlotState

refreshSlotState

メソッドpublic
public void refreshSlotState(Player player)

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

引数

throws

なし

主要な呼び出し順

getOrCreateCachedgetUniqueIdupsertSlotStategetSlot1getSlot2getSlot3getProbabilityMode

weightedSymbol

メソッドprivate
private int weightedSymbol()

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

引数

throws

なし

主要な呼び出し順

nextInt

upsertSlotState

メソッドprivate
private void upsertSlotState(Player player, boolean isHit, int[] finalNums, Integer hitSpins, SlotProbabilityMode probabilityMode)

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

引数

throws

なし

主要な呼び出し順

getNamegetSpinsgetUniqueIdformatgetSchedulerrunTaskAsynchronouslygetConnectionprepareStatement

rewardTable

メソッドprivate
private RewardTable rewardTable(SlotProbabilityMode mode)

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

引数

throws

なし

主要な呼び出し順

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

onMobDeath

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

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

引数

throws

なし

主要な呼び出し順

getEntitygetKillerblockedgetPersistentDataContainergetOrDefaultgetUniqueIdincrementKillsgetRequiredCount

getRequiredCount

メソッドprivate
private int getRequiredCount()

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

引数

throws

なし

主要な呼び出し順

getOnlinePlayerssizemaxmin

spinAndAnimate

メソッドprivate
private void spinAndAnimate(Player player)

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

引数

throws

なし

主要な呼び出し順

getUniqueIdgetProbabilityModenextInthitDenominatorweightedSymbolrunsetScoreboardgetScoreboard

symbolText

メソッドprivate
private String symbolText(int n)

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

引数

throws

なし

主要な呼び出し順

toString

modeSuffix

メソッドprivate
private String modeSuffix(SlotProbabilityMode mode)

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

引数

throws

なし

主要な呼び出し順

displayNamechanceLabel

formatScore

メソッドprivate
private String formatScore(long score)

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

引数

throws

なし

主要な呼び出し順

format

potionLevel

メソッドprivate
private int potionLevel(int amplifier)

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

引数

throws

なし

主要な呼び出し順

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

announcePotion

メソッドprivate
private void announcePotion(Player player, SlotProbabilityMode mode, String label, int ticks, int amplifier)

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

引数

throws

なし

主要な呼び出し順

sendMessagescoreboardColorpotionLevelmodeSuffix

rewardForSymbol

メソッドprivate
private TripleReward rewardForSymbol(int symbol, SlotProbabilityMode mode)

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

引数

throws

なし

主要な呼び出し順

rewardTablezeroonetwothreefourfivesix

checkPrize

メソッドprivate
private void checkPrize(Player player, int[] nums, SlotProbabilityMode mode)

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

引数

throws

なし

主要な呼び出し順

getUniqueIdsendMessagemodeSuffixgetSpinsrecordJackpotSpinAsyncupsertSlotStatesetSpinsapplyReward

applyReward

メソッドprivate
private void applyReward(Player player, int symbol, TripleReward reward, SlotProbabilityMode mode)

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

引数

throws

なし

主要な呼び出し順

kindgetOnlinePlayerssetFoodLevelgetAttributesetHealthgetValuegetActivePotionEffectsforEach

applyFeverReward

メソッドprivate
private void applyFeverReward(Player player, TripleReward reward, SlotProbabilityMode mode, int symbol)

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

引数

throws

なし

主要な呼び出し順

ticksamplifieraddPotionEffectgetPoolAmountresetPoolgetNamemaxextraScore

getDisplayLine

メソッドpublic
public String getDisplayLine(Player p)

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

引数

throws

なし

主要な呼び出し順

getUniqueIdgetOrCreateCachedgetProbabilityModescoreboardColortoStringcontainsgetSlot1getSlot2

代表的な処理フロー

  1. onMobDeath フロー
    onMobDeath → getEntity → getKiller → blocked → getPersistentDataContainer → getOrDefault
    イベント発生時の分岐と後続処理を担当します。
  2. 初期化フロー
    SlotManager → getPluginManager → registerEvents
    依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
  3. applyFeverReward フロー
    applyFeverReward → ticks → amplifier → addPotionEffect → getPoolAmount → resetPool
    applyFeverReward の主要処理を担当します。
  4. applyReward フロー
    applyReward → kind → getOnlinePlayers → setFoodLevel → getAttribute → setHealth
    applyReward の主要処理を担当します。
  5. checkPrize フロー
    checkPrize → getUniqueId → sendMessage → modeSuffix → getSpins → recordJackpotSpinAsync
    checkPrize の主要処理を担当します。
  6. getDisplayLine フロー
    getDisplayLine → getUniqueId → getOrCreateCached → getProbabilityMode → scoreboardColor → toString
    必要な状態を取得し、呼び出し側で利用しやすい形へ返します。

外部との接点

Web ルート

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

SQL / テーブル

plugin_slot_statehit_count

関連クラス

補足