> 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/caseopening/konfiguration.md).

# Konfiguration

Dieser Abschnitt erklärt alle Konfigurationsdateien und deren Optionen.

***

## Dateiübersicht

Das Plugin erstellt folgende Konfigurationsdateien im `plugins/CaseOpening/` Ordner:

```
plugins/CaseOpening/
├── config.yml              # Hauptkonfiguration & Nachrichten & Sprache
├── casesItem.yml          # Case-Items (Belohnungen)
├── mainGUI.yml            # Main-GUI Layout
├── previewGUI.yml         # Preview-GUI Layout
├── items.yml              # Wiederverwendbare Items
├── caseShop.yml           # Shop-Konfiguration
├── caseGroupRewards.yml   # Gruppen-Belohnungen
└── casePermRewards.yml    # Permission-Belohnungen
```

### 📥 Premade-Konfigurationen verwenden

Schnellstart ohne manuelle Konfiguration:

* **Download**: *\[Link wird bereitgestellt]*

Die folgenden Abschnitte beschreiben die manuelle Konfiguration der einzelnen Dateien.

***

## config.yml

Die Hauptkonfigurationsdatei des Plugins.

### Basis-Einstellungen

```yaml
# Plugin-Präfix für Nachrichten
prefix: '&7[&eCaseOpening&7]'

# Limit für Case-Animation
limit: 15

# Main-GUI Länge (Reihen: 1-6)
mainguilenght: 3

# Standard-Kristalle für neue Spieler
defaultcrystals: 0

# Broadcast bei 10% oder weniger Chance
won10percent: '&6%player% hat %name% gewonnen!'
```

### Sound-Einstellungen

```yaml
sound:
  # Sound beim Gewinnen
  win: ENTITY_PLAYER_LEVELUP;0.2;0.2
  
  # Sounds während Animation
  run1: BLOCK_COMPARATOR_CLICK;0.2;0.2
  run2: ENTITY_BAT_TAKEOFF;0.2;0.2
```

Format: `SOUND_NAME;Volume;Pitch`

### MySQL-Konfiguration

```yaml
MySQL:
  host: localhost
  port: '3306'
  username: xxusernamexx
  datebase: xxdatabasexx
  password: xxx
  tablename: caseopening_players
```

Hinweis: Um MySQL zu aktivieren, musst du diese Werte ausfüllen. Das Plugin erkennt automatisch ob MySQL konfiguriert ist.

### GUI-Namen

```yaml
guiname:
  main:
    name: '&eCaseOpening'
    size: 3  # Anzahl der Reihen (1-6)
  preview: '&6Mögliche Gewinne'
```

### Seltenheitsgrade

```yaml
seltenheitsgrad:
  '1': '&7Seltenheit: &4&l&kX&r &4&lGöttlich &k&lX'
  '5': '&7Seltenheit: &c&lMythisch'
  '10': '&7Seltenheit: &6Legendär'
  '25': '&7Seltenheit: &5Episch'
  '50': '&7Seltenheit: &9Selten'
  '75': '&7Seltenheit: &aNormal'
  '100': '&7Seltenheit: &7Häufig'
```

Diese werden automatisch basierend auf der Item-Chance angezeigt.

***

### ´Nachrichten

{% code expandable="true" %}

