Zum Hauptinhalt springen

Dungeon

Instanzierte Dungeons mit Party-Lobbys, GUI-Menüs, Beutetruhen und einem Raum-Editor im Spiel.

Kostenpflichtigv1.2Kampf & Mobs
BenötigtTypeWriter0.9Quest (TypeWriter extension)GUIMMOCoreoptionalPartiesoptionalAdvanced Slime PaperoptionalPlaceholderAPIoptional

Überblick​

Dungeon lässt eine Party eine private Kopie eines Dungeons spielen. Jeder Spieldurchgang ist ein Durchlauf (Run): Er hat seine eigene Welt (oder seinen eigenen Slot in einer geteilten Welt), seine eigenen Mitglieder, sein eigenes Zeitlimit, seine eigenen Truhen, NPCs und Mobs und endet sauber, indem alle dorthin zurückgeschickt werden, woher sie kamen.

Ein Dungeon wird durch einen Dungeon Instance-Entry beschrieben. Spieler wählen ihn in einem globalen Menü (einem Browser von Dungeons, in einer Kategorie gruppiert), betreten eine Lobby im Party-Menü, markieren sich als bereit und werden hineinteleportiert, wenn der Countdown endet. Team-Mitglieder und Quests können einen Spieler auch direkt mit der Action Dungeon Enter oder mit einem Befehl hineinschicken.

Es gibt zwei Arten von Dungeons:

  • Fest: Du baust den Dungeon einmal in einer Vorlagenwelt. Räume sind Zonen, die du im Spiel zeichnest, und alles geschieht an den Orten, die du festlegst. Das ist der klassische Dungeon.
  • Generiert: Du baust Raumvorlagen (kleine Strukturen mit Türen und Markern), und ein Generator setzt für jeden Durchlauf ein neues Layout zusammen, vom Startraum bis zum Bossraum. Derselbe Seed ergibt immer denselben Dungeon. Siehe Generierte Dungeons.

Beide Arten teilen sich dieselben Durchläufe, Menüs, Truhen, NPCs, Mobs, Events und Facts.

Nur Paper

Dungeon zielt auf Paper. Folia wird nicht unterstützt: Das offizielle Typewriter-Plugin läuft dort nicht.

Funktionen​

  • Durchläufe und Gruppen: ein Durchlauf pro Gruppe, mehrere Durchläufe desselben Dungeons gleichzeitig (maxSimultaneousInstances), ein Zeitlimit, Eintrittskosten, Ende des Durchlaufs bei Abschluss, Zeitablauf, leerem Durchlauf oder Admin-Schließung. Siehe Durchläufe und Weltisolation.
  • Drei Isolationsmodi: SLIME_CLONE, WORLD_PER_RUN und SHARED_WORLD_SLOTS, pro Dungeon mit dem Feld isolation gewählt.
  • Feste Dungeons: Räume mit den Triggern onEnter / onLeave, Modifiern, Criteria und Priorität.
  • Generierte Dungeons: Raumvorlagen, Konnektortypen, Raum-Pools, ein Generator, Affixe und ein Editor im Spiel, um Räume zu erfassen und Türen und Marker zu setzen.
  • Globales Menü und Party-Menü: Layouts der GUI-Erweiterung, live aktualisiert, während Spieler Lobbys betreten und verlassen.
  • Loot-Truhen: Block-Truhen oder an NPCs verankerte Truhen, echt oder clientseitig, ein Inventar pro Spieler oder geteilt, gewichteter oder unabhängiger Loot.
  • NPCs pro Durchlauf: ein NPC, der nur den Mitgliedern eines Durchlaufs angezeigt wird, aus jeder Typewriter-Entity-Definition. Siehe Entities in Dungeons.
  • Kampf-Mobs: echte Vanilla-Mobs, die einmal pro Durchlauf erscheinen, mit Ausrüstung, Attributen, Drop-Regeln und Triggern beim Tod, durch ein Limit begrenzt.
  • Events, Facts und Actions: Events für Start, Abschluss, Raum betreten, Raum verlassen und Mob-Tod; Facts für „ist in einem Dungeon“ und „lebende Mobs“; Actions, um einen Durchlauf abzuschließen, einen Raum zu leeren und eine Welle zu spawnen.
  • Statistiken: 22 Statistiken pro Spieler (Durchläufe, Bestzeit, Mob-Kills, verursachter und erlittener Schaden, Tode, geleerte Wellen...), lesbar mit Placeholdern und einem Fact und in einer GUI-Bestenliste rangierbar. Siehe Statistiken.
  • Reload-sicher: Ein typewriter reload oder ein Publish lässt die Durchläufe weiterlaufen. Ein Serverneustart beendet sie.
  • Parties anderer Plugins: liest die Party von MMOCore, Parties oder der Typewriter-Party-Erweiterung, damit Freunde gemeinsam eintreten.

