- 版权类型
- 原创
- 插件中文名称
- 轻世界
- 插件英文名称
- WorldSlim
- 原帖地址
- #
- 支持的核心(服务端)
- Paper
- Folia
- Purpur
- Leaves
- 语言支持
- 多语言
- 适配版本(Java)
- 1.21
WorldSlim — 世界清理插件
让你的服务器存档告别臃肿
为什么需要 WorldSlim
现代 MC(1.18+)的区块行为很复杂:玩家跑图时区块会长时间留在内存里,
autosave 会无条件把它们写到磁盘,最终累积成几十 GB 的「幽灵区块」。
Leaf 等性能核心还会剥离插件标记,让传统清理插件直接失效。
WorldSlim 用三层防御解决这个问题。
工作原理(三层防御)
第一层 ChunkUnloadListener — 区块真的卸载时拦截保存
第二层 AutosaveShield — 每 2 秒主动重置 NMS 脏位,autosave 直接跳过
第三层 ChunkCleaner — 定期重写 region 文件,把漏网的从磁盘抹除
加上独立的 ChunkRegistry 二进制文件,managed/force-save 状态跨重启持久化,
不依赖 chunk PDC——这就是为什么 WorldSlim 在 Leaf/Moonrise 上也能正常工作。
功能特性
三层防御 — 实时拦截 + 主动屏蔽 + 批量清理
注册表持久化 — 跨重启保留,崩溃最多丢 30 秒标记(安全降级)
激进模式 — cleanup.aggressive: true,新服一键达到 90%+ 清理率
回收命令 — /ws reclaim 把 spawn 预生成的历史区块也纳入管理
按世界覆盖 — 主世界保守、nether 激进、spawn 完全跳过都能配
诊断工具 — /ws diagnose 看运行时计数、/ws scan 直读 region NBT
按天轮转日志 — plugins/WorldSlim/logs/
配置自动迁移 — 升级新版不用手动改 config
兼容核心
| 核心 | PDC 持久化 | 注册表 | AutosaveShield |
|------|----------|--------|----------------|
| Paper 1.21.x |
|
|
|
| Purpur 1.21.x |
|
|
|
| Folia 1.21.x |
|
| 部分 |
| Leaves 1.21.x |
|
|
|
| Leaf 1.21.x |
(Moonrise 剥离)|
主力 | 受限 |
Java 21+ 必需。
[MD] | 指令 | 描述 | 权限 | |------|------|------| | `/ws status` | 插件状态和当前配置 | `worldslim.use` | | `/ws stats` | 累计清理统计 | `worldslim.use` | | `/ws chunk` | 当前区块完整决策树(managed/force-save/loaded/aggressive 假设/4 种结论)| `worldslim.use` | | `/ws diagnose [here]` | 运行时计数器快照 | `worldslim.admin` | | `/ws scan` | 直读当前 region 文件 NBT(用来判断 PDC 是否被核心剥离)| `worldslim.admin` | | `/ws cleanup` | 立即手动触发一次清理 | `worldslim.admin` | | `/ws reclaim preview` | 扫描历史区块生成候选报告(只读)| `worldslim.admin` | | `/ws reclaim confirm` | 把上次 preview 的候选写入注册表 | `worldslim.admin` | | `/ws reload` | 重载配置(自动迁移)| `worldslim.reload` | | `/ws reset` | 重置统计数据 | `worldslim.admin` | [/MD]
默认配置(节选)
升级指南
新服服主:
1. 装 jar,重启
2. 把 cleanup.aggressive 改成 true
3. 玩着,清理率自动 ≥ 90%
老服服主(已有玩家建筑):
1. 装 jar,重启(config 会自动迁移)
2. 保持 aggressive: false(默认)
3. 想清理 spawn 历史预生成区块?
- /ws reclaim preview ← 看候选数
- 如果数字合理:/ws reclaim confirm
- /ws cleanup
常见问题
Q: 会误删建筑吗?
A: 默认配置(aggressive: false)下不会。只要在区块里放过方块、打过怪、
开过箱、捡过物品,区块就被永久标记 force-save,永远不会清。
Aggressive 模式开启时,没有 block_entities 的纯石墙之类裸建筑可能
被误清,所以这个模式只推荐新服。
Q: 清理后再访问那些区域?
A: 按种子重新生成,地形/矿物/结构以原貌刷出。
Q: 性能影响?
A: 所有 I/O 在异步线程,主线程零卡顿。清理批次带 5 秒主线程超时保护。
Q: 支持多世界?
A: 支持。worlds.overrides 可对每个世界单独配置阈值/激进模式/启用状态。
Q: Leaf 上为什么要开 aggressive?
A: Leaf 的 Moonrise 模块在区块落盘时剥离 plugin PDC,AutosaveShield 的
NMS hook 也部分失效。Aggressive 模式跳过 managed 判断直接基于
InhabitedTime 清理,是 Leaf 上达到 90%+ 清理率的唯一可靠方案。
Q: 配置文件升级会丢吗?
A: 不会。每次启动会对比 config-version,缺的字段自动补上(保留你改过的值
和注释),原文件备份到 config.yml.bak.v<旧版本>。
让你的服务器存档告别臃肿
为什么需要 WorldSlim
现代 MC(1.18+)的区块行为很复杂:玩家跑图时区块会长时间留在内存里,
autosave 会无条件把它们写到磁盘,最终累积成几十 GB 的「幽灵区块」。
Leaf 等性能核心还会剥离插件标记,让传统清理插件直接失效。
WorldSlim 用三层防御解决这个问题。
工作原理(三层防御)
第一层 ChunkUnloadListener — 区块真的卸载时拦截保存
第二层 AutosaveShield — 每 2 秒主动重置 NMS 脏位,autosave 直接跳过
第三层 ChunkCleaner — 定期重写 region 文件,把漏网的从磁盘抹除
加上独立的 ChunkRegistry 二进制文件,managed/force-save 状态跨重启持久化,
不依赖 chunk PDC——这就是为什么 WorldSlim 在 Leaf/Moonrise 上也能正常工作。
功能特性
三层防御 — 实时拦截 + 主动屏蔽 + 批量清理
注册表持久化 — 跨重启保留,崩溃最多丢 30 秒标记(安全降级)
激进模式 — cleanup.aggressive: true,新服一键达到 90%+ 清理率
回收命令 — /ws reclaim 把 spawn 预生成的历史区块也纳入管理
按世界覆盖 — 主世界保守、nether 激进、spawn 完全跳过都能配
诊断工具 — /ws diagnose 看运行时计数、/ws scan 直读 region NBT
按天轮转日志 — plugins/WorldSlim/logs/
配置自动迁移 — 升级新版不用手动改 config
兼容核心
| 核心 | PDC 持久化 | 注册表 | AutosaveShield |
|------|----------|--------|----------------|
| Paper 1.21.x |
| Purpur 1.21.x |
| Folia 1.21.x |
| Leaves 1.21.x |
| Leaf 1.21.x |
Java 21+ 必需。
[MD] | 指令 | 描述 | 权限 | |------|------|------| | `/ws status` | 插件状态和当前配置 | `worldslim.use` | | `/ws stats` | 累计清理统计 | `worldslim.use` | | `/ws chunk` | 当前区块完整决策树(managed/force-save/loaded/aggressive 假设/4 种结论)| `worldslim.use` | | `/ws diagnose [here]` | 运行时计数器快照 | `worldslim.admin` | | `/ws scan` | 直读当前 region 文件 NBT(用来判断 PDC 是否被核心剥离)| `worldslim.admin` | | `/ws cleanup` | 立即手动触发一次清理 | `worldslim.admin` | | `/ws reclaim preview` | 扫描历史区块生成候选报告(只读)| `worldslim.admin` | | `/ws reclaim confirm` | 把上次 preview 的候选写入注册表 | `worldslim.admin` | | `/ws reload` | 重载配置(自动迁移)| `worldslim.reload` | | `/ws reset` | 重置统计数据 | `worldslim.admin` | [/MD]
默认配置(节选)
代码:
# 配置版本(自动管理,不要手动改)
config-version: 3
enabled: true
# 区块停留阈值(tick;20 = 1 秒)
min-inhabited-time: 1200
# 清理
cleanup:
interval-minutes: 30
run-on-startup: false
# 激进模式:任何低停留区块都清,跳过 managed 判断
# 新服强烈推荐 true,老存档服务器保持 false
aggressive: false
# Autosave 屏障(MC 1.18+ 关键特性)
autosave-shield:
enabled: true
interval-ticks: 40 # 2 秒
# 文件日志
logging:
file-enabled: true
level: INFO # DEBUG / INFO / WARN / ERROR
# 玩家活动触发器(触发后区块永久保护)
triggers:
block-place: { enabled: true, range: 0 }
block-break: { enabled: true, range: 0 }
entity-damage: { enabled: true, range: 0 }
item-pickup: { enabled: true, range: 0 }
item-drop: { enabled: true, range: 0 }
container-open: { enabled: true, range: 0 }
# 世界设置
worlds:
enabled: [] # 留空 = 所有世界
disabled: [] # 这些世界永远不清
# 按世界配置覆盖(v2.2 新增)
overrides:
world_nether:
min-inhabited-time: 600
aggressive: true
creative_world:
enabled: false
升级指南
新服服主:
1. 装 jar,重启
2. 把 cleanup.aggressive 改成 true
3. 玩着,清理率自动 ≥ 90%
老服服主(已有玩家建筑):
1. 装 jar,重启(config 会自动迁移)
2. 保持 aggressive: false(默认)
3. 想清理 spawn 历史预生成区块?
- /ws reclaim preview ← 看候选数
- 如果数字合理:/ws reclaim confirm
- /ws cleanup
常见问题
Q: 会误删建筑吗?
A: 默认配置(aggressive: false)下不会。只要在区块里放过方块、打过怪、
开过箱、捡过物品,区块就被永久标记 force-save,永远不会清。
Aggressive 模式开启时,没有 block_entities 的纯石墙之类裸建筑可能
被误清,所以这个模式只推荐新服。
Q: 清理后再访问那些区域?
A: 按种子重新生成,地形/矿物/结构以原貌刷出。
Q: 性能影响?
A: 所有 I/O 在异步线程,主线程零卡顿。清理批次带 5 秒主线程超时保护。
Q: 支持多世界?
A: 支持。worlds.overrides 可对每个世界单独配置阈值/激进模式/启用状态。
Q: Leaf 上为什么要开 aggressive?
A: Leaf 的 Moonrise 模块在区块落盘时剥离 plugin PDC,AutosaveShield 的
NMS hook 也部分失效。Aggressive 模式跳过 managed 判断直接基于
InhabitedTime 清理,是 Leaf 上达到 90%+ 清理率的唯一可靠方案。
Q: 配置文件升级会丢吗?
A: 不会。每次启动会对比 config-version,缺的字段自动补上(保留你改过的值
和注释),原文件备份到 config.yml.bak.v<旧版本>。