Zum Hauptinhalt springen

Puzzle

Neun Rätseltypen mit clientseitigen Spielfeldern, Timern, Versuchen, Ketten und Fakten.

Kostenlosv0.6Quests & Story
BenötigtTypeWriter0.9Basic (TypeWriter extension)

Überblick​

Puzzle verwandelt einen Ort in deiner Welt in ein lösbares Rätsel. Du wählst eine von neun Mechaniken: Blöcke in Löcher schieben, eine Abfolge wiederholen, Hebel in der richtigen Reihenfolge umlegen, Laserstrahlen umlenken und mehr. Jedes Rätsel ist ein Audience-Entry, den du im Web-Panel platzierst. Es meldet sein Ergebnis über Trigger (onStart, onComplete, onFail, onTimeout, onLifespanExpire) und einen optionalen Fact an den Rest von TypeWriter.

Der Großteil des Spielfelds wird clientseitig gezeichnet: Blöcke, Hervorhebungen, Vorschauen und Laserpartikel sind Pakete, die an den Spieler gesendet werden, der das Rätsel löst. Zwei Spieler können also am selben Spielfeld arbeiten, ohne den Fortschritt des anderen zu sehen. Einige Mechaniken berühren die Welt tatsächlich: Das Item-Frame-Rätsel dreht einen echten Item Frame, und das Muster-Rätsel platziert echte Blöcke, sofern ghostBlocks nicht aktiviert ist.

Ein Rätsel gehört zu dem Ort, an dem du es gebaut hast. Es läuft nur für einen Spieler, der sich in der Welt seiner Positionen befindet, im Umkreis von activationRadius Blöcken um eine davon. Das Erreichen des Spielfelds startet eine Sitzung; wer sich entfernt, beendet sie und löscht das clientseitige Spielfeld.

Funktionen​

  • Neun Rätseltypen — Blockschieben, Merkfolge, Laser-Raster, Hebelreihenfolge, Musterplatzierung, kooperative Druckplatten, Item Frame, Zahlenschloss und Opfergabe auf einem Podest.
  • Gemeinsamer Ablauf — Zeitlimit, maximale Fehlversuche, Cooldown nach Fehlern, Lebensdauer, Hinweise und eine Abschlussnachricht bei jedem Rätsel.
  • Trigger überall — Start, Abschluss, Fehlschlag, Timeout und Ablauf der Lebensdauer können jeweils einen TypeWriter-Entry starten.
  • Fact-Belohnung — ein Fact wird um amount erhöht, wenn das Rätsel gelöst wird.
  • Rätselketten — mehrere Rätsel der Reihe nach ausführen und auf die gesamte Kette reagieren.
  • Räumliche Begrenzung — eine Weltprüfung und ein Aktivierungsradius verhindern, dass ein Spielfeld in einer anderen Dimension oder weit entfernt erscheint.
  • Statistiken — Versuche, Lösungen und Bestzeit pro Spieler, mit einem Bestenlisten-Befehl.
  • Status-Facts — lies aus, ob ein Rätsel für einen Spieler gelöst oder aktiv ist.
  • Folia-sicher — Weltzugriffe laufen in der Region, der das Rätsel gehört.

Installation​

  1. Installiere die offizielle TypeWriter-Erweiterung Basic, die die von den Rätseln genutzten gemeinsamen Typen bereitstellt (Sounds, Items, Variablen).
  2. Lege die Puzzle-JAR in plugins/Typewriter/extensions/ ab und starte den Server neu.
  3. Optional: Füge deinen Pages einen Puzzle Artifact-Entry hinzu, wenn Versuche, Lösungen und Bestzeiten gespeichert werden sollen (siehe die Warnung unter Konfiguration).

Erste Schritte​