```yaml
messages:
  noperm: '&cDazu hast keine Rechte.'
  playernotonline: '&cDer Spieler &e%player% &cist nicht online!'
  error:
    keinitem: '&cDu hast kein Item in der Hand!'
    invfull: '&cDein Inventar ist voll!'
    offhand: '&cDu darfst in deiner linken Hand kein Item haben!'
    limit: '&cDu hast dein Limit erreicht, versuche es morgen nochmal!'
    wrongnumber: '&cDu musst eine Zahl zwischen %from% bis %to% eingeben!'
    casename: '&cCasename darf nur aus Buchstaben und Zahlen bestehen!'
    playercouldnotfound: '&cSpieler konnte in der Datenbank nicht gefunden werden!'
    onlyplayer: '&cNur Spieler können diesen Befehl nutzen.'
    case:
      notfound: '&cCase &e''%name%'' &cwurde nicht gefunden!'
    invalid_number: '&cUngültige Zahl angegeben.'
    caseitem:
      notfound: '&cCase-Item mit ID %id% nicht gefunden!'
      chance:
        invalid: '&cChance muss zwischen 0 und 100 liegen.'
      limit:
        invalid: '&cLimit muss eine gültige Zahl sein.'
      settype:
        usage: '&cNutze: /caseitem edit <CaseName> <ItemID> setType <item/cmd>'
        cmd:
          usage: '&cNutze: /caseitem edit <CaseName> <ItemID> setType cmd ...'
      edit:
        unknown: '&cUnbekannter Bearbeitungstyp.'
      get:
        usage: '&cNutze: /caseitem getitem <CaseName> <ItemID>'
  registercaseblock:
    success: '&aBlock erfolgreich als Case-Block registriert!'
    error:
      alreadyregistered: '&cDieser Block ist bereits als Case-Block registriert!'
    cancel: '&cRegistrierung wurde abgebrochen.'
    start: '&aKlicke auf einen Block, um ihn als Case-Block zu registrieren. &7(Rechtsklick
      zum Abbrechen)'
  unregistercaseblock:
    success: '&aBlock erfolgreich als Case-Block entfernt!'
    error:
      notregistered: '&cDieser Block ist nicht als Case-Block registriert!'
    cancel: '&cEntfernung wurde abgebrochen.'
    start: '&aKlicke auf einen Case-Block, um ihn zu entfernen. &7(Rechtsklick zum
      Abbrechen)'
  bought: '&aDu hast &e%amount% Cases &afür &e%name% &agekauft!'
  nothereplaceable: '&cEs gibt nichts zu ersetzen!'
  usage:
    case:
      help: |-
        &7================== &eCase Befehle &7==================
        &e/case add <Case> <Spieler/*/**> <Anzahl> &7- &fFügt Cases hinzu
        &e/case remove <Case> <Spieler/*/**> <Anzahl> &7- &fEntfernt Cases
        &e/case take <Case> <Spieler/*/**> <Anzahl> &7- &fAlias für remove
        &e/case set <Case> <Spieler/*/**> <Anzahl> &7- &fSetzt die Anzahl
        &7-----------------------------------------------------
        &e/case create <Name> <Slot> <DisplayName..> &7- &fNeue Case erstellen
        &e/case delete <Name> confirm &7- &fCase löschen
        &e/case edit <Name> <Aktion> ... &7- &fCase bearbeiten
        &7-----------------------------------------------------
        &e/case info <Spieler> &7- &fInfos über Cases eines Spielers
        &e/case reload &7- &fConfig neu laden
        &7=====================================================
      add: '&cNutze: /case add <Case> <Spieler/*/**> <Anzahl> ...'
      remove: '&cNutze: /case remove <Case> <Spieler/*/**> <Anzahl> ...'
      take: '&cNutze: /case take <Case> <Spieler/*/**> <Anzahl> ...'
      set: '&cNutze: /case set <Case> <Spieler/*/**> <Anzahl> ...'
      create: '&cNutze: /case create <Name> <Slot> <DisplayName..> ...'
      delete: '&cNutze: /case delete <Name> confirm ...'
      edit: '&cNutze: /case edit <Name> <Aktion> ...'
      info: '&cNutze: /case info <Spieler> ...'
      reload: '&cNutze: /case reload ...'
    casemsg: '&cNutze: /casemsg <Spieler> <Nachricht>'
    caseitem:
      help: |-
        &7================ &eCaseItem Befehle &7================
        &e/caseitem create <CaseName> <Chance%> <item/cmd> (<maxAmount>) &7- &fItem hinzufügen
        &e/caseitem edit <CaseName> <ItemID> <Aktion> ... &7- &fItem bearbeiten
        &e/caseitem getitem <CaseName> <ItemID> &7- &fItem ausgeben
        &e/caseitem clone <FromCase> <ItemID> <ToCase> &7- &fItem klonen
        &7======================================================
      create: '&cNutze: /caseitem create <CaseName> <Chance in %> <item/cmd> ...'
      edit: '&cNutze: /caseitem edit <CaseName> <ItemID> <Aktion> ...'
      getitem: '&cNutze: /caseitem getitem <CaseName> <ItemID> ...'
      clone: '&cNutze: /caseitem clone <FromCase> <ItemID> <ToCase> ...'
      delete: '&cNutze: /caseitem delete <CaseName> <ItemID> confirm'
    casebc: '&cNutze: /casebc <Nachricht> ...'
    createcmditem: '&cNutze: /createcmditem <Command ohne /> ...'
    registercaseblock: '&cNutze: /registercaseblock ...'
    unregistercaseblock: '&cNutze: /unregistercaseblock ...'
    givemobilecaseopening: '&cNutze: /givemobilecaseopening ...'
    casegroupadd: '&cNutze: /casegroupadd <Spieler> <Gruppe> ...'
    casepermadd: '&cNutze: /casepermadd <Spieler> <Permission> ...'
    crystals:
      help: |-
        &7================ &eCrystals Befehle &7================
        &e/crystals add <Spieler/*/**> <Anzahl> &7- &fFügt Crystals hinzu
        &e/crystals remove <Spieler/*/**> <Anzahl> &7- &fEntfernt Crystals
        &e/crystals take <Spieler/*/**> <Anzahl> &7- &fAlias für remove
        &e/crystals set <Spieler/*/**> <Anzahl> &7- &fSetzt die Anzahl
        &e/crystals info <Spieler> &7- &fZeigt Kristall-Info eines Spielers
        &7=====================================================
      add: '&cNutze: /crystals add <Spieler/*/**> <Anzahl>'
      remove: '&cNutze: /crystals remove <Spieler/*/**> <Anzahl>'
      take: '&cNutze: /crystals take <Spieler/*/**> <Anzahl>'
      set: '&cNutze: /crystals set <Spieler/*/**> <Anzahl>'
      info: '&cNutze: /crystals info <Spieler>'
  caseitem:
    usage: '&cNutze: /caseitem <SubCommand> ...'
    create:
      usage: '&cNutze: /caseitem create <CaseName> <Chance in %> <item/cmd> (<maxAmount>)'
      success:
        cmd: '&aCMD-Item erfolgreich erstellt &7(&aCase &e%name% &7(&aID: &e%id%&7))&a!
          &7[&6Klicke hier um Befehle hinzuzufügen&7]'
        item: '&aItem aus deiner Hand wurde zur Case &e%name% &7(&aID: &e%id%&7) &ahinzugefügt.'
      invalid-chance: '&cChance muss eine Zahl ...'
      invalid-type: '&cUngültiger Typ ...'
      invalid-amount: '&cMaxAmount muss eine gültige Zahl sein.'
      no-item: '&cDu hast kein Item in der Hand.'
      onlyplayer: '&cNur Spieler können diesen Befehl nutzen.'
    clone:
      success: '&aItem &e#%fromitemid% &avon Case &e%fromcase% &awurde erfolgreich
        zu Case &e%tocase% &ageklont! &7(Neue ID: &e%newitemid%&7)'
    delete:
      confirm: '&cBitte bestätige das Löschen von Item &e#%id% &caus Case &e%case%&c.'
    edit:
      chance:
        current: '&aAktuelle Chance für Item &e%itemid% &ain Case &e%casename%&a:
          &e%value%%'
        success: '&aChance für Item &e%itemid% &ain Case &e%casename% &aauf &e%value%%
          &agesetzt.'
        invalid: '&cChance muss eine Zahl zwischen 0 und 100 sein.'
      limit:
        current: '&aAktuelles Limit für Item &e%itemid% &ain Case &e%casename%&a:
          &e%value%'
        success: '&aLimit für Item &e%itemid% &ain Case &e%casename% &aauf &e%value%
          &agesetzt.'
        invalid: '&cLimit muss eine gültige Zahl sein.'
      setitemofhand:
        no-item: '&cDu hast kein Item in der Hand!'
        success: '&aItem &e%item% &awurde als Display-Item für &e%itemid% &ain Case
          &e%casename% &aübernommen.'
      settype:
        current: '&aAktueller Typ für Item &e%itemid% &ain Case &e%casename%&a: &e%value%'
        success: '&aTyp für Item &e%itemid% &ain Case &e%casename% &aauf &e%type%
          &agesetzt.'
        invalid: '&cUngültiger Typ! Nutze: item oder cmd'
      addcmd:
        notcmd: '&cDieser CaseItem-Typ ist kein CMD-Item!'
        usage: '&cNutze: /caseitem edit <Case> <ItemID> addcmd <Befehl>'
        success: '&aBefehl &e%command% &awurde zu Item &e%itemid% &ain Case &e%casename%
          &ahinzugefügt.'
      listcmd:
        notcmd: '&cDieser CaseItem-Typ ist kein CMD-Item!'
        empty: '&cKeine Befehle für Item &e%itemid% &cin Case &e%casename% &cvorhanden.'
        header: '&7--- &eBefehle für Item &e%itemid% &7in Case &e%casename% &7---'
        line: '&7[%index%] &f%command%'
        editbutton: '&e[✎]'
        removebutton: '&c[X]'
      removecmd:
        notcmd: '&cDieser CaseItem-Typ ist kein CMD-Item!'
        usage: '&cNutze: /caseitem edit <Case> <ItemID> removecmd <Index> confirm'
        confirm: '&cBitte bestätige das Entfernen des Befehls &e%command% &c(Index:
          %index%)'
        confirmbutton: '&a&l[BESTÄTIGEN]'
        success: '&aBefehl &e%command% &awurde von Item &e%itemid% &ain Case &e%casename%
          &aentfernt.'
        invalid: '&cUngültiger Index angegeben.'
      editcmd:
        notcmd: '&cDieser CaseItem-Typ ist kein CMD-Item!'
        usage: '&cNutze: /caseitem edit <Case> <ItemID> editcmd <Index> <Neuer Befehl>'
        current: '&aAktueller Befehl [%index%] für Item &e%itemid% &ain Case &e%casename%&a:
          &e%command%'
        success: '&aBefehl [%index%] für Item &e%itemid% &ain Case &e%casename% &aauf
          &e%command% &ageändert.'
        invalid: '&cUngültiger Index angegeben.'
  casebc:
    usage: '&cNutze: /casebc <Nachricht>'
  case:
    info:
      usage: '&cNutze: /case info <Spieler>'
      header: §e==========================
      footer: §e==========================
      playerinfo: '§ePlayerInfo: %player%'
      caseentry: '%casename%: %amount%'
      emptyline: ''
    create:
      usage: '&cNutze: /case create <Name> <Slot> <DisplayName..>'
      success: '&aCase &e''%casename%'' &aerfolgreich erstellt ...'
      error: '&cCase &e''%casename%'' &cexistiert bereits!'
    delete:
      usage: '&cNutze: /case delete <Name> confirm'
      confirm: '&cBitte bestätige das Löschen ...'
      success: '&aCase &e''%casename%'' &awurde erfolgreich gelöscht.'
      error: '&cCase &e''%casename%'' &cwurde nicht gefunden!'
    edit:
      usage: '&cNutze: /case edit <Name> <Aktion> <Wert>'
      displayname:
        current: '&aAktueller DisplayName für Case &e%casename%&a: &e%value%'
        success: '&aDisplayName für Case &e%casename% &aauf &e%value% &agesetzt.'
      amount:
        current: '&aAktuelle Anzahl für Case &e%casename%&a: &e%value%'
        success: '&aAnzahl für Case &e%casename% &aauf &e%value% &agesetzt.'
        wrongnumber: '&cDie Anzahl muss zwischen %from% und %to% liegen.'
      limit:
        current: '&aAktuelles Limit für Case &e%casename%&a: &e%value%'
        success: '&aLimit für Case &e%casename% &aauf &e%value% &agesetzt.'
        wrongnumber: '&cDas Limit muss eine gültige Zahl sein.'
      price:
        current: '&aAktueller Preis für Case &e%casename%&a: &e%value%'
        success: '&aPreis für Case &e%casename% &aauf &e%value% &agesetzt.'
        wrongnumber: '&cDer Preis muss eine gültige Zahl sein.'
      crystals:
        current: '&aCrystals aktiviert für Case &e%casename%&a: &e%value%'
        success: '&aCrystals für Case &e%casename% &aauf &e%value% &agesetzt.'
      material:
        current: '&aAktuelles Material für Case &e%casename%&a: &e%value%'
        success: '&aMaterial für Case &e%casename% &aauf &e%value% &agesetzt.'
        invalid: '&cUngültiges Material angegeben.'
      setitemofhand:
        only-player: '&cNur Spieler können diese Aktion ausführen.'
        no-item: '&cDu hast kein Item in der Hand!'
        success: '&aItem aus der Hand wurde für Case &e%casename% &aübernommen.'
      addlore:
        usage: '&cNutze: /case edit <Name> addlore <Text>'
        success: '&aLore-Zeile &e''%value%'' &awurde zu Case &e%casename% &ahinzugefügt.'
      removeloreline:
        empty: '&cCase &e%casename% &chat keine Lore-Zeilen.'
        header: '&7--- &eLore-Zeilen für Case &e%casename% &7---'
        removebutton: '&c[X] '
        line: '&7[%index%] &f%text%'
        suggestcommand: /case edit %caseid% removeloreline %index%
        success: '&aLore-Zeile &e%value% &awurde aus Case &e%casename% &aentfernt.'
        error: '&cUngültiger Zeilen-Index angegeben.'
      editeloreline:
        empty: '&cCase &e%casename% &chat keine Lore-Zeilen zum Bearbeiten.'
        header: '&7--- &eLore-Zeilen bearbeiten für Case &e%casename% &7---'
        editbutton: '&e[✎] '
        line: '&7[%index%] &f%text%'
        suggestcommand: /case edit %caseid% editeloreline %index% %text%
        usage: '&cNutze: /case edit <Name> editeloreline <Index> <Neuer Text>'
        success: '&aLore-Zeile &e%line% &awurde auf &e''%value%'' &ain Case &e%casename%
          &ageändert.'
        error: '&cUngültiger Zeilen-Index angegeben.'
      lightninground:
        current: '&aBlitz-Effekt für Case &e%casename%&a: &e%value%'
        success: '&aBlitz-Effekt für Case &e%casename% &aauf &e%value% &agesetzt.'
      enable:
        current: '&aCase &e%casename% &aist aktiviert: &e%value%'
        success: '&aCase &e%casename% &awurde auf &e%value% &agesetzt.'
      permission:
        current: '&aAktuelle Permission für Case &e%casename%&a: &e%value%'
        success: '&aPermission für Case &e%casename% &aauf &e%value% &agesetzt.'
      lootviewable:
        current: '&aLoot-Ansicht für Case &e%casename%&a: &e%value%'
        success: '&aLoot-Ansicht für Case &e%casename% &aauf &e%value% &agesetzt.'
      slot:
        current: '&aAktueller Slot für Case &e%casename%&a: &e%value%'
        success: '&aSlot für Case &e%casename% &aauf &e%value% &agesetzt.'
        wrongnumber: '&cDer Slot muss eine gültige Zahl sein.'
  success:
    caseitem:
      delete: '&aItem &e#%id% &awurde erfolgreich aus Case &e%case% &agelöscht!'
      chance: '&aChance erfolgreich gesetzt: %value%.'
      limit: '&aLimit erfolgreich gesetzt: %value%.'
      setitem: '&aItem aus der Hand wurde übernommen.'
      settype: '&aTyp erfolgreich gesetzt: %type%.'
      settypecmd: '&aCMD-Typ: %type% gesetzt, Befehl: %command%.'
      permission: '&aBenötigte Permission gesetzt: %value%.'
      showrarity: '&aShowRarity auf %value% gesetzt.'
      lootviewable: '&aLoot-Ansicht gesetzt auf: %value%.'
      broadcast: '&aBroadcast-Message gesetzt: %value%.'
      get: '&aDu hast das Item mit ID %id% erhalten.'
    updateplayerscases: '&a%player% hat nun &e%amount% &aCases von &e%name%&a.'
    updateplayerscasestarget: '&aDu hast nun &e%amount% &aCases von &e%name%&a.'
    allplayersupdated: '&aAlle Spieler wurden aktualisiert.'
    updateplayerscrystals: '&a%player% hat nun &e%amount% &aCrystals.'
    updateplayerscrystalstarget: '&aDu hast nun &e%amount% &aCrystals von &e%player%
      &aerhalten.'
  notenoughmoney: '&cDu hast nicht genügend Geld!'
  createcmditem:
    noitem: '&cDu hast kein Item in der Hand.'
    add: '&aBeim Rechtsklicken auf das Item wird nun der Befehl %cmd% ausgeführt.'
    usage: '&cNutze: /createcmditem <SubCommand> ...'
    help: |-
      &7================ &eCreateCMDItem Befehle &7================
      &e/createcmditem addcmd <Befehl> &7- &fBefehl zum Item hinzufügen
      &e/createcmditem listcmd &7- &fAlle Befehle des Items anzeigen
      &e/createcmditem removecmd <Index> confirm &7- &fBefehl entfernen
      &e/createcmditem editcmd <Index> <Neuer Befehl> &7- &fBefehl bearbeiten
      &7==========================================================
    addcmd:
      usage: '&cNutze: /createcmditem addcmd <Befehl>'
      noitem: '&cDu hast kein Item in der Hand!'
      success: '&aBefehl hinzugefügt: &e%command%'
    listcmd:
      noitem: '&cDu hast kein Item in der Hand!'
      header: '&7--- &eBefehle für Item in Hand ---'
      empty: '&cKeine Befehle für dieses Item vorhanden.'
      line: '&7[%index%] &f%command%'
      editbutton: '&e[✎] '
      removebutton: '&c[X] '
    removecmd:
      noitem: '&cDu hast kein Item in der Hand!'
      usage: '&cNutze: /createcmditem removecmd <Index> confirm'
      confirm: '&cBitte bestätige das Entfernen des Befehls &e%command% &c(Index:
        %index%)'
      confirmbutton: '&a&l[BESTÄTIGEN]'
      success: '&aBefehl entfernt: &e%command%'
      invalid: '&cUngültiger Index angegeben.'
      nocmds: '&cKeine Befehle zum Entfernen vorhanden.'
    editcmd:
      noitem: '&cDu hast kein Item in der Hand!'
      usage: '&cNutze: /createcmditem editcmd <Index> <Neuer Befehl>'
      current: '&aAktueller Befehl [%index%]: &e%command%'
      success: '&aBefehl [%index%] geändert zu: &e%command%'
      invalid: '&cUngültiger Index angegeben.'
      nocmds: '&cKeine Befehle zum Bearbeiten vorhanden.'
  crystals:
    info:
      emptyline: ''
      header: '&6&m========================================'
      playerinfo: '&eKristall-Info für &6%player%'
      amount: '&7Crystals: &e%amount%'
      footer: '&6&m========================================'
```

