-
Notifications
You must be signed in to change notification settings - Fork 5
Server Admin
服务端配置、图片占多少硬盘、备份要备哪些目录。
文件位置:
| 环境 | 路径 |
|---|---|
| 单人游戏 | 存档目录下的 serverconfig/mcphone-server.toml,每个存档一份
|
| 专用服务器 | serverconfig/mcphone-server.toml |
改完重进世界(或重启服务器)生效。
| 键 | 默认 | 范围 | 说明 |
|---|---|---|---|
allowFriendTeleport |
true |
— | 关闭后好友那一行的传送图标不再显示,服务端也拒绝传送请求。好友关系与聊天不受影响 |
allowChatImages |
true |
— | 关闭后输入栏左侧的图片键不再显示,服务端也拒收上传。已发送的图不删除,仍然可见——关掉的是"再发新的" |
chatImageMaxKb |
512 |
64–768 | 单张图片的 KB 上限。客户端按它压缩,服务端按它接收 |
这三项必须是服务端配置:客户端配置在每个玩家自己电脑上,用它来管"能不能传送"等于把规则交给被管的人。 服务端配置由服主一份说了算,NeoForge 会在玩家连入时同步给客户端,因此界面能据此提前隐藏按钮,而真正的拦截仍在服务端——界面只是不给入口,伪造客户端照样发得出包。
最坏情况 = chatImageMaxKb × 20 × 好友对数。
每对会话最多保留 20 张不同的图,所以每对好友封顶是该值的 20 倍。默认 512 KB 即每对 10 MB;200 对常聊的好友是 2 GB 上限。
实际远小于上限:Minecraft 的截图大片是天空与地形,长边压到 512 之后常常只有几 KB。上限卡的是满屏噪点的画面(雨天、粒子)以及动图——动图是所有帧拼成一张,因此最吃这个上限。
图片按内容存储(文件名为"会话键 + 图片字节"的哈希),因此同一张表情在同一对好友之间发一百次,硬盘上仍然只有一份,也只占那 20 个名额中的一个。
| 想怎么调 | 结果 |
|---|---|
调小 chatImageMaxKb
|
客户端自动降一档尺寸重压,图变糊;动图先掉帧、再不行退成一张静态图。功能不坏,画质让路。128 KB 大致是每对 2.5 MB |
| 调大 | 图更清楚、动图更流畅,硬盘与带宽跟着涨 |
| 完全关闭 |
allowChatImages = false,已发送的仍然可见 |
上限 768 KB 是硬的:再往上就顶到原版"服务端发给客户端"那 1 MB 的包上限。
服务器启动时会扫描一遍图片仓,删除没有任何消息认领的文件(写完文件、消息尚未落盘就崩溃会留下这种孤儿)。
做备份时要知道:
| 数据 | 位置 | 随什么走 |
|---|---|---|
| 好友关系、聊天记录 | 世界存档的 data/
|
存档 |
| 聊天里发的图片 | 世界存档的 mcphone/chat-images/
|
存档 |
| 笔记、已购 App、唱片仓、终端卡槽、壁纸选择、未读标记 | 玩家数据(playerdata/) |
存档 + 玩家 |
| App 安装状态与主屏排列 | 客户端 config/mcphone/installed/<存档>.json
|
玩家自己的客户端 |
| 书架收藏 | 客户端 config/mcphone/reader/shelf.json
|
玩家自己的客户端,全局一份不分存档 |
| 表情包 | 客户端 config/mcphone/stickers/
|
玩家自己的客户端,全局一份不分存档 |
| 客户端设置(字色、界面大小、快捷键、HUD) | 客户端 config/mcphone-client.toml
|
玩家自己的客户端 |
前三行在服务器上,删存档即丢失;后四行在玩家自己电脑上,服务器备份不包含它们。
MCphone 会在方块注册的末尾,把 Integrated Dynamics 全部方块的掉落表提前解析一次。
这不改变任何掉落行为,也不给玩家多出任何功能——它的作用是让别人的崩溃能被正确指认。
成因:NeoForge 的注册阶段只要收到任何一个模组抛出的异常,就会把整个注册表回滚成原版状态;而回滚过程本身会在 Integrated Dynamics 的墙上火把处踩到一个空指针,于是真正的错误被顶掉,崩溃报告上只剩一句
Trying to access unbound value: integrateddynamics:menril_torch_stone
看起来像是 Integrated Dynamics 的问题,实际上它只是最后一个倒下的。提前解析一次即可绕开那个空指针,使回滚正常完成并抛出真正的原因。
这不会救回服务器:起不来还是起不来,它只让崩溃报告指认对人。
细节写在 compat/IntegratedDynamicsCompat.java 的类注释里。未安装该模组时,这段代码一行都不会执行。