Installation​

  1. Installiere die GUI-Erweiterung von ihrer Seite. Beide Dungeon-Menüs verwenden ihre Layouts.
  2. Stelle sicher, dass die TypeWriter-Erweiterung Quest installiert ist.
  3. Bereite vor, was dein Isolationsmodus braucht (siehe Durchläufe und Weltisolation):
    • Fester Dungeon: eine Vorlagenwelt als Ordner im Stammverzeichnis deines Servers (neben world), zum Beispiel dungeon_temple. Der Name darf Buchstaben, Ziffern, _ und - enthalten, bis zu 64 Zeichen.
    • Generierter Dungeon: keine Vorlagenwelt. Die Erweiterung erstellt für jeden Durchlauf eine leere Welt.
    • Slime-Klon: Advanced Slime Paper mit der Vorlage als geladener Slime-Welt.
  4. Lade Dungeon aus den Stores herunter (siehe die Buttons im Panel oben) und lege die JAR in plugins/Typewriter/extensions/ ab.
  5. Starte den Server neu.
  6. Optional: Installiere MMOCore oder Parties für die Unterstützung externer Parties und PlaceholderAPI für die Placeholder.

Aktualisierst du von 0.10? Lies zuerst den Migrationshinweis.

Erste Schritte​

Diese Anleitung baut einen festen Dungeon mit einem Lobby-Menü und einer Truhe. Für einen generierten Dungeon beginne mit Generierte Dungeons.

  1. Öffne im Web-Panel eine Manifest-Page und füge eine Dungeon Room Config hinzu. Stelle dich dorthin, wo Spieler ankommen sollen, klicke auf den Content-Editor von spawnPoint und bestätige. Welt, Koordinaten und Blickrichtung werden erfasst.
  2. Füge eine Dungeon Instance hinzu. Setze templateWorld auf den Namen des Weltordners, füge die Room Config zu roomConfigurations hinzu und setze minPartySize und maxPartySize.
  3. Füge ein Dungeon Artifact (Statistiken) und ein Active Dungeon Instance Artifact (Zustand der Durchläufe) hinzu und verknüpfe sie in artifact und runtimeArtifact. Ohne das zweite werden Durchläufe in einer Datei runs.json der Erweiterung gehalten, und beim Laden wird eine Warnung protokolliert. Das Feld partyLobbyArtifact wird nicht mehr verwendet: Lass es leer.
  4. Füge eine Dungeon Category hinzu. Füge in instances einen Slot hinzu, setze dungeonInstance und wähle die Items für freigeschaltet und gesperrt.
  5. Füge auf einer Sequence-Page ein Dungeon Global Menu und ein Dungeon Party Menu hinzu. Gestalte beide Layouts wie unter Menüs beschrieben.
  6. Löse das globale Menü aus einem NPC-Dialog, einem Command-Event oder einem beliebigen anderen Trigger aus. Publish.
  7. Füge für die Instance eine Dungeon Loot Chest hinzu. Stelle dich dorthin, wo die Truhe stehen soll, erfasse location und fülle lootTable.
  8. Füge eine Dungeon Complete-Action dort hinzu, wo der Dungeon enden soll (zum Beispiel am Ende eines Dialogs nach der letzten Truhe).
  9. Teste: Öffne das Menü, klicke den Dungeon an, klicke die Lobby an, drücke den Bereit-Button.
tipp

Um die Menüs zu überspringen und einen Spieler direkt hineinzuschicken, verwende Dungeon Enter oder /typewriter dungeon enter <instance>. Das überspringt die Lobby, aber nicht die Regeln: Gruppengröße (ein einzelner Spieler muss durch minPartySize erlaubt sein), Criteria, Eintrittskosten und die Anzahl gleichzeitiger Durchläufe werden alle geprüft.

Funktionsweise​

Ein Durchlauf beginnt, wenn eine Lobby startet oder wenn eine Dungeon Enter-Action läuft. Die Erweiterung prüft die Criteria und die Gruppengröße jedes Spielers, reserviert einen Platz (ein Doppelklick erzeugt nur einen Durchlauf), bereitet die Welt vor, zieht die Eintrittskosten ein (ganz oder gar nicht), teleportiert die Spieler und löst dann onStart aus und wendet modifiers für jedes Mitglied an. Schlägt unterwegs etwas fehl, wird nichts behalten: Die Spieler bleiben, wo sie waren, die Kosten werden erstattet und die Welt wird verworfen.

Ein Durchlauf endet, wenn Dungeon Complete läuft, wenn das Zeitlimit null erreicht, wenn Dungeon Close oder /typewriter dungeon close läuft oder wenn der letzte Spieler geht, die Welt wechselt oder die Verbindung trennt. onEnd wird für jedes Mitglied ausgelöst, die Truhen, NPCs und Mobs des Durchlaufs werden entfernt, die Spieler werden zum Ausgangspunkt (oder dorthin, woher sie kamen) teleportiert, und die Welt wird freigegeben.

Wenn mehrere Enden gleichzeitig eintreten, gewinnt nur eines, sodass es nie zwei onEnd oder eine doppelte Erstattung gibt.

Reloads und Neustarts​

