必可活用于其他协议 #
每日碎碎念,「好想把腾迅的头拧下来」。
最近头热想把 Sorabot 用 onebot 标准重构下,清理下旧屎山。在看跨平台方案的时候看到了这个项目 MatterBridge 支持的协议叹为观止。文档比较全面,而且支持自己做 api。
我以前也找过 Matrix <-> Mc 的消息桥接方案,或者 widget ,官方插件库里是有一个项目的,但是太陈旧了、缺少维护,已经被废弃很久了。搭建可供参考的信息也非常少。
简单搜索下找到一个基于 MatterBridge 的,用于 MC 的通信实现 MatterLink 。
本篇日志旨在记录其搭建过程,比较简单。(又水一篇施工日志。)
成品图 #
背景介绍 #
- RLCraft 服务器,运行于 sugurip 。
- Matrix Synapse ,运行于 sumika。
本篇在 RLCraft 服务器中加入 Forge 模组 MatterLink 和在 sugurip 上启用MatterBridge。
启用 MatterBridge #
到仓库去下载对应环境下的releases。
chmod a+x matterbridge-1.25.2-linux-64bit
touch matterbridge.toml
./matterbridge-1.25.2-linux-64bit
修改 matterbridge.toml 配置,为 MatterLink 的 api 打开 gateway 。 更详细的 channel 配置参考这里
# matterbridge.toml
[matrix.100oj]
Server="https://matrix.100oj.com"
Login="Username"
Password="Password"
# 该项会被添加到转发消息(mc -> matrix)的文本前缀
RemoteNickFormat="💬 {NICK}> "
[[gateway]]
name="minecraft"
enable=true
#channel
[[gateway.inout]]
account="matrix.100oj"
channel="#bridge:100oj.com"
[api]
[api.matterlink]
BindAddress="127.0.0.1:4242"
Token=""
Buffer=1000
# 该项会被添加到转发消息(matrix -> mc)的文本前缀
RemoteNickFormat="{NICK}"
ShowJoinPart = true
[[gateway.inout]]
account="api.matterlink"
channel="api"
MatterBridge 的 service 基于 go ,会自动重载配置。
配置 MatterLink #
RLCraft 基于 1.12.2,下载对应版本的 MatterLink
MatterLink 可以通过启动后,在游戏中/控制台使用 /mcl reload
来重载配置文件。
包含四个配置文件
identities.hjson
认证信息,用于将 Matrix 用户绑定到 mc 游戏内用户。
绑定后的用户可以在 Matrix 聊天中执行 mc 命令。
不绑定也可以执行,只是权限节点不同。
并且绑定后在 Matrix 的聊天被转发时会使用游戏内名,而不是 Matrix 内名。
在 Matrix 房间中使用 !auth Username
来绑定,会在 mc 游戏内私信弹出一个 4 位数验证,验证成功即可。
matterlink.hjson
主要
用于配置转发哪些信息,比如是否转发死亡提示、成就提示、玩家进入离开、各个死亡情况用哪种提示、matrix 房间内聊天的样式等等。
配置项非常丰富,注释也写的很详细,这里就不全提了,建议自己去捣鼓。
commands.hjson 用于预制一些命令的缩写。
比如自带的映射
!tps -> /forge tps
!list -> /list
另外可以使用 !exec commands
来执行任意命令。(需要对应的权限。)
可以用到的地方比较多。
permissions.hjson
权限管理,在这里配置执行命令需要的权限。
配置好后使用 /mcl reload
来重载。
相似的项目还有 MatterCraft,也是基于 MatterBridge 的 MC 桥。
显然可以用于 discord、telegram、gitter 等所有 MatterBridge 支持的协议。