Event Service に関するサービス層・業務処理を担当します。

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

クラス説明

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

責務と見どころ

重点クラスの詳細解説

クロスサーバ協力イベントの本体で、進行中イベントの DB 同期、BossBar 更新、各行動の加点、終了報酬、クールダウン、再起動復元をすべて持っています。

最初に追う読む順番

  1. EventService
    起動時にどの設定と DB 状態を読み込むかを確認します。
  2. start
    イベント開始 API の入口です。
  3. startWithTarget
    目標値決定と重複起動防止を含む本体です。
  4. tick
    1 秒ごとの時間切れ監視と BossBar 更新です。
  5. addProgress
    総進捗の共通加算入口です。
  6. addScore
    個人スコアと総量の両方へ反映する中心です。
  7. flushPendingScoresToDb
    加点のバッファ書き戻しです。
  8. finish
    成功/失敗を問わず終了処理へ入る入口です。
  9. settleEvent
    報酬配布とランキング確定の核です。
  10. syncFromDb
    再起動復元やクロスサーバ同期の起点です。

内部サブシステムの地図

代表フロー詳解

プレイヤー行動が進捗へ乗る流れ

  1. onBreakOre / onMobKill / onTrade など
  2. addScore
  3. addProgress
  4. flushPendingScoresToDb

各行動は最終的に共通の加点経路へ収束します。新しいイベント種別を増やすときは addScore へ合流させるのが自然です。

変更時の注意点

外部接点

主な永続化テーブル

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

webcoop_active_eventwebcoop_event_scorewebcoop_statecooldown_untilwebcoop_event_level

フィールド

VisibilityTypeName役割
privateJavaPluginpluginプラグイン本体参照です。
privateDataSourcedsDB 接続元を保持します。
privateScoreServicescorescore の状態を保持します。
privateStringserverIdserverId の状態を保持します。
privateStringserverNameserverName の状態を保持します。
privatelongcooldownUntilMscooldownUntilMs の状態を保持します。
privatelongactiveIdactiveId の状態を保持します。
privatelongendsAtMsendsAtMs の状態を保持します。
privatelongtargettarget の状態を保持します。
privatelongtotaltotal の状態を保持します。
privateTypeactiveTypeactiveType の状態を保持します。
privatelonglastAnnouncedStartedIdlastAnnouncedStartedId の状態を保持します。
privatelonglastAnnouncedEndedIdlastAnnouncedEndedId の状態を保持します。
privateBossBarbarbar の状態を保持します。
privateinttaskId非同期処理やスケジューラ制御に使うハンドルです。
privateintsyncTaskId非同期処理やスケジューラ制御に使うハンドルです。
privatedoubleTARGET_GROWTH_PER_LEVELTARGET_GROWTH_PER_LEVEL の状態を保持します。
privatelongPLACE_CT_MSPLACE_CT_MS の状態を保持します。
privatejava.util.concurrent.ExecutorServicedbExecdbExec の状態を保持します。
privateMap<UUID, Map<String, Long>>placeCooldownplaceCooldown の状態を保持します。
privateConcurrentHashMap<String, Long>recentlyPlacedBlocksrecentlyPlacedBlocks の状態を保持します。
privatelongRAID_DEDUPE_MSRAID_DEDUPE_MS の状態を保持します。
privateConcurrentHashMap<String, Long>raidCountedAtMsraidCountedAtMs の状態を保持します。
privateConcurrentHashMap<String, AtomicLong>pendingScoreDeltapendingScoreDelta の状態を保持します。
privateAtomicLongpendingTotalDeltapendingTotalDelta の状態を保持します。
privateintflushTaskId非同期処理やスケジューラ制御に使うハンドルです。
privatelongBOSSBAR_UPDATE_INTERVAL_MSBOSSBAR_UPDATE_INTERVAL_MS の状態を保持します。
privatelonglastBossBarUpdateMslastBossBarUpdateMs の状態を保持します。
privatelongDB_FLUSH_INTERVAL_TICKSDB_FLUSH_INTERVAL_TICKS の状態を保持します。

コンストラクタ / 初期化

Signature説明主要呼び出し
public EventService(JavaPlugin plugin, DataSource ds, ScoreService score)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。getConfig → getString → getServer → getMotd → isBlank → refreshCooldownFromDb

メソッド索引