Ein typewriter reload oder ein Publish verliert die Durchläufe nicht: Sie werden mit ihren Mitgliedern, ihrer Welt, ihrer Deadline, dem Raumzustand (ein once-Raum bleibt verbraucht), den geöffneten Truhen und den bereits gespawnten Mobs wieder übernommen. onStart, Modifier und Truhen werden nicht erneut abgespielt. Ein generierter Dungeon wird aus seinem Seed im Speicher neu aufgebaut.

Ein Serverneustart beendet die Durchläufe: Die Welten der Durchläufe sind weg, Spieler werden bei ihrem nächsten Beitritt nach Hause geschickt, und die übrig gebliebenen Weltordner werden gelöscht. Lobbys werden von keinem von beiden wiederhergestellt.

Verbindungsabbrüche​

Ein Mitglied, das die Verbindung zu einem laufenden Dungeon verliert, behält seinen Platz für das reconnectGrace der Dungeon Instance (standardmäßig 2 Minuten). In dieser Zeit schließt der Durchlauf nicht, und die Statistiken dieses Mitglieds werden nicht ausgezahlt. Kommt das Mitglied rechtzeitig zurück, erscheint es wieder dort, wo es war, mit Sidebar, ausgeblendeten Slots und Spielmodus wie zuvor. Läuft die Frist ab, verlässt es den Durchlauf und wird bei seinem nächsten Beitritt dorthin zurückgeschickt, wo es eingestiegen ist. Das Zeitlimit des Durchlaufs läuft weiter.

Ein Mitglied, auf das gewartet wird, bleibt Mitglied: Endet der Durchlauf in der Zwischenzeit, erhält es sein Ergebnis wie die anderen, Abschluss und Bestzeit eingeschlossen, während die onEnd-Trigger nur für die Mitglieder laufen, die online sind. 0 bedeutet keine Frist: Ein Verbindungsabbruch entfernt den Spieler sofort. Ein typewriter reload während der Frist beendet sie für die Spieler, auf die gewartet wird.

Ist MMOProfiles installiert, wird die Rückkehr nach der Profilwahl erneut geprüft. Ein Spieler, der in keinem Durchlauf ist und den das Profil in eine Dungeon-Welt setzt, wird dorthin zurückgeschickt, wo er eingestiegen ist, und der Spielmodus, den ein Dungeon geändert hatte, wird zurückgegeben, egal welchen Modus das Profil wiederhergestellt hat. Ein Spieler, der in seinem Durchlauf ist (in der Frist), macht einfach weiter. Ohne MMOProfiles ändert sich nichts.

Dungeon hat zwei Menüs. Beide sind Actions mit einem GUI-layoutPool und einer mainLayoutId. Items in den Layouts funktionieren wie jedes GUI-Item. Die Items, deren buttonType einer der folgenden Werte ist, werden von Dungeon ausgefüllt: Dein Item (Material, Name, Lore) bleibt erhalten, und ein Klickverhalten wird hinzugefügt. Schreibe buttonType in Großbuchstaben, genau wie aufgelistet. Lass buttonPrefix leer.

Beide Menüs werden alle autoRefreshTicks neu gezeichnet (standardmäßig 20, zwischen 10 und 1200 gehalten) und sofort für jeden Spieler, der sie geöffnet hat, sobald sich eine Lobby der angezeigten Dungeons ändert. Ein Spieler sieht einen anderen Spieler beitreten, ohne zu klicken.

Für die Layouttypen, Item-Felder (x, y, count, direction, gap, repeatY) und Klick-Actions lies die GUI-Anleitung. Einen Aufbau Schritt für Schritt findest du unter Die Menüs gestalten.

Das Dungeon Global Menu zeigt die Dungeons einer category. Es öffnet sich, wenn die Action ausgelöst wird, oder mit /typewriter dungeon global-menu <category>.

buttonTypeVerhalten
DUNGEON_INSTANCE_SLOTMarkiert, wo ein Dungeon erscheint. Setze einen pro Dungeon oder verwende count, direction, gap und repeatY, um eine Reihe oder einen Block zu markieren. Jeder Marker wird durch den nächsten Dungeon der Kategorie ersetzt. Überzählige Marker bleiben leer.
DUNGEON_FIND_PARTYLinksklick betritt die erste nicht leere Lobby mit freiem Platz unter den freigeschalteten Dungeons der Kategorie und öffnet das Party-Menü. Ist der Spieler bereits in einer Lobby der Kategorie, verlässt er sie stattdessen.
DUNGEON_INFONur Anzeige. Verwende es für ein Hilfe-Item.

