跳至主要内容

CannonRTP 設定

CannonRTP 將其全域設定分散於 plugins/CannonRTP/ 中的多個檔案,另外每座大砲在 plugins/CannonRTP/cannons/ 中各有一份設定檔。

檔案配置

檔案用途
plugins/CannonRTP/config.yml頂層執行階段旗標(設定狀態、語言、粒子間隔、大砲模型優先順序、Spigot 資源 id)
plugins/CannonRTP/landing.yml降落搜尋調整(佇列大小、逾時嘗試次數、緩降時長、不安全材質清單、失敗開放行為)
plugins/CannonRTP/sounds.yml發射序列期間播放的音效
plugins/CannonRTP/messages.yml所有面向玩家的訊息、前綴與標題池
plugins/CannonRTP/protection.yml各保護插件整合的切換開關
plugins/CannonRTP/cannons/<id>.yml每座大砲一份(每份可驅動多個放置點)
plugins/CannonRTP/cannons_disabled/暫存資料夾,用於存放隨內容包附帶但目前停用的大砲設定。當你於 /wc setup 選單中啟用或停用內容包時,會在 cannons/cannons_disabled/ 之間搬移檔案。
plugins/CannonRTP/content_packages/<package>.yml為每個 Nightbreak 內容包產生的中繼資料(版本、下載連結、用於尋找其檔案的前綴)。通常不應手動編輯。

插件預設附帶三份範例大砲設定:

  • example_cannonrtp.yml —— 空白參考範本,預設停用。手動撰寫大砲檔案時可作為 YAML 參考使用。
  • cannonrtp_free_cannon.yml —— 已啟用、無放置點,指向免費的 cannonrtp FMM 模型。
  • cannonrtp_premium_cannon.yml —— 已啟用、無放置點,指向高級的 cannonrtp_premium FMM 模型。

預設情況下這些檔案的 cannonLocations 皆未填入,因此在管理員執行 /wc create/wc place 之前,世界中不會生成任何東西。

config.yml

預設行為
setupDonefalse追蹤 Nightbreak 首次設定是否已完成
languageenglish要載入的翻譯檔案。Release 1 僅提供英文;此鍵為未來翻譯包預留
runtime.particleIntervalTicks15大砲閒置粒子渲染的頻率(最低 5)
runtime.cannonModelPriority[cannonrtp_premium, cannonrtp]FreeMinecraftModels 模型名稱的優先順序清單,由上至下檢查。伺服器上找到的第一個模型會用於未自行設定 customModel 的所有大砲。若皆未找到,則使用軌道粒子回退方案。
runtime.spigotResourceId""版本檢查器使用的 Spigot 資源 id。留空以停用。

landing.yml

預設行為
preloadedLocationsPerCannon10插件嘗試為每座大砲維持的安全目的地總數(最低 1)
chargedLocationsPerCannon1大砲必須保有多少位置,其狀態標籤才會切換為 Ready(最低 1,上限為 preloadedLocationsPerCannon)。只要佇列中至少有一個位置,大砲即會發射玩家 —— 此門檻只影響視覺標籤。
searchTimeoutAttempts100多少次失敗的搜尋嘗試後大砲會被標記為 Exhausted(最低 10)。搜尋嘗試在全域上每 tick 限速一次(每秒 20 次),公平地在所有啟用中的大砲之間分配。
slowFallingSeconds60空投後緩降效果的最大持續時間(最低 1)。玩家觸地時效果會提早被移除。
failOpenOnProtectionErrorsfalse若保護插件 API 發生錯誤,預設會阻止降落。設為 true 則在無法安全查詢保護插件時允許降落繼續。
unsafeGroundMaterials[LAVA, MAGMA_BLOCK, CAMPFIRE, SOUL_CAMPFIRE, CACTUS, POWDER_SNOW]會使降落表面失格的材質
unsafeBodyMaterials[LAVA, WATER, FIRE, SOUL_FIRE, SWEET_BERRY_BUSH, POWDER_SNOW, COBWEB]會使降落點的腳部或頭部空間失格的材質

材質為 Bukkit Material 列舉名稱。無效條目會以警告形式記錄並略過。

sounds.yml

預設行為
levitationStart.soundBLOCK_BEACON_ACTIVATE搜尋階段開始時播放的音效
levitationStart.volume1.0
levitationStart.pitch1.15
blastOff.soundENTITY_GENERIC_EXPLODE發射階段開始時播放的音效
blastOff.volume1.0
blastOff.pitch0.9

音效值可為 Bukkit Sound 列舉名稱(如 BLOCK_BEACON_ACTIVATE)或命名空間鍵(如 minecraft:block.beacon.activate)。無效音效名稱會以警告形式記錄,該步驟的音效會被默默略過。

messages.yml

所有訊息皆支援 MagmaCore 漸層、MiniMessage 標籤,以及舊式 & 顏色代碼。$prefix 預留位置會以已設定的前綴取代。

完整的訊息鍵、預留位置以及發射序列所使用的標題池清單,請參閱訊息與標題頁面。

每座大砲的設定欄位

每個大砲檔案(plugins/CannonRTP/cannons/<id>.yml)儲存以下欄位:

