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, Kanonenmodell-Priorität, Spigot-Ressourcen-ID) |
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) |
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ü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 | Wie 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ü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. 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. 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. |
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ü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). 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:
| Feld | Standard | Hinweise |
|---|---|---|
isEnabled | true (für neu erstellte Kanonen) | Deaktivierte Kanonen werden nicht ausgelöst und werden 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 | Welteü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. |
searchCenter | null | Wenn nicht gesetzt, strahlt das Plugin von der eigenen Position der Kanone aus (wenn die Kanone in der Zielwelt ist) oder vom Spawn der Zielwelt |
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) |
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 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 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
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:
| Zustand | Primär | Akzent |
|---|---|---|
| Ready | orange | gold |
| Searching (Charging / Maintaining) | warmes orange | gold |
| Exhausted | rot | warmes rot |
| Ungültige Konfiguration | tiefrot | rot |
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.