跳至主要内容

CannonRTP 設定

CannonRTP 使用一個全域設定檔加上每個炮台一個設定檔。

檔案佈局

  • 全域設定:plugins/CannonRTP/config.yml
  • 炮台設定:plugins/CannonRTP/custom/fun_rtps/<id>.yml

外掛還附帶一個名為 example_world_cannon 的範例炮台包。預設停用。

全域設定結構

主設定組織在:

  • runtime.*
  • landing.*
  • messages.*
  • protection.*

執行時設定

預設值行為
runtime.scanIntervalTicks2炮台檢查附近玩家的頻率(最小 2)
runtime.particleIntervalTicks15閒置炮台粒子渲染頻率(最小 5)

降落搜尋設定

預設值行為
landing.searchAttemptsPerTick2預載入期間每炮台每刻的搜尋嘗試次數(最小 1)
landing.preloadedLocationsPerCannon10外掛嘗試為每個炮台在佇列中保持的安全目的地總數(最小 1)
landing.chargedLocationsPerCannon5炮台被視為充能完成和發射就緒所需的位置數(最小 1,上限為 preloadedLocationsPerCannon
landing.searchTimeoutSeconds1000仍在搜尋的炮台被標記為耗盡之前的時間(秒)(最小 10)
landing.slowFallingSeconds60到達後緩慢下降持續時間(秒);玩家著地時效果提前移除(最小 1)
landing.failOpenOnProtectionErrorsfalse如果保護 API 報錯,預設阻止降落

降落音效

以下音效鍵可設定:

  • landing.sounds.levitationStart.sound(預設:BLOCK_BEACON_ACTIVATE
  • landing.sounds.levitationStart.volume(預設:1.0
  • landing.sounds.levitationStart.pitch(預設:1.15
  • landing.sounds.blastOff.sound(預設:ENTITY_GENERIC_EXPLODE
  • landing.sounds.blastOff.volume(預設:1.0
  • landing.sounds.blastOff.pitch(預設:0.9

音效值使用 Bukkit 的 Sound 註冊名或命名空間鍵。無效的音效名會被記錄為警告,音效會被靜默跳過。

不安全材料清單

CannonRTP 根據兩個材料清單拒絕降落候選點:

  • landing.unsafeGroundMaterials -- 絕不應該站立其上的方塊
  • landing.unsafeBodyMaterials -- 絕不應該佔據腳部或頭部空間的方塊

預設不安全地面材料:

  • LAVA
  • MAGMA_BLOCK
  • CAMPFIRE
  • SOUL_CAMPFIRE
  • CACTUS
  • POWDER_SNOW

預設不安全身體材料:

  • LAVA
  • WATER
  • FIRE
  • SOUL_FIRE
  • SWEET_BERRY_BUSH
  • POWDER_SNOW
  • COBWEB

訊息設定

所有訊息支援 MagmaCore 漸層、MiniMessage 標籤和舊版顏色代碼。$prefix 佔位符會被替換為設定的前綴值。

訊息鍵、佔位符和描述的完整清單請參考英文文件 -- 設定鍵不會被翻譯。

預熱期間的座標預覽不會顯示實際目的地 -- 它顯示炮台搜尋區域內的隨機座標作為視覺效果。真實目的地僅在確認標題中揭示。

炮台設定欄位

每個炮台檔案(plugins/CannonRTP/custom/fun_rtps/<id>.yml)儲存以下欄位:

欄位預設值說明
isEnabled新建立的炮台為 true停用的炮台不會觸發
displayNameCannonRTP(或建立時提供的名稱)用於訊息、狀態輸出和浮動標籤
cannonLocation必填炮台觸發器的位置
targetWorld建立時的當前世界執行時必須已載入
searchCenternull(回退到目標世界的重生點)未設定時,外掛使用目標世界的重生點位置
triggerRadius1.75偵測附近玩家的半徑(最小 0.5)
minSearchRadius500從搜尋中心的最小降落搜尋距離(最小 0)
maxSearchRadius5000從搜尋中心的最大降落搜尋距離(始終至少為 minSearchRadius + 1
launchWarmupSeconds6發射前的漂浮/倒計時時間(最小 0;為 0 時立即發射)
verticalBoostTicks45傳送前的向上速度刻數(最小 0)
verticalBoostVelocity1.35發射時施加的向上速度(最小 0)
enableParticlestrue控制閒置炮台粒子動畫
requiredPermission此特定炮台的可選額外權限門控
customModel在炮台位置顯示的可選 FreeMinecraftModels 模型名

炮台建立預設值

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

  • 炮台 ID 會轉換為小寫,a-z0-9_- 以外的字元會被替換為 _
  • 顯示名未指定時預設為 CannonRTP,或提供的名稱中底線轉換為空格
  • cannonLocation 設定為你的當前位置
  • targetWorld 設定為你的當前世界
  • searchCenter 未設定(回退到目標世界的重生點)

建立後,外掛會輸出設定檔路徑並建議手動編輯以下欄位:displayNamecustomModelrequiredPermissionlaunchWarmupSecondsverticalBoostTicksverticalBoostVelocity

FreeMinecraftModels 整合

如果炮台設定將 customModel 設定為有效的 FreeMinecraftModels 模型名且 FreeMinecraftModels 已安裝:

  • 在炮台位置產生靜態模型實體
  • 浮動文字標籤會抬高以避免與模型重疊
  • 如果名為 fire 的模型也存在,則使用替代發射動畫:玩家被傳送到炮台座位,在 3 秒(60 刻)充能序列中保持不動,然後以爆炸粒子效果發射

執行時驗證行為

CannonRTP 在以下任何檢查失敗時拒絕降落候選點:

  • 目標世界未載入
  • 搜尋中心無效
  • 隨機樣本落在世界邊界之外
  • 未找到安全的固體表面
  • 腳部或頭部空間被堵塞
  • 地形或身體方塊與設定的不安全材料清單匹配
  • 保護整合阻止降落

如果炮台在 landing.searchTimeoutSeconds 之前找不到足夠的有效位置,它會變為耗盡狀態,開始返回設定的失敗訊息而不是發射玩家。失敗訊息包含最常見拒絕原因的摘要。

炮台的搜尋視窗在需要補充已消耗的位置時會重新啟動(例如玩家發射後空出了一個槽位)。

互動冷卻

CannonRTP 對每個玩家強制執行 3 秒的互動冷卻。無論互動是成功發射、權限拒絕還是其他炮台檢查,此冷卻均適用。冷卻時間不可設定。