Wie Dungeons dargestellt werden:

  • Dungeons sind nach ihrer categoryPriority sortiert (niedrigste zuerst), dann nach Entry-Id.
  • Ein Slot wird mit unlockedItem, unlockedName und unlockLore angezeigt, wenn seine criteria auf den Spieler zutreffen (eine leere Liste trifft immer zu). Ein Klick darauf öffnet das Party-Menü für diesen Dungeon.
  • Ein Slot, dessen criteria nicht zutreffen, wird im gesperrten Aussehen angezeigt und kann nicht geöffnet werden. Die Criteria werden für jeden Spieler ausgewertet, der das Menü öffnet, und erneut, wenn der Spieler klickt.
  • Namen und Lore können {dungeon_name}, {players} und {max} sowie PlaceholderAPI-Placeholder verwenden. {players} ist die Größe der ersten Lobby des Dungeons.
  • Setze die DUNGEON_INSTANCE_SLOT-Marker in Layouts vom Typ simple, paginated oder scrollable. Ist das Basis-Layout scrollbar, scrollen die Dungeons mit.
  • Ohne einen DUNGEON_INSTANCE_SLOT-Marker wird kein Dungeon angezeigt.

Party-Menü​

Das Dungeon Party Menu ist die Lobby. Es öffnet sich, wenn ein Spieler im globalen Menü einen Dungeon anklickt, und mit /typewriter dungeon instance-menu <instance>. Das Auslösen der Action selbst bewirkt nichts außer der Ausgabe eines Hinweises, verbinde sie also nicht mit einem NPC.

Welches Menü welchen Dungeon bedient. Ein Party-Menü, dessen dungeonInstance den Dungeon nennt, bedient ihn. Ein Party-Menü mit leerem dungeonInstance bedient jeden Dungeon, den kein anderes Menü nennt. Ein Menü, das für einen anderen Dungeon geschrieben wurde, wird nie stattdessen geöffnet: Passt keines, wird der Spieler informiert, und das Serverlog meldet No dungeon_party_menu serves '<instance>'. Du kannst also ein Menü pro Dungeon haben, ein gemeinsames Menü oder beides.

Ein Dungeon hat so viele Lobbys wie sein maxSimultaneousInstances. Jede Lobby ist ein Item: lobbyItem, benannt mit lobbyName und beschrieben mit lobbyLore. Wo die Lobbys gezeichnet werden:

  • Mit DUNGEON_LOBBY_SLOT-Markern in einem simple-Layout (wie bei DUNGEON_INSTANCE_SLOT, mit count, direction und gap, um mehrere zu markieren) wird jeder Marker durch die nächste Lobby ersetzt.
  • Ohne Marker wird Lobby n in Spalte lobbyOffsetX + (n mod 9) und Zeile lobbyOffsetY + (n div 9) platziert, ab 0 gezählt.

Ein Klick auf eine Lobby betritt sie.

Placeholder in lobbyName und lobbyLoreWert
{index}Lobby-Nummer, ab 1.
{players}, {max}Spieler in der Lobby und maxPartySize.
{player_names}Namen der Mitglieder, in das Präfix und Suffix für bereit oder nicht bereit eingefasst. Nur Lore.
{ready_players}, {not_ready_players}Anzahlen. Nur Lore.

readyPlayerPrefix, readyPlayerSuffix, notReadyPlayerPrefix und notReadyPlayerSuffix färben die Namen in {player_names}.

buttonTypeVerhalten
DUNGEON_LOBBY_SLOTMarkiert, wo eine Lobby erscheint.
DUNGEON_READYSchaltet „bereit“ um. Fehlen dem Spieler die Eintrittskosten, wird niemand als bereit markiert, und die Lobby erhält die missingItemsMessage des Dungeons.
DUNGEON_LEAVEVerlässt die Lobby und kehrt zum globalen Menü zurück, aus dem der Spieler kam.
DUNGEON_AUTO_FILLBetritt die erste nicht leere Lobby mit einem freien Platz.

Wenn der Durchlauf startet:

  1. Alle in der Lobby müssen bereit sein, und die Lobby muss mindestens minPartySize Spieler enthalten.
  2. Ein Countdown von startCooldownSeconds läuft. Er stoppt, wenn jemand die Bereitschaft zurücknimmt. Bei 0 startet der Durchlauf sofort.
  3. Die Criteria werden für jeden Spieler geprüft, dann die Eintrittskosten. Bei entryCostMode LEADER zahlt der erste Spieler der Lobby. Bei GROUP zahlt jeder. Items werden nur genommen, wenn niemandem etwas fehlt.
  4. Der Durchlauf wird erstellt, und die Spieler werden zum Spawnpunkt teleportiert.

Eine Lobby, die lobbyIdleKickSeconds (standardmäßig 120 Sekunden) ohne Countdown wartet, wird geleert. Ein Admin kann eine Lobby mit /typewriter dungeon force-start <instance> von Hand starten, was die Mindestgruppengröße und die Criteria aufhebt.

Während Spieler warten, kann das Party-Menü ein Warte-Scoreboard anzeigen (enableWaitingScoreboard, scoreboardTitle, scoreboardWaiting mit {missing}, scoreboardCountdown mit {time}).

Parties anderer Plugins. Ist MMOCore (mit seinem eigenen Party-Modul), Parties oder die Typewriter-Party-Erweiterung installiert, liest Dungeon deren Parties und erstellt, führt zusammen oder ändert sie nie. Betritt ein Spieler eine Lobby, betritt die gesamte Party dieses Spielers sie mit, wenn die Lobby Platz für alle hat. MMOCore wird allein verwendet, wenn es vorhanden ist.

