Webstone:通过 WebSocket 远程控制红石装置(Webstone)
Webstone 是一个 Minecraft 模组,允许玩家通过 WebSocket 协议远程控制游戏中的红石装置。它提供了一个 WebSocket 服务器,支持自定义配置和安全选项,并包含详细的 API 参考。
背景
这个模组灵感来源于 Fundy 的一个 YouTube 视频,他在视频中展示了一个可通过浏览器控制的自定义红石方块。由于这部分内容从未作为独立模组发布,Webstone 应运而生。
使用方法
Webstone 在端口 4321 上启动一个 WebSocket 服务器,允许你使用任何 WebSocket 客户端(例如 这个客户端 或托管在
在创造模式的“红石方块”标签页中可以找到 Webstone 远程方块(目前没有生存模式合成配方)。要注册方块,请用空手右键点击它(如果成功,你会在快捷栏上方看到消息)。要本地切换方块状态,请在潜行时右键点击方块。
合成配方
从 Webstone 1.0.1 开始,Webstone 远程方块可以在创造模式外合成:
配置选项
Webstone 有自己的配置文件,位于 .minecraft/config/webstone-config.toml。你可以设置以下选项:
| 键 | 默认值 | 描述 |
|---|---|---|
Passphrase |
"" |
用于仅允许授权用户连接的密码短语。 |
WebSocketPort |
4321 |
Webstone WebSocket 服务器使用的端口。 |
SecureWebSocket |
false |
指定 WebSocket 是否使用安全连接。 |
CertificateFilename |
cert.pem |
证书公钥在 .minecraft/data 中的文件名。 |
CertificateKeyFilename |
key.pem |
证书私钥在 .minecraft/data 中的文件名。 |
CertificateKeyPass |
"" |
用于私钥的密码短语。 |
API 参考
服务器 → 客户端
如果 WebSocket 服务器需要密码短语才能连接,客户端需要在 Sec-WebSocket-Protocol 头中以十六进制字符串形式提供。使用 JavaScript,你可以在创建 WebSocket 实例时将其作为第二个参数添加到数组中:
const socket = new WebSocket('ws://<IP 地址或 FQDN>:4321', ['<你的密码短语>']);已复制!
连接时,客户端会收到当前已注册方块列表(包括显示名称、当前激活状态、输出信号强度和分配的组 ID,如果有的话)以及方块组信息。
示例 JSON 数据:
block_list:包含方块 ID、名称、功率、激活状态和组 ID。block_groups:包含组 ID、名称和方块 ID 列表。
如果任何方块或组更新,数据将广播给所有连接的客户端。
客户端 → 服务器
方块管理
- 设置方块激活状态:使用
block_state类型,包含blockId和powered(true 或 false)。 - 设置方块输出信号强度:使用
block_power类型,包含blockId和power(0 到 15 之间的值)。 - 设置方块显示名称:使用
rename_block类型,包含blockId和name。 - 从 Web UI 删除方块:使用
unregister_block类型,包含blockId。 - 添加或移除方块到/从组:使用
change_group类型,包含blockId和groupId。 - 在组内移动方块位置:使用
move_block类型,包含blockId和newIndex(仅当方块已分配到组时生效)。
组管理
- 创建新组:使用
create_group类型,包含name。 - 重命名组:使用
create_group类型,包含groupId和name。 - 删除组:使用
delete_group类型,包含groupId。 - 在组列表中移动组位置:使用
move_group类型,包含groupId和newIndex。
安全性
在 Webstone 1.0.2 中,添加了两个安全选项:连接 WebSocket 服务器所需的可选密码短语,以及使用 SSL 证书的安全 WebSocket 支持。
密码短语
为了保护服务器免受未经授权的访问,你可以添加一个可选密码短语,客户端在连接前需要提交。此密码短语使用 Bcrypt 哈希存储,因此无需以明文形式保存。
生成 Bcrypt 哈希的方法(例如在基于 Debian 的系统上使用 mkpasswd 命令),然后将结果添加到配置文件的 Passphrase 键中。
连接时,客户端需要在 Sec-WebSocket-Protocol 头中设置十六进制编码的密码短语,否则连接将被拒绝。
使用 TLS 的安全 WebSocket
默认情况下,WebSocket 服务器和客户端之间的流量未加密。要加密流量,你需要一个域名和该域名的 SSL 证书,包括私钥和公钥。两个密钥需分别存储在 .minecraft/data 中作为 cert.pem(公钥)和 key.pem(私钥)。如果私钥需要自己的密码短语,可以在配置中设置 CertificateKeyPass 键。
要启用或禁用安全 WebSocket,请将 SecureWebSocket 键设置为 true 或 false。
支持与兼容性
目前仅支持 Forge。欢迎将此模组移植到其他模组加载器,但请明确注明此项目为原始来源。
模组已在 Minecraft 1.20.1 上测试,但也应适用于更新版本。它可能或可能不适用于旧版 Minecraft。
致谢
- Fundy:原始创意和纹理(可能)
- Kaupenjoe:创建教程系列,使这个模组成为可能
截图:
收录




