Warum ist das Format so aufgebaut?
Design-Entscheidung
Das Format TRIGGER:<TYPE>COMMAND xREPEAT ist nicht zufällig gewählt. Es ist ein Kompromiss zwischen:
- Einfachheit (User können es verstehen)
- Maschinenlesbarkeit (Code kann es parsen)
- Flexibilität (verschiedene Command-Typen)
Alternativen (und warum sie nicht gewählt wurden)
Alternative 1: JSON-Format
{
"triggers": [
{
"id": "follow",
"command": "/give @a diamond",
"repeat": 1
}
]
}
Pro: Strukturiert, leicht zu parsen Con: Zu streng, User machen viele Fehler mit Klammern/Kommas
Alternative 2: Config-basiert (YAML)
actions:
follow:
command: /give @a diamond
repeat: 1
Pro: Lesbar Con: Zu viel Setup
Alternative 3: SQL-Datenbank
INSERT INTO actions VALUES ('follow', '/give @a diamond', 1);
Pro: Mächtig, Daten persistent Con: Overkill, braucht externe Tools
Das gewählte Format: Warum es besser ist
follow:/give @a diamond x1
Vorteile:
- Eine Zeile pro Aktion – Einfach zu verstehen
- Trennung mit
:undx– Klare Struktur ohne Klammern - Minimal, prägnant – Anfänger verstehen es schnell
- Nicht zu streng (Optional:
xkann fehlen) - Kommentar-Support (#) – Lines einfach deaktivieren
- Kompatibel – Funktioniert in regulären Text-Editoren
Parsen ist einfach
Für den Code:
# Beispiel: "follow:/give @a diamond x3"
parts = line.split(":")
trigger = parts[0] # "follow"
cmd_with_repeat = parts[1] # "/give @a diamond x3"
# Repeat extrahieren
if "x" in cmd_with_repeat:
cmd, repeat = cmd_with_repeat.rsplit("x", 1)
repeat_count = int(repeat)
else:
cmd = cmd_with_repeat
repeat_count = 1
# Typ bestimmen
if cmd.startswith("/"):
kind = "vanilla"
elif cmd.startswith("!"):
kind = "plugin"
elif cmd.startswith("$"):
kind = "built_in"
Einfach, effizient, robust!