{% endcode %}

### Verfügbare Platzhalter

* `%player%` - Spielername
* `%casename%` / `%name%` - Case-Name
* `%amount%` - Anzahl
* `%value%` - Wert bei Edit-Befehlen
* `%item%` / `%itemid%` - Item-Name/ID

Hinweis: Alle Nachrichten befinden sich in der `config.yml`, nicht in einer separaten Datei.

***

## cases.yml

Definiert alle Cases und ihre Eigenschaften.

### Struktur

{% code expandable="true" %}

```yaml
cases:
  starter:
    # Anzeige-Einstellungen
    display:
      slot: 10
      material: CHEST
      displayname: "§6§lStarter Case"
      lore:
        - "§7Ein einfaches Starter-Case"
        - "§7mit grundlegenden Items"
        - ""
        - "§eKosten: §650 Kristalle"
        - "§eChance: §aHoch"
    
    # Preis in Kristallen
    price: 50
    
    # Maximale Anzahl pro Spieler (0 = unbegrenzt)
    maxAmount: 100
    
    # Aktiviert/Deaktiviert das Case
    enabled: true
    
    # Vorschau aktiviert
    lootviewable: true
    
    # Erforderliche Permission (optional)
    permission: ""
    
    # Effekte
    effects:
      # Blitz-Effekt beim Öffnen
      lightninground: false
      
      # Partikel werden nicht unterstützt
      # particle: FLAME
    
  legendary:
    display:
      slot: 16
      material: ENDER_CHEST
      displayname: "§c§lLegendary Case"
      lore:
        - "§7Ein seltenes legendäres Case"
        - "§7mit den besten Items"
        - ""
        - "§eKosten: §6500 Kristalle"
        - "§eChance: §cSehr Niedrig"
    
    price: 500
    maxAmount: 10
    enabled: true
    lootviewable: true
    permission: "caseopening.case.legendary"
    
    effects:
      lightninground: true
      # Partikel werden nicht unterstützt
      # particle: DRAGON_BREATH
```

