ModsJava
AdvancedReplay 1.8 - 26.1
Java mod listed for Minecraft 1.8–1.19. Downloads from the MC Java Mods app on Android.
⬇ Download on SpigotAdvancedReplay
AdvancedReplay is a Replay system for Spigot 1.8 & 26.1.
It can record players on your Server and save the recorded data to a file or database, so you can watch the replays at any time. Currently it records almost every action a player does and can be easily controlled with the commands.
This Plugin needs ProtocolLib to run.
Features
Replaying: When watching a replay you have a variety of tools to control the replay. For example, you can pause it, change the speed, teleport to one of the players and more.
Easy to use API: AdvancedReplay comes with a lot of possibilities for customization with the api, including a way to change how replays are saved and a possibility to add and replay your own data.
For more details take look at the API section.
Recorded Data:
AdvancedReplay is currently able to record living entities, items and Projectiles.
- Player movements
- Player actions (Eating, Arm animations & more)
- Inventory changes
- Metadata updates
- Projectiles
- Dropped Items
- Block changes by players
- Chat messages
Configuration
In the config.yml you can configure some general settings about the plugin and the recorded data If you want to use a database you also need to set up the mysql.yml.
If you want to disable a notification or message just leave it empty.
Example config with some explanations:
Spoiler: config.yml
Code (YAML):
# General plugin settings
general :
# Maximum length of a replay in seconds
max_length : 3600
# Create a new recording on startup
# save_on_stop and add_new_players should be enabled
record_on_startup : false
# Should the Replay be saved on shutdown/when the maximum length is exceeded?
save_on_stop : false
# Should the plugin save the Replays to a mysql database?
# If enabled you need to configure the mysql.yml
use_mysql : false
# Save the Replays to an S3 compatible Storage
# If enabled you need to configure s3.yml
use_s3 : false
# If enabled in offline mode, the plugin will fetch the skin data from Mojang
# Can slow down the server when recording a lot of players
use_offline_skins : true
# Change how detailed movement is recorded. Better quality results in larger replays
# Options: high, medium, low
quality : high
# Automatically delete replays after a specific amount of time (days)
# Use -1 to disable
cleanup_replays : -1
# Hide all players that are not participating in a replay
hide_players : false
# Should players when they join after a recording started be added to all running recordings
add_new_players : false
# Should AdvancedReplay check for new updates?
update_notifications : true
# Configuration of the replaying settings
replaying:
world :
# Reset block changes after watching a replay?
reset_changes : false
# How should the replay progress be displayed
# Options: action_bar, xp_bar, none
progress_display : action_bar
# Configuration of the recording data
recording:
blocks :
# Enable recording of block changes?
enabled : true
# Use real block changes when replaying?
real_changes : true
entities :
# Enable recording of all living entities?
enabled : true
items :
# Enable recording of items?
enabled : true
chat :
# Enable recording of chat messages?
enabled : true
# Format of recorded chat messages
format : '&r< {name }> {message }'
general :
# Maximum length of a replay in seconds
max_length : 3600
# Create a new recording on startup
# save_on_stop and add_new_players should be enabled
record_on_startup : false
# Should the Replay be saved on shutdown/when the maximum length is exceeded?
save_on_stop : false
# Should the plugin save the Replays to a mysql database?
# If enabled you need to configure the mysql.yml
use_mysql : false
# Save the Replays to an S3 compatible Storage
# If enabled you need to configure s3.yml
use_s3 : false
# If enabled in offline mode, the plugin will fetch the skin data from Mojang
# Can slow down the server when recording a lot of players
use_offline_skins : true
# Change how detailed movement is recorded. Better quality results in larger replays
# Options: high, medium, low
quality : high
# Automatically delete replays after a specific amount of time (days)
# Use -1 to disable
cleanup_replays : -1
# Hide all players that are not participating in a replay
hide_players : false
# Should players when they join after a recording started be added to all running recordings
add_new_players : false
# Should AdvancedReplay check for new updates?
update_notifications : true
# Configuration of the replaying settings
replaying:
world :
# Reset block changes after watching a replay?
reset_changes : false
# How should the replay progress be displayed
# Options: action_bar, xp_bar, none
progress_display : action_bar
# Configuration of the recording data
recording:
blocks :
# Enable recording of block changes?
enabled : true
# Use real block changes when replaying?
real_changes : true
entities :
# Enable recording of all living entities?
enabled : true
items :
# Enable recording of items?
enabled : true
chat :
# Enable recording of chat messages?
enabled : true
# Format of recorded chat messages
format : '&r< {name }> {message }'
Videos
English:
German:
Commands/Permissions
/replay - Overview of all commands
/replay start [Name]:[Duration] [<Players ...>] - Starts recording a new Replay
/replay stop <Name> [-nosave|-force] - Stops and saves a Replay
/replay play <Name> - Starts a recorded Replay
/replay jump <Time> - Jump to a specific moment
/replay leave - Leave your Replay
/replay info <Name> - Information about a Replay
/replay delete <Name> - Deletes an existing Replay
/replay list [Page] - Lists all available Replays
/replay reload - Reloads the configuration
replay.command.<Command> - Permission for the specific command
API
All the methods of the API can be accessed with the ReplayAPI class.
Spoiler: Register a ReplaySaver
Code (Java):
ReplayAPI.
getInstance
(
).
registerReplaySaver
(
new IReplaySaver
(
)
{
@Override
public void saveReplay (Replay replay ) {
ReplayData data = replay. getData ( ) ;
// Will be called to save a new replay
}
@Override
public boolean replayExists ( String replayName ) {
// Return true if the replay exists
return false ;
}
@Override
public void loadReplay ( String replayName, Consumer <Replay > consumer ) {
// Load the ReplayData and return a new replay to the consumer
consumer. accept ( new Replay (replayName, new ReplayData ( ) ) ) ;
}
@Override
public void deleteReplay ( String replayName ) {
// Will be called to delete an existing replay
}
@Override
public List <String > getReplays ( ) {
// Return all available replays
return null ;
}
} ) ;
@Override
public void saveReplay (Replay replay ) {
ReplayData data = replay. getData ( ) ;
// Will be called to save a new replay
}
@Override
public boolean replayExists ( String replayName ) {
// Return true if the replay exists
return false ;
}
@Override
public void loadReplay ( String replayName, Consumer <Replay > consumer ) {
// Load the ReplayData and return a new replay to the consumer
consumer. accept ( new Replay (replayName, new ReplayData ( ) ) ) ;
}
@Override
public void deleteReplay ( String replayName ) {
// Will be called to delete an existing replay
}
@Override
public List <String > getReplays ( ) {
// Return all available replays
return null ;
}
} ) ;
Spoiler: Register your own ReplayHook
Code (Java):
ReplayAPI.
getInstance
(
).
registerHook
(
new IReplayHook
(
)
{
@Override
public PacketData onRecord ( String playerName ) {
/*
* Will be called every tick for every player that is being recorded.
* Return a PacketData containing the data that you want to add.
*/
return null ;
}
@Override
public void onPlay (ActionData data, Replayer replayer ) {
String name = data. getName ( ) ;
PacketData packetData = data. getPacketData ( ) ;
// Will be called whenever a previous recorded action should be played
}
} ) ;
@Override
public PacketData onRecord ( String playerName ) {
/*
* Will be called every tick for every player that is being recorded.
* Return a PacketData containing the data that you want to add.
*/
return null ;
}
@Override
public void onPlay (ActionData data, Replayer replayer ) {
String name = data. getName ( ) ;
PacketData packetData = data. getPacketData ( ) ;
// Will be called whenever a previous recorded action should be played
}
} ) ;
Spoiler: Replay Events
Code (Java):
@EventHandler
public void onReplayFinished (ReplaySessionFinishEvent e ) {
Player player = e. getPlayer ( ) ;
Replay replay = e. getReplay ( ) ;
}
public void onReplayFinished (ReplaySessionFinishEvent e ) {
Player player = e. getPlayer ( ) ;
Replay replay = e. getReplay ( ) ;
}
Dependencies
ProtocolLib - https://www.spigotmc.org/resources/protocollib.1997/
ProtocolLib Dev Builds - latest ProtocolLib dev build
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft versions listed: 1.8, 1.9, 1.10
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
AdvancedReplay 1.8 - 26.1 is a free Minecraft Java mod. Compatible with Minecraft 1.8, 1.9, 1.10, 1.11 and newer. Downloaded 92,247 times (via Spigot). Download it and open it directly in the game.