跳到主要内容

配置文件指南

MagmaCore 的共享配置加载器会在应用默认值前拒绝无法读取或无效的 YAML,包括继承的配置。共享保存流程会先写入临时文件并同步到磁盘,再替换目标文件;支持时使用原子替换。在 Windows 上,如果杀毒软件或文件索引器等其他进程短暂占用该文件,导致替换被拒绝,保存最多会再重试四次,总等待时间不超过 250 毫秒。保存错误会传递给调用方,请先解决文件问题再重试。

本页面帮助您了解如何正确编辑 .yml (.yaml) 文件。Nightbreak 插件使用 .yml 配置文件。无效的 YAML 或不受支持的值可能导致文件无法加载;部分设置会回退到默认值。请保留备份,并在重新加载后查看控制台。

下面您将找到每种配置条目类型以及在修改任何值时应如何格式化它们。

如何编辑 .yml 文件​

文件以 .yml 文件格式存储,Notepad++ 是推荐用于配置工作的文件编辑软件。当然,您也可以使用您选择的任何其他文本编辑器。

已停用的配置文件​

当插件更新停用某种配置格式时,MagmaCore 会将匹配的文件移至 plugins/MagmaCore/outdated files/<PluginName>/<archive batch>/,保留原内容和相对路径。控制台会报告归档位置。内容导入前后也会执行这项处理,防止旧包悄悄将已停用的文件恢复为活动配置。内容导入还会把更新后的包不再附带的文件移入这个文件夹;参见更新后的包不再附带的文件。

如果有替代文件,插件会重新生成内置默认配置。已停用的 DLC 文件需要更新内容包。自定义文件需要按当前格式重写;请将归档文件与相应参考文档对照,迁移您需要的设置。原样恢复归档文件可能导致它再次被归档。

归档使用所属插件提供的特定规则。未知设置或格式错误本身并不能证明文件使用了已停用的格式。仍需检查控制台中的普通加载错误。

有些规则停用的是旧的内置默认内容,而不是某种格式。规则可以指定只有旧版默认内容才包含的确切值,例如旧的菜单槽位或任务列表;只要该值仍然存在,整个文件就会被归档。针对内置 Lua 脚本的规则会把文件的 SHA-256 校验和(忽略回车符)与该脚本较早的内置版本进行比较。只有未经编辑的副本才会匹配,因此你修改过的脚本会保留在原处,随后插件会写入其当前的默认版本。

例如,BetterStructures 将旧的 Valid worlds 配置替换为 Valid worlds v2。EliteMobs 会归档部分过时的内置物品、旧版公会欢迎任务,以及较早内置的 Lua 能力和附魔脚本中未经编辑的副本。FreeMinecraftModels 也会归档已识别的、已停用的装备物品 Lua 脚本;当前的道具脚本与附魔效果各自使用受支持的接口约定。

重复的文件名​

通过 MagmaCore 加载内容的插件按文件名识别每个内容文件,子文件夹中的文件也是如此。当同一内容文件夹中的两个文件同名时,只有完整路径排序(不区分大小写)最靠前的那个会被加载。控制台会发出警告,并列出已加载和被跳过的路径。如果这些副本完全相同,或者它们是 YAML 文件且被跳过副本中的每个值都与已加载文件一致(两个内容包附带同一个共享文件时就会出现这种情况),则不会发出警告。需要分别加载的文件请使用唯一的文件名。有些文件夹的规则更严格:BetterStructures 的 modules 文件夹下出现重名的原理图文件时,会使模块加载停止。

Boolean​

Boolean 值为 true 或 false。它们看起来像这样:

value1: true
value2: false

Boolean 只接受 true 或 false 值。它们通常用于打开或关闭特定功能。

String​

String 值通常只是普通文本。强烈建议您在引号之间创建 String 值,遵循以下格式:

value: "String"

包含颜色代码的字符串应加引号,尤其是首字符为 & 时。在支持的文本字段中,"&aTest" 会生成绿色文本。是否支持彩色文本取决于具体设置。颜色代码可参考此页面。

Details

