# Commands and Permissions All commands live under `/3deh`, with the alias `/3dehologram`. They are registered through Brigadier, so completion and argument validation come from the server: an out-of-range number is rejected as you type it, and branches you lack permission for never appear in completion. ## Targeting a hologram Most commands accept the hologram name, or fall back to your **selection** when you omit it. ``` /3deh select # selects whatever you are looking at /3deh edit scale 2 # applies to the selection /3deh edit shop scale 2 # applies to "shop" regardless of selection ``` Selection is per-player and lasts for the session. `/3deh create` selects what it just made. Because display entities have no hitbox, `/3deh select` cannot raytrace them. It instead picks the hologram closest to the centre of your view within a cone — tunable via `selection.max-distance` and `selection.max-angle` in `config.yml`. ## Managing holograms | Command | Permission | |---|---| | `/3deh create ` | `3deh.command.create` | | `/3deh remove [name]` | `3deh.command.remove` | | `/3deh move [name]` | `3deh.command.move` | | `/3deh teleport ` | `3deh.command.teleport` | | `/3deh list [page]` | `3deh.command.list` | | `/3deh info [name]` | `3deh.command.info` | | `/3deh select` / `/3deh deselect` | `3deh.command.select` | | `/3deh reload` | `3deh.command.reload` | | `/3deh help` | `3deh.command.help` (default `true`) | `3deh.admin` is a parent permission granting all of the above and defaults to op. Names are 1–32 characters from `a-z`, `A-Z`, `0-9`, `_` and `-`. They are matched case-insensitively, so `Shop` and `shop` are the same hologram. `/3deh create` anchors the hologram at your exact position, including your Y. For a floating hologram, stand where you want it or adjust afterwards with a part offset. ## Managing parts | Command | Description | |---|---| | `/3deh part add ` | Append a part; reports its index | | `/3deh part remove ` | Remove a part | | `/3deh part list ` | Show every part with its index | | `/3deh part offset ` | Place a part relative to the anchor | | `/3deh part edit ` | Edit one specific part | All of these need `3deh.command.part`. `/3deh edit` without a part index always targets part `#0`. Use `/3deh part edit` to reach the others. Adding or removing a part renumbers the parts after it and respawns the hologram. Editing an attribute does not respawn anything — the change is pushed to the live entity, so it is seamless for anyone already looking at it. ## Attributes ### Every part type | Attribute | Arguments | Notes | |---|---|---| | `scale` | `` or ` ` | One value scales uniformly | | `rotation` | ` [roll]` | Degrees. Yaw turns around Y, pitch around X, roll around Z | | `translation` | ` ` | Shifts the model inside the entity, before billboarding | | `billboard` | `fixed\|vertical\|horizontal\|center` | How the part turns to face the viewer. `fixed` by default; `center` makes it track the player | | `viewrange` | `` | Multiplies the client render distance. `0` hides it | | `shadow` | ` ` | `0 0` removes the ground shadow | | `glow` | `` or `none` | Setting a colour also turns the glow outline on | | `brightness` | ` ` or `none` | Light levels 0–15. `none` follows world lighting | | `width` / `height` | `` | Culling box. `0` means "never cull" | | `interpolation` | ` ` | Ticks. Smooths later transformation changes | | `teleportduration` | `` | 0–59; vanilla rejects anything outside that | ### Text parts | Attribute | Arguments | Notes | |---|---|---| | `text` | `` | MiniMessage, legacy `&` codes, or plain text | | `linewidth` | `` | Width before wrapping. Default 200 | | `opacity` | `<-1..255>` | `-1` restores the default | | `textshadow` | `` | Drop shadow behind the glyphs | | `seethrough` | `` | Renders through blocks | | `background` | ``, `none`, or `default` | `none` is fully transparent | | `alignment` | `center\|left\|right` | Only visible on multi-line text | ### Block and item parts | Attribute | Arguments | |---|---| | `block` | ``, e.g. `oak_log[axis=y]` | | `item` | `` | | `itemtransform` | `none`, `head`, `gui`, `ground`, `fixed`, `thirdperson_lefthand`, … | Pointing a type-specific attribute at the wrong part reports the mismatch and changes nothing. ## Colours `glow` and `background` accept: - `#rrggbb` or bare `rrggbb` - `#aarrggbb` for `background`, to control transparency - any of the sixteen vanilla colour names — `red`, `gold`, `aqua`, … - `none` to clear the override ## Text formatting The dialect is detected from the string itself: | Input | Read as | |---|---| | `HUB` | MiniMessage | | `&6&lHUB` | Legacy codes | | `&#ff0055pink` | Legacy hex | | `Plain words` | Plain text | MiniMessage wins whenever a tag is present, so a mixed string keeps its tags rather than being eaten by the legacy pass. Ordinary prose containing `<` or `>` is not mistaken for markup. Use `\n` for a line break, since a real newline cannot be typed into chat: ``` /3deh create text rules &6Server rules\n&7Be nice\n&7Have fun ``` A single `TextDisplay` renders all the lines, so a multi-line hologram is still one entity. ## Examples A floating item spinning above a sign: ``` /3deh create item shop diamond /3deh edit shop scale 0.6 /3deh edit shop billboard fixed /3deh edit shop rotation 45 0 0 ``` A glowing, always-lit title above a block: ``` /3deh create block pedestal minecraft:polished_blackstone /3deh part add pedestal text SHOP /3deh part offset pedestal 1 0 1.4 0 /3deh part edit pedestal 1 brightness 15 15 /3deh part edit pedestal 1 background none ```