NPCs
Creating NPCs, their skin, pose, size, outline and equipment, where they look, who sees them, their label, a hologram that follows them, and their animations: continuous idles, groups, pause and stop, and Blockbench clips.
An NPC is a player figure standing at a place, facing a way. Like holograms it is packets only: it cannot be hurt, pushed or killed, and it costs nothing when nobody is near.
Creating one
| From | How |
|---|---|
| The list | /npcadmin, then CREATE NPC: a window with a name, a preset and a skin (your own name by default). |
| A command | /npcadmin create <name> [skin]: the skin is an account name, @mirror or @none; without one, your skin. |
| The file | A new entry under npcs: in npcs.yml. Only location is needed. |
It stands where you stand. With face-creator on (the default) it faces you; off, it looks where you
were looking, level. It gets the default-view-distance and default-look of config.yml and a label
with its name, or the preset's label (%npc% becomes its name) and actions. A preset's skin wins over the
one typed, unless the preset has none.
The shipped presets:
| Preset | What it does |
|---|---|
simple | Only its name as a label. |
guide | Right-click: a villager sound and a welcome bubble only you see. Left-click: it flinches and complains. |
portal | Any click: swings, plays a portal sound and sends you to the survival server. |
shopkeeper | Right-click: swings and runs shop as the player. |
mirror | Wears each viewer's own skin and says "Looking good." |
The editor
/npc <name> (or a left-click in the list):
| Button | Does |
|---|---|
| Header | Left: shows or hides it. Right: renames it. |
| APPEARANCE | Skin type, account, texture and signature, pose, scale and outline. |
| EQUIPMENT | Six slots. Left-click a slot to put the item in your hand there, right-click to empty it. |
| LABEL | Left: the label lines and their height. Right: link a hologram. |
| INTERACTIONS | The click lines, permission, cooldown, the two refusal messages and face-the-clicker. |
| ANIMATIONS | Left: what a click plays. Right: the idle, the greeting, the looping idle and the group. Shift-left: the performance picker. Shift-right: pause or resume. |
| VISIBILITY | Look mode and range, view distance, permission. |
| LOCATION | Left: exact position and facing. Right: move here. Shift-left: centre on its block. Shift-right: turn to face me. |
| TELEPORT, DUPLICATE, FINE ADJUST, DELETE | As for holograms. A duplicate stands in the same place and carries no linked hologram. |
Skin
skin.type | Command | Shows |
|---|---|---|
player | /npc <name> skin Notch | The skin an account wears. |
player | /npc <name> skin %placeholder% [fallback] | Whoever a placeholder names, such as a leaderboard's top name, read again every skin-refresh (30 s). The fallback account is worn while it names nobody. See Statues. |
texture | /npc <name> texture <value> [signature] | An uploaded skin: the base64 value and Mojang's signature, as mineskin.org gives them. |
mirror | /npc <name> skin @mirror | Every viewer sees their own skin. |
none | /npc <name> skin @none | The default skin. |
Without the signature, the client draws the default skin. Copy both values.
Pose, size and outline
| Setting | Command | Values | Default |
|---|---|---|---|
| Pose | /npc <name> pose <pose> | standing, sneaking, lying, crawling, spinning | standing |
| Scale | /npc <name> scale <n> | 0.0625 to 16; 1 is a player | 1 |
| Glow | /npc <name> glow <#RRGGBB|none> | An outline, drawn in the nearest team colour | none |
Equipment
Slots: head, chest, legs, feet, hand, off_hand.
/npc guide equip hand # the item in your hand
/npc guide equip hand DIAMOND_SWORD
/npc guide equip head playerhead-Notch
/npc guide equip head basehead-<texture>
/npc guide equip hand air # empties the slot
/npc guide equip clear # empties every slotThe file keeps each slot as an icon string: a material, playerhead-<name>, basehead-<texture>, or a
bytes: item for an item from your hand that carries more than a material.
Where it looks
| Mode | Command | |
|---|---|---|
fixed | /npc <name> look fixed | Always the way it faces. |
nearest | /npc <name> look nearest 8 | At the nearest player in range; everybody sees the same head. |
each-viewer | /npc <name> look each-viewer 8 | Every player in range sees it looking at them. Nothing turns on the server. |
The number is the look range in blocks (default 8). each-viewer is the default for new NPCs
(default-look).
With face-clicker on (default), a click that runs its actions also turns it toward the clicker for
turn-back (default 4 seconds), then back. That turn is never saved.
Who sees it
/npc <name> viewdistance <blocks>: how far away it is seen (default 48)./npc <name> permission [node]: only players with the node see it, its label included. No node clears it.
An NPC in a world that is not loaded waits and appears when the world loads.
The label
The label is the lines above its head, the name players read. It is a hologram, so every line tag works in it, and clicking it does what clicking the NPC does.
/npc guide label set <size:1.2><shine>{primary}&lGUIDE # replaces every line with this one
/npc guide label add <opacity:200>{letters_black}Right-click me
/npc guide label remove 2
/npc guide label clear
/npc guide label height 0.4height-offset is the gap between the top of its head (which follows its pose and scale) and the label's
bottom line. Default 0.25. A label with no lines is no label.
A linked hologram
For something more than a name — pages, a click box of its own, per-viewer placeholders — link any
hologram of holograms.yml:
/npc guide link guide_board
/npc guide unlinkThe NPC moves that hologram above its head (over the label, if it has one) by writing its location in
holograms.yml, and does it again every time the NPC moves. The hologram is still edited as a hologram.
Linking needs the hologram module on.
- Renaming or deleting the hologram does not update the NPC:
linked-hologramkeeps the old name and nothing follows until you link again. - Moving the hologram on its own is undone the next time the NPC changes.
- Two NPCs linked to the same hologram move it back and forth.
Statues
A statue is an NPC frozen in place, wearing whoever holds a spot: the weekly top 3 at spawn, a tournament champion as a trophy.
-
Create it with the statue preset: it faces the way it was placed, has a gold outline and a plaque label.
-
Point its skin at a placeholder that gives a player name, with an account to wear while the spot is empty. It changes skin on its own when somebody else takes the spot:
/npc top1 skin %ajlb_lb_statistic_player_kills_1_alltime_name% Notch -
The label is the plaque, and placeholders work in it:
/npc top1 label set <size:1.3>{highlight}&l#1 {primary}&l%ajlb_lb_statistic_player_kills_1_alltime_name% /npc top1 label add {letters_black}▎ {letters}Kills {letters_black}» {info}%ajlb_lb_statistic_player_kills_1_alltime_value% -
Give it a pose (
/npc top1 pose sneaking), something to hold (/npc top1 equip hand), or make it dance whenever somebody is near, with a continuous idle:/npc top1 animation idle anim:<a looping clip> /npc top1 animation idle-continuous on
Build the pedestal with real blocks and place the statue on top: players can stand on it and walk around it.
On the main thread, for any player online, so it suits values that are the same for everybody (a leaderboard spot), not ones about the viewer. Whatever it gives that is not an account name ("None", an empty spot) wears the fallback.
Animations
An NPC plays something on four triggers: a left click, a right click, on its own (idle) and to greet a
player who walks up (greet, seen only by that player). Each holds either vanilla moves or one
performance.
| Written | What it plays |
|---|---|
wave, wave-offhand, nod, bow, flinch, punch, cheer | A preset of vanilla moves. |
swing, 250ms, hurt | Moves joined by commas: swing, offhand, hurt, crouch, stand, and waits. |
anim:<clip> | A clip from plugins/ExyliaDisplays/animations: a Blockbench project (.bbmodel), or a Blockbench or Emotecraft export (.json). |
emote:<id> | A solo emote of ExyliaEmotes, when it is installed. |
keys:<frames> | Frames written in place, in the [RAGDOLL] frame format. |
A performance is a whole body that takes the NPC's place for whoever is within perform-range (24
blocks by default): it bows, dances or salutes instead of swinging an arm. Its hitbox stays, so clicks
still reach the NPC. One plays at a time, and a sitting NPC never performs.
npcs:
guide:
animations:
left-click: flinch
right-click: anim:wave
idle: anim:sway
idle-every: 20s # how often the idle plays; 0 never
idle-continuous: false # true: the idle loops while anyone is near
idle-group: '' # NPCs of one group keep their idles in step
greet: bow
greet-range: 4.0
greet-cooldown: 30s
perform-range: 24.0Set them with /npc <name> animation <trigger> <value> (none clears one), or from ANIMATIONS in
the editor. /npc <name> play <value> tries one now and says when it was skipped. The performance
picker (shift-left-click ANIMATIONS) lists every emote and clip: left-click one to put it on a
trigger, right-click to try it.
The skin
The body wears the NPC's own skin, an account or a texture. With @mirror a greeting (seen by one
player) wears that player's skin, and anything everybody sees wears the default one, since one body is
shared. It is drawn from real skin pieces (Exylia Skins), so nothing is uploaded to MineSkin and no
resource pack is needed.
Continuous idle
With idle-continuous: true the idle performance plays without end for as long as anybody is within
perform-range, and nobody near means no body and no cost:
/npc dancer animation idle anim:sway
/npc dancer animation idle-continuous on- A click, a greeting or
/npc <name> playplays over it at once, and the idle comes back after. - Write the idle as a loop (a clip set to loop in Blockbench, or
loop:true;anim:<clip>). A clip that does not loop plays to its end and starts again with a short flash. - Somebody who walks up mid-loop sees the plain NPC until the end of the current cycle, then joins in.
- It only applies to performances; vanilla idle moves keep
idle-every.
Groups
A group is a set of NPCs that move as one: a choir, a line of dancers, the three statues of a podium.
/npc left group stage
/npc middle group stage
/npc right group stage
/npcadmin group play stage anim:dance/npc <name> group <key|none>puts it in a group. The group is the NPC'sidle-group, the same key as/npc <name> animation idle-group: one setting, two names.- Continuous idles of one group share one clock: an NPC that starts later, or comes back after a click, waits for the next cycle and plays in the same pose as the others. Give a group one idle clip.
/npcadmin group play <group> <animation>starts it on every member at the same instant and tempo, and says how many started and how many were skipped (already performing, not in the world, or nobody near)./npcadmin group stop <group>,/npcadmin group pause <group>and/npcadmin group resume <group>act on every member./npcadmin group listshows each group with its members.
Pause and stop
| Command | Does |
|---|---|
/npc <name> stop | Ends what it plays now: the body stands back up, then the NPC is back. A continuous idle comes back on its own. |
/npc <name> pause | No idle, no greeting, no click animation and no head turning. Click actions still run, and play still works. |
/npc <name> resume | Back to normal. |
Paused is not saved: a restart resumes every NPC. /npc <name> info, the ANIMATIONS card and the
PLAYBACK button of the performance picker show the state; the button pauses or resumes (left) and
stops (right).
Blockbench
anim: reads Blockbench projects directly. Save the .bbmodel into plugins/ExyliaDisplays/animations
and its clips play at once: no export step, no reload, and a project saved again plays its new frames.
-
On start the plugin writes two templates there, each only if it is missing:
File Rig player_classic.bbmodel4-pixel arms (Steve) player_slim.bbmodel3-pixel arms (Alex) Both have the bones
anim:reads (body,torso,head,right_arm,left_arm,right_leg,left_leg, each limb with a_bendbone for the elbow or knee) and one example clip,wave. -
Open one in Blockbench, add clips under Animate, and save. A copy under another name works too.
-
/npcadmin animationslists every file with its clips, whether each loops and how long it is./npcadmin animations <file>shows one file. Click a clip to copy itsanim:name. -
Play it:
/npc <name> play anim:<clip>, or put it on a trigger.
A clip is called by its name. A file with one clip also answers to the file's name. Drag a skin onto the model in Blockbench to see it; in game the body wears the NPC's skin.
Commands at a glance
See Commands for the full list. /npc competes with Citizens'
/npc when both are installed; use /npcs <name> or /exylianpc <name> then. /npcadmin never clashes.
Something missing on this page? Tell us on Discord