Zum Hauptinhalt springen

CannonRTP-Konfiguration

CannonRTP teilt seine globalen Einstellungen auf mehrere Dateien in plugins/CannonRTP/ auf, plus eine kanonenspezifische Konfigurationsdatei in plugins/CannonRTP/cannons/.

Dateistruktur

DateiZweck
plugins/CannonRTP/config.ymlÜbergeordnete Laufzeitflags (Setup-Zustand, Sprache, Partikelintervall, Kanonenmodell-Priorität, Spigot-Ressourcen-ID)
plugins/CannonRTP/landing.ymlFeineinstellung der Landesuche (Warteschlangengröße, Timeout-Versuche, Langsam-Fall-Dauer, Listen unsicherer Materialien, Fail-Open-Verhalten)
plugins/CannonRTP/sounds.ymlWährend der Startsequenz abgespielte Sounds
plugins/CannonRTP/messages.ymlAlle spielerseitigen Nachrichten, Präfixe und Titelpools
plugins/CannonRTP/protection.ymlSchalter für plugin-spezifische Schutz-Integrationen
plugins/CannonRTP/cannons/<id>.ymlEine Datei pro Kanone (jede kann mehrere Platzierungen steuern)

Das Plugin liefert eine Beispiel-Kanonenkonfiguration namens example_world_cannon mit. Sie ist standardmäßig deaktiviert und hat keine Platzierungen -- sie existiert nur als Referenz für die YAML-Struktur.

config.yml

SchlüsselStandardVerhalten
setupDonefalseVerfolgt, ob das Nightbreak-Erstinstallations-Setup abgeschlossen wurde
languageenglishZu ladende Übersetzungsdatei. Release 1 liefert nur Englisch; der Schlüssel existiert für zukünftige Übersetzungspakete
runtime.particleIntervalTicks15Wie oft Leerlauf-Kanonenpartikel gerendert werden (Minimum 5)
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.

landing.yml

SchlüsselStandardVerhalten
preloadedLocationsPerCannon10Gesamtanzahl sicherer Ziele, die das Plugin pro Kanone in der Warteschlange zu halten versucht (Minimum 1)
chargedLocationsPerCannon1Wie 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.
searchTimeoutAttempts100Wie viele fehlgeschlagene Suchversuche, bevor eine Kanone als Exhausted markiert wird. Suchversuche sind global auf einen pro Tick (20 pro Sekunde) ratenbeschränkt und werden fair auf alle aktiven Kanonen verteilt.
slowFallingSeconds60Maximale Dauer von Langsamer Fall nach dem Luftabwurf. Der Effekt wird vorzeitig entfernt, wenn der Spieler landet.
failOpenOnProtectionErrorsfalseWenn 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.
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 den Fuß- oder Kopfraum einer Landung disqualifizieren

Materialien sind Namen aus dem Bukkit-Material-Enum. Ungültige Einträge werden als Warnungen protokolliert und übersprungen.

sounds.yml

SchlüsselStandardVerhalten
levitationStart.soundBLOCK_BEACON_ACTIVATESound, der zu Beginn der Suchphase abgespielt wird
levitationStart.volume1.0
levitationStart.pitch1.15
blastOff.soundENTITY_GENERIC_EXPLODESound, der zu Beginn der Feuerphase abgespielt wird
blastOff.volume1.0
blastOff.pitch0.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). Ungültige Soundnamen werden als Warnungen protokolliert und der Sound wird an dieser Stelle stillschweigend übersprungen.

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:

