Player Steps Recorder saves step recordings that map creators can record. They can be played via mannequin entities and can be helpful in maps or games where you have to use accurate player movement.
The features that PSR can support are:
- Movement
- Rotation
- Items & Armor
- Pose (standing, sneaking, crawling, swimming)
... More can be tracked by your datapack via actions!
How To Use
If you want a short command list, you can use /function psr:help, or read below for a more in-detail explanation.
Recording
function psr:record {name:<name>,x:<x>,y:<y>,z:<z>} (also works with ~ and ^)
Each recording starts with spawning an origin point, at x,y,z.
The origin point helps by replaying your recording anywhere you'd like.
function psr:stop_recording stops the recording
Playing your recording
function psr:play {name:<name>,x:<x>,y:<y>,z:<z>} (also works with ~ and ^)
Fun Fact: By moving the origin point, you can move the whole recording while it's playing.
Also, you can play multiple instances of the same recording at the same time!
function:psr:stop_playback {name:<name>} stops all playing recording instances with the same name. Be careful when playing multiple instances of the same recording!
Other / Documentation
Steps can only save values that have changed. For example, the longer you stay still, the less data will be saved.
Each recording gets stored like a file. If you want to access it via other datapacks, recordings is saved in this storage: psr:recordings recordings.
Recordings
Recordings are SNBT data in a storage that can be used to recreate player-like movement.
Components in storage
| Component | Type | Description |
|---|---|---|
| name | String | Name of the recording |
| version | String | Version the recording was saved in |
| frames | Int | Number of frames. Used to keep the recording from cutting off faster than usual when not updating anything |
| steps | Array (contains Steps) | Steps of the recording |
Steps
Steps are parts of a Recording. They track player properties and only save changes.
Components in storages
| Component | Type | Description |
|---|---|---|
| frame | Int | The frame that the step tracks. Since steps only track changing values, using the index value as a frame value would break the playback |
| Pos | Array | Position that the recorder had (relative to the origin point) |
| Rotation | Array | Rotation that the recorder had (relative to the origin point) |
| mainhand | Item NBT | Item that the recorder had in their mainhand |
| offhand | Item NBT | Item that the recorder had in their offhand |
| head | Item NBT | Item that the recorder was wearing on their head |
| chest | Item NBT | Item that the recorder was wearing on their chest |
| legs | Item NBT | Item that the recorder was wearing on their legs |
| feet | Item NBT | Item that the recorder was wearing on their feet |
| action | String | Action that the recorder triggered |
Actions
Actions are items that can be right clicked while recording to add comments or mark frames easily for other datapack purposes.

