-
Notifications
You must be signed in to change notification settings - Fork 5
Server Admin
服务端配置、图片占多少硬盘、数据存在哪儿。
在存档的 serverconfig/mcphone-server.toml 里,目前三项:
| 项 | 默认 | 说明 |
|---|---|---|
allowFriendTeleport |
true |
关掉后好友那一行的传送图标不再显示,服务端也拒绝传送请求。好友关系与聊天不受影响 |
allowChatImages |
true |
关掉后输入栏左边那个图片键不再显示,服务端也拒收上传的图。已经发过的图不删,仍然看得见 |
chatImageMaxKb |
512 |
一张图最多多少 KB(64–768)。客户端按它压,服务端按它收。这个数直接换成硬盘,见下 |
最坏情况 = chatImageMaxKb × 20 × 好友对数。
每对会话最多留 20 张不同的图,所以每对好友封顶就是这个数的 20 倍——默认 512 KB 就是每对 10 MB,200 对常聊的好友是 2 GB 上限。
实际远小于它:Minecraft 的截图大片是天空与地形,512 长边压出来常常只有 1 KB;上限卡的是雨天、粒子那种满屏噪点的画面,以及动图(所有帧拼成一张,所以它才是最吃这个上限的)。
图片按内容存(文件名是"会话键 + 图片字节"的哈希),所以同一张表情在同一对好友之间发一百次,硬盘上仍然只有一份,也只占那 20 个名额里的一个。
嫌大就把 chatImageMaxKb 调小:调小之后客户端会自动降一档尺寸重压(图变糊),动图会先掉帧、再不行退成一张静态图——功能不会坏,只是画质让路。128 KB 大致是每对 2.5 MB。
彻底不想要就把 allowChatImages 关掉,已经发过的仍然看得见。
上限 768 KB 是硬的:再往上就顶到原版"服务端发给客户端"那 1 MB 的包上限了。
服务器启动时会扫一遍图片仓,删掉没有任何消息认领的文件(写完文件、消息还没落盘就崩了会留下这种孤儿)。
做备份时要知道:
| 数据 | 位置 | 随什么走 |
|---|---|---|
| 好友关系、聊天记录 | 世界存档的 data/
|
存档 |
| 聊天里发的图片 | 世界存档的 mcphone/chat-images/
|
存档 |
| 笔记、已购 App、唱片仓、壁纸选择、未读标记 | 玩家数据(playerdata/) |
存档 + 玩家 |
| App 安装状态与主屏排列 | 客户端 config/mcphone/installed/<存档>.json
|
玩家自己的客户端 |
| 书架收藏 | 客户端 config/mcphone/reader/shelf.json
|
玩家自己的客户端,全局一份不分存档 |
| 表情包 | 客户端 config/mcphone/stickers/
|
玩家自己的客户端,全局一份不分存档 |
前三行在服务器上,删存档就没了;后三行在玩家自己电脑上,服务器备份不包含它们。
MCphone 会在方块注册的末尾把 Integrated Dynamics 全部方块的掉落表提前解析一次。这不改变任何掉落行为,也不给玩家多出任何功能——它是为了让别人的崩溃能被正确指认。
NeoForge 的注册阶段只要收到任何一个模组抛的异常,就会把整个注册表回滚成原版状态;而回滚过程本身会在 ID 的墙上火把那里踩到一个空指针,于是真正的错误被顶掉,崩溃报告上只剩一句 Trying to access unbound value: integrateddynamics:menril_torch_stone——看起来像是 ID 的锅,其实 ID 只是最后一个倒下的。提前解析一次就绕开了那个空指针,回滚能正常跑完,把真凶抛出来。
这不会救回服务器,起不来还是起不来,它只让崩溃报告指认对人。细节写在 compat/IntegratedDynamicsCompat.java 的类注释里。没装 ID 时这段代码一行都不会执行。