
午夜灵魂支持添加至多 9 张自定义地图供玩家拓展游玩体验。地图内已简要说明自定义地图格式,本文将更详细地解明各步骤。
重要! 编者极力推荐在进行此步骤前进行存档备份以节省时间并避免损失
注意 为更好地适配日后官方地图的更新,我们建议您将自定义地图放置在很远的位置;姑且来看 X 与 Z 轴的绝对值均大于 12800 是较为理想的选择
在开始正式设置前,您需要将地形置入午夜灵魂存档内并确保游戏区域间的间隔大于 1000 格。您可以使用任意一种可行的方式来进行此步骤,编者实际使用过以下两种方案:
利用投影(Litematica)将地形导入存档
替换存档中的 region 文件
我们推荐您按照自己的需求选择执行的方案:前者需要一定的性能支持,但在导入小区域地形方面显著更优;若是地形周围本就是虚空或不需要其与原存档中周围的其他地形分隔,后者就是更好的选择。
关于投影站内已有诸多教程,本文将简单说明后者的操作方式:

如上图所示,在调试信息(F3)右侧可以找到当前区块的所属文件,所给示例中为 r.0.-1.mca
由于地形可能横跨多个文件存储,您需要在地形的四个角落分别查看一遍区块所属的文件
在原存档的 region 文件夹中找到地形所属的全部文件,将其复制
在午夜灵魂中,找到将导入的目标位置所属文件;注意,若是横跨多个文件存储的情形,也需要找到相对位置相同的几个所属文件
举例: 原地形处在 r.1.1.mca 与 r.1.0.mca 两个文件中,那么导入的目标位置所属文件就应是 r.x.y.mca 与 r.x.(y-1).mca,例如 r.32.32.mca 与 r.32.31.mca。作为参考,一般文件存储分界线坐标位置为 X 或 Z 轴上 512 的倍数附近。
将复制的文件粘贴到午夜灵魂的 region 文件夹中,并按照在第 4 步中确定的目标位置所属文件对其重命名,将原文件替换即可 重要: 如若被替换的文件中本来就有地形存在,那么其也将被替换,再次提醒注意备份!
注意 您必须填充所有信息,这里没有可选项
接下来,您需要运行 /function debug:0 并点击下方的“自定义”标签页,点击“编辑自定义地图”进入地图编辑房间。
身后的每一个木桶都代表一个自定义地图槽位,您需要按照身前玻璃板的格式在木桶里填充对应的物品;在侧边的橘色箱子内有标志物可供直接取用。

午夜灵魂采用强加载区块来判定游戏范围,本步骤即用于确定需要添加为强加载区块的区域。
由于 forceload 命令限制,单个加载区至多支持 256 个区块,我们推荐您在实际填写前使用下述指令提前测试是否可运行:
forceload add <x1> <z1> <x2> <z2> 在同一张地图中支持至多 3 个加载区,在不足 3 个时必须从左向右依次填充。读取时会读取物品名称,名称即为上述的 <x1> <z1> <x2> <z2>。 举例:64 64 128 128
地图中心将用于避免在玩家入场时错误地进入到其他地图,其并不要求精准位于地图中点。在该位置半径 1000 格内的入场点才会被视为有效点位(这也是前文要求游戏区域间的间隔大于 1000 格的原因)。
读取时会读取物品名称,名称为整数坐标 <x> <y> <z>。 举例:256 32 256
剩余的部分按照地图内的标识在对应位置进行填充即可,完成填充后您可以通过选中 调试面板-自定义-地图 中刚刚填充的槽位来浏览填充的信息。
接下来,您需要前往您的自定义地图位置并添加标记。您可以通过 调试面板-自定义-标记 找到标记生成器。这里介绍除游戏物件生成外的其他项目:
删除:将会删除掉半径 2 格内的所有游戏物件标记
上锁:将试图为周围 3×3×3 内的所有方块添加锁定标签,避免误存储物品
转向:仅对灵灯点位生效,会顺时针旋转其方向 90°;绿色粒子所示方向即为玩家在此入场/脱离垂死状态时的朝向
展示标记:启用后,将在所有标点位置显示提示粒子,同时在 y=120 处显示粒子
统计数量:统计半径 300 格内的点位个数
最终碎片点位数应大于之前所填充的碎片生成量,且至少有 7 个灵灯点位和 3 个传送门点位。
完成上述步骤后,选定该地图后就可进行游玩了。您也可以通过在 调试面板-自定义-地图 中启用“加入随机地图池”使选定随机地图时有概率抽取到自定义地图,该功能将自动过滤无效的自定义地图。
此外,若您想将该地图选择放置在大厅内,可以自行利用命令方块并输入以下指令:
function debug:sub/select {type:"map",num:"-X"} 其中 X 是自定义地图序号,按木桶从左至右的顺序分别为 1 至 9。
感谢您的阅读,本文到此结束。