{% endcode %}

***

## /casesItem (Beispielhaft bronze.yml)

Definiert alle Items (Belohnungen) in den Cases.

### Struktur

{% code expandable="true" %}

```yaml
# ##// Plugin Coded by Dyroxplays. \##

Cases:
  bronze:
    name: '&6&lBronze Kiste'
    slot: 11
    limit: -1
    price: 500
    lightninground: false
    enabled: true
    lootviewable: true
    amount: 1
    lore:
    - '&7Solide Belohnungen!'
    - '&7'
    - '&eDu hast &6%amount% &eKisten'
    material: ENDER_CHEST
    crystals: false
    permission: none

items:
  '1':
    chance: 50
    limit: -1
    displayIsWin: true
    display:
      material: DIAMOND
      amount: 4
      name: '&b&l4x Diamanten'
  '2':
    chance: 45
    limit: -1
    displayIsWin: true
    display:
      material: DIAMOND
      amount: 8
      name: '&b&l8x Diamanten'
  '3':
    chance: 35
    limit: -1
    displayIsWin: true
    display:
      material: DIAMOND
      amount: 12
      name: '&b&l12x Diamanten'
  '4':
    chance: 25
    limit: -1
    displayIsWin: true
    display:
      material: DIAMOND
      amount: 16
      name: '&b&l16x Diamanten'
  '5':
    chance: 45
    limit: -1
    displayIsWin: true
    display:
      material: GOLDEN_APPLE
      amount: 1
      name: '&6&l1x Goldapfel'
  '6':
    chance: 40
    limit: -1
    displayIsWin: true
    display:
      material: GOLDEN_APPLE
      amount: 3
      name: '&6&l3x Goldäpfel'
  '7':
    chance: 30
    limit: -1
    displayIsWin: true
    display:
      material: GOLDEN_APPLE
      amount: 5
      name: '&6&l5x Goldäpfel'
  '8':
    chance: 45
    limit: -1
    displayIsWin: true
    display:
      material: ENDER_PEARL
      amount: 4
      name: '&5&l4x Enderperlen'
  '9':
    chance: 40
    limit: -1
    displayIsWin: true
    display:
      material: ENDER_PEARL
      amount: 8
      name: '&5&l8x Enderperlen'
  '10':
    chance: 30
    limit: -1
    displayIsWin: true
    display:
      material: ENDER_PEARL
      amount: 16
      name: '&5&l16x Enderperlen'
  '11':
    chance: 45
    limit: -1
    displayIsWin: true
    display:
      material: EXPERIENCE_BOTTLE
      amount: 8
      name: '&a&l8x EP-Flaschen'
  '12':
    chance: 40
    limit: -1
    displayIsWin: true
    display:
      material: EXPERIENCE_BOTTLE
      amount: 16
      name: '&a&l16x EP-Flaschen'
  '13':
    chance: 30
    limit: -1
    displayIsWin: true
    display:
      material: EXPERIENCE_BOTTLE
      amount: 32
      name: '&a&l32x EP-Flaschen'
  '14':
    chance: 38
    limit: -1
    displayIsWin: true
    display:
      material: EMERALD_BLOCK
      amount: 1
      name: '&a&l1x Smaragdblock'
  '15':
    chance: 28
    limit: -1
    displayIsWin: true
    display:
      material: EMERALD_BLOCK
      amount: 2
      name: '&a&l2x Smaragdblöcke'
  '16':
    chance: 18
    limit: -1
    displayIsWin: true
    display:
      material: EMERALD_BLOCK
      amount: 3
      name: '&a&l3x Smaragdblöcke'
  '17':
    chance: 40
    limit: -1
    displayIsWin: false
    display:
      material: GOLD_NUGGET
      amount: 5
    cmd:
      cmds:
      - eco give %player% 500
      displayname: '&6&l500$ Geld'
  '18':
    chance: 35
    limit: -1
    displayIsWin: false
    display:
      material: GOLD_NUGGET
      amount: 7
    cmd:
      cmds:
      - eco give %player% 750
      displayname: '&6&l750$ Geld'
  '19':
    chance: 30
    limit: -1
    displayIsWin: false
    display:
      material: GOLD_INGOT
      amount: 1
    cmd:
      cmds:
      - eco give %player% 1000
      displayname: '&6&l1.000$ Geld'
  '20':
    chance: 25
    limit: -1
    displayIsWin: false
    display:
      material: GOLD_INGOT
      amount: 2
    cmd:
      cmds:
      - eco give %player% 1500
      displayname: '&6&l1.500$ Geld'
  '21':
    chance: 20
    limit: -1
    displayIsWin: false
    display:
      material: GOLD_INGOT
      amount: 3
    cmd:
      cmds:
      - eco give %player% 2000
      displayname: '&6&l2.000$ Geld'
  '22':
    chance: 35
    limit: -1
    displayIsWin: false
    display:
      material: AMETHYST_SHARD
      amount: 3
    cmd:
      cmds:
      - crystals add %player% 15
      displayname: '&d&l15 Kristalle'
  '23':
    chance: 30
    limit: -1
    displayIsWin: false
    display:
      material: AMETHYST_SHARD
      amount: 5
    cmd:
      cmds:
      - crystals add %player% 25
      displayname: '&d&l25 Kristalle'
  '24':
    chance: 25
    limit: -1
    displayIsWin: false
    display:
      material: AMETHYST_SHARD
      amount: 7
    cmd:
      cmds:
      - crystals add %player% 35
      displayname: '&d&l35 Kristalle'
  '25':
    chance: 20
    limit: -1
    displayIsWin: false
    display:
      material: AMETHYST_SHARD
      amount: 10
    cmd:
      cmds:
      - crystals add %player% 50
      displayname: '&d&l50 Kristalle'
  '26':
    chance: 25
    limit: -1
    displayIsWin: true
    display:
      material: DIAMOND_SWORD
      amount: 1
      name: '&b&lDiamant Schwert'
      enchantments:
        DAMAGE_ALL: 3
  '27':
    chance: 20
    limit: -1
    displayIsWin: true
    display:
      material: DIAMOND_PICKAXE
      amount: 1
      name: '&b&lDiamant Spitzhacke'
      enchantments:
        DIG_SPEED: 3
        DURABILITY: 2
  '28':
    chance: 20
    limit: -1
    displayIsWin: true
    display:
      material: DIAMOND_AXE
      amount: 1
      name: '&b&lDiamant Axt'
      enchantments:
        DIG_SPEED: 3
        DURABILITY: 2
  '29':
    chance: 18
    limit: -1
    displayIsWin: true
    display:
      material: DIAMOND_CHESTPLATE
      amount: 1
      name: '&b&lDiamant Brustpanzer'
      enchantments:
        PROTECTION_ENVIRONMENTAL: 2
  '30':
    chance: 18
    limit: -1
    displayIsWin: true
    display:
      material: DIAMOND_LEGGINGS
      amount: 1
      name: '&b&lDiamant Hose'
      enchantments:
        PROTECTION_ENVIRONMENTAL: 2
  '31':
    chance: 15
    limit: -1
    displayIsWin: true
    display:
      material: DIAMOND_CHESTPLATE
      amount: 1
      name: '&b&lGuter Diamant Brustpanzer'
      enchantments:
        PROTECTION_ENVIRONMENTAL: 3
        DURABILITY: 2
  '32':
    chance: 12
    limit: -1
    displayIsWin: true
    display:
      material: ELYTRA
      amount: 1
      name: '&5&lElytren'
  '33':
    chance: 8
    limit: 100
    displayIsWin: true
    display:
      material: ELYTRA
      amount: 1
      name: '&5&lElytren mit Haltbarkeit'
      lore:
      - '&c&lGlobal Limit: 100x'
      enchantments:
        DURABILITY: 3
  '34':
    chance: 3
    limit: 25
    displayIsWin: false
    display:
      material: ENDER_CHEST
      amount: 1
    cmd:
      cmds:
      - case add silver %player% 1
      displayname: '&7&l1x Silber Kiste'
      lore:
      - '&7Upgrade!'
      - '&6&lJACKPOT!'
      - '&c&lGlobal Limit: 25x'

```

