Files
lucashahmannandClaude Opus 5.5 e66f89f49e feat: ATM10-Statistikportal
Statistikportal für den All-the-Mods-10-Server (Minecraft 1.21.1, NeoForge 21.1):

- mod/: serverseitige NeoForge-Mod atmstats – Ereignisse, Live-Zähler, Servergesundheit,
  FTB-Dateien; Outbox auf der Festplatte, signierter gzip-Versand per HTTPS mit Backoff
- backend/: Fastify + PostgreSQL – idempotenter Ingest, Projektionen, Parser für SNBT,
  FTB Quests/Teams, world/stats, world/advancements und latest.log; Ranglisten, Snapshots,
  Retention, öffentliche API, SSE-Live-Updates, Admin mit argon2/CSRF, SFTP-Worker
- web/: Next.js-Dashboard – Übersicht, Ranglisten, Spielerprofile, ATM10, Server,
  Datenquellen, Verwaltung
- shared/: Protokoll v1 und API-Typen; tools/: Simulator, Log-Anonymisierer, RCON-Client
- deploy/: Docker Compose hinter Traefik, Backup; docs/: Architektur, Datenquellen, Betrieb

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 09:33:25 +02:00

7.1 KiB
Raw Permalink Blame History

Datenquellen und Einschränkungen

Jede Zahl im Portal stammt aus einer der unten genannten Quellen. Nichts wird geschätzt oder erfunden. Wo eine Quelle fehlt, zeigt das Portal einen leeren Zustand oder den Hinweis, woher die Daten kommen werden.

Grundlage: was am echten Server geprüft wurde

Stand 13.10.2026, aus einer Kopie des Servers (server-snapshot/, nicht im Repository, enthält Spieler-IPs):

