CannonRTP 訊息與標題
所有面向玩家的字串位於 plugins/CannonRTP/messages.yml,並可完全覆寫。每個值皆支援 MagmaCore 漸層(<gradient:#start:#end>...</gradient>)、MiniMessage 標籤,以及舊式 & 顏色代碼。任何訊息中的 $prefix 預留位置會以已設定的 prefix 值取代。
Release 1 僅提供英文;config.yml 中的 language 鍵存在是為了讓未來的翻譯包可以鎖定它。
前綴與說明標頭
| 鍵 | 預留位置 | 預設 | 說明 |
|---|---|---|---|
prefix | -- | <gradient:#ff9a3d:#ffd166>CannonRTP</gradient> &8| | 透過 $prefix 注入每則訊息的前綴 |
helpHeader | $prefix | $prefix &fCannonRTP commands: | 列印於 /cannonrtp、/wc help 與 /wc list / /wc status 頂端的問候列 |
聊天訊息
| 鍵 | 預留位置 | 說明 |
|---|---|---|
createdCannon | $prefix、$cannon、$id、$path | /wc create 成功後發送 |
placedCannon | $prefix、$cannon | /wc place 成功後發送 |
removedCannon | $prefix、$cannon | /wc remove 成功後發送 |
deletedCannon | $prefix、$cannon | /wc delete 成功後發送 |
targetWorldUpdated | $prefix、$cannon、$world | /wc target 成功後發送 |
searchCenterUpdated | $prefix、$cannon | /wc center 成功後發送 |
reload | $prefix、$count | /wc reload 完成後發送 |
noPermission | $prefix、$cannon | 當玩家走入其缺少 requiredPermission 的大砲時發送(每位玩家每座大砲節流為每 3 秒一次) |
launchCooldown | $prefix、$cannon、$seconds、$unit | 當玩家在其「已接受發射」冷卻結束前踏入任何大砲時發送。$seconds 會向上取整;$unit 為 second 或 seconds。通知會以每位玩家每座大砲每 3 秒一次的頻率節流。 |
cannonDisabled | $prefix、$cannon | 保留。已停用的大砲會被完全排除在 tick 迴圈之外,因此目前的版本永遠不會發送這則訊息——該鍵會被寫入 messages.yml,但沒有任何程式碼會讀取它。 |
queueCalibration | $prefix、$cannon、$queued、$target、$attempts | 當大砲仍在預載且玩家走入時發送。在此訊息中 $target 為 chargedLocationsPerCannon;$attempts 為大砲耗盡前剩餘的搜尋嘗試預算 |
noValidLocationYet | $prefix、$cannon | 當尚無任何安全位置被加入佇列時發送 |
noValidLocationFound | $prefix、$cannon、$reason | 當 CannonRTP 用盡 searchTimeoutAttempts 後放棄時發送。$reason 為最常見拒絕原因的逗號分隔摘要 |
invalidConfiguration | $prefix、$cannon、$reason | 當偵測到設定錯誤時發送(例如目標世界未載入) |
statusLine | $prefix、$cannon、$status、$queued、$target、$reason | 用於 /wc list 與 /wc status 每一列的行格式。在此訊息中 $target 為 preloadedLocationsPerCannon(完整儲備目標,而非充能門檻) |
probeAllowed | $prefix | 當位置有效時由 /wc probe 發送 |
probeBlocked | $prefix、$plugin、$reason | 當位置被阻擋時由 /wc probe 發送 |
unknownCommand | $prefix | 保留。無法辨識的子指令是由共用的 MagmaCore 指令管理器處理的,因此目前的版本永遠不會發送這則訊息——該鍵會被寫入 messages.yml,但沒有任何程式碼會讀取它。 |
invalidConfiguration 同時兼作通用的管理員錯誤訊息行:當沒有放置任何大砲時,/wc list / /wc status 也會發送它;而當 id 或世界無法解析時,/wc create、/wc place、/wc remove、/wc delete、/wc target 和 /wc center 同樣會發送它。
狀態標籤
浮動大砲標籤、/wc list 以及 $status 預留位置所使用的狀態字詞皆可設定。
| 鍵 | 預設 | 顯示時機 |
|---|---|---|
statusLabels.ready | Ready | 大砲已有足夠的預載位置可以發射玩家 |
statusLabels.charging | Charging | 大砲仍在尋找它的第一個安全目的地 |
statusLabels.maintaining | Maintaining | 大砲正在補充其目的地儲備 |
statusLabels.exhausted | Exhausted | 大砲找不到安全的目的地 |
statusLabels.disabled | Disabled | 大砲在其設定中被停用 |
statusLabels.invalid | Invalid | 保留。目前的版本會透過三個內部搜尋狀態(READY、SEARCHING、EXHAUSTED)加上停用檢查來解析每個狀態,因此不會有任何情況渲染這個標籤。targetWorld 未載入的大砲會保留其搜尋狀態標籤,並改為透過 $reason 回報問題。 |
這些是原始字串,因此漸層與顏色代碼在此同樣有效。你設定的任何值都會成為 statusLine 中的 $status 值。
標題池
發射序列中的數個標題欄位被設定為清單,而非單一字串。每次發射時,CannonRTP 會從清單中隨機挑選一個條目。這使得重複的發射不會感覺一模一樣。
| 鍵 | 預留位置 | 階段 | 說明 |
|---|---|---|---|
titles.launchQueuedTitles | $cannon | SEARCHING 開始 | 發射開始時顯示的標題字串池 |
titles.launchQueuedSubtitles | $cannon | SEARCHING 開始 | 與發射開始標題搭配的副標題池 |
titles.destinationPreviewTitles | -- | SEARCHING | 在隨機座標閃過時顯示的標題池。階段開始時會挑選一個條目,並在整個階段中維持不變。 |
titles.destinationPreviewSubtitle | $x、$y、$z | SEARCHING(每 tick) | 顯示閃爍隨機座標的單一副標題字串 |
titles.destinationConfirmedTitles | $x、$y、$z、$world | FIRING 開始 | 真實目的地鎖定瞬間顯示的標題池 |
titles.destinationConfirmedSubtitle | $x、$y、$z、$world | FIRING 開始 | 顯示真實目的地的單一副標題 |
titles.arrivalTitles | $x、$y、$z、$world | TELEPORTING | 空投傳送後立即顯示的標題池 |
titles.arrivalSubtitles | $x、$y、$z、$world | TELEPORTING | 與抵達標題並列顯示的副標題池 |
預留位置會從同一組值代入標題與其副標題,因此為某一半列出的任何預留位置在另一半中同樣可用。$prefix 在任何地方都能解析,儘管在標題中很少會需要它。
單一與池的差別
destinationPreviewSubtitle與destinationConfirmedSubtitle為單一字串,因為它們包含必須始終被渲染的動態座標。其他標題與副標題欄位皆為池,每次發射時會從各自的池中隨機挑選一個條目。
預設標題池
messages.yml 中附帶的預設值:
launchQueuedTitles —— Launching、Ignition、Liftoff(橙金漸層)
launchQueuedSubtitles —— $cannon(暖金色)
destinationPreviewTitles —— Calibrating、Scanning、Targeting(橙金色)
destinationConfirmedTitles —— Locked、Set、Engaged(綠色)
arrivalTitles —— Arrived、Touchdown、Airborne(冷白色)
arrivalSubtitles —— Good luck.、Stick the landing.、Eyes up. Ground soon.、Wind check complete. Good luck.、Drop zone acquired. Good luck.
預留位置參考
| 預留位置 | 解析為 |
|---|---|
$prefix | messages.yml -> prefix 的值 |
$cannon | 大砲的 displayName |
$id | 大砲的設定 id(淨化過的小寫) |
$path | 新建大砲設定檔的絕對路徑(僅在 createdCannon 中) |
$world | 目標世界名稱 |
$count | 重新載入後已載入的大砲數量 |
$queued | 大砲目前的佇列大小 |
$target | 視情境而定:於 queueCalibration 中為 chargedLocationsPerCannon,於 statusLine 中為 preloadedLocationsPerCannon。兩個鍵皆位於 landing.yml。 |
$attempts | 大砲耗盡前剩餘的搜尋嘗試次數 |
$seconds | 向上取整的剩餘發射冷卻時間 |
$unit | second 或 seconds,與 $seconds 相符 |
$status | 對應的 statusLabels.* 值——預設為 Ready、Charging、Maintaining、Exhausted 或 Disabled |
$reason | 狀態或失敗的人類可讀細節 |
$plugin | 阻擋位置的保護外掛程式名稱 |
$x、$y、$z | 座標(一位小數) |
本地化備註
上述列出的每個鍵在顯示給玩家之前都會經過 MagmaCore 的顏色/漸層處理器。鎖定 config.yml 中 language 的翻譯包將透過相同的 translatable() 掛接接入(目前在 Release 1 中為直通)。