创建内容
创建建筑
BetterStructures 对你可以建造的内容没有限制,但建议将结构大小保持在 100x100x100 方块以内,以便于世界适配和性能考虑。话虽如此,它可以轻松处理更大的结构。
特殊方块
BetterStructures 有两种特殊方块:屏障和基岩。WorldEdit 可以粘贴的任何其他方块都会正常粘贴,但屏障和基岩方块是例外。
| 方块 | 行为 | 用途 |
|---|---|---|
| 屏障 | 不在该位置放置任何方块 - 保留原始地形 | 圆滑粘贴边缘、将墙壁贴合洞穴、自然融合 |
| 基岩 | 保证该位置存在实心方块。如果是空气/液体,则替换为基座材料 | 为铁轨创建地板、保证地板存在而不覆盖现有方块 |
生成告示牌
BetterStructures 可以使用带有特定文本的告示牌在特定位置生成来自 EliteMobs 和 MythicMobs 的怪物和 Boss。
注意:生成告示牌会在结构粘贴时被消耗掉 —— BetterStructures 会在生成实体的那一刻把告示牌方块替换为空气,所以玩家永远看不到它们。标签无法被识别的告示牌只会作为普通告示牌被粘贴出来并保持可见。
| 告示牌类型 | 第1行 | 第2-4行 | 需要的插件 |
|---|---|---|---|
| 原版怪物 | [spawn] | 第 2 行填写实体类型 | 无 |
| EliteMobs | [elitemobs] | Boss 文件名,可分散写在第 2-4 行 | EliteMobs |
| MythicMobs | [mythicmobs] | 第 2 行填写怪物名称,第 3 行可选填写等级 | MythicMobs |
任何告示牌都可以。 所有木材类型以及站立式和墙上式变体都被接受,包括悬挂式告示牌,以及插件编写之后新增木材类型的告示牌 —— 检查的是该方块是否为告示牌,而不是比对一份固定的材料清单。
MythicMobs 的等级行是可选的。 将第 3 行留空,怪物就会以 1 级生成。
生成告示牌示例
原版怪物
[spawn]
ZOMBIE
在该位置生成一个持久性僵尸。适用于任何 Spigot EntityType,包括盔甲架和末影水晶。
EliteMobs
[elitemobs]
test_boss_with
_a_long_name
.yml
较长的文件名可以跨多行。战斗场地受 WorldGuard 保护,直到所有 Boss 被击杀。
MythicMobs
[mythicmobs]
SkeletalKnight
10
生成 10 级的 SkeletalKnight。
原理图
原理图是由 WorldEdit 或 FastAsyncWorldEdit 生成的文件,包含 BetterStructures 将使用的建筑方块。 BetterStructures 使用 .schem 文件格式(现代 WorldEdit 标准)。请确保使用 .schem 格式保存你的原理图,而不是旧版 .schematic 格式。
此处不包含如何制作原理图的详细说明,因为它们在 WorldEdit 和 FastAsyncWorldEdit 文档中已有详细描述,但一般步骤如下:
- 选择建筑的一个角并使用命令
//pos1 - 选择对角线对面的角并使用命令
//pos2 - 使用
//copy命令 - 使用命令
/schem save <schematicname>,其中<schematicName>是你想要用于原理图的文件名。
确保你在点 1 运行命令 //pos1,在点 2 运行 //pos2!
锚点
锚点是你为原理图运行 //copy 命令的位置。它们决定了结构在世界中放置时的原点。
| 建筑类型 | 推荐锚点位置 | 原因 |
|---|---|---|
| 地表 | 地板的最低点 | 确保正确的地面对齐 |
| 地下 | 建筑顶部 | 允许正确确定埋深 |
| 液体 | 水面之上 | 正确的水面放置 |
| 空中/天空 | 建筑顶部 | 正确的高度定位 |
重要: 复制时始终要非常靠近或直接在建筑上方。你离得越远,粘贴操作就会越卡。
原理图配置
每个原理图文件都有一个原理图配置。如果一个原理图文件刚被添加到服务器,配置将在重启或执行 /betterstructures reload 后生成。
.yml 会生成在与 .schem 相同的文件夹中。plugins/BetterStructures/schematics 会被递归扫描,因此把原理图放在子文件夹中分发的内容包,其配置也会被写进同一个子文件夹。文件名在整个 schematics 目录树中必须唯一:位于不同文件夹但同名的两个 .schem 文件会让配置查找产生歧义,此时 BetterStructures 会拒绝启动,而不是去猜你指的是哪一个。
如果某个 .yml 没有与之匹配的 .schem,它会被跳过并给出警告,该结构不会被注册。
这些配置允许你为原理图粘贴设置以下选项:
| 键 | 默认值 | 必需 | 描述 |
|---|---|---|---|
isEnabled | true | ❌ | 原理图是否启用。如果禁用,它将不会被放置在任何地方。 |
weight | 1.0 | ❌ | 选择权重。越高 = 越可能被选中。2.0 = 被选中概率翻倍,0.5 = 概率减半。 |
pedestalMaterial | 自动检测 | ❌ | 基座方块的材料(Spigot Material 名称)。如果未设置则自动检测最佳匹配。 |
generatorConfigFilename | - | ✅ | 生成器配置文件名,包含 .yml 扩展名。没有此项的原理图不会生成。 |
treasureFile | 生成器默认值 | ❌ | 覆盖此结构箱子的宝藏文件。通常最好修改生成器。 |
barrelTreasureFilename | 生成器默认值 | ❌ | 覆盖此结构木桶的宝藏文件。默认使用生成器提供的值(或其后备值 treasure_barrel_food.yml)。 |
战利品容器: BetterStructures 自动检测放置在原理图中的箱子、陷阱箱和普通(未染色)潜影盒,并使用箱子宝藏文件填充它们。木桶使用单独的木桶宝藏文件填充(默认 treasure_barrel_food.yml),可以按生成器使用 generateLootInBarrels: false 禁用。无需特殊告示牌或配置即可标记这些容器。
被禁用的生成器: 如果 generatorConfigFilename 指向的生成器设置了 isEnabled: false,那么即使原理图自身的 isEnabled 为 true,该原理图也会被完全跳过。
自定义内容
BetterStructures 中分发的所有内容都是可编辑的。你可以根据自己的喜好修改任何原理图文件和生成器设置。
上面的内容创建指南也可以帮助你编辑现有内容。
故障排除
如果你的结构没有生成,请检查:
- 原理图文件是 .schem 格式
- 指定了有效的生成器配置
- isEnabled 选项在原理图配置以及它所指向的生成器上都设置为 true
- 你的 WorldEdit/FastAsyncWorldEdit 版本兼容
- 原理图的
.yml就放在.schem旁边,而不是位于某个多余的plugins/BetterStructures/plugins/BetterStructures/...目录树中。较旧的版本会把配置写到那个错误路径,导致随插件附带的结构没有生成器,并悄无声息地无法生成。如果你看到那个文件夹,其中的配置从未被读取过 —— 删掉它,让插件在正确位置重新生成配置。
如果服务器因为原理图文件名重复的提示而拒绝启动,说明你在 schematics(或 modules)下的两个不同文件夹中存在同名的 .schem。请重命名其中一个。
.schematic_cache 文件夹
BetterStructures 会把你的原理图的转换结果保存在 plugins/BetterStructures/.schematic_cache 中。随插件附带的 .schem 文件是以较旧的 Minecraft 数据版本保存的,而在每次启动时都转换它们,是加载完整内容安装时开销最大的一环,因此转换结果会被存储下来重复使用。
你无需管理这个文件夹:
- 缓存条目以原理图内容、你的 Minecraft 版本以及你的 WorldEdit 版本作为键,因此编辑原理图或更新这两个插件中的任何一个,都会自动重建受影响的条目
- 不再与任何原理图匹配的条目(例如移除某个内容包之后)会在启动时被清理
- 它始终只是一项优化 —— 如果某个条目缺失、不可读或校验失败,就会转而读取原始的
.schem
删除它是安全的;下次启动只会重建它,只是耗时更长。
"Skipped N unsupported legacy block entries"
随插件附带的 .schem 文件会记录它们保存时所用的 Minecraft 版本,因此 WorldEdit 在加载时会把其中的方块实体交给 Mojang 的数据转换器处理。类型已经不复存在的条目 —— 最常见的是 minecraft:bed,因为床的方块实体在 1.13 中随着床的颜色被移入方块状态而被移除 —— 会转换失败,并由服务器以 ERROR 级别逐个方块记录下来。一次完整的内容安装会产生数百条一模一样的日志,看起来像是安装出了问题,但它们其实无害:方块本身能正常转换,结构也能正确粘贴。
BetterStructures 会把这些噪音收拢成一行信息,说明有多少条目被跳过以及涉及哪些键。看到它时无需做任何修复。
如果生成告示牌不起作用:
- 验证告示牌格式与示例完全匹配
- 对于 EliteMobs/MythicMobs,确保已安装相应插件
- 检查实体类型/怪物名称拼写正确
- 查看服务器日志以获取具体错误信息