セッションとアリーナライフサイクル
参加・退出・ロビー・本番・終了というミニゲーム全体の骨格です。プレイヤーがはまる不具合はまずここから見ます。
Rhythm4 Key を担当するclassです。
com.example.rankingplugin.minigame.gamesminigame/games/Rhythm4Key.javaclassクラス直前の Javadoc は見つかりませんでした。ソースとメソッド構成から責務を補完しています。
入力バッファ、譜面生成、落下ノーツ描画、ジャッジ、音声/OSU 取り込み、移動抑制までが一体化しており、同期描画と非同期判定が最も複雑に交差するミニゲームです。
joinloadOrCreatestartLobbyprepThenStartstartGamequeueInputPulseprocessBufferedInputsscheduleAsyncJudgeapplyPendingJudgmentsjudgeAndReportfinishSession参加・退出・ロビー・本番・終了というミニゲーム全体の骨格です。プレイヤーがはまる不具合はまずここから見ます。
移動入力・スプリント・ホットバー変更など複数ソースの入力を pulse として統一し、ズレ吸収と同時押し補助を行います。
存在しない譜面をその場で生成し、必要に応じて sidecar や osu! データから素材を持ってきます。ローカルファイル管理も大きい理由です。
落下ブロック、判定発光、パーティクル、スナップショット保存が含まれます。サーバ再起動時の残骸復旧もここにぶら下がります。
リズムゲーム中の暴走を防ぐため、移動・スプリント・同一レーン連打補助を細かく持っています。体感調整の入口です。
joinloadOrCreatecountdownThenStartstartGameプレイヤーをセッションへ紐付け、アリーナ設定をロードし、ロビー演出とカウントダウンを経て本番へ移ります。アリーナ構成不良や開始しない不具合はこの順序を追うと切り分けやすいです。
queueInputPulseprocessBufferedInputschooseBufferedCandidatescheduleAsyncJudgeapplyPendingJudgmentsjudgeAndReportaddScore入力を即時判定せず一度 pulse 化してから候補ノーツへ結び付けるため、ズレ吸収・同時押し・長押し補助をここで吸収できます。同期と非同期が交わる最大の読みどころです。
loadChartOrGenerategenerateChartAsyncIfNeededanalyzeAudioestimateBpmFromOnsetsquantizeOnsetsSmartwriteSimpleGridChart譜面未作成時は音源解析から最低限遊べる chart.yml を起こします。生成品質を触るときはこの流れを単体で追うのが安全です。
finishSessionremoveTrackEntitiesremoveJudgeVisualsclearSprintSuppressionshutdownAllSessionsゲーム終了後に表示物と移動制御を確実に戻さないと、再ログイン後まで副作用が残ります。起動直後の restore 系はその保険です。
このクラス内で直接見つかる主な Web ルート/項目名です。
| Signature | 説明 | 主要呼び出し |
|---|---|---|
public Rhythm4Key(JavaPlugin plugin, MinigameDao dao) | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 | 主要呼び出しなし |
| Name | Visibility | Kind | 説明 |
|---|---|---|---|
| ThreadPoolExecutor.DiscardOldestPolicy | package | メソッド | ThreadPoolExecutor.DiscardOldestPolicy の主要処理を担当します。 |
| Rhythm4Key | public | コンストラクタ | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 |
| id | public | メソッド | id の主要処理を担当します。 |
| id | public | メソッド | id の主要処理を担当します。 |
| id | public | メソッド | id の主要処理を担当します。 |
| restoreStaleJudgeVisualSnapshots | public | メソッド | restoreStaleJudgeVisualSnapshots の主要処理を担当します。 |
| onRegistered | public | メソッド | onRegistered の主要処理を担当します。 |
| laneQueues | private | メソッド | laneQueues の主要処理を担当します。 |
| laneQueue | private | メソッド | laneQueue の主要処理を担当します。 |
| totalBufferedPulses | private | メソッド | totalBufferedPulses の主要処理を担当します。 |
| flattenLaneQueues | private | メソッド | flattenLaneQueues の主要処理を担当します。 |
| pruneExpiredAndMaybeRemove | private | メソッド | pruneExpiredAndMaybeRemove の主要処理を担当します。 |
| queueInputPulse | private | メソッド | queueInputPulse の主要処理を担当します。 |
| queueInputPulse | private | メソッド | queueInputPulse の主要処理を担当します。 |
| queueInputPulse | private | メソッド | queueInputPulse の主要処理を担当します。 |
| arenaIds | public | メソッド | arenaIds の主要処理を担当します。 |
| arenaIds | public | メソッド | arenaIds の主要処理を担当します。 |
| onInteract | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| handleArenaSetupCmd | public | メソッド | 入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。 |
| tryAutoImportOsuIfNeeded | private | メソッド | maps/<songId>. |
| tryCopyAudioFromOsuSidecar | private | メソッド | tryCopyAudioFromOsuSidecar の主要処理を担当します。 |
| sameLaneHoldAssistEnabled | private | メソッド | sameLaneHoldAssistEnabled の主要処理を担当します。 |
| wasdIntentThreshold | private | メソッド | wasdIntentThreshold の主要処理を担当します。 |
| wasdKeepaliveThreshold | private | メソッド | wasdKeepaliveThreshold の主要処理を担当します。 |
| debugLog | private | メソッド | debugLog の主要処理を担当します。 |
| laneNoteMaterial | private | メソッド | laneNoteMaterial の主要処理を担当します。 |
| laneJudgeGlowMaterial | private | メソッド | laneJudgeGlowMaterial の主要処理を担当します。 |
| track | private | メソッド | track の主要処理を担当します。 |
| removeTrackEntities | private | メソッド | 対象データや登録状態を削除・解除します。 |
| spawnFalling | private | メソッド | spawnFalling の主要処理を担当します。 |
| shutdownAllSessions | private | メソッド | 動作中の処理やリソースを安全に停止・解放します。 |
| snapshotsDir | private | メソッド | snapshotsDir の主要処理を担当します。 |
| snapshotFileStem | private | メソッド | snapshotFileStem の主要処理を担当します。 |
| frameSnapshotFile | private | メソッド | frameSnapshotFile の主要処理を担当します。 |
| saveFrameSnapshot | private | メソッド | 状態を永続化または更新し、最新状態へ反映します。 |
| deleteFrameSnapshot | private | メソッド | 対象データや登録状態を削除・解除します。 |
| ensureDirs | private | メソッド | 必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。 |
| osuDir | private | メソッド | osuDir の主要処理を担当します。 |
| baseDir | private | メソッド | baseDir の主要処理を担当します。 |
| audioDir | private | メソッド | audioDir の主要処理を担当します。 |
| mapsDir | private | メソッド | mapsDir の主要処理を担当します。 |
| audioFile | private | メソッド | audioFile の主要処理を担当します。 |
| chartFile | private | メソッド | chartFile の主要処理を担当します。 |
| generateChartAsyncIfNeeded | private | メソッド | OGG→譜面:必要なら一度だけ非同期生成 |
| analyzeAudio | private | メソッド | analyzeAudio の主要処理を担当します。 |
| applyHann | private | メソッド | applyHann の主要処理を担当します。 |
| sendAB | private | メソッド | sendAB の主要処理を担当します。 |
| hitLane | private | メソッド | hitLane の主要処理を担当します。 |
| onToggleSprint | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onPlayerInput | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| inputToLaneMask | private | メソッド | inputToLaneMask の主要処理を担当します。 |
| syncNativeInput | private | メソッド | syncNativeInput の主要処理を担当します。 |
| restoreSuppressedMovementForOnline | public | メソッド | restoreSuppressedMovementForOnline の主要処理を担当します。 |
| restoreSuppressedMovement | public | メソッド | restoreSuppressedMovement の主要処理を担当します。 |
| applySprintSuppression | private | メソッド | applySprintSuppression の主要処理を担当します。 |
| maintainSprintSuppression | private | メソッド | maintainSprintSuppression の主要処理を担当します。 |
| clearSprintSuppression | private | メソッド | clearSprintSuppression の主要処理を担当します。 |
| hasNearbyChordSibling | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| isChordLinkedRepeat | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| effectiveGoodWindow | private | メソッド | effectiveGoodWindow の主要処理を担当します。 |
| chooseBufferedCandidate | private | メソッド | chooseBufferedCandidate の主要処理を担当します。 |
| tryJudgeBuffered | private | メソッド | tryJudgeBuffered の主要処理を担当します。 |
| estimatePulsePriority | private | メソッド | estimatePulsePriority の主要処理を担当します。 |
| removeBufferedPulseAndCoalesced | private | メソッド | 対象データや登録状態を削除・解除します。 |
| processBufferedInputs | private | メソッド | processBufferedInputs の主要処理を担当します。 |
| writeSimpleGridChart | private | メソッド | writeSimpleGridChart の主要処理を担当します。 |
| autoGenerateChartFromAudio | public | メソッド | autoGenerateChartFromAudio の主要処理を担当します。 |
| autoGenerateChartFromAudioQuantized | public | メソッド | autoGenerateChartFromAudioQuantized の主要処理を担当します。 |
| estimateBpmFromOnsets | private | メソッド | estimateBpmFromOnsets の主要処理を担当します。 |
| scoreForOffset | private | メソッド | scoreForOffset の主要処理を担当します。 |
| scoreFor | private | メソッド | scoreFor の主要処理を担当します。 |
| quantizeOnsetsSmart | private | メソッド | quantizeOnsetsSmart の主要処理を担当します。 |
| join | public | メソッド | join の主要処理を担当します。 |
| leave | public | メソッド | leave の主要処理を担当します。 |
| top | public | メソッド | top の主要処理を担当します。 |
| findSouthEdgeZ | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| blankToNull | private | メソッド | blankToNull の主要処理を担当します。 |
| resolvePlaybackSoundKey | private | メソッド | resolvePlaybackSoundKey の主要処理を担当します。 |
| normalizeSoundKey | private | メソッド | normalizeSoundKey の主要処理を担当します。 |
| normalizeSoundToken | private | メソッド | normalizeSoundToken の主要処理を担当します。 |
| normalizeSoundPath | private | メソッド | normalizeSoundPath の主要処理を担当します。 |
| rememberFrameBlock | private | メソッド | rememberFrameBlock の主要処理を担当します。 |
| visualSongTimeMs | private | メソッド | visualSongTimeMs の主要処理を担当します。 |
| judgeSongTimeMs | private | メソッド | judgeSongTimeMs の主要処理を担当します。 |
| loadOrCreate | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| rebuildNoteCache | private | メソッド | rebuildNoteCache の主要処理を担当します。 |
| effGoodWindowApprox | private | メソッド | effGoodWindowApprox の主要処理を担当します。 |
| scheduleAsyncJudge | private | メソッド | scheduleAsyncJudge の主要処理を担当します。 |
| applyPendingJudgments | private | メソッド | applyPendingJudgments の主要処理を担当します。 |
| computeTargetY | private | メソッド | computeTargetY の主要処理を担当します。 |
| ensureVisibleFalling | private | メソッド | 必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。 |
| countdownThenStart | private | メソッド | countdownThenStart の主要処理を担当します。 |
| startGame | private | メソッド | 初期化と各種登録を行い、機能を有効化します。 |
| spawnFalling | private | メソッド | spawnFalling の主要処理を担当します。 |
| onFallingMakeBlock | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| buildJudgeVisuals | private | メソッド | 表示用または出力用のデータを組み立てます。 |
| emitJudgeLaneParticles | private | メソッド | emitJudgeLaneParticles の主要処理を担当します。 |
| removeJudgeVisuals | private | メソッド | 対象データや登録状態を削除・解除します。 |
| onFallingBlockLand | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onHotbar | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| judgeAndReport | private | メソッド | judgeAndReport の主要処理を担当します。 |
| missBlink | private | メソッド | missBlink の主要処理を担当します。 |
| addScore | private | メソッド | addScore の主要処理を担当します。 |
| onDamage | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| handleProtocolInputMask | package | メソッド | 入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。 |
| drainProtocolInputQueue | private | メソッド | drainProtocolInputQueue の主要処理を担当します。 |
| handleDirectInputMask | private | メソッド | ProtocolLib から来た直接入力マスク処理。 |
| prevSameLaneIntervalMs | private | メソッド | prevSameLaneIntervalMs の主要処理を担当します。 |
| findNearestLaneRepeatNoteIdx | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| maybeAssistSameLaneRetrigger | private | メソッド | maybeAssistSameLaneRetrigger の主要処理を担当します。 |
| maybeAssistProtocolHeldOnTick | private | メソッド | maybeAssistProtocolHeldOnTick の主要処理を担当します。 |
| setupOptionalProtocolInputHook | private | メソッド | 初期化と各種登録を行い、機能を有効化します。 |
| onMoveCapture | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onMoveLock | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onQuit | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onQuit | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| finishSession | private | メソッド | finishSession の主要処理を担当します。 |
| findSessionByMember | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| findSessionByPlayer | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| broadcast | private | メソッド | broadcast の主要処理を担当します。 |
| loadChartOrGenerate | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| autoGenerateChart | private | メソッド | autoGenerateChart の主要処理を担当します。 |
| findStageY | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| importOsuToChartYml | private | メソッド | importOsuToChartYml の主要処理を担当します。 |
, new ThreadPoolExecutor.DiscardOldestPolicy() )ThreadPoolExecutor.DiscardOldestPolicy の主要処理を担当します。
)なし
public Rhythm4Key(JavaPlugin plugin, MinigameDao dao)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
JavaPlugin pluginMinigameDao daoなし
public String id()id の主要処理を担当します。
なし
public String id() { return "arena_rhythm4k"; } public String displayName()id の主要処理を担当します。
) { return "arena_rhythm4k"; } public String displayName(なし
public String id() { return "arena_rhythm4k"; } public String displayName() { return "Rhythm 4-Key"; } public static void shutdownRegisteredSessions(String reason)id の主要処理を担当します。
) { return "arena_rhythm4k"; } public String displayName() { return "Rhythm 4-Key"; } public static void shutdownRegisteredSessions(String reasonなし
public static void restoreStaleJudgeVisualSnapshots(JavaPlugin plugin)restoreStaleJudgeVisualSnapshots の主要処理を担当します。
JavaPlugin pluginなし
public void onRegistered(Plugin pl)onRegistered の主要処理を担当します。
Plugin plなし
private java.util.List<Deque<InputPulse>> laneQueues(Session s, UUID uid)laneQueues の主要処理を担当します。
Session sUUID uidなし
private Deque<InputPulse> laneQueue(Session s, UUID uid, int lane)laneQueue の主要処理を担当します。
Session sUUID uidint laneなし
private int totalBufferedPulses(java.util.List<Deque<InputPulse>> laneQs)totalBufferedPulses の主要処理を担当します。
java.util.List<Deque<InputPulse>> laneQsなし
private java.util.List<InputPulse> flattenLaneQueues(java.util.List<Deque<InputPulse>> laneQs)flattenLaneQueues の主要処理を担当します。
java.util.List<Deque<InputPulse>> laneQsなし
private boolean pruneExpiredAndMaybeRemove(Session s, UUID uid, java.util.List<Deque<InputPulse>> laneQs, long now)pruneExpiredAndMaybeRemove の主要処理を担当します。
Session sUUID uidjava.util.List<Deque<InputPulse>> laneQslong nowなし
private void queueInputPulse(Player p, int lane)queueInputPulse の主要処理を担当します。
Player pint laneなし
private void queueInputPulse(Player p, int lane, long sourceTs, boolean bypassDeglitch)queueInputPulse の主要処理を担当します。
Player pint lanelong sourceTsboolean bypassDeglitchなし
private void queueInputPulse(Player p, int lane, long sourceTs, boolean bypassDeglitch, boolean assisted)queueInputPulse の主要処理を担当します。
Player pint lanelong sourceTsboolean bypassDeglitchboolean assistedなし
public List<String> arenaIds()arenaIds の主要処理を担当します。
なし
public List<String> arenaIds() { return new ArrayList<>(arenaIds); } public void reloadArenas()arenaIds の主要処理を担当します。
) { return new ArrayList<>(arenaIds); } public void reloadArenas(なし
public void onInteract(org.bukkit.event.player.PlayerInteractEvent e)イベント発生時の分岐と後続処理を担当します。
org.bukkit.event.player.PlayerInteractEvent eなし
public boolean handleArenaSetupCmd(Plugin pl, org.bukkit.command.CommandSender sender, String arenaId, String subCmd)入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。
Plugin plorg.bukkit.command.CommandSender senderString arenaIdString subCmdなし
private boolean tryAutoImportOsuIfNeeded(String songId)maps/<songId>.
String songIdなし
private void tryCopyAudioFromOsuSidecar(String songId, File osuFile)tryCopyAudioFromOsuSidecar の主要処理を担当します。
String songIdFile osuFileなし
private boolean sameLaneHoldAssistEnabled()sameLaneHoldAssistEnabled の主要処理を担当します。
なし
private static double wasdIntentThreshold(Player p)wasdIntentThreshold の主要処理を担当します。
Player pなし
private static double wasdKeepaliveThreshold(Player p)wasdKeepaliveThreshold の主要処理を担当します。
Player pなし
private void debugLog(String msg)debugLog の主要処理を担当します。
String msgなし
private static Material laneNoteMaterial(int lane)laneNoteMaterial の主要処理を担当します。
int laneなし
private static Material laneJudgeGlowMaterial(int lane)laneJudgeGlowMaterial の主要処理を担当します。
int laneなし
private PlayerTrackState track(Session s, UUID uid)track の主要処理を担当します。
Session sUUID uidなし
private void removeTrackEntities(Session s, PlayerTrackState st)対象データや登録状態を削除・解除します。
Session sPlayerTrackState stなし
private FallingBlock spawnFalling(Session s, UUID owner, int lane, double x, double yFrom)spawnFalling の主要処理を担当します。
Session sUUID ownerint lanedouble xdouble yFromなし
private void shutdownAllSessions(String reason)動作中の処理やリソースを安全に停止・解放します。
String reasonなし
private File snapshotsDir()snapshotsDir の主要処理を担当します。
なし
private String snapshotFileStem(String arenaName)snapshotFileStem の主要処理を担当します。
String arenaNameなし
private File frameSnapshotFile(String arenaName)frameSnapshotFile の主要処理を担当します。
String arenaNameなし
private void saveFrameSnapshot(Session s)状態を永続化または更新し、最新状態へ反映します。
Session sなし
private void deleteFrameSnapshot(Session s)対象データや登録状態を削除・解除します。
Session sなし
private void ensureDirs()必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
なし
private File osuDir()osuDir の主要処理を担当します。
なし
private File baseDir()baseDir の主要処理を担当します。
なし
private File audioDir()audioDir の主要処理を担当します。
なし
private File mapsDir()mapsDir の主要処理を担当します。
なし
private File audioFile(String songId)audioFile の主要処理を担当します。
String songIdなし
private File chartFile(String songId)chartFile の主要処理を担当します。
String songIdなし
private boolean generateChartAsyncIfNeeded(String songId, Runnable onReady)OGG→譜面:必要なら一度だけ非同期生成
String songIdRunnable onReadyなし
private AudioAnalysis analyzeAudio(File ogg, int bufferSize, int overlap) throws IOExceptionanalyzeAudio の主要処理を担当します。
File oggint bufferSizeint overlapIOException
private static void applyHann(float[] buf)applyHann の主要処理を担当します。
float[] bufなし
private static void sendAB(Player p, String msg)sendAB の主要処理を担当します。
Player pString msgなし
private void hitLane(Player p, int lane)hitLane の主要処理を担当します。
Player pint laneなし
public void onToggleSprint(org.bukkit.event.player.PlayerToggleSprintEvent e)イベント発生時の分岐と後続処理を担当します。
org.bukkit.event.player.PlayerToggleSprintEvent eなし
public void onPlayerInput(org.bukkit.event.player.PlayerInputEvent e)イベント発生時の分岐と後続処理を担当します。
org.bukkit.event.player.PlayerInputEvent eなし
private int inputToLaneMask(org.bukkit.Input input)inputToLaneMask の主要処理を担当します。
org.bukkit.Input inputなし
private void syncNativeInput(Player p, long now)syncNativeInput の主要処理を担当します。
Player plong nowなし
public static void restoreSuppressedMovementForOnline(JavaPlugin plugin)restoreSuppressedMovementForOnline の主要処理を担当します。
JavaPlugin pluginなし
public static void restoreSuppressedMovement(JavaPlugin plugin, Player p)restoreSuppressedMovement の主要処理を担当します。
JavaPlugin pluginPlayer pなし
private void applySprintSuppression(Player p)applySprintSuppression の主要処理を担当します。
Player pなし
private void maintainSprintSuppression(Player p)maintainSprintSuppression の主要処理を担当します。
Player pなし
private void clearSprintSuppression(Player p)clearSprintSuppression の主要処理を担当します。
Player pなし
private boolean hasNearbyChordSibling(Session s, int noteIndex, long noteTimeMs)条件判定を行い、後続処理の分岐に使える真偽値を返します。
Session sint noteIndexlong noteTimeMsなし
private boolean isChordLinkedRepeat(Session s, int noteIndex, int lane, long noteTimeMs)条件判定を行い、後続処理の分岐に使える真偽値を返します。
Session sint noteIndexint lanelong noteTimeMsなし
private int effectiveGoodWindow(Session s, int noteIndex, long noteTimeMs)effectiveGoodWindow の主要処理を担当します。
Session sint noteIndexlong noteTimeMsなし
private BufferedCandidate chooseBufferedCandidate(Session s, PlayerTrackState st, int lane, long pulseBaseT, boolean assisted)chooseBufferedCandidate の主要処理を担当します。
Session sPlayerTrackState stint lanelong pulseBaseTboolean assistedなし
private boolean tryJudgeBuffered(Session s, UUID uid, InputPulse pulse)tryJudgeBuffered の主要処理を担当します。
Session sUUID uidInputPulse pulseなし
private double estimatePulsePriority(Session s, UUID uid, InputPulse pulse)estimatePulsePriority の主要処理を担当します。
Session sUUID uidInputPulse pulseなし
private void removeBufferedPulseAndCoalesced(Deque<InputPulse> q, InputPulse consumed)対象データや登録状態を削除・解除します。
Deque<InputPulse> qInputPulse consumedなし
private void processBufferedInputs(Session s, UUID uid, long nowMs)processBufferedInputs の主要処理を担当します。
Session sUUID uidlong nowMsなし
private void writeSimpleGridChart(String songId, long lengthMs, double bpm)writeSimpleGridChart の主要処理を担当します。
String songIdlong lengthMsdouble bpmなし
public void autoGenerateChartFromAudio(String songId, int minIntervalMs, double sensitivity) throws ExceptionautoGenerateChartFromAudio の主要処理を担当します。
String songIdint minIntervalMsdouble sensitivityException
public void autoGenerateChartFromAudioQuantized( String songId, int minIntervalMs, double sensitivity, int maxNps, int[] allowedDivisions ) throws ExceptionautoGenerateChartFromAudioQuantized の主要処理を担当します。
String songIdint minIntervalMsdouble sensitivityint maxNpsint[] allowedDivisionsException
private double estimateBpmFromOnsets(java.util.List<Long> onsets)estimateBpmFromOnsets の主要処理を担当します。
java.util.List<Long> onsetsなし
private static double scoreForOffset(List<Long> onsets, double grid, double off)scoreForOffset の主要処理を担当します。
List<Long> onsetsdouble griddouble offなし
private static double scoreFor(List<Long> onsets, double grid, double off)scoreFor の主要処理を担当します。
List<Long> onsetsdouble griddouble offなし
private QuantizeResult quantizeOnsetsSmart( java.util.List<Long> onsets, java.util.List<double[]> frameBands, float sr, int bufferSize, int overlap, double beatMs, int[] allowedDivisions )quantizeOnsetsSmart の主要処理を担当します。
java.util.List<Long> onsetsjava.util.List<double[]> frameBandsfloat srint bufferSizeint overlapdouble beatMsint[] allowedDivisionsなし
public void join(Player p, String arenaId)join の主要処理を担当します。
Player pString arenaIdなし
public void leave(Player player)leave の主要処理を担当します。
Player playerなし
public List<String> top(String arenaId, String season, int limit)top の主要処理を担当します。
String arenaIdString seasonint limitなし
private int findSouthEdgeZ(World w, int cx, int y, int cz)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
World wint cxint yint czなし
private static String blankToNull(String s)blankToNull の主要処理を担当します。
String sなし
private String resolvePlaybackSoundKey(String songId, String arenaSoundKey, String chartSoundKey)resolvePlaybackSoundKey の主要処理を担当します。
String songIdString arenaSoundKeyString chartSoundKeyなし
private String normalizeSoundKey(String raw)normalizeSoundKey の主要処理を担当します。
String rawなし
private String normalizeSoundToken(String raw)normalizeSoundToken の主要処理を担当します。
String rawなし
private String normalizeSoundPath(String raw)normalizeSoundPath の主要処理を担当します。
String rawなし
private void rememberFrameBlock(Session s, Block b)rememberFrameBlock の主要処理を担当します。
Session sBlock bなし
private long visualSongTimeMs(Session s, long epochMs)visualSongTimeMs の主要処理を担当します。
Session slong epochMsなし
private long judgeSongTimeMs(Session s, long epochMs)judgeSongTimeMs の主要処理を担当します。
Session slong epochMsなし
private Session loadOrCreate(String arena, Player ctx)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
String arenaPlayer ctxなし
private static void rebuildNoteCache(Session s)rebuildNoteCache の主要処理を担当します。
Session sなし
private static int effGoodWindowApprox(long[] noteTimesAbs, int[] noteLanes, int j)effGoodWindowApprox の主要処理を担当します。
long[] noteTimesAbsint[] noteLanesint jなし
private void scheduleAsyncJudge(Session s, long nowMs)scheduleAsyncJudge の主要処理を担当します。
Session slong nowMsなし
private void applyPendingJudgments(Session s)applyPendingJudgments の主要処理を担当します。
Session sなし
private double computeTargetY(Session s, long visualBaseT, Note n)computeTargetY の主要処理を担当します。
Session slong visualBaseTNote nなし
private FallingBlock ensureVisibleFalling(Session s, UUID owner, PlayerTrackState st, int noteIdx, long visualBaseT)必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
Session sUUID ownerPlayerTrackState stint noteIdxlong visualBaseTなし
private void countdownThenStart(Session s)countdownThenStart の主要処理を担当します。
Session sなし
private void startGame(Session s)初期化と各種登録を行い、機能を有効化します。
Session sなし
private FallingBlock spawnFalling(Session s, int lane, double x, double yFrom)spawnFalling の主要処理を担当します。
Session sint lanedouble xdouble yFromなし
public void onFallingMakeBlock(org.bukkit.event.entity.EntityChangeBlockEvent e)イベント発生時の分岐と後続処理を担当します。
org.bukkit.event.entity.EntityChangeBlockEvent eなし
private void buildJudgeVisuals(Session s)表示用または出力用のデータを組み立てます。
Session sなし
private void emitJudgeLaneParticles(Session s, long nowMs)emitJudgeLaneParticles の主要処理を担当します。
Session slong nowMsなし
private void removeJudgeVisuals(Session s)対象データや登録状態を削除・解除します。
Session sなし
public void onFallingBlockLand(org.bukkit.event.entity.EntityChangeBlockEvent e)イベント発生時の分岐と後続処理を担当します。
org.bukkit.event.entity.EntityChangeBlockEvent eなし
public void onHotbar(PlayerItemHeldEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerItemHeldEvent eなし
private void judgeAndReport(Session s, UUID uid, int noteIndex, String rank, long adt)judgeAndReport の主要処理を担当します。
Session sUUID uidint noteIndexString ranklong adtなし
private void missBlink(Session s, int lane)missBlink の主要処理を担当します。
Session sint laneなし
private void addScore(Session s, UUID uid, long add)addScore の主要処理を担当します。
Session sUUID uidlong addなし
public void onDamage(org.bukkit.event.entity.EntityDamageEvent e)イベント発生時の分岐と後続処理を担当します。
org.bukkit.event.entity.EntityDamageEvent eなし
void handleProtocolInputMask(Player p, int candMask, long now)入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。
Player pint candMasklong nowなし
private void drainProtocolInputQueue()drainProtocolInputQueue の主要処理を担当します。
なし
private void handleDirectInputMask(Player p, int candMask, long now)ProtocolLib から来た直接入力マスク処理。
Player pint candMasklong nowなし
private long prevSameLaneIntervalMs(Session s, int noteIdx, int lane)prevSameLaneIntervalMs の主要処理を担当します。
Session sint noteIdxint laneなし
private int findNearestLaneRepeatNoteIdx(Session s, PlayerTrackState st, int lane, long judgeBaseT)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
Session sPlayerTrackState stint lanelong judgeBaseTなし
private void maybeAssistSameLaneRetrigger(Player p, int heldMask, long now)maybeAssistSameLaneRetrigger の主要処理を担当します。
Player pint heldMasklong nowなし
private void maybeAssistProtocolHeldOnTick(Session s, UUID uid, long now)maybeAssistProtocolHeldOnTick の主要処理を担当します。
Session sUUID uidlong nowなし
private void setupOptionalProtocolInputHook()初期化と各種登録を行い、機能を有効化します。
なし
public void onMoveCapture(PlayerMoveEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerMoveEvent eなし
public void onMoveLock(PlayerMoveEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerMoveEvent eなし
public void onQuit(PlayerQuitEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerQuitEvent eなし
public void onQuit(PlayerQuitEvent e){ leave(e.getPlayer()); } public void onJoin(PlayerJoinEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerQuitEvent e){ leave(e.getPlayer()); } public void onJoin(PlayerJoinEvent eなし
private void finishSession(Session s, String reason)finishSession の主要処理を担当します。
Session sString reasonなし
private Session findSessionByMember(UUID uid)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
UUID uidなし
private Session findSessionByPlayer(UUID uid)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
UUID uidなし
private void broadcast(Session s, String msg)broadcast の主要処理を担当します。
Session sString msgなし
private Chart loadChartOrGenerate(String songId)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
String songIdなし
private void autoGenerateChart(String songId, double bpm, int lengthSec, int offsetMs, double density) throws IOExceptionautoGenerateChart の主要処理を担当します。
String songIddouble bpmint lengthSecint offsetMsdouble densityIOException
private int findStageY(World w, int cx, int cz)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
World wint cxint czなし
private void importOsuToChartYml(String songId, File osuFile, int globalOffsetMs) throws ExceptionimportOsuToChartYml の主要処理を担当します。
String songIdFile osuFileint globalOffsetMsException
onInteract → getPlayer → findSessionByMember → getUniqueId → getAction → getInventoryonMoveCapture → getPlayer → findSessionByMember → getUniqueId → maintainSprintSuppression → getToonMoveLock → getPlayer → findSessionByMember → getUniqueId → maintainSprintSuppression → getToonPlayerInput → getPlayer → findSessionByMember → getUniqueId → inputToLaneMask → getInputonQuit → getPlayer → findSessionByMember → getUniqueId → restoreSuppressedMovement → getScheduleronHotbar → getPlayer → findSessionByMember → getUniqueId → getNewSlot → setCancelled