CannonRTP-Konfiguration
CannonRTP verwendet eine globale Konfigurationsdatei plus eine Konfigurationsdatei pro Kanone.
Dateilayout
- Globale Konfiguration:
plugins/CannonRTP/config.yml - Konfigurationen pro Kanone:
plugins/CannonRTP/custom/fun_rtps/<id>.yml
Das Plugin liefert außerdem ein Beispiel-Kanonenpaket namens example_world_cannon mit. Es ist standardmäßig deaktiviert.
Struktur der globalen Konfiguration
Die Hauptkonfiguration ist unter folgenden Bereichen organisiert:
runtime.*landing.*messages.*protection.*
Laufzeiteinstellungen
| Schlüssel | Standard | Verhalten |
|---|---|---|
runtime.scanIntervalTicks | 2 | Wie oft Kanonen nach Spielern in der Nähe suchen (Minimum 2) |
runtime.particleIntervalTicks | 15 | Wie oft Leerlaufpartikel der Kanone gerendert werden (Minimum 5) |
Einstellungen für die Landesuche
| Schlüssel | Standard | Verhalten |
|---|---|---|
landing.searchAttemptsPerTick | 2 | Suchversuche pro Kanone pro Tick während des Vorladens (Minimum 1) |
landing.preloadedLocationsPerCannon | 10 | Gesamtzahl sicherer Ziele, die das Plugin pro Kanone in der Warteschlange halten soll (Minimum 1) |
landing.chargedLocationsPerCannon | 5 | Wie viele Positionen eine Kanone haben muss, bevor sie als geladen und startbereit gilt (Minimum 1, begrenzt durch preloadedLocationsPerCannon) |
landing.searchTimeoutSeconds | 1000 | Zeit in Sekunden, bevor eine weiterhin suchende Kanone als erschöpft markiert wird (Minimum 10) |
landing.slowFallingSeconds | 60 | Dauer von Langsamer Fall nach der Ankunft in Sekunden; der Effekt wird beim Landen frühzeitig entfernt (Minimum 1) |
landing.failOpenOnProtectionErrors | false | Wenn eine Schutz-API einen Fehler meldet, wird die Landung standardmäßig blockiert |
Landegeräusche
Die folgenden Sound-Schlüssel sind konfigurierbar:
landing.sounds.levitationStart.sound(Standard:BLOCK_BEACON_ACTIVATE)landing.sounds.levitationStart.volume(Standard:1.0)landing.sounds.levitationStart.pitch(Standard:1.15)landing.sounds.blastOff.sound(Standard:ENTITY_GENERIC_EXPLODE)landing.sounds.blastOff.volume(Standard:1.0)landing.sounds.blastOff.pitch(Standard:0.9)
Sound-Werte verwenden Bukkit Sound-Registrierungsnamen oder Namensraum-Schlüssel. Ungültige Sound-Namen werden als Warnungen protokolliert und der Sound wird stillschweigend übersprungen.
Listen unsicherer Materialien
CannonRTP lehnt mögliche Landeorte anhand von zwei Materiallisten ab:
landing.unsafeGroundMaterials-- Blöcke, auf denen man niemals stehen solltelanding.unsafeBodyMaterials-- Blöcke, die niemals den Fuß- oder Kopfbereich belegen sollten
Standardmäßig unsichere Bodenmaterialien:
LAVAMAGMA_BLOCKCAMPFIRESOUL_CAMPFIRECACTUSPOWDER_SNOW
Standardmäßig unsichere Körpermaterialien:
LAVAWATERFIRESOUL_FIRESWEET_BERRY_BUSHPOWDER_SNOWCOBWEB
Nachrichteneinstellungen
Alle Nachrichten unterstützen MagmaCore-Gradienten, MiniMessage-Tags und ältere Farbcodes. Der Platzhalter $prefix wird durch den konfigurierten Präfixwert ersetzt.
Das Plugin stellt folgende Nachrichtenschlüssel bereit:
| Schlüssel | Platzhalter | Beschreibung |
|---|---|---|
messages.prefix | -- | Präfix für alle CannonRTP-Nachrichten |
messages.helpHeader | $prefix | Kopfzeile, die von /cannonrtp angezeigt wird |
messages.createdCannon | $prefix, $cannon, $id, $path | Gesendet nach dem Erstellen einer Kanone |
messages.deletedCannon | $prefix, $cannon | Gesendet nach dem Löschen einer Kanone |
messages.movedCannon | $prefix, $cannon | Gesendet nach dem Verschieben einer Kanone |
messages.targetWorldUpdated | $prefix, $cannon, $world | Gesendet nach dem Ändern der Zielwelt einer Kanone |
messages.searchCenterUpdated | $prefix, $cannon | Gesendet nach dem Ändern des Suchzentrums einer Kanone |
messages.reload | $prefix, $count | Gesendet nach dem Neuladen |
messages.noPermission | $prefix, $cannon | Gesendet wenn ein Spieler eine Kanone sehen, aber nicht nutzen kann |
messages.cannonDisabled | $prefix, $cannon | Gesendet wenn ein Spieler eine deaktivierte Kanone betritt |
messages.queueCalibration | $prefix, $cannon, $queued, $target, $seconds | Gesendet während eine Kanone noch vorlädt |
messages.noValidLocationYet | $prefix, $cannon | Gesendet wenn noch kein sicherer Ort gefunden wurde |
messages.noValidLocationFound | $prefix, $cannon, $reason | Gesendet wenn CannonRTP nach Zeitüberschreitung aufgibt |
messages.invalidConfiguration | $prefix, $cannon, $reason | Gesendet wenn ein Konfigurationsfehler erkannt wird |
messages.statusLine | $prefix, $cannon, $status, $queued, $target, $reason | Zeilenformat für /wc status und /wc list |
messages.probeAllowed | $prefix | Von /wc probe gesendet wenn der Ort gültig ist |
messages.probeBlocked | $prefix, $plugin, $reason | Von /wc probe gesendet wenn der Ort blockiert ist |
messages.unknownCommand | $prefix | Gesendet wenn ein Administrator einen unbekannten Unterbefehl verwendet |
Titelnachrichten
| Schlüssel | Platzhalter | Beschreibung |
|---|---|---|
messages.titles.launchQueuedTitle | $cannon | Titel beim Start eines Abschusses |
messages.titles.launchQueuedSubtitle | $cannon | Untertitel beim Start eines Abschusses |
messages.titles.destinationPreviewTitle | $x, $y, $z | Titel während des Aufwärm-Countdowns |
messages.titles.destinationPreviewSubtitle | $x, $y, $z | Untertitel während des Aufwärm-Countdowns |
messages.titles.destinationConfirmedTitle | $x, $y, $z, $world | Titel direkt vor der Teleportation |
messages.titles.destinationConfirmedSubtitle | $x, $y, $z, $world | Untertitel direkt vor der Teleportation |
messages.titles.arrivalSubtitles | -- | Liste von Untertiteln; nach jedem Abschuss wird einer zufällig ausgewählt |
Die Koordinatenvorschau während der Aufwärmphase zeigt nicht das tatsächliche Ziel -- sie zeigt zufällige Koordinaten innerhalb des Suchbereichs der Kanone als visuellen Effekt. Das wahre Ziel wird erst im Bestätigungstitel enthüllt.
Konfigurationsfelder pro Kanone
Jede Kanonendatei (plugins/CannonRTP/custom/fun_rtps/<id>.yml) speichert diese Felder:
| Feld | Standard | Hinweise |
|---|---|---|
isEnabled | true für neu erstellte Kanonen | Deaktivierte Kanonen werden nicht ausgelöst |
displayName | CannonRTP (oder der bei der Erstellung angegebene Name) | Wird in Nachrichten, Statusausgabe und dem schwebenden Label verwendet |
cannonLocation | Erforderlich | Wo sich der Kanonenauslöser befindet |
targetWorld | Aktuelle Welt zum Zeitpunkt der Erstellung | Muss zur Laufzeit geladen sein |
searchCenter | null (fällt auf den Spawn der Zielwelt zurück) | Wenn nicht gesetzt, verwendet das Plugin den Spawn-Ort der Zielwelt |
triggerRadius | 1.75 | Radius zur Erkennung naher Spieler (Minimum 0.5) |
minSearchRadius | 500 | Mindestdistanz für die Landesuche vom Suchzentrum (Minimum 0) |
maxSearchRadius | 5000 | Maximale Distanz für die Landesuche vom Suchzentrum (immer mindestens minSearchRadius + 1) |
launchWarmupSeconds | 6 | Levitation-/Countdown-Zeit vor dem Start (Minimum 0; bei 0 ist der Start sofort) |
verticalBoostTicks | 45 | Ticks mit Aufwärtsgeschwindigkeit vor dem Teleport (Minimum 0) |
verticalBoostVelocity | 1.35 | Aufwärtsgeschwindigkeit während des Starts (Minimum 0) |
enableParticles | true | Steuert die Leerlaufpartikel der Kanone |
requiredPermission | leer | Optionale zusätzliche Berechtigungsschranke für diese Kanone |
customModel | leer | Optionaler FreeMinecraftModels-Modellname zur Anzeige am Kanonenstandort |
Standardwerte bei der Kanonenerstellung
Wenn du /wc create <id> ausführst:
- die Kanonen-ID wird kleingeschrieben und Zeichen außer
a-z,0-9,_und-werden durch_ersetzt - der Anzeigename wird standardmäßig
CannonRTP, wenn nicht angegeben, oder der angegebene Name mit Unterstrichen als Leerzeichen cannonLocationwird auf deine aktuelle Position gesetzttargetWorldwird auf deine aktuelle Welt gesetztsearchCenterwird nicht gesetzt (fällt auf den Spawn der Zielwelt zurück)
Nach der Erstellung zeigt das Plugin den Pfad der Konfigurationsdatei an und schlägt vor, welche Felder manuell bearbeitet werden sollten: displayName, customModel, requiredPermission, launchWarmupSeconds, verticalBoostTicks und verticalBoostVelocity.
FreeMinecraftModels-Integration
Wenn eine Kanonenkonfiguration customModel auf einen gültigen FreeMinecraftModels-Modellnamen setzt und FreeMinecraftModels installiert ist:
- Eine statische Modellentität wird am Kanonenstandort erzeugt
- Das schwebende Textlabel wird höher gesetzt, um Überlappungen mit dem Modell zu vermeiden
- Wenn auch ein Modell namens
fireexistiert, wird eine alternative Startanimation verwendet: Der Spieler wird zum Kanonensitz teleportiert und während einer 2-Sekunden (40-Tick) Ladesequenz festgehalten, bevor der Abschuss mit Explosionspartikeleffekt erfolgt
Verhalten bei der Laufzeitvalidierung
CannonRTP lehnt mögliche Landeorte ab, wenn eine dieser Prüfungen fehlschlägt:
- die Zielwelt ist nicht geladen
- das Suchzentrum ist ungültig
- die Zufallsprobe landet außerhalb der Weltgrenze
- es wird keine sichere feste Oberfläche gefunden
- der Fuß- oder Kopfbereich ist blockiert
- Terrain- oder Körperblöcke entsprechen den konfigurierten Listen unsicherer Materialien
- eine Schutzintegration blockiert die Landung
Wenn eine Kanone vor landing.searchTimeoutSeconds keine gültigen Orte finden kann, wird sie als erschöpft markiert und gibt die konfigurierte Fehlermeldung zurück, statt Spieler zu starten. Die Fehlermeldung enthält eine Zusammenfassung der häufigsten Ablehnungsgründe.
Das Suchfenster der Kanone startet neu, wenn verbrauchte Positionen nachgefüllt werden müssen (z.B. nachdem ein Spieler gestartet wurde und ein Platz frei wird).
Interaktions-Abklingzeit
CannonRTP erzwingt eine 3-Sekunden-Abklingzeit zwischen Interaktionen pro Spieler. Diese Abklingzeit gilt unabhängig davon, ob die Interaktion ein erfolgreicher Start, eine Berechtigungsablehnung oder eine andere Kanonenprüfung war. Die Abklingzeit ist nicht konfigurierbar.