NameVisibilityKind説明
shouldCountRaidOnceByKeyprivateメソッドshouldCountRaidOnceByKey の主要処理を担当します。
makeRaidVictoryKeyprivateメソッドmakeRaidVictoryKey の主要処理を担当します。
EventServicepublicコンストラクタ依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
initLastAnnouncedIdsprivateメソッド初期化と各種登録を行い、機能を有効化します。
getBossBarpublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
isCoolingDownpublicメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
getCooldownRemainingSecpublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
getActiveTypepublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
typeDisplayNameprivateメソッドtypeDisplayName の主要処理を担当します。
eventAccentprivateメソッドeventAccent の主要処理を担当します。
separatorLineprivateメソッドseparatorLine の主要処理を担当します。
buildRuleLinesprivateメソッド表示用または出力用のデータを組み立てます。
announceStartprivateメソッドannounceStart の主要処理を担当します。
isRunningpublicメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
startpublicメソッド初期化と各種登録を行い、機能を有効化します。
baseTargetprivateメソッドbaseTarget の主要処理を担当します。
targetForLevelprivateメソッドtargetForLevel の主要処理を担当します。
startWithTargetpublicメソッド初期化と各種登録を行い、機能を有効化します。
recoverIfRunningpublicメソッドrecoverIfRunning の主要処理を担当します。
isActiveprivateメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
addProgresspublicメソッドDB への問い合わせまたは更新処理を担当します。
tickprivateメソッドtick の主要処理を担当します。
addTotalDeltaprivateメソッドaddTotalDelta の主要処理を担当します。
addScoreOnlyprivateメソッドaddScoreOnly の主要処理を担当します。
blockKeyprivateメソッドblockKey の主要処理を担当します。
rememberPlacedBlockprivateメソッドrememberPlacedBlock の主要処理を担当します。
wasRecentlyPlacedprivateメソッドwasRecentlyPlaced の主要処理を担当します。
addScorepublicメソッドaddScore の主要処理を担当します。
flushPendingScoresToDbprivateメソッドflushPendingScoresToDb の主要処理を担当します。
flushPendingScoresToDbprivateメソッドflushPendingScoresToDb の主要処理を担当します。
flushPendingScoresToDbprivateイベント処理DB への問い合わせまたは更新処理を担当します。
finishprivateメソッドDB への問い合わせまたは更新処理を担当します。
completionRewardForLevelprivateメソッドcompletionRewardForLevel の主要処理を担当します。
successRewardMultiplierprivateメソッドsuccessRewardMultiplier の主要処理を担当します。
rankRewardMultiplierprivateメソッドrankRewardMultiplier の主要処理を担当します。
formatMultiplierprivateメソッドformatMultiplier の主要処理を担当します。
loadEventRankingprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
paySuccessRankingRewardsprivateメソッドpaySuccessRankingRewards の主要処理を担当します。
payContributionRewardsprivateメソッドDB への問い合わせまたは更新処理を担当します。
announceEndedprivateメソッドannounceEnded の主要処理を担当します。
tryEndNowAsyncprivateメソッドDB への問い合わせまたは更新処理を担当します。
settleEventprivateメソッドDB への問い合わせまたは更新処理を担当します。
getParticipantCountprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
getRunningEventIdprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
getLevelpublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
getExppublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
addExpprivateメソッドDB への問い合わせまたは更新処理を担当します。
needExpForprivateメソッドneedExpFor の主要処理を担当します。
makeBossBarprivateメソッドmakeBossBar の主要処理を担当します。
updateBossBarprivateメソッド状態を永続化または更新し、最新状態へ反映します。
onJoinpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onBreakOrepublicイベント処理イベント発生時の分岐と後続処理を担当します。
onBreakLogpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onMobKillpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onFishpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onTradepublicイベント処理イベント発生時の分岐と後続処理を担当します。
onRaidWinpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onRaidStoppublicイベント処理イベント発生時の分岐と後続処理を担当します。
onPlacepublicイベント処理イベント発生時の分岐と後続処理を担当します。
startTickingpublicメソッド初期化と各種登録を行い、機能を有効化します。
stoppublicメソッド動作中の処理やリソースを安全に停止・解放します。
syncFromDbprivateメソッドDB への問い合わせまたは更新処理を担当します。
refreshCooldownFromDbprivateメソッドDB への問い合わせまたは更新処理を担当します。
endIfTimeprivateメソッドDB への問い合わせまたは更新処理を担当します。

メソッド詳細

shouldCountRaidOnceByKey

メソッドprivate
private boolean shouldCountRaidOnceByKey(String raidKey)

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

引数

throws

なし

主要な呼び出し順

isBlankcurrentTimeMillissizeentrySetremoveIfgetValue

makeRaidVictoryKey

メソッドprivate
private String makeRaidVictoryKey(Collection<java.util.UUID> uuids)

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

引数

throws

なし

主要な呼び出し順

isEmptystreamfiltermapsortedcollectjoining

EventService

コンストラクタpublic
public EventService(JavaPlugin plugin, DataSource ds, ScoreService score)

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

引数

throws

なし

主要な呼び出し順

getConfiggetStringgetServergetMotdisBlankrefreshCooldownFromDbinitLastAnnouncedIds

initLastAnnouncedIds

メソッドprivate
private void initLastAnnouncedIds()

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementexecuteQuerynextgetLong

getBossBar

メソッドpublic
public BossBar getBossBar()

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

引数

throws

なし

主要な呼び出し順

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

isCoolingDown

メソッドpublic
public boolean isCoolingDown()

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

引数

throws

なし

主要な呼び出し順

currentTimeMillis

getCooldownRemainingSec

メソッドpublic
public long getCooldownRemainingSec()

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

引数

throws

なし

主要な呼び出し順

currentTimeMillismax

getActiveType

メソッドpublic
public Type getActiveType()

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

引数

throws

なし

主要な呼び出し順

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

typeDisplayName

メソッドprivate
private String typeDisplayName(Type type)

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

引数

throws

なし

主要な呼び出し順

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

eventAccent

メソッドprivate
private String eventAccent(Type type)

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

引数

throws

なし

主要な呼び出し順

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

separatorLine

メソッドprivate
private String separatorLine()

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

引数

throws

なし

主要な呼び出し順

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

buildRuleLines

メソッドprivate
private List<String> buildRuleLines(Type type)

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

引数

throws

なし

主要な呼び出し順

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

announceStart

メソッドprivate
private void announceStart(Type type, long target, long endsAtMs)

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

引数

throws

なし

主要な呼び出し順

maxcurrentTimeMillisceileventAccentseparatorLinetypeDisplayNamebuildRuleLinesgetScheduler

isRunning

メソッドpublic
public boolean isRunning()

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

引数

throws

なし

主要な呼び出し順

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

start

メソッドpublicsynchronized
public synchronized void start(Type type, int minutes)

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

引数

throws

なし

主要な呼び出し順

startWithTarget

baseTarget

メソッドprivate
private long baseTarget(Type t)

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

引数

throws

なし

主要な呼び出し順

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

targetForLevel

メソッドprivate
private long targetForLevel(Type t, int lvl)

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

引数

throws

なし

主要な呼び出し順

maxroundbaseTarget

startWithTarget

メソッドpublicsynchronized
public synchronized void startWithTarget(Type type, int minutes, Long targetOverride)

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

引数

throws

なし

主要な呼び出し順

refreshCooldownFromDbisCoolingDowngetLoggerinfoisRunninggetLeveltargetForLevelcurrentTimeMillis

recoverIfRunning

メソッドpublic
public void recoverIfRunning()

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

引数

throws

なし

主要な呼び出し順

syncFromDb

isActive

メソッドprivate
private boolean isActive(Type needed)

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

引数

throws

なし

主要な呼び出し順

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

addProgress

メソッドpublicsynchronized
public synchronized void addProgress(long delta)

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementsetLongexecuteUpdate

tick

メソッドprivate
private void tick()

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

引数

throws

なし

主要な呼び出し順

currentTimeMillisupdateBossBargetSchedulerrunTaskAsynchronously

addTotalDelta

メソッドprivate
private void addTotalDelta(long delta)

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

引数

throws

なし

主要な呼び出し順

currentTimeMillismaxisPrimaryThreadupdateBossBargetSchedulerrunTaskaddAndGet

addScoreOnly

メソッドprivate
private void addScoreOnly(String mcid, long delta)

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

引数

throws

なし

主要な呼び出し順

isBlankgetRunningEventIdcomputeIfAbsentaddAndGet

blockKey

メソッドprivate
private String blockKey(org.bukkit.block.Block block)

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

引数

throws

なし

主要な呼び出し順

getLocationgetWorldgetUIDgetBlockXgetBlockYgetBlockZ

rememberPlacedBlock

メソッドprivate
private void rememberPlacedBlock(org.bukkit.block.Block block)

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

引数

throws

