一款适用于 Endstone 插件加载器的玩家行为记录查询插件。
天眼插件使用 Endstone 的事件 API 进行行为事件的记录,可以对以下行为事件进行记录:
玩家对方块和部分实体进行的交互事件均会被记录。
玩家直接破坏方块和实体爆炸破坏方块行为事件均会被记录。玩家间接破坏方块,如踩坏耕地等,无法触发事件;非玩家实体对方块的操作不会触发事件,除非自己爆炸。
除了配置文件中被排除的实体,所有实体受到伤害时均会被记录。部分特殊实体,比如画被攻击是直接被移除,无法触发伤害事件。
插件将对全部玩家直接实行的方块放置行为事件进行记录。
所有活塞自身行为会被记录,但是被推动的方块无法记录。
天眼插件支持玩家加服信息显示功能。当玩家加入服务器时,将显示玩家的系统名称和设备ID。
插件可以通过封禁设备ID将使用此设备ID的设备拉入封禁名单,使得使用该设备(设备ID不变)的任何玩家都无法进入服务器。使用过封禁设备的玩家,若更换设备,会自动追加新设备到封禁名单中。
自动封禁规则:
- 当玩家在服务器内短时间发送大量消息(10秒内6条消息)时,将被自动封禁24小时
- 当玩家在服务器内短时间发送大量命令(10秒内12条命令)时将被自动封禁24小时
天眼插件支持复原玩家直接造成的方块破坏与方块放置以及实体爆炸造成的破坏,其原理是简单的使用了 setblock 命令从数据库中还原了方块,暂不支持还原箱子内容物之类的细节。
天眼插件支持查看在线玩家的物品栏内的物品信息。
天眼插件提供了 WebUI 面板,可以在浏览器中访问面板,查看行为记录。 启用WebUI功能需要在配置文件中修改"enable_web_ui"为true。 WebUI被启动后,会在插件数据目录下生成WebUI配置文件web_config.json:
{
"secret": "your_secret",
"backend_port": 8098
}secret: WebUI 访问密钥,用于验证身份backend_port: WebUI 端口
运行WebUI需要以下pip包:fastapi uvicorn,WebUI在运行时会自动安装pip包。
你可以通过服务器IP:WebUI端口访问WebUI面板,例如,默认端口为8098,访问地址为http://127.0.0.1:8098。
你也可以在WebUI指定连接后端IP和端口。
这一步请参考 Endstone 官方文档。
- 在 Release 页面下载最新版本的插件
- 解压出插件文件与数据文件夹
- 放在服务端目录的
plugins目录下 - 运行服务器即可使用
运行天眼插件后,将自动在服务端目录的 plugins 目录下生成 tianyan_data 文件夹,并自动生成 config.json 文件。语言文件不会自动生成,请从github仓库下载。
默认配置如下:
{
"10s_command_max": 12,
"10s_message_max": 6,
"enable_web_ui": false,
"language": "zh_CN",
"no_log_mobs": [
"minecraft:zombie_pigman",
"minecraft:zombie",
"minecraft:skeleton",
"minecraft:bogged",
"minecraft:slime"
]
}配置项说明:
10s_command_max: 10秒内玩家可使用命令的最大次数10s_message_max: 10秒内玩家可发送消息的最大次数enable_web_ui: 是否启用 WebUIlanguage: 插件语言no_log_mobs: 不被记录的实体列表
在涉及实体事件中,除非使用命名牌,否则不会记录
no_log_mobs中的实体。
插件配置默认使用中文,可以通过修改 config.json 中的 language 项更改语言。支持的语言可在 language 文件夹查看。
示例:要修改为英文时,修改 language 项为 "en_US"。
/ty <半径> <时间(单位:小时)>
无参数则将弹出快捷菜单,玩家可在菜单中查询。最大可查询半径为100(格),最大可查询时间为672(小时)。(查询数据超过25000条时,将截断查询,只显示25000条数据)
/tys <时间(单位:小时)> [搜索对象类型] [搜索对象关键词]
无参数则将弹出快捷菜单,玩家可在菜单中查询。最大可查询半径和时间无限。(查询数据超过25000条时,将截断查询,只显示25000条数据)
搜索对象类型:
source_id: 行为源IDsource_name: 行为源名称target_id: 行为目标IDtarget_name: 行为目标名称
示例:搜索2小时内名为"ZhangSan"的玩家实施的行为
/tys 2 source_name "ZhangSan"
搜索特定行为类型:
/tys <时间(单位:小时)> <action> <搜索行为类型>
搜索行为类型:
block_break: 方块破坏block_place: 方块放置entity_damage: 实体伤害player_right_click_block: 玩家右键方块player_right_click_entity: 玩家右键实体entity_bomb: 实体爆炸block_break_bomb: 方块爆炸piston_extend: 活塞弹出piston_retract: 活塞收回entity_die: 实体死亡player_pickup_item: 玩家拾取物品
示例:搜索2小时内的玩家方块放置行为
/tys 2 action block_place
/tyo 玩家名
/ban-id <设备ID> [理由]
/unban-id <设备ID>
/banlist-id
/tyclean <时间(单位:小时)>
此命令可清理数据库中超过指定时间的日志。
/density [区域大小(单位:格)]
此命令可以在服务器内查找实体密度最高的区域,并支持传送到该区域。区域大小代表单个搜索区域(正方体)的边长。
/tyback <半径> <时间(单位:小时)> <行为类型> <关键词>
此命令能够恢复玩家或实体部分行为。包括:玩家对方块的直接破坏与放置、实体爆炸产生的方块破坏、实体的死亡、玩家交互造成方块的变化。其中实体死亡不会还原毛色、年龄等属性;玩家制造的含水方块无法被还原为原始状态。其原理为使用setblock和summon命令从日志数据库中还原。 无参数则将弹出快捷菜单,玩家可在菜单中查询。最大可恢复半径为100(格),时间无限。(查询数据超过25000条时,将截断查询,只恢复25000条数据。实际可恢复半径受区块影响,超出setblock命令和summon命令的极限距离将无法恢复,需要靠近再来一次)
- Fork 项目
- 在自己 fork 的分支中,使用 Action 运行构建
- 几分钟后即可看到构建结果
- Release 需要在自己的 Action 中配置一个名为
RELEASE_TOKEN的密钥
按照 Endstone 文档配置好开发环境:
- Linux 需要安装 sqlite3 开发库
- Windows 需要使用 vcpkg 或其它包管理工具 安装 sqlite3 静态开发库
克隆项目代码:
git clone https://github.com/yuhangle/endstone-tianyan-plugin.git使用你喜欢的开发工具打开代码目录,以 CLion 为例,在构建中点击构建项目,即可构建插件。
其中,如果使用 vcpkg ,Windows需要为 CMake 配置以下参数:
-DCMAKE_TOOLCHAIN_FILE="{Your vcpkg path}\scripts\buildsystems\vcpkg.cmake" \
-DVCPKG_TARGET_TRIPLET=x64-windows-static