Tetris Blocks を担当するclassです。

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

クラス説明

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

責務と見どころ

重点クラスの詳細解説

TetrisBlocks はロビー・席配置・パッド入力・盤面レンダリング・落下ロジック・音楽・スコア保存までをまとめる対戦テトリスの本体です。進行が段階的なので章立てが有効です。

最初に追う読む順番

  1. join
    参加処理とセッション確保から読み始めると全体が追いやすいです。
  2. loadOrCreate
    アリーナ設定と保存データの境界です。
  3. startLobby
    ロビー開始と参加者待機の中心です。
  4. decideModeAndStart
    人数に応じたモード分岐を確認できます。
  5. prepThenStart
    開始前の準備時間とプレイヤー固定処理です。
  6. startGame
    ゲーム本体の起動、盤面描画、音楽開始の核です。
  7. onMove
    移動入力が盤面操作へどう変換されるかを見ます。
  8. onSneak
    回転・ホールドなど補助入力の入口です。
  9. onPlace
    ブロック確定・盤面更新の中心です。
  10. finishGame
    勝敗確定、スコア保存、花火、掃除の出口です。

内部サブシステムの地図

代表フロー詳解

プレイヤー入力から盤面更新まで

  1. onMove / onSneak
  2. lockToPad
  3. pad 状態更新
  4. onPlace
  5. 盤面再描画

移動量をそのまま使うのではなく、パッド固定としきい値判定を通して誤操作を減らしています。操作感調整はしきい値群を触ります。

終了処理

  1. finishGame
  2. saveScore
  3. sendTitle / ActionBar
  4. launchFirework
  5. cleanup
  6. stopMusicAll

演出だけで終わらず、ハイスコア保存やテレポート解除まで同時に行うのがポイントです。音だけ残るときは stopMusicAll 側も必ず見ます。

変更時の注意点

フィールド

VisibilityTypeName役割
privateJavaPluginpluginプラグイン本体参照です。
privateMinigameDaodaodao の状態を保持します。
privateMap<UUID, Long>lastHardDropMslastHardDropMs の状態を保持します。
privateSet<String>arenaIdsarenaIds の状態を保持します。
privateNamespacedKeyKEY_FS_ACTIVEKEY_FS_ACTIVE の状態を保持します。
privateNamespacedKeyKEY_FS_GAMEKEY_FS_GAME の状態を保持します。
privateNamespacedKeyKEY_FS_BESTKEY_FS_BEST の状態を保持します。
privateNamespacedKeyKEY_MENUKEY_MENU の状態を保持します。
privateintWW の状態を保持します。
privateintLOBBY_SECONDSLOBBY_SECONDS の状態を保持します。
privateintPREP_SECONDSPREP_SECONDS の状態を保持します。
privateintLIMIT_SECONDSLIMIT_SECONDS の状態を保持します。
privateStringMUSIC_NSMUSIC_NS の状態を保持します。
privateTetrisConfigcfgcfg の状態を保持します。
privatelongROTATE_COOLDOWN_MSROTATE_COOLDOWN_MS の状態を保持します。
privatelongHOLD_COOLDOWN_MSHOLD_COOLDOWN_MS の状態を保持します。
privatedoubleROTATE_PRESS_THROTATE_PRESS_TH の状態を保持します。
privatedoubleROTATE_RELEASE_THROTATE_RELEASE_TH の状態を保持します。
privatedoubleMOVE_PRESS_THMOVE_PRESS_TH の状態を保持します。
privateMap<UUID, Boolean>wKeyHeldwKeyHeld の状態を保持します。
privateMap<UUID, Long>lastRotateMslastRotateMs の状態を保持します。
privateMap<UUID, Long>lastLRMslastLRMs の状態を保持します。
privateMap<UUID, Long>lastSoftMslastSoftMs の状態を保持します。
privateMap<UUID, Long>lastHoldMslastHoldMs の状態を保持します。
privateMap<String, Session>sessionssessions の状態を保持します。

コンストラクタ / 初期化

Signature説明主要呼び出し
public TetrisBlocks(JavaPlugin plugin, MinigameDao dao)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。load

メソッド索引

