> For the complete documentation index, see [llms.txt](https://wiki.dyroxplays.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.dyroxplays.de/abstimmungen/konfiguration/eigene-abstimmungen.md).

# Eigene Abstimmungen

In diesem Guide lernst du, wie du eigene Abstimmungen (Votes) für dein **Abstimmungen**-Plugin erstellst und verwaltest.

***

## Grundlagen des Abstimmungs-Systems

Das System ermöglicht Spielern, über ein GUI-Menü Umfragen zu starten. Ein Vote hat folgende Eigenschaften:

1. **Kosten:** Das Starten eines Votes kostet In-Game-Geld (`price`).
2. **Ziel-Eingabe (playernameneeded):** Bestimmt, ob der Abstimmende einen Spielernamen in den Chat eingeben muss (z. B. für Kick-Votes).
3. **Ausführung:** Wenn die Mehrheit mit "JA" stimmt, wird der hinterlegte Befehl ausgeführt (entweder durch den Spieler oder die Konsole).
4. **Interaktive Buttons:** Während des Votes werden "JA" und "NEIN" Buttons im Chat angezeigt.

***

## Konfigurations-Struktur

Jeder Abstimmungstyp wird unter dem Key `votes` auf einem bestimmten GUI-Slot konfiguriert (z. B. Slot `'11'`).

```yaml
votes:
  '11': # Slot im GUI-Menü (0-26)
    material: 'MATERIALNAME'       # Symbol im GUI
    shortid: 0                     # Sub-ID (für ältere Minecraft-Versionen)
    name: 'Anzeigename'             # Name des Items im Menü
    price: 500                     # Kosten zum Starten des Votes
    playernameneeded: true         # Muss der Spieler einen Namen im Chat eingeben?
    command: '[CONSOLE]kick %target% &cMehrheitlich gekickt!' # Auszuführender Befehl bei Erfolg
    
    # Broadcast-Meldungen im Chat
    broadcast:
      start:
        - '&6&l%player% &7hat eine Abstimmung gestartet, um &c%target% &7zu kicken!'
        - '%vote%'                 # Dieser Platzhalter rendert die JA/NEIN-Klickbuttons!
      yes:
        - '&aDie Abstimmung war erfolgreich! &e%target% &7wurde gekickt.'
        - '%result%'               # Dieser Platzhalter rendert das Endergebnis (JA/NEIN Stimmenanzahl)!
      no:
        - '&cDie Abstimmung ist fehlgeschlagen! &e%target% &7darf bleiben.'
        - '%result%'
```

***

## Platzhalter & Optionen

* **`[CONSOLE]`-Präfix im Befehl:** Wenn der Befehl unter `command` mit `[CONSOLE]` beginnt, führt die Konsole den Befehl aus (z. B. `[CONSOLE]kick %target%`). Fehlt das Präfix, wird der Befehl im Namen des abstimmenden Spielers ausgeführt.
* **Platzhalter im Befehl & in Nachrichten:**
  * `%player%`: Der Name des Spielers, der die Abstimmung gestartet hat.
  * `%target%`: Der Name des Ziel-Spielers (falls `playernameneeded: true`).
  * `%world%`: Der Name der Welt, in der die Abstimmung gestartet wurde.
  * `%vote%`: Rendert die interaktiven Klick-Buttons im Chat zum Abstimmen.
  * `%result%`: Zeigt das Endergebnis der Abstimmung im Chat an.

***

## Konfigurations-Beispiele

### 1. Kick-Abstimmung (mit Spielername)

Ein Vote, um einen störenden Spieler durch die Konsole kicken zu lassen:

```yaml
  '11':
    material: LAVA_BUCKET
    name: '&c&lSpieler kicken'
    price: 1000
    playernameneeded: true
    command: '[CONSOLE]kick %target% &cAbstimmung erfolgreich!'
    lore:
      - '&7Starte einen Vote, um einen'
      - '&7Spieler vom Server zu werfen.'
      - ''
      - '&7Kosten: &e1000 Coins'
    broadcast:
      start:
        - '&8» &c&lVote &8| &e%player% &7will &c%target% &7kicken!'
        - '%vote%'
      yes:
        - '&8» &c&lVote &8| &aErfolgreich! &e%target% &7wurde gekickt.'
        - '%result%'
      no:
        - '&8» &c&lVote &8| &cFehlgeschlagen! &e%target% &7bleibt.'
        - '%result%'
```

### 2. Sonnen-Abstimmung (ohne Spielername)

Ein Vote, um das Wetter auf Sonne zu stellen (wird im Namen des Spielers ausgeführt):

```yaml
  '13':
    material: SUNFLOWER
    name: '&e&lSonnen-Vote'
    price: 250
    playernameneeded: false
    command: 'sun' # Führt /sun als Spieler aus
    lore:
      - '&7Stimmt ab, um das Wetter'
      - '&7auf Sonne zu stellen.'
      - ''
      - '&7Kosten: &e250 Coins'
    broadcast:
      start:
        - '&8» &e&lVote &8| &e%player% &7möchte die Sonne scheinen lassen!'
        - '%vote%'
      yes:
        - '&8» &e&lVote &8| &aErfolgreich! Die Sonne scheint nun.'
        - '%result%'
      no:
        - '&8» &e&lVote &8| &cFehlgeschlagen! Es bleibt bewölkt.'
        - '%result%'
```

***

## Schritt-für-Schritt-Anleitung: Neue Abstimmung hinzufügen

{% stepper %}
{% step %}

#### Slot bestimmen

Wähle einen freien Slot in der GUI (Slots 0 bis 26, standardmäßig 27 Slots insgesamt).
{% endstep %}

{% step %}

#### playernameneeded konfigurieren

Soll die Abstimmung eine bestimmte Person betreffen?

* Falls ja, setze `playernameneeded: true` (der Spieler wird beim Klick aufgefordert, den Namen im Chat einzugeben).
* Falls nein, setze `playernameneeded: false`.
  {% endstep %}

{% step %}

#### Befehl festlegen

Definiere den auszuführenden Befehl bei erfolgreichem Votingergebnis. Verwende `[CONSOLE]` am Anfang, falls der Spieler für den Befehl keine Rechte besitzt.
{% endstep %}

{% step %}

#### Broadcasts eintragen

Passe die Start-, Erfolgs- und Fehlschlag-Nachrichten an. Vergiss nicht die Platzhalter `%vote%` und `%result%`.
{% endstep %}
{% endstepper %}