Baue ein Türrätsel mit drei Hebeln:

  1. Öffne im TypeWriter-Web-Panel eine Manifest-Page und füge einen Lever Order-Entry hinzu.
  2. Füge in levers drei Hebel hinzu. Erfasse für jeden im Spiel die position eines Hebelblocks und setze orderIndex auf 0, 1 und 2, die Reihenfolge, in der der Spieler sie umlegen muss.
  3. Setze amount auf 3, damit der Hinweis 1/3, 2/3, 3/3 lautet. Aktiviere resetOnWrong und setze cooldownOnFail auf 5, wenn du nach einem Fehler eine Pause möchtest.
  4. Verknüpfe onComplete mit einer Sequence, die die Tür öffnet, und fact mit einem cachefähigen Fact, der die Belohnung speichert. Dieser Fact ist außerdem der verlässliche Weg, sich zu merken, dass das Rätsel gelöst wurde.
  5. Optional kannst du das Rätsel unter einen Audience-Filter wie eine Quest-Audience stellen, damit es nur für die richtigen Spieler läuft.
  6. Veröffentliche, starte die Erweiterung neu oder lade sie neu und geh zu den Hebeln. Werden sie in der richtigen Reihenfolge umgelegt, ist das Rätsel gelöst. Ein falscher Hebel setzt die Hebelzustände zurück und löst onFail aus.
Neue Rätsel

Puzzle-Entries werden beim Laden der Erweiterung registriert. Lade TypeWriter nach dem Hinzufügen eines Rätsels neu oder starte neu, bevor du /typewriter puzzle start verwendest.

Funktionsweise​

Sitzungen. Eine Sitzung startet, wenn der Spieler den Radius betritt. Sie setzt Fortschritt, Fehlversuche und den Fehlschlag-Cooldown zurück, startet timeLimit und lifespan und löst onStart aus. maxAttempts ist also ein Budget pro Sitzung: Ein Spieler, dem die Versuche ausgehen, kann weggehen und wiederkommen. Ein Rätsel, das ein Spieler bereits gelöst hat, wird für ihn nie wieder geöffnet.

Ein gelöstes Puzzle ist inaktiv. Hat ein Spieler ein Block Push, Combination Lock, Lever Order oder Laser Grid gelöst, zeichnet es für ihn kein Brett mehr und bricht seine Interaktionen nicht mehr ab, auch wenn er wieder in sein Publikum gelangt (ein flackernder Filter, ein erneuter Beitritt). Hebel und Knöpfe eines gelösten Puzzles verhalten sich wie gewöhnliche Blöcke, und ein gelöstes Pedestal schluckt das Aufheben seines Items nicht mehr.

Abgebrochene Klicks. Der Server beantwortet einen abgebrochenen Klick mit dem echten Zustand des angeklickten Blocks, was einen clientseitig gezeichneten Block löschen würde. Das Brett wird daher einen Tick nach jedem abgebrochenen Klick neu gezeichnet (Memory-Knöpfe, Pattern-Raster, abgelehnte Platzierungen, abgelehnte Schübe) und auch, wenn ein Spieler mit Linksklick einen gezeichneten Spiegel oder Hebel trifft.

Der Abschluss wird nur einmal ausgelöst. Das Schreiben des Facts, die Abschlussnachricht, onComplete und der Ketten-Fortschritt entstehen aus einem einzigen akzeptierten Ergebnis, sodass ein wiederholter Klick sie nicht doppelt auslösen kann.

Fortschritt. Jeder richtige Schritt erhöht den Fortschritt um eins, bis höchstens amount. {progress} und {total} in hintMessage zeigen den Fortschritt und amount. Die Rätsel setzen amount nicht aus ihrer eigenen Größe, gib also die tatsächliche Anzahl der Schritte selbst ein.

Gemeinsame Optionen​

Jedes Rätsel hat diese Felder.

FeldBedeutung
factEin cachefähiger Fact, der um amount erhöht wird, wenn das Rätsel gelöst wird.
amountMaximaler Fortschritt und die Belohnung, die zum Fact addiert wird.
timeLimitSekunden, bis das Rätsel abläuft. 0 deaktiviert es.
cooldownOnFailSekunden, die der Spieler nach einem Fehlschlag warten muss.
maxAttemptsErlaubte Fehlversuche pro Sitzung. 0 deaktiviert das Limit.
resetOnWrongOb ein falscher Schritt den Fortschritt löscht.
showHints, hintMessageEin Chat-Hinweis nach jedem Schritt, mit {progress} und {total}. Leer sendet nichts.
completionMessageWird einmal gesendet, wenn das Rätsel gelöst ist. Leer schaltet sie ab. Der Standardwert ist <green>Puzzle completed!.
onStart, onComplete, onFail, onTimeout, onLifespanExpireEntries, die für den Spieler ausgelöst werden.
lifespanSekunden, bis das Rätsel für den Spieler abläuft, egal was er tut. 0 deaktiviert es.
activationRadiusBlöcke um die Rätselpositionen. 0 entfernt die Abstandsprüfung, die Weltprüfung gilt aber immer. Der Standardwert ist 16.
criteriaBedingungen, die ein Spieler erfüllen muss, um am Rätsel teilzunehmen.