NameVisibilityKind説明
TetrisBlockspublicコンストラクタ依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
idpublicメソッドid の主要処理を担当します。
idpublicメソッドid の主要処理を担当します。
idpublicメソッドid の主要処理を担当します。
arenaIdspublicメソッドarenaIds の主要処理を担当します。
arenaIdspublicメソッドarenaIds の主要処理を担当します。
handleArenaSetupCmdpublicメソッド入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。
resolveEntranceWarpprivateメソッドアリーナ内の入場看板(4方向)を探し、テレポート先を返す。
joinpublicメソッドjoin の主要処理を担当します。
leavepublicメソッドleave の主要処理を担当します。
toppublicメソッドtop の主要処理を担当します。
startLobbyprivateメソッド初期化と各種登録を行い、機能を有効化します。
decideModeAndStartprivateメソッドdecideModeAndStart の主要処理を担当します。
openModeMenuprivateメソッドopenModeMenu の主要処理を担当します。
menuItemprivateメソッドmenuItem の主要処理を担当します。
onMenupublicイベント処理イベント発生時の分岐と後続処理を担当します。
prepThenStartprivateメソッドprepThenStart の主要処理を担当します。
startGameprivateメソッド初期化と各種登録を行い、機能を有効化します。
activeBoardsOfprivateメソッドactiveBoardsOf の主要処理を担当します。
finishGameprivateメソッドfinishGame の主要処理を担当します。
saveScoreprivateメソッド状態を永続化または更新し、最新状態へ反映します。
rightIsPlusXprivateメソッドrightIsPlusX の主要処理を担当します。
normalizeYawprivateメソッドnormalizeYaw の主要処理を担当します。
updateActionBarsprivateメソッド状態を永続化または更新し、最新状態へ反映します。
formatTimeprivateメソッドformatTime の主要処理を担当します。
sendABprivateメソッドsendAB の主要処理を担当します。
onMovepublicイベント処理イベント発生時の分岐と後続処理を担当します。
onSneakpublicイベント処理イベント発生時の分岐と後続処理を担当します。
lockToPadprivateメソッドlockToPad の主要処理を担当します。
onPlacepublicイベント処理イベント発生時の分岐と後続処理を担当します。
onQuitpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onQuitpublicイベント処理イベント発生時の分岐と後続処理を担当します。
entrancePlatformWarpprivateメソッドentrancePlatformWarp の主要処理を担当します。
safeTeleportprivateメソッドsafeTeleport の主要処理を担当します。
loadOrCreateprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
buildBoardprivateメソッド表示用または出力用のデータを組み立てます。
makePadprivateメソッドmakePad の主要処理を担当します。
makePadprivateメソッドmakePad の主要処理を担当します。
pickSeatprivateメソッドpickSeat の主要処理を担当します。
teleportToPadprivateメソッドteleportToPad の主要処理を担当します。
cleanupprivateメソッドcleanup の主要処理を担当します。
clearUiAreaAroundBoardprivateメソッドclearUiAreaAroundBoard の主要処理を担当します。
startMusicForAllprivateメソッド初期化と各種登録を行い、機能を有効化します。
stopMusicAllprivateメソッド動作中の処理やリソースを安全に停止・解放します。
findSessionByPlayerprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
broadcastprivateメソッドbroadcast の主要処理を担当します。
playAllprivateメソッドplayAll の主要処理を担当します。
launchFireworkprivateメソッドlaunchFirework の主要処理を担当します。
findStageYprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。

メソッド詳細

TetrisBlocks

コンストラクタpublic
public TetrisBlocks(JavaPlugin plugin, MinigameDao dao)

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

引数

throws

なし

主要な呼び出し順

load

id

メソッドpublic
public String id()

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

引数

throws

なし

主要な呼び出し順

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

id

メソッドpublic
public String id() { return "arena_tetris"; } public String displayName()

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

引数

throws

なし

主要な呼び出し順

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

id

メソッドpublic
public String id() { return "arena_tetris"; } public String displayName() { return "テトリス"; } public void onRegistered(Plugin pl)

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

引数

throws

なし

主要な呼び出し順

getServergetPluginManagerregisterEvents

arenaIds

メソッドpublic
public List<String> arenaIds()

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

引数

throws

なし

主要な呼び出し順

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

arenaIds

メソッドpublic
public List<String> arenaIds() { return new ArrayList<>(arenaIds); } public void reloadArenas()

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

引数

throws

なし

主要な呼び出し順

cleargetDataFolderexistslistFilesendsWithgetNamesubstringlength

handleArenaSetupCmd

メソッドpublic
public boolean handleArenaSetupCmd(Plugin plugin, CommandSender sender, String arenaId, String subCmd)

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

引数

throws

なし

主要な呼び出し順

equalsIgnoreCasereloadArenassendMessageload

resolveEntranceWarp

メソッドprivate
private Location resolveEntranceWarp(Session s)

アリーナ内の入場看板(4方向)を探し、テレポート先を返す。

引数

throws

なし

主要な呼び出し順

getWorldgetBlockXgetBlockZfindStageYmaxgetBlockAtgetStategetPersistentDataContainer

join

メソッドpublic
public void join(Player p, String arenaId)

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

