Zum Hauptinhalt springen

Temporary Dimension

Private instanzierte Welten, die beim Betreten aus Slime-Vorlagen geklont und gelöscht werden, wenn sie leer sind.

Privatv0.0.2Welt & Bauen
BenötigtTypeWriter0.9.0-beta-177 (BTC build)BTC CoreAdvancedSlimePaper

Für das BornToCraft-Netzwerk entwickelt. Diese Erweiterung ist zu Referenzzwecken dokumentiert und wird nicht verteilt.

Überblick​

Temporary Dimension schickt einen Spieler in eine frische Kopie einer Vorlagenwelt. Die Kopie wird beim Betreten des Spielers aus einer Advanced SlimeWorld-Vorlage erstellt, existiert nur im Speicher und wird entladen, sobald der Spieler sie verlassen hat, sodass jeder Besuch bei der Vorlage beginnt. Sie ist gedacht für Dungeons, Tutorials, private Räume und Cutscene-Kulissen, die weder geteilt noch aufbewahrt werden dürfen.

Du beschreibst eine Dimension einmal mit einem Temporary Dimension Definition-Entry: die Vorlagenwelten (eine wird zufällig gewählt), den Bereich, in dem Spieler erscheinen, die Berechtigung zum Betreten, gesperrte Befehle und was beim Betreten und Verlassen ausgelöst werden soll. Spieler betreten sie über einen Befehl, eine TypeWriter-Aktion oder einen Admin-Befehl und kehren genau an den Ort zurück, den sie verlassen haben.

Sie läuft auf dem BTC-Build von TypeWriter und BTC Core (Paper/Folia) und unterstützt auch AdvancedSlimePaper-Server. Erstellung, Spawn-Suche und Teleportation sind asynchron und Folia-sicher.

Funktionen​

  • Instanzwelten — jeder Eintritt erstellt aus einer Vorlage eine neue Welt namens tempdim_<uuid> und löscht sie, wenn sie leer ist.
  • Mehrere Vorlagen — liste mehr als eine Vorlagenwelt auf, und eine wird zufällig gewählt.
  • Sicherer zufälliger Spawn — zufällige Punkte in einer Box, dann eine Suche um ihre Mitte, wobei nur Luft über einem festen, ungefährlichen Block akzeptiert wird.
  • Whitelist für Spawn-Blöcke — beschränke das Spawnen auf ausgewählte Blocktypen.
  • Befehls-Blacklist — sperre Befehle (und ihre plugin:-Formen), solange sich der Spieler darin befindet.
  • Rückkehr zum Ursprung — der Spieler geht zurück zu Ort, Rotation und Welt, die er verlassen hat.
  • Trigger bei Betreten und Verlassen — führe beliebige TypeWriter-Entries aus und sende MiniMessage-Nachrichten beim Betreten und Verlassen.
  • Berechtigung pro Dimension — eine Berechtigung pro Dimension, vom Befehl und optional von der Aktion geprüft.
  • Facts und Platzhalter — erfahre, ob ein Spieler in einer Dimension ist, in welcher und wer sonst noch darin ist.

Installation​

  1. Betreibe den Server auf BTC Core oder auf AdvancedSlimePaper; die Erweiterung sucht zur Laufzeit nach einem von beiden.
  2. Lege die Temporary-Dimension-JAR in plugins/Typewriter/extensions/ ab und starte den Server neu.
  3. Bereite deine Vorlagenwelten als Slime-Welten vor:
    • Lege sie auf BTC Core dort ab, wo der file-Slime-Loader Welten liest (standardmäßig slime_worlds im Serverordner).
    • Auf AdvancedSlimePaper muss die Vorlage eine geladene Slime-Welt mit dem exakten Vorlagennamen sein; sie wird aus dem Speicher kopiert.
  4. Gib Spielern die Berechtigung, die du an der Dimension setzt.

Erste Schritte​

Erstelle einen Dungeon, den Spieler mit /typewriter tempdim dungeon1 betreten können.

  1. Baue deinen Dungeon als Slime-Welt namens dungeon1_template und lege sie dort ab, wo dein Server Vorlagen erwartet (siehe oben).
  2. Öffne im TypeWriter-Web-Panel eine statische Page und füge einen Temporary Dimension Definition-Entry hinzu.
  3. Setze commandName auf dungeon1, permission auf dimension.dungeon1 und füge dungeon1_template zu templateWorlds hinzu.
  4. Setze spawnZone auf zwei gegenüberliegende Ecken (x1, y1, z1 und x2, y2, z2) um den Eingang. Verwende Blockkoordinaten der Vorlagenwelt.
  5. Fülle optional blacklistedCommands (zum Beispiel home, spawn, tpa) und verknüpfe Trigger in onEnter und onExit.
  6. Veröffentliche, gib einem Testspieler die Berechtigung und führe /typewriter tempdim dungeon1 aus.

Um stattdessen von einer Quest oder einem NPC aus zu betreten, verwende Enter Temporary Dimension und zum Verlassen Leave Temporary Dimension.

Befehls-Aliase

