CannonRTP-Konfiguration
CannonRTP teilt seine globalen Einstellungen auf mehrere Dateien in plugins/CannonRTP/ auf, plus eine kanonenspezifische Konfigurationsdatei in plugins/CannonRTP/cannons/.
Dateistruktur
| Datei | Zweck |
|---|---|
plugins/CannonRTP/config.yml | Übergeordnete Laufzeitflags (Setup-Zustand, Sprache, Partikelintervall, Start-Abklingzeit, Kanonenmodell-Priorität, Spigot-Ressourcen-ID, Nightbreak-Update-Einstellungen) |
plugins/CannonRTP/landing.yml | Feineinstellung der Landesuche (Warteschlangengröße, Timeout-Versuche, Langsam-Fall-Dauer, Listen unsicherer Materialien, Fail-Open-Verhalten) |
plugins/CannonRTP/sounds.yml | Während der Startsequenz abgespielte Sounds |
plugins/CannonRTP/messages.yml | Alle spielerseitigen Nachrichten, Präfixe und Titelpools |
plugins/CannonRTP/protection.yml | Schalter für plugin-spezifische Schutz-Integrationen |
plugins/CannonRTP/cannons/<id>.yml | Eine Datei pro Kanone (jede kann mehrere Platzierungen steuern) |
plugins/CannonRTP/cannons_disabled/ | Aufbewahrungsordner für Kanonenkonfigurationen, die mit Content-Paketen geliefert werden, aber derzeit deaktiviert sind. Das /wc setup-Menü verschiebt Dateien zwischen cannons/ und cannons_disabled/, wenn du ein Content-Paket aktivierst oder deaktivierst. |
plugins/CannonRTP/content_packages/<package>.yml | Generierte Metadaten für jedes Nightbreak-Content-Paket (Version, Download-Link, Präfixe zum Auffinden seiner Dateien). Normalerweise nicht von Hand bearbeitet. |
plugins/CannonRTP/imports/ | Ablageordner für manuelle Inhaltsimporte. Siehe Content-Pakete. |
plugins/CannonRTP/nightbreak-changelogs.yml | Gelesen-Status für den gemeinsamen Posteingang /wcchangelog. Siehe Changelog-Benachrichtigungen. |
Das Plugin liefert drei Beispielkonfigurationen für Kanonen mit:
example_cannonrtp.yml-- leere Referenzvorlage (AnzeigenameExample World Cannon), standardmäßig deaktiviert. Verwende sie als YAML-Referenz, wenn du Kanonendateien von Hand schreibst.cannonrtp_free_cannon.yml-- aktiviert, keine Platzierungen, zeigt auf das kostenlose FMM-Modellcannonrtp.cannonrtp_premium_cannon.yml-- aktiviert, keine Platzierungen, zeigt auf das Premium-FMM-Modellcannonrtp_premium.
Bei keiner davon ist standardmäßig cannonLocations befüllt, sodass nichts in der Welt erscheint, bis ein Admin /wc create oder /wc place ausführt. Keine davon setzt targetWorld, daher lässt jede Platzierung Spieler in der Welt landen, in der sie steht.
CannonRTP erstellt jede dieser drei Dateien neu, die in cannons/ fehlt, sobald es die Kanonenkonfigurationen lädt. Wird eine davon mit /wc delete gelöscht oder beim Deaktivieren ihres Content-Pakets verschoben, bleibt nach dem Reload eine frische Standardkopie ohne Platzierungen zurück.
config.yml
| Schlüssel | Standard | Verhalten |
|---|---|---|
setupDone | false | Verfolgt, ob das Nightbreak-Erstinstallations-Setup abgeschlossen wurde |
language | english | Zu ladende Übersetzungsdatei. Release 1 liefert nur Englisch; der Schlüssel existiert für zukünftige Übersetzungspakete |
runtime.particleIntervalTicks | 15 | Exaktes Intervall zwischen dem Rendern von Leerlauf-Kanonenpartikeln, in Server-Ticks (Minimum 1; verwende 1, um in jedem Tick zu rendern) |
runtime.launchCooldownSeconds | 30 | Sekunden, die ein Spieler zwischen angenommenen Kanonenstarts warten muss (Minimum 0; verwende 0, um zu deaktivieren). Abgebrochene CannonRTPLaunchEvents starten die Abklingzeit nicht. |
runtime.cannonModelPriority | [cannonrtp_premium, cannonrtp] | Prioritätsliste von FreeMinecraftModels-Modellnamen, von oben nach unten geprüft. Das erste auf dem Server gefundene Modell wird für jede Kanone verwendet, die nicht ihr eigenes customModel setzt. Wenn keines gefunden wird, wird der Orbit-Partikel-Fallback verwendet. |
runtime.spigotResourceId | "" | Spigot-Ressourcen-ID, die vom Versions-Checker verwendet wird. Leer lassen, um zu deaktivieren. |
nightbreak.autoDownloadPluginUpdates | false | Von der eingebetteten MagmaCore-Bibliothek hinzugefügt. Wenn true, lädt CannonRTP verfügbare Plugin- und Content-Update-Dateien wenige Minuten nach dem Start automatisch herunter. Content-Updates werden nach dem nächsten Serverneustart verwendet; ein Plugin-Update folgt nightbreak.applyPluginUpdatesWithoutRestart. Automatische Plugin-Downloads erfordern einen gültigen Nightbreak-Konto-Token und eine aktive Supporter-Mitgliedschaft. Lasse false, um stattdessen den Update-Button im Spiel zu verwenden. |
nightbreak.applyPluginUpdatesWithoutRestart | never | Von der eingebetteten MagmaCore-Bibliothek hinzugefügt. Legt fest, wann ein heruntergeladenes Plugin-Update angewendet wird, indem CannonRTP aus der neuen Jar neu geladen wird. never wartet auf den nächsten Neustart. when-empty wendet es sofort an, wenn keine Spieler online sind; andernfalls wird alle 30 Sekunden geprüft und das Update angewendet, sobald der Server leer ist. immediately wendet es an, sobald der Download abgeschlossen ist. Jeder andere Wert gilt als never. Der Reload bricht laufende Starts ab, wie unter Interaktionsschutz beschrieben. /wc applypluginupdate wendet ein heruntergeladenes Update unabhängig von dieser Einstellung von Hand an. |
landing.yml
| Schlüssel | Standard | Verhalten |
|---|---|---|
preloadedLocationsPerCannon | 10 | Gesamtanzahl sicherer Ziele, die das Plugin pro Kanone in der Warteschlange zu halten versucht (Minimum 1) |
chargedLocationsPerCannon | 1 | Wie viele Orte eine Kanone halten muss, bevor ihr Statuslabel auf Ready umschaltet (Minimum 1, begrenzt durch preloadedLocationsPerCannon). Kanonen starten Spieler, sobald die Warteschlange mindestens einen Ort hat -- dieser Schwellenwert beeinflusst nur das visuelle Label. |
searchTimeoutAttempts | 100 | Wie viele fehlgeschlagene Suchversuche, bevor eine Kanone als Exhausted markiert wird (Minimum 10). Suchversuche sind global auf einen pro Tick (20 pro Sekunde) ratenbeschränkt und werden fair auf alle aktiven Kanonen verteilt. |
slowFallingSeconds | 60 | Maximale Dauer von Langsamer Fall nach dem Luftabwurf (Minimum 1). Der Effekt wird vorzeitig entfernt, wenn der Spieler landet. |
failOpenOnProtectionErrors | false | Wenn eine Schutz-Plugin-API einen Fehler wirft, blockiert die Landung standardmäßig. Auf true setzen, um Landungen weiterhin zuzulassen, wenn ein Schutz-Plugin nicht sicher abgefragt werden kann. Bei false hindert außerdem eine aktivierte Schutz-Integration, die nicht geladen werden konnte, jede Kanone am Suchen (siehe Schutz-Integrationen). |
unsafeGroundMaterials | [LAVA, MAGMA_BLOCK, CAMPFIRE, SOUL_CAMPFIRE, CACTUS, POWDER_SNOW] | Materialien, die eine Landeoberfläche disqualifizieren |
unsafeBodyMaterials | [LAVA, WATER, FIRE, SOUL_FIRE, SWEET_BERRY_BUSH, POWDER_SNOW, COBWEB] | Materialien, die in der gesamten senkrechten Lande- und Abwurfsäule einschließlich des Kopfraums am Ankunftspunkt verboten sind |
Materialien sind Namen aus dem Bukkit-Material-Enum. Ungültige Einträge werden als Warnungen protokolliert und übersprungen.
sounds.yml
| Schlüssel | Standard | Verhalten |
|---|---|---|
levitationStart.sound | BLOCK_BEACON_ACTIVATE | Sound, der zu Beginn der Suchphase abgespielt wird |
levitationStart.volume | 1.0 | |
levitationStart.pitch | 1.15 | |
blastOff.sound | ENTITY_GENERIC_EXPLODE | Sound, der zu Beginn der Feuerphase abgespielt wird |
blastOff.volume | 1.0 | |
blastOff.pitch | 0.9 |
Soundwerte können Namen aus dem Bukkit-Sound-Enum sein (z. B. BLOCK_BEACON_ACTIVATE) oder Namespaced Keys (z. B. minecraft:block.beacon.activate). Ein Name im Enum-Stil wird umgewandelt, indem jeder Unterstrich durch einen Punkt ersetzt wird. Ein Sound, dessen Key einen Unterstrich enthält, etwa minecraft:block.note_block.pling, muss daher als Namespaced Key angegeben werden. Ungültige Soundnamen werden als Warnungen protokolliert und der Sound wird an dieser Stelle stillschweigend übersprungen. Lass einen Sound leer, damit nichts abgespielt wird. Lautstärke und Tonhöhe unter 0 werden auf 0 angehoben.
messages.yml
Alle Nachrichten unterstützen MagmaCore-Gradienten, MiniMessage-Tags und ältere &-Farbcodes. Der Platzhalter $prefix wird durch das konfigurierte Präfix ersetzt.
Eine vollständige Liste der Nachrichtenschlüssel, Platzhalter und der von der Startsequenz verwendeten Titelpools findest du auf der Seite Nachrichten und Titel.
Kanonenspezifische Konfigurationsfelder
Jede Kanonendatei (plugins/CannonRTP/cannons/<id>.yml) speichert folgende Felder:
| Feld | Standard | Hinweise |
|---|---|---|
isEnabled | true (für neu erstellte Kanonen) | Deaktivierte Kanonen werden nicht ausgelöst, erzeugen weder Label noch Modell und werden in /wc list und /wc status als Disabled angezeigt |
displayName | CannonRTP (oder der bei der Erstellung übergebene Name) | Wird in Nachrichten, Statusausgabe und im schwebenden Label verwendet |
cannonLocations | leere Liste | Liste serialisierter world,x,y,z,yaw,pitch-Strings. Eine Kanonenkonfiguration kann viele Platzierungen in der Welt erzeugen. Verwaltet durch /wc create, /wc place, /wc remove. |
targetWorld | aktuelle Welt zum Erstellungszeitpunkt | Weltenübergreifendes Targeting wird unterstützt -- setze dies, um Spieler in einer anderen Welt landen zu lassen als der der Kanone. Ist der Wert leer oder fehlt er, lässt jede Platzierung Spieler in ihrer eigenen Welt landen. Muss zur Laufzeit geladen sein; solange das nicht der Fall ist, stoppt die Kanone das Vorladen und ihr /wc status-Detail lautet Target world <name> is not loaded. |
searchCenter | null | Wenn nicht gesetzt, sucht das Plugin um die Position der Kanone herum, sofern diese in der Zielwelt steht, sonst um den Spawn der Zielwelt. Ist der Wert auf einen Ort in einer anderen Welt gesetzt, werden dessen X- und Z-Koordinaten in der Zielwelt verwendet. |
triggerRadius | 1.75 | Radius um die Kanone, der verwendet wird, um nahegelegene Spieler zu erkennen (Minimum 0,5 Blöcke) |
minSearchRadius | 500 | Minimale Landesuchdistanz vom Suchzentrum (Minimum 0) |
maxSearchRadius | 5000 | Maximale Landesuchdistanz (immer auf mindestens minSearchRadius + 1 begrenzt) |
launchWarmupTicks | 42 | Länge der Searching-Phase in Ticks (Minimum 1) |
verticalBoostTicks | 45 | Länge der Firing-Phase in Ticks (Minimum 0). 0 überspringt den Aufwärtsschub; Abschuss-Sound, Explosionseffekt und Zieltitel werden vor dem Teleport trotzdem abgespielt. |
verticalBoostVelocity | 1.35 | Aufwärtsgeschwindigkeit, die in jedem Tick der Feuerphase angewendet wird (Minimum 0) |
enableParticles | true | Steuert die Leerlauf-Orbit-Partikelanimation. Wird nur gerendert, wenn kein benutzerdefiniertes Modell aktiv ist und ein Spieler innerhalb von 36 Blöcken ist. |
requiredPermission | "" | Optionale zusätzliche Berechtigungssperre für diese spezifische Kanone. Spieler mit cannonrtp.use, aber ohne diesen Knoten sehen die konfigurierte Keine-Berechtigung-Nachricht. |
customModel | "" | Optionaler FreeMinecraftModels-Modellname für diese Kanone. Ist der Wert leer oder das Modell nicht verfügbar, verwendet das Plugin runtime.cannonModelPriority. |
Standardwerte bei der Kanonenerstellung
Wenn du /wc create <id> ausführst:
- die Kanonen-ID wird kleingeschrieben und andere Zeichen als
a-z,0-9,_,-werden durch_ersetzt displayNameist standardmäßigCannonRTP, sofern nicht/wc create <id> <display_name>verwendet wurde (Unterstriche in<display_name>werden in Leerzeichen umgewandelt)- die aktuelle Position des Spielers wird an
cannonLocationsangehängt targetWorldwird auf die aktuelle Welt des Spielers gesetztsearchCenterwird nicht gesetzt (fällt auf die eigene Position der Kanone zurück, wenn sie in der Zielwelt ist, andernfalls auf den Spawn der Zielwelt)
Nach der Erstellung antwortet das Plugin mit dem absoluten Pfad zur Konfigurationsdatei, damit du displayName, customModel, requiredPermission, die Suchradien und die Start-Feinabstimmung manuell bearbeiten kannst.
FreeMinecraftModels-Integration
Wenn eine Kanone zu einem gültigen FreeMinecraftModels-Modell auflöst -- entweder über ihr eigenes Feld customModel oder die globale Liste runtime.cannonModelPriority -- und FreeMinecraftModels installiert ist:
- wird eine statische Modell-Entity an der Kanonenposition gespawnt
- wird das schwebende Textlabel auf 2,0 Blöcke über der Kanone angehoben (gegenüber 1,2 ohne Modell), damit es das Modell nicht überdeckt
- wird die Leerlauf-Orbit-Partikelanimation unterdrückt, solange ein Modell aktiv ist
- spielt die Kanone während eines Starts ihre
fire-Animation ab (falls eine existiert), zu Beginn der Suchphase; der Spieler wird während der Suchphase mit Unsichtbarkeit verborgen, damit die Animation klar zu sehen ist
Wird FreeMinecraftModels während des laufenden Servers aktiviert oder deaktiviert, wird der Kanonenmodell-Cache verworfen. Aktuelle FMM-Versionen benachrichtigen CannonRTP auch nach dem Neuladen von Inhalten. Dadurch werden veraltete Modellreferenzen entfernt und Modelle aus der aktualisierten Registrierung neu erstellt. CannonRTP erkennt entfernte Modellinstanzen außerdem direkt, auch mit FMM 2.4.0, das noch kein Reload-Abschluss-Event bietet. Solange FMM aktiviert ist, werden ausstehende Erstellungsversuche alle 20 Ticks wiederholt, bis ein nutzbares Modell verfügbar ist.
Ersatzpartikel im Leerlauf
Wenn kein Modell aktiv ist, rendert die Kanone ein Paar umkreisender DUST_COLOR_TRANSITION- + FIREWORK-Partikel um das Kanonenzentrum. Die Farben verschieben sich je nach effektivem Zustand der Kanone:
| Zustand | Primär | Akzent |
|---|---|---|
| Ready | orange (255, 179, 71) | blassgold (255, 241, 168) |
| Searching (Charging / Maintaining) | warmes Orange (255, 140, 66) | gold (255, 209, 102) |
| Exhausted | rot (255, 107, 107) | warmes Orange (255, 159, 104) |
Leerlaufpartikel werden nur gerendert, wenn ein Spieler innerhalb von 36 Blöcken der Kanone ist, enableParticles auf true steht und kein benutzerdefiniertes Modell aktiv ist.
Schwebende Statusanzeige
Jede aktivierte Kanone erzeugt über ihrer Basis ein zum Betrachter ausgerichtetes TextDisplay mit ihrem Anzeigenamen und aktuellen Status (Ready, Charging, Maintaining oder Exhausted). Deaktivierte Kanonen erzeugen keine Anzeige. Die Anzeige wird nicht in den Chunk-Daten gespeichert und beim erneuten Laden des Chunks automatisch neu erstellt. Sie befindet sich 1,2 Blöcke über der Kanone beziehungsweise 2,0 Blöcke darüber, wenn ein FreeMinecraftModels-Modell aktiv ist.
Validierung zur Laufzeit
CannonRTP lehnt Kandidaten-Landeorte ab, wenn eine dieser Prüfungen fehlschlägt:
- die Zielwelt ist entladen
- das Suchzentrum kann nicht aufgelöst werden (was nur passiert, wenn die Zielwelt entladen ist)
- die zufällige Probe landet außerhalb der Weltgrenze
- der Kandidaten-Chunk kann nicht geladen werden
- es wird keine sichere, feste, nicht-flüssige Oberfläche gefunden
- ein Block der 52 Blöcke hohen Abwurfsäule über dem Landepunkt ist blockiert
- die Oberfläche oder ein Block der Säule entspricht den konfigurierten Listen unsicherer Materialien
- eine Schutz-Integration blockiert die Landung
- ein
CannonRTPLocationValidationEvent-Listener verwirft den Kandidaten
Nach searchTimeoutAttempts fehlgeschlagenen Suchen (Standard 100) kann das Vorladen den Zustand Exhausted erreichen. Bereits vorgemerkte Ziele bleiben nutzbar. Erst bei leerer Warteschlange erscheint die Fehlermeldung mit einer Zusammenfassung üblicher Ablehnungsgründe. Ein nach einem Start frei gewordener Platz setzt den Versuchszähler zurück.
Erzeuge oder erkunde vor der Nutzung den konfigurierten Suchbereich in der Zielwelt. CannonRTP lädt vorhandene Chunks ohne neue Landschaft zu generieren; ein unerforschter Suchradius kann deshalb ohne Ziele bleiben.
Interaktionsschutz
CannonRTP verhindert, dass ein Spieler eine Kanone auslöst, während er sich bereits in einer aktiven Startsequenz befindet. Dieser Auslöser bleibt eingerastet, bis der Start vorbei ist und der Spieler den Auslöseradius der Kanone tatsächlich verlassen hat, sodass eine Rettung zurück auf den Kanonensitz nicht sofort einen weiteren Start beginnen kann. Nachdem ein Start angenommen wurde, blockiert außerdem eine managerweite, spielerbezogene Abklingzeit für runtime.launchCooldownSeconds (Standard 30 Sekunden) jede Kanone. Die Abklingzeit übersteht Verbindungsabbrüche, solange der Server läuft, verwendet eine monotone Uhr und wird geleert, sobald CannonRTP seine Kanonen neu aufbaut: bei /wc reload, einem Plugin-Update ohne Neustart, dem Herunterfahren des Plugins oder einem beliebigen Befehl zum Bearbeiten von Kanonen (create, place, remove, delete, target, center). Ein Neuaufbau bricht außerdem laufende Starts ab, setzt die betroffenen Spieler auf ihren Kanonensitz zurück und verwirft jedes wartende Ziel. Betritt man eine Kanone zu früh, wird die konfigurierbare Nachricht launchCooldown gesendet; setze den Konfigurationswert auf 0, um diese Sperre zu deaktivieren.