# Plugin: MavRotatingHeads

{% hint style="info" %}
The plugin is extremely performant, smooth with no flickering, and uses very little CPU, with under 1% CPU usage for 100 heads.
{% endhint %}

### Commands:&#x20;

Root command: `/mmh`\
Permission required for all subcommands: `mavmovingheads.admin`

#### `/mmh create <id> [texture]`

Creates a new rotating head at your current location.

#### `/mmh edit <id> <option> <value>`

Edits a property of an existing head. See the table for the full list.

| Argument | Type   | Required | Description                                      |
| -------- | ------ | -------- | ------------------------------------------------ |
| `id`     | word   | yes      | Head identifier (tab-completes active heads)     |
| `option` | word   | yes      | Property to change (tab-completes valid options) |
| `value`  | string | yes      | New value for the property                       |

#### `/mmh delete <id>`

Removes a head permanently (entity despawned, entry deleted from `heads.yml`).

#### `/mmh movehere <id>`

Moves an existing head to your current location.

#### `/mmh teleport <id>`

Teleports you to a head's location.

#### `/mmh list`

Lists the IDs of all active heads.

#### `/mmh reload`

Reloads all configs from disk and respawns every head.

#### `/mmh benchmark <id> [count]`

#### `/mmh benchmark clear`

Spawns `count` clones of a head (1–500, default 100) in a grid around you for performance testing. `clear` removes all benchmark heads.

### Configurations

{% code title="setting.yml" %}

```yaml
# The language of the plugin
language: "en_us"

# When you create a head, it will use this texture as default
# If you don't provide a texture, it will use this texture as default
default_head_texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTVjMmZjOTIzMjhjNTQ1YTk4YjlmNTk4ZTM4Y2RlMjQ4NGFkMTNjOWY3ZmE3NWQ2ZmNkZjg3MjE0ZjJhMmFhMiJ9fX0=
```

{% endcode %}

{% code title="heads.yml" %}

```yaml
# ─────────────────────────────────────────────────────────────────
#  MavMovingHeads — heads.yml
#  Each top-level key is a unique head ID.
#  You can define as many heads as you like.
#
#  To apply changes: run /mmh reload in-game or restart the server.
#  To create a head in-game: /mmh create <id> [texture]
# ─────────────────────────────────────────────────────────────────

globe:

  # ── Location ───────────────────────────────────────────────────
  # World name and exact coordinates where the head is placed.
  # Tip: use /mmh movehere <id> in-game instead of editing manually.
  location:
    world: world
    x: 0
    y: 64
    z: 0

  # ── Display range ──────────────────────────────────────────────
  # How far away (in blocks) players can see the head.
  # Recommended: 32–128. Lower values improve performance.
  display_range: 32

  particles:
    # Set to false to disable all particles for this head.
    enable: true

    # Named particle effect entries. Each entry needs:
    #   effect: ParticleEffect enum name (see PlayerParticles wiki)
    #   style:  ParticleStyle enum name  (see PlayerParticles wiki)
    #
    # Optional color data (only for effects that support it):
    #   color:   "r,g,b"  — RGB color for DUST, ENTITY_EFFECT, etc.
    #   note:    <int>    — note index (0–24) for NOTE effect
    #   to_color:"r,g,b"  — end color for DUST_COLOR_TRANSITION (use with color)
    list:
      flame_rings:
        effect: FLAME
        style: RINGS

      # Colored dust examples (comment/uncomment to try):
      # red_dust:
      #   effect: DUST
      #   style: RINGS
      #   color: "255,50,50"
      #
      # rainbow_dust:
      #   effect: DUST_COLOR_TRANSITION
      #   style: RINGS
      #   color: "255,50,50"
      #   to_color: "50,50,255"

  # ── Appearance & rotation ──────────────────────────────────────
  options:
    # Base64-encoded player head texture.
    # Get textures from: https://minecraft-heads.com (use the "Value" field).
    texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjU5ZThkNDE5NmZlYTgyNzAyNWMyOTI3YTZmY2Q2ZTk4ZDAzMDA1NzM3MTIzOGE3N2FlNGNkZGViY2U4NjQ3NyJ9fX0=

    # Size multiplier for the head model. Default: 2.0
    # Examples: 1.0 = normal head size, 3.0 = large, 0.5 = tiny
    scale: 3.0

    # Rotation speed on the Y axis. Default: 1.0
    # Higher = faster spin. Use 0 to disable rotation.
    speedY: 1.0

    # Light emission (0–15 per channel). Useful in dark areas.
    # sky: daylight contribution, block: artificial light contribution.
    # Set both to 15 for a fully bright head regardless of surroundings.
    brightness:
      sky: 15
      block: 15

  # ── Click interaction ──────────────────────────────────────────
  # Attach an invisible hitbox to the head so players can click it.
  interaction:
    # Set to false to disable all click detection.
    enable: true

    # Commands run on ANY click (left or right).
    # If this list is not empty, left-click and right-click are ignored.
    # Leave empty ([]) to use left-click / right-click separately.
    #
    # Command prefixes:
    #   [player]  — run as the player who clicked
    #   [console] — run as the server console
    #   (none)    — defaults to console
    #
    # Placeholder: %player% is replaced with the clicker's name.
    any-click:
      - '[player] say %player% clicked the head'

    # Commands run only on left-click (ignored if any-click is set).
    left-click:
      - '[console] say %player% left clicked the head'

    # Commands run only on right-click (ignored if any-click is set).
    right-click:
      - '[console] say %player% right clicked the head'

  # ── Hologram ───────────────────────────────────────────────────
  # A floating text display rendered above the head.
  holograms:
    # Set to false to hide the hologram entirely.
    enable: true

    # Vertical offset from the head's position in blocks.
    # Use a positive value (e.g. 1.5) to float the text above the head.
    offsetY: 0

    # How often the hologram text refreshes, in ticks (20 ticks = 1 second).
    # Required when lines contain PlaceholderAPI placeholders.
    # Set to 0 for static text that never refreshes (best performance).
    refresh_interval: 0

    # Text lines displayed in the hologram (top to bottom).
    # Supports full MiniMessage formatting: https://docs.advntr.dev/minimessage/format.html
    # Supports PlaceholderAPI placeholders if the plugin is installed.
    lines:
      - <gradient:#fbc531:#f0932b><bold>MCMMO SMP
      - <!b><gray>server.gg
      - <reset><white>Welcome Back <head:%player_name%> %player_name%<!b>!
      - <gray>Use <white>/help <gray>to learn more about the
      - <gray>server's features & how to play.
      - ''
      - <white><b>%server_online% Online Players

    options:
      # Size multiplier for the hologram text. Default: 1.0
      scale: 1.0

      # If true, the text is visible through solid blocks.
      see_through: false

      # If true, a drop shadow is rendered behind the text.
      text_shadow: true

      # Background panel behind the text.
      # Options: "default" (dark panel), "none" (transparent), or a hex color:
      #   "#RRGGBB"   — opaque color,  e.g. "#1a1a2e"
      #   "#AARRGGBB" — with opacity,  e.g. "#801a1a2e"
      background: none

      # Light emission for the hologram text (0–15). Same rules as the head above.
      brightness:
        sky: 15
        block: 15

```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.hyronic.dev/server-setups/mcmmo-survival/plugin-mavrotatingheads.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