なし

主要な呼び出し順

blockKeycurrentTimeMillissizeentrySetremoveIfgetValue

wasRecentlyPlaced

メソッドprivate
private boolean wasRecentlyPlaced(org.bukkit.block.Block block)

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

引数

throws

なし

主要な呼び出し順

blockKeycurrentTimeMillisremove

addScore

メソッドpublicsynchronized
public synchronized void addScore(String mcid, long delta)

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

引数

throws

なし

主要な呼び出し順

getRunningEventIdcurrentTimeMillismaxisPrimaryThreadupdateBossBargetSchedulerrunTaskcomputeIfAbsent

flushPendingScoresToDb

メソッドprivate
private void flushPendingScoresToDb()

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

引数

throws

なし

主要な呼び出し順

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

flushPendingScoresToDb

メソッドprivate
private void flushPendingScoresToDb(boolean inline)

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

引数

throws

なし

主要な呼び出し順

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

flushPendingScoresToDb

イベント処理private
private void flushPendingScoresToDb(boolean inline, boolean allowEndedEvent)

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

引数

throws

なし

主要な呼び出し順

getRunningEventIdgetAndSetentrySetgetValuegetKeyisEmptygetConnectionsetAutoCommit

finish

メソッドprivatesynchronized
private synchronized void finish()

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

引数

throws

なし

主要な呼び出し順

flushPendingScoresToDbgetConnectionprepareStatementsetLongexecuteQuerynextgetLonggetLogger

completionRewardForLevel

メソッドprivate
private long completionRewardForLevel(int lvl)

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

引数

throws

なし

主要な呼び出し順

max

successRewardMultiplier

メソッドprivate
private double successRewardMultiplier(long target, long total)

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

引数

throws

なし

主要な呼び出し順

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

rankRewardMultiplier

メソッドprivate
private double rankRewardMultiplier(int rank)

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

引数

throws

なし

主要な呼び出し順

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

formatMultiplier

メソッドprivate
private String formatMultiplier(double value)

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

引数

throws

なし

主要な呼び出し順

absrintvalueOfformat

loadEventRanking

メソッドprivate
private java.util.List<EventRankingRow> loadEventRanking(long eventId, int limit, boolean positiveOnly)

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementsetLongsetIntexecuteQuerynextgetStringgetLong

paySuccessRankingRewards

メソッドprivate
private void paySuccessRankingRewards(long eventId, long baseReward, double successMul)

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

引数

throws

なし

主要な呼び出し順

loadEventRankingsizerankRewardMultiplierroundaddScoremcidgetLoggerwarning

payContributionRewards

メソッドprivate
private void payContributionRewards(long eventId, long perGoal, double contributionMul, boolean success, int levelBefore)

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementsetLongexecuteQuerynextgetStringgetLonground

announceEnded

メソッドprivate
private void announceEnded(long eventId, long target, long total)

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

引数

throws

なし

主要な呼び出し順

successRewardMultiplierformatMultiplierloadEventRankingisEmptysizeserverNameisBlankserverId

tryEndNowAsync

メソッドprivate
private void tryEndNowAsync()

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementsetLongexecuteUpdategetSchedulerrunTaskgetLoggerwarning

settleEvent

メソッドprivate
private void settleEvent(long id, long target, long total)

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

引数

throws

なし

主要な呼び出し順

getLevelcompletionRewardForLevelsuccessRewardMultiplierpaySuccessRankingRewardsaddExpgetParticipantCountmaxpayContributionRewards

getParticipantCount

メソッドprivate
private int getParticipantCount(long id)

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementsetLongexecuteQuerynextgetInt

getRunningEventId

メソッドprivate
private Long getRunningEventId()

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementexecuteQuerynextgetLong

getLevel

メソッドpublic
public int getLevel()

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementexecuteQuerynextgetInt

getExp

メソッドpublic
public int getExp()

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementexecuteQuerynextgetInt

addExp

メソッドprivate
private void addExp(int delta)

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

引数

throws

なし

主要な呼び出し順

getLevelgetExpneedExpForgetConnectionprepareStatementsetIntmaxexecuteUpdate

needExpFor

メソッドprivate
private int needExpFor(int lvl)

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

引数

throws

なし

主要な呼び出し順

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

makeBossBar

メソッドprivate
private void makeBossBar(Type type)

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

引数

throws

なし

主要な呼び出し順

getSchedulerrunTasknamecreateBossBarsetVisiblegetOnlinePlayersaddPlayer