引数

throws

なし

主要な呼び出し順

computeIfAbsentloadOrCreatesendMessagegetUniqueIdcontainsKeypickSeatteleportToPadgetPersistentDataContainer

leave

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

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

引数

throws

なし

主要な呼び出し順

findSessionByPlayergetUniqueIdremoveisEmptycleanup

top

メソッドpublic
public List<String> top(String arenaId, String season, int limit)

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

引数

throws

なし

主要な呼び出し順

equalsIgnoreCasecurrentSeasontopLinesDescid

startLobby

メソッドprivate
private void startLobby(Session s)

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

引数

throws

なし

主要な呼び出し順

broadcastruncanceldecideModeAndStartplayAllrunTaskTimer

decideModeAndStart

メソッドprivate
private void decideModeAndStart(Session s)

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

引数

throws

なし

主要な呼び出し順

sizebroadcastprepThenStartiteratornextgetPlayeropenModeMenugetScheduler

openModeMenu

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

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

引数

throws

なし

主要な呼び出し順

createInventorysetItemmenuItemopenInventory

menuItem

メソッドprivate
private ItemStack menuItem(Material m, String name, String val)

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

引数

throws

なし

主要な呼び出し順

getItemMetasetDisplayNamegetPersistentDataContainersetItemMeta

onMenu

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

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

引数

throws

なし

主要な呼び出し順

getWhoClickedgetCurrentItemgetItemMetagetPersistentDataContainerhassetCancelledfindSessionByPlayergetUniqueId

prepThenStart

メソッドprivate
private void prepThenStart(Session s)

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

引数

throws

なし

主要な呼び出し順

valuesbroadcastruncancelstartGameplayAllrunTaskTimer

startGame

メソッドprivate
private void startGame(Session s)

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

引数

throws

なし

主要な呼び出し順

getWorldredrawstartMusicForAllplayAllspawnParticleruncancelactiveBoardsOf

activeBoardsOf

メソッドprivate
private List<Board> activeBoardsOf(Session s)

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

引数

throws

なし

主要な呼び出し順

singletonListvaluesstreammapcollecttoSetsizecontains

finishGame

メソッドprivate
private void finishGame(Session s, String reason)

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

引数

throws

なし

主要な呼び出し順

signalGameFinishedsignalGameFinishedByArenaNamekeySetgetPlayersendTitlesaveScoreentrySetgetKey

saveScore

メソッドprivate
private void saveScore(Player p, Session s, int score)

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

引数

throws

なし

主要な呼び出し順

recordScoreidgetUniqueIdgetNamecurrentSeasonpersonalBestDescgetPersistentDataContainerfloor

rightIsPlusX

メソッドprivate
private boolean rightIsPlusX(Board b, Seat seat)

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

引数

throws

なし

主要な呼び出し順

normalizeYawabs

normalizeYaw

メソッドprivate
private float normalizeYaw(float yaw)

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

引数

throws

なし

主要な呼び出し順

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

updateActionBars

メソッドprivate
private void updateActionBars(Session s)

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

引数

throws

なし

主要な呼び出し順

entrySetgetPlayergetKeygetValuemaxformatformatTimed

formatTime

メソッドprivate
private String formatTime(int sec)

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

引数

throws

なし

主要な呼び出し順

format

sendAB

メソッドprivate
private void sendAB(Player p, String msg)

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

引数

throws

なし

主要な呼び出し順

spigotsendMessagesendTitle

onMove

イベント処理public
public void onMove(PlayerMoveEvent e)

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

引数

throws

なし

主要な呼び出し順

getPlayerfindSessionByPlayergetUniqueIdlockToPadgetTogetYgetFromcurrentTimeMillis

onSneak

イベント処理public
public void onSneak(PlayerToggleSneakEvent e)

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

引数

throws

なし

主要な呼び出し順

isSneakinggetPlayerfindSessionByPlayergetUniqueIdcurrentTimeMillisgetOrDefaultholdredraw

lockToPad

メソッドprivate
private void lockToPad(PlayerMoveEvent e, Seat seat)

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

引数

throws

なし

主要な呼び出し順

getTosetXgetXsetYgetYsetZgetZsetTo

onPlace

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

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

引数

throws

なし

主要な呼び出し順

findSessionByPlayergetPlayergetUniqueIdgetBlockgetLocationdistanceSquaredsetCancelled

onQuit

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

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

引数

throws

なし

主要な呼び出し順

leavegetPlayer

onQuit

イベント処理public
public void onQuit(PlayerQuitEvent e){ leave(e.getPlayer()); } private void clearMinigameFlags(UUID uid)

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

引数

throws

なし

主要な呼び出し順