Geteilte Rätsel​

Ist isShared aktiviert und hat der fact des Rätsels eine Gruppe (Party, Team), spielt die Gruppe ein gemeinsames Rätsel: Jeder Schritt, Fehler und Cooldown eines Spielers wird auf die Online-Spieler dieser Gruppe kopiert. Das erste Mitglied, das es löst, löst es für die Gruppe: Der Fact wird einmalig um amount erhöht, und jedes Mitglied erhält die Abschlussnachricht, onComplete und den Ketten-Schritt einmal. Ein abwesendes Mitglied erhält sie bei seiner Rückkehr. Ein Spieler erhält den Abschluss eines Rätsels höchstens einmal, auch wenn er die Gruppe wechselt; nur ein Admin-Reset, der ihn betrifft, lässt ihn den Abschluss erneut erhalten.

  • Die Lösung wird pro Gruppe gespeichert. Sterben oder Neuverbinden setzt sie nicht zurück und belohnt nichts erneut, anders als bei einem Solo-Rätsel, das nach einem Tod oder einer Trennung wieder spielbar ist.
  • Statistiken und das Spielfeld jedes Spielers bleiben persönlich. Ohne Gruppe am fact, oder für einen Spieler, der keiner Gruppe angehört, wird nichts geteilt. Coop Pressure ignoriert isShared: Es schließt das Rätsel bereits für jeden Teilnehmer ab.
  • Um es erneut zu spielen, verwende /typewriter puzzle admin reset <player> <id>; das öffnet das Rätsel für die ganze Gruppe dieses Spielers wieder.
Ein Puzzle Artifact ist erforderlich

Die Gruppenlösung wird im Puzzle Artifact gespeichert. Ohne es existiert der Eintrag nur im Speicher: Nach einem Serverneustart kann die Gruppe das Rätsel erneut lösen und wird erneut bezahlt. Füge das Artifact hinzu, bevor du isShared verwendest. Auch die Rückkehr zu einem älteren Build der Extension verliert den geteilten Eintrag, weil dieser Build das Artifact ohne ihn speichert, und die Belohnungen werden erneut gezahlt. Die Lösung wird beim nächsten Speichern geschrieben (alle 30 Sekunden): Ein Absturz in diesem Zeitfenster kann sie verlieren.

Rätseltypen​

EntryWas der Spieler tutWichtigste Felder
Block PushMit Links- oder Rechtsklick einen Block um einen Block in Blickrichtung des Spielers schieben, bis jedes Zielloch gefüllt ist.pushBlocks, targetHoles (mit acceptedMaterial), blockMaterial, holeMaterial. Die Anzahl der Blöcke muss der Anzahl der Löcher entsprechen. allowPull hat keine Wirkung (Ziehen ist noch nicht implementiert).
Memory SequenceZusehen, wie Buttons aufleuchten, und sie dann in derselben Reihenfolge anklicken. Die Abfolge ist für jede Sitzung zufällig.buttons (mindestens 2), sequenceLength, highlightDuration, stepGap, inputDelay (Ticks), highlightMaterial.
Laser GridSpiegel per Rechtsklick drehen, bis jeder Empfänger von einem Strahl seiner Farbe getroffen wird.emitters (Farbe, Richtung), mirrors (rotatable, initialDirection), receivers (requiredColor), maxReflections, maxBeamLength, beamDensity.
Lever OrderHebel per Rechtsklick in der Reihenfolge ihres orderIndex umlegen. Ein falscher Hebel setzt alle zurück.levers (position, orderIndex).
Pattern PlacementBlöcke auf einem Raster platzieren, um ein Muster nachzubilden.pattern, gridOrigin, columns, previewOffsetY, ghostBlocks, tolerance.
Coop PressureMehrere Spieler stehen auf verschiedenen Platten und halten einige Sekunden durch.plates, requiredPlayers, holdDuration (Sekunden).
Item FrameEin Item in einen vorhandenen Item Frame legen und ihn dann auf den Zielwinkel drehen.frameTargets (correctRotation 0 bis 7, requiredItem), checkItem.
Combination LockZiffernblöcke in der Reihenfolge eines Codes anklicken.digits (Positionen), code (Ziffernindizes, ab 0 gezählt).
PedestalDen Podestblock mit einem Item in der Hand rechtsklicken oder das Item in der Nähe droppen oder aufheben.targetPosition, requiredItem, consumeItem, pickupRadius, consumeDroppedItem.

