CannonRTP 指令與權限
CannonRTP 將其指令註冊於 cannonrtp 命名空間之下。
- 根指令:
/cannonrtp - 別名:
/crtp、/wc
/wc 是大多數管理員會使用的簡短別名,但所有子指令的底層權限節點皆為 cannonrtp.admin。
管理員指令
create、place、remove、target 和 center 會先儲存設定,再套用變更。如果儲存失敗,指令會回報錯誤,不會重新載入或套用該變更。請先解決回報的檔案問題,再重試。
變更成功後,這些指令以及 delete 會重建每一座大砲,而不只是你編輯的那一座。進行中的發射會被取消,這些玩家會被送回大砲座位;每座大砲會捨棄其佇列中的目的地並重新開始搜尋,所有發射冷卻時間也會重設。
| 指令 | 發送者 | 說明 |
|---|---|---|
/cannonrtp | 任意 | 顯示說明標頭,後接發送者可使用的每個已註冊子指令 |
/wc help | 任意 | 與 /cannonrtp 相同 —— 列印說明清單 |
/wc create <id> | 玩家 | 建立全新的大砲設定,並在你目前所在位置放置第一個實例。若 id 已存在則拒絕執行;請使用 /wc place 為其新增放置點。 |
/wc create <id> <display_name> | 玩家 | 同上,但設定自訂顯示名稱(底線會轉為空格) |
/wc place <id> | 玩家 | 在你目前所在位置新增現有大砲的另一個放置點 |
/wc remove <id> | 玩家 | 移除你目前世界中最接近的 <id> 放置點(保留設定檔) |
/wc delete <id> | 任意 | 直接刪除大砲的設定檔 |
/wc target <id> <world> | 玩家 | 變更大砲的目標降落世界 |
/wc center <id> | 玩家 | 將大砲的搜尋中心設為你目前所在位置 |
/wc list | 任意 | 列出每個放置點的顯示名稱、狀態、佇列大小與最新狀態詳情 |
/wc status | 任意 | 輸出與 /wc list 相同 |
/wc probe | 玩家 | 測試你目前所在位置是否能通過所有啟用的保護檢查 |
/wc reload | 任意 | 完整重新載入 CannonRTP:每個設定檔、大砲與保護介接器,以及 imports/ 資料夾中等待處理的任何內容 |
/wc setup | 玩家 | 開啟 Nightbreak 風格的內容瀏覽器選單(列出已安裝與可下載的大砲內容包) |
/wc recommendedplugins | 任意 | 開啟 Nightbreak 的 CannonRTP 推薦搭配插件目錄 |
/wc downloadpluginupdate | 任意 | 從 Nightbreak 下載較新的 CannonRTP 插件 jar。它會在下次伺服器重啟後使用;若 config.yml 中的 nightbreak.applyPluginUpdatesWithoutRestart 為 when-empty 或 immediately,則會更早使用 |
/wc applypluginupdate | 任意 | 透過從新的 jar 重新載入插件,在不重啟的情況下套用已下載的 CannonRTP 更新。沒有有效且較新的更新在等待、有其他作者的插件依賴(depend)或軟依賴(soft-depend)CannonRTP,或另一個插件替換作業正在執行時,會拒絕執行。若新的 jar 無法啟用,會重新載入先前的 jar,更新則保留在更新資料夾中,待下次重啟時套用。請參閱不重啟即套用更新。 |
/wc downloadall | 任意 | 下載 CannonRTP 插件更新以及Nightbreak 上所有可用的內容包 |
/wc downloadallcontent | 任意 | 從 Nightbreak 下載所有可用的 CannonRTP 內容包(僅內容,不含插件 jar) |
/wc updatecontent | 任意 | 下載已過時的 CannonRTP 內容包更新(別名:/wc updateallcontent) |
/wc forcereinstallcontent <package|all> | 任意 | 即使本機副本已是最新,仍從 Nightbreak 重新下載內容 —— 可用來修復損毀或被手動編輯過的內容包檔案。傳入 all 可涵蓋所有已下載的內容包,或以 tab 補完選擇單一 Nightbreak 內容包代號(free-cannon-model、cannonrtp-premium-cannon-model)。 |
/wc initialize 為擁有 cannonrtp.admin 的玩家開啟首次設定選單。/wc setup 開啟內容瀏覽器。共用初始化流程會註冊這兩個指令;預設模式不決定 initialize 是否存在。
在設定標記為完成(config.yml 中的 setupDone)之前,擁有 cannonrtp.admin 的玩家會在加入約 10 秒後收到聊天提醒,其中附有可點擊的 /wc initialize 與 /wc setup 連結。首次設定選單中的每個選項(Recommended Setup、Manual Setup、Use Current Content)都會將 setupDone 設為 true 並停止提醒。
以上所有管理員子指令皆需要 cannonrtp.admin。
這些 Nightbreak 指令隨 CannonRTP 一同提供
/wc setup、/wc initialize、/wc recommendedplugins、/wc downloadpluginupdate、/wc applypluginupdate、/wc downloadall、/wc downloadallcontent、/wc updatecontent與/wc forcereinstallcontent是由內嵌(shaded)至 CannonRTP 的共用 MagmaCore 函式庫所提供。它們會自動註冊 —— 你不會在plugin.yml中看到它們。獨立的/nightbreaklogin指令(同樣來自 MagmaCore)會將伺服器連結到你的 Nightbreak 帳號以下載高級內容,而/nightbreaklogout則會解除連結(請參閱中斷伺服器連結)。MagmaCore 也會註冊
/wcchangelog,向管理員顯示未讀的 CannonRTP 與大砲內容包發行說明。請參閱更新日誌通知。
關於 /wc setup、/wc downloadall 與 /wc updatecontent 實際管理的內容,請參閱內容包頁面。
create與place、remove、delete的區別一份大砲設定(
plugins/CannonRTP/cannons/<id>.yml)可驅動多個世界中的放置點。create建立設定並產生第一個放置點。place為現有設定新增另一個放置點。remove刪除一個放置點(你所在世界中距你最近的),但保留設定檔。delete則直接刪除設定檔,移除所有放置點。三個內建檔案(example_cannonrtp、cannonrtp_free_cannon、cannonrtp_premium_cannon)會在隨後的重新載入時以預設值、不含任何放置點的狀態重新出現。
玩家互動
沒有玩家指令可啟用大砲。玩家是透過走入大砲的觸發半徑(triggerRadius,預設 1.75 格)來使用 CannonRTP。
權限
plugin.yml 中註冊了兩個權限節點:
| 權限 | 預設 | 說明 |
|---|---|---|
cannonrtp.admin | op | 所有管理員子指令所需(包含隨附的 Nightbreak setup / downloadall / updatecontent 指令) |
cannonrtp.use | true | 玩家觸發任何大砲前所需 |
共用的 /nightbreaklogin 與 /nightbreaklogout 指令(由 MagmaCore 提供,並未宣告於 CannonRTP 的 plugin.yml 中)使用其自身的 nightbreak.login 權限節點,預設為 op。
cannonrtp.use 的運作方式
若玩家缺少 cannonrtp.use,大砲會默默忽略該玩家。此基礎權限檢查不會發送任何拒絕訊息 —— 他們只是穿過大砲區域而不會被發射。
個別大砲的額外權限
每份大砲設定也可以定義 requiredPermission 欄位。
- 若
requiredPermission為空(預設),大砲只檢查cannonrtp.use。 - 若
requiredPermission已設定,且玩家有cannonrtp.use但缺少此個別大砲的節點,CannonRTP 會發送包含大砲顯示名稱的noPermission訊息。該訊息對於每位玩家每座大砲節流為每 3 秒一次。
Tab 自動完成
作用於現有大砲的指令(place、remove、delete、target、center)會從已知大砲設定 id 清單中對 <id> 進行 tab 補完,並且只接受已存在的 id。/wc create 是例外:它的 <id> 與 <display_name> 是自由文字,因此 tab 補完只會顯示 <id> / <display_name> 提示。接受 <world> 參數的指令會從目前已載入的世界名稱清單中進行 tab 補完,而 /wc forcereinstallcontent 會補完 all 以及每個 Nightbreak 內容包代號。