{% endcode %}

***

## maingui.yml

Konfiguration des Hauptmenüs.

### Struktur

```yaml
# ##// Plugin Coded by Dyroxplays. \##

gui:
  name: '&eCaseOpening'
  length: 3
placeholder:
  enable: true
  BLACK_STAINED_GLASS_PANE: 0-26
caseshop:
  name: '&5Case Shop'
  lore:
  - '&7Kaufe Cases'
  - '&7Du hast &e%crystals% &7Crystals'
  slot: 22
  material: NETHER_STAR

```

***

## previewgui.yml

Konfiguration der Vorschau-GUI.

### Struktur

```yaml
# ##// Plugin Coded by Dyroxplays. \##

gui:
  name: '&6Mögliche Gewinne'
  length: 6
placeholder:
  enable: true
  BLACK_STAINED_GLASS_PANE: 45-53
itemlimitlore:
- '&a'
- '&c&l§nStückzahl Begrenzt'
- '&aAktuell sind noch &e%limit% &aStück verfügbar!'
- '&b'
items:
  prevPage:
    material: PLAYER_HEAD
    skullowner: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjdhYWNhZDE5M2UyMjI2OTcxZWQ5NTMwMmRiYTQzMzQzOGJlNDY0NGZiYWI1ZWJmODE4MDU0MDYxNjY3ZmJlMiJ9fX0=
    name: '&7«'
    slot: 52
  nextPage:
    material: PLAYER_HEAD
    skullowner: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTliZjMyOTJlMTI2YTEwNWI1NGViYTcxM2FhMWIxNTJkNTQxYTFkODkzODgyOWM1NjM2NGQxNzhlZDIyYmYifX19
    name: '&7»'
    slot: 53
  backtomain:
    material: BARRIER
    name: '&cZum Hauptmenü'
    slot: 45

```