Der Dimensionsbefehl ist ein Unterbefehl von /typewriter tempdim; die Erweiterung registriert keinen Top-Level-Befehl. Ein kurzer Befehl wie /dungeon1 kann mit einem TypeWriter-custom_command-Entry auf deiner Page bereitgestellt werden, was die Befehlsregistrierung neuladesicher hält.

Funktionsweise​

Ein Spieler kann sich immer nur in einer temporären Dimension befinden. Schlägt die Erstellung fehl (keine Vorlage, Vorlage nicht gefunden, kein sicherer Spawn innerhalb von 10 Sekunden, Teleport-Fehler), bleibt der Spieler, wo er ist, erhält eine Fehlermeldung, und die halb gebaute Welt wird entfernt. Trennt der Spieler die Verbindung, wird er ohne Teleport aus der Instanz entfernt, und die Welt wird geschlossen, wenn sie leer ist. Jede Instanz wird geschlossen, wenn TypeWriter neu lädt oder stoppt.

Befehle​

Alle Befehle liegen unter /typewriter.

BefehlBeschreibung
/typewriter tempdim <commandName>Betritt die Dimension, deren commandName übereinstimmt. Erfordert die permission der Dimension (leer bedeutet für alle offen).
/typewriter tempdim enter <dimension>Betritt eine beliebige aus der Entry-Liste gewählte Dimension und ignoriert ihre Berechtigung. Erfordert typewriter.temporarydimension.admin.
/typewriter tempdim leaveVerlässt deine aktuelle Dimension und kehrt zu deinem Ursprung zurück. Keine Berechtigung nötig.
/typewriter tempdim listListet aktive Instanzen mit Spielerzahl und Weltnamen auf. Erfordert typewriter.temporarydimension.admin.

commandName akzeptiert nur Buchstaben, Ziffern, _, - und : und darf nicht enter, leave oder list sein. Befehle werden beim Laden der Entries aufgebaut, veröffentliche daher nach einer Änderung.

Berechtigungen​

BerechtigungGewährt
typewriter.temporarydimension.admin/typewriter tempdim enter und /typewriter tempdim list.
das Feld permission einer Definition/typewriter tempdim <commandName> und, wenn checkPermission aktiviert ist, die Betreten-Aktion.

Platzhalter​

MiniPlaceholders-Expansion tempdim, nutzbar als MiniMessage-Tags. Sie liefern einen leeren Wert oder 0/false, wenn der Spieler in keiner Dimension ist.

PlatzhalterGibt zurück
<tempdim_in_dimension>true oder false.
<tempdim_in_dimension_bool>1 oder 0, für numerische Vergleiche.
<tempdim_current>Name des Entries der aktuellen Dimension.
<tempdim_current_id>Entry-ID der aktuellen Dimension.
<tempdim_current_world>Weltname der Instanz (tempdim_...).
<tempdim_players>Anzahl der Spieler in der Instanz.
<tempdim_players_list>Namen der Spieler in der Instanz, durch Kommas getrennt.

In den Nachrichten einer Definition wird <dimension> durch den Entry-Namen ersetzt und <command> in der Nachricht zu gesperrten Befehlen durch den gesperrten Befehl.

Entries​

5 Einträge, aus dem Quellcode der Erweiterung generiert.

Aktionen2
Fakten2
Manifeste1

Fehlerbehebung​

Unable to prepare the temporary dimension. Die Vorlage konnte nicht geklont werden. Prüfe den Vorlagennamen in templateWorlds gegen den Slime-Weltnamen, dass die Welt in slime_worlds (BTC Core) liegt oder geladen ist (AdvancedSlimePaper), und lies die Warnung im Log für die Ursache. Auf Servern, die weder BTC Core noch AdvancedSlimePaper sind, meldet das Log unsupported server platform for SlimeWorld.

Nichts passiert, und das Log meldet no template configured. templateWorlds ist leer oder enthält nur leere Namen.

No safe spawn was found in the temporary dimension. Keiner der getesteten Punkte hatte zwei freie Luftblöcke über einem festen Block, der nicht Lava, Feuer, Kaktus oder Magma ist. Vergrößere die spawnZone, stelle sicher, dass sie festen Boden der Vorlage abdeckt (Y eingeschlossen), und prüfe, dass spawnBlockWhitelist den Block des Bodens enthält.

You are already in a temporary dimension. Ein Spieler kann nur in einer Instanz sein. Verwende zuerst den Verlassen-Befehl oder die Verlassen-Aktion.

Ein Befehl funktioniert in der Dimension weiterhin. Schreibe den Befehlsnamen ohne Schrägstrich in blacklistedCommands. Verglichen wird das erste Wort, ohne Beachtung der Groß- und Kleinschreibung, und auch name:command-Formen werden gesperrt, nicht aber unter einem anderen Namen registrierte Aliase.

Der Dimensionsbefehl existiert nach dem Bearbeiten nicht. Dimensionsbefehle werden aus den Entries generiert: Veröffentliche die Page und prüfe, dass commandName nur erlaubte Zeichen verwendet und nicht mit einer anderen Dimension kollidiert.