WSClient-Sync ——可跨主机的群组服基础插件(暂停维护)

LLSE WSClient-Sync ——可跨主机的群组服基础插件(暂停维护) 1.6.40

Source of resources
Original
Copyright link
#
Language
English
Supported version
  1. All the versions
作者已跑路,插件没时间维护,但仍然能用(大概吧 ),有事+QQ1803422592

2022.7.22
新版本1.6.32已发布,修复许多玄学bug,改动很大无法一一列举
企鹅交流群号732562418,希望各位使用本插件的用户尽快加群,方便互相帮助与反馈问题等
1.6.32版本之后这个插件算是完善了,放心用
本插件各项功能均可单独开关

WSS1.6.29源代码链接https://github.com/xialiag/WebSockets_Server,担心后门的可以自己编译

[MD]

# ▶️WSClient-Sync 1.6.32更新后使用教程

***有问题群里提问回答(点击下方图标加群)***

***加群抢先体验新版本以及bug修复***

<a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=mNKF6IJNZGdYtLXfoo0Ze-Lmxvf_B43A&jump_from=webapi"><img border="1" src="https://q4.qlogo.cn/g?b=qq&nk=1803422592&s=140" alt="WSClient-Sync插件反馈交" title="WSClient-Sync插件反馈交流"></a>

---
## ?前置知识
- 本插件分为两部分,一部分是WSClient-Sync(js插件,简称为客户端),另一部分是WebSockets_Server(exe程序,简称为服务端)

---
## ?WSClient-Sync

