CannonRTP 設定
CannonRTP 使用一個全域設定檔加上每個炮台一個設定檔。
檔案佈局
- 全域設定:
plugins/CannonRTP/config.yml - 炮台設定:
plugins/CannonRTP/custom/fun_rtps/<id>.yml
外掛還附帶一個名為 example_world_cannon 的範例炮台包。預設停用。
全域設定結構
主設定組織在:
runtime.*landing.*messages.*protection.*
執行時設定
| 鍵 | 預設值 | 行為 |
|---|---|---|
runtime.scanIntervalTicks | 2 | 炮台檢查附近玩家的頻率(最小 2) |
runtime.particleIntervalTicks | 15 | 閒置炮台粒子渲染頻率(最小 5) |
降落搜尋設定
| 鍵 | 預設值 | 行為 |
|---|---|---|
landing.searchAttemptsPerTick | 2 | 預載入期間每炮台每刻的搜尋嘗試次數(最小 1) |
landing.preloadedLocationsPerCannon | 10 | 外掛嘗試為每個炮台在佇列中保持的安全目的地總數(最小 1) |
landing.chargedLocationsPerCannon | 5 | 炮台被視為充能完成和發射就緒所需的位置數(最小 1,上限為 preloadedLocationsPerCannon) |
landing.searchTimeoutSeconds | 1000 | 仍在搜尋的炮台被標記為耗盡之前的時間(秒)(最小 10) |
landing.slowFallingSeconds | 60 | 到達後緩慢下降持續時間(秒);玩家著地時效果提前移除(最小 1) |
landing.failOpenOnProtectionErrors | false | 如果保護 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-- 絕不應該佔據腳部或頭部空間的方塊
預設不安全地面材料:
LAVAMAGMA_BLOCKCAMPFIRESOUL_CAMPFIRECACTUSPOWDER_SNOW
預設不安全身體材料:
LAVAWATERFIRESOUL_FIRESWEET_BERRY_BUSHPOWDER_SNOWCOBWEB
訊息設定
所有訊息支援 MagmaCore 漸層、MiniMessage 標籤和舊版顏色代碼。$prefix 佔位符會被替換為設定的前綴值。
訊息鍵、佔位符和描述的完整清單請參考英文文件 -- 設定鍵不會被翻譯。
預熱期間的座標預覽不會顯示實際目的地 -- 它顯示炮台搜尋區域內的隨機座標作為視覺效果。真實目的地僅在確認標題中揭示。
炮台設定欄位
每個炮台檔案(plugins/CannonRTP/custom/fun_rtps/<id>.yml)儲存以下欄位:
| 欄位 | 預設值 | 說明 |
|---|---|---|
isEnabled | 新建立的炮台為 true | 停用的炮台不會觸發 |
displayName | CannonRTP(或建立時提供的名稱) | 用於訊息、狀態輸出和浮動標籤 |
cannonLocation | 必填 | 炮台觸發器的位置 |
targetWorld | 建立時的當前世界 | 執行時必須已載入 |
searchCenter | null(回退到目標世界的重生點) | 未設定時,外掛使用目標世界的重生點位置 |
triggerRadius | 1.75 | 偵測附近玩家的半徑(最小 0.5) |
minSearchRadius | 500 | 從搜尋中心的最小降落搜尋距離(最小 0) |
maxSearchRadius | 5000 | 從搜尋中心的最大降落搜尋距離(始終至少為 minSearchRadius + 1) |
launchWarmupSeconds | 6 | 發射前的漂浮/倒計時時間(最小 0;為 0 時立即發射) |
verticalBoostTicks | 45 | 傳送前的向上速度刻數(最小 0) |
verticalBoostVelocity | 1.35 | 發射時施加的向上速度(最小 0) |
enableParticles | true | 控制閒置炮台粒子動畫 |
requiredPermission | 空 | 此特定炮台的可選額外權限門控 |
customModel | 空 | 在炮台位置顯示的可選 FreeMinecraftModels 模型名 |
炮台建立預設值
當你執行 /wc create <id> 時:
- 炮台 ID 會轉換為小寫,
a-z、0-9、_和-以外的字元會被替換為_ - 顯示名未指定時預設為
CannonRTP,或提供的名稱中底線轉換為空格 cannonLocation設定為你的當前位置targetWorld設定為你的當前世界searchCenter未設定(回退到目標世界的重生點)
建立後,外掛會輸出設定檔路徑並建議手動編輯以下欄位:displayName、customModel、requiredPermission、launchWarmupSeconds、verticalBoostTicks 和 verticalBoostVelocity。
FreeMinecraftModels 整合
如果炮台設定將 customModel 設定為有效的 FreeMinecraftModels 模型名且 FreeMinecraftModels 已安裝:
- 在炮台位置產生靜態模型實體
- 浮動文字標籤會抬高以避免與模型重疊
- 如果名為
fire的模型也存在,則使用替代發射動畫:玩家被傳送到炮台座位,在 3 秒(60 刻)充能序列中保持不動,然後以爆炸粒子效果發射
執行時驗證行為
CannonRTP 在以下任何檢查失敗時拒絕降落候選點:
- 目標世界未載入
- 搜尋中心無效
- 隨機樣本落在世界邊界之外
- 未找到安全的固體表面
- 腳部或頭部空間被堵塞
- 地形或身體方塊與設定的不安全材料清單匹配
- 保護整合阻止降落
如果炮台在 landing.searchTimeoutSeconds 之前找不到足夠的有效位置,它會變為耗盡狀態,開始返回設定的失敗訊息而不是發射玩家。失敗訊息包含最常見拒絕原因的摘要。
炮台的搜尋視窗在需要補充已消耗的位置時會重新啟動(例如玩家發射後空出了一個槽位)。
互動冷卻
CannonRTP 對每個玩家強制執行 3 秒的互動冷卻。無論互動是成功發射、權限拒絕還是其他炮台檢查,此冷卻均適用。冷卻時間不可設定。