为什么? 配置字符串可以接受 & 等特殊字符。如果它们出现在开头,例如 value: "&aString" 中的内容没有加引号,YAML 可能将 & 解释为锚点,而不是普通文本。请为整个字符串加引号,避免解析错误或意外的值。

Serialized Location​

Serialized Location 是一种特定类型的 String,看起来像这样:

location: world,1.0,2.0,3.0,4.0,5.0

它们用于存储和配置位置。遵循以下格式:worldName,X,Y,Z,YAW,PITCH。Yaw 和 pitch 决定玩家正在看的方向,使用与 Minecraft 位置相同的取值。

Multiplier​

Multiplier 值将插件值乘以该数字。这些值永远不应该在引号之间。这是一个例子:

damageMultiplier: 1.0

在这种情况下,伤害倍数将乘以 1,这意味着与默认值没有变化。如果 Multiplier 为 2.0,则值将乘以 2.0。如果为 0.5,则将乘以 0.5。

乘以 0.5 等同于除以 2。允许的范围由具体设置决定;使用零、负数或较大的倍数前,请查看对应参考文档。

Integer​

Integer 值只是整数。例如:

value: 10

只有脚本文档明确支持数值范围的字段才接受 ~。这是由对应功能解析的字符串,并非 YAML 数字或通用配置选项。例如:

value: 1~10

关于 Integer 值的主要事情是它们必须是整数。这意味着 10.1 无效。

Double​

Double 是可以包含小数部分的数值。例如:

value: 10.01

只有脚本文档明确支持数值范围的字段才接受 ~。这是由对应功能解析的字符串,并非 YAML 数字或通用配置选项。例如:

value: 1.0~10.01

Double 也可以是像整数一样的整数,例如 10.0 或甚至表示为 10。

Float​

Float 是 32 位的小数,精度低于 Double。例如:

value: 10.42452

只有脚本文档明确支持数值范围的字段才接受 ~。这是由对应功能解析的字符串,并非 YAML 数字或通用配置选项。例如:

value: 1.0~10.42452

Float 也可以是整数,例如 10.0 或甚至表示为 10。

String List​

String List 是 String 值的列表。这些往往是最难配置的值,因为它们需要非常特定的配置格式:

valuesList:
- "value,1"
- "value,2"
- "value,3"

与 String 一样,建议将值保留在引号之间。每个 String List 都有自己的格式,因此您必须找到您正在编辑的特定格式;但是,从全局来看,整体格式应该是这样的。

Map List​

映射列表包含多个映射条目。这个 YAML 示例将各个值嵌套在具名映射下;实际键名取决于具体设置:

parentMap:
- Map1:
key: value
- Map2:
key: value
keyForList:
- "value1"
- "value2"

如您所见,Map Lists 可以包含任何类型的格式,但如果您在脚本中使用它们,则需要参考文档以查看不同映射的有效键和值。

Color Codes​

您还可以使用以下修饰符分配颜色或使文本加粗:

代码颜色示例
&4深红色
&4深红色示例。
&c红色
&c红色示例。
&6橙色
&6橙色示例。
&e黄色
&e黄色示例。
&2深绿色
&2深绿色示例。
&a绿色
&a绿色示例。
&b水蓝色
&b水蓝色示例。
&3深水蓝色
&3深水蓝色示例。
&1深蓝色
&1深蓝色示例。
&9蓝色
&9蓝色示例。
&d亮紫色
&d亮紫色示例。
&5深紫色
&5深紫色示例。
&f白色
&f白色示例。
&7灰色
&7灰色示例。
&8深灰色
&8深灰色示例。
&0黑色
&0黑色示例。
&r重置颜色&r重置示例。
&l粗体&l粗体示例。
&o斜体&o斜体示例。
&n下划线&n下划线示例。
&m删除线&m删除线示例。
&k随机&k
&f示例。

正如您在示例中看到的,修饰符遵循常规 Minecraft 语法,但在与 EliteMobs 一起使用时,§ 被替换为 &。您可以使用它来修改大多数 EliteMobs 文本,例如怪物名称、任务文本、地牢名称等。