Von den Buttons verwendete Befehle​

Die Buttons verwenden keinen Serverbefehl: Sie rufen einen internen Handler des Menüsystems auf, daher brauchen Spieler keine Berechtigung, und es muss nichts von Hand eingegeben werden.

Konfiguration​

Die Erweiterung hat keine Konfigurationsdatei. Die meisten Einstellungen liegen auf Entries. Die Nachrichten der Action-Entries (Enter, Leave, Close, Complete) und der Dungeon Instance (missingItemsMessage) sind Felder. Die Leerlaufzeit einer Lobby ist das Feld lobbyIdleKickSeconds der Dungeon Instance (Standard 120, 2 Minuten).

Jeder andere Text, den ein Spieler liest, ist ein Typewriter-Snippet, es ist also nichts im Code festgelegt: Ändere oder übersetze sie im Web-Panel (Snippets). Werte sind MiniMessage, und {...}-Placeholder werden wie aufgelistet ersetzt. Behältst du die Standardwerte, ändert sich nichts.

FamilieSchlüssel (nach dem Präfix)
content.dungeon_menu.invalid_action, action_failed, in_instance, party_in_instance, global_in_instance, locked, lobby_unavailable, left_lobby, not_in_lobby, no_lobby_available, left_party, no_party_found, no_party_menu ({dungeon}), no_category, party_needs_dungeon
content.dungeon_lobby.idle_kick ({seconds}, {minutes}), party_sync, missing_items_fallback ({PlayerName}, {MissingQuantity}, {ItemName}; verwendet, wenn missingItemsMessage leer ist), scoreboard_syncing
content.dungeon_run.sidebar.time_left ({seconds}), quest ({number}). Eine Sidebar-Zeile ist reiner Text: MiniMessage-Tags werden entfernt.
content.dungeon_chest.default_title (Titel einer Truhe, deren containerTitle leer ist), trigger_chest_missing, trigger_not_manual
content.dungeon_launch.prefix (vor jeden Text der Familie gesetzt), no_online_member, already_in_run ({player}), no_room_configuration, group_size ({size}, {min}, {max}), criteria_not_met ({player}), missing_cost und missing_cost_leader ({player}, {amount}, {item}), max_runs_reached, isolation_unavailable, generation_failed ({text}), failed
content.dungeon_stats.Wie die Statistik-Placeholder schreiben: duration_format (Token {h}, {m}, {mm}, {ss}, {SSS}; Standard {mm}:{ss}) und missing_value (was für einen noch nicht vorhandenen Wert steht; Standard -).
content.dungeon_command.Die Antworten der /typewriter dungeon ...-Befehle: only_players.close, only_players.enter, only_players.leave, only_players.menu, only_players.force_start, only_players.edit_room (an die Konsole gesendet), not_in_run, close.done, close.already_closing, enter.done ({dungeon}), leave.done ({dungeon}), instance_menu.join_failed, instance_menu.joined ({dungeon}), global_menu.not_configured ({category}), force_start.not_in_lobby, force_start.done ({dungeon}), room.invalid_index ({index})
content.dungeon_room., content.dungeon_room_template., content.dungeon_generated.Raum-Editoren und Ablehnungen bei generierten Dungeons.

Auch die Antworten der /typewriter dungeon ...-Befehle sind Snippets, obwohl die Befehle nur für das Personal gedacht sind. Die Antworten des Raum-Editors (addnode, removenode, save...) stehen in content.dungeon_room., und der Text eines abgelehnten enter ist ein Snippet aus content.dungeon_launch..

Die Artifacts speichern Daten unter plugins/Typewriter/:

ArtifactInhalt
Dungeon ArtifactStatistiken pro Dungeon und pro Spieler (artifactId Standard dungeon_data).
Active Dungeon Instance ArtifactZustand der laufenden Durchläufe, damit ein Reload sie nicht verliert.
Dungeon Room TemplateDie gespeicherte Struktur eines Raums eines generierten Dungeons.
Dungeon Party Lobby ArtifactInaktiv. Bleibt erhalten, damit alte Pages noch laden.

Befehle​

Alle Dungeon-Befehle liegen unter /typewriter dungeon (/tw dungeon). Jeder erfordert die Berechtigung typewriter.dungeon.admin und muss von einem Spieler ausgeführt werden.

