• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
区块自动重置器

原创 其他 区块自动重置器 v1.0

完成注册/登录后下载
版权类型
原创
版权链接
https://github.com/DEVILENMO/Minecraft-Bedrock-World-Chunk-Resetter
语言支持
中文(简体)
前置组件
ARCCore https://www.minebbs.com/resources/all-in-one.12684/
适配版本(基岩)
  1. 全版本
[MD] # Minecraft 区块自动重置器 (ARC Chunk Auto Resetter) ## 📋 项目简介 **ARC Chunk Auto Resetter** 是一个专为Minecraft服务器设计的智能区块重置工具,特别针对使用 **EndStone ARC Core 领地插件** 的服务器。该工具可以安全地重置世界中未被领地保护的区块,让这些区块重新生成,同时完全保护玩家的建筑和领地。 ### ✨ 主要特点 - 🛡️ **智能领地保护** - 自动识别并保护所有领地覆盖的区块 - 🔧 **额外保护距离** - 可在领地边界外设置额外的保护区域 - 🎯 **精确区块控制** - 支持手动指定要保护的特定区块 - 🖥️ **双操作模式** - 提供命令行版本和友好的图形界面 - 📊 **实时进度显示** - 详细的操作进度和统计信息 - 🌍 **多维度支持** - 支持主世界、下界、末地三个维度 - 🔍 **预览功能** - 执行前可预览将要进行的操作 - ⚡ **高性能处理** - 基于Amulet Core API,稳定高效 ## 🎯 使用场景 - **服务器地图重置** - 重置过度开发的区域,保留玩家建筑 - **资源区更新** - 定期重置资源采集区域,保持资源丰富 - **地形修复** - 修复被破坏的自然地形,恢复原始风貌 - **版本升级** - 让旧区块重新生成以获得新版本特性 [ATTACH type="full" size="2557x1392"]112700[/ATTACH] ## 🛠️ 安装要求 ### 系统要求 - **操作系统**: Windows 10/11, macOS, Linux - **Python版本**: Python 3.8 或更高版本 - **内存**: 建议 4GB 以上(处理大世界时需要更多内存) ### 依赖包 本项目已提供 `requirements.txt` 作为标准依赖清单,推荐使用它来安装依赖。 ```bash # 克隆或进入项目目录后 pip install -r requirements.txt ``` ### 使用 Miniforge 创建 Python 3.13 环境(推荐) 为避免系统 Python 污染,推荐使用 Miniforge(基于 conda-forge 的轻量级发行版)创建隔离环境。 1) 安装 Miniforge(选择本机平台安装器) - Windows: 打开浏览器访问 `https://github.com/conda-forge/miniforge/releases` 下载并安装最新的 Miniforge3 Windows 安装包 2) 创建并激活名为 `amulet` 的 Python 3.13 环境 ```bash conda create -n amulet python=3.13 conda activate amulet ``` 3) 安装项目依赖(基于 requirements.txt) ```bash pip install -r requirements.txt ``` ## 📦 文件结构 ``` ARC-Chunk-Auto-Reseter/ ├── ChunkAutoResetter.py # 核心重置逻辑 ├── ChunkResetterGUI.py # 图形用户界面 ├── land_data_reader.py # 领地数据读取器 ├── start_gui.bat # GUI启动脚本 (Windows) ├── requirements.txt # 依赖清单(用于pip安装) └── README.md # 项目文档 ``` ## 🚀 快速开始 ### 效果展示 重置前与重置后的对比(仅清理未受领地保护的区块): [ATTACH type="full" size="2415x1280"]112701[/ATTACH] [ATTACH type="full" size="2553x1358"]112702[/ATTACH] ### 图形界面 1. **Windows用户**: ```bash # 双击运行 start_gui.bat ``` 2. **其他系统**: ```bash python ChunkResetterGUI.py ``` 3. **操作步骤**: - 选择Minecraft世界文件夹 - 选择领地数据库文件 (database.db) - 设置搜索范围和额外保护距离 - 点击"加载配置"查看领地信息 - 点击"预览重置操作"查看影响范围 - 确认无误后点击"执行重置" ### 数据库格式说明 - 程序会自动读取数据库中 `lands` 表的数据来计算需要保护的区块 - 坐标单位为方块(block),区块大小为 16×16 方块;程序内部会按 16 取整映射到区块坐标 必需的表与字段(与截图一致): ```sql -- 建议的表结构(SQLite) CREATE TABLE IF NOT EXISTS lands ( land_id INTEGER PRIMARY KEY, -- 领地ID owner_uuid TEXT NOT NULL, -- 拥有者UUID land_name TEXT NOT NULL, -- 领地名称 dimension TEXT NOT NULL, -- 维度: Overworld/Nether/TheEnd min_x INTEGER NOT NULL, -- 边界最小X(方块坐标) max_x INTEGER NOT NULL, -- 边界最大X(方块坐标) min_z INTEGER NOT NULL, -- 边界最小Z(方块坐标) max_z INTEGER NOT NULL, -- 边界最大Z(方块坐标) tp_x REAL, -- 可选: 传送点X tp_y REAL, -- 可选: 传送点Y tp_z REAL, -- 可选: 传送点Z shared_users TEXT, -- 可选: 共享玩家(JSON或逗号分隔) allow_explosion INTEGER DEFAULT 0, -- 可选: 是否允许爆炸 0/1 allow_public_interact INTEGER DEFAULT 0 -- 可选: 是否允许公共交互 0/1 ); ``` 字段含义与要求: - land_id: 整数主键,唯一标识一个领地 - owner_uuid: 拥有者玩家UUID(字符串) - land_name: 领地名称(字符串) - dimension: 维度名称,需为以下三者之一:`Overworld`、`Nether`、`TheEnd` - min_x/max_x/min_z/max_z: 领地边界在方块坐标系中的包围盒(包含端点) - tp_x/tp_y/tp_z: 领地传送点(可为空,不影响本程序) - shared_users: 共享用户列表;格式不限,程序不解析此字段 - allow_explosion/allow_public_interact: 行为开关;程序不依赖 维度映射(数据库 -> Minecraft ID): - Overworld -> `minecraft:overworld` - Nether -> `minecraft:the_nether` - TheEnd -> `minecraft:the_end` 说明: - 程序会将边界盒按区块维度转换为区块范围 `[min_x//16, max_x//16] × [min_z//16, max_z//16]` - 若设置了“额外保护距离”,会在区块范围四周再扩展 N 圈区块后参与保护判断 ## ⚙️ 配置说明 ### 重置设置 | 参数 | 说明 | 默认值 | 示例 | |------|------|--------|------| | **搜索范围** | 检查的区块坐标范围 | 750 | 50表示检查-50到50共101×101个区块 | | **额外保护距离** | 领地边界外的额外保护距离 | 0 | 2表示在领地外再保护2圈区块 | | **维度** | 要处理的游戏维度 | 主世界 | 主世界/下界/末地 | ### 维度对应关系 | 游戏维度 | Minecraft ID | 数据库名称 | |----------|-------------|-----------| | 主世界 | `minecraft:overworld` | `Overworld` | | 下界 | `minecraft:the_nether` | `Nether` | | 末地 | `minecraft:the_end` | `TheEnd` | ## 🔧 高级用法 ### 手动指定保护区块 ```python # 不使用领地数据库,手动指定要保护的区块 resetter = ChunkAutoResetter("path/to/world") # 不传入数据库路径 resetter.load_world() # 指定要保护的区块坐标 preserve_chunks = [(0, 0), (1, 0), (0, 1), (1, 1)] # 保护spawn点附近 stats = resetter.reset_chunks_with_preserve( preserve_chunks=preserve_chunks, search_range=50, dry_run=False ) ``` ## ⚠️ 重要注意事项 ### 🔴 使用前必读 1. **备份世界** - 操作前务必备份您的世界文件! 2. **关闭服务器** - 操作期间确保Minecraft服务器已关闭 3. **测试环境** - 建议先在测试环境中验证效果 4. **内存要求** - 大世界处理需要足够的系统内存 ### 🛡️ 安全机制 - ✅ 支持试运行模式,可预览而不实际修改 - ✅ 详细的操作统计和日志记录 - ✅ 自动错误处理和恢复机制 - ✅ 严格的领地边界计算和保护 ### 📊 性能建议 - **搜索范围**: 建议不超过1000,避免内存不足 - **分批处理**: 大范围重置可分多次小范围执行 - **进度监控**: 使用GUI界面可更好地监控处理进度 ## 🐛 故障排除 ### 常见问题 **Q: 提示"无法解析导入amulet"** ```bash A: 确保已安装amulet-core包 pip install amulet-core ``` **Q: 中文显示乱码** ```bash A: Windows用户请使用start_gui.bat启动,已自动设置UTF-8编码 ``` **Q: 找不到领地数据** ```bash A: 检查数据库路径是否正确,确保是EndStone ARC Core的database.db文件 ``` **Q: 内存不足错误** ```bash A: 减小搜索范围,或增加系统内存 ``` ### 错误日志 程序运行时会在GUI日志区域或控制台显示详细的错误信息,请根据错误提示进行相应处理。 ## 🔄 更新日志 ### v1.0 - 🎉 初始版本发布 - 🛡️ 基础领地保护功能 - 🌍 多维度支持 - 🖥️ 添加图形用户界面 - 📊 实现实时进度监控 - 🔍 添加操作预览功能 - ✨ 新增额外保护距离功能 - 🎨 GUI进度条升级为真实进度显示 - 🐛 修复区块删除后的状态一致性问题 - ⚡ 优化大范围处理的性能和稳定性 ## 📞 技术支持 如果您在使用过程中遇到问题,请: 1. 检查上述故障排除部分 2. 确保按照安装要求正确配置环境 3. 查看程序日志中的详细错误信息 4. 在测试环境中重现问题 ## 📄 许可证 本项目采用 **GNU Affero General Public License v3.0 (AGPL-3.0)** 授权。 - 当您修改并部署或以网络服务形式提供本项目时,您必须在同等许可下对外提供完整源代码。 - 详见本仓库根目录的 `LICENSE` 文件。 致谢(Attribution): - 本项目基于 [Amulet-Core](https://github.com/Amulet-Team/Amulet-Core) 提供的底层读写能力进行世界数据的操作与保存,特此感谢其开源生态与文档支持。[Amulet-Core GitHub 仓库](https://github.com/Amulet-Team/Amulet-Core) --- **⚡ 让我们一起打造更好的Minecraft服务器体验!** 🎮 [/MD]
  • 1756254973217.webp
    1756254973217.webp
    91.9 KB · 查看: 28
  • 1756255025252.webp
    1756255025252.webp
    170.8 KB · 查看: 25
  • 1756255035500.webp
    1756255035500.webp
    282.9 KB · 查看: 26
  • 喜欢
反馈: GXH
作者
DEVILENMO
下载
31
查看
1,303
首次发布
最后更新

评分

0.00 星 0 次评分

DEVILENMO 的其他资源

后退
顶部 底部