⚠️ 本插件仍在開發中(WIP) 功能與設定格式都可能變動,尚未經過大規模正式環境驗證。 目前 SQL / Redis 部分僅在有限環境測試過,請勿直接用於正式伺服器,或務必先備份。
Paper 伺服器的聊天頻道系統:公開/私人頻道、GUI 選單、逐玩家的訊息隱藏(死亡/達成進度/AFK), 以及可插拔的資料保存後端。
需求:Paper 26.1、Java 25
- 公開頻道:
channels/資料夾內一個.yml= 一個頻道,可各自設定顏色與可見範圍。 - 私人頻道:玩家自建,群主管理(邀請、踢人、人數上限、描述、解散),預設邀請制。
- 加入頻道即在該頻道發言,訊息自動帶上該頻道前綴,例如
[交易] 玩家 » 訊息。 想暫時回公共聊天可用/chat talk或選單的「輸入模式」按鈕切換,不必離開頻道。 - 公共聊天:沒有作用中頻道的玩家,訊息前面加上
[公共]前綴。
玩家可自行在選單裡隱藏別人的或自己的訊息,只影響他自己,其他人照常看到:
| 類型 | 操作 | 支援來源 |
|---|---|---|
| 死亡訊息 | 左鍵=他人 / 右鍵=自己 | 原版、CMI |
| 達成進度 | 左鍵=他人 / 右鍵=自己 | 原版 |
| AFK 訊息 | 左鍵切換 | CMI(需其 AFK 模組開啟) |
- 後端可選:file(yml) / SQLite / H2 / MySQL / MariaDB / PostgreSQL
- 選用 Redis 作為紀錄的寫入緩衝:聊天/指令紀錄先進 Redis 佇列再批次落地, 避免高頻紀錄打爆資料庫連線。沒配置 Redis 就每筆直接落地。
- 執行期依賴(HikariCP / JDBC 驅動 / Jedis)由 Paper 的 library loader 依設定自動下載,不打包進 jar。
| 指令 | 說明 |
|---|---|
/chat |
開啟頻道選單 |
/chat list |
文字總覽 |
/chat join <頻道> |
加入/切換頻道 |
/chat leave [頻道] |
離開頻道(預設為作用中的) |
/chat create <名稱> |
建立私人頻道 |
/chat invite <玩家> |
邀請玩家進你的頻道(群主) |
/chat who |
列出作用中頻道的成員 |
/chat talk |
切換輸入模式(講話進頻道 ↔ 公共聊天) |
/chat deathmessages [self] |
切換隱藏死亡訊息(他人/自己) |
/chat advancements [self] |
切換隱藏達成進度訊息(他人/自己) |
/chat afk |
切換隱藏 AFK 訊息 |
/chat reload |
重載設定與語言檔 |
/chat debug |
切換除錯模式 |
/c <訊息>(別名 /cc) |
單獨發一句到作用中頻道 |
| 節點 | 預設 | 說明 |
|---|---|---|
chatconduit.use |
所有人 | 基本功能 |
chatconduit.create |
所有人 | 建立私人頻道 |
chatconduit.admin |
OP | /chat reload、/chat debug |
新增頻道 = 複製一個檔。檔名僅供識別,玩家看到的是 name。
enabled: true
name: "交易"
description: "買賣物品、尋找你需要的東西"
color: "<gold>" # MiniMessage 顏色,也可用 <#ff8800>
show-in-public-chat: false # true = 沒加入本頻道的玩家也看得到內建兩個範例:交易(僅成員可見)、組隊(全服可見)。
language: zh_TW
debug: false
chat:
public-prefix: true # 公共聊天是否加上 [公共] 前綴
priority: LOWEST # 聊天事件優先級,與 CMI/LPC 等搭配時可調
private-channels:
max-per-player: 3
default-member-limit: 20
death-messages:
allow-player-hide: true
self-death-keywords: [] # CMI 死亡座標等「無玩家名」訊息的比對關鍵字
storage:
type: yml # yml / sqlite / h2 / mysql / mariadb / postgresql
logging: # 要保存哪些紀錄
commands: false
channel-chat: false
global-chat: false
sql:
file: data
host: 127.0.0.1
port: 3306
database: chatconduit
username: root
password: ""
redis: # 選用:紀錄的寫入緩衝
enabled: false
host: 127.0.0.1
port: 6379切換到 SQL 或啟用 Redis 後請重啟一次 —— library loader 要先讀得到
config.yml才知道要下載哪個驅動。SQL 初始化失敗會自動退回yml,不會讓伺服器起不來。
玩家看得到的文字全部在語言檔(MiniMessage 格式),內建 zh_TW、en_US。
複製一份改名(如 de_DE.yml)再設定 language: 即可新增語言。
玩家輸入的內容一律以純文字插入,不會被當成標籤解析。
若你的伺服器由 CMI、LPC、FreedomChat 等插件接管聊天渲染,
本插件的 [公共] 前綴可能不會顯示(對方自行廣播、不走 renderer)。
此時請關閉 chat.public-prefix,改用 PlaceholderAPI 佔位符放進對方的聊天格式:
| 佔位符 | 回傳 |
|---|---|
%chatconduit_prefix% |
完整前綴,§ 色碼,如 §8[§6交易§8] —— 直接可顯示 |
%chatconduit_prefix_amp% |
同上但用 & 色碼 |
%chatconduit_channel% |
頻道純名稱;沒有頻道時回傳「公共」 |
%chatconduit_channel_raw% |
頻道純名稱;沒有頻道時回傳空字串 |
%chatconduit_public% |
「公共」純文字 |
%chatconduit_in_channel% |
true / false |
CMI 範例:
GeneralFormat: '%chatconduit_prefix% &r{displayName} &8» &r{message}'| 插件 | 用途 |
|---|---|
| packetevents | 逐玩家訊息隱藏、頻道訊息不外洩到公共聊天 |
| CMI | 偵測其 DeathMessages / AFK 模組以正確處理對應訊息 |
| PlaceholderAPI | 提供上述佔位符 |
都沒裝也能正常運作,只是對應功能會停用。
需要 JDK 25(Paper 26.1 的 API 以 Java 25 編譯)。
mvn clean package產出:target/ChatConduit-1.0.0.jar
CMI 整合需要 src/main/java/kevin/chatconduit/library/CMI-API*.jar(已隨庫附上)。
見 LICENSE。Copyright (c) 2026 Kevin28576。