Details zu den einzelnen Typen:

  • Laser Grid. Ein Strahl beginnt einen Block vom Emitter entfernt und verläuft geradeaus. Ein Spiegel lenkt ihn in die Richtung, in die der Spiegel zeigt. Ein Rechtsklick auf einen Spiegel setzt seine Richtung auf das Gegenteil der angeklickten Seite oder dreht ihn im Uhrzeigersinn, wenn du seine Ober- oder Unterseite anklickst. Ein fester Block stoppt den Strahl. Das Rätsel ist gelöst, wenn jeder Empfänger von einem Strahl seiner requiredColor getroffen wird. Strahlen werden mit Partikeln dargestellt. Ein Spiegel verschwindet beim Rechtsklick nicht: Das Brett wird nach dem Klick neu gezeichnet. Die Strahlen werden durch die Blockmitte gezeichnet und knicken genau auf jedem Spiegel ab; beamDensity ist die Anzahl Partikel pro Block. Ein Strahl ist höchstens maxBeamLength Blöcke lang (Standard 64; 0 oder weniger bedeutet 64, nie unbegrenzt) und lädt nie einen Chunk: Er endet am Rand der geladenen Welt. Ein Spielfeld mit längerem Strahl muss maxBeamLength erhöhen.
  • Block Push. Jeder Schub bewegt einen Block eine Zelle in die Blickrichtung des Spielers. Ein Block, der auf seine Startzelle zurückgeschoben wird, wird dort immer akzeptiert, und ein Zielloch wird wieder gezeichnet, sobald ein Block darüber hinweggeschoben wurde. Lasse die Startzellen in der Welt leer (Luft). Ein echter Block dort ist beim Client verborgen, bleibt für den Server aber fest, sodass niemand darauf stehen kann. Ein abgelehnter Schub (Wand, anderer Block) zählt einen Fehlversuch pro Block und Zielzelle, bis ein Schub gelingt: Wer den Klick gegen eine Wand gedrückt hält, verbraucht maxAttempts nicht.
  • Lever Order. Ein Hebel ruht in dem Zustand, den er in der Welt hat, wenn der Spieler das Brett erreicht, wird von dort umgelegt und durch einen Reset oder nach falscher Reihenfolge in diesen Zustand zurückversetzt, auch wenn er eingeschaltet ruht. Ein Klick während des Fehler-Cooldowns erreicht keinen echten Hebel.
  • Combination Lock. Die Nummerierung beginnt bei 0: Die erste in digits aufgeführte Position ist Ziffer 0, die zweite Ziffer 1 und so weiter. code listet diese Indizes in der Klickreihenfolge auf. Beispiel: Bei vier Knöpfen in digits bedeutet der Code [2, 0, 3]: dritter Knopf, erster Knopf, vierter Knopf. Ein code-Wert außerhalb der Ziffern lässt das Schloss jeden Druck ignorieren; das Server-Log nennt den fehlerhaften Wert.
  • Pattern Placement. pattern listet die Materialien Zeile für Zeile auf, columns breit, und seine Länge muss ein Vielfaches von columns sein. Das Raster liegt auf der horizontalen Ebene auf der Y-Höhe von gridOrigin, mit Spalten entlang X und Zeilen entlang Z. Eine Vorschau schwebt previewOffsetY Blöcke darüber. Bei aktiviertem ghostBlocks wird eine durchscheinende Version direkt auf dem Raster gezeichnet, und korrekte Blöcke werden clientseitig angezeigt, wobei das Item dem Spieler abgenommen wird. Eine falsche Platzierung wird immer abgebrochen. tolerance ist die Anzahl falscher Platzierungen, die erlaubt sind, bevor der Fortschritt zurückgesetzt wird.
  • Coop Pressure. Eine Platte zählt, wenn die Füße eines Spielers auf diesem Block oder auf dem Block darüber stehen. Ein Spieler pro Platte. Alle Spieler der Audience nehmen teil, füge sie also mit /typewriter puzzle join <entry id> hinzu. Wenn die Platten holdDuration lang gehalten wurden, schließt jeder Teilnehmer das Rätsel ab.
  • Item Frame. Der Rahmen muss an der konfigurierten Position bereits existieren; das Rätsel erzeugt nie einen. Ein leerer Rahmen akzeptiert nur das requiredItem, das aus der Hand des Spielers genommen wird. Jeder Klick auf einen gefüllten Rahmen dreht ihn um einen Schritt (45 Grad), und correctRotation ist die Schrittzahl von 0 bis 7, bei der er korrekt steht. Der Rahmen ist eine echte Entity, die Drehung ist also für alle sichtbar.
  • Pedestal. Das requiredItem kann per Rechtsklick abgegeben oder im Umkreis von pickupRadius Blöcken um das Podest gedroppt werden. Ein gedropptes passendes Item wird entfernt, wenn consumeDroppedItem aktiviert ist.

