Continuous Paper replay recorder with isolated read-only replay worlds
For the best replay NPC experience, it is recommended to install GlobalReplay together with PacketEvents. PacketEvents enables client-side fake-player replay NPCs with UUID/name/skin restoration. Without PacketEvents, GlobalReplay still runs, but replay NPCs use ArmorStand fallback markers.

GlobalReplay is a Paper API Minecraft server plugin that silently records real player activity in the background and lets administrators replay historical moments inside isolated parallel worlds.
GlobalReplaybentianjia/replay1.20-1.21.11yyyy-MM-dd_HH:mmExample time-based commands:
/replay enter overworld 2024-01-15_23:00
/replay goto 2024-01-15_23:47
GlobalReplay continuously records all real players without requiring administrators to start a manual session.
Player-facing messages follow the player's Minecraft client language when possible.
Supported languages:
Other client languages fall back to English. Console messages use English.
Replay data is split by world or dimension, then stored as hourly .replay.lz4 shards:
plugins/GlobalReplay/recordings/
overworld/
2024-01-15_22.replay.lz4
2024-01-15_23.replay.lz4
nether/
the_end/
<custom-world-name>/
.replay.lz4 shard covers one hour, or 60 minutes, of replay data.plugins/GlobalReplay/temp/..replay.lz4 recording file is kept; only the temporary decompressed cache is deleted after it has been unused for 5 minutes after replay exit.GlobalReplay is designed to record real players only. It scans loaded plugins on startup and enables supported exclusion modules automatically.
Excluded entities and accounts include:
NPC metadataglobalreplay.exempt permissionglobalreplay_npc=truerecording.excluded-entity-namesrecording.excluded-entity-uuidsNewly spawned entities are checked through EntitySpawnEvent so runtime-generated NPCs and fake entities are skipped as well.
Administrators can enter replay sessions without affecting the live server world.
Parallel worlds are read-only by design.
BlockBreakEvent is cancelled.BlockPlaceEvent is cancelled.InventoryClickEvent is cancelled.InventoryDragEvent is cancelled.EntityDamageEvent is cancelled.GlobalReplay restores recorded players as replay NPCs.
globalreplay_npc=true so the recorder ignores them.When the server was offline during a replay timeline, GlobalReplay shows a gray breakpoint and notifies the administrator with a message such as:
[GlobalReplay] Server was offline for X minutes
1.20-1.21.11.plugins folder for full fake-player replay NPCs with skins. Without PacketEvents, GlobalReplay still starts and uses ArmorStand fallback markers.plugins folder.org.lz4:lz4-java through plugin.yml.plugins/GlobalReplay/config.yml./replay reload.All command time arguments must use yyyy-MM-dd_HH:mm.
| Command | Description |
|---|---|
/replay enter <dimension> <time> [player|uuid|me] |
Enter an isolated parallel world at your current coordinates and start replaying from the specified time. If a target is provided, teleport near that recorded player as soon as their replay NPC appears. Use me/self/@s or a UUID to avoid name conflicts. Example: /replay enter overworld 2024-01-15_23:00 me. |
/replay pause |
Pause or resume the current replay session. |
/replay speed <0.5/1/2/4> |
Change playback speed. |
/replay goto <time> |
Jump to a specific full timestamp in the current replay. Example: /replay goto 2024-01-15_23:47. |
/replay focus <player|uuid|me> |
Follow a recorded player by teleporting near their replay NPC. Names target replay NPCs, so /replay focus bentianjia teleports to the replay NPC even if the live player is online; use me/self/@s or a UUID when needed. |
/replay exit |
Leave the parallel world, destroy the temporary instance, and restore the administrator's previous state. |
/replay list [dimension] |
List available replay files, optionally filtered by dimension. |
/replay reload |
Reload config.yml, rescan fake-player exclusions, and keep active recording and current replay sessions running. |
Commands that require expensive work send immediate progress feedback first, then send the final result after the asynchronous task completes.
Replay entry progress messages:
[GlobalReplay] Decompressing replay files, please wait...
[GlobalReplay] Decompression complete, loading parallel world...
[GlobalReplay] Entered parallel world <time>, <X> players loaded
Configuration reload result:
[GlobalReplay] Configuration reloaded
| Permission | Description |
|---|---|
globalreplay.enter |
Allows entering replay worlds and using replay session controls. |
globalreplay.enter.others |
Allows viewing replay data for other players when player-scoped access is enforced. |
globalreplay.admin |
Grants all GlobalReplay administrative permissions. |
globalreplay.exempt |
Prevents the account from being recorded. Intended for fake-player or automation accounts. |
GlobalReplay is compatible with LuckPerms permission checks.
Default config.yml structure:
storage:
flush-interval-seconds: 30
compression: lz4
auto-delete:
enabled: true
keep-full-quality-hours: 24
keep-low-quality-days: 7
delete-after-days: 30
recording:
excluded-entity-names:
- "shopkeeper"
excluded-entity-uuids: []
prefix: "&8[&bGlobalReplay&8]&r "
Configuration reference:
| Key | Description |
|---|---|
storage.flush-interval-seconds |
How often buffered recording data is compressed and flushed to disk. |
storage.compression |
Compression algorithm for replay files. Currently only lz4 is supported. |
auto-delete.enabled |
Enables or disables automatic recording cleanup. |
auto-delete.keep-full-quality-hours |
Keeps recent recordings at full quality for this many hours. |
auto-delete.keep-low-quality-days |
Keeps lower-quality retained recordings for this many days. |
auto-delete.delete-after-days |
Deletes recordings older than this many days. |
recording.excluded-entity-names |
Manually excluded entity names. Matching entities are not recorded. |
recording.excluded-entity-uuids |
Manually excluded entity UUIDs. Matching entities are not recorded. |
prefix |
Chat message prefix. Supports Minecraft color codes with &. |
Running /replay reload reloads all configuration values, rescans fake-player exclusion modules, does not interrupt active recording, and does not affect administrators already inside replay worlds.
GlobalReplay is authored by bentianjia.
GlobalReplay is licensed under the MIT License. You may use, modify, and distribute it as long as the copyright notice identifying bentianjia as the author is retained.