{"id":30287,"date":"2026-06-01T15:51:34","date_gmt":"2026-06-01T12:51:34","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/betterreplay\/"},"modified":"2026-06-01T15:51:34","modified_gmt":"2026-06-01T12:51:34","slug":"betterreplay","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/betterreplay\/","title":{"rendered":"BetterReplay"},"content":{"rendered":"<p># BetterReplay<\/p>\n<p>BetterReplay is a server-side replay plugin for Paper and Folia-style scheduling.<br \/>\nIt records player and nearby entity activity on the server, saves the timeline, and replays it for viewers in-game.<\/p>\n<p>## What this project is<\/p>\n<p>&#8211; Server plugin written in Java<br \/>\n&#8211; Targets modern Paper APIs<br \/>\n&#8211; Uses PacketEvents and FoliaLib for packet handling and scheduling<br \/>\n&#8211; Supports two storage backends:<br \/>\n  &#8211; local JSON files<br \/>\n  &#8211; MySQL<\/p>\n<p>## How this differs from client-side replay mods<\/p>\n<p>BetterReplay is not a client recording mod.<\/p>\n<p>Server-side approach (this project):<br \/>\n&#8211; Runs entirely on the server<br \/>\n&#8211; No replay mod required on player clients<br \/>\n&#8211; Captures server-observed gameplay state and events<br \/>\n&#8211; Plays back by spawning and updating replay entities for a viewer<br \/>\n&#8211; Good for moderation, event review, and server-side tooling<\/p>\n<p>Typical client-side replay mod approach:<br \/>\n&#8211; Records from a specific client perspective<br \/>\n&#8211; Usually requires modded client setup<br \/>\n&#8211; Often includes advanced free-camera\/cinematic editing features<br \/>\n&#8211; Playback is usually local to the client recording<\/p>\n<p>In short: BetterReplay focuses on server-managed replay workflows and API-driven integration.<\/p>\n<p>## Features<\/p>\n<p>&#8211; Start and stop recordings<br \/>\n&#8211; Save recordings to file or MySQL<br \/>\n&#8211; List and delete stored replays<br \/>\n&#8211; Replay sessions for viewers<br \/>\n&#8211; API-first integration support for other plugins<br \/>\n&#8211; Optional Floodgate soft dependency support<\/p>\n<p>Base command:<br \/>\n&#8211; \/replay<\/p>\n<p>Subcommands:<br \/>\n&#8211; start<br \/>\n&#8211; stop<br \/>\n&#8211; play<br \/>\n&#8211; list<br \/>\n&#8211; delete<\/p>\n<p>Permissions:<br \/>\n&#8211; replay.start<br \/>\n&#8211; replay.stop<br \/>\n&#8211; replay.play<br \/>\n&#8211; replay.list<br \/>\n&#8211; replay.delete<br \/>\n&#8211; replay.*<\/p>\n<p>### Storage-Type options<\/p>\n<p>Valid values for `General.Storage-Type` are:<\/p>\n<p>&#8211; `file`<br \/>\n  &#8211; Stores replay data as JSON files under the plugin data folder.<br \/>\n&#8211; `mysql`<br \/>\n  &#8211; Stores replay data in a MySQL table (`replays`) using the configured `General.MySQL.*` values.<\/p>\n<p>These values should be lowercase as shown above.<\/p>\n<p>### File storage example<\/p>\n<p>&#8220;`yaml<br \/>\nGeneral:<br \/>\n  Check-Update: true<br \/>\n  Storage-Type: file<br \/>\n&#8220;`<\/p>\n<p>### MySQL storage example<\/p>\n<p>&#8220;`yaml<br \/>\nGeneral:<br \/>\n  Check-Update: true<br \/>\n  Storage-Type: mysql<br \/>\n  MySQL:<br \/>\n    host: 127.0.0.1<br \/>\n    port: 3306<br \/>\n    database: betterreplay<br \/>\n    user: replay_user<br \/>\n    password: change-me<br \/>\n&#8220;`<\/p>\n<p>Additional key used by command pagination:<\/p>\n<p>&#8220;`yaml<br \/>\nlist-page-size: 10<br \/>\n&#8220;`<\/p>\n<p>Notes:<br \/>\n&#8211; If Storage-Type is invalid, plugin falls back to file storage.<br \/>\n&#8211; MySQL replay names are stored in a VARCHAR(64) primary key column.<\/p>\n<p>## API<\/p>\n<p>BetterReplay provides a public API for other plugins to start\/stop recordings, manage replays, and listen for lifecycle events.<\/p>\n<p>Quick example:<\/p>\n<p>&#8220;`java<br \/>\nReplayManager manager = ReplayAPI.get();<br \/>\nmanager.startRecording(&#8220;demo-session&#8221;, List.of(player), 120);<br \/>\nmanager.stopRecording(&#8220;demo-session&#8221;, true);<br \/>\nmanager.startReplay(&#8220;demo-session&#8221;, viewerPlayer);<br \/>\n&#8220;`<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Packet Based Player Recorder.<br \/>\nBetterReplay is a server-side replay plugin for Paper and Folia-style scheduling. It records player and nearby entity activity on the server, saves the timeline, and replays it for viewers in-game.<\/p>\n","protected":false},"featured_media":30288,"template":"","meta":{"_minecraft_slug":"betterreplay","_minecraft_project_id":"Q9s9vyrt","_minecraft_author":"JustinDevB","_minecraft_license":"GPL-3.0-or-later","_minecraft_downloads":45,"_minecraft_follows":0,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"betterreplay.zip","_minecraft_size_bytes":15967963,"_minecraft_version_count":16,"_minecraft_updated_at":"2026-05-15T21:46:22.380718Z","_minecraft_date_created":"2026-05-11T01:30:35.358401Z","_minecraft_date_modified":"2026-05-14T18:54:17.175592Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/betterreplay","_minecraft_icon_attachment_id":30288,"_minecraft_imported_at":"2026-06-01T12:51:35+00:00","_minecraft_import_hash":"11d458f478c0dea591bc885072416df4","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[124,125,127,128,129,92],"mod_loader":[130,131,132,133,134],"minecraft_version":[62,37,40,41,73,74,38,78,79,80,81,82,167,163],"class_list":["post-30287","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-bukkit","mod_category-folia","mod_category-paper","mod_category-purpur","mod_category-spigot","mod_category-utility","mod_loader-bukkit","mod_loader-folia","mod_loader-paper","mod_loader-purpur","mod_loader-spigot","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8","minecraft_version-1-21-9","minecraft_version-26-1-1","minecraft_version-26-1-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>BetterReplay - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/betterreplay\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"BetterReplay - Minecraft\" \/>\n<meta property=\"og:description\" content=\"Packet Based Player Recorder. BetterReplay is a server-side replay plugin for Paper and Folia-style scheduling. It records player and nearby entity activity on the server, saves the timeline, and replays it for viewers in-game.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/betterreplay\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/betterreplay\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/betterreplay\\\/\",\"name\":\"BetterReplay - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/betterreplay\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/betterreplay\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/betterreplay-icon-7a8f0d918bbe051c11b97caf56cbeb37ef473501.jpeg\",\"datePublished\":\"2026-06-01T12:51:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/betterreplay\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/betterreplay\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/betterreplay\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/betterreplay-icon-7a8f0d918bbe051c11b97caf56cbeb37ef473501.jpeg\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/betterreplay-icon-7a8f0d918bbe051c11b97caf56cbeb37ef473501.jpeg\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/betterreplay\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"BetterReplay\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"BetterReplay - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/betterreplay\/","og_locale":"en_US","og_type":"article","og_title":"BetterReplay - Minecraft","og_description":"Packet Based Player Recorder. BetterReplay is a server-side replay plugin for Paper and Folia-style scheduling. It records player and nearby entity activity on the server, saves the timeline, and replays it for viewers in-game.","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/betterreplay\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/betterreplay\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/betterreplay\/","name":"BetterReplay - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/betterreplay\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/betterreplay\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/betterreplay-icon-7a8f0d918bbe051c11b97caf56cbeb37ef473501.jpeg","datePublished":"2026-06-01T12:51:34+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/betterreplay\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/betterreplay\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/betterreplay\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/betterreplay-icon-7a8f0d918bbe051c11b97caf56cbeb37ef473501.jpeg","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/betterreplay-icon-7a8f0d918bbe051c11b97caf56cbeb37ef473501.jpeg","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/betterreplay\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"BetterReplay"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/30287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/30288"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=30287"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=30287"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=30287"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=30287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}