getPlayergetPersistentDataContainerremovecloseInventory

entrancePlatformWarp

メソッドprivate
private Location entrancePlatformWarp(Session s)

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

引数

throws

なし

主要な呼び出し順

getWorldgetBlockXgetBlockYgetBlockZsetYawsetPitch

safeTeleport

メソッドprivate
private void safeTeleport(Player pl, Location to)

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

引数

throws

なし

主要な呼び出し順

addPotionEffectgetSchedulerrunTaskteleportrunTaskLater

loadOrCreate

メソッドprivate
private Session loadOrCreate(String arena, Player ctx)

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

引数

throws

なし

主要な呼び出し順

getDataFolderexistsloadConfigurationgetWorldrequireNonNullgetStringgetDoublegetInt

buildBoard

メソッドprivate
private Board buildBoard(World w, Plane plane, int minA, int minY, int constB)

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

引数

throws

なし

主要な呼び出し順

getBlockAtsetTyperedrawmakePad

makePad

メソッドprivate
private void makePad(Session s, World w, Board b, boolean build)

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

引数

throws

なし

主要な呼び出し順

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

makePad

メソッドprivate
private void makePad(World w, Board b, boolean build)

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

引数

throws

なし

主要な呼び出し順

getBlockAtsetType

pickSeat

メソッドprivate
private Seat pickSeat(Session s, Player p)

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

引数

throws

なし

主要な呼び出し順

valuesstreamanyMatchgetBlockZgetWorldgetBlockXgetUniqueId

teleportToPad

メソッドprivate
private void teleportToPad(Player p, Seat seat)

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

引数

throws

なし

主要な呼び出し順

getLocationclonesetYawgetYawsetPitchgetPitchteleportsetFoodLevel

cleanup

メソッドprivate
private void cleanup(Session s)

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

引数

throws

なし

主要な呼び出し順

getWorldsetTypemakePadclearUiAreaAroundBoardkeySetgetPlayergetPersistentDataContainerremove

clearUiAreaAroundBoard

メソッドprivate
private void clearUiAreaAroundBoard(World w, Board b)

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

引数

throws

なし

主要な呼び出し順

getBlockAtgetTypesetType

startMusicForAll

メソッドprivate
private void startMusicForAll(Session s)

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

引数

throws

なし

主要な呼び出し順

toLowerCasereplacekeySetgetPlayerplaySoundgetLocation

stopMusicAll

メソッドprivate
private void stopMusicAll(Session s)

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

引数

throws

なし

主要な呼び出し順

toLowerCasereplacekeySetgetPlayerstopSound

findSessionByPlayer

メソッドprivate
private Session findSessionByPlayer(UUID uid)

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

引数

throws

なし

主要な呼び出し順

valuescontainsKeygetPlayerisOnlinegetWorldequalsgetLocationdistanceSquared

broadcast

メソッドprivate
private void broadcast(Session s, String msg)

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

引数

throws

なし

主要な呼び出し順

keySetgetPlayersendMessage

playAll

メソッドprivate
private void playAll(Session s, Sound snd, float vol, float pit)

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

引数

throws

なし

主要な呼び出し順

keySetgetPlayerplaySound

launchFirework

メソッドprivate
private void launchFirework(Location l, Color c)

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

引数

throws

なし

主要な呼び出し順

getWorldspawngetFireworkMetaaddEffectbuilderwithwithColorwithFade

findStageY

メソッドprivate
private int findStageY(World w, int cx, int cz)

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

引数

throws

なし

主要な呼び出し順

getMaxHeightmaxgetMinHeightisAirisSolidtoStringcontainsendsWith

代表的な処理フロー

  1. onMenu フロー
    onMenu → getWhoClicked → getCurrentItem → getItemMeta → getPersistentDataContainer → has
    イベント発生時の分岐と後続処理を担当します。
  2. onMove フロー
    onMove → getPlayer → findSessionByPlayer → getUniqueId → lockToPad → getTo
    イベント発生時の分岐と後続処理を担当します。
  3. onSneak フロー
    onSneak → isSneaking → getPlayer → findSessionByPlayer → getUniqueId → currentTimeMillis
    イベント発生時の分岐と後続処理を担当します。
  4. onPlace フロー
    onPlace → findSessionByPlayer → getPlayer → getUniqueId → getBlock → getLocation
    イベント発生時の分岐と後続処理を担当します。
  5. 初期化フロー
    TetrisBlocks → load
    依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
  6. onQuit フロー
    onQuit → getPlayer → getPersistentDataContainer → remove → closeInventory
    イベント発生時の分岐と後続処理を担当します。

外部との接点

Web ルート

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

SQL / テーブル

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

関連クラス

補足