服务器使用量
未统计
服务玩家数
未统计
下载量
88,827
插件详细介绍
AdvancedReplay 是一款适用于 Spigot 1.8 至 1.21 服务器的回放系统。它可以录制服务器上玩家的活动,并将录制数据保存到文件或数据库中,以便你随时观看回放。目前,它几乎能记录玩家的所有行为,并可通过命令轻松控制。本插件需要 ProtocolLib 才能运行。
核心功能
- 回放控制:观看回放时,你可以使用多种工具控制回放进程,例如暂停、调整速度、传送到特定玩家位置等。
- 易于使用的 API:AdvancedReplay 提供了丰富的 API 用于自定义,包括更改回放保存方式以及添加和回放自定义数据。详情请参阅 API 部分。
- 录制数据:AdvancedReplay 目前能够录制生物实体、物品和抛射物。具体包括:
- 玩家移动
- 玩家动作(进食、手臂动画等)
- 物品栏变更
- 元数据更新
- 抛射物
- 掉落物
- 玩家造成的方块变化
- 聊天消息
如果你遇到任何错误,请向我报告。
配置说明
你可以在 config.yml 中配置插件和录制数据的一些常规设置。如果你想使用数据库,还需要设置 mysql.yml。
若要禁用某个通知或消息,只需将其留空即可。
以下是示例配置及部分说明
config.yml
# 通用插件设置
general:
# 回放的最大长度(秒)
max_length: 3600
# 在服务器启动时创建新录制(需启用 save_on_stop 和 add_new_players)
record_on_startup: false
# 是否在服务器关闭/回放达到最大长度时保存回放?
save_on_stop: false
# 是否将回放保存到 MySQL 数据库?(启用后需配置 mysql.yml)
use_mysql: false
# 将回放保存到 S3 兼容存储(启用后需配置 s3.yml)
use_s3: false
# 在离线模式下,插件是否从 Mojang 获取皮肤数据?(录制大量玩家时可能降低服务器速度)
use_offline_skins: true
# 设置移动记录的精细度。质量越高,回放文件越大(选项:high, medium, low)
quality: high
# 自动删除超过指定天数(天)的回放(使用 -1 禁用)
cleanup_replays: -1
# 是否隐藏所有未参与回放的玩家?
hide_players: false
# 录制开始后,新加入的玩家是否会被添加到所有正在进行的录制中?
add_new_players: false
# AdvancedReplay 是否检查新更新?
update_notifications: true
# 回放设置配置
replaying:
world:
# 观看回放后是否重置方块变化?
reset_changes: false
# 如何显示回放进度?(选项:action_bar, xp_bar, none)
progress_display: action_bar
# 录制数据配置
recording:
blocks:
# 是否启用方块变化记录?
enabled: true
# 回放时是否使用真实的方块变化?
real_changes: true
entities:
# 是否启用所有生物实体记录?
enabled: true
items:
# 是否启用物品记录?
enabled: true
chat:
# 是否启用聊天消息记录?
enabled: true
# 记录的聊天消息格式
format: '&r<{name}> {message}'命令与权限
/replay- 显示所有命令的概览/replay start [名称]:[时长] [<玩家 ...>]- 开始录制一个新的回放/replay stop <名称> [-nosave|-force]- 停止并保存一个回放/replay play <名称>- 开始播放一个已录制的回放/replay jump <时间>- 跳转到回放的特定时刻/replay leave- 离开你正在观看的回放/replay info <名称>- 查看某个回放的信息/replay delete <名称>- 删除一个已存在的回放/replay list [页码]- 列出所有可用的回放/replay reload- 重新加载配置
权限节点:replay.command.<命令> - 对应特定命令的权限。
API 使用
所有 API 方法均可通过 ReplayAPI 类访问。
注册一个 ReplaySaver
ReplayAPI.getInstance().registerReplaySaver(new IReplaySaver() {
@Override
public void saveReplay(Replay replay) {
ReplayData data = replay.getData();
// 当需要保存新回放时调用
}
@Override
public boolean replayExists(String replayName) {
// 如果回放存在则返回 true
return false;
}
@Override
public void loadReplay(String replayName, Consumer<Replay> consumer) {
// 加载 ReplayData 并向 consumer 返回一个新的回放
consumer.accept(new Replay(replayName, new ReplayData()));
}
@Override
public void deleteReplay(String replayName) {
// 当需要删除一个已存在的回放时调用
}
@Override
public List<String> getReplays() {
// 返回所有可用的回放
return null;
}
});注册自定义的 ReplayHook
ReplayAPI.getInstance().registerHook(new IReplayHook() {
@Override
public PacketData onRecord(String playerName) {
/*
* 录制时,每个游戏刻对每个被录制的玩家调用一次。
* 返回一个包含你想要添加的数据的 PacketData。
*/
return null;
}
@Override
public void onPlay(ActionData data, Replayer replayer) {
String name = data.getName();
PacketData packetData = data.getPacketData();
// 当需要播放先前录制的动作时调用
}
});回放事件
@EventHandler
public void onReplayFinished(ReplaySessionFinishEvent e) {
Player player = e.getPlayer();
Replay replay = e.getReplay();
}依赖
- ProtocolLib - https://www.spigotmc.org/resources/protocollib.1997/
- ProtocolLib 开发构建版 - 需要最新的 ProtocolLib 开发构建版本。
测试支持版本
版本分布
基本信息
插件名称
AdvancedReplay 1.8 - 26.1
作者
Jumper251
平台
Bukkit / Spigot
支持版本
1.8 - 1.21
点赞数
22
最近版本
暂无数据
-