ロビーと参加者管理
参加・離脱・席割り・ロビー進行を持つ骨格部分です。開始人数条件や途中退出時の扱いはここで決まります。
Tetris Blocks を担当するclassです。
com.example.rankingplugin.minigame.gamesminigame/games/TetrisBlocks.javaclassクラス直前の Javadoc は見つかりませんでした。ソースとメソッド構成から責務を補完しています。
TetrisBlocks はロビー・席配置・パッド入力・盤面レンダリング・落下ロジック・音楽・スコア保存までをまとめる対戦テトリスの本体です。進行が段階的なので章立てが有効です。
joinloadOrCreatestartLobbydecideModeAndStartprepThenStartstartGameonMoveonSneakonPlacefinishGame参加・離脱・席割り・ロビー進行を持つ骨格部分です。開始人数条件や途中退出時の扱いはここで決まります。
プレイヤーをパッドへ固定し、移動・回転・設置を盤面へ反映します。ゲーム体験そのものの中心です。
ActionBar や音楽、終了演出など、プレイフィールに関わる層です。
ゲーム終了後にスコアを保存し、UI と足場を片付けます。途中退出と終了時の両方を意識すると理解しやすいです。
セッションを用意してロビーを開き、人数に応じて開始条件を満たしたら本番へ移ります。人数依存の不具合は decideModeAndStart を見るのが近道です。
移動量をそのまま使うのではなく、パッド固定としきい値判定を通して誤操作を減らしています。操作感調整はしきい値群を触ります。
finishGamesaveScorelaunchFireworkcleanupstopMusicAll演出だけで終わらず、ハイスコア保存やテレポート解除まで同時に行うのがポイントです。音だけ残るときは stopMusicAll 側も必ず見ます。
| Signature | 説明 | 主要呼び出し |
|---|---|---|
public TetrisBlocks(JavaPlugin plugin, MinigameDao dao) | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 | load |
| Name | Visibility | Kind | 説明 |
|---|---|---|---|
| TetrisBlocks | public | コンストラクタ | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 |
| id | public | メソッド | id の主要処理を担当します。 |
| id | public | メソッド | id の主要処理を担当します。 |
| id | public | メソッド | id の主要処理を担当します。 |
| arenaIds | public | メソッド | arenaIds の主要処理を担当します。 |
| arenaIds | public | メソッド | arenaIds の主要処理を担当します。 |
| handleArenaSetupCmd | public | メソッド | 入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。 |
| resolveEntranceWarp | private | メソッド | アリーナ内の入場看板(4方向)を探し、テレポート先を返す。 |
| join | public | メソッド | join の主要処理を担当します。 |
| leave | public | メソッド | leave の主要処理を担当します。 |
| top | public | メソッド | top の主要処理を担当します。 |
| startLobby | private | メソッド | 初期化と各種登録を行い、機能を有効化します。 |
| decideModeAndStart | private | メソッド | decideModeAndStart の主要処理を担当します。 |
| openModeMenu | private | メソッド | openModeMenu の主要処理を担当します。 |
| menuItem | private | メソッド | menuItem の主要処理を担当します。 |
| onMenu | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| prepThenStart | private | メソッド | prepThenStart の主要処理を担当します。 |
| startGame | private | メソッド | 初期化と各種登録を行い、機能を有効化します。 |
| activeBoardsOf | private | メソッド | activeBoardsOf の主要処理を担当します。 |
| finishGame | private | メソッド | finishGame の主要処理を担当します。 |
| saveScore | private | メソッド | 状態を永続化または更新し、最新状態へ反映します。 |
| rightIsPlusX | private | メソッド | rightIsPlusX の主要処理を担当します。 |
| normalizeYaw | private | メソッド | normalizeYaw の主要処理を担当します。 |
| updateActionBars | private | メソッド | 状態を永続化または更新し、最新状態へ反映します。 |
| formatTime | private | メソッド | formatTime の主要処理を担当します。 |
| sendAB | private | メソッド | sendAB の主要処理を担当します。 |
| onMove | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onSneak | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| lockToPad | private | メソッド | lockToPad の主要処理を担当します。 |
| onPlace | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onQuit | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onQuit | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| entrancePlatformWarp | private | メソッド | entrancePlatformWarp の主要処理を担当します。 |
| safeTeleport | private | メソッド | safeTeleport の主要処理を担当します。 |
| loadOrCreate | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| buildBoard | private | メソッド | 表示用または出力用のデータを組み立てます。 |
| makePad | private | メソッド | makePad の主要処理を担当します。 |
| makePad | private | メソッド | makePad の主要処理を担当します。 |
| pickSeat | private | メソッド | pickSeat の主要処理を担当します。 |
| teleportToPad | private | メソッド | teleportToPad の主要処理を担当します。 |
| cleanup | private | メソッド | cleanup の主要処理を担当します。 |
| clearUiAreaAroundBoard | private | メソッド | clearUiAreaAroundBoard の主要処理を担当します。 |
| startMusicForAll | private | メソッド | 初期化と各種登録を行い、機能を有効化します。 |
| stopMusicAll | private | メソッド | 動作中の処理やリソースを安全に停止・解放します。 |
| findSessionByPlayer | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| broadcast | private | メソッド | broadcast の主要処理を担当します。 |
| playAll | private | メソッド | playAll の主要処理を担当します。 |
| launchFirework | private | メソッド | launchFirework の主要処理を担当します。 |
| findStageY | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
public TetrisBlocks(JavaPlugin plugin, MinigameDao dao)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
JavaPlugin pluginMinigameDao daoなし
public String id()id の主要処理を担当します。
なし
public String id() { return "arena_tetris"; } public String displayName()id の主要処理を担当します。
) { return "arena_tetris"; } public String displayName(なし
public String id() { return "arena_tetris"; } public String displayName() { return "テトリス"; } public void onRegistered(Plugin pl)id の主要処理を担当します。
) { return "arena_tetris"; } public String displayName() { return "テトリス"; } public void onRegistered(Plugin plなし
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 boolean handleArenaSetupCmd(Plugin plugin, CommandSender sender, String arenaId, String subCmd)入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。
Plugin pluginCommandSender senderString arenaIdString subCmdなし
private Location resolveEntranceWarp(Session s)アリーナ内の入場看板(4方向)を探し、テレポート先を返す。
Session sなし
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 void startLobby(Session s)初期化と各種登録を行い、機能を有効化します。
Session sなし
private void decideModeAndStart(Session s)decideModeAndStart の主要処理を担当します。
Session sなし
private void openModeMenu(Player p)openModeMenu の主要処理を担当します。
Player pなし
private ItemStack menuItem(Material m, String name, String val)menuItem の主要処理を担当します。
Material mString nameString valなし
public void onMenu(InventoryClickEvent e)イベント発生時の分岐と後続処理を担当します。
InventoryClickEvent eなし
private void prepThenStart(Session s)prepThenStart の主要処理を担当します。
Session sなし
private void startGame(Session s)初期化と各種登録を行い、機能を有効化します。
Session sなし
private List<Board> activeBoardsOf(Session s)activeBoardsOf の主要処理を担当します。
Session sなし
private void finishGame(Session s, String reason)finishGame の主要処理を担当します。
Session sString reasonなし
private void saveScore(Player p, Session s, int score)状態を永続化または更新し、最新状態へ反映します。
Player pSession sint scoreなし
private boolean rightIsPlusX(Board b, Seat seat)rightIsPlusX の主要処理を担当します。
Board bSeat seatなし
private float normalizeYaw(float yaw)normalizeYaw の主要処理を担当します。
float yawなし
private void updateActionBars(Session s)状態を永続化または更新し、最新状態へ反映します。
Session sなし
private String formatTime(int sec)formatTime の主要処理を担当します。
int secなし
private void sendAB(Player p, String msg)sendAB の主要処理を担当します。
Player pString msgなし
public void onMove(PlayerMoveEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerMoveEvent eなし
public void onSneak(PlayerToggleSneakEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerToggleSneakEvent eなし
private void lockToPad(PlayerMoveEvent e, Seat seat)lockToPad の主要処理を担当します。
PlayerMoveEvent eSeat seatなし
public void onPlace(BlockPlaceEvent e)イベント発生時の分岐と後続処理を担当します。
BlockPlaceEvent eなし
public void onQuit(PlayerQuitEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerQuitEvent eなし
public void onQuit(PlayerQuitEvent e){ leave(e.getPlayer()); } private void clearMinigameFlags(UUID uid)イベント発生時の分岐と後続処理を担当します。
PlayerQuitEvent e){ leave(e.getPlayer()); } private void clearMinigameFlags(UUID uidなし
private Location entrancePlatformWarp(Session s)entrancePlatformWarp の主要処理を担当します。
Session sなし
private void safeTeleport(Player pl, Location to)safeTeleport の主要処理を担当します。
Player plLocation toなし
private Session loadOrCreate(String arena, Player ctx)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
String arenaPlayer ctxなし
private Board buildBoard(World w, Plane plane, int minA, int minY, int constB)表示用または出力用のデータを組み立てます。
World wPlane planeint minAint minYint constBなし
private void makePad(Session s, World w, Board b, boolean build)makePad の主要処理を担当します。
Session sWorld wBoard bboolean buildなし
private void makePad(World w, Board b, boolean build)makePad の主要処理を担当します。
World wBoard bboolean buildなし
private Seat pickSeat(Session s, Player p)pickSeat の主要処理を担当します。
Session sPlayer pなし
private void teleportToPad(Player p, Seat seat)teleportToPad の主要処理を担当します。
Player pSeat seatなし
private void cleanup(Session s)cleanup の主要処理を担当します。
Session sなし
private void clearUiAreaAroundBoard(World w, Board b)clearUiAreaAroundBoard の主要処理を担当します。
World wBoard bなし
private void startMusicForAll(Session s)初期化と各種登録を行い、機能を有効化します。
Session sなし
private void stopMusicAll(Session s)動作中の処理やリソースを安全に停止・解放します。
Session sなし
private Session findSessionByPlayer(UUID uid)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
UUID uidなし
private void broadcast(Session s, String msg)broadcast の主要処理を担当します。
Session sString msgなし
private void playAll(Session s, Sound snd, float vol, float pit)playAll の主要処理を担当します。
Session sSound sndfloat volfloat pitなし
private void launchFirework(Location l, Color c)launchFirework の主要処理を担当します。
Location lColor cなし
private int findStageY(World w, int cx, int cz)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
World wint cxint czなし
onMenu → getWhoClicked → getCurrentItem → getItemMeta → getPersistentDataContainer → hasonMove → getPlayer → findSessionByPlayer → getUniqueId → lockToPad → getToonSneak → isSneaking → getPlayer → findSessionByPlayer → getUniqueId → currentTimeMillisonPlace → findSessionByPlayer → getPlayer → getUniqueId → getBlock → getLocationTetrisBlocks → loadonQuit → getPlayer → getPersistentDataContainer → remove → closeInventory