ellipog

Commands

unreleased

Minecraft 26.3Fabric + NeoForge

Every command is under /stature. Changing another entity asks for permission level 2, the gamemaster level. The self-only forms (set --self, preset --self, get with no target, reset with no target and the target-less grow and shrink) ask for self_command_permission_level, which defaults to 2 as well; a pack can lower it without opening the target forms. <targets> is any entity selector; only living entities are changed, and a selector that matches nothing living reports No living entities matched. Scale changes are server-authoritative, so a command run from the console changes the server's answer and the players tracking the entity are sent the result.

At a glance#

/stature set <targets> <scale>
/stature set <targets> <scale> <ticks>
/stature set <targets> <scale> <ticks> <easing>
/stature set <targets> --dangerous <scale> [<ticks> [<easing>]]
/stature set <targets> <scale> [<ticks> [<easing>]] --dangerous
/stature set --self <scale> [<ticks> [<easing>]]
/stature set --self --dangerous <scale> [<ticks> [<easing>]]
/stature set --self <scale> [<ticks> [<easing>]] --dangerous
/stature reset [<targets>]
/stature preset list
/stature preset <targets> <preset> [<ticks>]
/stature preset --self <preset> [<ticks>]
/stature grow [<targets>] [<factor>]
/stature grow --self [<factor>]
/stature shrink [<targets>] [<factor>]
/stature shrink --self [<factor>]
/stature size <targets> <width> <height> <depth> [<ticks>]
/stature frame apply <targets> <frame> [<ticks>]
/stature frame clear <targets>
/stature frame list
/stature channel <targets> list
/stature channel <targets> <channel> <value>
/stature channel <targets> <channel> reset
/stature part <targets> list
/stature part <targets> reset
/stature part <targets> <part> <x> <y> <z> [<ticks>]
/stature part <targets> <part> reset
/stature get [<target>]
/stature reload

<easing> is one of linear, cubic or elastic. Ticks run from 0 to 1200. Without ticks the change lands at once; with ticks and no easing name it uses cubic.

Selecting by scale#

Any entity selector accepts Stature's scale optionScale selectorThe stature:scale entity-selector option, which filters living entities by their uniform scale using vanilla range syntax, such as 0.5..2.See also Channel:

/stature set @e[stature:scale=0.5..2] 3
/stature get @e[stature:scale=..0.25,limit=1]
/stature reset @e[type=minecraft:zombie,stature:scale=4..]

The value uses vanilla's range grammar: 0.5 is exact, 0.5..2 is inclusive on both ends, ..0.5 has only a maximum and 2.. only a minimum. It matches living entities by the same uniform scale that /stature set writes, not by the drawn model and not by the shaped box. A non-living entity never matches because it has no Stature scale. The option is enabled whenever Stature is installed; there is no separate config switch, and it combines with every vanilla option such as type, tag, limit and sort.

No height or tier option is shipped. Both would have to choose between the uniform scale, the shaped box and the model, and stature:scale already answers the question every command needs. Use stature:scale=0.5..2 for a tier-like query, or a tag for a pack-defined group.

Setting a size#

/stature set @s 2
/stature set @s 4 40 elastic
/stature set @e[type=minecraft:zombie,limit=1] 0.5 20 linear
/stature set --self 2
/stature set --self 4 40 elastic

set changes only the uniform scale and keeps the current shape. It marks the entity as a manual choice, so a pack's automatic frame no longer applies to it. The plain range is 0.0625 to 16, the range the game's minecraft:scale attribute stores. A value outside it is refused with a message that names --dangerous.

/stature set @s 100 --dangerous
/stature set @s --dangerous 100
/stature set @s 100 40 elastic --dangerous
/stature set --self 100 --dangerous

--dangerous may follow the scale, the ticks or the easing, and the prefix form puts it before the scale. It accepts 0.001 to 1000. Above 256 the command logs a warning. The box holds the nearest bound (see Dangerous sizes) and the model shows the requested size.

--self is a marker, not a target. It makes the command act on the entity that ran it, and the marker is there because a bare number can be a player name: /stature set 2 would be ambiguous. A player name cannot contain a hyphen, so --self always parses as the marker.

Presets#

Presets are named sizes and shapes kept in config/stature.json. They are the short form of the common cases: a pack maker can name the sizes that matter in their world, and a player can ask for one by name.

/stature preset @s giant
/stature preset @s giant 40
/stature preset --self giant
/stature preset list

The built-in presets are:

NameWhat it applies
tiny0.25x scale
small0.5x scale
normal1x scale
big2x scale
giant4x scale
titan8x scale
tallShape 0.75 x 1.5 x 0.75
slimShape 0.6 x 1.0 x 0.6
wideShape 1.75 x 0.75 x 1.75

A size preset changes only the uniform scale, so the entity keeps its current shape. A shape preset changes only the three box multipliers, so it keeps the current scale. A preset declared in the config may set both. The three shape numbers are multipliers on the entity's own width, height and depth, in the same order and with the same meaning as the numbers on /stature size; 1 1 1 is vanilla.

preset list prints the names that are available right now with their values. It works for anyone who can use a preset, including a player at a lowered self_command_permission_level. The argument completes those names. An unknown name is refused with a message that points at preset list. Without ticks the change is instant; with ticks it eases with cubic. Applying a preset is an explicit size choice, so a pack's automatic frame no longer claims the entity.

