Skip to main content

MSSS – MnlSmile Scaffolding Server

MSSS 是一个用于快速架设 Scaffolding 中心服务器的 Python 异步框架。

MSSS 由一个没有工程经验的初学者开发,能基本应付日常游玩,但请谨慎用于生产环境。


特性

  • 开箱即用 – 几行代码即可启动一个完整的 Scaffolding 中心服务器。
  • 自动化 - 能将创建房间的过程自动化,可轻松把本地《我的世界》服务器接入众多启动器联机生态。
  • 协议可扩展 – 通过 @app.protocol('namespace:protocol') 装饰器即可注册自定义协议处理器。

安装

pip install msss

或者从源码安装:

git clone https://github.com/MnlSmile/MSSS.git
cd MSSS
pip install .

快速开始

以下示例启动一个监听 0.0.0.0:13659 的 Scaffolding 服务器,并假定《我的世界》服务器运行在 25565 端口。

import asyncio
import logging
import subprocess
from msss import Scaffolding

logging.basicConfig(level=logging.INFO)

app = Scaffolding(host='0.0.0.0', port=13659, mc_port=25565, checking_freq=0.1)
et_proc = subprocess.Popen(app.easytier('U/0000-0000-0000-0000', path='"./et/easytier-core"', extras=['--no-listener']), shell=True, stdout=open('./etlog', 'w', encoding='utf-8'))
asyncio.run(app.run())
et_proc.terminate()
et_proc.wait()

启动后,您的朋友们可以在启动器通过房间码 U/0000-0000-0000-0000 加入房间,然后在《我的世界》多人游戏中直接连接。

提示:app.easytier(房间码) 可以生成对应的 EasyTier 启动命令,详见下文。


注意事项

Terracotta 陶瓦联机 和 HMCL(内部调用 Terracotta 陶瓦联机)会扫描 c:server_port 协议返回的端口,校验其上是否运行着有效的《我的世界》服务器。
如果没有,Terracotta 陶瓦联机 和 HMCL 可能无法加入房间或者需要很长时间才能加入房间。


自定义协议处理器

使用 @app.protocol('命名空间:协议名') 装饰器即可注册自己的协议。
协议处理函数接收一个 SRequest 对象,可以返回多种类型的值(会自动编码为正确的响应格式)。如果编码不符合预期,也可以读取 req.body 获取原始字节数据。

@app.protocol('my:hello')
async def handle_hello(req:SRequest):
    # 解析客户端发送的 JSON 数据
    data = req.as_json()
    name = data.get('name', 'Guest')
    return {'message': f'Hello, {name}!'}

可选返回类型及默认行为:

  • None → 空响应
  • str → UTF-8 编码
  • bytes / bytearray → 按原样发送
  • BaseModel (Pydantic) → JSON 编码
  • SStrList → 按 \0 分隔的 Scaffolding 字符串列表
  • dict / list → JSON 编码

如果协议未注册,且您注册了 any 后备处理器,则会调用它;否则自动返回错误码 255。

与 EasyTier 集成

<Scaffolding>.easytier(code, path='./easytier-core', dhcp=True, extras=[]) 方法会根据房间码生成一个适用于 Windows 平台的命令。

  • code:Scaffolding 房间码,格式例如 U/AAAA-AAAA-AAAA-AAAA。
  • path:easytier-core 可执行文件的路径。
  • dhcp:是否让 EasyTier 自动分配虚拟 IP(强烈建议开启)。
  • extras:额外的命令行参数列表。

示例输出:

"./easytier-core" --network-name scaffolding-mc-AAAA-AAAA --network-secret AAAA-AAAA --hostname scaffolding-mc-server-13659 -p "https://etnode.zkitefly.eu.org/node1" -p "https://etnode.zkitefly.eu.org/node2" -d

默认行为

默认启用的心跳管理器会:

  • 监听 c:player_ping 协议,更新每位玩家的最后活跃时间。
  • 每隔 checking_freq 秒检查一次,将超过 llt 秒未发送心跳的客户端连接关闭并从玩家列表中移除。
  • 房主(host)不会被自动清理。

您可以在创建 Scaffolding 实例时调整这两个参数:

app = Scaffolding(..., llt=30.0, checking_freq=5.0)

协议实现参考

Scaffolding 官方协议


依赖项


许可证

本项目使用 MIT 许可证 发布。


相关链接

Metadata

Release files for msss 0.0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for msss 0.0.8
File Size Uploaded
msss-0.0.8.tar.gz 10.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for msss 0.0.8
File Interpreter ABI Platform
msss-0.0.8-py3-none-any.whl Python 3 none any Details

Total release size: 20.6 kB

Release files / msss-0.0.8.tar.gz

Download URL msss-0.0.8.tar.gz
Size 10.3 kB
Tags Source
SHA-256 checksum
How to use checksums
b0521dde63c463ead91751afa6ab242bd5499a22c367c84c1f92473b17d39740
BLAKE2b-256 checksum
How to use checksums
f257e47e4c1348a9b1d128c10dd2deb61fd12e5f997b500605cdbf5c4d4ee055
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / msss-0.0.8-py3-none-any.whl

Download URL msss-0.0.8-py3-none-any.whl
Size 10.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0420818ed9c7d1863c6a86609f42b85d1b43c84588b983b17f4c716c75f99740
BLAKE2b-256 checksum
How to use checksums
c2fb1fc10627a331db35d75c8681a214c1c92c59e1e2e7ad5deef9a3f4fb5d4c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release history Release notifications | RSS feed

This release

0.0.8 This release

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page