跳至主要內容

EternalTD 指令

EternalTD 註冊根指令:

/eternaltd
/etd

設定期間使用的 Nightbreak 帳號指令則是由 MagmaCore 註冊的獨立頂層指令:

/nightbreaklogin <token>
/nightbreaklogout

兩者都受 nightbreak.logindefault: op)控管。/nightbreaklogout 會清除伺服器上儲存的 Nightbreak 帳號權杖。

MagmaCore 也會為每個插件註冊一個更新日誌指令 /etdchangelog,同樣是獨立的頂層指令(見版本更新日誌)。

設定和內容管理

以下大部分子指令是由 MagmaCore 透過 NightbreakPluginBootstrap.registerStandardCommands 註冊的。它們在所有 Nightbreak 插件之間共享,並因 MagmaCore 被遮蔽(shaded)進插件中而隨 EternalTD 一起提供。

指令發送者目前用途
/etd任何人輸出目前設定/內容快速入門說明。現在確實需要 eternaltd.* — 沒有該權限的發送者會收到「You do not have permission to run this command!」。
/etd initialize玩家開啟首次設定選單。所需權限: eternaltd.*.
/etd setup玩家開啟 EternalTD 設定選單(套件瀏覽器,加上共享的插件更新、推薦插件和自動更新控制項)
/etd recommendedplugins任何人開啟(玩家)或輸出(主控台)EternalTD 的推薦搭配插件
/etd downloadpluginupdate任何人在有可用更新時下載 EternalTD 插件更新(於下次重啟後使用)
/etd downloadall任何人下載 EternalTD 插件更新以及所有可用內容
/etd downloadallcontent任何人下載所有可用的 EternalTD 內容(不含插件更新)
/etd updatecontent任何人下載過時的 EternalTD 內容的更新
/etd updateallcontent任何人/etd updatecontent 的別名
/etd forcereinstallcontent <package&#124;all>任何人即使已安裝的版本已經是最新的,仍透過正常的已驗證匯入/重新載入流程重新下載內容。all 涵蓋所有被偵測為已下載的套件;指定 Nightbreak slug(可用 Tab 補完)則只針對單一套件,即使該套件的檔案完全遺失也能運作。用它來修復檔案被刪除或損毀的套件。
/etd install任何人套用官方 EternalTD 資源包設定
/etd reload任何人就地重啟 EternalTD(完整的停用、載入、啟用循環)

管理員注意事項:

  • EternalTD 的 plugin.yml 只宣告單一權限節點 eternaltd.*default: op),其說明為授予管理、設定與除錯指令的存取權。
  • 所有面向管理員的功能都歸結到這一個節點:setuprecommendedpluginsdownloadalldownloadallcontentdownloadpluginupdateupdatecontent/updateallcontentforcereinstallcontentinstallreloadcheatsetwaveselectfloorselectfloorcoordinatesshowselectionregisterregister startregister end,以及不帶參數的 /etd。(共享的 MagmaCore 指令將其拆分為「admin」、「setup」和「initialize」三種權限,但 EternalTD 三者都傳入 eternaltd.*,因此實際要求完全相同。)
  • 兩個 Nightbreak 帳號指令使用自己的節點 nightbreak.logindefault: op),由 MagmaCore 在執行時註冊,而非透過 EternalTD 的 plugin.yml
  • initialize由共用引導程式註冊,同樣需要eternaltd.*;預設模式不會決定是否註冊此指令。
  • 只有面向玩家的指令不受限制:hub/lobbyjoinstart/goquit/stop
  • 第一個參數的 Tab 補完同樣會依權限過濾,因此沒有 eternaltd.* 的玩家只會看到面向玩家的子指令。

遊戲指令

