Zurück zum Blog

Minecraft-Integrationen: Funktionieren sie ohne Spieler?

Mineando
Zwei getrennte Kabelstecker im Voxel-Stil vor dunkelgrünem Hintergrund.

Muss eine individuelle Integration auch dann funktionieren, wenn auf einem Minecraft-Backend niemand spielt, reicht Plugin Messaging über Spielerverbindungen als einziger Übertragungsweg nicht aus. Klärt zuerst, ob der Vorgang auf eine Spielerverbindung warten darf. Falls nicht, braucht der Auftrag einen davon unabhängigen Kommunikationsweg, ein überprüfbares Ergebnis und festgelegtes Verhalten bei Fehlern.

Diese Frage entsteht, wenn eine Community eine Website, eine Eventsteuerung oder die Zusammenarbeit mehrerer Server ergänzt. Bei einer Vorführung ist der Entwickler oft selbst eingeloggt. Dadurch bleibt womöglich genau die Bedingung ungetestet, an der die nächtliche Automatisierung scheitert. Der folgende Ablauf ist ein vorgeschlagener Anforderungskatalog für Paper-Backends hinter Velocity. Er beschreibt keine getestete Implementierung und empfiehlt keinen bestimmten Nachrichtendienst.

Welche Verbindung benötigt die Nachricht?

Laut Paper werden Plugin-Nachrichten über Spielerverbindungen übertragen. Ein leerer Server kann sie über diesen Mechanismus weder senden noch empfangen. Das erläutert die Paper-Dokumentation zu Plugin Messaging.

In einem Netzwerk wird diese Einschränkung leicht übersehen. Ein Spieler in der Lobby belegt noch keine Verbindung zum leeren Event-Backend. Benennt bei der Planung für jeden Vorgang die Quelle, das Ziel und die verwendete Verbindung. „Das Netzwerk läuft“ ist als Abnahmebedingung zu ungenau.

Trennt Spieleraktionen von Hintergrundarbeit. Einen angemeldeten Teilnehmer zu einem anderen Server weiterzuleiten und die leere Arena für morgen vorzubereiten, sind unterschiedliche Anforderungen. Die Vorbereitung darf nicht zufällig davon abhängen, dass vorher jemand die Arena besucht. Auch ein dauerhaft angemeldetes Testkonto sollte nicht unbemerkt zum Bestandteil der Produktionsarchitektur werden.

Vorgänge einordnen, dann den Übertragungsweg wählen

Erstellt eine kurze Liste der tatsächlichen Aufgaben der Integration. Haltet jeweils fest, wer den Vorgang auslöst, wann er abgeschlossen sein muss, ob ein Spieler anwesend sein muss und wer das Ergebnis bestätigen kann.

Vorgang in einem beispielhaften EventnetzwerkVereinbarte AnforderungFolge für den Entwurf
Ein Teilnehmer wählt in der Lobby eine ArenaNur während seiner Sitzung sinnvollEin verbindungsabhängiger Weg kann passen; Abmeldung berücksichtigen
Das Team bereitet eine leere Arena über die Website vorAbschluss vor Öffnung des Zugangs erforderlichKommunikation unabhängig von Spielern vorsehen
Die Website zeigt die Bereitschaft der ArenaDas Team benötigt vor der Freigabe einen aktuellen NachweisZeitpunkt der letzten Bestätigung anzeigen
Ein verspäteter dekorativer Hinweis erreicht einen leeren ServerDarf entfallen, wenn er nicht mehr nütztAblaufregel festlegen; nicht als kritischen Auftrag behandeln

Die Tabelle beschreibt Anforderungen, keine Zusicherungen von Paper oder Velocity. Eine zusätzliche Warteschlange oder ein weiterer Dienst ist nicht allein deshalb nötig, weil der Entwurf damit robuster klingt. Sind alle Vorgänge an Sitzungen gebunden und Fehler sichtbar, kann die einfachere Lösung genügen. Muss eine wesentliche Funktion ohne Spieler laufen, gehört diese Grenze ausdrücklich ins Angebot.

Der Leitfaden zu Abnahmekriterien für beauftragte Plugins behandelt die allgemeine Übergabe. Hier kommt eine konkrete Bedingung hinzu: Die Kommunikation muss die vereinbarte Funktion auch ohne anwesende Spieler ermöglichen.

Beispiel: Eine leere Arena vorbereiten

Angenommen, berechtigte Teammitglieder können auf einer Website die Vorbereitung einer Arena anfordern. Der Backendprozess läuft, aber niemand ist dort angemeldet. Definiert „bereit“ als eindeutigen Zustand: Die vereinbarte Arenakonfiguration ist geladen, die Vorbereitung ist abgeschlossen und dieses Backend hat den passenden Auftrag als erledigt bestätigt.

Unterscheidet „Auftrag angenommen“ von „Arena bereit“. Die Website darf den Eingang bestätigen und die Vorbereitung gleichzeitig als ausstehend anzeigen. Allein das Absenden einer Anweisung darf den Zugang noch nicht öffnen. Gebt jedem Auftrag eine Kennung und erfasst Zielbackend, angeforderte Konfigurationsrevision und beobachtetes Ergebnis.

