# Overview
Recap is a server-side motion capture plugin that records player gameplay and replays it as fake NPCs. It's designed for mass recording (hundreds of concurrent players), cinematic scene composition, and live hijack — combat scenarios where you fight NPCs replaying real recorded behavior.
---
## What is Recap?
Recap captures per-tick player state — position, rotation, equipment, animations, particles, sounds — and writes it to a compressed binary stream. Recordings replay as packet NPCs visible to everyone in range, can be combined into multi-actor scenes with offsets and start delays, and can be **hijacked**: turned into real NMS entities you can fight, with the result captured back to disk.
---
## Headline Features
- **Per-tick recording** — position, rotation, velocity, equipment, animations, hits, particles, sounds, container opens, sign changes, vehicle enter/leave, sleeping, redstone, and the full 41-slot inventory snapshot.
- **Packet-based playback** — recordings replay as lightweight NPCs sent to clients over PacketEvents; no server-side entity unless the scene is hijacked.
- **Scene composition** — combine recordings into a scene with individual time delays and position offsets. Supports nested (composite) scenes via `.` prefix.
- **Live hijack** — `/recap hijack <scene>` spawns each NPC as a real NMS Player you can fight. Combat events captured back as a reactive recording. Inventory drops on kill.
- **`--scene` auto-append** — `/recap start <name> @a --scene <existing>` routes each player's output recording into the named scene automatically when the recording stops.
- **Surroundings capture** — recordings capture nearby mobs and a geometry snapshot cube out to `capture-radius` (default 16; override with `--radius <n>`, `0` = player-only); the cube paints back per-viewer (client-side) at the playback location, so a scene replays in any world.
- **Per-actor scene loop** — `/recap play <scene> true` loops every entry independently so ambient scenes stay populated.
- **Captured-packet replay** — plugins can allowlist server→client packet types (sounds, lightning, custom plugin messages) so their effects replay during playback.
- **Cross-version skin layers** — per-viewer metadata index across the supported 1.21.4–26.1.2 range.
- **Compressed binary format** — delta-encoded, bit-flag packed, skip-tick optimized, GZIP compressed.
---
## Dependencies
| Dependency | Version | Type |
|---|---|---|
| Paper API | 1.21.4 – 26.1.2 | Server platform |
| Java | 21 | Runtime |
PacketEvents, CommandAPI, and FoliaLib are shaded into the plugin jar. No external dependencies need to be installed.
---
## Optional Integrations
| Plugin | Purpose |
|---|---|
| Bookshelf | Utility methods and command framework extensions |
| Lectern | Cinematic effects replay (sounds, cutscenes, screen shake, etc.) via the captured-packet allowlist |
---
## See Also
- [[Recap/Server Owners/Commands]] — full command reference
- [[Recap/Server Owners/Configuration]] — config keys
- [[Recap/Server Owners/Features/Recording]] — recording details
- [[Recap/Server Owners/Features/Playback]] — playback / scenes
- [[Recap/Server Owners/Features/Hijack]] — live hijack workflow
- [[Recap/Server Owners/Features/World Snapshots]] — block capture/restore
- [[Recap/Developers/Overview]] — developer guide