- 版权类型
- 原创
- 语言支持
- 中文(简体)
- 前置组件
- GMLIB(MineBBS) - https://www.minebbs.com/resources/gmlib.6636/
GMLIB-LegacyRemoteCallApi(MineBBS) - https://www.minebbs.com/resources/gmlib-legacyremotecallapi-gmlib-remotecallapi.7159
GMLIB(GitHub) - https://github.com/GroupMountain/GMLIB-Release/releases/
GMLIB-LegacyRemoteCallApi(GitHub) - https://github.com/GroupMountain/GMLIB-LegacyRemoteCallApi/releases
- 适配版本(基岩)
- 最新版本
# 作者:Wn1027
# 不要在评价区反馈bug,反馈bug请到讨论/反馈区
# 本插件反馈QQ群: 311860068 接百元LSE小插件定制私聊群主
# 旧版本: SyncWS - WS协调服务端
一、 插件功能
这是WS协调服务端的重构版本,模块化路由化,提高了可持续维护性。
以基岩版原版wsserver api为模板,架设WS服务端,实现跨服跨存档聊天,BDS玩家数据同步,可用于开资源服、群组服。
跨服同步为中心同步,需要设置一个主服,其他均为副服。登录副服时,需要从主服获取玩家背包数据。
计划下一步补充实现地图像素画功能(旧版的应该不能用了)
二、插件安装(版本升级请查看对应更新内容)
五、注意事项
# 不要在评价区反馈bug,反馈bug请到讨论/反馈区
# 本插件反馈QQ群: 311860068 接百元LSE小插件定制私聊群主
# 旧版本: SyncWS - WS协调服务端
一、 插件功能
这是WS协调服务端的重构版本,模块化路由化,提高了可持续维护性。
以基岩版原版wsserver api为模板,架设WS服务端,实现跨服跨存档聊天,BDS玩家数据同步,可用于开资源服、群组服。
跨服同步为中心同步,需要设置一个主服,其他均为副服。登录副服时,需要从主服获取玩家背包数据。
计划下一步补充实现地图像素画功能(旧版的应该不能用了)
| BDS版本 | 本插件版本 | 可用情况 |
| ...1.21.40 | 5.0.0 | |
| 1.21.50 | 5.0.0 | |
| 1.21.60 | 5.0.0 | |
| 1.21.70 | 5.0.0 | |
| 1.21.80 | 5.0.0 | |
| 1.21.93 | 5.1.0 | |
| 1.21.124 | 5.1.5 | |
| 1.21.132 | 5.1.5 | |
| 26.10 | 5.2.0 | |
| 26.20 | 5.2.3 |
二、插件安装(版本升级请查看对应更新内容)
- 【可选但推荐】安装前置插件GMLIB0.13.5及GMLIB-LegacyRemoteCallApi0.13.3以上。
- 【旧版本】GMLIB-LegacyRemoteCallApi v1.4.0版本 请替换 GMLIB_API-JS.js为群内的版本,以正确启用虚拟玩家列表。(或者自己修改LRCA的脚本把FakeList三个相关导入从GMLIB_API改为GMLib_ServerAPI)
- BDS安装路径不能有中文。
- 安装WS协调服务端(CoordinationWss):
- (二选一)独立运行:电脑安装 `nodejs` , 在插件目录使用cmd命令 `node s.js` 启动WS协调服务端。
- (二选一)作为LSE插件运行:将 `CoordinationWss` 文件夹放到主服plugins目录下。 - 安装WS协调客户端(CoordinationWsc):
将 `CoordinationWsc` 文件夹放到主服和副服plugins目录下(所有服都要装,所有BDS都将作为WS客户端连接到WS协调服务端)。 - 启动BDS, 自动生成配置文件(不要复制配置文件,BDSUuid不可重复)(见插件目录data文件夹下)。
- 修改配置,指定主服(参考下文配置文件说明)。
- 打开主服的./plugins/CoordinationWsc/data/WSClientConfig.json
- 修改 `Websocket` 项目下的连接地址及其他配置
- 修改 `SyncType` 一项为 `main`(指定此服为主服)
- 打开副服的./plugins/CoordinationWsc/data/WSClientConfig.json
- 修改 `Websocket` 项目下的连接配置,及其他配置 - 开放WS协调服务端(CoordinationWss)所在服务器的公网tcp9001端口。
- 重启所有服务器。
- `/sync transfer` : 打开菜单, 传送到同步服务器
- `/sync transfer <ip> <port>` : 传送到某个服务器
- `/sync list` : 列出协调服务端在线玩家
- `/sync list num` : 返回协调服务端在线玩家人数
- `/sync debug true|false` : 打开/关闭 debug模式
- WS协调服务端独立运行时, 输入控制台命令 `help` 查看帮助
- 单人存档使用命令 /connect ws://127.0.0.1:9001/?key=FlySteve 连接
- 注册了PAPI变量:在线玩家数量:%onlinePlayersNum% 在线玩家列表:%onlinePlayersNames%
- 开发者调用请看Gitee仓库(待完善):插件架构思路及开发者指南
JavaScript:
// ./plugins/CoordinationWss/data/WSServerConfig.json
let defaultConfig = {
"CONFIG": "此为Websocket协调服务端配置文件",
"Websocket": {
"ServerName": "WS协调服务端", // WS协调服务端名称
"Port": 9001, // WS协调服务端Websocket端口
"ConnectKey": "FlySteve", // WS协调服务端Websocket连接密钥
"HeartBeatInterval": 10000, // WS协调服务端心跳间隔
"HeartBeatTimeoutCount": 2, // WS协调服务端心跳超时次数,2次无回应断开连接
"Debug": false,
},
"Chat": {
"ConsoleDisplay": true, // WS协调服务端控制台聊天显示
"ChatLog": true, // 聊天日志, 记录所有玩家聊天日志到./log/chatwss/PlayerChat/
"ChatHeader": "", // 聊天前缀, 玩家在聊天内容开头添加此字符进行云端聊天。
"TipHeader": "§d『§b${ServerName}§d』§r", // 聊天显示头衔, ${ServerName} 替换为WS协调服务端名称。
}
"Sync": {
"PlayerTempDb": "sqlite3" // 玩家缓存数据库类型,可选json、leveldb、sqlite3
}
};
JavaScript:
// ./plugins/CoordinationWsc/data/WSClientConfig.json
let defaultConfig = {
"CONFIG": "此为Websocket客户端配置文件",
// Websocket网络
"Websocket": {
"ConnectUrl": "ws://127.0.0.1:9001", // 要连接的Websocket地址(优先局域网地址)
"ConnectKey": "FlySteve", // Websocket连接密钥
"ServerName": "Bedrock level", // BDS名称 (默认为存档名) & 提示信息前缀
"SendJsonTimeout": 3000, // 发送json超时时间
"BDSUuid": "000-0000-000", // BDS唯一识别名(每个服务器一个, 不能重复, 不可擅自修改")
"BDSIp": "114.51.41.9", // 此BDS的公网IP地址或域名,用于其他服传送到此服。填空字符串视为与玩家入服ip相同,适用同机器多开BDS
"BDSPort": 19132, // 此BDS的公网端口
"BDSPortV6": 19133, // 此BDS的公网ipv6端口,ip为ipv6时采用此端口,为空时视为BDSPort+1
"Debug": false,
},
// 聊天配置
"Chat": {
"ConsoleDisplay": true, // WS控制台聊天显示
"ConsoleDisplayLocal": true // WS控制台是否显示本服玩家的聊天
},
// 个性化配置
"PersonalConfig":{
"EnableFakeList": false, // 启用虚假玩家列表(需要GMLIB前置)
"TransferShowPlayersNum": true, // 传送表单显示玩家数量
"TransferShowTps": true, // 传送表单显示Tps(需要GMLIB前置)
},
// 玩家数据同步配置
"SyncConfig":{
"Enabled": true, // 数据同步功能总开关(不控制聊天同步、命令同步)
"SyncType": 'sub', // 同步类型, 用于玩家数据同步, 副服: 'sub' 主服: 'main', 玩家数据以主服数据为准。
"AutoSyncCycle": 30000, // 自动同步周期(ms)
"AllowCreateNewPlayer": false, // 是否允许存档新建玩家(关闭则新玩家从副服登录时将自动传送到主服)
"SyncReceiveOption":{
"syncChat": true, // 接收跨服聊天(独立控制,不受数据同步功能总开关影响)
"syncInventory": true, // 接收跨服背包(非实时同步)
"syncLLMoney": true, // 接收跨服LLMoney(实时同步)
"syncScoreboard": [], // 接收跨服计分板(非实时同步,需要GMLIB前置)填入想要同步的计分项
"syncTags": true, // 接收跨服Tag
"syncEnderChest": true, // 接收跨服末影箱
"syncLevel": true, // 接收跨服经验等级
"syncEffects": false, // 接收跨服药水效果
"syncAttributes": false, // 接收跨服玩家属性
"syncCmd": ["allowlist", "whitelist"] // 接收同步执行的命令(主服执行,则其他服也同步执行,不受同步功能总开关影响);
},
"SyncSendOption": {
"syncChat": true, // 发送跨服聊天(独立控制,不受数据同步功能总开关影响)
"syncInventory": true, // 发送跨服背包(非实时同步)
"syncLLMoney": true, // 发送跨服LLMoney(实时同步)
"syncScoreboard": [], // 发送跨服计分板(非实时同步,需要GMLIB前置)填入想要同步的计分项
"syncTags": true, // 发送跨服Tag
"syncEnderChest": true, // 发送跨服末影箱
"syncLevel": true, // 发送跨服经验等级
"syncEffects": false, // 发送跨服药水效果
"syncAttributes": false, // 发送跨服玩家属性
"syncCmd": ["allowlist", "whitelist"] // 发送同步执行的命令(主服执行,则其他服也同步执行,不受同步功能总开关影响);
}
}
};
五、注意事项
- 关服操作:请使用sync stop命令先踢出玩家,让玩家都同步后再关闭服务器,否则会让玩家处于意外退出状态,此时为保证同步,玩家只能先登录到此服务器。
- 任何数据敏感操作前务必备份存档。推荐我的背包备份导入导出插件:WnBagBackup
- 本插件与开服刷新背包的插件冲突:如多背包插件等,会导致进服背包同步后又被原背包覆盖。
- 进服后可能需要点一下地板才能刷新背包。
- WS协调服务端(CoordinationWss)下的data/playerSyncTemp.json或playerSyncTemp.db是玩家同步状态缓存,如果BDS启动后WS协调服务端启动时显示无意外退出的玩家,那么说明所有玩家都已同步到主服,此时此文件可删除,然后可以安全卸载本跨服插件。
- 本插件核心依赖于GMLIB的离线玩家NBT操作接口,如果api没问题本插件一般能够兼容新版本(得益于LSE的兼容性)。
- 如果你想开个仅互通聊天的服,你需要关闭该服的数据同步总开关(Enabled),然后保持SyncChat开启即可。
- GMLIB在此插件中的功能:虚拟玩家列表、完善的计分板api、离线操作玩家NBT、存档新建玩家。BDS26.20,LSE0.19.2后LSE新增api能够替代这些中的大部分功能