Presets are configured under presets_custom, presets_builtin and presets_disabled. The config may switch the whole feature off with presets_enabled. With the feature off, /stature preset and /stature preset list refuse with a message naming the switch. With built-ins off, custom presets still work. A custom entry with the same name as a built-in replaces that built-in, and a name in presets_disabled is removed after that merge, so it wins over both. Bad custom entries are logged and skipped rather than stopping the server. The "Presets and relative commands" section of Thresholds has the exact file shape.

Growing and shrinking#

/stature grow @s
/stature grow @s 3
/stature shrink @s
/stature shrink @s 0.25
/stature grow --self
/stature grow --self 3
/stature shrink --self 0.25

grow multiplies the current scale by 2 by default; shrink multiplies it by 0.5. The optional factor always grows when the command is grow (1 or more) and always shrinks when it is shrink (above 0 and at most 1), so a typo cannot silently do the opposite of the command's name.

The result is held inside the normal 0.0625 to 16 envelope. A grow that would pass 16 stops at 16, and a shrink that would pass 0.0625 stops there; the success line says that it was capped. If the entity was carrying a dangerous set's model override, the relative command clears it the same way a plain /stature set does. --dangerous is not accepted on these commands; use /stature set for a size outside the envelope.

Like the other target-less forms, the no-target form acts on the player who ran it. A custom factor on yourself is written --self <factor>, because a bare number in the target position can be a player name. grow and shrink can be switched off with relative_commands_enabled in the config.

Resetting#

/stature reset
/stature reset @s
/stature reset @e[type=minecraft:zombie]

reset returns the entity to vanilla: scale, shape, frame, channels and parts are all cleared. It stays marked as manually decided, so a pack's automatic frame does not reapply on the next tick. It is the one command to reach for when an entity is in a state nobody can explain. Without a target it resets the player who ran it; from the console, name targets instead.

The narrower resets are separate:

CommandWhat it clears
/stature frame clear <targets>The frame, the scale and the parts; channels stay, except a dangerous set's model channel
/stature channel <targets> <channel> resetOne channel override
/stature part <targets> resetEvery part factor
/stature part <targets> <part> resetOne part, or one group's parts

Shaping the box#

/stature size @s 0.5 1.2 2.0
/stature size @s 0.5 1.2 2.0 40

The three numbers are width, height and depth multipliers, each from 0.0625 to 16. They multiply the entity's own dimensions, so 0.5 1.2 2.0 is half as wide, 1.2 times as tall and twice as deep as it would otherwise be. size keeps the current uniform scale and clears any named frame. A hand shape is a manual choice, so a pack's automatic frame no longer applies. Ticks ease with cubic; there is no easing argument on this command.

Frames#

/stature frame apply @s mypack:titan
/stature frame apply @e[type=minecraft:zombie,limit=1] mypack:giant 40
/stature frame list
/stature frame clear @s

frame apply takes a frame id loaded from a datapack. The command completes loaded ids, and an unknown name is refused with a message that points at frame list. The frame supplies its own easing, size, parts, hurt regions and threshold overrides. Applying a frame is an explicit choice, so later automatic assignments leave the entity alone.

frame clear returns the entity to vanilla proportions. Like frame apply, it is explicit: the entity is marked as manually decided and a pack does not claim it again on the next tick.

frame list prints every loaded frame id, or says that no frames loaded and where a pack puts them.

Channels#

/stature channel @s list
/stature channel @s stature:attack 2
/stature channel @s stature:attack reset

channel takes one channel id and one finite value. The value is deliberately unbounded: the channel's own meaning decides what is sensible. A set value is an override and is applied at once. list prints every channel's resolved value and marks the entries that are overrides with (override).

reset drops the override, so the channel follows the scale again, or returns to exactly 1.0 for a channel that follows nothing. The full list of ids, defaults and effects is in Channels.

Parts#

/stature part @s list
/stature part @s arm.right 1 2 1
/stature part @s arm.right 1 2 1 20
/stature part @s arm.right reset
/stature part @s reset

<part> is a rig group such as head, arm.left or all, or a raw dot path such as body.left_arm. The three numbers are per-axis multipliers from 0.0625 to 16. Ticks ease with cubic.

A group resolves through the entity's rig at set time, and the resulting model paths are what travel; a later rig change does not reinterpret a factor that is already set. A raw path passes the command if its syntax is valid, because only the client's model knows whether the path exists; a path that is not on the model is reported once in the client log and does nothing. part list prints the factors by path, not by group name.

Reading state#

/stature get
/stature get @e[type=minecraft:zombie,limit=1]

get reports the uniform scale and the resulting box. When there is no frame and the box is shaped, it also reports the three multipliers. When a frame is applied, it names the frame; if the frame file has since been removed, it says the name is no longer loaded rather than pretending the numbers came from nowhere. Without a target, get reads the player who ran it and uses the self-command permission level rather than the gamemaster level; get <target> still asks for the gamemaster level.

Reloading#

/stature reload

reload re-reads the server's config/stature.json, every frame and every rig, re-evaluates automatic frame assignments, and refreshes the threshold values sent to clients. It reports how many frames loaded, how many presets are available and how many entities changed.

Vanilla /reload also reloads frames and rigs and re-evaluates automatic assignments, because both loaders register a server data listener. It does not re-read config/stature.json; use /stature reload for that. A preset edit, a changed presets_enabled switch or a new custom preset therefore needs /stature reload, not /reload.

Support the workko-fi.com/ellipog