updateBossBar

メソッドprivate
private void updateBossBar(long remainMs)

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

引数

throws

なし

主要な呼び出し順

maxminsetProgresssetTitleformat

onJoin

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

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

引数

throws

なし

主要な呼び出し順

addPlayergetPlayer

onBreakOre

イベント処理public
public void onBreakOre(BlockBreakEvent e)

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

引数

throws

なし

主要な呼び出し順

isActivegetPlayergetGameModegetInventorygetItemInMainHandcontainsEnchantmentwasRecentlyPlacedgetBlock

onBreakLog

イベント処理public
public void onBreakLog(BlockBreakEvent e)

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

引数

throws

なし

主要な呼び出し順

isActivegetPlayergetGameModewasRecentlyPlacedgetBlockisTaggedgetTypeaddScore

onMobKill

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

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

引数

throws

なし

主要な呼び出し順

isActivegetEntitygetKilleraddScoregetName

onFish

イベント処理public
public void onFish(PlayerFishEvent e)

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

引数

throws

なし

主要な呼び出し順

isActivegetStategetCaughtaddScoregetPlayergetName

onTrade

イベント処理public
public void onTrade(InventoryClickEvent e)

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

引数

throws

なし

主要な呼び出し順

isActivegetWhoClickedgetInventorygetRawSlotgetSlotTypegetCurrentItemgetTypeaddScore

onRaidWin

イベント処理public
public void onRaidWin(RaidFinishEvent e)

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

引数

throws

なし

主要な呼び出し順

isActivegetWinnersstreamfiltermaptoListshouldCountRaidOnceByKeymakeRaidVictoryKey

onRaidStop

イベント処理public
public void onRaidStop(RaidStopEvent e)

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

引数

throws

なし

主要な呼び出し順

isActivegetReasongetRaidgetHeroesshouldCountRaidOnceByKeymakeRaidVictoryKeyaddTotalDeltagetOfflinePlayer

onPlace

イベント処理public
public void onPlace(BlockPlaceEvent e)

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

引数

throws

なし

主要な呼び出し順

isRunninggetPlayergetGameModerememberPlacedBlockgetBlockPlacedisActivegetWorldgetUID

startTicking

メソッドpublic
public void startTicking()

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

引数

throws

なし

主要な呼び出し順

getSchedulerrunTaskTimerAsynchronouslyflushPendingScoresToDbsyncFromDbendIfTimeprintStackTracegetTaskId

stop

メソッドpublic
public void stop()

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

引数

throws

なし

主要な呼び出し順

flushPendingScoresToDbgetLoggerwarninggetMessagegetSchedulercancelTaskshutdownNow

syncFromDb

メソッドprivatesynchronized
private synchronized void syncFromDb()

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementexecuteQuerynextgetLongvalueOfgetStringgetScheduler

refreshCooldownFromDb

メソッドprivate
private void refreshCooldownFromDb()

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementexecuteQuerynextgetLongwasNull

endIfTime

メソッドprivate
private void endIfTime()

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementexecuteQuerynextgetLongcurrentTimeMillissetLongexecuteUpdate

代表的な処理フロー

  1. 初期化フロー
    EventService → getConfig → getString → getServer → getMotd → isBlank
    依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
  2. flushPendingScoresToDb フロー
    flushPendingScoresToDb → getRunningEventId → getAndSet → entrySet → getValue → getKey
    DB への問い合わせまたは更新処理を担当します。
  3. onBreakLog フロー
    onBreakLog → isActive → getPlayer → getGameMode → wasRecentlyPlaced → getBlock
    イベント発生時の分岐と後続処理を担当します。
  4. onBreakOre フロー
    onBreakOre → isActive → getPlayer → getGameMode → getInventory → getItemInMainHand
    イベント発生時の分岐と後続処理を担当します。
  5. onPlace フロー
    onPlace → isRunning → getPlayer → getGameMode → rememberPlacedBlock → getBlockPlaced
    イベント発生時の分岐と後続処理を担当します。
  6. onRaidStop フロー
    onRaidStop → isActive → getReason → getRaid → getHeroes → shouldCountRaidOnceByKey
    イベント発生時の分岐と後続処理を担当します。

外部との接点

Web ルート

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

SQL / テーブル

webcoop_active_eventDUALDBwebcoop_event_scorescorewebcoop_statecooldown_untilwebcoop_event_level

関連クラス

補足