# v0.1.0
Initial release. Server-side motion capture with compressed binary storage, packet-based NPC playback, and scene composition.
---
## Added
### Recording
- **Per-tick state capture** — records position, rotation, velocity, movement flags, equipment, entity state, health, and one-shot actions (arm swing, item use, block place/break, damage) every server tick
- **Multi-player recording** — record multiple players simultaneously with `/recap record start <prefix> @a`
- **Delta-encoded equipment** — only stores equipment changes, not full inventory every frame
- **Auto-stop on disconnect** — recordings are saved automatically when a recorded player leaves the server
- **Event-driven action capture** — arm swings, block interactions, item usage, and damage are captured via Bukkit event listeners and merged into the next tick frame
### Playback
- **Packet-based NPCs** — recordings replay as client-side fake player entities via PacketEvents (no server-side entities)
- **Entity metadata** — NPCs reflect sneaking, sprinting, swimming, flying, fire, invisibility, and glowing states
- **Equipment sync** — held items and armor update during playback with delta detection
- **Animation support** — arm swings and damage effects play at the correct tick
- **Loop playback** — optionally loop a recording with `/recap play start <name> true`
- **Session management** — each playback returns a session ID for targeted stop commands
### Scenes
- **Scene composition** — combine multiple recordings into a scene played as a group
- **Time delay** — configure per-recording start delay in ticks
- **Position offset** — configure per-recording XYZ offset relative to the scene origin
- **Scene persistence** — scenes are saved as JSON files in `plugins/Recap/scenes/`
### Storage
- **Compressed binary format** — `.recap` files with GZIP-compressed frame data
- **Delta encoding** — positions and rotations are stored as deltas from the previous frame, using packed short, float, or double precision depending on magnitude
- **Bit-flag packing** — 8 entity state booleans packed into a single byte
- **Skip-tick optimization** — consecutive identical ticks are collapsed into a single skip-count action (up to 255 ticks per skip)
- **Packed integers** — small values (0-254) use 1 byte instead of 4
- **Versioned format** — format version in file header for future migration support
### Commands
- `/recap record start|stop` — start and stop recordings
- `/recap play start|stop` — start and stop playback
- `/recap scene create|add|play|delete|list` — scene management
- `/recap list` — list all saved recordings
- `/recap stopall` — stop all active playbacks
### Developer API
- **Recap-API module** — `IRecap`, `IRecordingManager`, `ISceneManager` interfaces
- **RecapAPI static accessor** — `RecapAPI.getRecordingManager()`, `RecapAPI.getSceneManager()`
- **JitPack publishing** — `compileOnly("com.github.Lodestones:Recap-API:1.0.0")`