CannonRTP-Nachrichten und -Titel
Alle spielerseitigen Zeichenketten liegen in plugins/CannonRTP/messages.yml und sind vollständig überschreibbar. Jeder Wert unterstützt MagmaCore-Gradienten (<gradient:#start:#end>...</gradient>), MiniMessage-Tags und ältere &-Farbcodes. Der Platzhalter $prefix in jeder Nachricht wird durch den konfigurierten Wert von prefix ersetzt.
Release 1 liefert nur Englisch; der Schlüssel language in config.yml existiert, damit zukünftige Übersetzungspakete ihn ansprechen können.
Präfix und Hilfe-Kopfzeile
| Schlüssel | Platzhalter | Standard | Beschreibung |
|---|---|---|---|
prefix | -- | <gradient:#ff9a3d:#ffd166>CannonRTP</gradient> &8| | Präfix, das über $prefix in jede Nachricht eingefügt wird |
helpHeader | $prefix | $prefix &fCannonRTP commands: | Begrüßungszeile, die oben in /cannonrtp, /wc help und /wc list / /wc status ausgegeben wird |
Chat-Nachrichten
| Schlüssel | Platzhalter | Beschreibung |
|---|---|---|
createdCannon | $prefix, $cannon, $id, $path | Wird nach erfolgreichem /wc create gesendet |
placedCannon | $prefix, $cannon | Wird nach erfolgreichem /wc place gesendet |
removedCannon | $prefix, $cannon | Wird nach erfolgreichem /wc remove gesendet |
deletedCannon | $prefix, $cannon | Wird nach erfolgreichem /wc delete gesendet |
targetWorldUpdated | $prefix, $cannon, $world | Wird nach erfolgreichem /wc target gesendet |
searchCenterUpdated | $prefix, $cannon | Wird nach erfolgreichem /wc center gesendet |
reload | $prefix, $count | Wird gesendet, wenn Befehle zur Kanonenbearbeitung die Platzierungen neu aufbauen. /wc reload lädt das gesamte Plugin neu und verwendet die gemeinsame Abschlussmeldung von MagmaCore. |
noPermission | $prefix, $cannon | Wird gesendet, wenn ein Spieler in eine Kanone tritt, für die ihm requiredPermission fehlt (gedrosselt auf einmal alle 3 Sekunden pro Spieler und Kanone) |
launchCooldown | $prefix, $cannon, $seconds, $unit | Wird gesendet, wenn ein Spieler eine beliebige Kanone betritt, bevor die Abklingzeit seines angenommenen Starts abgelaufen ist. $seconds wird aufgerundet; $unit ist second oder seconds. Die Benachrichtigungen sind auf einmal alle 3 Sekunden pro Spieler und Kanone gedrosselt. |
cannonDisabled | $prefix, $cannon | Reserviert. Deaktivierte Kanonen werden vollständig aus der Tick-Schleife ausgeschlossen, daher sendet der aktuelle Build diese Nachricht nie -- der Schlüssel wird zwar in messages.yml geschrieben, aber von nichts gelesen. |
queueCalibration | $prefix, $cannon, $queued, $target, $attempts | Wird gesendet, während eine Kanone noch vorlädt und ein Spieler hineintritt. In dieser Nachricht ist $target chargedLocationsPerCannon; $attempts ist das verbleibende Suchversuchs-Budget, bevor die Kanone erschöpft ist |
noValidLocationYet | $prefix, $cannon | Rückfall für eine Kanone, deren Warteschlange im Moment des Starts leer ist. Der aktuelle Build prüft zuerst die Warteschlange und sendet stattdessen queueCalibration oder noValidLocationFound, daher erscheint diese Nachricht normalerweise nicht. |
noValidLocationFound | $prefix, $cannon, $reason | Wird gesendet, wenn ein Spieler eine Kanone betritt, deren Warteschlange leer ist, nachdem sie die Suche aufgegeben hat (sie hat searchTimeoutAttempts ausgeschöpft, oder eine Schutz-Integration konnte nicht geladen werden). $reason nennt die in diesem Suchfenster aufgetretenen Ablehnungskategorien, ohne Anzahlen oder Rangfolge nach Häufigkeit. |
invalidConfiguration | $prefix, $cannon, $reason | Wird gesendet, wenn ein Konfigurationsfehler erkannt wird (z. B. nicht geladene Zielwelt) |
statusLine | $prefix, $cannon, $status, $queued, $target, $reason | Zeilenformat, das für jede Zeile von /wc list und /wc status verwendet wird. In dieser Nachricht ist $target preloadedLocationsPerCannon (das volle Reserveziel, nicht der Aufgeladen-Schwellenwert) |
probeAllowed | $prefix | Wird von /wc probe gesendet, wenn die Schutzintegrationen den Ort erlauben. Der Befehl prüft weder Gelände noch API-Listener |
probeBlocked | $prefix, $plugin, $reason | Wird von /wc probe gesendet, wenn der Ort blockiert ist |
unknownCommand | $prefix | Reserviert. Nicht erkannte Unterbefehle werden vom gemeinsamen MagmaCore-Befehlsmanager behandelt, daher sendet der aktuelle Build diese Nachricht nie -- der Schlüssel wird zwar in messages.yml geschrieben, aber von nichts gelesen. |
invalidConfiguration dient zugleich als generische Admin-Fehlerzeile: Sie wird auch von /wc list / /wc status gesendet, wenn keine Kanonen platziert sind, sowie von /wc create, /wc place, /wc remove, /wc delete, /wc target und /wc center, wenn eine ID oder Welt nicht aufgelöst werden kann, wenn /wc create eine bereits existierende ID erhält oder wenn eine Kanonendatei nicht gespeichert oder gelöscht werden kann.
Statusbezeichnungen
Die Statuswörter, die von der schwebenden Kanonenbeschriftung, von /wc list und vom Platzhalter $status verwendet werden, sind konfigurierbar.
| Schlüssel | Standard | Wird angezeigt, wenn |
|---|---|---|
statusLabels.ready | Ready | Die Warteschlange erreicht chargedLocationsPerCannon. Ein Start kann auch unterhalb dieser Anzeigeschwelle ein Ziel aus der Warteschlange verwenden |
statusLabels.charging | Charging | Die Kanone sucht noch ihr erstes sicheres Ziel |
statusLabels.maintaining | Maintaining | Die Kanone füllt ihre Zielreserve wieder auf |
statusLabels.exhausted | Exhausted | Das Limit fehlgeschlagener Suchversuche wurde erreicht, bevor die Warteschlange die Aufgeladen-Schwelle erreicht hat. Bereits vorgemerkte Ziele bleiben nutzbar |
statusLabels.disabled | Disabled | Die Kanone ist in ihrer Konfiguration deaktiviert. Erscheint nur in /wc list und /wc status, weil deaktivierte Kanonen kein schwebendes Label erzeugen. |
statusLabels.invalid | Invalid | Reserviert; wird nicht angezeigt. Eine nicht verfügbare Zielwelt setzt die Suche auf SEARCHING zurück und entfernt Ziele für diese Welt. Eine leere Warteschlange zeigt Charging; $reason meldet die nicht verfügbare Welt. |
Das sind rohe Zeichenketten, daher funktionieren auch hier Gradienten und Farbcodes. Was du hier setzt, wird zum $status-Wert in statusLine.
Titelpools
Mehrere Titelplätze in der Startsequenz sind als Liste statt als einzelne Zeichenkette konfiguriert. Bei jedem Start wählt CannonRTP einen Eintrag zufällig aus der Liste. Das verhindert, dass sich wiederholte Starts identisch anfühlen.
| Schlüssel | Platzhalter | Phase | Beschreibung |
|---|---|---|---|
titles.launchQueuedTitles | $cannon | Beginn von SEARCHING | Pool von Titelzeichenketten, die beim Beginn eines Starts angezeigt werden |
titles.launchQueuedSubtitles | $cannon | Beginn von SEARCHING | Pool von Untertiteln, die mit dem Starttitel gepaart werden |
titles.destinationPreviewTitles | -- | SEARCHING | Pool von Titeln, die angezeigt werden, während zufällige Koordinaten vorbeiflackern. Ein Eintrag wird zu Beginn der Phase gewählt und für die gesamte Phase beibehalten. |
titles.destinationPreviewSubtitle | $x, $y, $z | SEARCHING (jeder Tick) | Einzelne Untertitelzeichenkette, die die flackernden zufälligen Koordinaten anzeigt |
titles.destinationConfirmedTitles | $x, $y, $z, $world | Beginn von FIRING | Pool von Titeln, die in dem Moment angezeigt werden, in dem das echte Ziel feststeht |
titles.destinationConfirmedSubtitle | $x, $y, $z, $world | Beginn von FIRING | Einzelner Untertitel, der das echte Ziel anzeigt |
titles.arrivalTitles | $x, $y, $z, $world | TELEPORTING | Pool von Titeln, die direkt nach der Luftabwurf-Teleportation angezeigt werden |
titles.arrivalSubtitles | $x, $y, $z, $world | TELEPORTING | Pool von Untertiteln, die neben dem Ankunftstitel angezeigt werden |
Platzhalter werden aus derselben Menge in den Titel und seinen Untertitel eingesetzt, sodass jeder Platzhalter, der für eine Hälfte eines Paares aufgeführt ist, auch in der anderen funktioniert. Die Ausnahme ist destinationPreviewTitles: Der gewählte Eintrag wird einmal zu Beginn der Phase formatiert, daher werden $x, $y und $z dort nicht aufgelöst. $prefix wird überall aufgelöst, wird innerhalb eines Titels aber selten gewünscht.
Ist ein Pool auf eine leere Liste gesetzt, verwendet CannonRTP stattdessen den ersten Eintrag seines eingebauten Standards.
Einzeln vs. Pool
destinationPreviewSubtitleunddestinationConfirmedSubtitlesind einzelne Zeichenketten, weil sie dynamische Koordinaten enthalten, die immer gerendert werden müssen. Die anderen Titel- und Untertitelplätze sind Pools, und aus jedem wird pro Start ein Eintrag zufällig gewählt.
Standard-Titelpools
Die in messages.yml mitgelieferten Standardwerte:
launchQueuedTitles -- Launching, Ignition, Liftoff (Orange-Gold-Gradient)
launchQueuedSubtitles -- $cannon (warmes Gold)
destinationPreviewTitles -- Calibrating, Scanning, Targeting (Orange-Gold)
destinationConfirmedTitles -- Locked, Set, Engaged (Grün)
arrivalTitles -- Arrived, Touchdown, Airborne (kühles Weiß)
arrivalSubtitles -- Good luck., Stick the landing., Eyes up. Ground soon., Wind check complete. Good luck., Drop zone acquired. Good luck.
Platzhalter-Referenz
| Platzhalter | Aufgelöst zu |
|---|---|
$prefix | Der Wert von messages.yml -> prefix |
$cannon | Der displayName der Kanone. In deletedCannon und in den meisten über invalidConfiguration gesendeten Fehlern von Admin-Befehlen ist es stattdessen die von dir eingegebene ID. |
$id | Die Konfigurations-ID der Kanone (bereinigte Kleinschreibung) |
$path | Absoluter Pfad zur frisch erstellten Kanonenkonfigurationsdatei (nur in createdCannon) |
$world | Name der Zielwelt |
$count | Anzahl der nach dem Neuaufbau geladenen Kanonenplatzierungen (eine pro cannonLocations-Eintrag über alle Kanonendateien, deaktivierte Kanonen eingeschlossen) |
$queued | Aktuelle Warteschlangengröße einer Kanone |
$target | Kontextabhängig: chargedLocationsPerCannon in queueCalibration, preloadedLocationsPerCannon in statusLine. Beide Schlüssel liegen in landing.yml. |
$attempts | Verbleibende Suchversuche, bevor die Kanone erschöpft ist |
$seconds | Aufgerundete verbleibende Start-Abklingzeit |
$unit | second oder seconds, passend zu $seconds |
$status | Der passende statusLabels.*-Wert -- standardmäßig Ready, Charging, Maintaining, Exhausted oder Disabled |
$reason | Menschenlesbares Detail eines Status oder Fehlers |
$plugin | Der Name des Schutz-Plugins, das einen Ort blockiert hat |
$x, $y, $z | Koordinaten (eine Nachkommastelle) |
Hinweis zur Lokalisierung
Jeder oben aufgeführte Schlüssel durchläuft den Farb-/Gradientenprozessor von MagmaCore, bevor er dem Spieler angezeigt wird. Übersetzungspakete, die auf language in config.yml abzielen, werden über denselben translatable()-Hook eingebunden (in Release 1 derzeit ein Passthrough).