Skip to content

Players

For: advanced users reading the live body.

Live body reads: state, blocks, slots, titles, movement, and inventory. The one-line forms live in the cheatsheet.

Tag Meaning
<pstate:player,state> true/false for SNEAK, SPRINT, GLIDE, SWIM, GROUND, IDLE.
<plos:player,target,maxdist,maxangle> true when the target is in line of sight.
<pstandingon:player> Upper-case block below the feet (AIR over void).
<pblock:player,type> Lower-case block id at under (default), feet, or head.
<pismoving:player> true when the player moved since this modifier last checked.
<premoveitem:player,item,count> Remove count when held (default 1), true/false, all-or-nothing.
<puuid:player> Mojang id as four ints in NBT int-array order.
<ptitle:player,title,sub,...> Center title, empty (optional stay, in, out seconds).
<pslot:player,slot> Get [MATERIAL, qty], null when empty.
<pslot:player,slot,item> Set from [material, qty] or bare material, empty.
<pstat:player,key> One player's stat: nine keys, see Stats.

<plos:player,target,maxdist,maxangle> reads 3D line of sight: true when the target's head point sits within maxdist blocks (default 180), within maxangle degrees of the player's look direction (default 90, clamped to 0..180), and reachable by an unblocked block+player ray from the eye. The head point is feet plus 1.5 blocks (1.35 while sneaking). Checks run cheap-first (dimension, distance, angle) with the raycast last. Offline, unknown, or cross-dimension players resolve null silently.

<pstate:player,state> reads the live body: SNEAK, SPRINT, GLIDE, SWIM, or GROUND (any case), true or false. IDLE reads true when the player did not move since this modifier's own last check: the inverted twin of <pismoving>. Both share and advance one baseline per modifier, so a tick should read only one of them (a second movement read in the same tick always sees no movement). Unknown states warn, list the valid names, and yield null; offline or unknown players resolve null silently. <pstandingon:player> reports the upper-case material below the feet (AIR over the void), silent null when offline. <pblock:player,type> reports the lower-case block id (dirt, oak_slab, no namespace) at under (below the feet, air over the void), feet, or head (the eye block); the type is optional and defaults to under. Unknown types warn, list the valid names, and yield null; offline or unknown players resolve null silently. <puuid:player> reports the Mojang id as four ints in NBT int-array order, silent null when offline, so Owner:[I;<list.join:<puuid:Steve>,",">] renders an NBT owner. <pstat:player,exp-level> reads the vanilla experience level.

<ptitle:player,title,subtitle,stay,in,out> sends a center-screen title; the timings are seconds in written order (stay, fade in, fade out: never Paper order), trailing args may be omitted, and defaults are stay 2.0, in 0.4, out 0.4. Seconds convert to ticks through the engine converter (0.05s per tick, minimum one tick). Title and subtitle parse like message text (MiniMessage plus legacy codes); blank parts are allowed. Bad timing warns plus null with nothing sent, as does an offline player; success returns empty.

<pslot:player,slot> gets [MATERIAL, qty], with null for an empty slot or an offline player. <pslot:player,slot,newitem> sets unconditionally and returns empty. Slots name equipment (mainhand, offhand, helmet, chestplate, leggings, boots, any case) or address the raw player inventory by index: 0-8 hotbar, 9-35 main storage, 36-39 armor, 40 offhand. A [material, qty] list sets both, a bare material sets qty 1; materials match case-blind, qty clamps silently to 1 through the max stack, and anything invalid (unknown slot or material, non-integer qty, bad index) warns plus null with no change.

<pismoving:player> reads movement since this modifier's own last check: the first check seeds the baseline and reads false, later checks read true when the spot (exact coords or world) changed. Each modifier keeps its own baseline per player, so two modifiers polling at different rates never steal each other's checks; rotation alone never counts, and offline or unknown players resolve null silently. Baselines clear at match end. <pstate:player,IDLE> inverts this same baseline (stillness instead of motion) and advances it too, so one tick reads either <pismoving> or IDLE, never both. Evaluate once per poll and reuse the answer through <lf:>: every evaluation moves the baseline forward:

- '<lf:moved,<pismoving:<p>>>'
- '<if:"<lf:moved> == true","<pf:hold-<id>,0>">'
- '<if:"<lf:moved> == true","exit">'

<premoveitem:player,item,count> removes count of the material from the player's storage (hotbar plus main inventory, the same population <phasitem> counts), all-or-nothing: when fewer are held nothing changes. The count defaults to 1. It yields true when items left the inventory, false when too few are held, the player is offline, or the material is unknown; misuse (blank player or item, a count below 1) warns plus null. Materials match case-blind with an optional minecraft: prefix:

- '<if:"<premoveitem:<p>,GOLD_INGOT,3> == true","say Toll paid!">'

Next Steps