指令發送者目前用途
/etd join <level>玩家從已載入的關卡檔案開始新的關卡工作階段。範本世界會在主執行緒之外複製,因此指令會先回覆「Preparing world - hang tight!」,等實例上線後再回覆「Created your world! We're ready to go.」。在複製進行中再次執行會以「Your level is already being prepared. Please wait!」被拒絕。
/etd start玩家開始活躍工作階段的第一波
/etd go玩家/etd start 的別名
/etd quit玩家結束你目前的關卡工作階段
/etd stop玩家/etd quit 的別名
/etd hub玩家將你傳送回 EternalTD 大廳重生點。如果在遊戲進行中執行,會先乾淨地結束活躍工作階段(還原物品欄、移除塔、刪除實例世界)。需要在 config.yml 中設定大廳重生點;如果伺服器拒絕該次傳送,指令會回報失敗而不會謊稱成功。
/etd lobby玩家/etd hub 的別名

除錯和管理員遊戲指令

指令發送者目前用途
/etd cheat玩家切換活躍工作階段的作弊模式
/etd setwave <wave>玩家將活躍工作階段跳轉到特定波次

這些不是普通的玩家設定指令。它們是工作階段/除錯工具。

地圖創作指令

這些指令仍然存在於目前的程式碼庫中,用於地板選擇和關卡註冊工作。

指令發送者目前用途
/etd selectfloor玩家透過點擊開始或停止地板角落選擇
/etd selectfloorcoordinates <x1> <y1> <z1> <x2> <y2> <z2>玩家直接從座標設定選擇區域
/etd showselection <level>玩家檢查並保留目前的地板選取範圍。目前實作已停用粒子預覽。
/etd register <level>玩家檢查範圍後清除選取。不會顯示粒子,也不會儲存levelLocations;請手動將地板範圍寫入關卡YAML。
/etd register <level> start玩家將玩家目前站立的方塊新增到關卡的 startLocation 列表
/etd register <level> end玩家將玩家目前站立的方塊新增到關卡的 endLocation 列表

版本更新日誌

MagmaCore 會為每個 Nightbreak 插件註冊一個額外的頂層指令,名稱為根指令加上 changelog

/etdchangelog
/etdchangelog dismiss
/etdchangelog disable
形式效果
/etdchangelog開啟你尚未閱讀的 EternalTD 版本(以及受追蹤的內容套件)的版本說明
/etdchangelog dismiss將目前顯示的版本標記為已讀,並跳到下一批未讀內容(如果有的話)
/etdchangelog disable為該玩家永久停止更新日誌通知

值得知道的行為:

  • 此指令僅限玩家且僅限管理員。這裡的「管理員」是指 op、eternaltd.*,或規格中任何一項 admin/setup/initialize 權限 — 而 EternalTD 將這三項全都設為 eternaltd.*
  • 管理員加入伺服器後約 2 秒會收到帶有可點擊 view 按鈕的聊天通知,但僅限於有未讀內容且他們未執行過 disable 時。
  • 已讀/已略過狀態、追蹤起始的版本,以及快取的版本說明文字都存放在 plugins/EternalTD/nightbreak-changelogs.yml
  • 如果另一個插件已佔用 etdchangelog 這個標籤,MagmaCore 會改為註冊帶命名空間的備用指令(eternaltd:etdchangelog)。

注意事項

  • EternalTD 的 plugin.yml 只宣告根指令和 eternaltd.* 權限。子指令在執行時透過指令管理器註冊。
  • /etd reload 是真正的插件重啟:它會呼叫插件的停用、載入和啟用路徑,而不是輕量的內容重新匯入。啟動時執行的所有動作(資料夾遷移、匯入器、內容套件、波次、關卡、世界範本、NPC、資源包輔助程式)都會再跑一次。它不會呼叫 FreeMinecraftModels 的重新載入路徑 — 該方法存在於原始碼中,但沒有任何地方呼叫它。
  • joinshowselectionregister 指令的關卡名稱參數是在你按 Tab 補完時解析的,而不是在插件啟動時,因此透過下載或重新載入新增的關卡不需重啟即可出現。