AdvancedReplay 1.8 - 1.16 1.6.4

Record, Replay, Repeat

  1. Jumper251
    Native Minecraft Version:
    Legacy (< 1.13)
    Tested Minecraft Versions:
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    • 1.15
    • 1.16
    Source Code:
    https://github.com/Jumper251/AdvancedReplay

    AdvancedReplay

    AdvancedReplay is a Replay system for Spigot 1.8 - 1.16.
    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.


    [​IMG]


    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
    If you encounter any bugs please report them to me.



    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:
    Code (YAML):
    # General plugin settings
    general
    :

      # Maximum length of a replay in seconds
      max_length
    : 3600
     
      # 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

      # 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
     
      # This message is displayed when a player dies
      death_message
    : '&6{name} &7died.'
     
      # This message is displayed when a player leaves the game
      quit_message
    : '&6{name} &7left the game.'

      # This message is displayed when a player joins the game
      join_message
    : '&6{name} &7joined the game.'

    # Configuration of the replaying settings
    replaying
    :
      world
    :
       # Reset block changes after watching a replay?
        reset_changes
    : false

    # 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> [<Players ...>] - Starts recording a new Replay
    /replay stop <Name> [-nosave] - 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.

    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;
        }
    });

    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
             
                }
            });

    Code (Java):
    @EventHandler
    public void onReplayFinished(ReplaySessionFinishEvent e) {
        Player player = e.getPlayer();
        Replay replay = e.getReplay();
    }

    Dependencies


    ProtocolLib - https://www.spigotmc.org/resources/protocollib.1997/
    Salim159, ali_hamza, Wixend and 9 others like this.

Recent Reviews

  1. MatteG
    MatteG
    5/5,
    Version: 1.6.4
    Really good plugin, i am trying to use it for a project i have in mind i tried to use the api but it doesn't seem to work, if anyone can help me my discord tag is this k2enny#0001
  2. 119
    119
    5/5,
    Version: 1.6.4
    Your plugin is awesome but I've found a bug I want to submit it :
    For my minigame, I need that players have only one heart. But it seems that AdvancedReplay don't like this, probably because the plugin record also the player's life and don't expect that the player don't have 10 hearts.

    [Image of the heart]
    https://media.discordapp.net/attachments/810975846088048750/832932092006105088/unknown.png

    I've try every version of the plugin to see if that will work but unfortunally that didn't work

    So there is the error from the console :
    Caused by: java.lang.IllegalArgumentException: Health must be between 0 and 2.0, but was 20.0. (attribute base value: 2.0, player: _Saito27_)
    at org.bukkit.craftbukkit.v1_8_R3.entity.CraftLivingEntity.setHealth(CraftLivingEntity.java:83) ~[patched.jar:git-PaperSpigot-"4c7641d"]
    at me.jumper251.replay.replaysystem.replaying.ReplaySession.startSession(ReplaySession.java:35) ~[?:?]
    at me.jumper251.replay.replaysystem.replaying.ReplaySession.<init>(ReplaySession.java:27) ~[?:?]
    at me.jumper251.replay.replaysystem.replaying.Replayer.<init>(Replayer.java:53) ~[?:?]
    at me.jumper251.replay.replaysystem.Replay.play(Replay.java:51) ~[?:?]
    at me.jumper251.replay.commands.ReplayCommand.onCommand(ReplayCommand.java:126) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[patched.jar:git-PaperSpigot-"4c7641d"]
    ... 15 more
    1. Jumper251
      Author's Response
      That should not happen on the latest version, you should open a Conversation or use the Discussion to report errors.
  3. Flomimo
    Flomimo
    4/5,
    Version: 1.6.4
    Sehr schönes Plugin, funktioniert super und ist echt sehr nützlich, support ist sehr schnell. Jedoch nur 4 Sterne, weil man am Anfang eines Replays nicht den stand vom Replay sieht, sondern den vom nach Replay
  4. tornadostorm
    tornadostorm
    3/5,
    Version: 1.6.4
    Hi i wanna ask you is there any way so that when i start the replay and look over it it doesetn effect player data
    1. Jumper251
      Author's Response
      Please do not use the reviews to ask for support.
  5. Alexx1264467
    Alexx1264467
    1/5,
    Version: 1.6.4
    plugin doesn't work on 1.16.5....................................................
  6. Juali
    Juali
    5/5,
    Version: 1.6.4
    This plugin is amazing, but one question is there a app on mobile that can open the .replay file
    1. Jumper251
      Author's Response
      No, only the plugin can open replay files.
  7. Welder_lag
    Welder_lag
    5/5,
    Version: 1.6.3
    Thanks to a quick answer from the author, I found out that an update to ProtocolLib to version 1.16.2 was released an hour ago and the plugin is now working.
  8. dareal_black
    dareal_black
    1/5,
    Version: 1.6.3
    I lost all my items, you cant leave! It just freezes the player. Please help me I lost all my stuff I worked for months. Is there any way to recover? I really need to get my stuff back. It says "An Internal error accoured" I don't recommend this plugin AT ALL! My friend also lost all his work.
  9. FearTheArchitect
    FearTheArchitect
    1/5,
    Version: 1.6.3
    /leave doesn't work and when u restart the server when your in replay mode you lose all your stuff. I Don't recommend this plugin.
  10. MrRedo
    MrRedo
    2/5,
    Version: 1.6.3
    Hey i used it i lost all my stuff to this plugin and i cant exit replay Plz fix it its very annoying
    1. Jumper251
      Author's Response
      I can't help you without any details.