请注意,当正常工作时,修饰符本身不会显示在您的文本中。它们仅出于演示目的在此处显示。

还可以组合颜色和其他文本修饰符。例如,您可以这样做:

&a&o获取斜体的绿色文本。

如果我们希望我们的自定义怪物有一个漂亮的彩色名称,我们会这样做:

name: "$normalBossLevel &aScary &dDragon"

从 EliteMobs 10 起,你还可以为任何 EliteMobs 文本使用颜色渐变,如下例所示:

name: "&cNormal Red Text <gradient:#FF6B00:#FFD700:#FFFF00> Cool Gradient Text </gradient>"

在这个例子中:

  • &c 将渐变前的文本设为标准红色。
  • <gradient:...> 开始定义渐变。
  • #FF6B00、#FFD700 和 #FFFF00 是渐变使用的颜色。
  • Cool Gradient Text 是应用渐变的文本。
  • </gradient> 结束渐变部分。

只有渐变标签内部的文本会受影响;标签之外的格式保持不变。

渐变已不再是 EliteMobs 独有的功能。文本解析器位于 MagmaCore 中,因此所有包含它的插件都能在受支持的文本字段中使用相同语法,以及其他 MiniMessage 标签(<rainbow>、<#RRGGBB>、<red> 等具名颜色、<bold> 等修饰标签)。

Material​

Material 值只是您可以在 MineCraft 中找到的 Materials,例如 IRON_CHESTPLATE。有关有效 Material 列表,请参阅此页面。

helmet: IRON_HELMET

Material 在多种设置中用作值,例如怪物装备、战利品掉落、任务奖励等。

Filename​

Filename 值只是格式化为与 MagmaGuy 的插件一起使用的 .yml 配置文件。这些可以是从物品到任务的任何东西。

uniqueLootList:
- filename: magmaguys_toothpick.yml

修剪世界​

您可以使用 WorldBorder 等兼容工具裁剪不需要的地形,减小世界文件以便分发。请确认工具支持您的具体服务器版本,并在备份副本上操作;旧的兼容性列表并不能证明它支持新的世界格式。

Details

提示 如果您是第一次执行此操作,最好创建世界的备份,以防出现问题。

安装插件后,导航到世界的中心或您希望修剪的特定区域。然后,执行命令 /wb set x,其中 x 代表您想要的区域的大致半径大小。

Details

提示 如果 /wb 对您不起作用,请尝试 /worldborder:wb。

执行此命令后,飞到世界的边缘,以验证世界边界已正确设置并覆盖预期大小。当您被推回并在聊天中收到消息时,您将认识到到达了世界边界边缘。

trim_pic_1.jpg

在上图中,我们的目标是修剪紫色方块周围的世界,只在它们周围留下几个区块。为了实现这一点,我们站在红色方块上紫色区域的中间,并执行 /wb set 50,将世界边界设置在紫色区域之外。

接下来使用 /wb trim [freq] [pad]。缓冲距离的单位是方块,频率控制每秒检查的区块数量。/wb trim 200 20 每秒最多检查 200 个区块,并在边界外保留 20 格方块的距离。执行 /wb trim confirm 确认前,请检查缓冲范围,必要时增加距离。单位定义见 WorldBorder 的 trim 命令。

站在该世界中使用 /wb clear 移除它的插件边界,或继续保留边界。

修剪世界文件夹​

停止服务器,并在备份副本上操作。不要删除除 region、raids.dat 和 level.dat 之外的所有内容:地形、实体、兴趣点和维度数据都可能是必需的。保留服务器和插件实际使用的目录结构。

旧版 Vanilla 世界的下界使用 DIM-1,末地使用 DIM1。Vanilla 26.1 的默认维度已移至 dimensions/minecraft/overworld、dimensions/minecraft/the_nether 和 dimensions/minecraft/the_end,其中包含各自的 region、entities 和 poi 文件夹。所需结构取决于服务器软件及版本。分发前,请在另一台服务器上导入副本并检查世界。

Minecraft 26.1 · Paper