Als unabhängigen Weg könnte der Entwickler einen authentifizierten Anwendungsendpunkt oder eine dauerhaft gespeicherte Arbeitswarteschlange vorschlagen, aus der das Backend Aufgaben abruft. Das sind Entwurfsoptionen, keine fertigen Produktempfehlungen. Klärt, welcher Prozess die Kommunikation beginnt, wo offene Aufträge liegen, wie der Zugriff geregelt ist und was beim Neustart beider Seiten geschieht. Wählt die einfachste Lösung, die die tatsächlichen Anforderungen erfüllt.

Unabhängigkeit von Spielern bedeutet außerdem nicht Unabhängigkeit vom Prozess. Läuft das Backend nicht, kann sein Plugin keine Arena vorbereiten. Das Starten des Prozesses gehört in einen gesondert festgelegten Infrastrukturablauf. Die Website sollte zwischen nicht verfügbar, ausstehend, fehlgeschlagen und bereit unterscheiden, statt jede fehlerfreie Übermittlung als abgeschlossene Arbeit darzustellen.

Berechtigungen getrennt vom Transport prüfen

Empfangene Daten sind noch keine Erlaubnis, eine Arena zu verändern. Legt fest, welche Teamrollen Vorbereitungen anfordern dürfen, welches Backend Ergebnisse melden darf und welche Operationen die Integration überhaupt akzeptiert. Eine Anfrage sollte eine erlaubte Operation benennen, keinen beliebigen Konsolenbefehl aus dem Browser enthalten.

Die Velocity-Dokumentation zu Plugin Messaging warnt vor unbeabsichtigtem Weiterleiten von Clientnachrichten. Bei einem privaten Kanal prüfen die Beispiele zunächst die Kanalkennung, markieren das Ereignis als behandelt und prüfen danach die Quelle. Bleibt Plugin Messaging Teil des Entwurfs, sollte der Entwickler diese Vertrauensgrenze gezielt prüfen.

Für einen separaten Endpunkt oder eine Warteschlange braucht es eine eigene Prüfung von Authentifizierung und Berechtigungen. Kommunikation außerhalb der Spielerverbindung wird dadurch nicht automatisch vertrauenswürdig. Als Abnahmenachweis eignet sich eine abgewiesene Anfrage einer unberechtigten Testidentität samt Kontrolle, dass die Arena unverändert bleibt. Führt solche Prüfungen ausschließlich in der vereinbarten Testumgebung durch.

Leere Server, Unterbrechungen und späte Antworten proben

Verwendet für den Probelauf genau die Pluginversionen und Einstellungen der geplanten Lieferung. Schreibt das erwartete Ergebnis vor jedem Versuch auf. Die folgenden vorgeschlagenen Prüfungen wurden für diesen Artikel nicht ausgeführt.

  1. Lasst das Zielbackend ohne Spieler laufen. Fordert die Vorbereitung an und überprüft den Abschluss über den gewählten unabhängigen Weg.
  2. Meldet einen Spieler ausschließlich in der Lobby an. Wiederholt die Prüfung; seine Anwesenheit darf eine fehlende Verbindung zum Ziel nicht verdecken.
  3. Unterbrecht den Kommunikationsweg in der Testumgebung. Die Website darf keine Bereitschaft melden und muss den vereinbarten offenen oder fehlgeschlagenen Zustand zeigen.
  4. Startet die Komponente neu, die offene Arbeit verwaltet. Prüft, ob derselbe Auftrag fortgesetzt wird, sichtbar fehlschlägt oder gemäß Spezifikation eine Kontrolle benötigt.
  5. Übermittelt ein verspätetes Ergebnis eines älteren Vorbereitungsauftrags. Es darf den Zustand eines neueren Auftrags nicht überschreiben.
  6. Wiederholt einen Auftrag mit zuvor unklarem Ergebnis. Überprüft die vereinbarte Behandlung doppelter Anfragen, bevor Spieler zugelassen werden.

Bewahrt Protokolle und Auftragskennungen zusammen mit den Ergebnissen auf. Haltet fest, wann das Backend seinen Zustand zuletzt bestätigt hat. Die Projektverantwortlichen müssen bestimmen, wie alt diese Bestätigung sein darf, bevor erneut geprüft werden muss. Dieser Artikel nennt weder einen universellen Timeout noch eine allgemeine Kapazitätsgrenze.

Was in die Übergabe gehört

Verlangt die Aufgabenliste, eine Darstellung der Kommunikation, Zugriffsregeln, den ausgefüllten Prüfbericht und Anweisungen zur Wiederherstellung des Betriebs. Dokumentiert, wie das Team mit offenen Aufträgen umgeht und wer sie wiederholen darf. Legt fest, wie Zustellfehler sichtbar werden, ohne dass Mitarbeitende während eines Events Java-Stacktraces auswerten müssen.

Für individuelle Minecraft-Integrationen helfen die geplanten Vorgänge, Zielserver, Anforderungen an den Betrieb ohne Spieler, Termin und Budget. Mineando kalkuliert bezahlte Projekte mit individuell vereinbartem Umfang. Gehören Prozessstart, Bereitstellung oder Monitoring dazu, ordnet diese Zuständigkeiten dem Infrastrukturumfang zu. Wartung und Livebetreuung werden separat vereinbart.

Erzähl uns von deinem Vorhaben.

Bezahlte Projekte mit vorab vereinbartem Umfang und Angebot.

Projekt besprechen