- 版权类型
- 原创
- 版权链接
- #
实现原理:通过分析存档中玩家背包,实体方块(各种容器以及展示框陶罐等),实体(可以放物品的比如矿车,船,马,骆驼等),掉落物以及部分方块(钻石块,下界合金块等),筛选出疑似刷物品的玩家
[MD] ## 使用流程 1. 下载本工具并解压。 2. 如果需要一致快照,先停止服务器。 3. 导出 JSONL 中间数据。大世界建议直接导出 ZIP: ```powershell .\BedrockMapContainerExport.exe export --all --zip ` "C:\Path\To\BedrockWorld" ` ".\exports\world-jsonl.zip" ``` 4. 启动内置网页(默认端口:46656): ```powershell .\BedrockMapContainerExport.exe web ``` 5. 在浏览器里选择导出的 `.zip` 或 JSONL 文件,点击扫描。 6. 使用网页里的物品审计、物品排行、实体排行、堆积统计 如果已经导出到普通目录,也可以后续打包: ```powershell .\BedrockMapContainerExport.exe pack-jsonl ".\exports\world-audit" ".\exports\world-jsonl.zip" ``` ## 导出 JSONL 导出容器相关方块实体: ```powershell .\BedrockMapContainerExport.exe export --containers-only "C:\Path\To\BedrockWorld" ".\exports\world-audit" ``` 导出全部方块实体、实体、掉落物、玩家数据: ```powershell .\BedrockMapContainerExport.exe export --all "C:\Path\To\BedrockWorld" ".\exports\world-audit" ``` 旧的简写方式也能用: ```powershell .\BedrockMapContainerExport.exe --containers-only "C:\Path\To\BedrockWorld" ".\exports\world-audit" ``` 常用选项: - `--all`:导出标准四类 JSONL:全部方块实体、实体、掉落物实体、玩家。这是默认值,不会启用 `placed_blocks.jsonl`。 - `--containers-only`:仍然导出实体、掉落物实体和玩家,但 `block_entities.jsonl` 只导出容器类方块实体和饰纹陶罐。 - `--zip`:先导出到临时目录,再打包为 `.zip`,之后删除临时目录。不会调用系统压缩工具。当前 ZIP writer 使用 ZIP32,如果单个 JSONL 超过 4 GB,建议导出到目录。 - `--placed-blocks`:额外扫描放置在世界里的方块 ID,写入 `placed_blocks.jsonl`。默认关闭,避免影响普通导出速度。内置默认只扫 `minecraft:diamond_block` 和 `minecraft:netherite_block`。 - `--placed-block-id <id>`:临时增加一个放置方块 ID,例如 `--placed-block-id minecraft:gold_block`。使用这个参数会自动启用 `--placed-blocks`。 - `--placed-block-list <file>`:从文本文件读取放置方块 ID。支持一行一个,也支持空格、逗号、分号分隔;`#` 后面是注释。使用这个参数会自动启用 `--placed-blocks`。 - `--placed-block-samples <n>`:每个放置方块分组保留多少个展开后的样本坐标。完整坐标仍然在压缩 `ranges` 里。默认 `32`。 - `--scan-workers <n>` 或 `--threads <n>`:实验性并行扫描主导出阶段。默认 `1`。SSD/NVMe 上建议先试 `4` 或 `8`;机械硬盘建议从 `2` 或 `4` 开始。如果 LevelDB 读取或 JSONL 写入已经是 I/O 瓶颈,线程更多反而可能更慢。并行输出的记录顺序不保证稳定。 - `--help`:显示帮助。 导出 ZIP 示例: ```powershell .\BedrockMapContainerExport.exe export --all --zip "C:\Path\To\BedrockWorld" ".\exports\world-audit-jsonl.zip" ``` 带放置方块扫描: ```powershell .\BedrockMapContainerExport.exe export --all --placed-blocks --zip "C:\Path\To\BedrockWorld" ".\exports\world-audit-jsonl.zip" ``` 大世界并行扫描示例: ```powershell .\BedrockMapContainerExport.exe export --all --placed-blocks --scan-workers 8 --zip "C:\Path\To\BedrockWorld" ".\exports\world-audit-jsonl.zip" ``` 并行导出时,stderr 进度面板会显示导出阶段耗时、当前 key/s、worker 完成数、已扫描 LevelDB key、方块实体、实体、掉落物、玩家、放置方块和解析失败数。最终以 stdout 的汇总统计为准。 使用自定义贵重方块列表: ```powershell .\BedrockMapContainerExport.exe export --all --placed-block-list ".\valuable-blocks.txt" --zip "C:\Path\To\BedrockWorld" ".\exports\world-audit-jsonl.zip" ``` `valuable-blocks.txt` 示例: ```text # 额外统计这些已放置方块 minecraft:gold_block minecraft:emerald_block minecraft:beacon ``` ## JSONL 输出文件 导出会创建或覆盖: - `block_entities.jsonl` - `entities.jsonl` - `items.jsonl` - `players.jsonl` - `placed_blocks.jsonl`,仅启用 `--placed-blocks` 时生成 - `parse_errors.jsonl`,仅发生解析失败时生成 所有文件都是 JSON Lines:每行一个 JSON 对象。第一行是元数据。字段细节见 `docs/JSONL_FORMAT.md`。 四个主要文件含义: - `block_entities.jsonl`:方块实体,例如箱子、漏斗、潜影盒、饰纹陶罐等。包含位置、维度、物品摘要和 `rawNbtBase64`。 - `entities.jsonl`:非掉落物实体,例如村民、盔甲架、展示框、容器矿车等。actor-prefix 记录带 `storageKeyHex`,可用于恢复/删除。 - `items.jsonl`:掉落物实体。 - `players.jsonl`:玩家 NBT。导出时会按原始 NBT 去重,避免重复玩家 key 造成重复统计。 `placed_blocks.jsonl` 用于统计已经放置在世界地形里的指定方块。每条记录按 `chunk + subchunkY + block id` 聚合。完整坐标保存在压缩的 subchunk-local `ranges` 中,`samples` 只是给网页快速预览的小样本。 潜影盒作为已放置方块时,本身就是方块实体,会进入 `block_entities.jsonl`,所以默认放置方块扫描不包含潜影盒。 如果生成了 `parse_errors.jsonl`,里面会记录失败的 LevelDB key、阶段、可用的 chunk/维度上下文、原始 value 大小和解析器错误消息。使用 `pack-jsonl` 或 `--zip` 时,只要该文件存在就会一起打包。 导出工具保留了原工具的重要特性: - 玩家去重; - actor digest 维度/区块反查; - JSONL 流式写入,避免一次性占用大量内存; - `rawNbtBase64`,方便后续恢复完整 NBT; - 可选的放置方块聚合和完整压缩坐标; - 可选的 `parse_errors.jsonl` 解析失败诊断日志; - stderr 进度输出;并行导出时会显示实时 worker 和分类计数。 ## 启动网页分析器 CLI exe 内置了生产版网页。直接启动: ```powershell .\BedrockMapContainerExport.exe web ``` 默认监听 `http://127.0.0.1:46656/` 并自动打开浏览器。如果端口被占用,命令会提示并退出;可以用 `--port` 指定端口。 ```powershell .\BedrockMapContainerExport.exe web --port 4188 .\BedrockMapContainerExport.exe web --no-open ``` ## 网页分析导出结果 1. 用 CLI 导出 JSONL,推荐大世界使用 `--zip`。 2. 启动网页分析器。 3. 选择 JSONL 文件,或选择包含 JSONL 的 `.zip`/`.gz`。 4. 使用 `物品审计` 页面分析贵重容器和可疑持有者。 5. 使用 `物品排行` 页面查看全服物品总数,来源包括玩家背包、末影箱、方块实体、实体背包、掉落物实体,以及加载 `placed_blocks.jsonl` 时的放置方块。 6. 使用 `实体排行` 页面查看实体类型总数、维度分布、来源分布、可恢复数量和热点 chunk/region。掉落物实体默认隐藏,可在页面里开启。 7. 使用 `堆积统计` 页面查看 chunk/region 实体密度。 8. 按需要调整阈值、规则、维度、来源、搜索条件。 9. 保持嵌套解析开启,可以读取潜影盒和收纳袋里的内层物品。 10. 如果想让物品排行尽量包含实体装备/背包,扫描前启用完整实体 NBT 解析。 11. 按需要导出 CSV、PNG 排行图、HTML 报告或密度 CSV。 `物品排行` 会按物品 ID 聚合并按总数排序。CSV 只导出 ID 和数字字段;网页和 PNG/HTML 报告会显示图片图标。HTML 报告使用紧凑排行布局,并内置 base64 图片,方便单文件分享或留档。 实体排行同样支持 CSV、PNG 和 HTML。实体图标优先从 `web/public/mc/img/entity/` 查找,找不到再尝试 item/block 图标。 贵重物品规则格式: ```text minecraft:diamond = 1 @count 64 minecraft:diamond_block = 9 @score 288 shulker_box = 4 ``` `@count` 检查某个物品 ID 的总数。`@score` 检查数量乘权重后的分数。不写 `@...` 阈值时,该物品只参与全局加权分数。 [/MD]
[MD] ## 使用流程 1. 下载本工具并解压。 2. 如果需要一致快照,先停止服务器。 3. 导出 JSONL 中间数据。大世界建议直接导出 ZIP: ```powershell .\BedrockMapContainerExport.exe export --all --zip ` "C:\Path\To\BedrockWorld" ` ".\exports\world-jsonl.zip" ``` 4. 启动内置网页(默认端口:46656): ```powershell .\BedrockMapContainerExport.exe web ``` 5. 在浏览器里选择导出的 `.zip` 或 JSONL 文件,点击扫描。 6. 使用网页里的物品审计、物品排行、实体排行、堆积统计 如果已经导出到普通目录,也可以后续打包: ```powershell .\BedrockMapContainerExport.exe pack-jsonl ".\exports\world-audit" ".\exports\world-jsonl.zip" ``` ## 导出 JSONL 导出容器相关方块实体: ```powershell .\BedrockMapContainerExport.exe export --containers-only "C:\Path\To\BedrockWorld" ".\exports\world-audit" ``` 导出全部方块实体、实体、掉落物、玩家数据: ```powershell .\BedrockMapContainerExport.exe export --all "C:\Path\To\BedrockWorld" ".\exports\world-audit" ``` 旧的简写方式也能用: ```powershell .\BedrockMapContainerExport.exe --containers-only "C:\Path\To\BedrockWorld" ".\exports\world-audit" ``` 常用选项: - `--all`:导出标准四类 JSONL:全部方块实体、实体、掉落物实体、玩家。这是默认值,不会启用 `placed_blocks.jsonl`。 - `--containers-only`:仍然导出实体、掉落物实体和玩家,但 `block_entities.jsonl` 只导出容器类方块实体和饰纹陶罐。 - `--zip`:先导出到临时目录,再打包为 `.zip`,之后删除临时目录。不会调用系统压缩工具。当前 ZIP writer 使用 ZIP32,如果单个 JSONL 超过 4 GB,建议导出到目录。 - `--placed-blocks`:额外扫描放置在世界里的方块 ID,写入 `placed_blocks.jsonl`。默认关闭,避免影响普通导出速度。内置默认只扫 `minecraft:diamond_block` 和 `minecraft:netherite_block`。 - `--placed-block-id <id>`:临时增加一个放置方块 ID,例如 `--placed-block-id minecraft:gold_block`。使用这个参数会自动启用 `--placed-blocks`。 - `--placed-block-list <file>`:从文本文件读取放置方块 ID。支持一行一个,也支持空格、逗号、分号分隔;`#` 后面是注释。使用这个参数会自动启用 `--placed-blocks`。 - `--placed-block-samples <n>`:每个放置方块分组保留多少个展开后的样本坐标。完整坐标仍然在压缩 `ranges` 里。默认 `32`。 - `--scan-workers <n>` 或 `--threads <n>`:实验性并行扫描主导出阶段。默认 `1`。SSD/NVMe 上建议先试 `4` 或 `8`;机械硬盘建议从 `2` 或 `4` 开始。如果 LevelDB 读取或 JSONL 写入已经是 I/O 瓶颈,线程更多反而可能更慢。并行输出的记录顺序不保证稳定。 - `--help`:显示帮助。 导出 ZIP 示例: ```powershell .\BedrockMapContainerExport.exe export --all --zip "C:\Path\To\BedrockWorld" ".\exports\world-audit-jsonl.zip" ``` 带放置方块扫描: ```powershell .\BedrockMapContainerExport.exe export --all --placed-blocks --zip "C:\Path\To\BedrockWorld" ".\exports\world-audit-jsonl.zip" ``` 大世界并行扫描示例: ```powershell .\BedrockMapContainerExport.exe export --all --placed-blocks --scan-workers 8 --zip "C:\Path\To\BedrockWorld" ".\exports\world-audit-jsonl.zip" ``` 并行导出时,stderr 进度面板会显示导出阶段耗时、当前 key/s、worker 完成数、已扫描 LevelDB key、方块实体、实体、掉落物、玩家、放置方块和解析失败数。最终以 stdout 的汇总统计为准。 使用自定义贵重方块列表: ```powershell .\BedrockMapContainerExport.exe export --all --placed-block-list ".\valuable-blocks.txt" --zip "C:\Path\To\BedrockWorld" ".\exports\world-audit-jsonl.zip" ``` `valuable-blocks.txt` 示例: ```text # 额外统计这些已放置方块 minecraft:gold_block minecraft:emerald_block minecraft:beacon ``` ## JSONL 输出文件 导出会创建或覆盖: - `block_entities.jsonl` - `entities.jsonl` - `items.jsonl` - `players.jsonl` - `placed_blocks.jsonl`,仅启用 `--placed-blocks` 时生成 - `parse_errors.jsonl`,仅发生解析失败时生成 所有文件都是 JSON Lines:每行一个 JSON 对象。第一行是元数据。字段细节见 `docs/JSONL_FORMAT.md`。 四个主要文件含义: - `block_entities.jsonl`:方块实体,例如箱子、漏斗、潜影盒、饰纹陶罐等。包含位置、维度、物品摘要和 `rawNbtBase64`。 - `entities.jsonl`:非掉落物实体,例如村民、盔甲架、展示框、容器矿车等。actor-prefix 记录带 `storageKeyHex`,可用于恢复/删除。 - `items.jsonl`:掉落物实体。 - `players.jsonl`:玩家 NBT。导出时会按原始 NBT 去重,避免重复玩家 key 造成重复统计。 `placed_blocks.jsonl` 用于统计已经放置在世界地形里的指定方块。每条记录按 `chunk + subchunkY + block id` 聚合。完整坐标保存在压缩的 subchunk-local `ranges` 中,`samples` 只是给网页快速预览的小样本。 潜影盒作为已放置方块时,本身就是方块实体,会进入 `block_entities.jsonl`,所以默认放置方块扫描不包含潜影盒。 如果生成了 `parse_errors.jsonl`,里面会记录失败的 LevelDB key、阶段、可用的 chunk/维度上下文、原始 value 大小和解析器错误消息。使用 `pack-jsonl` 或 `--zip` 时,只要该文件存在就会一起打包。 导出工具保留了原工具的重要特性: - 玩家去重; - actor digest 维度/区块反查; - JSONL 流式写入,避免一次性占用大量内存; - `rawNbtBase64`,方便后续恢复完整 NBT; - 可选的放置方块聚合和完整压缩坐标; - 可选的 `parse_errors.jsonl` 解析失败诊断日志; - stderr 进度输出;并行导出时会显示实时 worker 和分类计数。 ## 启动网页分析器 CLI exe 内置了生产版网页。直接启动: ```powershell .\BedrockMapContainerExport.exe web ``` 默认监听 `http://127.0.0.1:46656/` 并自动打开浏览器。如果端口被占用,命令会提示并退出;可以用 `--port` 指定端口。 ```powershell .\BedrockMapContainerExport.exe web --port 4188 .\BedrockMapContainerExport.exe web --no-open ``` ## 网页分析导出结果 1. 用 CLI 导出 JSONL,推荐大世界使用 `--zip`。 2. 启动网页分析器。 3. 选择 JSONL 文件,或选择包含 JSONL 的 `.zip`/`.gz`。 4. 使用 `物品审计` 页面分析贵重容器和可疑持有者。 5. 使用 `物品排行` 页面查看全服物品总数,来源包括玩家背包、末影箱、方块实体、实体背包、掉落物实体,以及加载 `placed_blocks.jsonl` 时的放置方块。 6. 使用 `实体排行` 页面查看实体类型总数、维度分布、来源分布、可恢复数量和热点 chunk/region。掉落物实体默认隐藏,可在页面里开启。 7. 使用 `堆积统计` 页面查看 chunk/region 实体密度。 8. 按需要调整阈值、规则、维度、来源、搜索条件。 9. 保持嵌套解析开启,可以读取潜影盒和收纳袋里的内层物品。 10. 如果想让物品排行尽量包含实体装备/背包,扫描前启用完整实体 NBT 解析。 11. 按需要导出 CSV、PNG 排行图、HTML 报告或密度 CSV。 `物品排行` 会按物品 ID 聚合并按总数排序。CSV 只导出 ID 和数字字段;网页和 PNG/HTML 报告会显示图片图标。HTML 报告使用紧凑排行布局,并内置 base64 图片,方便单文件分享或留档。 实体排行同样支持 CSV、PNG 和 HTML。实体图标优先从 `web/public/mc/img/entity/` 查找,找不到再尝试 item/block 图标。 贵重物品规则格式: ```text minecraft:diamond = 1 @count 64 minecraft:diamond_block = 9 @score 288 shulker_box = 4 ``` `@count` 检查某个物品 ID 的总数。`@score` 检查数量乘权重后的分数。不写 `@...` 阈值时,该物品只参与全局加权分数。 [/MD]