Artikel

Zurück zu Minecraft — diesmal auf Bedrock

Sieben Jahre nach meinem ersten Server wieder eine Welt mit Freunden — diesmal auf Bedrock, weil die Hälfte auf Konsole und Handy spielt. Was daran anders ist als früher.

BlackZackBlackzack

971 Wörter · 5 Min. Lesezeit

  • minecraft
  • bedrock
  • persoenlich

Angefangen hat meine ganze Technikgeschichte 2019 mit einem Minecraft-Server auf einem alten Rechner. In den Jahren danach ging es um Bots, Webseiten, Schnittstellen und Infrastruktur — Minecraft war ein Thema, das ich hinter mir gelassen hatte.

Seit ein paar Wochen läuft wieder eine Welt. Und ich habe festgestellt, dass sich einiges verändert hat, während ich weg war.

Warum Bedrock

Die Ausgangslage hat entschieden: Von den Leuten, mit denen ich spielen wollte, sitzt die Hälfte nicht am PC. Zwei auf Konsole, einer am Handy, einer am Tablet. Wenn der Server auf Java läuft, sind die außen vor.

Also ein Bedrock-Server — die Fassung, die auf Konsolen, Mobilgeräten und Windows läuft. Das war meine erste Begegnung mit dieser Seite von Minecraft, und sie ist in mehr Punkten anders, als ich erwartet hatte.

Was auf Bedrock anders ist

Plugins gibt es so nicht. Auf Java ist der Serverunterbau eine ganze Welt aus Erweiterungen. Auf Bedrock gibt es Addons — Verhaltens- und Ressourcenpakete, die mit dem Spiel selbst arbeiten, plus eine Skript-Schnittstelle. Das ist deutlich näher an dem, was das Spiel offiziell vorsieht, und deutlich enger.

Es gibt keine eingebauten Statistiken. Auf Java zählt der Server automatisch mit, wie viele Blöcke jemand abgebaut hat, wie weit er gelaufen ist, wie viele Mobs er erlegt hat. Auf Bedrock gibt es das nicht. Anzeigetafeln können nur zählen, was man ihnen ausdrücklich sagt, und rückwirkend gibt es gar nichts.

Die Skript-Schnittstelle ist erstaunlich mächtig — und begrenzt. Es gibt Ereignisse für Beitritt, Verlassen, Blockabbau, Tod. Es gibt Formulare für Menüs. Es gibt dauerhafte Eigenschaften, in denen man Daten pro Spieler oder pro Welt speichern kann. Was fehlt, ist alles, was mit der Außenwelt zu tun hat: HTTP-Zugriffe aus einem Addon heraus gibt es nur mit Beta-Schnittstellen, und die verlangen, dass man die Welt als experimentell markiert.

Der Client aktualisiert sich selbst. Auf Java entscheidet man, welche Version läuft. Auf Bedrock aktualisieren sich Konsolen und Handys von allein — und wenn der Server nicht nachzieht, kommt niemand mehr rein.

Infobox

Der letzte Punkt ist für den Betrieb der wichtigste. Auf Java kann ein Server jahrelang auf derselben Version laufen. Auf Bedrock ist das keine Option: Wenn die Clients eine neue Fassung bekommen, muss der Server hinterher — und zwar sofort, nicht wenn es gerade passt.

Was gleich geblieben ist

Erstaunlich viel. Ein Server ist immer noch ein Dienst, der laufen, gesichert und überwacht werden will. Die Welt wächst, die Platte füllt sich, und irgendwann fragt jemand, ob man etwas rückgängig machen kann.

Und der soziale Teil ist völlig unverändert: Wer darf was? Wie geht man mit jemandem um, der etwas kaputtmacht? Was passiert, wenn zwei sich streiten, wem ein Grundstück gehört?

Ich habe 2019 zum ersten Mal gemerkt, dass das die eigentlich schwierigen Fragen sind. Sieben Jahre später gilt das unverändert — nur dass ich diesmal eine Vorstellung davon habe, was auf mich zukommt.

