Class ShutdownCountdown
java.lang.Object
server.ShutdownCountdown
伺服器倒數關機的共用協調者,將原本散落在
!shutdowntime 指令內的倒數邏輯
抽成單一可重用入口,讓 GM 指令(PracticerCommand)
與 GUI 管理 API(GuiApiServer)共用同一條程式路徑。
倒數以 Timer.ShutdownTimer 每 1 分鐘觸發一次 tick():
- 第一個 tick 起即開啟
ServerConstants.Disable_Shop(禁止個人商店/精靈商人)。 - 倒數進入最後 3 分鐘時才開啟
ServerConstants.isShutdown(禁止玩家所有行動)—— 此「禁止」狀態 只應出現在關機倒數尾聲,平時與開服皆為關閉。 - 每分鐘對全服廣播剩餘時間公告;倒數歸零時呼叫
ShutdownServer實際關機。
所有公開方法皆 synchronized,確保同一時間只有一條倒數在進行。
可選的 notifier 玩家用來回送 GM 私訊(與舊指令一致);GUI API 觸發時為 null。
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int倒數進入最後幾分鐘時才開啟「禁止玩家所有行動」(isShutdown)。 -
Method Summary
Modifier and TypeMethodDescriptionstatic voidcancel()取消進行中的倒數關機,等同!shutdowntime <n> stop。static int目前倒數剩餘分鐘數(未倒數時為 0)。static boolean是否有倒數關機正在進行。static booleanschedule(int minutes, MapleCharacter who) 排程(或調整)倒數關機,等同遊戲內!shutdowntime <minutes>。
-
Field Details
-
LOCKDOWN_MINUTES
public static final int LOCKDOWN_MINUTES倒數進入最後幾分鐘時才開啟「禁止玩家所有行動」(isShutdown)。- See Also:
-
-
Method Details
-
isRunning
public static boolean isRunning()是否有倒數關機正在進行。 -
getMinutesLeft
public static int getMinutesLeft()目前倒數剩餘分鐘數(未倒數時為 0)。 -
schedule
排程(或調整)倒數關機,等同遊戲內!shutdowntime <minutes>。- Parameters:
minutes- 幾分鐘後關機(<= 0視為立即關機)who- 用來回送 GM 私訊的玩家,可為null(例如 GUI API 觸發)- Returns:
true表示本次新啟動倒數;false表示原本已在倒數、僅調整了剩餘時間
-
cancel
public static void cancel()取消進行中的倒數關機,等同!shutdowntime <n> stop。未在倒數時為無作用。
-