Befehle​

Alle Befehle sind Unterbefehle von /typewriter (Alias /tw). <id> ist die Entry-ID eines Rätsels. Nur admin-Befehle benötigen eine Berechtigung.

BefehlBeschreibung
/typewriter puzzleÖffnet das Chat-Menü des ersten Puzzle-Menu-Entries oder meldet, dass keiner existiert.
/typewriter puzzle listListet die registrierten Rätsel und ihre Typen auf.
/typewriter puzzle start <id>Fügt dich der Audience eines Rätsels hinzu. Der Befehl lehnt ab, wenn du es bereits gelöst hast.
/typewriter puzzle join <id>Tritt einem Rätsel bei, das bereits läuft, zum Beispiel einem Koop-Rätsel.
/typewriter puzzle chain <id>Startet eine Rätselkette über ihre Entry-ID oder ihren Namen.
/typewriter puzzle statusZeigt deinen Zustand bei jedem Rätsel: aktiv, abgeschlossen, gestoppt oder inaktiv.
/typewriter puzzle leaderboard <id>Zeigt deine Statistiken und die zehn besten Spieler eines Rätsels.
/typewriter puzzle stop [id]Stoppt ein Rätsel oder alle deine aktiven Rätsel und setzt deren Fortschritt zurück.
/typewriter puzzle closeSchließt dein geöffnetes Inventar.
/typewriter puzzle admin reset <player> <id>Setzt den Zustand eines Spielers bei einem Rätsel zurück und startet es neu. Bei einem geteilten Rätsel wird es für die ganze Gruppe des Spielers wieder geöffnet.
/typewriter puzzle admin reloadLöscht alle Laufzeitzustände und Ketten.

Berechtigungen​

BerechtigungGewährt
puzzle.adminDie Befehle /typewriter puzzle admin.

Konfiguration​

Persistenz. Ohne Puzzle Artifact wird nichts gespeichert. Mit einem speichert die Erweiterung den Zustand und die Statistiken alle 30 Sekunden und beim Herunterfahren und lädt sie beim Start. Erstelle genau ein Artifact und behalte seine generierte artifactId. Das Artifact ist für geteilte Rätsel erforderlich (siehe Geteilte Rätsel).

Was eine Trennung übersteht

Wenn ein Spieler die Verbindung trennt, wird sein Rätselzustand aus dem Speicher entfernt, und die nächste Speicherung enthält ihn nicht. Die Statistiken bleiben erhalten. Um ein gelöstes Rätsel dauerhaft zu merken, setze das fact des Rätsels und lies diesen Fact in deinen Criteria aus. Puzzle Solved Fact spiegelt nur den Zustand im Speicher wider. Ein geteiltes Rätsel ist die Ausnahme: Seine Lösung gehört der Gruppe und wird im Artifact gespeichert.

Nachrichten. Kein im Spiel angezeigter Text ist im Code festgelegt. Texte, die zu einem Rätsel gehören, sind Felder seines Eintrags; die Antworten der Befehle und die beiden Nachrichten, die sich alle Rätsel teilen, sind Snippets. Siehe Anpassbare Texte.

Anpassbare Texte​

Die Texte sind MiniMessage, du kannst sie also umformulieren, übersetzen oder umfärben. Ein {name} in einem Text wird durch den in den Tabellen unten genannten Wert ersetzt; ein Platzhalter, den es nicht gibt, bleibt unverändert stehen. PlaceholderAPI-Platzhalter (%...%) werden für den Spieler aufgelöst, der den Text erhält. Nur das Log der Server-Konsole bleibt fest auf Englisch.

