- 版权类型
- 原创
- 版权链接
- #
- 语言支持
- 简体中文
- 前置组件
- 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/releases
GMLIB-LegacyRemoteCallApi(GitHub) - https://github.com/GroupMountain/GMLIB-LegacyRemoteCallApi/releases
- 适配版本(基岩)
- 最新版本

======================================
# 本插件已重构,移步 CoordinationWss - WS协调服务端
======================================
# 开源地址: Gitee - LLSE-WS协调服务器端
# 在此感谢插件 WSClient-Sync 的开源代码,本插件借鉴了玩家数据保存与读取的代码(
# 在此感谢 Tsubasa6848 帮助开发离线读写NBT的前置api,使跨服同步的玩家数据安全性有了极大保障。
# 作者:Wn1027
# 不要在评价区反馈bug,反馈bug请到讨论/反馈区,
# 本插件反馈QQ群: 311860068
# 众开发者插件定制群:799946510
开发契机:开个背包互通的资源服,专供玩家挖矿、探索遗迹、末地。解决主服资源枯竭,存档容量暴增等问题,可持续发展。
======================================
十分重要:安装插件以及敏感操作前 务必备份 已有存档及插件数据!!
======================================
一、 插件功能
1、跨服玩家数据同步(主副服中心同步)
2、跨服跨存档聊天(单人存档、服务器均可)
3、跨服传送(所有连接云端的服务器均可在线互传)
4、平面&立体像素画生成(已失效)
【1.0.0】 本插件初期用于实现MC原版自带的Websocket功能,实现跨设备云端聊天、像素画功能。
【2.0.0】后利用LLSE api,实现单人存档、服务器存档或多设备游戏云端聊天。
【3.0.0】经过升级,现提供一种主服务器—资源服务器玩家同步的解决方案。实现跨服同步,同步内容与WSClient-Sync插件相同。
【4.0.0】优化代码结构,调用离线读写玩家数据的api,使玩家同步功能稳定性上升一个档次。
二、插件安装(版本升级请查看对应更新内容)
- 检查环境:确保安装lse-nodejs引擎(lip install --upgrade gitea.litebds.com/LiteLDev/legacy-script-engine-nodejs)。
- 解压后有 WS服务端插件(chatwss_Server) 和 WS客户端插件(chatwsc_Client)
- 服务端插件(chatwss_Server) 放到主服务器 ./plugins/下,客户端插件(chatwsc_Client)放到附属服务器./plugins/下,
- 将文件夹chatwss_Server、chatwsc_Client重命名为chatwss。
- 两个服务器都开服,生成配置文件(见两个服务器各自的目录 ./plugins/chatwss/ClientConfig.json)(如果开服时因网络原因npm安装不幸卡住或报错,比如含有报错Error: Cannot find module “ws”,可以在这里下载依赖包,解压到./plugins/chatwss/下然后重启,WS服务端客户端通用)
- 打开主服务器 和 附属服务器配置文件(ClientConfig.json),设置以下键值,其他可按需配置。
默认设置下,必须要将其中一个服务器设为主服(“main”),只设一个,不要多了!
WS服务端配置"SyncInventoryDB"为”外置中心数据库“的情况下,所有服务器都设为“sub”
[TABLE=collapse]
[TR]
[TD]键[/TD]
[TD]值[/TD]
[/TR]
[TR]
[TD]“ConnectUrl”[/TD]
[TD]Websocket服务端地址(主服务器IP)ws://127.0.0.1:9001 默认端口9001,优先本地局域网ip,然后公网ip。[/TD]
[/TR]
[TR]
[TD]"ServerName"[/TD]
[TD]服务器名称(可以为中文,例如“资源世界”,默认为存档名)[/TD]
[/TR]
[TR]
[TD]“BDSIp”[/TD]
[TD]本服公网IP地址[/TD]
[/TR]
[TR]
[TD]“BDSPort”[/TD]
[TD]本服公网端口[/TD]
[/TR]
[TR]
[TD]“ServerType”[/TD]
[TD]服务器类型 "sub": 附属服务器, “main”:主服务器[/TD]
[/TR]
[/TABLE]
JavaScript:let WSSConfig = { "CONFIG": "此为Websocket协调服务端配置文件", "Websocket": { "ServerName": "WS协调服务端", // WS协调服务端名称 "Port": 9001, // WS协调服务端端口 "ConnectKey": "FlySteve", // WS协调服务端连接密钥 }, "Chat": { "chatDisplay": true, // WS协调服务端控制台聊天显示 "chatLog": true, // 聊天日志, 记录所有玩家聊天日志到./log/chatwss/PlayerChat/ "chatHeader": "", // 聊天前缀, 玩家在聊天内容开头添加此字符进行云端聊天。 "tipHeader": "§d『§b${ServerName}§d』§r", // 聊天显示头衔, ${ServerName} 替换为WS协调服务端名称。 }, "MapDrawing":{ "imgFilePath": "./plugins/CustomMap/.img" // CustomGetMap图片库路径 ./plugins/CustomMap/.img }, "Sync": { "SyncInventoryDB": "主服存档", // 跨服同步:玩家数据库保存位置: '主服存档'[S], '外置中心数据库 (4.5.1版本已失效)'[/S] "SyncInventoryDBPath": "./plugins/chatwss", // 跨服同步:插件数据路径 "BackupTime": "0 0 22 * * *", // 外置中心数据库备份时间(Cron表达式,默认每晚22:00) "BackupDir": "./backup/chatwss", // 外置中心数据库备份路径 "BackupRemainDays": 15, // 外置中心数据库备份留存天数。 "SyncMode": "center", // 跨服同步:(此配置无效)中心同步: 'center' 分布式同步:'distributed' } }
JSON:{ "CONFIG": "此为Websocket客户端配置文件", // Websocket网络 "ConnectUrl": "ws://127.0.0.1:9001", // 要连接的Websocket地址,优先本地局域网ip(请填写此项) "ConnectKey": "FlySteve", // 连接密钥 "BDSUid": "84b967ab295e4d358c20de29ce68788b", // BDS唯一识别名(每个服务器一个, 不能重复, 不可擅自修改") "BDSIp": getPublicIP(), // 本服公网IP地址(请核对此项) "BDSPort": BDSPort, // 本服公网端口(请核对此项) // 聊天配置 "ServerName": Levelname, // 服务器名称 (默认为存档名) & 提示信息前缀 "ChatWSDisplay": false, // WS控制台聊天显示 "ExecutorLevel": 1, // 云端./命令执行权限: 1为仅op可执行./命令, 0为任何在线玩家都可执行 // 玩家数据同步配置 "SyncConfig":{ "Enabled": true, // 同步功能总开关 "PlayerDbDir": "./plugins/chatwss/PlayerData", // 玩家数据库路径 "PlayerDbFormat": "leveldb", // 玩家数据储存格式('leveldb' or 'json') "BackupTime": "0 0 22 * * *", // 玩家数据备份时间(Cron表达式) (默认是每晚十点备份一次) (务必与存档备份时间同步) "BackupDir": "./backup/chatwss", // 玩家数据备份路径(时间上跟随存档备份) "BackupRemainDays": 15, // 玩家数据备份留存天数:数据量不大,可以适当多存点 "ServerType": 'sub', // BDS类型, 用于玩家数据同步, 'sub'BDS 向 'main'BDS 同步 "SafeLeftMode" : true, // 安全退出模式:上次玩家从服务器非正常退出(onLeft(pl)没有监听到), 则该玩家必须先登录上次服务器。 "AllowCreateNewPlayer": true, // 是否允许在存档新建玩家。(新玩家登录副服不用传送主服) "AutoSyncCycle": 30000, // 自动同步周期(ms) "SyncOption": { // 玩家数据同步选项(这里是本服作为同步数据接收方的同步项开关) "syncInventory": true, // 跨服背包 "syncLLMoney": true, // 跨服LLMoney(实时同步,请先手动同步一次:复制粘贴./plugins/LegacyMoney/economy.db.db) "syncScoreboard": [], // 跨服计分板,填入想要同步的计分项(非实时同步,跟随背包同步) "syncTags": true, // 跨服Tag "syncEnderChest": true, // 跨服末影箱 "syncLevel": true, // 跨服经验等级 "syncEffects": false, // 跨服药水效果 "syncCmd": ["allowlist", "whitelist"] // 同步执行的命令(主服执行,则其他服也同步执行); } } }
- 开放协调服务端(chatwss_Server)所在的云服务器防火墙tcp9001端口,供Websocket通信(默认9001端口,如有需要在main3d.js中修改)
- 重启所有服务器,等待副服连接主服。内网穿透(映射tcp9001)可能连接不上,如有解决方法欢迎进群反馈)。
- 建议加入反馈群(311860068)咨询服务器维护问题。
- 已导出PAPI变量:在线玩家数量: %wss_onlinePlayersNum% 在线玩家列表:%wss_onlinePlayers%
- 如有GMLIB依赖冲突或Fail import报错,可删除GMLIB-LegacyRemoteCallApi/manifest.json里的"passive": true一项。
WS服务端插件(chatwss_Server) 已整合本地客户端,主服务器安装chatwss_Server后无需再安装chatwsc_Client。
WS协调服务端(chatwss_Server) 可作为独立程序运行,可以单独放在另一台有公网ip的电脑上:
# 在Nodejs官网下载并安装Nodejs环境。
# 在package.json所在目录执行控制台命令 npm install --registry=https://registry.npmmirror.com 自动安装相关依赖包。
# 点击startWsserver.bat运行WS协调服务端。
# BDS、单人存档均可连接到此WS服务端。
# 服务端命令: 输入help查看。其中有命令,可以将外置数据库的所有玩家数据同步到连接的所有BDS,操作前务必备份所有BDS存档。
三、(重要)服主维护操作说明
- 服务器关闭:
推荐用sync stop命令代替原版stop命令。此命令会使玩家都正常退出,将数据同步后再自动关闭服务器。(防止掉线玩家被置为意外退出状态)
(如副服断开了WS协调服务器,将持续断线重连,期间阻止玩家登录,已在线的玩家不受影响。如果开启了LLMoney实时同步,为防止失去同步,如果主服断开,其他服的玩家都会被踢出游戏。) - 存档备份:
请修改主服务器的客户端(ClientConfig.json)配置文件,使主数据库备份时间与存档备份时间同步
请修改WS协调服务端(WSSConfig.json)配置文件,使外置中心数据库备份时间与存档备份时间同步
默认每晚10点(22点)备份一次,请自行修改。
(修改配置文件中的BackupTime,使用Cron表达式,不可以有?号。备份路径在 ./backup/chatwss/下) - BDS升级
最好不要将./plugins/LeviLamina/data内的文件删除或替换掉。里面记录着所有进服玩家的名字、xuid、uuid信息。 - 服务器回档:
请将存档回档,然后将./backup/chatwss/下对应的数据库还原。 - 插件文件目录:
[TABLE=collapse,noborder]
[TR]
[TD]文件项目[/TD]
[TD]目录或文件[/TD]
[/TR]
[TR]
[TD]插件本体(服务端)[/TD]
[TD]./plugins/chatwss/main3d.js[/TD]
[/TR]
[TR]
[TD]插件本体(客户端)[/TD]
[TD]./plugins/chatwsc/ChatWsClient_node.js[/TD]
[/TR]
[TR]
[TD]WS服务端配置文件[/TD]
[TD]./plugins/chatwss/WSSConfig.json[/TD]
[/TR]
[TR]
[TD]WS客户端配置文件[/TD]
[TD]./plugins/chatwss/ClientConfig.json[/TD]
[/TR]
[TR]
[TD]玩家缓存数据(存有玩家最近一次上线的状态信息,无意外退出状态可删)[/TD]
[TD]./plugins/chatwss/playerData/[/TD]
[/TR]
[TR]
[TD]外置中心数据库(存有玩家背包数据,十分重要)[/TD]
[TD]./plugins/chatwss/CENTERDATA[/TD]
[/TR]
[TR]
[TD]外置中心数据库缓存(存有玩家最近一次上线的状态信息,无意外退出状态可删)[/TD]
[TD]./plugins/chatwss/CENTERTemp[/TD]
[/TR]
[TR]
[TD]导出的玩家数据[/TD]
[TD]./plugins/chatwss/export/[/TD]
[/TR]
[TR]
[TD]WS服务端玩家聊天日志[/TD]
[TD]./logs/chatwss/PlayerChat/[/TD]
[/TR]
[TR]
[TD]备份[/TD]
[TD]./backup/chatwss/[/TD]
[/TR]
[/TABLE]
- 卸载本插件:
确认所有服务器开服后都没有玩家处于意外退出状态的warn提示,然后就可以删除本插件。
本插件不存储玩家存档数据(主服存档模式,非外置数据库),可放心删除插件。
卸载后玩家背包等数据以主服为准,副服数据不一定是最新的。
- 云端聊天
玩家单人存档使用connect命令,
BDS服务器使用本插件客户端均可连接到主服务器服务端,跨服跨存档即时聊天。
- 云端命令
云端./命令默认仅OP可使用,输入./help查看帮助。对于BDS服务器连接,可修改配置文件使服务器内其他人也可以使用云端命令。
输入 .online 可以显示在线的云端连接,不受op限制。
- 像素地图画生成(此功能暂无法使用)
(1)如果你使用CustomGetMap自定义地图画插件,那么你应该知道什么是地图画,
(2)不同的是,CustomMap是修改存档数据,而本插件是仅利用原版特性,放置方块到世界中形成像素画。
(3)注意:本功能会在世界中放置大量方块,请务必提前备份存档 或在单人存档连接协调服务器后测试。
(4)将裁剪后的图片(.jpg)置于./plugin/CustomMap/.img/目录下,
(5)可选择平面、立体两种生成模式。平面可用颜色少,立体可用颜色为3倍,但体积将会巨大,推荐在超平坦世界玩立体地图画。
(6)命令:OP玩家输入 ./paint 图片名.jpg [flat(平面)|uneven(立体)] [步长:32-128的数字]
- 跨服同步
(1)跨服玩家数据同步: (在各服务器的ClientConfig.json 中配置,各服务器配置务必保持一致)
(2)基本同步逻辑:所有 附属服务器 以主服务器或外置中心数据库为准进行同步。
(3)跨服同步逻辑:见插件图片。
- 注册指令
【命令】sync list: 列出同步服务器所有玩家
【命令】sync list num: 返回同步服务器的玩家数量
【命令】sync reload: 重载跨服同步选项
【命令】sync transfer:传送至同步服务器
【命令】sync transfer <BDSIp> <BDSPort>:传送至任意服务器
【命令】sync backup: 备份玩家数据
【命令】sync stop:请使用此命令替换原版 stop命令, 将所有玩家断开后再关闭服务器。
【命令】sync debug <true|false>: 开启和关闭debug模式
以下命令无法确保导出存档所有玩家数据,计划废弃。
【命令】sync upload <realName|all>: 向主服存档/中心数据库上传玩家数据
【命令】sync export <realName|all>: 导出玩家数据
【命令】sync import <realName|all>: 导入玩家数据
【独立WS服务端命令】输入help查看。
# 插件图片
WS协调服务端也可独立运行:
协调服务端同步逻辑
#