Was ich als Erstes gebaut habe

Nicht im Spiel, sondern drumherum:

Eine Sicherung mit Prüfung. Die Lehre von 2019 sitzt tief. Nächtliches Archiv, Größenvergleich mit dem Vortag, Meldung bei Auffälligkeiten.

Ein Lebenszeichen. Ist der Server erreichbar, antwortet er auf eine Statusabfrage?

Ein eigenes Addon für Statistiken. Weil es keine gibt und weil ich sie wollte. Pro Spieler ein Datensatz in einer dauerhaften Eigenschaft, dazu ein Index auf Weltebene für die Rangliste — an die Eigenschaften abgemeldeter Spieler kommt man sonst gar nicht heran.

Das Addon war mein Einstieg in die Skript-Schnittstelle, und es hat mir mehr über die Grenzen von Bedrock beigebracht als jede Dokumentation. Zum Beispiel, dass eigene Befehle zwingend einen Namensraum brauchen — mystats geht nicht, bz:mystats schon. Oder dass man Skriptausgaben gar nicht sieht, solange man die Protokollierung nicht ausdrücklich einschaltet.

Was das Addon können musste — und was nicht ging

Der Einstieg in die Skript-Schnittstelle war lehrreich, weil die Grenzen dort sehr klar sind.

Was ging: Ereignisse für Beitritt, Verlassen, Blockabbau, Blockplatzierung, Tod und Schaden. Dauerhafte Eigenschaften pro Spieler und auf Weltebene. Menüs als Formulare. Eigene Befehle.

Was nicht ging: Aufrufe ins Netz aus dem Addon heraus — die gibt es nur mit Erweiterungen, die eine Welt als experimentell markieren. Und es gibt kein Ereignis für das Herstellen von Gegenständen, was bedeutet, dass sich hergestellte Items schlicht nicht zählen lassen.

Was überrascht hat: Beim Verlassen liefert das Ereignis, das danach greift, kein vollständiges Spielerobjekt mehr — nur noch Kennung und Name. Wer beim Abmelden etwas speichern will, muss das Ereignis nehmen, das davor greift.

Und der Klassiker: Eigene Befehle brauchen zwingend einen Namensraum. Ein schlichter Name wird abgelehnt. Damit ist ein Befehl ohne Präfix nicht machbar, und das ändert die Bedienung spürbar.

Die Sache mit den Protokollen

Der Punkt, an dem ich am längsten im Dunkeln getappt bin: Skriptausgaben sind standardmäßig unsichtbar.

Ich hatte Ausgaben eingebaut, um zu sehen, ob mein Code überhaupt läuft. Es kam nichts. Nicht einmal Fehlermeldungen.

Die Ursache ist eine Einstellung, die die Protokollierung von Skripten erst einschaltet. Ohne sie sieht man weder eigene Ausgaben noch Fehler — der Server erwähnt einmal beiläufig beim Start, dass die Protokollierung aus ist, und das war's.

Das ist die unangenehmste Sorte Voreinstellung: eine, die das Debuggen unmöglich macht und deren Fehlen man nicht als Fehler erkennt. Man sucht den Fehler im eigenen Code, weil man annimmt, dass eine Ausgabe erscheinen würde, wenn er liefe.

Seitdem ist meine erste Frage bei jedem neuen System: Wo landen Ausgaben, und muss ich das einschalten? Bevor ich die erste Zeile Logik schreibe.

Wo das hinführt

Ich habe im Moment eine Welt mit sechs Leuten und ein Addon, das Statistiken zählt. Was sich abzeichnet, ist die Frage, die auf Bedrock immer kommt: Was, wenn jemand auf Java spielen will?

Es gibt dafür eine Lösung — eine Übersetzungsschicht zwischen den beiden Protokollen. Ich habe angefangen, mich einzulesen, und ahne, dass daraus ein größeres Thema wird als ein Nachmittagsprojekt.