Felder der Einträge​

Diese Felder liegen am Eintrag im Web-Panel. Jedes ist ein Text pro Spieler und akzeptiert daher Variablen; ein leerer Wert sendet nichts. Bestehende Pages behalten die Texte, die sie bereits speichern; die Standardwerte unten gelten für neue Einträge und für Pages, die das Feld nie gespeichert haben.

EintragFeldStandardwertPlatzhalter
Jedes RätselhintMessageDer Hinweis jedes Rätseltyps, zum Beispiel <yellow>Repeat the sequence! {progress}/{total}.{progress}, {total}
Jedes RätselcompletionMessage<green>Puzzle completed!keine
Puzzle MenutitleText<gold><bold>Puzzles</bold> <gray>-keine
Puzzle MenupuzzleLineText<green>{puzzle} <gray>- <aqua>click to start{puzzle}, die Eintrags-ID des Rätsels
Puzzle MenufooterText<gray>Use <white>/typewriter puzzle stop<gray> to stop all active puzzles.keine
Memory SequencememorizeMessage<gold>Memorize the sequence…keine
Memory SequenceyourTurnMessage<green>Your turn! <white>{progress}/{total}{progress}, {total}
Memory SequencestepCorrectMessage<green>Well done! <white>{progress}/{total}{progress}, {total}
Lever OrderwrongOrderMessage<red>Wrong order — the levers have been reset.keine
Pattern PlacementprogressMessage<green>Pattern <white>{progress}/{total}{progress}, {total}
Item FramemissingFrameMessage<red>No item frame at <white>{x} {y} {z}{x}, {y}, {z}
Item FramewrongItemMessage<red>That is not the right item in the frame.keine
Item FrameinsertingMessage<gray>Inserting the item…keine
Item FramemissingItemMessage<yellow>First place the requested item in the frame.keine
Item FrameitemPlacedMessage<green>Item placed — rotate the frame.keine
Item FramerotationMessage<gray>Rotation {current}/{total}{current}, {total}

hintMessage, completionMessage und die Felder des Chat-Menüs werden im Chat gesendet; die übrigen Felder erscheinen in der Actionbar. Einige dieser Standardwerte waren in früheren Versionen französisch; jetzt sind sie englisch, und eine Page, die den französischen Text gespeichert hat, behält ihn.

Snippets​

Alles, was die /typewriter puzzle-Befehle ausgeben, die Admin-Befehle eingeschlossen, und die beiden Nachrichten, die sich alle Rätsel teilen, ist ein TypeWriter-Snippet. Öffne plugins/Typewriter/snippets.yml, suche den Schlüssel unter content.puzzle, ändere den Wert und führe /tw reload aus. Die Erweiterung registriert beim Start alle ihre Snippets mit dem Standardtext, sie erscheinen also nach dem ersten Start in der Datei.

