# 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")`