简体中文
配置详解
主配置是 plugins/EmakiStructure/config.yml, 你改完执行 /ems reload 就会生效. 如果写了插件不认识的顶层键, 配置检查会给出警告 (config.yml.<键>); 值不合法时按 error.config.invalid 报错, 插件会自动换成合法值继续跑
下面列出的默认值都可以在 EmakiStructure/src/main/resources/config.yml 里看到; 文件顶部的 version 是 1.0.5, 它由资源同步流程维护, 你不要手动改
generate 结构生成
| 字段 | 类型 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|
generate.size_limit | list<int> | [128, 128, 128] | 每项 8–512 | 长, 宽, 高三个方向各自的最大尺寸. 框选和导入模板共用这一条, 超出就拒绝 |
generate.max_blocks_per_tick | int | 3000 | 1–200000 | 每 1/20 秒最多写多少个方块, 所有生成任务一起共享这个额度; 用不完的排到下一拍 |
generate.entity_policy | string | all | all / passive / none | 模板里自带的实体与 spawns/ 里的生物点位怎么处理: 全都生成 / 去掉敌对和 Boss 类 / 一个都不生成. 填 none 时点位也一起停 |
generate.ground_mode | string | skip | skip / keep / fill | 脚下的地形怎么处理. skip 只要底面有一列没有实心方块就放弃 (绝不悬空生成); keep 不管支撑, 直接按原地形放; fill 支撑不够时向下用石头垫最多 16 格, 还是不够就放弃 |
generate.adaptive_throttling | boolean | true | true / false | 服务器卡顿 (TPS, 也就是每秒游戏刻数, 掉到阈值以下) 时, 逐步把每拍写入额度降到四分之一; 触发时只提示一次 |
generate.queue_timeout | duration | 60s | 填秒数, 或写 30s/5m/1h/1d | 一个生成任务最多能在队列里等多久, 超时就中止这次生成 |
cache 模板缓存
| 字段 | 类型 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|
cache.max_entries | int | 128 | ≥ 1 | 最多缓存多少份模板. 模板的基本信息一直留在内存里, 方块数据用到时才读 |
cache.max_bytes | int | 268435456 | ≥ 1 | 缓存占用内存的估算上限; 单份模板超过这个值时不会被缓存, 并给出提示 (console.cache_rejected) |
selection 框选状态
| 字段 | 类型 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|
selection.session_timeout | duration | 30m | 1m–24h | 框选闲置多久后自动结束; 结束后线框消失, 需要重新设点 |
template 模板导入
| 字段 | 类型 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|
template.import_max_file_bytes | int | 33554432 | > 0 | 单个 .nbt 原始文件的大小上限, 超出拒绝导入 |
template.legacy_policy | string | reject | reject / skip | 从旧版本模板里读不出来的方块怎么处理: reject 拒绝整个文件; skip 跳过那个方块并提示, 生成时该位置填成空气 |
template.palette_limit | int | 4096 | > 0 | 颜色表 (模板里出现过的所有不同方块状态) 的条目上限, 超出拒绝导入 |
template.block_entity_max_bytes | int | 65536 | > 0 | 单个方块自带数据 (例如箱子里的物品) 的大小上限, 超出拒绝导入 |
spawn 结构内生物生成
点位文件放在 spawns/<模板名>.yml, 和 structures/<模板名>.nbt 同名, 一对一对应. 文件里每个字段的含义, 坐标系和完整示例见 结构模板 · 生物点位附属配置
| 字段 | 类型 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|
spawn.enabled | boolean | true | true / false | 总开关; 关掉后 spawns/ 全部不读, 也不提示 |
spawn.max_per_generation | int | 32 | 1–256 | 一次生成最多出多少只生物, 超过会拒绝该点位文件 |
spawn.batch_per_tick | int | 8 | 1–64 | 每 1/20 秒最多生成多少批生物 |
spawn.respect_entity_policy | boolean | false | true / false | 判断不出是不是敌对的第三方生物要不要一并跳过: false 放行以保功能完整; true 判断不出来就跳过 |
detection 多方块增量检测
| 字段 | 类型 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|
detection.sweep_interval | duration | 0 | 0 或 ≥ 30s | 定期扫描的间隔, 用来补查可能漏掉的情况; 0 表示关闭, 开启时不能小于 30s. 它只扫描"进行中"的记录, 不会遍历全图 |
detection.max_cold_checks | int | 256 | 8–4096 | 重启或 reload 后点击已有结构时, 最多推断多少个可能的位置; 超出的会被丢弃并记进 debug 日志 |
detection.instance_limit | int | 8 | ≥ 1 | 每个定义, 每个玩家最多保留多少条"进行中"记录; 超了淘汰最早的那条 |
detection.instance_ttl | duration | 10m | ≥ 1m | 一条"进行中"记录多久没有任何变化就被清理掉 |
detection.debounce | duration | 500ms | ≥ 0, 可写 ms/30s/5m | 把同一区块内短时间内的重复变更合并起来的时间窗口 |
detection.retrigger_on_reform | boolean | false | true / false | 结构被破坏后又重新摆好时, 要不要再次触发动作; false 只恢复为活动状态不触发, 防止玩家反复拆摆刷奖励 |
detection.sample_recheck | boolean | false | true / false | 扫描时要不要对活动中的结构做低频抽样复查, 默认关闭 |
cooldown 多方块触发冷却
| 字段 | 类型 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|
cooldown.global | duration | 0 | 0 或 30s/5m 等 | 全局冷却, 所有玩家共享; 0 表示无冷却. 定义文件里写了 cooldown 节时以定义文件为准 |
cooldown.per_player | duration | 0 | 同上 | 每个玩家各自计的冷却 (按结构 + 玩家分别计时) |
replace_rules 替换原版结构
这组规则只对还没有生成的区块生效. 插件从第一条规则开始检查, 命中就生效, 后面的不再看; 都没命中就照原版生成. 已经生成的区块和里面已有的结构永远不会被改写
yaml
replace_rules:
- structure: "minecraft:village_plains" # 只能填 minecraft: 开头的原版结构
template: "village_hub_a" # 用来替换的模板名 (structures/ 下同名的 .nbt)
chance: 0.5 # 替换概率, 0.0-1.0
worlds: ["world"] # 只在这些世界生效; 不填或留空 = 所有世界
biomes: ["plains"] # 只在这些群系生效; 不填或留空 = 不限群系
enabled: true # 填 false 则这条不参与匹配
apply_to_existing: false # 只能填 false; 填 true 会整条被拒绝加载并提示- 插件把替换记录写在
replaced/<world>.marker里, 保证同一个区块不会被替换两次 - 引用的模板不存在时会提示, 并仍然按原版结构生成 (
console.replace_template_missing) - 已知限制: 遇到多块结构 (例如村庄), 尾部可能还留着原版方块
rollback 生成回滚
| 字段 | 类型 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|
rollback.enabled | boolean | true | true / false | 总开关; 关掉后回到旧行为, 生成被中断时已经放下的部分会保留. 仅供调试使用 |
rollback.journal_max_bytes | int | 67108864 | ≥ 1048576 | 一次生成只记录被改动的内容, 这里限制这些记录的总大小; 超了就中止本次生成并还原, 不会留下只生成一半的地皮 |
furniture 家具附属配置
| 字段 | 类型 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|
furniture.enabled | boolean | true | true / false | 总开关; 关掉后 furniture/ 全部不读, 不校验, 不还原, 也不提示 |
顶层键清单
配置检查认可的顶层键共 12 个: version, language, generate, cache, selection, template, spawn, detection, cooldown, replace_rules, rollback, furniture; 清单之外的顶层键都不认识