BefehlBeschreibung
/typewriter dungeon enter <instance>Erstellt einen Durchlauf nur für dich und teleportiert dorthin. Gruppengröße, Criteria, Eintrittskosten und Durchlauflimit gelten weiterhin.
/typewriter dungeon leave <instance>Entfernt dich aus deinem Durchlauf dieses Dungeons und bringt dich dorthin zurück, woher du kamst.
/typewriter dungeon close <instance>Beendet deinen eigenen Durchlauf dieses Dungeons (Admin-Schließung).
/typewriter dungeon global-menu <category>Öffnet das für die Kategorie konfigurierte globale Menü.
/typewriter dungeon instance-menu <instance>Betritt die erste Lobby mit Platz für deine Gruppe und öffnet das Party-Menü.
/typewriter dungeon force-start <instance>Startet die Lobby, in der du bist, ohne auf Bereitschaft, den Countdown, die Mindestgruppengröße oder die Criteria zu warten.
/typewriter dungeon room <room> editÖffnet den Raum-Editor im Spiel für einen Dungeon Room.
/typewriter dungeon room <room> addnodeFügt einen Knoten an deinen Füßen hinzu.
/typewriter dungeon room <room> removenodeEntfernt den letzten Knoten.
/typewriter dungeon room <room> removenodeat <index>Entfernt einen Knoten anhand seiner Nummer, ab 1.
/typewriter dungeon room <room> saveSpeichert den Raum.
/typewriter dungeon room <room> cancelVerwirft die Bearbeitung.

leave und close setzen voraus, dass du dich in einem Durchlauf des genannten Dungeons befindest, andernfalls antworten sie „You are not in a run of this dungeon“ (das Snippet content.dungeon_command.not_in_run). Der alte Unterbefehl start existiert nicht mehr: Verwende enter.

Raumvorlagen generierter Dungeons werden im Web-Panel bearbeitet (der Content-Editor des Feldes artifactId), nicht mit einem Befehl. Siehe Generierte Dungeons.

Raum-Editor (feste Dungeons)​

edit öffnet einen Editor mit einer Werkzeugleiste in deiner Hotbar: Der Blaze Rod in Slot 1 fügt einen Knoten hinzu (am Block, den du ansiehst, oder an deinen Füßen beim Schleichen), der Redstone in Slot 2 entfernt den letzten Knoten, und der Lime Dye in Slot 8 speichert und beendet. Doppeltes Schleichen beendet ohne zu speichern. Knoten werden als Blöcke mit Partikelumriss angezeigt; schleiche und klicke auf einen Knoten, um ihn zu löschen. Ein Knoten ergibt einen Punktraum (Radius 0,5 Block), zwei eine Linie, drei oder mehr ein Polygon. Die vertikale Ausdehnung ergibt sich aus dem niedrigsten und dem höchsten Knoten plus verticalMargin.

Berechtigungen​

BerechtigungGewährt
typewriter.dungeon.adminJeden /typewriter dungeon-Befehl, einschließlich des Raum-Editors.

Spieler brauchen keine Berechtigung, um die Menüs zu verwenden.

Statistiken​

Dungeon zählt, was jeder Spieler während eines Durchlaufs tut, und speichert es für jedes Dungeon Artifact als 22 Statistiken. Die Zähler eines Durchlaufs werden während seiner Dauer gehalten, und jedes Mitglied wird einmal ausgezahlt, wenn es den Durchlauf verlässt oder dieser endet; nichts wird Schlag für Schlag auf die Platte geschrieben, und ein typewriter reload behält die Zähler laufender Durchläufe. Ein Dungeon, der sein Artifact mit einem anderen teilt, erweitert dieselben Statistiken.

SchlüsselEinheitInhalt
runs_startedAnzahlBegonnene Durchläufe, beim Start gezählt, auch wenn der Durchlauf verloren geht.
runs_completedAnzahlDurchläufe, die abgeschlossen wurden, während der Spieler noch dabei war.
best_timeDauerKürzeste Zeit eines abgeschlossenen Durchlaufs (ein Rekord: kein Wert vor dem ersten Abschluss).
runs_timed_outAnzahlDurchläufe, deren Zeitlimit ablief, während der Spieler noch dabei war.
runs_leftAnzahlDurchläufe, die der Spieler von sich aus verlassen hat oder deren Wiederverbindungsfrist ablief. Ein Tod, der den Spieler aus dem Durchlauf wirft, zählt hier nicht (er bleibt in deaths).
mob_killsAnzahlGetötete Mobs.
damage_dealtLebenSchaden an Mobs, so wie er wirklich Leben gekostet hat: Ein Treffer von 100 auf ein Ziel mit 2 Leben zählt 2.
damage_takenLebenErlittener Schaden, mit derselben Grenze (die Leben und Absorption, die der Spieler hatte).
deathsAnzahlTode.
time_playedDauerIn Durchläufen verbrachte Zeit.
completion_rateRateruns_completed im Verhältnis zu runs_started, beim Lesen berechnet und als Prozentwert geschrieben.
current_healthLebenAktuelle Leben des Spielers. Hat nur während eines Durchlaufs einen Wert: wird nie gespeichert.
best_run_killsAnzahlMeiste getötete Mobs in einem einzelnen Durchlauf (ein Rekord).
best_run_damageLebenHöchster Schaden in einem einzelnen Durchlauf (ein Rekord).
flawless_completionsAnzahlAbgeschlossene Durchläufe ohne einen Tod.
solo_completionsAnzahlAbgeschlossene Durchläufe, die mit einem Mitglied begannen.
best_time_soloDauerKürzeste Zeit eines abgeschlossenen Solo-Durchlaufs.
health_regainedLebenWirklich zurückgewonnene Leben, nie mehr als fehlte.
rooms_enteredAnzahlBetretene Räume; ein Raum, der in einem Durchlauf zweimal betreten wird, zählt einmal.
rooms_clearedAnzahlMit Dungeon Clear Room geleerte Räume, für die Mitglieder im Raum.
chests_openedAnzahlGeöffnete Beutetruhen, einmal pro Truhe für den Spieler, der ihre Beute erzeugt hat.
waves_clearedAnzahlGeleerte Wellen. Nur echte Wellen zählen: die Gruppen eines Dungeon Mob Spawn, die waves definieren.

