Prerequisites
ReplayCore records on Paper from 1.8.8 through Paper 26.2, Purpur 26.2, Folia 26.2, and Spigot 1.8.8. From 1.13 upwards it needs Paper, Purpur, Folia, or another Paper API fork. Spigot 1.13 and newer is not supported. That install prints Recording is DISABLED. [RC-SPIGOT-001] and ReplayCore disables itself. Folia 26.2 is a PaperMC Fill BETA build. Java 17 or newer is required for modern servers; Paper 1.8.8 and Spigot 1.8.8 run on Java 8 or newer. Paper 26.1 and 26.2, Purpur 26.2 and Folia 26.2 need Java 25 on the server.
You will need a ReplayCore account. Signing up is free and needs no card, and you can move up to a paid plan whenever you are ready. If you have not signed up yet, visit replaycore.com and create an account.
The plugin uses outbound HTTPS to upload replays to the ReplayCore cloud. Ensure your server host allows outbound connections on port 443.
Cross-platform networks are supported out of the box: Bedrock players who join your Java server through Geyser are recorded automatically, the same as Java players, so there is nothing extra to configure. Native Bedrock servers are not supported.
Step 1: Install PacketEvents (Paper, Purpur, Folia)
On Paper, Purpur and Folia, official PacketEvents 2.13.0+ must be in the server plugins folder before ReplayCore. Download it from Modrinth (https://modrinth.com/plugin/packetevents) or GitHub releases (https://github.com/retrooper/packetevents/releases). If it is missing, the console repeats ReplayCore is dependency-blocked. PacketEvents 2.13.0 or newer is missing, so nothing is being recorded. Install PacketEvents from https://modrinth.com/plugin/packetevents and restart. [RC-DEP-001] and /replaycore status reports Recording: stopped (dependency-blocked) then Dependency: PacketEvents 2.13.0 or newer is missing. [RC-DEP-001]. Recording is ENABLED is not printed in that state. Spigot 1.8.8 does not need this step and never prints [RC-DEP-001].
Step 2: Download the plugin
Log into the dashboard, open Downloads, and download the ReplayCore JAR (`ReplayCore-<version>.jar`). Place it in the server `plugins/` folder. On Paper, Purpur and Folia, PacketEvents must already be there. Spigot 1.8.8 does not need PacketEvents.
ReplayCore ships as a single, self-contained JAR. The same file runs on every supported platform: it detects your server and Minecraft version on first start and loads the right recording engine for that environment, so you never have to pick a platform-specific build by hand.
cp ReplayCore-<version>.jar /path/to/server/plugins/Step 3: Open Downloads and enter a friendly name
In your dashboard, open Downloads and enter a friendly server name. ReplayCore supplies the two-line configuration, including the secret rck_v1_ account key shared by every server in your network; your plan's instance limit controls how many distinct servers can record at once.
Choose a friendly server name for this installation, such as EU Hub 1 or Practice. There is no server ID to create, copy, or expose. The first check-in can create a Servers-page entry that stays unclaimed until an owner opens the printed Downloads URL, matches the short code, and approves the server. Current plugins print [RC-CLAIM-GATE]; already-shipped boxes print the legacy alias [RC-CONFIG-CLAIM]. Both are the same unclaimed state. Approval is manual. On ReplayCore cloud the URL is https://replaycore.com/en/dashboard/downloads. A self-hosted origin keeps that host and uses the same /en/dashboard/downloads path.
Step 4: Drop in the ready config
The Downloads page hands you a complete two-line config.yml with the licence key and friendly server name filled in. Copy it and paste it at plugins/ReplayCore/config.yml. There is no config.yml file download.
On Pterodactyl, Docker, and other container hosts, use the equivalent REPLAYCORE_LICENSE_KEY and REPLAYCORE_SERVER_NAME environment variables. They take precedence over the file, so the secret does not need to be stored there.
license-key: "rck_v1_xxxxxxxxxxxxxxxxxxxx"
server-name: "Hub"Step 5: Start the server and test
Start your Minecraft server, then press Test Connection back in the panel. It polls for up to two minutes. An online check-in means the plugin reached the cloud. It does not mean the connection is claimed, and Test Connection does not turn green from check-in alone. The plugin detects the platform and Minecraft version, validates the licence key, and creates a private persistent installation identity.
If the console prints ReplayCore is claim-blocked. This server connection is not approved (code ABC12345). Local capture stays on. Finished matches are held locally (not uploaded) until you approve it at Downloads: https://replaycore.com/en/dashboard/downloads. [RC-CLAIM-GATE], the connection is unclaimed. Already-shipped boxes print the legacy alias ReplayCore is recording with preserved local configuration while this existing server connection awaits owner approval in the Dashboard (code ABC12345). [RC-CONFIG-CLAIM]. Both codes are the same state. ABC12345 is a placeholder; the real short code is shown in that server's console and in /replaycore status. Open the printed Downloads URL, match the short code, and approve the server. On a self-hosted origin the path is still /en/dashboard/downloads. ReplayCore does not approve an unclaimed connection automatically.
Confirm a claimed start by checking the console for Connection verified and Recording is ENABLED, with no [RC-CLAIM-GATE] or [RC-CONFIG-CLAIM] line. The final Ready. Recording is active. line confirms that the recorder started. That Recording is ENABLED line is not printed on every first start. On Paper, Purpur and Folia it is withheld while ReplayCore is dependency-blocked.
Adding more servers is the same Downloads flow each time: a new friendly name and the same recording key. Reusing a recording category you have already set up carries its chat, vanish and retention rules straight over, so a whole network is only ever a few clicks. Do not copy plugins/ReplayCore/ onto another live server. A Pterodactyl or Docker clone that copies that folder prints Recording is DISABLED. [RC-ID-409] and this install records nothing. Give the new server its own two-line config and let ReplayCore create a new identity.
Prefer to set up from inside the game? Run /rcsetup in game or from the console. It shows whether license-key and server-name are saved, and lets you set them with /rcsetup set <field> <value>. After you set a value, restart the server. /rcsetup does not start recording; /replaycore status shows whether recording is active.
If the console prints ReplayCore is dependency-blocked on Paper, Purpur or Folia, nothing is being recorded. See If the console says dependency-blocked.
[ReplayCore] Connection verified for server 'uhc-1'. Recording is ENABLED.
[ReplayCore] Ready. Recording is active.If the console says dependency-blocked
On Paper, Purpur and Folia, missing or unusable PacketEvents stops recording. Recording is ENABLED is not printed. The console repeats one of these lines:
ReplayCore is dependency-blocked. PacketEvents 2.13.0 or newer is missing, so nothing is being recorded. Install PacketEvents from https://modrinth.com/plugin/packetevents and restart. [RC-DEP-001]
ReplayCore is dependency-blocked. PacketEvents {installed} is too old (need {required} or newer), so nothing is being recorded. Install PacketEvents from https://modrinth.com/plugin/packetevents and restart. [RC-PACKETEVENTS-003]
ReplayCore is dependency-blocked. PacketEvents is installed but not ready (API not initialised or mapping warm failed), so nothing is being recorded. Reinstall PacketEvents 2.13.0+ from https://modrinth.com/plugin/packetevents and restart. [RC-PACKETEVENTS-002]
{installed} and {required} are filled with the versions printed by that server. /replaycore status in those states:
Recording: stopped (dependency-blocked)
Dependency: PacketEvents 2.13.0 or newer is missing. [RC-DEP-001]
Dependency: PacketEvents {installed} is too old (need {required} or newer). [RC-PACKETEVENTS-003]
Dependency: PacketEvents is installed but not ready. [RC-PACKETEVENTS-002]
[RC-PACKETEVENTS-002] and [RC-PACKETEVENTS-003] are the installed-but-unusable lane. [RC-DEP-001] is the missing-jar code. Spigot 1.8.8 does not need PacketEvents and never prints [RC-DEP-001].
Step 6: When the first replay seals
A short match does not upload a replay by itself. Duration is captured ticks (tick count × 50 ms at 20 TPS), not wall-clock. On Paper, Purpur and Spigot 1.8.8 the default Storage policy seals a new archive after 30 minutes of recorded play, or when you restart the server. An empty server pauses capture and freezes seal progress; it does not seal or upload. /replaycore forcestop also only pauses capture on this server; it does not seal or upload the current recording. Match end does not seal an archive unless you change rotation to match mode in Configuration.
On Folia the default is one archive for the whole server uptime. Restart the server to seal and upload that first replay.
There is no command that seals the current recording immediately. Run /replaycore status to confirm recording is active and whether a sealed archive is waiting in the upload queue.
Step 7: Access your first replay
After an archive is sealed, the upload runs in the background and does not block the server thread. Open Replays in the dashboard. The recording should appear within a minute of that seal. If the list stays empty after a seal and the console shows [RC-CLAIM-GATE] or the legacy alias [RC-CONFIG-CLAIM], the connection is still unclaimed: open the printed Downloads URL (https://replaycore.com/en/dashboard/downloads, or /en/dashboard/downloads on a configured self-hosted origin), match the short code, and approve the server before looking for further upload faults.
Click any replay to play it in the in-browser viewer. No client mods or additional software are required.
Configuration
The customer config.yml intentionally contains only license-key and server-name. ReplayCore applies safe production defaults internally, while owner-managed capture, privacy, retention, and integration settings are delivered securely from the dashboard after registration.
Keep the local file limited to those two connection values. Use the dashboard's server configuration controls for advanced settings so every managed change is authenticated, versioned, and consistently applied.
On Folia, session rotation is not supported: the recorder writes one archive per server uptime (one replay from start-up to shutdown) rather than one per match. Everything else records as normal.
Need help?
If the console prints [RC-CLAIM-GATE] or the legacy alias [RC-CONFIG-CLAIM], the plugin is enabled and the connection is still unclaimed. Open /docs/troubleshooting/common-errors#rc-claim-gate or /docs/troubleshooting/common-errors#rc-config-claim. If the console prints [RC-DEP-001], [RC-PACKETEVENTS-002] or [RC-PACKETEVENTS-003] on Paper, Purpur or Folia, recording is stopped. See If the console says dependency-blocked. Spigot 1.8.8 never prints [RC-DEP-001]. If the console prints [RC-SPIGOT-001], the server is plain Spigot on 1.13 or newer. Install Paper or a Paper fork and restart. If the console prints [RC-ID-409], two live servers are sharing one installation identity. See Common errors. If the plugin does not start or the licence fails to validate, the console prints a code such as [RC-KEY-000] or [RC-KEY-401]. See the Licence errors troubleshooting article.
Open a ticket from the Support page in your dashboard, or contact admin@forgevector.co.uk for direct assistance.