Files
Advenskalender/README.md
T
2026-11-12 16:59:18 +00:00

880 lines
46 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🎄 Adventskalender – Event-Kalender & Geburtstage für Minecraft
Ein Plugin für deinen Minecraft-Server, das Spielern jeden Tag ein Geschenk gibt.
Es hat **drei Kalender** und ein **Geburtstags-Geschenk**:
| Was | Wann | Türchen |
|---|---|---|
| 🎄 **Adventskalender** | ab 1. Dezember | 24 |
| 🎃 **Halloween-Kalender** | ab 1. Oktober | 31 |
| 🐰 **Oster-Kalender** | 13 Tage vor Ostersonntag bis Ostersonntag | 14 |
| 🎂 **Geburtstags-Geschenk** | am Geburtstag des Spielers + 2 Tage danach | 1 pro Jahr |
Du musst **nichts programmieren**. Plugin hineinkopieren, Server starten, fertig.
Alles Weitere (Belohnungen, Texte, Zeiten) kannst du in normalen Textdateien ändern.
Zusätzlich bringt das Plugin eine **ganze Weihnachtswelt** mit: Schnee, Santa-Event, Cracker, Magic Tree, Schneemänner, Plätzchen, Countdown, Wichteln, Adventskranz, Schneeball-Spiel, Deko-Menü, Login-Serie, Quiz, Wunschzettel und einen Weihnachtsmarkt mit Portalen. Details stehen in [Kapitel 18](#18-weihnachts-module).
---
## Inhaltsverzeichnis
1. [Was brauche ich?](#1-was-brauche-ich)
2. [Installation in 5 Schritten](#2-installation-in-5-schritten)
3. [So benutzen Spieler das Plugin](#3-so-benutzen-spieler-das-plugin)
4. [Befehle für Admins](#4-befehle-für-admins)
5. [Rechte (Permissions)](#5-rechte-permissions)
6. [Die Dateien des Plugins](#6-die-dateien-des-plugins)
7. [Belohnungen ändern](#7-belohnungen-ändern)
8. [Kalender ein- und ausschalten oder anpassen](#8-kalender-ein--und-ausschalten-oder-anpassen)
9. [Geburtstage einstellen](#9-geburtstage-einstellen)
10. [Texte und Sprache ändern](#10-texte-und-sprache-ändern)
11. [Alles testen, ohne auf den Dezember zu warten](#11-alles-testen-ohne-auf-den-dezember-zu-warten)
12. [Jeder darf nur einmal – oder der ganze Server nur einmal?](#12-jeder-darf-nur-einmal--oder-der-ganze-server-nur-einmal)
13. [Mehrere Server mit einer Datenbank (MySQL)](#13-mehrere-server-mit-einer-datenbank-mysql)
14. [Platzhalter für Scoreboards, Hologramme & Co.](#14-platzhalter-für-scoreboards-hologramme--co)
15. [Plugin aktualisieren](#15-plugin-aktualisieren)
16. [Probleme und ihre Lösung](#16-probleme-und-ihre-lösung)
17. [Häufige Fragen](#17-häufige-fragen)
18. [Weihnachts-Module](#18-weihnachts-module)
---
## 1. Was brauche ich?
- Einen Minecraft-Server mit **Spigot** oder **Paper** (oder einem Fork davon) ab **Version 1.20**.
- **Java 21** auf dem Server. Ältere Java-Versionen starten das Plugin nicht.
- Optional: das Plugin **PlaceholderAPI**, wenn du Werte des Kalenders und der Weihnachts-Module auf Scoreboards oder Hologrammen anzeigen willst.
- Optional: **WorldGuard**, wenn Schnee nur in bestimmten Regionen fallen soll.
- Optional: eine **MySQL-Datenbank**, wenn mehrere Server (z. B. mit BungeeCord) sich die Daten teilen sollen. Für einen einzelnen Server brauchst du das **nicht**.
> Hinweis: Das Plugin wird gegen die Spigot-API 1.21.10 gebaut und läuft auf Paper 26.2 und Minecraft 26.3. Für Santa als Spielermodell brauchst du Minecraft 1.21.9 oder neuer. Teste das Plugin vor dem Einsatz auf deinem Live-Server kurz aus und mach vorher eine Sicherung.
---
## 2. Installation in 5 Schritten
1. **Server ausschalten** (oder einfach weitermachen, wenn du später neu startest).
2. Die Datei **`adventskalender-1.0.3.jar`** in den Ordner **`plugins`** deines Servers kopieren.
3. **Server starten.**
4. Das Plugin legt automatisch den Ordner **`plugins/Adventskalender`** an. Darin liegen jetzt die Dateien `config.yml`, `messages_de.yml`, `messages_en.yml`, `christmas.yml` und `christmas_messages_de.yml` (bzw. `_en`).
5. **Fertig.** Im Spiel `/ak` eingeben und der Kalender geht auf.
Wenn du in der Konsole die Meldung **„Adventskalender erfolgreich gestartet!“** siehst, hat alles geklappt.
---
## 3. So benutzen Spieler das Plugin
### Kalender öffnen
| Befehl | Was passiert |
|---|---|
| `/ak` | Öffnet den Kalender, der gerade läuft. Läuft keiner, wird der Adventskalender gezeigt (mit gesperrten Türchen). |
| `/ak halloween` | Öffnet den Halloween-Kalender |
| `/ak easter` | Öffnet den Oster-Kalender |
| `/ak advent` | Öffnet den Adventskalender |
Statt `/ak` funktionieren auch `/adventskalender`, `/advent` und `/kalender`.
### Türchen öffnen
- Die **Köpfe (Advent) bzw. Items (Halloween, Ostern)** in der Mitte des Menüs sind die Türchen. Die rot-grünen Glasscheiben am Rand sind nur Dekoration.
- Ein Türchen kannst du nur öffnen, wenn der **Tag erreicht** ist. Der 5. Dezember schaltet z. B. Türchen 1 bis 5 frei, Türchen 6 bleibt zu.
- **Klick auf ein Türchen** = du bekommst das Geschenk. Passt es nicht ins Inventar, fällt es vor deine Füße.
- Ein geöffnetes Türchen **glitzert** und kann nicht nochmal geöffnet werden.
- Hast du einen Tag **verpasst**, ist das kein Problem: Du kannst alte Türchen jederzeit nachholen, solange der Kalender läuft.
### Geburtstags-Geschenk
| Befehl | Was passiert |
|---|---|
| `/ak birthday set 15.03` | Trägt deinen Geburtstag ein (Tag.Monat, **ohne Jahr**) |
| `/ak birthday` | Zeigt deinen eingetragenen Geburtstag |
| `/ak birthday claim` | Holt dein Geschenk ab |
- Du kannst das Geschenk **am Geburtstag und bis zu 2 Tage danach** abholen (Familie, Freunde, Feier – du hast Zeit).
- Es gibt **ein Geschenk pro Jahr**.
- Wenn du dich an deinem Geburtstag (oder danach) einloggst, bekommst du eine **anklickbare Nachricht**. Ein Klick darauf holt das Geschenk ab.
- Dein Geburtstag kann **nur einmal** eingetragen werden. Hast du dich vertippt, muss ein Admin das ändern (siehe unten).
---
## 4. Befehle für Admins
Alle Admin-Befehle beginnen mit `/ak admin`. Du brauchst dafür das Recht `adventskalender.admin` (Operatoren haben es automatisch).
Die Teile in `[eckigen Klammern]` sind **optional**. Lässt du `[event]` weg, gilt der Befehl für **alle** Kalender.
Gültige Namen für `[event]`: `advent`, `halloween`, `easter`.
| Befehl | Was er macht |
|---|---|
| `/ak admin reload` | Lädt Config und Sprachdateien neu, ohne Neustart |
| `/ak admin test [event] <Tag>` | Tut so, als wäre heute der gewählte Tag (siehe [Testen](#11-alles-testen-ohne-auf-den-dezember-zu-warten)) |
| `/ak admin test [event] reset` | Beendet den Test, das echte Datum gilt wieder |
| `/ak admin reset [event] <Spieler>` | Löscht **alle** geöffneten Türchen eines Spielers |
| `/ak admin reset [event] global` | Löscht **alle** Daten aller Spieler (**Vorsicht!**) |
| `/ak admin resetday [event] <Spieler> <Tag>` | Macht **ein** Türchen für einen Spieler wieder zu |
| `/ak admin resetday [event] global <Tag>` | Macht ein Türchen im Server-weiten Modus wieder frei |
| `/ak admin birthday set <Spieler> <TT.MM>` | Trägt den Geburtstag eines Spielers ein oder ändert ihn |
| `/ak admin birthday remove <Spieler>` | Löscht den Geburtstag eines Spielers |
| `/ak admin birthday reset <Spieler>` | Erlaubt dem Spieler, das Geburtstagsgeschenk **nochmal** abzuholen (zum Testen oder bei Problemen) |
**Beispiele:**
```
/ak admin test halloween 15 (Halloween-Kalender: so tun, als wäre der 15. Tag)
/ak admin test reset (alle Tests beenden)
/ak admin resetday advent Steve 3 (Steve darf Türchen 3 im Advent nochmal öffnen)
/ak admin reset halloween Steve (Steves Halloween-Daten löschen)
/ak admin birthday set Steve 24.12 (Steves Geburtstag auf den 24.12. setzen)
```
> Mit **Tab** vervollständigt Minecraft die Namen und Zahlen für dich.
---
## 5. Rechte (Permissions)
Rechte vergibst du mit einem Rechte-Plugin (z. B. LuckPerms).
| Recht | Wofür | Standard |
|---|---|---|
| `adventskalender.use` | Kalender öffnen und benutzen | **alle Spieler** |
| `adventskalender.birthday` | Geburtstag eintragen und Geschenk abholen | **alle Spieler** |
| `adventskalender.admin` | Alle Admin-Befehle und Update-Hinweis beim Beitritt | nur Operatoren |
Die Rechte der Weihnachts-Module (`xmas.use`, `xmas.admin`, `christmasplus.*`) stehen in [Kapitel 18](#rechte-der-weihnachts-module).
---
## 6. Die Dateien des Plugins
Alles liegt in `plugins/Adventskalender/`:
| Datei | Wofür |
|---|---|
| `config.yml` | **Einstellungen und Belohnungen.** Hier änderst du, was es zu gewinnen gibt und wann die Kalender laufen. |
| `messages_de.yml` | Alle **deutschen Texte** (Titel, Nachrichten, Namen der Geschenke) |
| `messages_en.yml` | Alle **englischen Texte** |
| `christmas.yml` | **Einstellungen der Weihnachts-Module** (Schnee, Santa, Baum, Quiz, Markt, Portale und mehr) |
| `christmas_messages_de.yml` / `christmas_messages_en.yml` | **Texte der Weihnachts-Module** |
| `data.yml` | Hier speichert das Plugin, **wer was geöffnet hat** und die Geburtstage. Diese Datei **nicht löschen**, sonst fangen alle von vorne an. |
| `trees.yml`, `wichteln.yml`, `wishes.yml`, `portals.yml` u. a. | Daten der Weihnachts-Module (siehe [Kapitel 18](#gut-zu-wissen)). Nicht löschen. |
### So bearbeitest du die Dateien richtig
1. Öffne die Datei mit einem **Texteditor** (Notepad++, VS Code oder der Editor deines Hosters). **Nicht** mit Word.
2. Ändere nur die Werte, **nicht** die Einrückung am Zeilenanfang. Die Leerzeichen am Anfang sind wichtig!
3. Benutze **Leerzeichen**, keine Tabulatortaste.
4. Speichern und im Spiel `/ak admin reload` eingeben.
5. Wenn der Server nach einem Fehler die Datei nicht mehr lesen kann: Zeile prüfen, die du zuletzt geändert hast (fehlendes Leerzeichen, fehlende Anführungszeichen).
---
## 7. Belohnungen ändern
Jedes Türchen hat in der `config.yml` einen Eintrag. Beispiel Advent, Tag 3:
```yaml
rewards:
3:
material: DIAMOND_SWORD
amount: 1
enchantments:
- type: SHARPNESS
level: 4
- type: UNBREAKING
level: 2
```
**Das bedeutet:**
- `3:` – die Nummer des Türchens
- `material:` – welches Item es gibt (siehe unten)
- `amount:` – wie viele Stück
- `enchantments:` – Verzauberungen. Möchtest du keine, schreibe `enchantments: []`
### Wo stehen die Belohnungen der anderen Kalender?
- **Advent:** ganz oben unter `rewards:`
- **Halloween:** weiter unten unter `events:` → `halloween:` → `rewards:`
- **Ostern:** weiter unten unter `events:` → `easter:` → `rewards:`
- **Geburtstag:** ganz unten unter `birthday:` → `rewards:`
### Item-Namen (`material`)
Es sind die englischen Minecraft-Namen in **GROSSBUCHSTABEN** mit Unterstrich statt Leerzeichen.
Beispiele: `DIAMOND`, `GOLDEN_APPLE`, `NETHERITE_INGOT`, `ELYTRA`, `FIREWORK_ROCKET`.
Eine Liste findest du, wenn du im Internet nach „Spigot Material list“ suchst.
### Verzauberungen (`type`)
Auch hier die englischen Namen: `SHARPNESS`, `UNBREAKING`, `PROTECTION`, `EFFICIENCY`, `FORTUNE`, `LOOTING`, `MENDING` usw.
`level` ist die Stufe (z. B. `5` für Schärfe V).
### Wenn du etwas falsch schreibst
Das Plugin gibt dann eine **Warnung in der Konsole** aus (z. B. „Ungültiges Material …“). Der Spieler bekommt die Meldung, dass das Geschenk falsch eingestellt ist, und das **Türchen bleibt zu**. Er verliert also nichts. Korrigiere den Fehler und lade mit `/ak admin reload` neu.
### Eigener Name und eigene Beschreibung der Geschenke
Der Name und der Beschreibungstext, die im Menü über einem Türchen stehen, kommen **nicht** aus der `config.yml`, sondern aus der Sprachdatei. Siehe [Texte und Sprache ändern](#10-texte-und-sprache-ändern).
---
## 8. Kalender ein- und ausschalten oder anpassen
In der `config.yml` ganz unten gibt es den Bereich `events:`. Dort steht jeder Kalender mit seinen Einstellungen:
```yaml
events:
halloween:
enabled: true
days: 31
start: "10-01"
grace_days: 0
closed_material: PUMPKIN
opened_material: JACK_O_LANTERN
```
| Einstellung | Bedeutung |
|---|---|
| `enabled` | `true` = Kalender an, `false` = Kalender aus (die Daten bleiben erhalten) |
| `days` | Wie viele Türchen der Kalender hat (1 bis 36) |
| `start` | Wann der Kalender beginnt. Format `Monat-Tag`, z. B. `"10-01"` für den 1. Oktober |
| `grace_days` | Wie viele Tage der Kalender nach dem letzten Türchen noch offen bleibt, damit man verpasste Türchen nachholen kann |
| `closed_material` | Item für ein **geschlossenes** Türchen |
| `opened_material` | Item für ein **geöffnetes** Türchen |
### Zeitpunkt für Ostern
Ostern liegt jedes Jahr woanders. Deshalb gibt es dort eine Sonderschreibweise:
```yaml
start: "easter-13"
```
Das heißt: **13 Tage vor Ostersonntag**. Das Plugin rechnet das Datum **jedes Jahr automatisch** aus, du musst nie wieder etwas ändern.
Weitere Beispiele: `easter+1` = Ostermontag, `easter-2` = Karfreitag.
### Eigene Köpfe statt Items (für Fortgeschrittene)
Möchtest du für Halloween oder Ostern hübsche Kopf-Texturen, kannst du bei einem Kalender zusätzlich diese Zeilen einfügen:
```yaml
closed_texture: "http://textures.minecraft.net/texture/DEINE_TEXTUR"
opened_texture: "http://textures.minecraft.net/texture/DEINE_TEXTUR"
```
Passende Texturen findest du auf Seiten wie *minecraft-heads.com* (dort den Wert „Minecraft-URL“ kopieren).
### Zeitzone
Das Plugin richtet sich nach der Uhrzeit des Servers. Wenn dein Server in einem anderen Land steht und die Türchen zu früh oder zu spät aufgehen, trage deine Zeitzone ein:
```yaml
general:
timezone: "Europe/Berlin"
```
---
## 9. Geburtstage einstellen
Alles steht unten in der `config.yml` im Bereich `birthday:`:
```yaml
birthday:
enabled: true
grace_days: 2
allow_change: false
broadcast: true
commands: []
rewards:
1:
material: CAKE
amount: 1
enchantments: []
```
| Einstellung | Bedeutung |
|---|---|
| `enabled` | `false` schaltet die Geburtstags-Funktion komplett ab |
| `grace_days` | Wie viele Tage **nach** dem Geburtstag das Geschenk noch abholbar ist (Standard 2) |
| `allow_change` | `false` = Spieler können ihren Geburtstag nur **einmal** eintragen, Änderungen macht nur ein Admin. `true` = Spieler dürfen selbst ändern (siehe Hinweis) |
| `broadcast` | `true` = der ganze Server sieht „Steve feiert Geburtstag – alles Gute!“, wenn das Geschenk abgeholt wird |
| `commands` | Zusätzliche Befehle, die der Server ausführt (siehe unten) |
| `rewards` | Die Geschenke. Funktioniert genau wie bei den Kalendern, du kannst beliebig viele Einträge anlegen (1, 2, 3, …) |
> **Warum ist `allow_change` standardmäßig aus?**
> Wäre es an, könnte ein Spieler sein Datum jeden Tag umstellen und sich ständig Geschenke holen. Auch mit `true` kann er pro Jahr nur **einmal** abholen.
### Geld oder andere Belohnungen per Befehl
Wenn du z. B. ein Wirtschafts-Plugin hast, kannst du Geld verschenken:
```yaml
commands:
- "eco give %player% 500"
- "give %player% minecraft:cake 1"
```
`%player%` wird automatisch durch den Namen des Spielers ersetzt. Ohne Schrägstrich am Anfang schreiben.
### Wichtige Hinweise
- Das **Jahr** wird nie gespeichert, nur Tag und Monat. Das Plugin weiß also nie, wie alt jemand ist.
- Wer am **29. Februar** Geburtstag hat, feiert in Jahren ohne Schalttag am **28. Februar**.
- Wer am **31. Dezember** Geburtstag hat, kann bis in den Januar abholen. Das funktioniert korrekt.
---
## 10. Texte und Sprache ändern
### Sprache umstellen
In der `config.yml` ganz oben:
```yaml
general:
language: "de"
```
`"de"` = Deutsch, `"en"` = Englisch. Danach `/ak admin reload`.
### Eigene Texte
Öffne `messages_de.yml` (oder `messages_en.yml`). Dort stehen alle Texte. Farben schreibst du mit `&`:
| Code | Farbe | Code | Farbe |
|---|---|---|---|
| `&0` | Schwarz | `&8` | Dunkelgrau |
| `&1` | Dunkelblau | `&9` | Blau |
| `&2` | Dunkelgrün | `&a` | Grün |
| `&3` | Türkis | `&b` | Hellblau |
| `&4` | Dunkelrot | `&c` | Rot |
| `&5` | Lila | `&d` | Pink |
| `&6` | Gold | `&e` | Gelb |
| `&7` | Grau | `&f` | Weiß |
Formatierung: `&l` = **fett**, `&o` = *kursiv*, `&n` = unterstrichen, `&r` = zurücksetzen.
### Platzhalter in Texten
Diese Platzhalter dürfen in den Texten stehen und werden automatisch ersetzt:
- `%day%` – die Nummer des Tages
- `%date%` – das Datum eines gesperrten Türchens
- `%player%` – der Spielername
- `%event%` – der Name des Kalenders
- `%days%` – die Anzahl Tage (bei Geburtstagen)
### Namen und Beschreibung der Geschenke im Menü
Beispiel für den Adventskalender in `messages_de.yml`:
```yaml
rewards:
day_3:
name: "&cTag 3: Schwert des Helden"
lore: ["&7Ein mächtiges Schwert, um Monster zu jagen."]
```
- `name` ist die Überschrift des Türchens.
- `lore` sind die Zeilen darunter. Mehrere Zeilen schreibst du so: `["Zeile 1", "Zeile 2"]`.
Für Halloween und Ostern stehen die Texte weiter unten in der Datei unter `events:` → `halloween:` bzw. `easter:`.
Wenn du ein Geschenk in der `config.yml` änderst, solltest du hier den Namen anpassen, sonst steht „Schwert des Helden“, obwohl es jetzt Diamanten gibt.
> Wenn du neue Texte vermisst („Key error: …“ im Spiel), siehe [Plugin aktualisieren](#15-plugin-aktualisieren).
---
## 11. Alles testen, ohne auf den Dezember zu warten
Du musst nicht bis zum 1. Dezember warten, um alles auszuprobieren:
1. `/ak admin test advent 10` – der Adventskalender denkt jetzt, es sei der 10. Dezember.
2. `/ak advent` – öffne ihn und probiere die Türchen 1 bis 10 aus.
3. Zum Zurücksetzen deiner Test-Türchen: `/ak admin reset advent DEINNAME`
4. Test beenden: `/ak admin test reset`
Genauso für `halloween` und `easter`. Den Test-Tag **vergisst** das Plugin beim nächsten Neustart. Du kannst also nichts „vergessen auszuschalten“.
**Geburtstag testen:**
1. `/ak admin birthday set DEINNAME TT.MM` – statt TT.MM das **heutige** Datum eintragen (z. B. `24.12`)
2. `/ak birthday claim` – du bekommst das Geschenk
3. Nochmal testen: `/ak admin birthday reset DEINNAME`
---
## 12. Jeder darf nur einmal – oder der ganze Server nur einmal?
Es gibt zwei Betriebsarten:
- **Normal (Standard):** Jeder Spieler hat seinen **eigenen** Kalender. Jeder darf jedes Türchen einmal öffnen.
- **Global:** Jedes Türchen darf **nur ein einziger Spieler** auf dem ganzen Server öffnen. Wer zuerst klickt, gewinnt.
Umstellen in der `config.yml`:
```yaml
calendar:
use_global_calendar: false # true = Global-Modus
```
Du kannst das auch nur für **einen** Kalender ändern, indem du bei diesem im Bereich `events:` die Zeile `global: true` oder `global: false` einfügst.
---
## 13. Mehrere Server mit einer Datenbank (MySQL)
Nur nötig, wenn du z. B. ein BungeeCord-Netzwerk hast und alle Server dieselben Daten benutzen sollen. Für **einen** Server einfach ignorieren.
In der `config.yml`:
```yaml
mysql:
enable: true
host: "localhost"
port: 3306
database: "adventskalender"
user: "root"
password: "DEIN_PASSWORT"
```
- Die Datenbank (`adventskalender`) musst du vorher selbst anlegen. Die Tabellen darin erstellt das Plugin allein.
- Danach den Server **neu starten** (oder `/ak admin reload`).
- In der Konsole muss stehen: **„MySQL-Verbindung erfolgreich hergestellt!“**
- Klappt es nicht, benutzt das Plugin automatisch die `data.yml` als Notlösung und schreibt eine Warnung in die Konsole.
- Sollte die Datenbank später kurz ausfallen, bekommen Spieler eine Meldung und es wird **nichts** vergeben. Sobald die Datenbank wieder da ist, geht alles weiter.
- Alle Kalender und Geburtstage werden in der Datenbank gespeichert. Daten aus einer älteren Version werden dabei automatisch übernommen.
> **Wichtig:** Daten aus der `data.yml` werden **nicht automatisch** in die Datenbank kopiert. Schaltest du MySQL ein, fangen die Spieler dort bei null an.
---
## 14. Platzhalter für Scoreboards, Hologramme & Co.
Wenn das Plugin **PlaceholderAPI** installiert ist, kannst du diese Werte überall anzeigen, wo PlaceholderAPI funktioniert:
### Für das gerade laufende Kalender-Event
| Platzhalter | Zeigt |
|---|---|
| `%ak_event%` | Name des laufenden Kalenders (`advent`, `halloween`, `easter`) |
| `%ak_day%` | Welcher Tag des Kalenders heute ist (0 = Kalender läuft nicht) |
| `%ak_claimed%` | Wie viele Türchen der Spieler schon geöffnet hat |
| `%ak_remaining%` | Wie viele Türchen noch offen sind |
| `%ak_has_claimed_today%` | „Ja“ oder „Nein“: Hat der Spieler das heutige Türchen schon geöffnet? |
| `%ak_is_global%` | „Global“ oder „Spieler-basiert“ |
### Für einen bestimmten Kalender
Schreibe den Namen des Kalenders vor den Platzhalter:
- `%ak_halloween_claimed%`
- `%ak_easter_day%`
- `%ak_advent_remaining%`
### Geburtstag
| Platzhalter | Zeigt |
|---|---|
| `%ak_birthday%` | Eingetragenes Datum (z. B. `15.03.`) oder `-` |
| `%ak_birthday_active%` | „Ja“, wenn der Spieler gerade sein Geschenk abholen kann, sonst „Nein“ |
### Weihnachts-Module
Countdown, Advent, Bäume, Schneeball-Punkte, Login-Serie und Wichtel-Partner haben eigene Platzhalter mit dem Präfix `xmas`, zum Beispiel `%xmas_days_left%`. Die ganze Liste steht in [Kapitel 18](#platzhalter-für-die-weihnachts-module).
---
## 15. Plugin aktualisieren
1. Server **ausschalten**.
2. Die **alte `.jar`-Datei** aus dem `plugins`-Ordner löschen.
3. Die **neue `.jar`-Datei** hineinkopieren.
4. Server starten.
Deine **Daten** (`data.yml`) und deine **Einstellungen** bleiben erhalten.
### Neue Einstellungen sichtbar machen
Deine alte `config.yml` und die Sprachdateien werden bei einem Update **nicht überschrieben**. Neue Funktionen laufen trotzdem mit den Standardwerten, du siehst die neuen Einstellungen aber nicht in der Datei. Willst du sie sehen und ändern:
1. Server ausschalten.
2. `config.yml` umbenennen, z. B. in `config_alt.yml`. (Dasselbe mit den `messages_...yml`-Dateien und, falls nötig, mit `christmas.yml` und `christmas_messages_...yml`.)
3. Server starten. Das Plugin erstellt eine frische, vollständige Datei.
4. Deine Änderungen aus `config_alt.yml` in die neue Datei übertragen.
Die `data.yml` bleibt dabei **immer unangetastet**.
> **Beim Update auf 1.0.3:** Die Dateien `christmas.yml` und `christmas_messages_...yml` werden beim ersten Start neu angelegt. Fehlende Einstellungen und Texte ergänzt das Plugin später selbst mit den Standardwerten. Texte, die du **geändert** hast, bleiben erhalten. Neue Wörter oder Korrekturen in den Standardtexten siehst du nur, wenn du die Textdatei umbenennst und neu erzeugen lässt.
### Update-Hinweis
Erscheint eine neue Version auf SpigotMC, schreibt das Plugin eine Warnung in die Konsole. Admins bekommen beim Einloggen eine klickbare Nachricht mit dem Download-Link.
---
## 16. Probleme und ihre Lösung
| Problem | Lösung |
|---|---|
| **Plugin startet nicht** | Prüfe die Java-Version (**Java 21** nötig) und ob es Spigot/Paper ab 1.20 ist. Die genaue Fehlermeldung steht in der Server-Konsole. |
| **`/ak` tut nichts / „Unbekannter Befehl“** | Plugin wurde nicht geladen. Schau in die Konsole oder tippe `/plugins` und prüfe, ob „Adventskalender“ grün ist. |
| **„Dafür hast du keine Berechtigung“** | Der Spieler hat `adventskalender.use` (bzw. `adventskalender.admin`) nicht. Rechte prüfen. |
| **Alle Türchen sind gesperrt** | Es ist gerade nicht die Zeit des Kalenders. Prüfe das Datum oder teste mit `/ak admin test`. |
| **Im Menü steht „Key error: …“** | In deiner Sprachdatei fehlt ein Text. Siehe [Plugin aktualisieren](#15-plugin-aktualisieren), neue Sprachdatei erzeugen lassen. |
| **Ein Türchen lässt sich nicht öffnen, Meldung „falsch konfiguriert“** | In der `config.yml` ist bei diesem Tag ein Item- oder Verzauberungsname falsch geschrieben. Die Konsole sagt dir genau, wo. |
| **Eine Verzauberung fehlt am Geschenk** | Der Name in `type:` ist falsch (englisch und GROSS schreiben). Die Konsole zeigt eine Warnung. |
| **Kopf zeigt Steve statt Weihnachtsmotiv** | Der Server konnte die Textur nicht laden (Internet-/Mojang-Problem). Neustart versuchen. Bei Halloween/Ostern gibt es Items statt Köpfen, das ist normal. |
| **Meldung „Die Datenbank ist gerade nicht erreichbar“** | Nur mit MySQL. Prüfe Zugangsdaten und ob die Datenbank läuft. |
| **Nach dem Reload stimmt etwas nicht** | Server einmal komplett neu starten. |
| **Ein Spieler hat sich beim Geburtstag vertippt** | `/ak admin birthday set <Spieler> <TT.MM>` |
| **Spieler hat sein Geburtstagsgeschenk verloren / Fehler beim Abholen** | `/ak admin birthday reset <Spieler>`, dann darf er nochmal abholen. |
| **Kalender geht zur falschen Uhrzeit auf** | Zeitzone in der `config.yml` einstellen (siehe [Zeitzone](#zeitzone)). |
Hilft nichts davon: Kopiere die **Fehlermeldung aus der Konsole** (nicht nur „geht nicht“) und frage auf der Seite des Plugins bei SpigotMC nach.
---
## 17. Häufige Fragen
**Kann ich Geschenke für jeden Tag selbst festlegen?**
Ja, siehe [Belohnungen ändern](#7-belohnungen-ändern).
**Kann ich einen Kalender ausschalten, den ich nicht will?**
Ja: In der `config.yml` bei `events:` den Eintrag `enabled: false` setzen.
**Kann ich mehr als 24, 31 oder 14 Türchen haben?**
Ja, bis zu 36 pro Kalender (Einstellung `days`). Du musst dann aber auch für jedes neue Türchen eine Belohnung eintragen und im Sprachfile einen Namen vergeben.
**Was passiert, wenn der Kalender vorbei ist?**
Er bleibt noch `grace_days` Tage offen (Advent: bis zum 31.12., Ostern: 7 Tage), danach sind alle Türchen gesperrt, bis er im nächsten Jahr wieder startet.
**Gehen die Türchen jedes Jahr von vorne los?**
Nein. Das Plugin merkt sich dauerhaft, was jemand geöffnet hat. Soll im nächsten Jahr wieder alles neu sein, benutze `/ak admin reset global` (oder `/ak admin reset advent global` nur für den Advent). **Achtung:** Das löscht die Daten für **alle**.
**Sehen alle Spieler, wann ich Geburtstag habe?**
Nein. Das Datum sieht nur der Spieler selbst (und Admins in der Datenbank/Datei). Im Chat steht beim Abholen nur „Spieler feiert Geburtstag“, ohne Datum.
**Funktioniert das Plugin mit Bedrock-Spielern (Geyser)?**
Das wurde nicht getestet.
**Ich habe `data.yml` gelöscht, was jetzt?**
Dann haben alle Spieler wieder alle Türchen und Geburtstage sind weg. Spiele vorher eine Sicherung ein, wenn du eine hast. Mach vor Änderungen am Server grundsätzlich eine Sicherheitskopie des Plugin-Ordners.
---
## 18. Weihnachts-Module
Ab Version 1.0.3 bringt das Plugin zusätzlich viele Weihnachts-Funktionen mit. Du brauchst dafür **keine weiteren Plugins** (kein Christmas+, kein X-Mas, kein Lib's Disguises).
**Wichtig zu wissen:**
- Alle Einstellungen stehen in **`plugins/Adventskalender/christmas.yml`**.
- Alle Texte stehen in **`christmas_messages_de.yml`** (Deutsch) und **`christmas_messages_en.yml`** (Englisch). Welche benutzt wird, hängt von `general.language` in der `config.yml` ab.
- Mit `/ak admin reload` oder `/xmas reload` lädst du alles neu, ohne den Server neu zu starten.
- Befehle: **`/christmas`** (Kurzformen `/xmas`, `/ch`, `/chr`, `/christmasplus`) und **`/cracker`**.
- Items schreibst du überall so: `MATERIAL:Anzahl`, zum Beispiel `DIAMOND:2`. Zusätzlich gehen `cookie:<id>:<Anzahl>`, `cracker:<id>:<Anzahl>`, `crystal:<Anzahl>` und `present:<Anzahl>` (Geschenk-Kopf).
- Mit `/xmas help` zeigt dir das Plugin im Spiel alle Befehle.
| Funktion | Kurz erklärt |
|---|---|
| [Schnee](#schnee) | Schneefall-Partikel, jeder schaltet ihn selbst um |
| [Santa-Event](#santa-claus-event) | Santa fliegt ein, landet und wirft Geschenke |
| [Cracker](#cracker) | Items, die man öffnet und eine Belohnung bekommt |
| [Magic Tree](#magic-tree) | Ein Baum, der mit Items wächst und Geschenke gibt |
| [Schneemänner](#schneemänner) | Deko-Schneemänner und selbst gebaute, die Geschenke geben |
| [Plätzchen](#plätzchen-und-lebkuchen) | Essbare Items mit Effekten |
| [Countdown](#countdown-bis-heiligabend) | Bossbar und Nachricht „Noch X Tage“ |
| [Wichteln](#wichteln) | Zufällig ziehen, Geschenke verteilen |
| [Adventskranz](#adventskranz) | Vier Kerzen, die an den Adventssonntagen angehen |
| [Schneeball-Spiel](#schneeball-spiel) | Arena mit Punkten und Belohnungen |
| [Deko-Menü](#deko-menü) | Deko per Klick aufstellen |
| [Login-Serie](#login-serie) | Belohnungen für tägliches Einloggen |
| [Weihnachtsgruß](#weihnachtsgruß-und-neujahr) | Chat-Gruß und Feuerwerk an besonderen Tagen |
| [Kamin-Socken](#kamin-socken) | Socke aufhängen, am 25.12. liegt etwas darin |
| [Nikolausmütze](#nikolausmütze) | Rote Mütze als Item |
| [Quiz](#weihnachtsquiz) | Frage im Chat, der Schnellste gewinnt |
| [Wunschzettel](#wunschzettel) | Spieler wünschen sich etwas, Admins erfüllen es |
| [Weihnachtsmarkt und Portale](#weihnachtsmarkt-und-portale) | Händler-Stände und Portale dorthin |
### Schnee
- `/xmas snow` schaltet den Schnee **für dich selbst** an oder aus.
- Einstellungen unter `snow:`: Stärke (`level` 1 bis 5), Welten sperren (`disable-in-worlds`), Standard an/aus (`default-on`).
- Mit `enable-only-in-regions: true` und einer Liste unter `regions:` gibt es Schnee nur in bestimmten **WorldGuard**-Regionen. Dafür muss WorldGuard installiert sein.
- Bei vielen Spielern kannst du `display-task-interval` erhöhen (z. B. 10), dann gibt es weniger Last.
### Santa-Claus-Event
| Befehl | Was er macht |
|---|---|
| `/xmas santa start [Zeit] [Welt x y z]` | Santa an deiner Stelle oder an den Koordinaten starten |
| `/xmas santa start [Zeit] random` | Santa an einem zufälligen, festgelegten Ort starten |
| `/xmas santa stop` | Santa beenden |
| `/xmas santa teleport` | Zu Santa teleportieren |
Zeit geht als `300`, `30s`, `5m` oder `1h`. Ohne Angabe gilt `santa.duration`.
- **Anflug:** Santa kommt mit Schlitten und zwei Rentieren (Rudolph, Blitzen) eingeflogen und wirft Geschenke ab, bevor er landet. Abschalten mit `sleigh.enable: false`.
- **Melodie:** Wenn Santa kommt, spielt eine Weihnachtsmelodie mit Glocken (Notenblock-Klänge, keine Dateien nötig). Einstellbar unter `santa.melody` (`enable`, `volume`, `tempo`, `everyone`).
- **Geschenke:** `drop-interval` (Sekunden), `drop-chance` (in %), `radius` und die Liste `gifts`. Cracker gibst du als `cracker:cracker:1` an.
- **Spazieren:** Mit `walk-radius` läuft Santa herum und hinterlässt eine Schneespur (`snow-trail`), die wieder verschwindet.
- **Aussehen:** Ab **Minecraft 1.21.9** ist Santa ein Spielermodell, davor ein Rüstungsständer. Einen eigenen Skin trägst du bei `skin-url` (Textur-Adresse von `textures.minecraft.net`) oder `skin-player` (Spielername) ein. Mit `model: ARMOR_STAND` erzwingst du den Rüstungsständer.
- **Zufällige Orte:** Unter `locations:` trägst du Welt und Koordinaten ein (siehe Beispiel in der Datei).
### Cracker
| Befehl | Recht |
|---|---|
| `/cracker list` | `christmasplus.cracker.list` |
| `/cracker get [id] [Anzahl]` | `christmasplus.cracker.get` (mehr als 1 zusätzlich `christmasplus.cracker.get.multiple`) |
| `/cracker give <Spieler> [id] [Anzahl]` | `christmasplus.cracker.give` |
Rechtsklick öffnet einen Cracker. Die Belohnungen stehen unter `crackers.<id>.rewards`. Jeder Eintrag hat eine `chance` (Gewicht) und `item`, `command` (Befehl, `%player%` wird ersetzt) oder `permission`.
```yaml
crackers:
cracker:
material: FIREWORK_STAR
name: "&c&lWeihnachts-Cracker"
rewards:
- { chance: 40, item: "COOKIE:8" }
- { chance: 10, command: "give %player% diamond 3" }
```
### Magic Tree
So funktioniert der Baum:
1. **Kristall besorgen:** Du bekommst ihn mit `/xmas give <Spieler> [Anzahl]`, oder du stellst ihn in der **Werkbank** her: **Diamanten oben, links, rechts und unten, in der Mitte ein Smaragd**. Abschalten mit `magic-tree.crystal-recipe: false`.
2. **Pflanzen:** Rechtsklick mit dem Kristall auf einen **Setzling**.
3. **Füttern:** Wirf die Items, die der Baum braucht, **neben den Baum**. Er nimmt sie auf (nur vom Besitzer). Mit Rechtsklick auf den Baum siehst du, was noch fehlt.
4. **Wachsen:** Sind alle Items da, kommt eine Meldung und ein Ring leuchtet am Boden. Rechtsklick auf den Baum, dann wächst er eine Stufe.
5. **Stufen:** Setzling, kleiner Baum, Baum, Magic Tree. Items und Wartezeiten stehen unter `magic-tree.levels`.
6. **Geschenke:** Ab dem kleinen Baum erscheinen Geschenk-Köpfe rund um den Baum. Rechtsklick oder Abbauen öffnet sie.
Standard-Kosten:
| Von → nach | Items |
|---|---|
| Setzling → kleiner Baum | 1 Diamant, 10 Redstone, 1 Enderperle |
| Kleiner Baum → Baum | 3 Diamanten, 5 Goldbarren, 10 Blaze-Pulver, 30 Schneebälle |
| Baum → Magic Tree | 5 Diamanten, 3 Smaragde, 8 Goldnuggets, 16 Glowstone-Staub |
Weitere Dinge:
- **Abbauen:** Den Stamm **zweimal** abbauen. Dabei geht der Fortschritt verloren.
- **Schutz:** Bäume und Geschenke sind vor Kolben, Explosionen, Feuer und Laubzerfall geschützt.
- **Limit:** `tree-limit` Bäume pro Spieler.
- **Glück:** Mit `luck.enabled: true` kann ein Geschenk leer sein (`luck.chance` in %).
- **Eigene Geschenke:** `/xmas addhand` fügt das Item in deiner Hand hinzu (gespeichert in `gifts.yml`). `/xmas gifts` lässt sofort Geschenke unter allen Bäumen erscheinen.
- **Event beenden:** `/xmas end` oder automatisch am Datum `holiday-ends.date`. Danach geben Bäume keine Geschenke mehr, Spieler können sie abbauen und bekommen ihre Items zurück (`resource-back`).
- **Partikel:** Spirale, leuchtende Ringe, Lichter, fallende Schneeflocken und ein Stern. Die Stärke stellst du mit `magic-tree.particles.intensity` ein (0,2 bis 5,0, Standard 2,0), abschalten mit `particles.enable: false`.
### Schneemänner
- **Deko-Schneemann (Admin):** `/xmas snowman spawn [stand|walk] [Name]` stellt einen unverwundbaren Schneemann auf: `stand` = steht still, `walk` = läuft im Umkreis um seinen Startpunkt herum (`snowman.deco.walk-radius`, Standard 8 Blöcke). Ohne Angabe gilt `snowman.deco.walk` (Standard `false` = stehend). `/xmas snowman remove` entfernt den nächsten. Die Schnee-Spur laufender Schneemänner verschwindet nach `snowman.trail-fade-seconds` Sekunden wieder (`snowman.trail`: `fade`, `none` oder `keep`).
- **Selbst gebaute:** Wer einen Schneemann baut (zwei Schneeblöcke und ein Kürbis), bekommt einen Namen wie „Steves Schneemann“. Er wirft alle `gift-interval` Sekunden ein kleines Geschenk ab. Es zählen die ältesten `max-per-player` Schneemänner eines Spielers.
- Einstellungen unter `snowman:`.
### Plätzchen und Lebkuchen
Drei Sorten sind eingebaut: `zimtstern` (Tempo), `lebkuchen` (Regeneration) und `bratapfel` (Absorption).
- `/xmas cookie list` zeigt alle Sorten, `/xmas cookie give <Spieler> <id> [Anzahl]` verteilt sie.
- Als Belohnung schreibst du `cookie:zimtstern:2` in Cracker, Santa-Geschenke, Kalender-Geschenke und so weiter.
- Eigene Sorten legst du unter `cookies:` an. Effekte im Format `"effekt:Sekunden:Stufe"`, zum Beispiel `"speed:30:1"`.
### Countdown bis Heiligabend
- Beim Join erscheint „Noch X Tage bis Heiligabend“, dazu eine **Bossbar**. `/xmas countdown` schaltet die Leiste für dich um.
- Einstellungen unter `countdown:`: Zieldatum (`target`, Monat-Tag), ab wie vielen Tagen vorher die Anzeige beginnt (`show-days-before`, Standard 60), Bossbar und Join-Nachricht.
- Für Scoreboards und Hologramme gibt es Platzhalter, siehe [Platzhalter](#platzhalter-für-die-weihnachts-module).
### Wichteln
| Befehl | Wer | Was |
|---|---|---|
| `/xmas wichteln open` | Admin | Wichteln eröffnen, alle werden informiert |
| `/xmas wichteln join` / `leave` | Spieler | Mitmachen / austreten |
| `/xmas wichteln draw` | Admin | Zufällig ziehen (mindestens 3 Teilnehmer, niemand zieht sich selbst) |
| `/xmas wichteln who` | Spieler | Wen du beschenkst |
| `/xmas wichteln gift` | Spieler | Item in der Hand als Geschenk ablegen (ein anderes Item ersetzt es) |
| `/xmas wichteln deliver` | Admin | Alle Geschenke verteilen |
| `/xmas wichteln status` | alle | Phase und Teilnehmerzahl |
| `/xmas wichteln reset` | Admin | Alles zurücksetzen |
Wer beim Verteilen offline ist, bekommt das Geschenk beim nächsten Join. Mit `wichteln.reveal-giver: true` sieht der Empfänger, von wem es kommt.
### Adventskranz
- `/xmas wreath create` baut einen Kranz an der Stelle, auf die du schaust. `/xmas wreath remove` entfernt ihn.
- An den **vier Adventssonntagen** gehen die Kerzen nacheinander an (die dritte ist rosa), mit einer Meldung an alle. Bis zum Datum `wreath.burn-until` (Standard 26.12.) brennen sie.
- Der Kranz ist vor Abbauen geschützt (außer für Admins).
### Schneeball-Spiel
1. Stell dich in die Mitte der Fläche und gib `/xmas snowball arena <Radius>` ein.
2. `/xmas snowball start [Zeit]` startet eine Runde. `/xmas snowball stop` beendet sie.
3. In der Arena bekommt jeder **nur während einer laufenden Runde** immer mindestens 16 Schneebälle (`refill-amount`).
4. Wer einen anderen Spieler in der Arena trifft, bekommt Punkte (`points-per-hit`). Die Punkte stehen in der Actionbar.
5. Am Ende bekommen die **Top 3** ihre Belohnung (`snowball.rewards`). `/xmas snowball top` zeigt die Rangliste.
### Deko-Menü
`/xmas deco` (Admin) öffnet ein Menü: Geschenk, Zuckerstange, Laternenpfahl, Weihnachtsbaum, Kranz, Schneemann, Lichterkette und Schneehaufen. Ein Klick stellt die Deko dort auf, wohin du schaust. `/xmas deco undo` macht die letzte rückgängig.
### Login-Serie
Wer an mehreren Tagen hintereinander einloggt, bekommt steigende Belohnungen. Die Serie zählt im Zeitraum `from` bis `until` (Standard 1.12. bis 31.12.). Nach `cycle` Tagen (Standard 7) beginnen die Belohnungen von vorn. Die Belohnungen stehen unter `login-streak.rewards`.
### Weihnachtsgruß und Neujahr
Am 24.12., 25.12., 31.12. und 1.1. gibt es einmal pro Tag einen Gruß im Chat. Wer an diesem Tag joint, bekommt ihn ebenfalls. Dazu gibt es auf Wunsch ein kleines **Feuerwerk** über dem Spieler (ohne Schaden). Einstellungen unter `greetings:`: Welcher Tag welchen Text bekommt, `join-fireworks`, `fireworks-on-broadcast`.
### Kamin-Socken
- `/xmas stocking` hängt ab dem 1.12. (`hang-from`) eine Socke auf.
- Ab dem 25.12. (`open-on`) bekommt jeder mit aufgehängter Socke automatisch sein Geschenk, oder er holt es mit demselben Befehl ab. Bis `until` (31.12.).
- Die Belohnungen stehen unter `stocking.rewards`.
- **Socke an die Wand hängen:** `/xmas stocking place` hängt eine rote Socke an die Wand, auf die du schaust (höchstens `stocking.max-placed-per-player`, Standard 3). `/xmas stocking remove` entfernt die nächste eigene.
- **Santas Socken-Flug:** Am Weihnachtstag und dem Tag danach (`stocking-flight.from` / `until`, Standard 24.12. bis 25.12.) fliegt Santa von aufgestellter Socke zu aufgestellter Socke und legt unter jeder ein Geschenk ab. Das Geschenk öffnest du mit Rechtsklick; standardmäßig nur der Besitzer der Socke (`owner-only`). Der Besitzer bekommt eine Nachricht mit den Koordinaten, wenn er online ist.
- Einstellungen unter `stocking-flight`: `enable` (an/aus), `interval-minutes` (Abstand zwischen Flügen), `max-stockings-per-flight`, `speed`, `rewards` (leer = `stocking.rewards`).
- Admins können den Flug mit `/xmas stocking flight` sofort testen (auch außerhalb des Zeitraums). Es fliegen nur Socken in geladenen Chunks.
### Nikolausmütze
Eine rote Mütze als Item. Beim Join (in der Weihnachtszeit) erscheint ein **anklickbares Angebot** im Chat. `/xmas hat` gibt sie dir direkt. Mit `santa-hat.auto-equip: true` wird sie automatisch aufgesetzt. Zeitraum: `santa-hat.from` bis `until`.
### Weihnachtsquiz
- `/xmas quiz start [Nr]` stellt eine Frage im Chat (ohne Nummer eine zufällige). Wer **zuerst richtig antwortet**, gewinnt die Belohnung. Die Antwort tippt man einfach in den Chat und sie ist dann für andere nicht sichtbar.
- `/xmas quiz skip` beendet eine laufende Frage, `/xmas quiz count` zeigt die Zahl der Fragen.
- Groß- und Kleinschreibung und Umlaute (ä oder ae) sind egal.
- Mit `quiz.auto.enable: true` kommt alle `interval-minutes` Minuten automatisch eine Frage, wenn mindestens `min-players` Spieler online sind.
- Eigene Fragen trägst du unter `quiz.questions` ein:
```yaml
quiz:
questions:
- { q: "Wie viele Kerzen hat ein Adventskranz?", a: ["4", "vier"] }
- { q: "Frage?", a: ["Antwort"], reward: [ { item: "DIAMOND:1" } ] }
```
### Wunschzettel
- **Spieler:** `/xmas wish <Text>` schreibt einen Wunsch (maximal `max-open-per-player` offene, `max-length` Zeichen). `/xmas wish list` zeigt sie, `/xmas wish clear` löscht sie.
- **Admins:** `/xmas wishes` öffnet das Menü mit allen offenen Wünschen.
- **Linksklick** mit einem Item in der Hand: Wunsch erfüllt, das Item geht als Geschenk an den Spieler.
- **Linksklick ohne Item:** Es passiert nichts, du bekommst einen Hinweis.
- **Shift + Linksklick:** Wunsch ohne Geschenk erfüllen.
- **Rechtsklick:** Wunsch löschen.
- Ist der Spieler offline, bekommt er Geschenk und Meldung beim nächsten Join. Admins werden bei einem neuen Wunsch benachrichtigt.
### Weihnachtsmarkt und Portale
**Marktplatz und Stände (Admin):**
| Befehl | Was er macht |
|---|---|
| `/xmas market set` | **Marktplatz** an deiner Stelle festlegen (Ziel der Portale) |
| `/xmas market unset` | Marktplatz aufheben, Portale führen dann nirgendwohin |
| `/xmas market tp` | Zum Marktplatz teleportieren |
| `/xmas market spawn <id>` | Marktstand aufstellen (mitgeliefert: `plaetzchen`, `deko`) |
| `/xmas market remove` | Nächsten Stand entfernen |
| `/xmas market list` | Stand-IDs anzeigen |
Ein Stand ist ein Händler (Villager), bei dem Spieler Items tauschen. Die Angebote stehen unter `market.stalls.<id>.trades`. Nach einer Änderung lädst du mit `/xmas reload` neu.
```yaml
market:
stalls:
plaetzchen:
name: "&6Plätzchen-Stand"
profession: BUTCHER
trades:
- { give: "cookie:zimtstern:2", price: ["EMERALD:1"] }
```
**Portale (Spieler):** Sie funktionieren **nur, wenn ein Admin den Marktplatz festgelegt hat**.
- `/xmas portal create`: Schau auf den Boden und gib den Befehl ein. Das Plugin baut einen Torbogen aus **Schneeblöcken** (10 Stück, werden verbraucht, Admins zahlen nichts). Er braucht 5 Blöcke Breite und Höhe sowie festen Boden.
- Pro Spieler ist ein Portal erlaubt (`portal.limit-per-player`).
- Wer in der Öffnung steht und `teleport-delay-seconds` (Standard 3) wartet, landet auf dem Markt. Danach gilt eine Pause (`cooldown-seconds`).
- `/xmas market back` oder der Klick-Text im Chat führt zurück vor das Portal.
- `/xmas portal remove` baut das Portal ab (der Besitzer bekommt die Schneeblöcke zurück), `/xmas portal info` zeigt Kosten und Anzahl.
- Portale sind vor Abbauen, Kolben und Explosionen geschützt.
### Zusätze für den Adventskalender
Unter `rewards.<Tag>` in der `config.yml` sind zusätzlich möglich: `commands`, `permissions`, `multiple` (mehrere Geschenke), `random` (Zufallsgeschenk mit Gewichtung), `cracker`, `crystal` und `groups` (extra Geschenke für Gruppen wie Donor, über ein Recht).
```yaml
rewards:
3:
material: DIAMOND
amount: 2
multiple: ["COOKIE:8", "GOLD_INGOT:3"]
random:
- { chance: 50, item: "EMERALD:2" }
- { chance: 50, command: "give %player% apple 5" }
groups:
donor:
permission: "christmasplus.donor"
multiple: ["DIAMOND:3"]
```
- `/ac test` schaltet für dich den Testmodus um (alle Tage öffnen), Recht `christmasplus.adventcalendar.test`.
- `/ac reset <Spieler> <Tag|all>` setzt zurück, Recht `christmasplus.adventcalendar.reset`.
- Mit `calendar-extras.restrict-past-days: true` sind vergangene Tage nur mit `christmasplus.adventcalendar.claimpast` öffenbar.
- Mit `calendar-extras.broadcast-claim: true` sehen alle, wer ein Türchen geöffnet hat.
- Für `permissions` als Belohnung trägst du in der `christmas.yml` bei `permission-command` einen Befehl ein, z. B. für LuckPerms `lp user %player% permission set %permission% true`.
### Platzhalter für die Weihnachts-Module
Mit **PlaceholderAPI** (Präfix `xmas`):
| Platzhalter | Zeigt |
|---|---|
| `%xmas_days_left%` | Tage bis Heiligabend |
| `%xmas_countdown%` | Der Countdown-Text |
| `%xmas_advent%` | Aktueller Advent (0 bis 4) |
| `%xmas_trees%` | Magic Trees des Spielers |
| `%xmas_snowball_points%` | Punkte im Schneeball-Spiel |
| `%xmas_snowball_rank%` | Platz im Schneeball-Spiel |
| `%xmas_streak%` | Aktuelle Login-Serie |
| `%xmas_streak_best%` | Beste Login-Serie |
| `%xmas_wichteln%` | Name des Wichtel-Partners |
### Rechte der Weihnachts-Module
| Recht | Wofür | Standard |
|---|---|---|
| `xmas.use` | Bäume pflanzen, Portale bauen, Wichteln, Wunschzettel | alle |
| `xmas.admin` | Alle Admin-Befehle der Weihnachts-Module | Operatoren |
| `christmasplus.christmas.snow` | `/xmas snow` | alle |
| `christmasplus.christmas.santa` | Santa-Befehle | Operatoren |
| `christmasplus.christmas.reload` | `/xmas reload` | Operatoren |
| `christmasplus.cracker.list` / `get` / `get.multiple` / `give` | Cracker-Befehle | Operatoren |
| `christmasplus.adventcalendar.test` | `/ac test` | Operatoren |
| `christmasplus.adventcalendar.reset` | `/ac reset` | Operatoren |
| `christmasplus.adventcalendar.claimpast` | Vergangene Tage öffnen | alle |
### Gut zu wissen
- Die Weihnachts-Module nutzen eigene Daten-Dateien im Plugin-Ordner (`trees.yml`, `gifts.yml`, `wichteln.yml`, `wreaths.yml`, `snowball.yml`, `streaks.yml`, `stockings.yml`, `wishes.yml`, `market.yml`, `portals.yml`, `greetings.yml`). Diese nicht löschen, wenn die Daten erhalten bleiben sollen.
- **Bäume, Wichteln und Co. werden lokal gespeichert**, nicht in MySQL. Mehrere Server teilen sich diese Daten nicht.
- Das Plugin ist gegen die Spigot-API **1.21.10** gebaut. Auf Servern unter 1.20 wurde es nicht getestet.
- Das Spielermodell für Santa braucht Minecraft **1.21.9** oder neuer, sonst nutzt das Plugin einen Rüstungsständer.
- Quizfragen, Cracker- und Plätzchen-Namen stehen in der `christmas.yml` auf Deutsch und lassen sich dort ändern.
---
*Autor: M_Viper • Frohe Weihnachten, schaurig-schönes Halloween, frohe Ostern und alles Gute zum Geburtstag! 🎄🎃🐰🎂*