Class ShutdownCountdown

java.lang.Object
server.ShutdownCountdown

public final class ShutdownCountdown extends Object
伺服器倒數關機的共用協調者,將原本散落在 !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

    Fields
    Modifier and Type
    Field
    Description
    static final int
    倒數進入最後幾分鐘時才開啟「禁止玩家所有行動」(isShutdown)。
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    取消進行中的倒數關機,等同 !shutdowntime <n> stop
    static int
    目前倒數剩餘分鐘數(未倒數時為 0)。
    static boolean
    是否有倒數關機正在進行。
    static boolean
    schedule(int minutes, MapleCharacter who)
    排程(或調整)倒數關機,等同遊戲內 !shutdowntime <minutes>

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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

      public static boolean schedule(int minutes, MapleCharacter who)
      排程(或調整)倒數關機,等同遊戲內 !shutdowntime <minutes>
      Parameters:
      minutes - 幾分鐘後關機(<= 0 視為立即關機)
      who - 用來回送 GM 私訊的玩家,可為 null(例如 GUI API 觸發)
      Returns:
      true 表示本次新啟動倒數;false 表示原本已在倒數、僅調整了剩餘時間
    • cancel

      public static void cancel()
      取消進行中的倒數關機,等同 !shutdowntime <n> stop。未在倒數時為無作用。