欄位預設備註
isEnabledtrue(用於新建大砲)已停用的大砲不會觸發,並顯示為 Disabled
displayNameCannonRTP(或建立時傳入的名稱)用於訊息、狀態輸出與浮動標籤
cannonLocations空清單序列化的 world,x,y,z,pitch,yaw 字串清單。一份大砲設定可生成多個世界中的放置點。由 /wc create/wc place/wc remove 管理。
targetWorld建立時所在的當前世界支援跨世界目標 —— 將此設為與大砲不同的世界,可使玩家降落在那個世界中。執行時必須已載入,否則大砲會顯示為 Invalid
searchCenternull若未設定,插件會從大砲自身位置(當大砲位於目標世界時)或從目標世界的出生點向外擴散
triggerRadius1.75用於偵測附近玩家的大砲周圍半徑(最低 0.5 格)
minSearchRadius500從搜尋中心起的最小降落搜尋距離(最低 0)
maxSearchRadius5000最大降落搜尋距離(永遠被限制為至少 minSearchRadius + 1
launchWarmupTicks42Searching 階段的長度,以 tick 計(最低 1)
verticalBoostTicks45Firing 階段的長度,以 tick 計(最低 0)
verticalBoostVelocity1.35發射階段每 tick 套用的向上速度(最低 0)
enableParticlestrue控制閒置時的軌道粒子動畫。僅在沒有自訂模型啟用且玩家於 36 格內時渲染。
requiredPermission""此特定大砲可選的額外權限關卡。擁有 cannonrtp.use 但缺少此節點的玩家會看到已設定的無權限訊息。
customModel""此特定大砲可選的 FreeMinecraftModels 模型名稱。若留空,插件會回退至 runtime.cannonModelPriority

大砲建立預設值

當你執行 /wc create <id> 時:

  • 大砲 id 會被轉為小寫,a-z0-9_- 以外的字元會被替換為 _
  • displayName 預設為 CannonRTP,除非使用了 /wc create <id> <display_name><display_name> 中的底線會被轉換為空格)
  • 玩家當前位置會被附加至 cannonLocations
  • targetWorld 設為玩家當前所在世界
  • searchCenter 不設定(若大砲位於目標世界則回退至大砲自身位置,否則回退至目標世界的出生點)

建立後,插件會回覆設定檔的絕對路徑,讓你可以手動編輯 displayNamecustomModelrequiredPermission、搜尋半徑與發射調整。

FreeMinecraftModels 整合

當大砲解析至有效的 FreeMinecraftModels 模型 —— 透過其自身的 customModel 欄位或全域 runtime.cannonModelPriority 清單 —— 並且 FreeMinecraftModels 已安裝時:

  • 大砲位置會生成一個靜態模型實體
  • 浮動文字標籤會被提升至大砲上方 2.0 格處(無模型時為 1.2 格)以避免穿插模型
  • 模型啟用期間會抑制閒置軌道粒子動畫
  • 在發射過程中,大砲會在搜尋階段開始時播放其 fire 動畫(若存在);搜尋階段期間玩家會被以隱形效果隱藏,使動畫呈現更清晰

若 FreeMinecraftModels 在伺服器運行期間被啟用或停用,大砲模型快取會被清除,視覺會於下一個 tick 重新整理。

閒置粒子回退方案

當沒有模型啟用時,大砲會在大砲中心周圍渲染一對軌道運行的 DUST_COLOR_TRANSITION + FIREWORK 粒子。顏色會根據大砲的有效狀態變化:

狀態主色重點色
Ready橙色金色
Searching(充能中 / 維持中)暖橙色金色
Exhausted紅色暖紅色
Invalid configuration深紅色紅色

閒置粒子僅在玩家位於大砲 36 格內時渲染。

浮動狀態標籤

每座大砲都會在其基座上方生成一個面向玩家的 TextDisplay,顯示其顯示名稱與目前狀態(ReadyChargingMaintainingExhaustedDisabledInvalid)。標籤為非持久性(永不儲存至區塊資料),並在區塊重新載入時自動重建。

執行階段驗證行為

當以下任一檢查失敗時,CannonRTP 會拒絕候選降落位置:

  • 目標世界未載入
  • 搜尋中心無效
  • 隨機取樣落在世界邊界外
  • 候選區塊無法載入
  • 找不到安全的固體非液體表面
  • 腳部或頭部空間被阻擋
  • 地形或身體方塊與設定的不安全材質清單匹配
  • 保護插件整合阻擋降落
  • CannonRTPLocationValidationEvent 監聽器否決候選位置

若大砲用盡 searchTimeoutAttempts(預設 100)仍未填滿其儲備,它會變為 Exhausted 狀態,並開始回傳設定的失敗訊息而非發射玩家。失敗訊息會包含最常見拒絕原因的摘要。每當佇列有名額釋出(例如發射後),大砲就會重設其逾時計數器。

互動防護

CannonRTP 會防止玩家在已處於發射序列中時觸發大砲。一旦目前的發射完成(降落或斷線),玩家即可再次使用大砲。沒有額外的冷卻計時器。