Fakt Beleg
Minecraft 1.21.1 DataVersion 3955 in world/stats/*.json
464 Mods, u. a. FTB Quests 2101.1.36, FTB Teams 2101.1.11, Mekanism 10.7.19, Apotheosis 8.8.0, Spark 1.10.124 Modliste des Servers
FTB-Quest-Fortschritt je Team als SNBT (completed, started, task_progress, claimed_rewards) world/ftbquests/<team>.snbt
Mod-eigene Zähler in den Vanilla-Statistiken: apotheosis:world_tiers_activated, lootr:looted_stat, waystones:waystone_activated world/stats/*.json
Item-Statistiken enthalten Einträge aus Mekanism, Powah, Mystical Agriculture, Ars Nouveau, Iron's Spellbooks, Create, Modern Industrialization, Oritech u. v. m. world/stats/*.json
Log enthält Beitritte (mit UUID), Verlassen, Advancements/Ziele/Herausforderungen im Klartext; Zeilenenden CRLF logs/latest.log
NeoForge 21.1.219 und Java 21 (Testlauf der Mod auf einem lokalen NeoForge-Server) server_start-Ereignis der Mod
Quest-Konfiguration: 66 Kapitel (chapters/*.snbt), 4 790 Quests, Texte über ftbquestslangsplitter in lang/en_us/**/*.snbt_merged (decken alle 3 103 Titel der 1,5 MB großen lang/en_us.snbt ab); Titel mit Farbcodes (&a, &6&l, \& für ein echtes &) config/ftbquests/quests/
Von 585 IDs in completed (CDOGamer) sind nur 267 Quests, der Rest Aufgaben und Kapitel Abgleich mit der Quest-Konfiguration
FTB-Teams: id, type (player/party/server), ranks (UUID → Rang), properties."ftbteams:display_name" world/ftbteams/player/*.snbt

Die exakte NeoForge- und Java-Version des Produktionsservers meldet die Mod beim ersten Start (Seite Server).

Welche Kennzahl woher kommt

Kennzahl Quelle Aktualität Hinweis
Online-Status, Sitzungen, Heatmap „Wann gespielt wird“ Mod: Beitritt/Verlassen; Fallback: Server-Log sofort; Fallback ≤ 15 min Log-Sitzungen werden nur genutzt, wenn die Mod seit 10 min nichts gesendet hat; liefert die Mod später nach, werden überlappende Sitzungen nicht doppelt gezählt
Spielzeit, Tode, besiegte Mobs, Sprünge, Schaden Vanilla-Zähler: Mod liest sie live, SFTP liest world/stats 5 min (Mod) bzw. beim Speichern der Welt (SFTP) die neueste Beobachtung gewinnt
Strecken je Fortbewegungsart Vanilla-Zähler *_one_cm wie oben „Weltenbummler“ ohne Fallstrecke
Abgebaut / hergestellt / benutzt / aufgesammelt je Item und Mod Vanilla-Zähler minecraft:mined usw. wie oben Mod-Zuordnung über den Namespace der Item-ID
Technik / Magie / Farming Summe hergestellter und benutzter Items der Mods einer Kategorie wie oben Zuordnung in backend/config/mod-categories.json
Diamantenbank abgebaute Diamanterze (normal + Tiefenschiefer) wie oben misst Abbau, nicht Besitz
Schatzjäger, Weltenstufe lootr:looted_stat, apotheosis:world_tiers_activated wie oben
Todesursachen, Killer Mod: LivingDeathEvent sofort ohne Mod nur Anzahl und killed_by-Zähler
Boss- und Spieler-Kills mit Waffe Mod: LivingDeathEvent, Boss = NeoForge-Tag c:bosses sofort normale Mob-Kills nur als Zähler (Last)
Advancements Mod: AdvancementEarnEvent; SFTP: world/advancements; Log (nur für Spieler ohne Advancement-Datei) sofort / ≤ 15 min Rezept-Freischaltungen ausgenommen. Die Mod zählt nur Advancements mit Anzeige im Spiel; aus world/advancements kommen auch solche ohne Anzeige, weil die Datei keine Anzeige-Informationen enthält. Ohne Mod kann „Abenteurer“ daher etwas höher ausfallen
Besuchte Dimensionen Mod: Dimensionswechsel sofort erst ab Installation der Mod
FTB-Quest-Fortschritt world/ftbquests/*.snbt (Mod alle 2 min oder SFTP) 2–15 min pro Team; gezählt werden nur IDs, die in der Quest-Konfiguration als Quest vorkommen
Quest- und Kapiteltitel config/ftbquests/quests/chapters/*.snbt + lang/en_us/**/*.snbt_merged (Mod oder SFTP; andere Sprachen und Belohnungstabellen werden nicht übertragen) bei Änderung Farbcodes entfernt
Party-Teams world/ftbteams/{player,party}/*.snbt bei Änderung
TPS, Tickdauer (Ø, 95. Perzentil, Max), Spieler, Chunks, Speicher eigene Messung der Mod um jeden Tick jede Minute unabhängig von Spark
Versionen, Modliste Mod beim Serverstart (ModList) bei jedem Start
Verlaufsdiagramme, 7-/30-Tage-Ranglisten stündliche und tägliche Snapshots durch den Worker stündlich Verläufe beginnen mit der Inbetriebnahme; Stunden 30 Tage, Tage unbegrenzt

Bewusst nicht erfasst

Ohne verlässliche serverseitige Quelle oder nur über ungeprüfte Interna einzelner Mods erreichbar:

  • Energie (Erzeugung und Verbrauch von Mekanism-, Powah- und anderen Maschinen)
  • Inhalte von AE2- und Refined-Storage-Netzen
  • Mana, Source, Zauber, Rituale (Ars Nouveau, Iron's Spellbooks, Occultism); Magie-Aktivität stammt aus Items
  • MineColonies-Kolonien
  • Spielerpositionen, Todesorte, Heatmaps der Welt: Datenschutz (Basen) und Last
  • Inventare/Besitz (daher misst die Diamantenbank den Abbau)

Erweiterungen sind über neue Ereignistypen im Protokoll möglich, jeweils erst nach Prüfung der Mod-API in der installierten Version.

Einschränkungen durch Hoster und Mods

Einschränkung Auswirkung Status
Ob Mine-Hoster ausgehendes HTTPS erlaubt, ist nicht dokumentiert ohne Freigabe nur SFTP-Modus (keine Echtzeit, keine Todesursachen, keine Leistungsdaten) wird beim ersten Start geprüft: Log-Zeile atmstats: backend reachable
world/stats wird vom Server nur beim Speichern geschrieben SFTP-Zähler hinken bis zum nächsten Autosave hinterher Mod liefert Live-Werte alle 5 min
Der Log-Ausschnitt enthielt keinen Startabschnitt Versionen nicht aus dem Log lesbar Mod meldet sie beim Start
Log-Zeitstempel sind in der lokalen Zeitzone des Servers Zeitzone muss stimmen (TIMEZONE, Standard Europe/Berlin) für Mine-Hoster nicht bestätigt; betrifft nur log-basierte Daten
FTB Teams: Party-Dateien auf dem Server derzeit nicht vorhanden Party-Mitgliedschaft wird aus ranks (member/officer/owner) gelesen; Format an den echten Spieler-Team-Dateien geprüft, Party-Dateien nutzen dieselben Felder ohne Party zählt jeder Spieler als eigenes Team (wie im Spiel)
Quest-Titel: 1 789 von 4 790 Quests haben keinen eigenen Titel sie zählen mit, erscheinen aber nicht namentlich (im Spiel heißen sie nach dem Aufgaben-Item, das serverseitig nicht übersetzbar ist) geprüft an der echten Konfiguration (66 Kapitel, 3 029 Titel)
SFTP-Passwort = Gamepanel-Passwort volle Schreibrechte im Worker-Container Worker liest nur; .env schützen
Spieler-IPs stehen im Server-Log Datenschutz werden nie gespeichert; Test-Fixtures anonymisiert