跳至主要內容

EternalTD 指令

EternalTD 註冊根指令:

/eternaltd
/etd

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

/nightbreaklogin [token]
/nightbreaklogout

兩者都受 nightbreak.login(default: op)控管。不帶權杖的 /nightbreaklogin 會顯示一個 nightbreak.io 連結;你在那裡核准後,伺服器即完成連結。/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 插件更新。更新會在下次重啟後使用,除非 nightbreak.applyPluginUpdatesWithoutRestart 更早套用它
/etd applypluginupdate任何人不重啟即套用已下載的 EternalTD 插件更新。EternalTD 會停用,再以新的 jar 重新啟用,因此進行中的關卡會結束。沒有較新的更新在等待、已有其他插件替換作業正在執行,或有其他作者的插件依賴 EternalTD 時會拒絕執行;若新的 jar 無法啟用,會重新載入先前的 jar
/etd downloadall任何人下載 EternalTD 插件更新以及所有可用內容
/etd downloadallcontent任何人下載所有可用的 EternalTD 內容(不含插件更新)
/etd updatecontent任何人下載過時的 EternalTD 內容的更新
/etd updateallcontent任何人/etd updatecontent 的別名
/etd forcereinstallcontent <package&#124;all>任何人即使已安裝的版本已經是最新的,仍透過正常的已驗證匯入/重新載入流程重新下載內容。all 涵蓋所有被偵測為已下載的套件;指定 Nightbreak slug(可用 Tab 補完)則只針對單一套件,即使該套件的檔案完全遺失也能運作。用它來修復檔案被刪除或損毀的套件。
/etd install任何人若 ResourcePackManager 可用,會向其註冊官方資源包並要求重新載入。否則會下載資源包、計算雜湊並更新 server.properties,此方式需要重新啟動伺服器。註冊失敗時也會改用 server.properties。
/etd reload任何人就地重啟 EternalTD(完整的停用、載入、啟用循環)

管理員注意事項:

  • EternalTD 的 plugin.yml 宣告兩個權限節點,皆為 default: op。eternaltd.* 授予管理、設定與除錯指令的存取權。eternaltd.match.bypass 讓玩家可以傳送進其他玩家進行中的關卡世界而不會被送出去(見對局規則)。
  • 所有面向管理員的指令都歸結到 eternaltd.*:setup、recommendedplugins、downloadall、downloadallcontent、downloadpluginupdate、applypluginupdate、updatecontent/updateallcontent、forcereinstallcontent、install、reload、cheat、setwave、selectfloor、selectfloorcoordinates、showselection、register、register start、register end,以及不帶參數的 /etd。(共享的 MagmaCore 指令將其拆分為「admin」、「setup」和「initialize」三種權限,但 EternalTD 三者都傳入 eternaltd.*,因此實際要求完全相同。)
  • 兩個 Nightbreak 帳號指令使用自己的節點 nightbreak.login(default: op),由 MagmaCore 在執行時註冊,而非透過 EternalTD 的 plugin.yml。
  • initialize由共用引導程式註冊,同樣需要eternaltd.*;預設模式不會決定是否註冊此指令。
  • 只有面向玩家的指令不受限制:hub/lobby、join、start/go 和 quit/stop。
  • 第一個參數的 Tab 補完同樣會依權限過濾,因此沒有 eternaltd.* 的玩家只會看到面向玩家的子指令。

遊戲指令​

指令發送者目前用途
/etd join <level>玩家根據已載入的關卡檔案要求建立工作階段。世界範本會在主執行緒之外複製。請等到收到「Created your world! We're ready to go.」後再開始;較早出現的「Joined level!」不代表成功,準備出錯後也可能出現。準備期間的第二次要求會被拒絕,已在對局中的玩家(包括其他 Nightbreak 插件的對局)也會被拒絕。斷線,或 10 分鐘內世界仍未準備好,都會取消準備。
/etd start玩家開始活躍工作階段的第一波
/etd go玩家/etd start 的別名
/etd quit玩家結束你目前的關卡工作階段
/etd stop玩家/etd quit 的別名
/etd hub玩家返回已設定的 EternalTD 大廳重生點。若有進行中的工作階段,會先結束、還原玩家狀態、移除防禦塔並要求清理實例。若尚未設定大廳,指令會停止,不會結束工作階段。傳送被拒絕時會回報失敗。
/etd lobby玩家/etd hub 的別名

除錯和管理員遊戲指令​

指令發送者目前用途
/etd cheat玩家切換作弊模式。每次執行都會將貨幣設為10,000,000、生命設為1,000,000,關閉模式時也一樣。本局會被永久標記為作弊,不再列入最高分。
/etd setwave <wave>玩家設定儲存的波次計數器,並將本局標記為作弊。不會替換目前的敵人或立即開始指定波次;下一次正常切換會使用計數器加一的波次。

這些是工作階段除錯工具。作弊模式啟用時,建造和升級不會扣除貨幣,但仍會檢查餘額是否足夠。關閉作弊模式不會恢復最高分記錄資格。setwave 接受整數,不會驗證對應波次是否存在。

地圖創作指令​

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

指令發送者目前用途
/etd selectfloor玩家切換地板選取模式。左鍵點擊方塊設定角點1,右鍵設定角點2,與指令的介紹訊息一致。關閉選取模式會捨棄選取範圍。
/etd selectfloorcoordinates <x1> <y1> <z1> <x2> <y2> <z2>玩家在目前世界以整數座標設定角點,每個輸入的Y值都會減1,以選取下方地板。兩個角點的Y必須相同,包含兩端的X/Z長度必須是3的倍數。
/etd showselection <level>玩家檢查並保留目前的地板選取範圍。在選取範圍會註冊的每個地板格上方顯示一個只有你看得到的 END_ROD 粒子。不會儲存任何內容。
/etd register <level>玩家為目前選取範圍中的每個地板格,在關卡檔案中寫入一筆 levelLocations 項目,取代原有清單,然後清除選取。無效的選取範圍,或不含任何地板格的選取範圍,不會寫入任何內容,並保留選取。
/etd register <level> start玩家將玩家目前的整數方塊座標加入 startLocation 並儲存。需要已有啟用中的選取項目;不會將Y減1。
/etd register <level> end玩家將玩家目前的整數方塊座標加入 endLocation 並儲存。需要已有啟用中的選取項目;不會將Y減1。

版本更新日誌​

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.* 和 eternaltd.match.bypass 權限。子指令在執行時透過指令管理器註冊。
  • /etd reload 透過停用、載入和啟用流程重新啟動 EternalTD。資料夾遷移、匯入、內容套件、波次、關卡、世界範本、NPC 和資源包設定都會重新執行。FreeMinecraftModels 並非每次都會重新載入:若匯入器在 FMM 已啟用時將模型或其他檔案安裝到 FMM 的資料夾中,共用的模型安裝事件會呼叫 FMM 的內容重新載入。
  • join、showselection 和 register 指令的關卡名稱補完會讀取目前已載入的登錄表,因此新載入的關卡不必重建指令管理器即可出現。執行指令時也會檢查指定關卡是否存在。