- 版权类型
- 原创
- 语言支持
- 中文(简体)
- 前置组件
- 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
# 旧版本: SyncWS - WS协调服务端
一、 插件功能
这是WS协调服务端的重构版本,模块化路由化,提高了可持续维护性。
以基岩版原版wsserver api为模板,架设WS服务端,实现跨服跨存档聊天,BDS玩家数据同步,可用于开资源服、群组服。
跨服同步为中心同步,需要设置一个主服,其他均为副服。登录副服时,需要从主服获取玩家背包数据。
计划下一步补充实现地图像素画功能(旧版的应该不能用了)
二、插件安装(版本升级请查看对应更新内容)
五、注意事项
# 不要在评价区反馈bug,反馈bug请到讨论/反馈区
# 本插件反馈QQ群: 311860068
# 旧版本: SyncWS - WS协调服务端
一、 插件功能
这是WS协调服务端的重构版本,模块化路由化,提高了可持续维护性。
以基岩版原版wsserver api为模板,架设WS服务端,实现跨服跨存档聊天,BDS玩家数据同步,可用于开资源服、群组服。
跨服同步为中心同步,需要设置一个主服,其他均为副服。登录副服时,需要从主服获取玩家背包数据。
计划下一步补充实现地图像素画功能(旧版的应该不能用了)
二、插件安装(版本升级请查看对应更新内容)
- 安装前置插件GMLIB0.13.5及GMLIB-LegacyRemoteCallApi0.13.3以上。
- 安装WS协调服务端(CoordinationWss):
- (二选一)独立运行:电脑安装 `nodejs` , 在插件目录使用cmd命令 `node s.js` 启动WS协调服务端。
- (二选一)作为LSE插件运行:将 `CoordinationWss` 文件夹放到主服plugins目录下。 - 安装WS协调客户端(CoordinationWsc):
将 `CoordinationWsc` 文件夹放到主服和副服plugins目录下(所有服都要装,所有BDS都将作为WS客户端连接到WS协调服务端)。 - 启动BDS, 自动生成配置文件(见插件目录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连接密钥
"Debug": false,
},
"Chat": {
"ConsoleDisplay": true, // WS协调服务端控制台聊天显示
"ChatLog": true, // 聊天日志, 记录所有玩家聊天日志到./log/chatwss/PlayerChat/
"ChatHeader": "", // 聊天前缀, 玩家在聊天内容开头添加此字符进行云端聊天。
"TipHeader": "§d『§b${ServerName}§d』§r", // 聊天显示头衔, ${ServerName} 替换为WS协调服务端名称。
}
};
JavaScript:
// ./plugins/CoordinationWsc/data/WSClientConfig.json
let defaultConfig = {
"CONFIG": "此为Websocket客户端配置文件",
// Websocket网络
"Websocket": {
"ConnectUrl": "ws://127.0.0.1:9001", // WS协调服务端Websocket连接地址(优先局域网地址)
"ConnectKey": "FlySteve", // WS协调服务端Websocket连接密钥
"ServerName": "资源世界", // BDS名称 (默认为存档名) & 提示信息前缀
"BDSUuid": "123abv323", // BDS唯一识别名(每个服务器一个, 不能重复, 不可擅自修改")
"BDSIp": "114.5.14.1", // 此BDS的公网IP地址
"BDSPort": 19132, // 此BDS的公网端口
"Debug": false,
},
// 聊天配置
"Chat": {
"ConsoleDisplay": true, // WS控制台聊天显示
},
// 玩家数据同步配置
"SyncConfig":{
"Enabled": true, // 同步功能总开关
"SyncType": 'sub', // 同步类型, 用于玩家数据同步, 副服: 'sub' 主服: 'main', 玩家数据以主服数据为准。
"AutoSyncCycle": 30000, // 自动同步周期(ms)
"AllowCreateNewPlayer": false, // 是否允许存档新建玩家(默认新玩家从副服登录时将自动传送到主服)
"SyncOption": { // 玩家数据同步选项(这里是本服作为同步数据接收方的同步项开关)
"syncInventory": true, // 跨服背包(非实时同步)
"syncLLMoney": true, // 跨服LLMoney(实时同步)
"syncScoreboard": [], // 跨服计分板(非实时同步)填入想要同步的计分项
"syncTags": true, // 跨服Tag
"syncEnderChest": true, // 跨服末影箱
"syncLevel": true, // 跨服经验等级
"syncEffects": false, // 跨服药水效果
"syncCmd": ["allowlist", "whitelist"] // 同步执行的命令(主服执行,则其他服也同步执行);
}
}
};
五、注意事项
- 关服操作:请使用sync stop命令先踢出玩家,让玩家都同步后再关闭服务器,否则会让玩家处于意外退出状态,此时为保证同步,玩家只能先登录到此服务器。
- 任何数据敏感操作前务必备份存档。推荐我的背包备份导入导出插件:WnBagBackup
- WS协调服务端(CoordinationWss)下的playerSyncTemp.json是玩家同步状态缓存,如果WS协调服务端启动时无意外退出的玩家,那么说明所有玩家都已同步到主服。在有需要时,此文件可酌情删除,甚至可以安全卸载本跨服插件。