WorldCannon 設定
WorldCannon 使用一個全域設定檔,並為每個砲台各自使用一個設定檔。
檔案配置
- 全域設定:
plugins/FunRTP/config.yml - 每個砲台的設定:
plugins/FunRTP/custom/fun_rtps/<id>.yml
此外掛也附帶一個名為 example_world_cannon 的示例砲台套件。它預設為停用狀態。
全域設定結構
主設定依下列區塊組織:
runtime.*landing.*messages.*protection.*
執行階段設定
| Key | Default | Behavior |
|---|---|---|
runtime.scanIntervalTicks | 10 | 砲台檢查附近玩家的頻率 |
runtime.particleIntervalTicks | 15 | 閒置砲台粒子效果的渲染頻率 |
落點搜尋設定
| Key | Default | Behavior |
|---|---|---|
landing.searchAttemptsPerTick | 2 | 預先載入期間,每個砲台每 tick 進行的搜尋嘗試次數 |
landing.preloadedLocationsPerCannon | 5 | 外掛會嘗試為每個砲台佇列保留的安全目的地數量 |
landing.searchTimeoutSeconds | 1000 | 砲台持續搜尋超過此時間後會被標記為耗盡 |
landing.slowFallingSeconds | 60 | 到達後獲得緩降效果的持續時間(玩家落地時效果會提前移除) |
landing.failOpenOnProtectionErrors | false | 如果保護 API 發生錯誤,預設會阻止此次落點 |
落點音效
以下音效鍵可進行設定:
landing.sounds.levitationStart.soundlanding.sounds.levitationStart.volumelanding.sounds.levitationStart.pitchlanding.sounds.blastOff.soundlanding.sounds.blastOff.volumelanding.sounds.blastOff.pitch
預設音效為:預熱使用 BLOCK_BEACON_ACTIVATE,發射使用 ENTITY_GENERIC_EXPLODE。
不安全材料清單
WorldCannon 會根據兩份材料清單拒絕候選落點:
landing.unsafeGroundMaterialslanding.unsafeBodyMaterials
預設不安全地面材料:
LAVAMAGMA_BLOCKCAMPFIRESOUL_CAMPFIRECACTUSPOWDER_SNOW
預設不安全身體空間材料:
LAVAWATERFIRESOUL_FIRESWEET_BERRY_BUSHPOWDER_SNOWCOBWEB
訊息設定
此外掛在以下路徑下提供訊息與標題鍵:
messages.prefixmessages.helpHeadermessages.createdCannonmessages.deletedCannonmessages.movedCannonmessages.targetWorldUpdatedmessages.searchCenterUpdatedmessages.reloadmessages.noPermissionmessages.cannonDisabledmessages.queueCalibrationmessages.noValidLocationYetmessages.noValidLocationFoundmessages.invalidConfigurationmessages.statusLinemessages.probeAllowedmessages.probeBlockedmessages.unknownCommandmessages.titles.launchQueuedTitlemessages.titles.launchQueuedSubtitlemessages.titles.destinationPreviewTitlemessages.titles.destinationPreviewSubtitlemessages.titles.destinationConfirmedTitlemessages.titles.destinationConfirmedSubtitlemessages.titles.arrivalSubtitles
標題鍵控制自動發射與到達時的訊息。arrivalSubtitles 是一個列表;外掛每次發射時會隨機選擇其中一行。目前的實作中沒有手動確認提示。
每個砲台的設定欄位
每個砲台檔案會儲存下列欄位:
| Field | Default | Notes |
|---|---|---|
isEnabled | 新建立的砲台預設為 true | 停用的砲台不會觸發 |
displayName | 將 id 淨化後,把底線轉成空格 | 用於訊息與狀態輸出 |
cannonLocation | 必填 | 砲台觸發器所在的位置 |
targetWorld | 建立時的目前世界 | 執行時必須已載入 |
searchCenter | 建立時的目前世界出生點 | 如果之後未設定,外掛會回退到目標世界的出生點 |
triggerRadius | 1.75 | 用來偵測附近玩家的半徑 |
minSearchRadius | 500 | 從搜尋中心開始的最小落點搜尋距離 |
maxSearchRadius | 5000 | 從搜尋中心開始的最大落點搜尋距離 |
launchWarmupSeconds | 6 | 發射前的漂浮/倒數時間 |
verticalBoostTicks | 45 | 傳送前向上推進的 tick 數 |
verticalBoostVelocity | 1.35 | 發射時施加的向上速度 |
enableParticles | true | 控制閒置砲台粒子效果 |
requiredPermission | 空白 | 此砲台可選的額外權限門檻 |
建立砲台時的預設值
當你執行 /wc create 時:
- 砲台 id 會轉成小寫,並將
a-z、0-9、_和-以外的字元替換為_ - 顯示名稱預設使用淨化後的 id,並將底線轉成空格
cannonLocation會設為你目前所在的位置targetWorld會設為你目前所在的世界searchCenter會設為該世界的出生點
執行階段驗證行為
只要下列任一檢查失敗,WorldCannon 就會拒絕候選落點:
- 目標世界未載入
- 搜尋中心無效
- 隨機取樣點落在世界邊界之外
- 找不到安全的實體地表
- 腳部或頭部空間被阻擋
- 地形或身體空間方塊符合已設定的不安全材料清單
- 某個保護整合阻止了該落點
如果某個砲台在 landing.searchTimeoutSeconds 之前無法找到有效位置,它會變成耗盡狀態,並開始回傳已設定的失敗訊息,而不是發射玩家。