使用方法:
1. 从[WSClient-Sync发布页](https://www.minebbs.com/resources/wsclient-sync.3334/)下载WSClient-Sync-Pack.zip并解压
2. 将WSClient-Sync.js复制到BDS的plugins目录下
3. 启动服务器,等待WSClient-Sync输出黄色warn提示后关闭服务器
4. 进入BDS/plugins/WSClient-Sync目录,打开config.json并按自己情况修改,保存后重新启动服务器
5. 如果服务器输出了"Connected WebSockets_server",恭喜你,插件连接上了服务端,可以进入游戏享受互通插件带来的乐趣了

### ?客户端配置文件

```json
{
"Synchronization_Options": {//同步配置项
"welcomeMessage": true,//是否启用入服欢迎
"syncMessage": true,//是否启用跨服消息
"syncInventory": true,//是否启用跨服背包
"syncLLMoney": true,//是否启用跨服LLMoney
"syncScoreboard": true,//是否启用跨服计分板
"syncTags": true,//是否启用跨服Tag
"syncEnderChest": true,//是否启用跨服末影箱
"syncLevel": true,//是否启用跨服经验
"syncEffects": true//是否启用跨服药水效果
},
"WS_Connection_Options": {//WebSockets连接配置项
"WSS_ip": "127.0.0.1",//WSS的ip
"WSS_port": 9001,//WSS的端口
"passwd": "WSClient_Sync",//WSS的密码
"HookFunction": false//使插件可以和bds同时保存玩家背包
},
"WS_Client_Options": {//插件配置项
"serverName": "MyServer",//本服务器名
"detectConnectionSec": 15,//WebSockets断连检测间隔,单位:秒
"savePlayerNBTTimingMin": 5,//自动保存玩家NBT信息间隔,单位:分
"consoleLoggerLevel": 4,//服务器控制台日志输出等级,见下方输出等级详解
"fileLoggerLevel": 0//日志文件记录等级,见下方输出等级详解
},
"inGameText": {//发生事件时在游戏中发送提示
"PlayerJoinText": "${Format.MinecoinGold}[+] ${Format.Aqua}${Message.playerRealName}${Format.MinecoinGold} joined server ${parseName(msg)}",//玩家进入服务器
"PlayerLeftText": "${Format.MinecoinGold}[-] ${Format.Aqua}${Message.playerRealName}${Format.MinecoinGold} left server ${parseName(msg)}",//玩家离开服务器
"SyncMessage": "[${Format.Aqua}${parseName(msg)}${Format.Clear}] ${Message.playerRealName} >> ${Message.message}",//跨服聊天
"ServerOffLineText": "",//服务器下线
"ServerOnLineText": "",//服务器上线
"SavePlayerNBTText": "",//保存玩家数据
"ReadPlayerNBTText": ""//应用玩家数据
},
"inConsoleText": {//发生事件时在控制台输出提示
"PlayerJoinText": "Player ${Message.playerRealName} joined server ${parseName(msg)}",//玩家进入服务器
"PlayerLeftText": "Player ${Message.playerRealName} left server ${parseName(msg)}",//玩家离开服务器
"SyncMessage": "[${parseName(msg)}] ${Message.playerRealName} >> ${Message.message}",//跨服聊天
"ServerOffLineText": "",//服务器下线
"ServerOnLineText": ""//服务器上线
}
}
```

| 日志输出等级 | 对应等级名称 |实际输出日志内容 |
| :---: | :---: | :---:|
| 0 | Silent | 不输出任何日志 |
| 1 | Fatal | 仅输出严重错误信息 |
| 2 | Error | 输出 严重错误、错误信息 |
| 3 | Warn | 输出严重错误、错误、警告信息 |
| 4 | Info | 输出 严重错误、错误、警告、提示信息 |
| 5 | Debug | 输出 严重错误、错误、警告、提示和调试信息 |


---

## ?WebSockets_Server

使用方法:
1. 从[WSClient-Sync发布页](https://www.minebbs.com/resources/wsclient-sync.3334/)下载WSClient-Sync-Pack.zip并解压
2. 将WebSockets_Server.exe与config.json复制到你选择的同一目录下
3. 打开config.json,按自己情况修改后保存
4. 双击WebSockets_Server运行服务端程序
5. 如果你的WSS控制台上出现了监听端口的提示,恭喜你,服务端程序搭建完成了

### ?服务端配置文件

```json
{
"port": 9001,//端口号,注意不能与其他应用占用同一个端口
"passwd": "WSClient_Sync",//密码,即使WSS的ip与端口暴露,只要密码不暴露,其他人就无法恶意接入你的WSS依靠同步刷取物品
"DevMode": false//是否在WSS控制台上展示客户端发来的消息
}
```

---

## ?控制台命令
根命令是wscsync,使用时在控制台输入根命令加次级命令,如:"wscsync list"
下面是次级命令列表
1. list "列出此服务器本地KVDB数据库中存储的玩家数据"
2. delete <玩家名> "删除此服务器本地KVDB数据库中存储的对应玩家数据,例如:wscsync delete xialiag"
3. packdb <玩家名> "将此服务器本地KVDB数据库中存储的指定玩家的数据打包为json格式,例如: wscsync packdb xialiag(打包好的json文件会存放在BDS目录/plugins/WSClient-Sync)"

---

## ❔常见问题 & 注意事项

- serverName尽量不要使用带有双冒号(::)或者井号(#)的字符串,插件依靠这两种字符的位置和分割判断消息类型、消息发送方以及消息正文,如果使用这两种字符**可能会造成插件无法使用**
- **客户端的serverName不能相同**,如果客户端重名,服务端会拒绝客户端设置名字的请求,对跨服同步功能没有影响,不过跨服消息和玩家入服退服时的消息来源会显示UNNAMED
- WSClient-Sync1.6.32更新之后,由使用json存储玩家背包数据改为使用KVDB数据库存储,无法像原来一样直接删除存储的玩家背包数据,所以client注册了个控制台命令来操作玩家背包数据,用法是: wscsync list ——列出所有玩家背包数据(仅列出插件记录下的本地玩家数据),wscsync delete 玩家名 ——删除玩家数据(仅删除插件记录下的本地玩家数据)
- 玩家有背包数据,但是插件没有保存下来其数据时,应让玩家先进入希望保存背包数据的服务器,保证插件保存下玩家背包数据,再让玩家进入其他服务器,防止**玩家背包数据被新服务器中空白背包数据覆盖**
- 此插件**不兼容对同步内容修改行为的插件**,如离线修改llmoney(主要取决于有没有其他插件同时修改玩家数据),可以在配置文件中关闭冲突的配置项
- json**不要用windows自带的记事本打开**,记事本会将文件编码格式改为BOM UTF-8,导致插件无法读取,推荐使用Visual Studio Code编辑文件,如果已经使用记事本打开配置文件,请删除配置文件后运行BDS,等待重新生成配置文件后再次修改并启动BDS
- 可同步addon物品,但**各个服务器都需要**加载这个addon,不然同步过去的物品无法写入nbt
- 同步失败先**检查LL有没有更新**
- 本插件没有服务器最大数量限制(~~ 通,都可以通 ~~)
- 服务端和客户端可同主机,客户端之间也可同主机
- 分布储存,容错率高,玩家数据以各**服务器间**插件最新记录下的为准


---

# ➕更新日志

- 2022.7.27 client-v1.6.33 server-v1.6.29
> client-v1.6.33 1. 新增控制台次级命令:packdb
> server-v1.6.29 1. 修复中文乱码 2. 修复客户端发送数据量过大时服务端主动断开连接

- 2022.7.29 client-v1.6.34
> client-v1.6.34 1. 修复玩家跨服时掉线导致的背包误覆盖

- 2022.8.26 client-v1.6.40 server-v1.6.34
> client-v1.6.39 1. 修复自动保存失效的问题 2. 新增自定义通知消息(可自定义控制台消息与游戏内消息) 3. 修复自动保存过快时玩家无法进入服务器的问题 4. 新增WSS异常处理(serverName设置失败自动使用GUID) 5.未监听到玩家退出时进行异常处理
> server-v1.6.34 1. 优化代码逻辑 2. 将超时时长调整为1200

---






[/MD]


最好能把bds配置文件里online-mode打开
有bug加作者qq1803422592反馈
加群加群732562418 orz
Author
xialiag
Price
80金粒
Downloads
254
Views
7,260
First release
Last update
Rating
4.92 star(s) 12 ratings

Share this resource

Latest updates

  1. update

    - client-v1.6.40 > client-v1.6.40 1.增加未监听到玩家退出时的异常处理(可防止崩服等情况造成的误覆盖) 2.删除dataLocker 3...
  2. update

    - 2022.8.26 client-v1.6.39 server-v1.6.32 > client-v1.6.39 1. 新增DataLocker 2. 新增HookFunction 3...
  3. 修复bug

    - 2022.7.29 client-v1.6.34 > client-v1.6.34 1. 修复玩家跨服时掉线导致的背包误覆盖

Latest reviews

是不是主副服都装那个js文件?然后有个bug,就是物品互通了消息出了问题不互通,这是报错:
02:16:40 ERROR [LiteLoader] Error occurred in setTimeout-Function
02:16:40 ERROR [LiteLoader] script::Exception: 'str' is not defined
at RCVGameText (WSClient-Sync-v1.6.40.js:738)
at <anonymous> (WSClient-Sync-v1.6.40.js:903)


02:16:40 ERROR [LiteLoader] In Plugin: WSClient-Sync
02:16:46 ERROR [LiteLoader] Error occurred in setTimeout-Function
02:16:46 ERROR [LiteLoader] script::Exception: 'str' is not defined
at RCVGameText (WSClient-Sync-v1.6.40.js:738)
at <anonymous> (WSClient-Sync-v1.6.40.js:903)


02:16:46 ERROR [LiteLoader] In Plugin: WSClient-Sync
02:16:59 INFO [WSClient-Sync] NBT data of player Passerby7302 was saved successfully
02:16:59 ERROR [LiteLoader] Error occurred in setTimeout-Function
02:16:59 ERROR [LiteLoader] script::Exception: 'str' is not defined
at RCVGameText (WSClient-Sync-v1.6.40.js:738)
at <anonymous> (WSClient-Sync-v1.6.40.js:864)
计分板不知道为什么,主服不能同步到次服,次服却可以同步到主服。
  • Deleted member
  • 5.00 star(s)
  • Version: 1.5.26
我发现这个不兼容llmoney转账,在b服务器(生存世界)离线转账给小明,小明从a服务器(主城世界)上线是金钱没变,大佬能不能解决这个问题
xialiag
xialiag
离线转账原理是在玩家没上线时保存修改,等玩家上线时应用修改。由于插件几乎是同步修改经济,也没啥办法修这个。
催更1.19
xialiag
xialiag
llse插件无需对应bds版本更新
大佬我一个机子开两个服,一个端口19132一个19133插件里面填的127.0.0.1:19133和127.0.0.1:19132但为什么总提示尝试连接
xialiag
xialiag
疫情待学校隔离来着,没办法看消息。插件的配置文件里填的不是mc的ip地址,是ws服务端的IP地址
报个bug:
玩家可以使用同一个账号登入不同设备,从而同时进入不同服务器,这样做的时候背包同步会出现异常
建议添加只允许在一个服务器上线的功能,代码我摸得还不是很清楚,比较保守地添加了这个功能,再改进一会儿发你=w=
感觉非常不错,不知道会不会出现丢数据问题,要用一段时间
xialiag
xialiag
感谢支持,这个版本的tag同步出了点问题,一直懒得修了,一会更新新版本,会增加配置文件的选项
为啥,有些时候服里玩家从一个有物品的服跨到一个没有物品的服,背包空白了,这是咋回事
xialiag
xialiag
这个版本目前测试没背包错误的bug,可能是玩家第一次上线在无物品的服务器,记录下了空背包并同步到了另一个服务器。还有一种可能是ll和lxl没更新,之前ll有playerJoin无法正常触发的bug。如果还是有问题的话加我qq我看下啥情况。