***

## items.yml

Wiederverwendbare Item-Templates.

### Struktur

```yaml
# ##// Plugin Coded by Dyroxplays. \##

mobilecaseoopening:
  name: '&6Mobiles CaseOpening'
  lore:
  - '&7Platziere diesen Block und spiele CaseOpening von überall'
  - '&4&lAchtung: &7Beim Abbauen wird der Block komplett zerstört'
  material: CHEST
  holo: '&6Mobiles CaseOpening'
caseopening:
  speedindicator:
    material: PLAYER_HEAD
    skullowner: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTliZjMyOTJlMTI2YTEwNWI1NGViYTcxM2FhMWIxNTJkNTQxYTFkODkzODgyOWM1NjM2NGQxNzhlZDIyYmYifX19
    name: '&7Speedmultiplikator: x%speed%'
    slot: 8
  placeholder:
    enable: true
    GRAY_STAINED_GLASS_PANE: 0-3,5-8,18-26
  winindicator:
    material: HOPPER
    name: '&eGewinn:'
    slot: 4

```

***

## caseshop.yml

Konfiguration des Kristall-Shops.

### Struktur

```yaml
# ##// Plugin Coded by Dyroxplays. \##

confirmgui: '&6CaseShop &7> Sicher?'
gui:
  name: '&6CaseShop'
  lenght: 5
maingui:
  name: '&5Case Shop'
  lore:
  - '&7Kaufe Cases'
  - '&7Du hast &e%crystals% &7Crystals'
  slot: 22
  material: NETHER_STAR
backitem:
  name: '&cZurück'
  slot: 36
  material: NETHER_STAR
items:
  '1':
    material: CHEST
    name: '&7&lStarter Kiste'
    amount: 1
    lore:
    - '&7Für Einsteiger'
    - '&7'
    - '&ePreis: &6100 Kristalle'
    - '&d&lKauf mit Kristallen'
    price: 100
    crystals: true
    cmds:
    - case add starter %player% 1
  '2':
    material: CHEST
    name: '&6&lBronze Kiste'
    amount: 1
    lore:
    - '&7Solide Belohnungen'
    - '&7'
    - '&ePreis: &6200 Kristalle'
    - '&d&lKauf mit Kristallen'
    price: 200
    crystals: true
    cmds:
    - case add bronze %player% 1
  '3':
    material: ENDER_CHEST
    name: '&7&lSilber Kiste'
    amount: 1
    lore:
    - '&7Hochwertige Belohnungen'
    - '&7'
    - '&ePreis: &6500 Kristalle'
    - '&d&lKauf mit Kristallen'
    price: 500
    crystals: true
    cmds:
    - case add silver %player% 1
  '5':
    material: CHEST
    name: '&6&lGold Kiste'
    amount: 1
    lore:
    - '&7Premium-Belohnungen'
    - '&7'
    - '&ePreis: &61.500 Kristalle'
    - '&d&lKauf mit Kristallen'
    price: 1500
    crystals: true
    cmds:
    - case add gold %player% 1
  '6':
    material: ENDER_CHEST
    name: '&b&lDiamond Kiste'
    amount: 1
    lore:
    - '&7Legendäre Belohnungen'
    - '&7'
    - '&ePreis: &64.000 Kristalle'
    - '&d&lKauf mit Kristallen'
    price: 4000
    crystals: true
    cmds:
    - case add diamond %player% 1
  '7':
    material: ENDER_CHEST
    name: '&a&lSmaragd Kiste'
    amount: 1
    lore:
    - '&a&lEXKLUSIV FÜR VIPs!'
    - '&7Die besten Belohnungen'
    - '&7'
    - '&ePreis: &610.000 Kristalle'
    - '&d&lKauf mit Kristallen'
    - '&c&lPermission erforderlich!'
    price: 10000
    crystals: true
    cmds:
    - case add emerald %player% 1
  '19':
    material: BARREL
    name: '&7&lStarter Kiste'
    amount: 1
    lore:
    - '&7Für Einsteiger'
    - '&7'
    - '&ePreis: &6250$'
    - '&6&lKauf mit Geld'
    price: 250
    crystals: false
    cmds:
    - case add starter %player% 1
  '20':
    material: BARREL
    name: '&6&lBronze Kiste'
    amount: 1
    lore:
    - '&7Solide Belohnungen'
    - '&7'
    - '&ePreis: &6500$'
    - '&6&lKauf mit Geld'
    price: 500
    crystals: false
    cmds:
    - case add bronze %player% 1
  '21':
    material: BARREL
    name: '&7&lSilber Kiste'
    amount: 1
    lore:
    - '&7Hochwertige Belohnungen'
    - '&7'
    - '&ePreis: &61.500$'
    - '&6&lKauf mit Geld'
    price: 1500
    crystals: false
    cmds:
    - case add silver %player% 1
  '23':
    material: BARREL
    name: '&6&lGold Kiste'
    amount: 1
    lore:
    - '&7Premium-Belohnungen'
    - '&7'
    - '&ePreis: &64.000$'
    - '&6&lKauf mit Geld'
    price: 4000
    crystals: false
    cmds:
    - case add gold %player% 1
  '24':
    material: BARREL
    name: '&b&lDiamond Kiste'
    amount: 1
    lore:
    - '&7Legendäre Belohnungen'
    - '&7'
    - '&ePreis: &610.000$'
    - '&6&lKauf mit Geld'
    price: 10000
    crystals: false
    cmds:
    - case add diamond %player% 1
  '25':
    material: BARREL
    name: '&a&lSmaragd Kiste'
    amount: 1
    lore:
    - '&a&lEXKLUSIV FÜR VIPs!'
    - '&7Die besten Belohnungen'
    - '&7'
    - '&ePreis: &625.000$'
    - '&6&lKauf mit Geld'
    - '&c&lPermission erforderlich!'
    price: 25000
    crystals: false
    cmds:
    - case add emerald %player% 1

```

***

* `caseopening_cases` - Case-Bestände
* `caseopening_crystals` - Kristall-Bestände

***

{% hint style="info" %}
Tipps & Best Practices

* Backup: Erstelle vor größeren Änderungen ein Backup der Config-Dateien
* Reload: Nutze `/case reload` nach Änderungen in YML-Dateien
* Validierung: YAML ist leerzeichen-sensitiv - nutze einen YAML-Validator
* Chancen: Teste Gewinnchancen mit `/caseitem getitem` und echten Öffnungen
* Farbcodes: Nutze [Hex-Farben](https://www.color-hex.com/) für moderne Designs (1.16+)
* Items: Verwende items.yml für Items, die an mehreren Stellen genutzt werden
  {% endhint %}

***

## Häufige Konfigurationsfehler

<details>

<summary>Falsch: Leerzeichen in Case-Namen</summary>

```yaml
starter case:  # FEHLER
```

Richtig:

```yaml
starter_case:
```

</details>

<details>

<summary>Falsch: Ungültige Einrückung</summary>

```yaml
item:
material: DIAMOND  # FEHLER - fehlende Einrückung
```

Richtig:

```yaml
item:
  material: DIAMOND
```

</details>
