跳到主要内容

BetterStructures 常见问题

如果你的问题是关于首次 Nightbreak 链接、包下载或手动导入的,请先查看共享的全局页面。此常见问题只保留 BetterStructures 特定的答案。

为什么结构没有出现?

最常见的原因是你在 BetterStructures 安装之前已经探索过的地形中进行测试。

BetterStructures 旨在生成到未探索的地形中,因此它不会追溯填充旧区块。如果你想快速看到自然生成:

  • 飞入新区块
  • 生成一个新的测试世界
  • 或使用放置和设置命令而不是等待自然生成

为什么 BetterStructures 在一次重载之后禁用了自己?

/bs reload 会先清空每一个内容注册表,然后由工作线程重建它们。如果重建过程中抛出异常,继续运行只会留下一个看起来已启用、但内容不完整或为空的插件,因此 BetterStructures 会刻意采取"失败即关闭"的策略,转而禁用自身。

真正的错误会在禁用之前立刻打印到控制台。请修复它所指出的配置或原理图,然后重启服务器。

为什么重载进行期间我的命令被拒绝了?

/bs place/bs lootify/bs pregenerate/bs generateModules 都会读取或修改重载工作线程所拥有的内容注册表,因此在重载期间它们会被拒绝,并提示 "content is reloading"。在这段时间窗口内,新生成的区块同样会被跳过。请等待重载报告成功后再试。

在重载进行期间再次执行 /bs reload 不会失败 —— 你的请求会被排队,第一次重载完成后会再完整重载一次,因此你在重载过程中所做的文件修改仍会被读取到。

如何停止关于新结构的管理员警告?

BetterStructures 在 config.yml 中有一个 warnAdminsAboutNewBuildings 开关,/betterstructures silent 会为你切换该值。

这在预生成或其他管理员密集测试期间很有用,此时警告会变得很吵。

setupDone 是什么意思?

setupDone 跟踪 BetterStructures 首次设置流程是否已完成。

  • false 表示设置流程仍被视为未完成
  • true 表示设置流程已经完成

如果你有意想要重新运行设置,请设置 setupDone: false,重载插件,然后再次运行 /bs initialize

BetterStructures 需要 WorldEdit 吗?

是的。WorldEdit 是 plugin.yml 中的硬依赖,因此 BetterStructures 无法在没有它的情况下运行。

WorldGuard 集成如何工作?

如果同时安装了 WorldGuard 和 EliteMobs,BetterStructures 会注册并使用 betterstructures-protect 标志来保护其区域。两个插件都必须存在才能激活 WorldGuard 保护。

相关的配置开关是:

protectEliteMobsRegions: true

如果你不希望 BetterStructures 管理的 WorldGuard 保护支持的内容,请将其设置为 false

当玩家试图在受保护区域中破坏或放置方块时显示的消息也是可配置的:

regionProtectedMessage: "&8[BetterStructures] &cDefeat the zone's bosses to edit blocks!"

我可以将自定义物品添加到 BetterStructures 宝藏中吗?

是的。BetterStructures 包含:

/betterstructures lootify <generator> <rarity> <minAmount> <maxAmount> <weight>

在手持你想要注册的物品时使用它。该命令会将手持物品写入选定的宝藏生成器条目。

当前的验证规则来自命令实现:

  • 宝藏生成器必须存在
  • 稀有度必须已经存在于该宝藏配置中
  • minAmount 必须至少为 1
  • maxAmount 必须最多为 64
  • 手持物品不能是空气

BetterStructures 支持 MMOItems 宝藏条目吗?

是的。BetterStructures 在项目中有 MMOItems 支持,现有的宝藏工作流程支持第三方物品。对于 MMOItems 特定的语法,请将宝藏文件中的精确配置示例与当前宝藏页面文档保持一致,而不是依赖旧的常见问题片段。

EliteMobs 和 BetterStructures 如何协同工作?

BetterStructures 与 EliteMobs 有软集成。

概括来说:

  • BetterStructures 可以在生成的结构内放置 EliteMobs 内容标记
  • 当集成启用时,BetterStructures 还可以管理对 EliteMobs 支持的内容很重要的保护区域

对于共享设置流程、令牌链接和官方包生命周期,请使用全局文档和 BetterStructures 设置/内容页面,而不是将此常见问题作为主要来源。

我可以更安全地预生成世界吗?