Einheiten: Leben sind Lebenspunkte (ein Herz sind zwei), eine Dauer wird als mm:ss geschrieben, sofern die Snippets nichts anderes sagen, und eine Rate wird als Prozentwert geschrieben.

Was zählt:

  • Nur die Mitglieder eines aktiven Durchlaufs, in der Welt ihres Durchlaufs, in SURVIVAL oder ADVENTURE. Ein Spieler in CREATIVE oder SPECTATOR zählt für nichts, damit ein Admin, der zuschaut, keine Bestenliste anführen kann.
  • Welche Mobs zählen, bestimmt statsMobScope an der Dungeon Instance. MARKED_ONLY (Standard): nur die vom Durchlauf erzeugten Mobs (mit dungeon_mob_run markiert); die Teile eines sich teilenden Schleims zählen nie als Kills. ANY_MOB_IN_RUN_WORLD: auch die anderen Mobs der Welt des Durchlaufs, etwa ein Boss, den ein anderes Plugin gesetzt hat. Mit SHARED_WORLD_SLOTS, dessen Welt andere Durchläufe enthält, wird es abgelehnt: Dort gilt MARKED_ONLY, und beim Laden wird eine Warnung geschrieben.
  • Statistiken werden pro Artifact gezählt. Über mehrere Artifacts addieren die Summen die Zähler und behalten den besten Rekord; zwei Artifacts mit derselben artifactId sind eine Datei und zählen einmal.

Lies sie mit den Placeholdern, mit dem Fact Player Dungeon Statistic oder rangiere sie in einer GUI-Bestenliste mit einer Dungeon Leaderboard Source (GUI 0.20 oder neuer).

Placeholder​

PlaceholderAPI-Placeholder verwenden das Präfix %typewriter_dungeon_…%. Placeholder zum aktuellen Durchlauf liefern 0 oder einen leeren Wert, wenn der Spieler in keinem Durchlauf ist. Ausnahme: %typewriter_dungeon_stat_KEY% und seine _raw-Form werden nur während eines Durchlaufs aufgelöst; außerhalb bleiben sie unverändert stehen. Nur dungeon_total_KEY und dungeon_inst_ID_KEY funktionieren außerhalb eines Durchlaufs.

PlaceholderLiefert
%typewriter_dungeon_remaining%Verbleibende Sekunden im Durchlauf des Spielers.
%typewriter_dungeon_remaining_formatted%Verbleibende Zeit als mm:ss.
%typewriter_dungeon_players%Spieler im Durchlauf des Spielers.
%typewriter_dungeon_max%maxPartySize des Dungeons des Spielers.
%typewriter_dungeon_list%Namen der Spieler im Durchlauf, durch Kommas getrennt.
%typewriter_dungeon_player_N_name%Name des N-ten Spielers des Durchlaufs (ab 1).
%typewriter_dungeon_player_N_health%, …_maxhealth%, …_healthpercent%Leben, maximales Leben und Prozentsatz des N-ten Spielers.
%typewriter_dungeon_player_health_N%Name: Leben/Max des N-ten Spielers.
%typewriter_dungeon_lobby_time%Verbleibende Sekunden des Countdowns der Lobby des Spielers. Füge _formatted für mm:ss hinzu.
%typewriter_dungeon_attempts%, %typewriter_dungeon_completions%, %typewriter_dungeon_best%Durchläufe, Abschlüsse und Bestzeit des Spielers für den Dungeon, in dem er sich befindet.
%typewriter_dungeon_total_attempts%, …_total_completions%, …_total_ratio%Summen über alle Dungeons und der Abschlussprozentsatz.
%typewriter_dungeon_inst_ID_attempts%, …_completions%, …_best%Dieselben Statistiken für den Dungeon, dessen Entry-Id ID ist. Die Id darf keinen Unterstrich enthalten.
%typewriter_dungeon_stat_KEY%, …_stat_KEY_raw%Jede Statistik des Spielers, im Artifact des Dungeons, in dem er sich befindet. KEY ist der Schlüssel aus der Tabelle, zum Beispiel %typewriter_dungeon_stat_mob_kills%. _raw liefert die reine Zahl der Einheit (Millisekunden, Lebenspunkte, Promille), 0 wenn es keinen Wert gibt.
%typewriter_dungeon_total_KEY%, …_total_KEY_raw%Dieselbe Statistik über alle Dungeons.
%typewriter_dungeon_inst_ID_KEY%, …_inst_ID_KEY_raw%Dieselbe Statistik für den Dungeon, dessen Entry-Id ID ist.

