跳至主要内容

CannonRTP (WorldCannon)

CannonRTP 是一個適用於 Minecraft 伺服器的多炮台隨機傳送外掛。專案內部名稱為 WorldCannon,但外掛在 Bukkit 中註冊為 CannonRTP,這是玩家和管理員看到的名稱。

重要命名詳情:

  • 外掛名稱:CannonRTP
  • 根命令:/cannonrtp
  • 別名:/crtp, /wc
  • 權限:cannonrtp.admin, cannonrtp.use
  • 設定資料夾:plugins/CannonRTP/

功能介紹

CannonRTP 是一個多炮台隨機降落系統,而不是單一固定發射器。

每個炮台可以:

  • 偵測進入觸發半徑的玩家
  • 在設定的目標世界中預載入並維護安全降落點佇列
  • 拒絕不安全的地形、被堵塞的空間和受保護的土地
  • 可選要求每個炮台的額外權限
  • 透過預熱、座標預覽、加速、傳送和緩降序列發射玩家
  • 可選在炮台位置顯示 FreeMinecraftModels 自訂模型

發射流程

當玩家走進符合條件的炮台觸發半徑時:

  1. CannonRTP 檢查 cannonrtp.use
  2. 檢查炮台的可選 requiredPermission
  3. 驗證炮台已啟用、擁有有效設定且已預載入降落點。
  4. 從該炮台的佇列中消耗一個預載入的安全降落點。
  5. 發射預熱開始:玩家獲得漂浮效果,看到帶有隨機座標預覽的標題/副標題倒計時。
  6. 預熱結束後,播放發射音效,施加垂直加速,玩家被傳送到目的地上方 50 個方塊,並施加緩慢下降。
  7. 當玩家著地時,緩慢下降效果會提前移除。

如果炮台設定了 customModel 且 FreeMinecraftModels 的 fire 模型存在,則使用替代發射動畫,玩家在預熱期間會坐在炮台位置。

降落安全規則

在位置被接受進入預載入佇列之前,當前程式碼會檢查:

  • 目標世界是否已載入
  • 搜尋中心是否有效
  • 位置是否在世界邊界內
  • 是否存在最高安全表面(固體、非液體、非空氣)
  • 腳部和頭部空間是否可通行
  • 降落表面是否不在設定的不安全地面材料清單中
  • 腳部和頭部方塊是否不在設定的不安全身體材料清單中
  • 所有已啟用的保護外掛整合是否允許該位置

炮台狀態

每個炮台都有一個內部狀態,可透過 /wc status 查看:

狀態含義
Charging仍在預載入第一批安全位置
Ready已有足夠的預載入位置來發射玩家
Maintaining已就緒但仍在補充已消耗的位置
Exhausted逾時未找到足夠的有效位置
Invalid設定錯誤(如目標世界未載入)

炮台在儲存了至少 chargedLocationsPerCannon 個有效目的地後變為發射就緒狀態。

執行要求

  • Minecraft API:1.21
  • Java:21
  • 推薦伺服器軟體:Paper 或當前相容的分支
  • 可選依賴:FreeMinecraftModels(用於自訂炮台模型)

開始使用