# ChunkDeleter
一个适用于 Paper/Folia 服务器的高级区块清理插件,它可以自动删除玩家指定时间段内未进入的区块。
## 特性
### 🚀 高级调度
- **Folia 支持**: 完整兼容 Folia 的线程区域调度器
- **Paper/Spigot 支持**: 对于 Paper/Spigot 服务器,回退到标准调度器
- **线程安全**: 所有操作使用适当的调度器以确保线程安全
- **PerfoBooster 集成**: 自动检测和优化与 PerfoBooster 插件
### 🛡️ 智能保护系统
- **生成点保护**: 保护世界生成点附近的区块
- **玩家保护**: 保护附近在线玩家的区块
- **结构保护**: 保护包含重要结构(传送门、信标等)的区块
- **瓦尔单位保护**: 保护包含存储方块、熔炉和其他重要方块的区块
- **建筑检测**: 识别玩家建造的结构并保护它们
### ⚙️ 灵活配置
- **CamelCase 配置**: 现代、整洁的配置格式
- **可配置的时间限制**: 设置区块必须处于未使用状态多长时间才能删除
- **宽限期**: 标记和宽限期两阶段删除
- **世界特定设置**: 针对特定世界启用/禁用
- **性能调整**: 可调整的批次大小和处理限制
### 📊 基本跟踪与日志记录
- **SQLite 数据库**: 高效的区块访问跟踪
- **文件日志记录**: 详细的区块删除日志保存在 `logs/latest.txt` 中
- **坐标日志记录**: 精确的区块和方块坐标跟踪
- **统计信息**: 详细的已扫描、已删除和已保护区块的统计信息
- **实时监控**: 实时跟踪区块访问
### 🎛️ 易于管理
- **游戏内命令**: 全面的命令界面进行管理
- **日志管理**: 在游戏中查看、追踪和清除日志文件
- **权限系统**: 细粒度的权限控制
- **热重载**: 在不重启的情况下重新加载配置
- **手动清理**: 手动触发清理周期
- **自动优化**: 一键安装 PerfoBooster
## 安装
1. 下载 ChunkDeleter JAR 文件
2. 将其放置在服务器的 `plugins` 文件夹中
3. 重启服务器
4. 在 `plugins/ChunkDeleter/config.yml` 中配置插件
5. (可选) 使用 `/chunkdeleter optimize` 安装 PerfoBooster 以获得更好的性能
## 命令
### 核心命令
- `/chunkdeleter help` - 显示帮助信息
- `/chunkdeleter reload` - 重新加载插件配置
- `/chunkdeleter stats` - 显示区块统计信息
- `/chunkdeleter clean` - 手动触发清理
- `/chunkdeleter toggle` - 启用/禁用区块删除
- `/chunkdeleter info` - 显示插件信息
### 高级命令
- `/chunkdeleter optimize` - 下载并安装 PerfoBooster 插件
- `/chunkdeleter logs` - 查看日志文件信息
- `/chunkdeleter logs tail [lines]` - 显示最近的日志条目(1-50 行)
- `/chunkdeleter logs clear` - 清除日志文件
- `/chunkdeleter debug` - 切换调试模式(仅限管理员)
**别名**: `/cd`, `/chunkdel`
## 权限
- `chunkdeleter.*` - 访问所有功能(默认:op)
- `chunkdeleter.admin` - 全面管理访问权限
- `chunkdeleter.reload` - 重新加载配置的权限
- `chunkdeleter.stats` - 查看统计信息
- `chunkdeleter.clean` - 触发手动清理
- `chunkdeleter.toggle` - 启用/禁用插件
- `chunkdeleter.optimize` - 下载 PerfoBooster 插件
- `chunkdeleter.logs` - 查看和管理日志文件
## 配置
插件使用现代的 camelCase 配置格式。配置文件包括:
```yaml
# 启用/禁用插件
enabled: true
# 区块删除设置
chunkDeletion:
timeBeforeDeletion: 30 # 删除前区块需要未使用的分钟数
maxChunksPerCycle: 50 # 每个周期处理的最大区块数
cleanupInterval: 300 # 清理间隔,单位秒
immediateDeletion: false # 启用立即删除或使用宽限期
gracePeriod: 5 # 标记区块的宽限期,单位分钟
# 世界设置
worlds:
enabledWorlds: [] # 要启用的特定世界(空 = 所有世界)
disabledWorlds: # 要排除的世界
- "world_nether"
- "world_the_end"
spawnProtectionRadius: 10 # 保护生成点周围的区块半径
# 保护设置
protection:
protectPlayerChunks: true # 保护附近玩家的区块
playerProtectionRadius: 3 # 玩家保护半径,单位区块
protectStructures: true # 保护包含结构的区块
protectTileEntities: true # 保护包含存储/功能性方块的区块
minTileEntities: 1 # 保护区块所需的最小瓦尔单位数
# 性能设置
performance:
asyncScanning: true # 使用异步处理
maxProcessingTimePerTick: 10 # 每个滴度最大处理时间(毫秒)
batchSize: 25 # 操作的批处理大小
# 日志设置
logging:
logDeletions: true # 将区块删除记录到控制台
logStatistics: true # 定期记录统计信息
statisticsInterval: 60 # 统计间隔,单位分钟
debug: false # 启用调试日志记录
# 数据库设置
database:
type: SQLITE # 数据库类型 (SQLITE, MYSQL 或 MEMORY)
sqliteFile: "chunkdata.db" # SQLite 文件名
mysql: # MySQL 设置(如果使用 MYSQL)
host: "localhost"
port: 3306
database: "chunkdeleter"
username: "username"
password: "password"
```
## 日志系统
ChunkDeleter 包含一个基本日志系统,用于跟踪所有区块删除:
### 日志文件位置
- **路径**: `logs/latest.txt` (在您的服务器根目录下)
- **格式**: 带详细坐标信息的带时间戳的条目
- **线程安全**: 适用于并发访问和高性能服务器
### 日志条目格式
```
[2024-01-15 14:30:25] CHUNK_DELETED: World=world, ChunkCoords=[15,11], BlockRange=[240,176] to [255,191], Info=Automatic cleanup
[2024-01-15 14:31:02] Manual cleanup triggered by admin
[2024-01-15 14:35:10] Cleanup cycle: Processed 45, Deleted 12, Protected 33 chunks
```
### 日志管理命令
- `/chunkdeleter logs` - 查看日志文件信息和统计信息
- `/chunkdeleter logs tail 20` - 显示最近的 20 条日志条目
- `/chunkdeleter logs clear` - 清除日志文件(仅限管理员)
## PerfoBooster 集成
ChunkDeleter 自动检测并集成 PerfoBooster 以实现最佳性能:
### 自动检测
- **版本兼容性**: 检查 Minecraft 1.20.1 和区域调度器支持
- **服务器兼容性**: 验证 Paper/Folia/Purpur 服务器软件
- **安装警告**: 如果推荐使用 PerfoBooster 但未安装,则显示警告
### 简单安装
- **一键安装**: 使用 `/chunkdeleter optimize` 自动下载并安装 PerfoBooster
- **版本管理**: 始终下载最新的兼容版本
- **安全检查**: 防止在不兼容的服务器上安装
### 性能优势
当在兼容服务器上安装 PerfoBooster 时:
- 在区块操作期间减少服务器延迟
- 优化红石和实体处理
- 增强大规模区块清理操作的性能
## 工作原理
1. **区块跟踪**: 插件使用移动和传送事件跟踪玩家进入区块的时间
2. **数据库存储**: 将访问时间存储在 SQLite 数据库中以进行持久化
3. **定期清理**: 可配置的清理周期检查旧区块
4. **保护检查**: 多个保护系统防止重要区块被删除
5. **安全删除**: 安全卸载并从跟踪中移除区块
6. **基本日志记录**: 所有操作都记录带详细坐标和时间戳
## 性能考虑
- **异步处理**: 大多数操作以异步方式运行,以避免服务器延迟
- **批处理**: 区块以可配置的批次进行处理
- **高效数据库**: 具有优化查询和索引的 SQLite
- **智能缓存**: 频繁访问的区块缓存在内存中
- **Folia 优化**: 使用区域调度器实现最佳 Folia 性能
- **PerfoBooster 集成**: 借助 PerfoBooster 插件实现增强的性能
## 兼容性
- **Minecraft**: 1.20 (PerfoBooster 需要 1.20.1)
- **服务器软件**: Paper, Folia, Purpur, Spigot
- **Java**: 17
- **可选依赖项**: PerfoBooster (可自动安装)
## 支持
如需支持,请加入 discord: https://discord.gg/yUghaxRSZs