CoordinationWss - WS协调服务端 - 基岩版跨服同步群组服原版wsserver

LSE CoordinationWss - WS协调服务端 - 基岩版跨服同步群组服原版wsserver 5.2.3

请登录后获取
版权类型
原创
版权链接
https://gitee.com/wn1027/lse-coordination-wss
语言支持
中文(简体)
前置组件
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
适配版本(基岩)
  1. 最新版本
# 作者:Wn1027
# 不要在评价区反馈bug,反馈bug请到讨论/反馈区
# 本插件反馈QQ群: 311860068 接百元LSE小插件定制私聊群主
# 旧版本: SyncWS - WS协调服务端

一、 插件功能


这是WS协调服务端的重构版本,模块化路由化,提高了可持续维护性。

以基岩版原版wsserver api为模板,架设WS服务端,实现跨服跨存档聊天,BDS玩家数据同步,可用于开资源服、群组服。
跨服同步为中心同步,需要设置一个主服,其他均为副服。登录副服时,需要从主服获取玩家背包数据。
计划下一步补充实现地图像素画功能(旧版的应该不能用了)

BDS版本本插件版本可用情况
...1.21.405.0.0✅可用
1.21.505.0.0✅可用
1.21.605.0.0❌不可用。GMLIB bug,LSE传送api bug
1.21.705.0.0❌不可用。GMLIB bug,LSE传送api bug
1.21.805.0.0✅可用。传送后需点地板刷新背包。新玩家进副服会失败一次,重进就好了
1.21.935.1.0✅可用
1.21.1245.1.5✅可用
1.21.1325.1.5✅可用
26.105.2.0✅GMLIB不可用切换到LSE api,虚拟玩家列表,计分板同步,存档新建玩家失效
26.205.2.3✅可用,GMLIB未加载时自动采用LSE最新api,详见更新内容,但LSE0.19.4计分板bug无法同步。

二、插件安装(版本升级请查看对应更新内容)
  1. 【可选但推荐】安装前置插件GMLIB0.13.5及GMLIB-LegacyRemoteCallApi0.13.3以上。
  2. 【旧版本】GMLIB-LegacyRemoteCallApi v1.4.0版本 请替换 GMLIB_API-JS.js为群内的版本,以正确启用虚拟玩家列表。(或者自己修改LRCA的脚本把FakeList三个相关导入从GMLIB_API改为GMLib_ServerAPI)
  3. BDS安装路径不能有中文。
  4. 安装WS协调服务端(CoordinationWss):
    - (二选一)独立运行:电脑安装 `nodejs` , 在插件目录使用cmd命令 `node s.js` 启动WS协调服务端。
    - (二选一)作为LSE插件运行:将 `CoordinationWss` 文件夹放到主服plugins目录下。
  5. 安装WS协调客户端(CoordinationWsc):
    将 `CoordinationWsc` 文件夹放到主服和副服plugins目录下(所有服都要装,所有BDS都将作为WS客户端连接到WS协调服务端)。
  6. 启动BDS, 自动生成配置文件(不要复制配置文件,BDSUuid不可重复)(见插件目录data文件夹下)。
  7. 修改配置,指定主服(参考下文配置文件说明)。
    - 打开主服的./plugins/CoordinationWsc/data/WSClientConfig.json
    - 修改 `Websocket` 项目下的连接地址及其他配置
    - 修改 `SyncType` 一项为 `main`(指定此服为主服)
    - 打开副服的./plugins/CoordinationWsc/data/WSClientConfig.json
    - 修改 `Websocket` 项目下的连接配置,及其他配置
  8. 开放WS协调服务端(CoordinationWss)所在服务器的公网tcp9001端口。
  9. 重启所有服务器。
三、插件使用
  • `/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能够替代这些中的大部分功能
synclogic.png

​
wss.png


wsc.png
作者
10_27
价格
240.00金粒
下载
94
查看
4,672
首次发布
最后更新

评分

0.00 星 0 次评分

10_27 的其他资源

最新更新

  1. 5.2.3 修复BDSIp为空时的问题以及支持配置ipv6端口

    覆盖文件即可 新增:支持区分ipv6端口,添加了BDSPortV6的配置,若填空则为BDSPort+1 优化:移除了虚拟玩家列表onUnload时执行deleteAll...
  2. 5.2.2 采用最新LSE api尽可能替代GMLIB

    覆盖文件即可 感谢@子沐提供LSE版本的虚拟玩家列表及为LSE添加本插件必要的api。 本次更新针对lse api进行优化,以替代GMLIB。...
  3. 5.2.1 聊天与命令同步单独控制,数据库可选其他类型

    覆盖文件即可。 新增:服务器ip可设置为空字符串,代表与入服ip相同 新增:WSS插件配置项"PlayerTempDb": "sqlite3"...
后退
顶部 底部