客户端地图拓展
本节内容有同步视频教程>>点击查看
请在
GermPlugin的Config.yml内创建配置
客户端地图用于让客户端读取本地的世界区块文件, 并在服务端切换到指定世界时用本地地图补全渲染。运行时读取的位置是:
.minecraft/GermCache/worlds/<客户端地图名>/region/*.mca
其中<客户端地图名>对应下方配置里的world字段。
配置
ClientOptions:
ClientWorlds:
fuben1:
# 服务端世界名完全匹配
name: fuben1
# 也可以改用包含匹配,例如 match: _fuben1_
# match: _fuben1_
# 客户端 GermCache/worlds 下的地图文件夹名
world: world
name和match二选一即可。name要求服务端世界名完全一致,match只要求服务端世界名包含指定片段。
本地未加密调试
调试时不需要先加密。推荐流程是:
- 启动客户端,让萌芽创建
.minecraft/GermCache目录。 - 把地图放到
.minecraft/GermCache/worlds/<客户端地图名>/region/*.mca。 - 在服务端
Config.yml里配置ClientOptions.ClientWorlds,让服务端世界名匹配到这个客户端地图名。 - 重载配置或重新进服,再切换到对应世界测试。
新版不会在客户端启动时自动删除GermCache/worlds,所以未加密地图可以直接用于开发和测试。
uze 加密分发
.uze模式会把客户端地图从资源包中解出到GermCache/worlds,再交给地图区块加载器读取:
- 把地图放到客户端
.minecraft/GermCache/worlds/<客户端地图名>/region/*.mca。 - 在游戏内执行
/gp misc encrypt pack。 - 把生成的
mcpack.uze放入需要分发的资源包位置。 - 玩家加载资源时,萌芽会从
.uze中把worlds/...解出到GermCache/worlds供客户端地图读取。
mcpack.gip里看不到worlds是正常的。客户端地图应检查mcpack.uze,以及运行后客户端的GermCache/worlds。
folder 加密分发
folder模式也可以用于客户端地图。它会生成resourcepacks/GermMod下的.e加密文件;客户端资源加载时,萌芽会把其中真实路径为worlds/...的文件解密同步到GermCache/worlds。
推荐流程:
- 把地图放到客户端
.minecraft/GermCache/worlds/<客户端地图名>/region/*.mca。 - 在游戏内执行
/gp misc encrypt folder。 - 分发生成的
resourcepacks/GermMod加密目录。 - 玩家加载资源时,萌芽会把 folder 加密目录里的客户端地图同步到
GermCache/worlds。
客户端地图最终仍然需要落到GermCache/worlds。这是因为 Minecraft 地图区块读取链路使用文件方式读取.mca,不能像普通贴图那样直接从 zip 或资源流里读。
清理旧地图
客户端地图缓存清理不走服务端Config.yml。这是因为清理动作发生在客户端资源加载阶段,那个时候客户端可能还没有进入服务器,也就拿不到服务端下发的ClientOptions。
客户端版本号clientVersion包含dev时,会保留本地GermCache/worlds,方便开发服或测试客户端直接使用未加密地图:
clientVersion=dev
正式客户端的clientVersion不要包含dev。正式客户端资源加载时会清理旧的GermCache/worlds,然后再从mcpack.uze或resourcepacks/GermMod folder 加密目录同步客户端地图。
4.5.1 区块加载隔离
4.5.1 起,客户端地图的区块加载流程做了隔离处理,减少客户端地图区块对原版世界和实体加载流程的干扰。
如果使用客户端地图时遇到实体一闪一闪、实体状态被短暂覆盖之类的问题,请优先更新到 4.5.1 或更高版本。这个调整主要用于降低客户端地图加载区块时影响当前世界实体渲染的风险,不改变原有客户端地图配置入口。