current_health hat nur in dungeon_stat_current_health während eines Durchlaufs einen Wert. Eine Dauer wird mit dem Snippet content.dungeon_stats.duration_format geschrieben und ein fehlender Wert mit content.dungeon_stats.missing_value.

Die Statistiken stammen aus dem Dungeon Artifact, das im Feld artifact des Dungeons verknüpft ist. Dungeon schreibt sie selbst (Versuche, wenn ein Durchlauf startet, Abschlüsse und Bestzeit, wenn ein Durchlauf abgeschlossen wird). Die Bestzeit eines Spielers wird pro Artifact einmal gehalten, über alle Dungeons, die es teilen: Gib jedem Dungeon sein eigenes Artifact, wenn jeder seine eigene Bestzeit braucht. Die Statistiken werden pro MMOProfiles-Profil gespeichert, wenn dieses Plugin installiert ist, sonst pro Spieler. Es gibt nichts zu konfigurieren.

Entries​

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

Aktionen9
Ereignisse6
Fakten4
Zielgruppen1
Entitäten1
Gruppen1
Artefakte4
Manifeste13

Fehlerbehebung​

Das Menü öffnet sich nicht. Die GUI-Erweiterung fehlt, oder mainLayoutId entspricht nicht der id eines Layouts in layoutPool. Installiere GUI und prüfe dann die Id.

Dungeons erscheinen nicht im globalen Menü. Das Layout hat kein Item mit buttonType auf DUNGEON_INSTANCE_SLOT, oder die Marker liegen in einem anderen Layouttyp als simple, paginated oder scrollable.

Ein Button tut nichts oder sieht nicht wie ein Button aus. buttonType unterscheidet Groß- und Kleinschreibung und muss DUNGEON_FIND_PARTY, DUNGEON_INFO, DUNGEON_INSTANCE_SLOT, DUNGEON_LOBBY_SLOT, DUNGEON_READY, DUNGEON_LEAVE oder DUNGEON_AUTO_FILL sein. Ein globaler Button im Party-Menü oder umgekehrt wird ignoriert.

Ein Dungeon wird als gesperrt angezeigt. Die criteria seines Slots in der Kategorie treffen auf diesen Spieler nicht zu. Prüfe sie anhand der Facts des Spielers oder leere die Liste.

Ein Klick auf einen Dungeon gibt nichts aus, und kein Menü öffnet sich. Kein Party-Menü bedient den Dungeon. Suche im Serverlog nach No dungeon_party_menu serves und erstelle dann eines mit leerem dungeonInstance oder eines, das den Dungeon nennt.

„The dungeon cannot be started on this server.“ Der Isolationsmodus des Dungeons kann hier nicht laufen (zum Beispiel SLIME_CLONE ohne Advanced Slime Paper), oder er kann keinen generierten Dungeon aufnehmen. Es gibt keinen Fallback auf einen anderen Modus. Siehe Durchläufe und Weltisolation.

„The group has N player(s): this dungeon needs X to Y.“ Die Lobby oder der Befehl enter wurde mit einer Gruppe außerhalb von minPartySize bis maxPartySize verwendet. Ein Admin kann in einer Lobby force-start verwenden.

„All the runs of this dungeon are taken.“ maxSimultaneousInstances Durchläufe sind bereits aktiv.

Spieler kommen in einer leeren neuen Welt an. templateWorld entspricht keinem Weltordner im Stammverzeichnis des Servers. Das Log meldet Cannot teleport player … world '…' not found, wenn die Welt gar nicht geladen werden kann.

Spieler werden ständig aus dem Durchlauf geworfen. Das Verlassen der Welt des Durchlaufs, auch per Befehl, entfernt den Spieler daraus. Verlässt der letzte Spieler, endet der Durchlauf.

Eine durch Loot Chest Trigger ausgelöste Loot-Truhe kommt nie zurück. Der Standard-triggerMode ONCE gilt einmal pro Durchlauf. Verwende REPEATABLE, um sie im selben Durchlauf mehrfach auszulösen. Der nächste Durchlauf beginnt sauber.

Ein NPC erscheint nie. In einem generierten Dungeon erscheint der NPC nur über einen NPC-Marker eines Raums des Durchlaufs. Prüfe in einem festen Dungeon allowedDungeonIds und spawnLocation. Siehe Entities in Dungeons.

Ein Raum ist frei von Mobs, obwohl kein Mob lebt. Das Limit maxAliveMobs kann einige zurückgehalten haben, und ein Reload lässt die Erweiterung neu zählen. Verwende Dungeon Mobs Alive nicht, um zu entscheiden, dass ein Raum geleert ist: Verwende das Mob-Death-Event.