Skip to content

Latest commit

 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AntiDestroy

Server Java Folia Build

AntiDestroy 是一款面向 Luminol 的危险物品操作审计插件。它会记录操作结果、写入文件或 MySQL,并向有权限的在线管理员发送通知。

插件只负责审计,不会主动取消或拦截事件。监听器在 MONITOR 阶段记录操作结果,包括成功和已取消状态,因此可以与现有的领地、权限和保护插件配合使用。

功能

  • 审计危险方块放置、岩浆桶倒出、TNT 点燃、末地水晶放置和 TNT 矿车放置等操作。
  • 审计危险物品交互,以及危险物品进入箱子等外部容器的操作。
  • 记录操作状态、玩家、物品、数量、领地、坐标和上下文。
  • 支持文件与 MySQL 两种存储模式,所有文件和数据库 I/O 均异步执行。
  • MySQL 模式提供 CoreProtect 风格的组合 lookup 查询、彩色结果和可点击分页。
  • 提供彩色 status 页面,显示存储队列、丢失记录、连接池、通知、Residence 和 JVM 状态。
  • 使用 MiniMessage 格式向拥有通知权限的在线管理员发送消息。
  • 可选对接 Residence,以记录操作所在的领地。
  • 遵循 Folia 调度模型,并按任务所有权使用 EntityRegionGlobalAsync 调度路径。

环境要求

项目 要求
服务端 Luminol 26.2 (Build 726)
Java 25
可选依赖 Residence 6.0.0.1
可选数据库 MySQL 8.0+

当前版本仅面向 Luminol 26.2 (Build 726),不再支持 Luminol 1.21.11。项目已按照 Folia 调度模型实现,但 folia-supported: true 只代表服务端允许加载插件,不能替代生产环境验证。

使用 Residence 集成功能前,请确认所安装的 Residence 版本兼容 Luminol 26.2。部署到生产环境前,请在目标服务端验证插件加载、危险物品审计、文件或 MySQL 写入、断线处理、查询、重载、关闭和管理员通知。

安装

  1. GitHub Releases 获取 AntiDestroy-1.1.0.jar,或自行构建项目。
  2. 将 JAR 放入服务器的 plugins 目录。
  3. 启动服务器后,按需修改 plugins/AntiDestroy/config.yml
  4. 运行 /antidestroy reload 重新加载配置。

命令与权限

命令 说明 权限
/antidestroy reload 异步重新加载配置 antidestroy.reload
/antidestroy on 开启管理员通知 antidestroy.toggleantidestroy.reload
/antidestroy off 关闭管理员通知 antidestroy.toggleantidestroy.reload
/antidestroy lookup [过滤器...] 查询 MySQL 审计记录 antidestroy.lookup
/antidestroy status 查看彩色运行状态 antidestroy.status
权限 说明 默认值
antidestroy.notify 接收审计通知 OP
antidestroy.reload 重新加载配置 OP
antidestroy.toggle 切换管理员通知 OP
antidestroy.lookup 查询 MySQL 审计记录 OP
antidestroy.status 查看插件运行状态 OP

Lookup 过滤器

过滤器顺序不限,可以组合使用;多个过滤器之间为 AND 条件。不带过滤器时显示最新记录,每页固定 4 条。

过滤器 含义 示例
u: 玩家名或标准 UUID u:cloudfl4re
t: 最近一段时间,支持 mhdw t:2h
r: 玩家当前位置同世界内的水平半径,范围 1–1000 r:30
a: 精确操作名称 a:使用
i: Minecraft 物品或方块 i:minecraft:tnt
world: 精确世界名称 world:world
status: 成功被拦截successblocked status:被拦截
page: 页码 page:2

例如:

/antidestroy lookup u:cloudfl4re t:2h i:minecraft:tnt status:成功 page:1

玩家可以点击黄色页码和前后翻页按钮。记录使用青色、黄色、绿色、红色和灰色区分玩家、物品、成功、拦截与辅助信息;悬停记录可查看完整时间、UUID、物品键、领地、上下文和坐标。控制台支持除 r: 外的过滤器。

配置

dangerous-materials:
  - LAVA_BUCKET
  - TNT
  - END_CRYSTAL
  - RESPAWN_ANCHOR
  - FLINT_AND_STEEL
time-zone: Asia/Shanghai
notification-format: "<red>[AntiDestroy]</red> 玩家={player} 时间={time} 状态={status} 操作={action} 物品={item} 数量={amount} 领地={territory} 坐标={world},{x},{y},{z} 目标={context}"
storage:
  type: file
  mysql:
    host: 127.0.0.1
    port: 3306
    database: antidestroy
    username: root
    password: change_me
    maximum-pool-size: 10
    connection-timeout-ms: 10000
    ssl-mode: PREFERRED

dangerous-materials 用于配置需要审计的物品和方块。默认配置还包含 TNT 矿车、16 种床、火焰弹和凋灵骷髅头颅等条目。

time-zone 使用 IANA 时区名称,例如 Asia/Shanghainotification-format 使用 MiniMessage 格式,并且必须保留以下占位符:

{player} {time} {status} {action} {item} {amount}
{territory} {world} {x} {y} {z} {context}

岩浆桶倒出和玩家点燃 TNT 始终会产生审计记录;其余大部分监听项由 dangerous-materials 控制。

storage.type 只接受 filemysql

  • file 是默认模式,记录写入 plugins/AntiDestroy/logs.log,不支持 lookup
  • mysql 只写 MySQL,不同时写 logs.log。插件会自动创建 antidestroy_schema_versionantidestroy_audit
  • MySQL 启动连接或 schema 初始化失败时,AntiDestroy 会禁用,避免悄悄切换存储导致查询结果不完整。
  • 修改存储配置后执行 reload,插件会先异步验证新后端,成功后原子替换;失败时继续使用旧配置和旧后端。
  • 写入失败会按 1、2、4 秒最多重试 3 次。若 commit 结果不确定,为避免重复记录不会重试,并保守计入 lost。

MySQL 用户至少需要目标数据库的 CREATESELECTINSERT 权限。ssl-mode 支持 DISABLEDPREFERREDREQUIREDVERIFY_CAVERIFY_IDENTITY。密码不会出现在 status 或安全错误信息中。

审计日志

文件模式的日志位于 plugins/AntiDestroy/logs.log。MySQL 模式将同样的结构化字段保存到数据库。每条记录包含时间、玩家名、UUID、操作状态(成功或被拦截)、操作类型、物品、数量、领地、世界、坐标和上下文。

安装 Residence 后,日志中的领地字段会显示解析到的领地名称;未安装 Residence 或 API 不可用时,该字段会显示对应状态。

构建

Windows:

.\gradlew.bat clean build

Linux 或 macOS:

./gradlew clean build

构建完成后,JAR 位于 build/libs/AntiDestroy-1.1.0.jar。JAR 已包含 HikariCP 与 MySQL Connector/J,服务器无需单独安装 JDBC 驱动。

许可证

本项目采用 GNU General Public License v3.0 许可 (SPDX: GPL-3.0-only)。

作者

cloudfl4re

About

Audit dangerous item use and notify Minecraft server administrators

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages