Dieses Repository enthält eine kleine Plugin-Suite für ein Minecraft-Netzwerk (Velocity + Paper/Spigot), bestehend aus:
- VELLSCAFFOLDING (Velocity)
Zentrale Verarbeitung/Enforcement von Strafen (Ban/Mute/Kick/Unban/Unmute) + Session-Logging + User-Tracking in MariaDB. - VELGUARD (Paper/Spigot)
Ingame-Commands für Team/Staff (/ban,/mute, …), Rang-Check via LuckPerms + Mute-Chatblock mit Cache. Sendet Strafen per PluginMessage an Velocity. - VELUTILITYGUARD (Paper/Spigot)
Blockiert/entfernt gefährliche bzw. unnötige Commands aus Tab-Completion + verhindert „Unknown Command“-Spam.
Paper (VELGUARD) → sendet eine PluginMessage auf
vellscaffolding:punishment
Velocity (VELLSCAFFOLDING) → empfängt die Message, schreibt in DB, enforced:
- BAN: Spieler wird beim Login geblockt (Ban-Screen) / ggf. sofort gekickt
- MUTE: Mute wird in DB gespeichert; Paper blockiert Chat anhand DB-Check
- UNBAN/UNMUTE: Strafe wird beendet (expires_at = NOW())
- KICK: kickt sofort
Paper (VELUTILITYGUARD) → filtert Commands in Autocomplete + blockiert bestimmte Commands direkt.
- MariaDB-Anbindung
- Ban-Enforcement beim Login
- Punishment Message Listener (asynchroner DB-Worker)
- User Tracking: Eintrag/Update in
Users - Session Logging:
UserSessionsJoin/Leave inkl. Crash-Handling
- Commands:
ban/unban/mute/unmute/kick - Dauer:
- Relativ:
1d,2w,1m,1y - Absolut: Datum
dd-MM-yyyy(endet 23:59:59 Serverzeit) - Permanent: Standard
- Relativ:
- UUID-Auflösung:
- schnell (online / cached)
- fallback Mojang API (async)
- LuckPerms-Rangvergleich: Staff kann nur untere Ränge bestrafen
- Mute-Chatblock (DB-Check) mit kurzem Cache (5s)
- Entfernt blockierte Commands aus Tab-Completion
- Blockiert Ausführung blockierter Commands
- Einheitliche „Unknown command“-Message
- Velocity (für VELLSCAFFOLDING)
- Paper/Spigot (für VELGUARD & VELUTILITYGUARD)
- MariaDB (oder kompatibel)
- LuckPerms (für Rang-Check in VELGUARD)
- Netzwerk muss PluginMessage-Channel zulassen (Velocity ↔ Paper)
Erstelle eine Datenbank (Beispiel):
users_db
Benötigte Tabellen (aus dem Code ersichtlich):
punishment(UUID, TYPE, Reason, ACTOR, created_at, expires_at, id PK auto-inc)Users(UUID, IP_ADRESS, ONLINE, SERVER, RANK, PLAYTIME, FIRST_JOIN, …)UserSessions(UUID, IP_ADRESS, JOIN_DATETIME, LEAVE_DATETIME)
Hinweis: Die exakten Spalten/Typen hängen von deinem bestehenden Schema ab.
Wichtig ist:punishment.expires_atmussNULL(permanent) oder ein Timestamp sein.
VELLSCAFFOLDING.jarnachvelocity/plugins/- Server starten
VELGUARD.jarundVELUTILITYGUARD.jarnachpaper/plugins/- Server starten
Velocity: DatabaseManager
Paper: DatabaseManagerPaper
Permissions folgen dem Muster:
vellscaffolding.punishment.<command>
/ban <player> [reason...] [dauer|datum]/mute <player> [reason...] [dauer|datum]/unban <player> [reason...]/unmute <player> [reason...]/kick <player> [reason...](Spieler muss online sein)
Beispiele:
/ban Notch Griefing 7d/mute Steve Spam 1w/ban Alex Alt account 25-12-2025/unmute Steve Entmutet
vellscaffolding.punishment.banvellscaffolding.punishment.unbanvellscaffolding.punishment.mutevellscaffolding.punishment.unmutevellscaffolding.punishment.kick
vellscaffolding.punishment.sgd.<rank>- Beispiele:
vellscaffolding.punishment.sgd.owner,...admin,...mod, …
- Beispiele:
- Bypass für Command-Block & Autocomplete-Filter:
vellscaffolding.utility.bypasscmd
plugins/VELGUARD/ranks.yml
Beispiel:
ranks:
- owner
- admin
- mod
- supporter
- default