FeldStandardHinweise
isEnabledtrue (für neu erstellte Kanonen)Deaktivierte Kanonen werden nicht ausgelöst und werden als Disabled angezeigt
displayNameCannonRTP (oder der bei der Erstellung übergebene Name)Wird in Nachrichten, Statusausgabe und im schwebenden Label verwendet
cannonLocationsleere ListeListe 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.
targetWorldaktuelle Welt zum ErstellungszeitpunktWelteübergreifendes Targeting wird unterstützt -- setze dies, um Spieler in einer anderen Welt landen zu lassen als der der Kanone. Muss zur Laufzeit geladen sein, sonst wird die Kanone als Invalid angezeigt.
searchCenternullWenn nicht gesetzt, strahlt das Plugin von der eigenen Position der Kanone aus (wenn die Kanone in der Zielwelt ist) oder vom Spawn der Zielwelt
triggerRadius1.75Radius um die Kanone, der verwendet wird, um nahegelegene Spieler zu erkennen (Minimum 0,5 Blöcke)
minSearchRadius500Minimale Landesuchdistanz vom Suchzentrum (Minimum 0)
maxSearchRadius5000Maximale Landesuchdistanz (immer auf mindestens minSearchRadius + 1 begrenzt)
launchWarmupTicks42Länge der Searching-Phase in Ticks (Minimum 1)
verticalBoostTicks45Länge der Firing-Phase in Ticks (Minimum 0)
verticalBoostVelocity1.35Aufwärtsgeschwindigkeit, die in jedem Tick der Feuerphase angewendet wird (Minimum 0)
enableParticlestrueSteuert 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 spezifische Kanone. Wenn leer, fällt das Plugin auf runtime.cannonModelPriority zurück.

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
  • displayName ist standardmäßig CannonRTP, sofern nicht /wc create <id> <display_name> verwendet wurde (Unterstriche in <display_name> werden in Leerzeichen umgewandelt)
  • die aktuelle Position des Spielers wird an cannonLocations angehängt
  • targetWorld wird auf die aktuelle Welt des Spielers gesetzt
  • searchCenter wird 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

Wenn FreeMinecraftModels während des laufenden Servers aktiviert oder deaktiviert wird, wird der Kanonenmodell-Cache invalidiert und die Visuals werden im nächsten Tick aktualisiert.

Leerlauf-Partikel-Fallback

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:

ZustandPrimärAkzent
Readyorangegold
Searching (Charging / Maintaining)warmes orangegold
Exhaustedrotwarmes rot
Ungültige Konfigurationtiefrotrot

Leerlaufpartikel werden nur gerendert, wenn ein Spieler innerhalb von 36 Blöcken der Kanone ist.

Schwebendes Statuslabel

Jede Kanone spawnt ein billboardiertes TextDisplay über ihrer Basis, das den Anzeigenamen und den aktuellen Status (Ready, Charging, Maintaining, Exhausted, Disabled oder Invalid) anzeigt. Das Label ist nicht persistent (es wird nie in Chunk-Daten gespeichert) und wird beim erneuten Laden des Chunks automatisch neu erstellt.

Laufzeit-Validierungsverhalten

CannonRTP lehnt Kandidaten-Landeorte ab, wenn eine dieser Prüfungen fehlschlägt:

  • die Zielwelt ist entladen
  • das Suchzentrum ist ungültig
  • 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
  • der Fuß- oder Kopfraum ist blockiert
  • das Gelände oder die Körperblöcke entsprechen den konfigurierten Listen unsicherer Materialien
  • eine Schutz-Integration blockiert die Landung
  • ein CannonRTPLocationValidationEvent-Listener verwirft den Kandidaten

Wenn eine Kanone searchTimeoutAttempts (Standard 100) durchläuft, ohne ihre Reserve zu füllen, wird sie Exhausted und gibt statt Spieler zu starten die konfigurierte Fehlermeldung zurück. Die Fehlermeldung enthält eine Zusammenfassung der häufigsten Ablehnungsgründe. Die Kanone setzt ihren Timeout-Zähler zurück, sobald ein Warteschlangenplatz frei wird (z. B. nach einem Start).

Interaktionsschutz

CannonRTP verhindert, dass ein Spieler eine Kanone auslöst, während er sich bereits in einer aktiven Startsequenz befindet. Sobald die aktuelle Startsequenz beendet ist (Landung oder Trennung), kann der Spieler eine Kanone erneut verwenden. Es gibt keinen zusätzlichen Cooldown-Timer.