diff --git a/StatusAPI/src/main/resources/chat.yml b/StatusAPI/src/main/resources/chat.yml
index b8d34c5..d4ec80f 100644
--- a/StatusAPI/src/main/resources/chat.yml
+++ b/StatusAPI/src/main/resources/chat.yml
@@ -1,376 +1,376 @@
-# ============================================================
-# StatusAPI - ChatModule Konfiguration
-# Kompatibel mit Java & Bedrock (Geyser) | BungeeCord Secure Chat
-# ============================================================
-
-# Standard-Kanal beim Einloggen
-default-channel: "global"
-
-server-colors:
- default: "&7" # Fallback für unbekannte Server
- lobby:
- color: "&a"
- display: "Lobby" # Anzeigename (optional, sonst wird der echte Servername verwendet)
- survival:
- color: "E8A020"
- display: "Survival"
- skyblock:
- color: "&b"
- display: "SkyBlock"
- citybuild:
- color: "A020E8"
- display: "CityBuild"
- minigames:
- color: "&e"
- display: "MiniGames"
-
-chatlog:
- enabled: true
- retention-days: 7 # 7 oder 14
-
-reports:
- enabled: true
- webhook-enabled: true
- confirm-message: "&aDein Report &8({id}) &awurde eingereicht. Danke!"
- close-permission: "chat.admin.bypass"
- view-permission: "chat.admin.bypass"
- # Leer = jeder Spieler darf reporten, sonst Permission eintragen (z.B. "chat.report")
- report-permission: ""
- cooldown: 60
- # Discord Webhook für Report-Benachrichtigungen (leer = deaktiviert)
- discord-webhook: ""
- # Telegram Chat-ID für Report-Benachrichtigungen (leer = deaktiviert)
- telegram-chat-id: ""
-
-# ============================================================
-# KANÄLE
-# Jeder Kanal hat eigene Permissions, Format und Brücken.
-# format-Platzhalter:
-# {server} - Servername
-# {prefix} - LuckPerms Prefix
-# {player} - Spielername
-# {suffix} - LuckPerms Suffix
-# {message} - Nachricht
-# {channel} - Kanalname
-# ============================================================
-channels:
- global:
- name: "Global"
- symbol: "G"
- permission: ""
- color: "&a"
- format: "&8[&a{server}&8] {prefix}&r{player}&8: &f{message}"
- discord-webhook: ""
- discord-channel-id: ""
- telegram-chat-id: ""
- # Themen-ID für Telegram-Gruppen mit Themen (0 = kein Thema / normale Gruppe)
- telegram-thread-id: 0
-
- local:
- name: "Local"
- symbol: "L"
- permission: "chat.channel.local"
- color: "&e"
- local-only: true
- format: "&8[&e{server}&8] {prefix}&r{player}&8: &f{message}"
- discord-webhook: ""
- discord-channel-id: ""
- telegram-chat-id: ""
- telegram-thread-id: 0
-
- trade:
- name: "Trade"
- symbol: "T"
- permission: "chat.channel.trade"
- color: "&6"
- format: "&8[&6TRADE&8] &8[&7{server}&8] {prefix}&r{player}&8: &f{message}"
- discord-webhook: ""
- discord-channel-id: ""
- telegram-chat-id: ""
- telegram-thread-id: 0
-
- staff:
- name: "Staff"
- symbol: "S"
- permission: "chat.channel.staff"
- color: "&c"
- format: "&8[&cSTAFF&8] &8[&7{server}&8] {prefix}&r{player}&8: &f{message}"
- discord-webhook: ""
- discord-channel-id: ""
- telegram-chat-id: ""
- telegram-thread-id: 0
- use-admin-bridge: true
-
-# ============================================================
-# HELPOP
-# ============================================================
-helpop:
- # Format der HelpOp-Nachricht
- format: "&8[&eHELPOP&8] &f{player}&8@&7{server}&8: &e{message}"
- # Wer bekommt HelpOp zu sehen
- receive-permission: "chat.helpop.receive"
- # Cooldown in Sekunden
- cooldown: 30
- # Bestätigungsnachricht an den Spieler
- confirm-message: "&aHilferuf wurde an das Team gesendet!"
- # Discord / Telegram auch für HelpOp
- discord-webhook: ""
- telegram-chat-id: ""
-
-# ============================================================
-# BROADCAST
-# ============================================================
-broadcast:
- format: "&c&l[&6&lBroadcast&c&l] &r&e{message}"
- permission: "chat.broadcast"
-
-# ============================================================
-# PRIVATE NACHRICHTEN
-# ============================================================
-private-messages:
- enabled: true
- format-sender: "&8[&7Du &8→ &b{player}&8] &f{message}"
- format-receiver: "&8[&b{player} &8→ &7Dir&8] &f{message}"
- # Social Spy: Admins können alle PMs sehen
- format-social-spy: "&8[&dSPY &7{sender} &8→ &7{receiver}&8] &f{message}"
- social-spy-permission: "chat.socialspy"
-
-# ============================================================
-# JOIN / LEAVE NACHRICHTEN
-# Platzhalter:
-# {player} - Spielername
-# {prefix} - LuckPerms Prefix
-# {suffix} - LuckPerms Suffix
-# {server} - Zuletzt bekannter Server (bei Leave) oder "Netzwerk"
-# ============================================================
-join-leave:
- enabled: true
- # Normale Join/Leave-Nachrichten (für alle sichtbar)
- join-format: "&8[&a+&8] {prefix}&a{player}&r &7hat das Netzwerk betreten."
- leave-format: "&8[&c-&8] {prefix}&c{player}&r &7hat das Netzwerk verlassen."
- # Vanish: Unsichtbare Spieler erzeugen keine normalen Join/Leave-Meldungen.
- # Ist vanish-show-to-admins true, sehen Admins mit bypass-permission eine
- # abweichende, dezente Benachrichtigung.
- vanish-show-to-admins: true
- vanish-join-format: "&8[&7+&8] &8{player} &7hat das Netzwerk betreten. &8(Vanish)"
- vanish-leave-format: "&8[&7-&8] &8{player} &7hat das Netzwerk verlassen. &8(Vanish)"
- # Brücken-Weitergabe (leer = deaktiviert)
- discord-webhook: ""
- telegram-chat-id: ""
- telegram-thread-id: 0
-
-# ============================================================
-# GLOBALES RATE-LIMIT-FRAMEWORK
-# Zentraler Schutz für Chat/PM/Command-Flood.
-# ============================================================
-rate-limit:
- chat:
- enabled: true
- window-ms: 2500
- max-actions: 3
- block-ms: 6000
- message: "&cBitte nicht so schnell schreiben!"
-
- private-messages:
- enabled: true
- window-ms: 5000
- max-actions: 4
- block-ms: 10000
- message: "&cDu sendest zu viele private Nachrichten. Bitte warte kurz."
-
-# ============================================================
-# MUTE
-# ============================================================
-mute:
- # Standard-Mute-Dauer in Minuten (0 = permanent)
- default-duration-minutes: 60
- # Nachricht an gemuteten Spieler
- muted-message: "&cDu bist aktuell stummgeschaltet. Noch: &f{time}"
-
-# ============================================================
-# EMOJI
-# Spieler schreiben :smile: -> wird zu \uD83D\uDE0A konvertiert
-# Bedrock-Spieler erhalten Fallback-Text wenn kein Unicode
-# ============================================================
-emoji:
- enabled: true
- # Ob Bedrock-Spieler (via Geyser) auch Emojis erhalten
- bedrock-support: true
- mappings:
- ":smile:": "\uD83D\uDE0A"
- ":laugh:": "\uD83D\uDE04"
- ":sad:": "\uD83D\uDE22"
- ":cry:": "\uD83D\uDE2D"
- ":angry:": "\uD83D\uDE20"
- ":heart:": "\u2764\uFE0F"
- ":fire:": "\uD83D\uDD25"
- ":star:": "\u2B50"
- ":check:": "\u2705"
- ":x:": "\u274C"
- ":warning:": "\u26A0\uFE0F"
- ":thumbsup:": "\uD83D\uDC4D"
- ":thumbsdown:": "\uD83D\uDC4E"
- ":wave:": "\uD83D\uDC4B"
- ":clap:": "\uD83D\uDC4F"
- ":sword:": "\u2694\uFE0F"
- ":shield:": "\uD83D\uDEE1\uFE0F"
- ":diamond:": "\uD83D\uDC8E"
- ":crown:": "\uD83D\uDC51"
- ":skull:": "\uD83D\uDC80"
- ":sun:": "\u2600\uFE0F"
- ":moon:": "\uD83C\uDF19"
- ":tree:": "\uD83C\uDF33"
- ":house:": "\uD83C\uDFE0"
- ":money:": "\uD83D\uDCB0"
- ":rocket:": "\uD83D\uDE80"
- ":rainbow:": "\uD83C\uDF08"
- ":ghost:": "\uD83D\uDC7B"
- ":gift:": "\uD83C\uDF81"
- ":cake:": "\uD83C\uDF82"
- ":chicken:": "\uD83D\uDC14"
- ":pig:": "\uD83D\uDC37"
- ":creeper:": "\uD83D\uDCA3"
- ":gg:": "\uD83C\uDFAE"
-
-# ============================================================
-# DISCORD INTEGRATION
-# ============================================================
-discord:
- enabled: false
- # Bot-Token für bidirektionale Kommunikation
- bot-token: "YOUR_BOT_TOKEN_HERE"
- # Server (Guild) ID
- guild-id: "YOUR_GUILD_ID"
- # Polling-Intervall in Sekunden (Discord → Minecraft)
- poll-interval: 3
- # Format für Discord → Minecraft Nachrichten
- from-discord-format: "&9[&bDiscord&9] &b{user}&8: &f{message}"
- # Extra Admin-Kanal (für Staff-Kanal und HelpOp)
- admin-channel-id: ""
- # Standard-Embed-Farbe (Hex ohne #)
- embed-color: "5865F2"
-
-# ============================================================
-# TELEGRAM INTEGRATION
-# ============================================================
-telegram:
- enabled: false
- # Bot-Token von @BotFather
- bot-token: "YOUR_TELEGRAM_BOT_TOKEN"
- # Polling-Intervall in Sekunden
- poll-interval: 3
- # Format für Telegram → Minecraft Nachrichten
- from-telegram-format: "&3[&bTelegram&3] &b{user}&8: &f{message}"
- # Extra Admin-Chat-ID (für Staff-Kanal und HelpOp)
- admin-chat-id: ""
- # Themen-Gruppe: Topic-ID für den Chat-Kanal (0 = kein Topic / normale Gruppe)
- # Die message_thread_id findest du indem du eine Nachricht im Topic weiterleitest
- # und dir die forwarded_from_message_id anschaust, oder via Bot-API getUpdates.
- chat-topic-id: 0
- # Topic-ID für den Admin-Kanal (0 = kein Topic)
- admin-topic-id: 0
-
-# ============================================================
-# ACCOUNT-VERKNÜPFUNG (Discord & Telegram)
-# Spieler können ihre Minecraft-Accounts mit Discord/Telegram
-# verknüpfen damit ihr Name im Chat angezeigt wird.
-# ============================================================
-account-linking:
- enabled: true
- # Token läuft nach X Minuten ab
- token-expire-minutes: 10
- # Nachricht die der Spieler nach /linkdiscord bekommt
- discord-link-message: "&aSchreibe den folgenden Code als Nachricht an unseren Discord-Bot:\n&f&l{token}\n&7Der Code läuft in &f10 Minuten &7ab."
- # Nachricht die der Spieler nach /linktelegram bekommt
- telegram-link-message: "&aSchreibe den folgenden Code als Nachricht an unseren Telegram-Bot:\n&f&l{token}\n&7Der Code läuft in &f10 Minuten &7ab."
- # Bestätigung nach erfolgreicher Verknüpfung (im Spiel)
- success-discord: "&aDiscord-Account erfolgreich verknüpft! &8(&7{discord}&8)"
- success-telegram: "&aTelegram-Account erfolgreich verknüpft! &8(&7{telegram}&8)"
- # Bestätigung die der Bot in Discord/Telegram schickt
- bot-success-discord: "✅ Dein Minecraft-Account **{player}** wurde erfolgreich verknüpft!"
- bot-success-telegram: "✅ Dein Minecraft-Account {player} wurde erfolgreich verknüpft!"
- # Format wenn verknüpfter Nutzer in Discord/Telegram schreibt
- # {player} = Minecraft-Name, {user} = Discord/Telegram-Name, {message} = Nachricht
- linked-discord-format: "&9[&bDiscord&9] &f{player} &8(&7{user}&8)&8: &f{message}"
- linked-telegram-format: "&3[&bTelegram&3] &f{player} &8(&7{user}&8)&8: &f{message}"
- # Themen-ID für den Admin-Chat (0 = kein Thema)
- admin-thread-id: 0
-
-# ============================================================
-# ADMIN BYPASS
-# Spieler mit dieser Permission können nicht geblockt werden
-# und sind von Mutes ausgenommen
-# ============================================================
-admin:
- bypass-permission: "chat.admin.bypass"
- # Admins erhalten Benachrichtigung bei Mutes/Blocks
- notify-permission: "chat.admin.notify"
-
-# ============================================================
-# CHAT-FILTER & ANTI-SPAM
-# ============================================================
-chat-filter:
- anti-spam:
- enabled: true
- cooldown-ms: 1500
- max-messages: 3
- message: "&cBitte nicht so schnell schreiben!"
- duplicate-check:
- enabled: true
- message: "&cBitte keine identischen Nachrichten senden."
- blacklist:
- enabled: true
- words:
- - "beispielwort1"
- - "beispielwort2"
- caps-filter:
- enabled: true
- min-length: 6
- max-percent: 70
-
- anti-ad:
- enabled: true
- message: "&cWerbung ist in diesem Chat nicht erlaubt!"
- # Domains/Substrings die NICHT geblockt werden (z.B. eigene Serveradresse)
- # Vergleich ist case-insensitiv und prüft ob der Substring im Match enthalten ist
- whitelist:
- - "viper-network.de"
- - "m-viper.de"
- - "https://www.spigotmc.org"
- # TLDs die als Werbung gewertet werden.
- # Leer = alle Domain-Treffer blockieren (nicht empfohlen, hohe False-Positive-Rate)
- blocked-tlds:
- - "net"
- - "com"
- - "de"
- - "org"
- - "gg"
- - "io"
- - "eu"
- - "tv"
- - "xyz"
- - "info"
- - "me"
- - "cc"
- - "co"
- - "app"
- - "online"
- - "site"
- - "fun"
-
-# ============================================================
-# MENTIONS (@Spielername)
-# ============================================================
-mentions:
- enabled: true
- highlight-color: "&e&l"
- sound: "ENTITY_EXPERIENCE_ORB_PICKUP"
- allow-toggle: true
- notify-prefix: "&e&l[Mention] &r"
-
-# ============================================================
-# CHAT-HISTORY
-# ============================================================
-chat-history:
- max-lines: 50
+# ============================================================
+# StatusAPI - ChatModule Konfiguration
+# Kompatibel mit Java & Bedrock (Geyser) | BungeeCord Secure Chat
+# ============================================================
+
+# Standard-Kanal beim Einloggen
+default-channel: "global"
+
+server-colors:
+ default: "&7" # Fallback für unbekannte Server
+ lobby:
+ color: "&a"
+ display: "Lobby" # Anzeigename (optional, sonst wird der echte Servername verwendet)
+ survival:
+ color: "E8A020"
+ display: "Survival"
+ skyblock:
+ color: "&b"
+ display: "SkyBlock"
+ citybuild:
+ color: "A020E8"
+ display: "CityBuild"
+ minigames:
+ color: "&e"
+ display: "MiniGames"
+
+chatlog:
+ enabled: true
+ retention-days: 7 # 7 oder 14
+
+reports:
+ enabled: true
+ webhook-enabled: true
+ confirm-message: "&aDein Report &8({id}) &awurde eingereicht. Danke!"
+ close-permission: "chat.admin.bypass"
+ view-permission: "chat.admin.bypass"
+ # Leer = jeder Spieler darf reporten, sonst Permission eintragen (z.B. "chat.report")
+ report-permission: ""
+ cooldown: 60
+ # Discord Webhook für Report-Benachrichtigungen (leer = deaktiviert)
+ discord-webhook: ""
+ # Telegram Chat-ID für Report-Benachrichtigungen (leer = deaktiviert)
+ telegram-chat-id: ""
+
+# ============================================================
+# KANÄLE
+# Jeder Kanal hat eigene Permissions, Format und Brücken.
+# format-Platzhalter:
+# {server} - Servername
+# {prefix} - LuckPerms Prefix
+# {player} - Spielername
+# {suffix} - LuckPerms Suffix
+# {message} - Nachricht
+# {channel} - Kanalname
+# ============================================================
+channels:
+ global:
+ name: "Global"
+ symbol: "G"
+ permission: ""
+ color: "&a"
+ format: "&8[&a{server}&8] {prefix}&r{player}&8: &f{message}"
+ discord-webhook: ""
+ discord-channel-id: ""
+ telegram-chat-id: ""
+ # Themen-ID für Telegram-Gruppen mit Themen (0 = kein Thema / normale Gruppe)
+ telegram-thread-id: 0
+
+ local:
+ name: "Local"
+ symbol: "L"
+ permission: "chat.channel.local"
+ color: "&e"
+ local-only: true
+ format: "&8[&e{server}&8] {prefix}&r{player}&8: &f{message}"
+ discord-webhook: ""
+ discord-channel-id: ""
+ telegram-chat-id: ""
+ telegram-thread-id: 0
+
+ trade:
+ name: "Trade"
+ symbol: "T"
+ permission: "chat.channel.trade"
+ color: "&6"
+ format: "&8[&6TRADE&8] &8[&7{server}&8] {prefix}&r{player}&8: &f{message}"
+ discord-webhook: ""
+ discord-channel-id: ""
+ telegram-chat-id: ""
+ telegram-thread-id: 0
+
+ staff:
+ name: "Staff"
+ symbol: "S"
+ permission: "chat.channel.staff"
+ color: "&c"
+ format: "&8[&cSTAFF&8] &8[&7{server}&8] {prefix}&r{player}&8: &f{message}"
+ discord-webhook: ""
+ discord-channel-id: ""
+ telegram-chat-id: ""
+ telegram-thread-id: 0
+ use-admin-bridge: true
+
+# ============================================================
+# HELPOP
+# ============================================================
+helpop:
+ # Format der HelpOp-Nachricht
+ format: "&8[&eHELPOP&8] &f{player}&8@&7{server}&8: &e{message}"
+ # Wer bekommt HelpOp zu sehen
+ receive-permission: "chat.helpop.receive"
+ # Cooldown in Sekunden
+ cooldown: 30
+ # Bestätigungsnachricht an den Spieler
+ confirm-message: "&aHilferuf wurde an das Team gesendet!"
+ # Discord / Telegram auch für HelpOp
+ discord-webhook: ""
+ telegram-chat-id: ""
+
+# ============================================================
+# BROADCAST
+# ============================================================
+broadcast:
+ format: "&c&l[&6&lBroadcast&c&l] &r&e{message}"
+ permission: "chat.broadcast"
+
+# ============================================================
+# PRIVATE NACHRICHTEN
+# ============================================================
+private-messages:
+ enabled: true
+ format-sender: "&8[&7Du &8→ &b{player}&8] &f{message}"
+ format-receiver: "&8[&b{player} &8→ &7Dir&8] &f{message}"
+ # Social Spy: Admins können alle PMs sehen
+ format-social-spy: "&8[&dSPY &7{sender} &8→ &7{receiver}&8] &f{message}"
+ social-spy-permission: "chat.socialspy"
+
+# ============================================================
+# JOIN / LEAVE NACHRICHTEN
+# Platzhalter:
+# {player} - Spielername
+# {prefix} - LuckPerms Prefix
+# {suffix} - LuckPerms Suffix
+# {server} - Zuletzt bekannter Server (bei Leave) oder "Netzwerk"
+# ============================================================
+join-leave:
+ enabled: true
+ # Normale Join/Leave-Nachrichten (für alle sichtbar)
+ join-format: "&8[&a+&8] {prefix}&a{player}&r &7hat das Netzwerk betreten."
+ leave-format: "&8[&c-&8] {prefix}&c{player}&r &7hat das Netzwerk verlassen."
+ # Vanish: Unsichtbare Spieler erzeugen keine normalen Join/Leave-Meldungen.
+ # Ist vanish-show-to-admins true, sehen Admins mit bypass-permission eine
+ # abweichende, dezente Benachrichtigung.
+ vanish-show-to-admins: true
+ vanish-join-format: "&8[&7+&8] &8{player} &7hat das Netzwerk betreten. &8(Vanish)"
+ vanish-leave-format: "&8[&7-&8] &8{player} &7hat das Netzwerk verlassen. &8(Vanish)"
+ # Brücken-Weitergabe (leer = deaktiviert)
+ discord-webhook: ""
+ telegram-chat-id: ""
+ telegram-thread-id: 0
+
+# ============================================================
+# GLOBALES RATE-LIMIT-FRAMEWORK
+# Zentraler Schutz für Chat/PM/Command-Flood.
+# ============================================================
+rate-limit:
+ chat:
+ enabled: true
+ window-ms: 2500
+ max-actions: 3
+ block-ms: 6000
+ message: "&cBitte nicht so schnell schreiben!"
+
+ private-messages:
+ enabled: true
+ window-ms: 5000
+ max-actions: 4
+ block-ms: 10000
+ message: "&cDu sendest zu viele private Nachrichten. Bitte warte kurz."
+
+# ============================================================
+# MUTE
+# ============================================================
+mute:
+ # Standard-Mute-Dauer in Minuten (0 = permanent)
+ default-duration-minutes: 60
+ # Nachricht an gemuteten Spieler
+ muted-message: "&cDu bist aktuell stummgeschaltet. Noch: &f{time}"
+
+# ============================================================
+# EMOJI
+# Spieler schreiben :smile: -> wird zu \uD83D\uDE0A konvertiert
+# Bedrock-Spieler erhalten Fallback-Text wenn kein Unicode
+# ============================================================
+emoji:
+ enabled: true
+ # Ob Bedrock-Spieler (via Geyser) auch Emojis erhalten
+ bedrock-support: true
+ mappings:
+ ":smile:": "\uD83D\uDE0A"
+ ":laugh:": "\uD83D\uDE04"
+ ":sad:": "\uD83D\uDE22"
+ ":cry:": "\uD83D\uDE2D"
+ ":angry:": "\uD83D\uDE20"
+ ":heart:": "\u2764\uFE0F"
+ ":fire:": "\uD83D\uDD25"
+ ":star:": "\u2B50"
+ ":check:": "\u2705"
+ ":x:": "\u274C"
+ ":warning:": "\u26A0\uFE0F"
+ ":thumbsup:": "\uD83D\uDC4D"
+ ":thumbsdown:": "\uD83D\uDC4E"
+ ":wave:": "\uD83D\uDC4B"
+ ":clap:": "\uD83D\uDC4F"
+ ":sword:": "\u2694\uFE0F"
+ ":shield:": "\uD83D\uDEE1\uFE0F"
+ ":diamond:": "\uD83D\uDC8E"
+ ":crown:": "\uD83D\uDC51"
+ ":skull:": "\uD83D\uDC80"
+ ":sun:": "\u2600\uFE0F"
+ ":moon:": "\uD83C\uDF19"
+ ":tree:": "\uD83C\uDF33"
+ ":house:": "\uD83C\uDFE0"
+ ":money:": "\uD83D\uDCB0"
+ ":rocket:": "\uD83D\uDE80"
+ ":rainbow:": "\uD83C\uDF08"
+ ":ghost:": "\uD83D\uDC7B"
+ ":gift:": "\uD83C\uDF81"
+ ":cake:": "\uD83C\uDF82"
+ ":chicken:": "\uD83D\uDC14"
+ ":pig:": "\uD83D\uDC37"
+ ":creeper:": "\uD83D\uDCA3"
+ ":gg:": "\uD83C\uDFAE"
+
+# ============================================================
+# DISCORD INTEGRATION
+# ============================================================
+discord:
+ enabled: false
+ # Bot-Token für bidirektionale Kommunikation
+ bot-token: "YOUR_BOT_TOKEN_HERE"
+ # Server (Guild) ID
+ guild-id: "YOUR_GUILD_ID"
+ # Polling-Intervall in Sekunden (Discord → Minecraft)
+ poll-interval: 3
+ # Format für Discord → Minecraft Nachrichten
+ from-discord-format: "&9[&bDiscord&9] &b{user}&8: &f{message}"
+ # Extra Admin-Kanal (für Staff-Kanal und HelpOp)
+ admin-channel-id: ""
+ # Standard-Embed-Farbe (Hex ohne #)
+ embed-color: "5865F2"
+
+# ============================================================
+# TELEGRAM INTEGRATION
+# ============================================================
+telegram:
+ enabled: false
+ # Bot-Token von @BotFather
+ bot-token: "YOUR_TELEGRAM_BOT_TOKEN"
+ # Polling-Intervall in Sekunden
+ poll-interval: 3
+ # Format für Telegram → Minecraft Nachrichten
+ from-telegram-format: "&3[&bTelegram&3] &b{user}&8: &f{message}"
+ # Extra Admin-Chat-ID (für Staff-Kanal und HelpOp)
+ admin-chat-id: ""
+ # Themen-Gruppe: Topic-ID für den Chat-Kanal (0 = kein Topic / normale Gruppe)
+ # Die message_thread_id findest du indem du eine Nachricht im Topic weiterleitest
+ # und dir die forwarded_from_message_id anschaust, oder via Bot-API getUpdates.
+ chat-topic-id: 0
+ # Topic-ID für den Admin-Kanal (0 = kein Topic)
+ admin-topic-id: 0
+
+# ============================================================
+# ACCOUNT-VERKNÜPFUNG (Discord & Telegram)
+# Spieler können ihre Minecraft-Accounts mit Discord/Telegram
+# verknüpfen damit ihr Name im Chat angezeigt wird.
+# ============================================================
+account-linking:
+ enabled: true
+ # Token läuft nach X Minuten ab
+ token-expire-minutes: 10
+ # Nachricht die der Spieler nach /linkdiscord bekommt
+ discord-link-message: "&aSchreibe den folgenden Code als Nachricht an unseren Discord-Bot:\n&f&l{token}\n&7Der Code läuft in &f10 Minuten &7ab."
+ # Nachricht die der Spieler nach /linktelegram bekommt
+ telegram-link-message: "&aSchreibe den folgenden Code als Nachricht an unseren Telegram-Bot:\n&f&l{token}\n&7Der Code läuft in &f10 Minuten &7ab."
+ # Bestätigung nach erfolgreicher Verknüpfung (im Spiel)
+ success-discord: "&aDiscord-Account erfolgreich verknüpft! &8(&7{discord}&8)"
+ success-telegram: "&aTelegram-Account erfolgreich verknüpft! &8(&7{telegram}&8)"
+ # Bestätigung die der Bot in Discord/Telegram schickt
+ bot-success-discord: "✅ Dein Minecraft-Account **{player}** wurde erfolgreich verknüpft!"
+ bot-success-telegram: "✅ Dein Minecraft-Account {player} wurde erfolgreich verknüpft!"
+ # Format wenn verknüpfter Nutzer in Discord/Telegram schreibt
+ # {player} = Minecraft-Name, {user} = Discord/Telegram-Name, {message} = Nachricht
+ linked-discord-format: "&9[&bDiscord&9] &f{player} &8(&7{user}&8)&8: &f{message}"
+ linked-telegram-format: "&3[&bTelegram&3] &f{player} &8(&7{user}&8)&8: &f{message}"
+ # Themen-ID für den Admin-Chat (0 = kein Thema)
+ admin-thread-id: 0
+
+# ============================================================
+# ADMIN BYPASS
+# Spieler mit dieser Permission können nicht geblockt werden
+# und sind von Mutes ausgenommen
+# ============================================================
+admin:
+ bypass-permission: "chat.admin.bypass"
+ # Admins erhalten Benachrichtigung bei Mutes/Blocks
+ notify-permission: "chat.admin.notify"
+
+# ============================================================
+# CHAT-FILTER & ANTI-SPAM
+# ============================================================
+chat-filter:
+ anti-spam:
+ enabled: true
+ cooldown-ms: 1500
+ max-messages: 3
+ message: "&cBitte nicht so schnell schreiben!"
+ duplicate-check:
+ enabled: true
+ message: "&cBitte keine identischen Nachrichten senden."
+ blacklist:
+ enabled: true
+ words:
+ - "beispielwort1"
+ - "beispielwort2"
+ caps-filter:
+ enabled: true
+ min-length: 6
+ max-percent: 70
+
+ anti-ad:
+ enabled: true
+ message: "&cWerbung ist in diesem Chat nicht erlaubt!"
+ # Domains/Substrings die NICHT geblockt werden (z.B. eigene Serveradresse)
+ # Vergleich ist case-insensitiv und prüft ob der Substring im Match enthalten ist
+ whitelist:
+ - "viper-network.de"
+ - "m-viper.de"
+ - "https://www.spigotmc.org"
+ # TLDs die als Werbung gewertet werden.
+ # Leer = alle Domain-Treffer blockieren (nicht empfohlen, hohe False-Positive-Rate)
+ blocked-tlds:
+ - "net"
+ - "com"
+ - "de"
+ - "org"
+ - "gg"
+ - "io"
+ - "eu"
+ - "tv"
+ - "xyz"
+ - "info"
+ - "me"
+ - "cc"
+ - "co"
+ - "app"
+ - "online"
+ - "site"
+ - "fun"
+
+# ============================================================
+# MENTIONS (@Spielername)
+# ============================================================
+mentions:
+ enabled: true
+ highlight-color: "&e&l"
+ sound: "ENTITY_EXPERIENCE_ORB_PICKUP"
+ allow-toggle: true
+ notify-prefix: "&e&l[Mention] &r"
+
+# ============================================================
+# CHAT-HISTORY
+# ============================================================
+chat-history:
+ max-lines: 50
default-lines: 10
\ No newline at end of file
diff --git a/StatusAPI/src/main/resources/filter.yml b/StatusAPI/src/main/resources/filter.yml
index f4f6e85..61730a8 100644
--- a/StatusAPI/src/main/resources/filter.yml
+++ b/StatusAPI/src/main/resources/filter.yml
@@ -1,16 +1,16 @@
-# ============================================================
-# StatusAPI - ChatModule Wort-Blacklist
-# Wörter werden case-insensitiv und als Teilwort geprüft.
-# Erkannte Wörter werden durch **** ersetzt.
-#
-# Diese Datei wird bei /chatreload automatisch neu eingelesen.
-# Wörter die hier stehen ÜBERSCHREIBEN NICHT die Einträge in
-# chat.yml → beide Listen werden zusammengeführt.
-# ============================================================
-
-words:
- - beispielwort1
- - beispielwort2
- # Hier eigene Wörter eintragen, eines pro Zeile:
- # - schimpfwort
+# ============================================================
+# StatusAPI - ChatModule Wort-Blacklist
+# Wörter werden case-insensitiv und als Teilwort geprüft.
+# Erkannte Wörter werden durch **** ersetzt.
+#
+# Diese Datei wird bei /chatreload automatisch neu eingelesen.
+# Wörter die hier stehen ÜBERSCHREIBEN NICHT die Einträge in
+# chat.yml → beide Listen werden zusammengeführt.
+# ============================================================
+
+words:
+ - beispielwort1
+ - beispielwort2
+ # Hier eigene Wörter eintragen, eines pro Zeile:
+ # - schimpfwort
# - spam
\ No newline at end of file
diff --git a/StatusAPI/src/main/resources/messages.txt b/StatusAPI/src/main/resources/messages.txt
index 7277ccf..d89128e 100644
--- a/StatusAPI/src/main/resources/messages.txt
+++ b/StatusAPI/src/main/resources/messages.txt
@@ -1,52 +1,52 @@
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Der Server läuft 24/7 – also keine Hektik beim Spielen :)
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Dies ist ein privater Server – hier zählt der Zusammenhalt.
-§8[%gradient:&b:&f:&b:&lTipp%§8] §7Wenn du denkst, du bist sicher… schau nochmal nach. Creeper machen keine Geräusche beim Tippen.
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Wähle einen Server, leg los – der Rest ergibt sich. Oder explodiert.
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Mehr Server. Mehr Blöcke. Mehr Unfälle. Willkommen!
-§8[%gradient:&b:&f:&b:&lTipp%§8] §7Halte eine Spitzhacke mit Glück bereit. Man weiß nie, wann das nächste Erz kommt.
-§8[%gradient:&b:&f:&b:&lTipp%§8] §7Dein Bett ist dein Ankerpunkt – platziere es weise!
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Das wichtigste Plugin? Du selbst. Spiel fair, sei kreativ!
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Redstone ist keine Magie – aber fast.
-§8[%gradient:&b:&f:&b:&lTipp%§8] §7Schilde sind cool. Besonders wenn Skelette zielen.
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Wenn du in Lava fällst, bist du nicht der Erste. Nur der Nächste.
-§8[%gradient:&b:&f:&b:&lTipp%§8] §7Villager sind nicht dumm – nur sehr… eigen.
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Bau groß, bau sicher – oder bau eine Treppe zur Nachbarschaftsklage.
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Gras wächst. Spieler auch. Gib jedem eine Chance!
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Ein Creeper ist keine Begrüßung. Es sei denn, du willst es spannend machen.
-§8[%gradient:&b:&f:&b:&lTipp%§8] §7Ein voller Magen ist halbe Miete. Farmen lohnt sich!
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Wir haben keine Probleme – nur Redstone-Schaltungen mit Charakter.
-§8[%gradient:&b:&f:&b:&lTipp%§8] §7Markiere dein Grundstück frühzeitig, bevor es jemand anderes tut!
-§8[%gradient:&b:&f:&b:&lLobby%§8] §7Hier beginnt alles – such dir deinen Server aus und leg los!
-§8[%gradient:&b:&f:&b:&lLobby%§8] §7Die Lobby ist kein Ziel, sondern der Start. Oder ein Treffpunkt. Oder beides.
-§8[%gradient:&b:&f:&b:&lLobby%§8] §7Noch unentschlossen? Einfach mal reinschauen – auf allen Servern!
-§8[%gradient:&b:&f:&b:&lCitybuild%§8] §7Auf Citybuild baust du deine eigene Stadt – Block für Block.
-§8[%gradient:&b:&f:&b:&lCitybuild%§8] §7Grundstück sichern nicht vergessen – sonst baut jemand anderes drauf!
-§8[%gradient:&b:&f:&b:&lCitybuild%§8] §7Gute Nachbarn bauen gute Städte. Oder zumindest hübschere.
-§8[%gradient:&b:&f:&b:&lCitybuild%§8] §7Je größer die Stadt, desto mehr Redstone geht schief. Viel Erfolg!
-§8[%gradient:&b:&f:&b:&lTipp%§8] §7Auf Citybuild kannst du dein Grundstück mit Freunden teilen – baut zusammen mehr!
-§8[%gradient:&b:&f:&b:&lFreebuild%§8] §7Auf Freebuild gibt es keine Grenzen – außer deiner Fantasie.
-§8[%gradient:&b:&f:&b:&lFreebuild%§8] §7Bauen ohne Regeln. Na ja, fast. Sei trotzdem nett zu deinen Nachbarn.
-§8[%gradient:&b:&f:&b:&lFreebuild%§8] §7Riesige Projekte, verrückte Ideen – Freebuild macht's möglich.
-§8[%gradient:&b:&f:&b:&lTipp%§8] §7Auf Freebuild gilt: Erst messen, dann bauen. Oder erst bauen und dann bereuen.
-§8[%gradient:&b:&f:&b:&lSurvival%§8] §7Auf Survival zählt jeder Block – den du abbaust und den, der auf dich fällt.
-§8[%gradient:&b:&f:&b:&lSurvival%§8] §7Tag 1: Holz hacken. Tag 2: Höhle finden. Tag 3: Creeper ärgert dich. Klassiker.
-§8[%gradient:&b:&f:&b:&lSurvival%§8] §7Die Nether-Festung wartet. Bring Feuerresistenz mit – und Mut.
-§8[%gradient:&b:&f:&b:&lSurvival%§8] §7Ein Bett in der Nähe spart lange Laufwege nach dem Tod. Spar dir den Fußmarsch!
-§8[%gradient:&b:&f:&b:&lTipp%§8] §7Auf Survival lohnt sich ein Außenposten – Ressourcen gibt's nie genug.
-§8[%gradient:&b:&f:&b:&lTipp%§8] §7Verzaubere deine Ausrüstung so früh wie möglich. Schutzverzauberung rettet Leben!
-§8[%gradient:&b:&f:&b:&lSkyblock%§8] §7Auf Skyblock fängst du mit einer Insel an. Was du draus machst, liegt bei dir.
-§8[%gradient:&b:&f:&b:&lSkyblock%§8] §7Wasser + Lava = Kobblestone. Das Fundament jeder Skyblock-Karriere.
-§8[%gradient:&b:&f:&b:&lSkyblock%§8] §7Deine Insel, deine Regeln – aber Creeper kennen keine Regeln. Und keine Ränder.
-§8[%gradient:&b:&f:&b:&lSkyblock%§8] §7Tipp vom Profi: Nie rückwärts auf einer Skyblock-Insel laufen.
-§8[%gradient:&b:&f:&b:&lTipp%§8] §7Auf Skyblock ist ein Kompostierer Gold wert – Essen ist alles!
-§8[%gradient:&b:&f:&b:&lTipp%§8] §7Baue deine Skyblock-Insel nach außen aus, bevor du in die Höhe gehst.
-§8[%gradient:&b:&f:&b:&lMinigames%§8] §7Auf Minigames zählt Schnelligkeit, Köpfchen – und manchmal einfach Glück.
-§8[%gradient:&b:&f:&b:&lMinigames%§8] §7Gewonnen oder verloren – beim nächsten Spiel ist alles wieder offen!
-§8[%gradient:&b:&f:&b:&lMinigames%§8] §7Minigames sind der perfekte Ort, um Freunde zu finden. Oder Rivalen.
-§8[%gradient:&b:&f:&b:&lMinigames%§8] §7Kurze Runden, viel Spaß – einfach Minigames starten und loslegen!
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Sechs Server, ein Netzwerk – such dir deinen Lieblingsplatz!
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Egal ob Bauen, Überleben oder Kämpfen – hier ist für jeden was dabei.
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Neue Spieler sind immer willkommen. Zeig ihnen, wie es geht!
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Respekt kostet nichts – macht aber den Server für alle besser.
-§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Probleme oder Fragen? Wende dich ans Team – wir helfen gerne!
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Der Server läuft 24/7 – also keine Hektik beim Spielen :)
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Dies ist ein privater Server – hier zählt der Zusammenhalt.
+§8[%gradient:&b:&f:&b:&lTipp%§8] §7Wenn du denkst, du bist sicher… schau nochmal nach. Creeper machen keine Geräusche beim Tippen.
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Wähle einen Server, leg los – der Rest ergibt sich. Oder explodiert.
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Mehr Server. Mehr Blöcke. Mehr Unfälle. Willkommen!
+§8[%gradient:&b:&f:&b:&lTipp%§8] §7Halte eine Spitzhacke mit Glück bereit. Man weiß nie, wann das nächste Erz kommt.
+§8[%gradient:&b:&f:&b:&lTipp%§8] §7Dein Bett ist dein Ankerpunkt – platziere es weise!
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Das wichtigste Plugin? Du selbst. Spiel fair, sei kreativ!
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Redstone ist keine Magie – aber fast.
+§8[%gradient:&b:&f:&b:&lTipp%§8] §7Schilde sind cool. Besonders wenn Skelette zielen.
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Wenn du in Lava fällst, bist du nicht der Erste. Nur der Nächste.
+§8[%gradient:&b:&f:&b:&lTipp%§8] §7Villager sind nicht dumm – nur sehr… eigen.
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Bau groß, bau sicher – oder bau eine Treppe zur Nachbarschaftsklage.
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Gras wächst. Spieler auch. Gib jedem eine Chance!
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Ein Creeper ist keine Begrüßung. Es sei denn, du willst es spannend machen.
+§8[%gradient:&b:&f:&b:&lTipp%§8] §7Ein voller Magen ist halbe Miete. Farmen lohnt sich!
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Wir haben keine Probleme – nur Redstone-Schaltungen mit Charakter.
+§8[%gradient:&b:&f:&b:&lTipp%§8] §7Markiere dein Grundstück frühzeitig, bevor es jemand anderes tut!
+§8[%gradient:&b:&f:&b:&lLobby%§8] §7Hier beginnt alles – such dir deinen Server aus und leg los!
+§8[%gradient:&b:&f:&b:&lLobby%§8] §7Die Lobby ist kein Ziel, sondern der Start. Oder ein Treffpunkt. Oder beides.
+§8[%gradient:&b:&f:&b:&lLobby%§8] §7Noch unentschlossen? Einfach mal reinschauen – auf allen Servern!
+§8[%gradient:&b:&f:&b:&lCitybuild%§8] §7Auf Citybuild baust du deine eigene Stadt – Block für Block.
+§8[%gradient:&b:&f:&b:&lCitybuild%§8] §7Grundstück sichern nicht vergessen – sonst baut jemand anderes drauf!
+§8[%gradient:&b:&f:&b:&lCitybuild%§8] §7Gute Nachbarn bauen gute Städte. Oder zumindest hübschere.
+§8[%gradient:&b:&f:&b:&lCitybuild%§8] §7Je größer die Stadt, desto mehr Redstone geht schief. Viel Erfolg!
+§8[%gradient:&b:&f:&b:&lTipp%§8] §7Auf Citybuild kannst du dein Grundstück mit Freunden teilen – baut zusammen mehr!
+§8[%gradient:&b:&f:&b:&lFreebuild%§8] §7Auf Freebuild gibt es keine Grenzen – außer deiner Fantasie.
+§8[%gradient:&b:&f:&b:&lFreebuild%§8] §7Bauen ohne Regeln. Na ja, fast. Sei trotzdem nett zu deinen Nachbarn.
+§8[%gradient:&b:&f:&b:&lFreebuild%§8] §7Riesige Projekte, verrückte Ideen – Freebuild macht's möglich.
+§8[%gradient:&b:&f:&b:&lTipp%§8] §7Auf Freebuild gilt: Erst messen, dann bauen. Oder erst bauen und dann bereuen.
+§8[%gradient:&b:&f:&b:&lSurvival%§8] §7Auf Survival zählt jeder Block – den du abbaust und den, der auf dich fällt.
+§8[%gradient:&b:&f:&b:&lSurvival%§8] §7Tag 1: Holz hacken. Tag 2: Höhle finden. Tag 3: Creeper ärgert dich. Klassiker.
+§8[%gradient:&b:&f:&b:&lSurvival%§8] §7Die Nether-Festung wartet. Bring Feuerresistenz mit – und Mut.
+§8[%gradient:&b:&f:&b:&lSurvival%§8] §7Ein Bett in der Nähe spart lange Laufwege nach dem Tod. Spar dir den Fußmarsch!
+§8[%gradient:&b:&f:&b:&lTipp%§8] §7Auf Survival lohnt sich ein Außenposten – Ressourcen gibt's nie genug.
+§8[%gradient:&b:&f:&b:&lTipp%§8] §7Verzaubere deine Ausrüstung so früh wie möglich. Schutzverzauberung rettet Leben!
+§8[%gradient:&b:&f:&b:&lSkyblock%§8] §7Auf Skyblock fängst du mit einer Insel an. Was du draus machst, liegt bei dir.
+§8[%gradient:&b:&f:&b:&lSkyblock%§8] §7Wasser + Lava = Kobblestone. Das Fundament jeder Skyblock-Karriere.
+§8[%gradient:&b:&f:&b:&lSkyblock%§8] §7Deine Insel, deine Regeln – aber Creeper kennen keine Regeln. Und keine Ränder.
+§8[%gradient:&b:&f:&b:&lSkyblock%§8] §7Tipp vom Profi: Nie rückwärts auf einer Skyblock-Insel laufen.
+§8[%gradient:&b:&f:&b:&lTipp%§8] §7Auf Skyblock ist ein Kompostierer Gold wert – Essen ist alles!
+§8[%gradient:&b:&f:&b:&lTipp%§8] §7Baue deine Skyblock-Insel nach außen aus, bevor du in die Höhe gehst.
+§8[%gradient:&b:&f:&b:&lMinigames%§8] §7Auf Minigames zählt Schnelligkeit, Köpfchen – und manchmal einfach Glück.
+§8[%gradient:&b:&f:&b:&lMinigames%§8] §7Gewonnen oder verloren – beim nächsten Spiel ist alles wieder offen!
+§8[%gradient:&b:&f:&b:&lMinigames%§8] §7Minigames sind der perfekte Ort, um Freunde zu finden. Oder Rivalen.
+§8[%gradient:&b:&f:&b:&lMinigames%§8] §7Kurze Runden, viel Spaß – einfach Minigames starten und loslegen!
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Sechs Server, ein Netzwerk – such dir deinen Lieblingsplatz!
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Egal ob Bauen, Überleben oder Kämpfen – hier ist für jeden was dabei.
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Neue Spieler sind immer willkommen. Zeig ihnen, wie es geht!
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Respekt kostet nichts – macht aber den Server für alle besser.
+§8[%gradient:&b:&f:&b:&lViper-Network%§8] §7Probleme oder Fragen? Wende dich ans Team – wir helfen gerne!
§8[%gradient:&b:&f:&b:&lTipp%§8] §7Du kannst zwischen allen Servern wechseln – einfach den Kompass nutzen!
\ No newline at end of file
diff --git a/StatusAPI/src/main/resources/network-guard.properties b/StatusAPI/src/main/resources/network-guard.properties
index 3c89825..459f871 100644
--- a/StatusAPI/src/main/resources/network-guard.properties
+++ b/StatusAPI/src/main/resources/network-guard.properties
@@ -72,6 +72,15 @@ antibot.vpn_check.timeout_ms=2500
antibot.security_log.enabled=true
antibot.security_log.file=antibot-security.log
+# Whitelist (kommagetrennt). Verwaltung auch per /antibot whitelist add|remove|list
+# IPs/CIDR werden komplett vom AntiBot ausgenommen (z.B. 203.0.113.5 oder 10.0.0.0/24).
+antibot.whitelist.ips=
+# Spielernamen: Nach erfolgreichem Login wird die IP des Spielers fuer trust_hours vertraut
+# (Namen sind beim PreLogin ungeprueft, daher nicht sofort). Gleiches gilt fuer die
+# Permission statusapi.antibot.bypass.
+antibot.whitelist.players=
+antibot.whitelist.trust_hours=24
+
# Lernmodus: Muster mitschreiben, Score bilden und erst ab Schwellwert blockieren.
antibot.learning.enabled=true
antibot.learning.score_threshold=100
@@ -105,6 +114,24 @@ backendguard.allowed_proxy_cidrs=10.0.0.0/24
# Leer = kein API-Key erforderlich (nur im internen Netzwerk empfohlen)
backendguard.sync.api_key=
+# ===========================
+# HTTP-API SICHERHEIT
+# ===========================
+# API-Key fuer schreibende Endpunkte (/economy/update, /punishment/update, /stats/update,
+# /ticket/update, /scoreboard/*, /player/*, /broadcast/cancel). Wird als Header X-API-Key erwartet.
+# Leer = KEINE Pruefung (nur fuer rein interne Netze!). Der StatusAPIBridge muss denselben Key senden.
+api.write_key=
+# Optionaler Key fuer GET /antibot/security-log (enthaelt Namen, UUIDs, IPs). Leer = offen.
+api.securitylog.key=
+# Rate-Limit pro Client-IP fuer den HTTP-Server
+api.ratelimit.enabled=true
+api.ratelimit.max_per_minute=300
+api.ratelimit.block_seconds=30
+# Anfragen mit gueltigem api.write_key sind nie rate-limitiert. Zusaetzlich werden Clients aus
+# Loopback-/Privatnetzen (Unterserver-Bridges) ausgenommen. Steht die API hinter einem Reverse-Proxy
+# (z. B. NPM), sehen alle Anfragen wie private Clients aus -> dann auf false setzen und api.write_key nutzen.
+api.ratelimit.exempt_private=true
+
# ===========================
# MULTI ACCOUNT GUARD
# ===========================
diff --git a/StatusAPI/src/main/resources/plugin.yml b/StatusAPI/src/main/resources/plugin.yml
index c18d7b6..8dd8246 100644
--- a/StatusAPI/src/main/resources/plugin.yml
+++ b/StatusAPI/src/main/resources/plugin.yml
@@ -1,6 +1,6 @@
name: StatusAPI
main: net.viper.status.StatusAPI
-version: 4.1.5
+version: 4.1.6
author: M_Viper
description: StatusAPI für BungeeCord inkl. Update-Checker, Modul-System und ChatModule
# Mindestanforderung: Minecraft 1.20 / BungeeCord mit PlayerChatEvent-Unterstützung
diff --git a/StatusAPI/src/main/resources/verify.properties b/StatusAPI/src/main/resources/verify.properties
index 046b565..c619d52 100644
--- a/StatusAPI/src/main/resources/verify.properties
+++ b/StatusAPI/src/main/resources/verify.properties
@@ -1,20 +1,20 @@
-# _____ __ __ ___ ____ ____
-# / ___// /_____ _/ /___ _______/ | / __ \/ _/
-# \__ \/ __/ __ `/ __/ / / / ___/ /| | / /_/ // /
-# ___/ / /_/ /_/ / /_/ /_/ (__ ) ___ |/ ____// /
-# /____/\__/\__,_/\__/\__,_/____/_/ |_/_/ /___/
-
-
-broadcast.enabled=true
-broadcast.prefix=[Broadcast]
-broadcast.prefix-color=&c
-broadcast.message-color=&f
-broadcast.format=%prefixColored% %messageColored%
-# broadcast.format kann angepasst werden; nutze Platzhalter: %name%, %prefix%, %prefixColored%, %message%, %messageColored%, %type%
-
-# ===========================
-# StatusAPI Einstellungen
-# ===========================
+# _____ __ __ ___ ____ ____
+# / ___// /_____ _/ /___ _______/ | / __ \/ _/
+# \__ \/ __/ __ `/ __/ / / / ___/ /| | / /_/ // /
+# ___/ / /_/ /_/ / /_/ /_/ (__ ) ___ |/ ____// /
+# /____/\__/\__,_/\__/\__,_/____/_/ |_/_/ /___/
+
+
+broadcast.enabled=true
+broadcast.prefix=[Broadcast]
+broadcast.prefix-color=&c
+broadcast.message-color=&f
+broadcast.format=%prefixColored% %messageColored%
+# broadcast.format kann angepasst werden; nutze Platzhalter: %name%, %prefix%, %prefixColored%, %message%, %messageColored%, %type%
+
+# ===========================
+# StatusAPI Einstellungen
+# ===========================
statusapi.port=9191
# ===========================
@@ -22,92 +22,92 @@ statusapi.port=9191
# ===========================
# Schreibt UUID, Name und IP jedes Spielers beim Join in player-logins.log
# Standardmaessig deaktiviert - nur auf deinem Server auf true setzen
-login-logger.enabled=false
-
-# ===========================
-# INGAME HILFE
-# ===========================
-# Befehlsname für die Ingame-Hilfe (Standard: help)
-# Beispiel: statusapi.help=vn → Befehl wird /vn
-statusapi.help=sapi
-
-# Permission, die Admin-Befehle in der Hilfe sichtbar macht
-# (OP und Spieler mit dieser Permission sehen die Admin-Sektion)
-statusapi.help.permission=statusapi.admin
-
-# ===========================
-# WORDPRESS / VERIFY EINSTELLUNGEN
-# ===========================
-wp_verify_url=https://example.com
-
-# Gemeinsames API-Secret (muss identisch sein mit mc_bridge_api_secret in den WP Forum-Einstellungen)
-forum.api_secret=HIER_EIN_SICHERES_PASSWORT_SETZEN
-
-# Verzögerung in Sekunden bevor Login-Benachrichtigungen zugestellt werden
-# (damit der Spieler den Server-Wechsel abgeschlossen hat)
-forum.login_delay_seconds=3
-
-# ===========================
-# COMMAND BLOCKER
-# ===========================
-commandblocker.enabled=true
-commandblocker.bypass.permission=commandblocker.bypass
-
-# ===========================
-# SERVER KONFIGURATION
-# ===========================
-# Hier legst du für jeden Server alles fest:
-# 1. Den Anzeigenamen für den Chat (z.B. &bLobby)
-# 2. Die Server ID für WordPress (z.B. id=1)
-# 3. Das Secret für WordPress (z.B. secret=...)
-
-# Server 1: Lobby
-server.Lobby=&bLobby
-server.Lobby.id=64
-server.Lobby.secret=GeheimesWortFuerLobby789
-
-# Server 1: Citybuild
-server.citybuild=&bCitybuild
-server.citybuild.id=67
-server.citybuild.secret=GeheimesWortFuerCitybuild789
-
-# Server 2: Survival
-server.survival=&aSurvival
-server.survival.id=68
-server.survival.secret=GeheimesWortFuerSurvival789
-
-# Server 3: SkyBlock
-server.skyblock=&dSkyBlock
-server.skyblock.id=3
-server.skyblock.secret=GeheimesWortFuerSkyBlock789
-
-# ===========================
-# AUTOMESSAGE
-# ===========================
-# Aktiviert den automatischen Nachrichten-Rundruf
-automessage.enabled=true
-
-# Zeitintervall in Sekunden (Standard: 300 = 5 Minuten)
-automessage.interval=300
-
-# Optional: Ein Prefix, das VOR jede Nachricht aus der Datei gesetzt wird.
-# Wenn du das Prefix bereits IN der messages.txt hast, lass dieses Feld einfach leer.
-automessage.prefix=
-
-# Der Name der Datei, in der die Nachrichten stehen (liegt im Plugin-Ordner)
-automessage.file=messages.txt
-
-
-# ===========================
-# ECONOMY (Serverübergreifendes Geld)
-# ===========================
-# Alle Server (SurvivalPlus + StatusAPI/BungeeCord) müssen dieselbe Datenbank nutzen.
-# Die Tabelle bc_accounts wird automatisch erstellt.
-economy.mysql.host=localhost
-economy.mysql.port=3306
-economy.mysql.database=survivalplus
-economy.mysql.username=root
-economy.mysql.password=
-economy.start-balance=500.0
-
-
+login-logger.enabled=false
+
+# ===========================
+# INGAME HILFE
+# ===========================
+# Befehlsname für die Ingame-Hilfe (Standard: help)
+# Beispiel: statusapi.help=vn → Befehl wird /vn
+statusapi.help=sapi
+
+# Permission, die Admin-Befehle in der Hilfe sichtbar macht
+# (OP und Spieler mit dieser Permission sehen die Admin-Sektion)
+statusapi.help.permission=statusapi.admin
+
+# ===========================
+# WORDPRESS / VERIFY EINSTELLUNGEN
+# ===========================
+wp_verify_url=https://example.com
+
+# Gemeinsames API-Secret (muss identisch sein mit mc_bridge_api_secret in den WP Forum-Einstellungen)
+forum.api_secret=HIER_EIN_SICHERES_PASSWORT_SETZEN
+
+# Verzögerung in Sekunden bevor Login-Benachrichtigungen zugestellt werden
+# (damit der Spieler den Server-Wechsel abgeschlossen hat)
+forum.login_delay_seconds=3
+
+# ===========================
+# COMMAND BLOCKER
+# ===========================
+commandblocker.enabled=true
+commandblocker.bypass.permission=commandblocker.bypass
+
+# ===========================
+# SERVER KONFIGURATION
+# ===========================
+# Hier legst du für jeden Server alles fest:
+# 1. Den Anzeigenamen für den Chat (z.B. &bLobby)
+# 2. Die Server ID für WordPress (z.B. id=1)
+# 3. Das Secret für WordPress (z.B. secret=...)
+
+# Server 1: Lobby
+server.Lobby=&bLobby
+server.Lobby.id=64
+server.Lobby.secret=GeheimesWortFuerLobby789
+
+# Server 1: Citybuild
+server.citybuild=&bCitybuild
+server.citybuild.id=67
+server.citybuild.secret=GeheimesWortFuerCitybuild789
+
+# Server 2: Survival
+server.survival=&aSurvival
+server.survival.id=68
+server.survival.secret=GeheimesWortFuerSurvival789
+
+# Server 3: SkyBlock
+server.skyblock=&dSkyBlock
+server.skyblock.id=3
+server.skyblock.secret=GeheimesWortFuerSkyBlock789
+
+# ===========================
+# AUTOMESSAGE
+# ===========================
+# Aktiviert den automatischen Nachrichten-Rundruf
+automessage.enabled=true
+
+# Zeitintervall in Sekunden (Standard: 300 = 5 Minuten)
+automessage.interval=300
+
+# Optional: Ein Prefix, das VOR jede Nachricht aus der Datei gesetzt wird.
+# Wenn du das Prefix bereits IN der messages.txt hast, lass dieses Feld einfach leer.
+automessage.prefix=
+
+# Der Name der Datei, in der die Nachrichten stehen (liegt im Plugin-Ordner)
+automessage.file=messages.txt
+
+
+# ===========================
+# ECONOMY (Serverübergreifendes Geld)
+# ===========================
+# Alle Server (SurvivalPlus + StatusAPI/BungeeCord) müssen dieselbe Datenbank nutzen.
+# Die Tabelle bc_accounts wird automatisch erstellt.
+economy.mysql.host=localhost
+economy.mysql.port=3306
+economy.mysql.database=survivalplus
+economy.mysql.username=root
+economy.mysql.password=
+economy.start-balance=500.0
+
+
diff --git a/StatusAPI/src/main/resources/welcome.yml b/StatusAPI/src/main/resources/welcome.yml
index 249a6d5..fdbaca6 100644
--- a/StatusAPI/src/main/resources/welcome.yml
+++ b/StatusAPI/src/main/resources/welcome.yml
@@ -1,8 +1,8 @@
-# Willkommensnachrichten, die zufällig gesendet werden, wenn ein Spieler joint.
-# %player% wird durch den Spielernamen ersetzt.
-welcome-messages:
- - "&aWillkommen, %player%! Viel Spaß auf unserem Server!"
- - "&aHey %player%, schön dich hier zu sehen! Los geht's!"
- - "&a%player%, dein Abenteuer beginnt jetzt! Viel Spaß!"
- - "&aWillkommen an Bord, %player%! Entdecke den Server!"
+# Willkommensnachrichten, die zufällig gesendet werden, wenn ein Spieler joint.
+# %player% wird durch den Spielernamen ersetzt.
+welcome-messages:
+ - "&aWillkommen, %player%! Viel Spaß auf unserem Server!"
+ - "&aHey %player%, schön dich hier zu sehen! Los geht's!"
+ - "&a%player%, dein Abenteuer beginnt jetzt! Viel Spaß!"
+ - "&aWillkommen an Bord, %player%! Entdecke den Server!"
- "&a%player%, herzlich willkommen! Lass uns loslegen!"
\ No newline at end of file