Snippet (unter content.puzzle.)StandardwertPlatzhalter
command.no_menu<red>No puzzle menu configured.keine
command.list.none<red>No puzzles configured.keine
command.list.header<gold>=== Available Puzzles ===keine
command.list.line<green>{puzzle} <gray>- {type}{puzzle}, {type}
command.puzzle_not_found<red>Puzzle not found: <white>{puzzle}{puzzle}
command.start.already_completed<yellow>Puzzle already completed. Use <white>/typewriter puzzle admin reset {player} {puzzle}<yellow> to replay it.{player}, {puzzle}
command.start.started<green>Starting puzzle: <white>{type}{type}
command.join.already_completed<yellow>Puzzle already completed for you: <white>{puzzle}{puzzle}
command.join.joined<green>Joined puzzle: <white>{type}{type}
command.stop.not_active<gray>Puzzle is not active: <white>{puzzle}{puzzle}
command.stop.stopped<yellow>Stopped puzzle: <white>{puzzle}{puzzle}
command.stop.all_none<gray>No active puzzle.keine
command.stop.all_stopped<yellow>Stopped <white>{count} <yellow>puzzle(s).{count}
command.status.header<gold>=== Puzzle Status ===keine
command.status.line<gray>{puzzle}: {status} <dark_gray>progress={progress}{puzzle}, {status}, {progress}
command.status.active<green>ACTIVEkeine
command.status.completed<aqua>COMPLETEDkeine
command.status.stopped<yellow>STOPPEDkeine
command.status.inactive<gray>INACTIVEkeine
command.chain.not_found<red>Chain not found: <white>{chain}{chain}
command.chain.invalid<red>Chain is invalid or contains unresolved puzzles: <white>{chain}{chain}
command.chain.empty<red>Chain has no resolvable puzzle entries.keine
command.chain.started<green>Starting puzzle chain: <white>{chain}{chain}
command.leaderboard.header<gold>=== Puzzle Stats: <white>{puzzle} <gold>==={puzzle}
command.leaderboard.attempts<gray>Attempts: <white>{attempts}{attempts}
command.leaderboard.solves<gray>Solves: <white>{solves}{solves}
command.leaderboard.best_time<gray>Best time: <white>{seconds}s{seconds}
command.leaderboard.rows_header<gold>--- Leaderboard ---keine
command.leaderboard.row<gray>#{rank} <white>{player} <gray>- <white>{solves} solves{rank}, {player}, {solves}
command.leaderboard.row_timed<gray>#{rank} <white>{player} <gray>- <white>{solves} solves <gray>{seconds}s{rank}, {player}, {solves}, {seconds}
command.admin.reset.player_not_found<red>Player not found: <white>{player}{player}
command.admin.reset.done<green>Reset puzzle <white>{puzzle} <green>for <white>{player}{puzzle}, {player}
command.admin.reset.done_group<green>Reset puzzle <white>{puzzle} <green>for <white>{player} <green>and its group (<white>{count}<green> online){puzzle}, {player}, {count}
command.admin.reload.done<green>Puzzle runtime states cleared.keine
play.cooldown_wait<red>Puzzle on cooldown — <white>{seconds}s{seconds}
play.max_attempts<red>Too many mistakes — restart the puzzle to try again.keine

{type} ist der Name des Rätseltyps (Memory Sequence, Lever Order, ...) und {status} eines der vier command.status.*-Snippets, beide behalten also ihre Farben. Jeder andere Platzhalter ist einfacher Text: Was ein Spieler in einem Befehl eingibt, kann der Antwort keine Formatierung hinzufügen.

Entries​

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

Aktionen1
Fakten2
Zielgruppen9
Artefakte1
Weitere Einträge1

Fehlerbehebung​

Das Spielfeld erscheint nicht. Du musst dich in der Welt der Rätselpositionen und im activationRadius einer davon befinden. Positionen, die auf 0, 0, 0 stehen, werden ignoriert, ein Rätsel ohne gesetzte Positionen hat also keinen Ankerpunkt.

Beim Klicken passiert nichts. Prüfe, ob du in der Audience bist (die Criteria müssen zutreffen, und ein Audience-Filter muss dich einschließen) und ob das Rätsel für dich nicht bereits gelöst ist: Verwende /typewriter puzzle status und /typewriter puzzle admin reset <player> <id>, um es erneut zu spielen. Klicks während des Fehlschlag-Cooldowns werden ignoriert; die Actionbar zeigt die verbleibende Zeit.

/typewriter puzzle start meldet, das Rätsel sei nicht gefunden. Rätsel werden beim Laden der Erweiterung über ihre Entry-ID registriert. Lade nach dem Hinzufügen eines Rätsels neu und verwende die Entry-ID, nicht den Namen.

Das Memory-Rätsel startet nie. buttons benötigt mindestens 2 Einträge, und jeder braucht eine Position.

Das Muster-Rätsel ignoriert meine Blöcke. pattern muss eine Länge haben, die ein Vielfaches von columns ist, und du musst Blöcke auf dem Raster auf der Y-Höhe von gridOrigin platzieren. Ein falsches Material wird abgebrochen.

Das Item-Frame-Rätsel meldet, es gebe keinen Rahmen. Platziere zuerst einen Item Frame an der konfigurierten Position. Das Log gibt außerdem eine Warnung mit den Koordinaten aus.

Der Fortschritt geht nach dem Wiederverbinden verloren. Siehe die Warnung unter Konfiguration: Verwende fact, um das Ergebnis zu behalten.

Ein Koop-Rätsel wird nie abgeschlossen. Jeder Spieler muss in der Audience sein (/typewriter puzzle join <id>), auf einer anderen Platte stehen und dort holdDuration lang bleiben. Auf Platten gedroppte Items zählen nicht.