- Source of resources
- Original
- Copyright link
- #
- Language
- Chinese(Simplified)
- Supported version
- The latest version
远古资源,年久失修,源码丢失,请勿下载。
ElementSync 群组服系统
©2019-2022 StarElement Dev
©2019-2022 StarElement Dev
跨服聊天、经济同步、物品同步、网页面板、跨服传送、群服互通、QQ绑定、自助白名单、崩服重启、称号系统、排行榜系统、状态监控、数据统计、地图备份、跨服封禁等,总有你喜欢的功能!
欢迎进群交流 点击加入
欢迎进群交流 点击加入
ElementSync群组服系统可以将您的多个MCBE服务器组合起来,实现数据互通、玩家可自由跨服,并且支持Nukkit、BDS混搭!各服务器间使用DES算法加密通信,以保证数据安全性。ElementSync软件包包含LiteXLoader插件、Nukkit插件、Bedrock Dedicated Server启动器等一系列软件。
此项目最早源自 星元StarElement 服务器于2019年底开发的群服互通程序,起初仅供服务器内部使用,后经过多次迭代重构,功能逐渐完善,现已对外发布!
与WaterdogPE、Nemisys等群组服软件不同的是,ElementSync不会转发任何游戏数据包,无法做到无缝跨服,玩家仍需要使用原服务器端口加入游戏,ElementSync只负责游戏内容的同步,可以搭配上述软件使用。
目录
概述
功能
安装与使用
- 核心服务器 ElementSync
- BDS启动器 ElementServer
- LiteXLoader插件 ElementSync-LXL
- Nukkit插件 ElementSync-NK
- 网页面板 ElementSync-Panel
- QQ机器人
其他
文件列表
软件包内包含以下文件/文件夹:
文件名 | 说明 |
---|---|
www/ | 面板静态网站文件 |
ElementServer.jar | BDS启动器 |
ElementSync.jar | 群组服核心服务器 |
ElementSync.lxl.js | LiteXLoader插件 |
ElementSyncNK.jar | Nukkit插件 |
go-cqhttp.exe | go-cqhttp机器人框架 |
名词解释
在阅读本文前,请先查看以下名词解释,以下词语可能在文中经常提及。
名词 | 说明 |
---|---|
群组/群组系统 | 指由众多MCBE服务器组成的服务器群组,包含一个核心服务器和多个节点服务器,群组内聊天、末影箱、存款、称号、白名单等数据互通。 |
核心服务器 | 指通过ElementSync.jar文件启动的服务,负责对接面板、机器人以及各节点服务器数据中转等,此服务器离线时,群组内聊天等功能将不可用,但服务器不会崩溃。 |
节点服务器 | 指加入群组系统的各MCBE服务器实例,各节点服务器间聊天、白名单等数据同步。当核心服务器离线或不可用时,节点服务器每10秒尝试发起重连,直到成功建立连接。 |
服务器名 | 指节点服务器加入群组时使用的名称,由各节点自主设置,必须全局唯一,是各节点服务器间进行区分的唯一标记。 |
Token | 指节点服务器加入群组时使用的令牌,同时也是节点间通信的DES密钥,同一群组内token一致,为了安全起见请不定期更换token。 |
群组白名单 | 指保存在核心服务器上的玩家白名单,将阻止白名单以外的玩家加入任何一个节点服务器。节点服务器自身的白名单优先级高于群组白名单,即不会影响MCBE服务器的原有的白名单。 |
群组黑名单 | 指保存在核心服务器上的玩家黑名单,将阻止黑名单中的玩家加入任何一个节点服务器。节点服务器自身的黑名单优先级高于群组黑名单,即不会影响MCBE服务器的封禁系统。 |
简介
ElementSync系统使用传统C/S结构搭建,核心服务器作为服务端,进行数据处理和转发,各MCBE节点服务器作为客户端。各节点只与核心服务器连接,节点间通信由核心服务器转发,当核心服务器离线时,节点将每10秒尝试发起重连。
系统设计之初为StarElement内部使用,目前无开源计划,且API部分设计较为。部分功能为适配服情而设计开发,功能性可能不适合一些服务器的情况。
功能差异
ElementSync群组目前支持BDS与Nukkit服务端,并支持混搭。由于两种核心的特性不同,所以支持的功能也有所不同。在系统设计时,将BDS作为生存服务器使用,Nukkit作为大厅、小游戏服务器使用。具体功能参见下表。
功能 | BDS | Nukkit |
---|---|---|
聊天互通 | 支持 | 支持 |
经济系统(存款) | 支持 | 不支持 |
末影箱互通 | 支持 | 不支持 |
跨服传送 | 支持 | 支持 |
次元聊天(群服互通) | 支持 | 支持 |
网页控制台 | 支持 | 支持 |
系统负载监控 | 支持 | 支持 |
崩服重启 | 支持 | 不支持 |
群组白名单 | 支持 | 支持 |
群组黑名单 | 支持 | 支持 |
在线时长统计 | 支持 | 支持 |
挖掘数量统计 | 支持 | 不支持 |
活跃度统计 | 支持 | 支持 |
称号系统 | 支持 | 支持 |
天气锁定 | 不支持 | 支持 |
禁止攻击(打人) | 不支持 | 支持 |
模式锁定 | 不支持 | 支持 |
进服自动回城 | 不支持 | 支持 |
跨服聊天
玩家可以与在不同节点服务器上的玩家无缝交流,服务器内的聊天内容会被自动同步到群组内所有节点服务器。
次元聊天
启用QQ机器人功能后,在服务器内发送以"~"开头的聊天内容,将会被机器人转发到QQ群中,同样,在QQ群中发送以"~"开头的消息将被转发到服务器中。这个名字源自 星元StarElement 服务器早期的群服互通程序,沿用至今。
注意事项:
- 无需区分全角符号" ~ "与半角符号" ~ "。
- 在群内发送次元消息需绑定Xbox ID。详情见下文QQ机器人。
经济系统
ElementSync的经济同步以银行存款的形式实现,基于LLMoney经济核心。可以在服务器中打开银行界面,进行存款操作,并可以在任意节点服务器上进行提款。只有银行存款会计入经济排行榜。此功能只能在BDS服务器上使用。
命令:
- /bank (打开银行UI界面)
跨服传送
支持全GUI操作的跨服传送系统,玩家可以在群组中各个节点服务器间自由传送。并且,每个节点服务器支持配置多个连接地址。
命令:
- /tran (打开节点服务器列表)
- /tran <服务器名> (打开服务器连接地址列表,如果目标服务器有且仅有一个连接地址,将直接发起传送)
称号系统
支持同步的玩家称号系统,玩家称号将在聊天、次元聊天时显示。给予玩家称号须在网页面板进行操作。
物品同步
由于系统设计时目标为星元服务器内部使用,所以根据星元服情物品同步使用跨服末影箱实现。群组中的所有BDS服务器的末影箱均可互通。
注意事项:
- 如果在旧存档启用末影箱同步功能,存档原末影箱中的物品将消失。
排行榜
游戏中计入统计的数据共有3个榜单:在线时长、存款、挖掘方块数量。可通过QQ机器人查看榜单,详情参见QQ机器人
以下内容为群组服系统内各个软件的安装与使用,笔者默认您掌握安装和使用各种核心、加载器、插件的能力,以及知道如何运行Java程序和网站。涉及到以上的基础操作,本文中不再赘述。
注意事项: 2.5版本更新加密算法为AES256,在部分Linux系统上(如CentOS)由于jvm默认的熵池可能会因缺少系统噪声而阻塞进程,导致服务器间通信延迟极高。因此在Linux系统上运行时建议添加 -Djava.security.egd=file:/dev/urandom 启动参数。例如:
java -jar -Djava.security.egd=file:/dev/urandom ElementSync.jar
核心服务器 ElementSync
ElementSync服务是整个群组服系统的核心,负责存储玩家部分数据、转发节点服务器信息等,并连接网页面板和QQ机器人。该服务离线时群组内服务器将无法交换数据,面板和QQ机器人将不可用,但不会引发崩服。
运行环境:
- Java8_166或更高版本
- ElementSync.jar
- config.ini
- 首次启动时将生成配置文件并解压面板网站文件。需关闭服务端修改配置文件后再次启动。配置文件中带有详细的注释,按照说明填写即可。
- 首次启动时软件将尝试调用系统命令自动解压网站文件,如果系统缺失相关命令将自动解压失败,此时需要手动将www/文件夹复制到核心服务器根目录。
- 上条中的解压命令在Windows系统时为tar,在Linux系统时为unzip。
- 如果主机带宽较低,访问面板可能有较大延迟,面板可配合CDN使用。
文件名称 | 说明 |
---|---|
active/ | 记录每日活跃玩家数据的文件夹 |
data/ | 保存玩家存款、在线时长、称号等数据的文件夹 |
enderChest/ | 保存玩家末影箱数据的文件夹 |
logs/ | 系统日志 |
panel/ | 面板用户数据 |
www/ | 面板网页文件 |
config.ini | 主配置文件 |
xbox.json | 玩家Xbox与QQ号的绑定数据 |
BDS启动器 ElementServer
通过ElementServer启动器使用BDS,可以远程查看控制台并输入命令,并支持监控系统负载、备份地图、崩服重启。需搭配ElementSync-LXL插件使用。
运行环境:
- Java8_166或更高版本
- ElementServer.jar
- config.ini
- address.ini
- 将主体文件放入BDS服务器根目录后启动。
- 首次启动时将生成配置文件,需关闭启动器修改配置文件后再次启动。配置文件中带有详细的注释,按照说明填写即可。address.ini的编写方式请参考 配置文件: address.ini
- 启动器支持在安装了wine的Linux系统上启动Windows版BDS,此时需要将config.ini文件中的启动命令修改为wine命令。
- 备份功能使用系统命令tar实现,如果系统中缺失该命令,备份功能将不可用。
- 关服时不要直接点击X关闭窗口,否则内部BDS进程不会结束。
文件结构:
文件名称 | 说明 |
---|---|
backups/ | 保存地图备份的文件夹 |
config.ini | 主配置文件 |
address.ini | 跨服传送地址配置文件 |
命令系统:
命令 | 说明 |
---|---|
backup | 备份地图数据,只能在BDS关闭时使用 |
start | 启动BDS |
exit | 退出启动器 |
- 其他命令会被直接输入到BDS控制台
LXL插件 ElementSync-LXL
此插件负责BDS端游戏内容的同步,如聊天、末影箱、存款等,需搭配ElementServer启动器使用。
运行环境:
- LiteXLoader 0.5.8或更高版本
- ElementSync.lxl.js
- 无,相关设置通过ElementServer获取,无需手动设置。
- 放入BDS的plugins/文件夹,将插件安装即可。
- 需配合ElementServer启动器使用,单独安装无效果。
Nukkit插件 ElementSync-NK
此插件负责NK端游戏内容的同步,如聊天、末影箱、存款等。可单独使用。
运行环境:
- Java8_166或更高版本
- Nukkit API 1.0.0或更高版本
- ElementSyncNK.jar
- config.ini
- address.ini
- 放入NK端plugins/文件夹即可。首次启动时将生成配置文件,需关闭服务器修改配置文件后再次启动。配置文件中带有详细的注释,按照说明填写即可。address.ini的编写方式请参考 配置文件: address.ini
网页面板 ElementSync-Panel
可以通过网页面板来同一管理游戏数据、监控运行状态、修改玩家信息,并支持网页访问服务器控制台,无需登录远程桌面或SSH即可管理群组内所有服务器。
截图:
运行环境:
- ElementSync 2.0及更高版本或任意WEB程序。
- www/
- www/include/auth.js
- ElementSync服务器内置http服务,在配置文件中开启http功能即可。
- http://[ElementSync核心服务器IP]:[http端口]/login.html
- 面板的账户数据保存在ElementSync服务器根目录的panel/文件夹中。
- 创建用户:在文件夹中新建'用户名.usr'文件,并在文件内写入密码。
- 默认所有的用户都是管理员,拥有操作面板的所有权限。
- 如果ElementSync服务修改了端口号(非默认),同样需要修改www/include/auth.js文件中第4行的端口。
QQ机器人
运行环境:
- 支持onebot11标准的机器人框架。
安装方法:
- 机器人的安装使用方法请自行搜索。
- 编辑ElementSync核心服务器的配置文件,将机器人地址修改为已搭建好的机器人的正向WebSocket服务器地址。
- 将ElemetSync系统连接到机器人前,请先检查机器人的可用性(是否正确登录、账号是否被风控、机器人是否在群里,是否开启了正向WebSocket服务)。
- 由于腾讯可能随时暗改协议,无法保证此包内机器人框架的可用性,如果无法使用请自行下载最新版本。
在群内发送对应的关键词,即可使用相关功能
关键词 | 示例 | 功能说明 | 所需权限 |
---|---|---|---|
在线 | 在线 | 机器人将返回群组服内在线玩家的信息,包括当前在线总人数、所在的节点服务器、在线玩家的名称。 | 群员 |
绑定 + Xbox ID | 绑定 Ruok2333 | 将玩家的QQ号与Xbox ID绑定,已经绑定过的Xbox ID或QQ号禁止重复绑定 | 群员 |
以"~"开头的聊天内容 | ~OK兄弟们,全体目光向我看齐奥。 | 此聊天内容将被发送到群组服内,所有节点服务器内的全部玩家都可以读到此条信息。在游戏内使用此方法,同样可以将服内信息转发到群里 | 已绑定账号的群员 |
个人信息 | 个人信息 | 机器人将返回玩家信息,包括Xbox ID、在线时长、存款、肝帝指数、称号等 | 已绑定账号的群员 |
经济榜 | 经济榜、土豪榜 | 机器人将返回玩家存款排行榜的前10位玩家 | 群员 |
时长榜 | 时长榜、摸鱼榜 | 机器人将返回玩家在线时长排行榜的前10位玩家 | 群员 |
挖掘榜 | 挖掘榜、肝帝榜 | 机器人将返回玩家挖掘数量排行榜的前10位玩家 | 群员 |
解绑 | 解绑 | 解除玩家Xbox ID与QQ号的绑定,并移出群组白名单 | 已绑定账号的群员 |
退群动作 | 解除玩家Xbox ID与QQ号的绑定,移出群组白名单,并将退群信息发送到群里 | 群员 | |
状态 | 状态 | 机器人将返回各节点服务器的在线人数、运行状态、系统负载等信息 | 在聊天转发群中的群员 |
配置文件 address.ini
此文件中保存了节点服务器的连接信息,是从其他节点传送到此节点的时使用的游戏地址集合,以ini/properties的键值对格式编写(key=value),连接名=连接地址。考虑到存在NAT、内网穿透等多个连接地址第情况,所以支持填写多个地址。存在多个地址时每行一个。
示例:
INI:
电信A线=dx1.example.com:19132
电信B线=dx2.example.com:19133
联通C线=lt.example.com:25565
BGP多线=bgp.example.com:65535
注意事项:
- 键(连接名)可以使用§颜色代码,但 值(连接地址)不可以。
- 应确保所有的连接地址都可以正常加入游戏。
- 应确保所有的连接地址都指向此节点服务器。
Q/A
A:可以,网页面板全部为静态文件,可以使用任意的WEB程序且无需在同一主机上。需要注意的是,使用其他WEB程序时需要修改include/auth.js中第4行的连接地址为核心服务器地址。
A:每个节点只与核心服务器通信,节点间数据通过核心服务器转发,所以除了必要的游戏端口外,无需开放其他端口。
A:可以,只要网络能连接到核心服务器即可,甚至无需公网IP。
A:不可以,BDS服务端只安装ElementSync-LXL插件是没有任何效果的,需要配套使用。
A:在任何操作系统上配置文件都是以UTF-8编码的,请尝试用UTF-8保存所有的配置文件,如果问题仍然存在,再尝试使用其他编码格式。
A:不可以,软件设计之初并未考虑这种情况,服务器必须通过ElementSync服务来连接面板和机器人,只有一个服务器使用仍然需要搭建群组系统。
A:和使用Nukkit一样,下载并安装Java,使用java -jar 文件名 启动软件。
A:这大概率是由于WebSocket没有连接导致的,可以按F12查看控制台上的具体报错信息。需要注意的是,如果你修改了核心服务器的端口(非默认2233),或者端口是通过映射/内网穿透暴露在公网上的,需要按照上文中面板注意事项中的方法修改网页文件。
A:可以使用任意节点服务器的地址进入游戏,哪个服务器作为大厅使用,取决于您告知玩家们哪个服务器的地址。
技术支持
作者对正常使用、BUG等问题提供免费指导帮助。如需代替部署、安装更新等请见增值服务。
License
- LiteLoader GPL-3.0
- LiteXLoader GPL-3.0
- Nukkit GPL-3.0
- AdminLTE MIT
- Apache-log4j Apache-2.0
- Apache-commons-io Apache-2.0
- Apache-commons-exec Apache-2.0
- Gson Apache-2.0
- Java-WebSocket MIT
私货