MC Matrix 双向桥

MC Matrix 双向桥

必可活用于其他协议 #

每日碎碎念,「好想把腾迅的头拧下来」。

最近头热想把 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 支持的协议。