是的。BetterStructures 在 config.yml 中公开了面向性能的预生成设置,包括:

  • percentageOfTickUsedForPregeneration(默认:0.1)- 每个服务器 tick 中用于区块预生成的比例
  • pregenerationTPSPauseThreshold(默认:12.0)- TPS 低于此值时预生成暂停
  • pregenerationTPSResumeThreshold(默认:14.0)- TPS 高于此值时预生成恢复

对于正常的结构粘贴,主要的节奏设置是:

percentageOfTickUsedForPasting: 0.2

较低的值减少每 tick 的影响,但使结构粘贴更慢。

结构位置是如何确定的?

BetterStructures 在 config.yml 中为每种结构类型保留间距和随机偏移控制。完整参考请见配置

每种结构类型都被放置在它自己的、由种子决定的菱形网格上。距离和偏移的数值单位是区块,而不是方块 —— distanceSurface27 大约相当于每 27 个区块出现一座地表结构,也就是约 432 个方块。

主要距离控制:

  • distanceSurface(默认:27
  • distanceShallow(默认:22
  • distanceDeep(默认:22
  • distanceSky(默认:90
  • distanceLiquid(默认:60
  • distanceDungeonV2(默认:80

相关偏移控制:

  • maxOffsetSurface(默认:5
  • maxOffsetShallow(默认:5
  • maxOffsetDeep(默认:5
  • maxOffsetSky(默认:5
  • maxOffsetLiquid(默认:5
  • maxOffsetDungeonV2(默认:18

距离至少必须为 1。偏移必须在 01073741823 之间(这是放置随机器能安全使用的最大值)。如果某个值超出其有效范围,BetterStructures 会记录一条警告,把该键的默认值写回 config.yml,然后使用默认值继续运行,而不是让生成失败。

在实践中,这意味着生成是由种子驱动和配置驱动的,而不是在每次重启时随机重新洗牌。

modularChunkPastingSpeed 有什么作用?

目前什么也不做。modularChunkPastingSpeed(默认:10)仍会被写入 config.yml,但插件中没有任何代码读取它,因此修改它不会产生任何效果。粘贴的节奏改由 percentageOfTickUsedForPasting 控制 —— 如果你想调整 BetterStructures 每个 tick 用于放置方块的比例,请使用那个键。

spawnProtectionRadius 有什么作用?

spawnProtectionRadius(默认:100)定义了从世界坐标 0, 0 起不会放置结构的最小距离(方块)。这适用于所有世界。设置为 0 以禁用出生点保护。

如何在特定世界中禁用结构?

BetterStructures 维护一个 ValidWorlds.yml 配置文件,控制哪些世界有资格进行结构生成。每个世界都列有一个布尔开关:

New worlds spawn structures: true
Valid worlds:
world: true
world_nether: true
world_the_end: true

将世界设置为 false 以防止 BetterStructures 在该世界中放置任何结构。New worlds spawn structures 设置控制新检测到的世界是否自动启用结构生成。

有两点行为值得了解:

  • 由 EliteMobs 管理的世界默认被排除。 归 EliteMobs 所有的世界 —— 冒险者公会大厅和副本地下城的世界副本 —— 即使 New worlds spawn structurestrue 也会被注册为 false。它们尚未构建的虚空区块会被算作新区块,这在过去曾导致 BetterStructures 在地下城大厅里生成建筑。已有的 em_ 条目已被一次性迁移翻转为 false;文件中的 EliteMobs worlds excluded by default 标记键记录了该迁移已经执行过,因此如果你刻意把某个 em_ 世界改回 true,你的选择会在重启后保留下来。
  • 已删除世界的条目会被清理。 在启动时,以及世界卸载后大约十秒,BetterStructures 会移除那些世界既未加载、磁盘上也不存在的 Valid worlds 条目,以免文件里堆积失效条目。

如何修复损坏或被部分删除的内容包?

使用 /bs forcereinstallcontent <package|all>。普通下载会比较版本并跳过已经是最新的内容,而当磁盘上的文件损坏时,这恰恰是错误的行为。强制重装会不管版本如何,把该包重新推送一遍相同的认证下载、导入和重载流程。

all 覆盖 BetterStructures 当前视为已下载、已安装或已过期的每一个包。如果某个包的文件已经完全丢失,BetterStructures 就再也看不到它了,此时请直接给出它的 slug —— Tab 补全会列出所有已知的 slug。