Zum Hauptinhalt springen

Events erstellen

webapp_banner.jpg

Diese Anleitung ist für EliteMobs 10 und später

Was sind benutzerdefinierte Events?

Benutzerdefinierte Events beziehen sich hier auf Events, die zufällig im Spiel auftreten, sei es basierend auf Spieleraktionen oder mit einem zeitgesteuerten Auslöser. Das Plugin wird mit einer Reihe von benutzerdefinierten Events vorab geladen, wie zum Beispiel dem Balrog-Event, dem Kraken-Event und den Treasure-Goblin-Events, um nur einige zu nennen.

Dieses System wird Custom (benutzerdefinierte) Events genannt, weil die Events nicht nur angepasst, sondern auch von Grund auf neu erstellt werden können. Was folgt, ist eine Anleitung, wie du deine eigenen Events erstellst und anpasst.

Deine benutzerdefinierten Events erstellen

Konfigurationsdateien für benutzerdefinierte Events sollten hier erstellt werden: plugins/EliteMobs/customevents/

Dateien müssen das .yml-Format verwenden. Der Dateiname (ohne die Endung .yml) wird zur Event-Kennung.

Beispiel: my_cool_event.yml wird als my_cool_event referenziert

Allgemeine Konfigurationseinstellungen

Die folgenden Einstellungen können/sollten sowohl für Aktions- als auch für zeitgesteuerte Events verwendet werden.


isEnabled

Legt fest, ob das Event aktiviert ist.

KeyWerteStandard
isEnabledBooleantrue
Beispiel
isEnabled: true

eventType

Legt den Typ des Events fest.

KeyWerteStandard
eventTypeBREAK_BLOCK / FISH / TILL_SOIL / TIMEDDEFAULT

Beachte, dass BREAK_BLOCK, FISH und TILL_SOIL Aktions-Events sind und TIMED zeitgesteuerte Events sind.

eventType ist verpflichtend. DEFAULT ist nur der Platzhalter, auf den EliteMobs zurückfällt, wenn die Einstellung fehlt oder zu keinem der oben genannten Typen passt. Ein Event, das auf DEFAULT bleibt, erzeugt eine Warnung und wird überhaupt nicht registriert — keine der darunter liegenden Einstellungen wird dann auch nur gelesen.

Beispiel
eventType: BREAK_BLOCK

bossFilenames

Legt die Liste der Bosse fest, die gespawnt werden. Erforderlich!

KeyWerteStandard
bossFilenamesString-Listekeiner
Beispiel
bossFilenames:
- balrog.yml
- my_event_boss.yml

announcementPriority

Legt die Ankündigungspriorität fest.

KeyWerteStandard
announcementPriorityInteger0
Beispiel
announcementPriority: 1

startMessage

Legt die Nachricht fest, die zu Beginn des Events gesendet wird.

KeyWerteStandard
startMessageStringkeiner
Beispiel
startMessage: An event has started!

create_events_start_message.jpg


endMessage

Legt die Nachricht fest, die am Ende des Events gesendet wird.

KeyWerteStandard
endMessageStringkeiner
Beispiel
endMessage: An event has ended!

create_events_end_message.jpg


eventStartCommands

Legt die Befehle fest, die zu Beginn des Events ausgeführt werden.

KeyWerteStandard
eventStartCommandsString-Listekeiner
Beispiel
eventStartCommands:
- say The event now starts!!
- "$chance=0.5$ say What a spawn!"

create_events_start_commands.jpg


eventEndCommands

Legt die Befehle fest, die am Ende des Events ausgeführt werden.

KeyWerteStandard
eventEndCommandsString-Listekeiner
Beispiel
eventEndCommands:
- say The event ends, so sad.
- "$chance=0.5$ say Too slow bud!"

create_events_end_commands.jpg


minimumPlayerCount

Legt die Mindestanzahl an Online-Spielern fest, die für den Start des Events erforderlich ist.

Dies wird nur für Aktions-Events geprüft. Zeitgesteuerte Events ignorieren es – sie benötigen lediglich mindestens einen Online-Spieler.

KeyWerteStandard
minimumPlayerCountInteger1
Beispiel
minimumPlayerCount: 5

Event-Konfigurationsbeispiel
isEnabled: true
eventType: TIMED
bossFilenames:
- "cool_boss.yml"
- "other_cool_boss.yml"
announcementPriority: 3
startMessage: "Cool event is starting!"
endMessage: "Cool event is ending!"
eventStartCommands:
- say The event started!
eventEndCommands:
- say The event ended!

Vollständiges Beispiel für ein zeitgesteuertes Event
isEnabled: true
eventType: TIMED
bossFilenames:
- "my_timed_boss.yml"
announcementPriority: 3
startMessage: "A timed event has started!"
endMessage: "The timed event has ended!"
eventStartCommands:
- say The timed event began!
eventEndCommands:
- say The timed event concluded!
spawnType: "my_spawn_location.yml"
localCooldown: 120
globalCooldown: 30
weight: 100
eventDuration: 15
endEventWithBossDeath: true
minimumPlayerCount: 1

Aktions-Events

Events, die eine Chance haben, ausgeführt zu werden, wenn eine bestimmte Aktion eintritt, wie das Abbauen eines Blocks oder das Angeln.

Hinweis: Aktions-Events wenden automatisch einen Cooldown pro Spieler an, um zu verhindern, dass derselbe Spieler wiederholt Events auslöst. Der Cooldown beträgt standardmäßig 4 Minuten und ist über actionEventMinimumCooldownMinutes in events.yml konfigurierbar. Aktions-Events können außerdem serverweit deaktiviert werden, indem actionEventsEnabled in derselben Datei auf false gesetzt wird.

Die drei Aktionstypen lösen wie folgt aus:

eventTypeAuslöser
BREAK_BLOCKEin Spieler baut einen Block ab. Zuerst wird chance ausgewürfelt, danach wird der abgebaute Block gegen breakableMaterials geprüft.
FISHEin Spieler zieht etwas an Land. Auswürfe, die nichts fangen, lösen das Event nie aus.
TILL_SOILEin Spieler rechtsklickt DIRT oder GRASS_BLOCK, während er eine Hacke in der Hand hält.

In jedem Fall muss der Ort in einer Welt liegen, für die EliteMobs aktiviert ist, darf nicht in einer EliteMobs-Dungeon-Welt oder einer laufenden Instanz liegen und muss das WorldGuard-Flag elitemobs-events passieren.

chance

Legt die Chance fest, dass das Event eintritt, wenn die Aktion eintritt.

KeyWerteStandard
chanceWert zwischen 0.0 und 1.00
Beispiel
chance: 0.001

breakableMaterials

Legt die Liste der zu prüfenden Materialien fest, wenn die Aktion auf BREAK_BLOCK gesetzt ist.

KeyWerteStandard
breakableMaterialsListe von Materialienkeiner
Beispiel
breakableMaterials:
- BEEHIVE
- BIRCH_WOOD

Konfigurationsbeispiel
chance: 0.001
breakableMaterials:
- COAL_ORE

Legt eine Chance von 0,1 % fest, dass das Event ausgeführt wird, wenn ein Kohleerz-Block abgebaut wird, vorausgesetzt, der Event-Typ ist BREAK_BLOCK.


Vollständiges Beispiel für ein Aktions-Event
isEnabled: true
eventType: BREAK_BLOCK
bossFilenames:
- "mining_boss.yml"
announcementPriority: 2
startMessage: "You've awakened something..."
chance: 0.001
breakableMaterials:
- DIAMOND_ORE
- EMERALD_ORE

Zeitgesteuerte Events

Zeitgesteuerte Events sind Events, die in konfigurierbaren Zeitintervallen stattfinden. Sobald der Cooldown für ein zeitgesteuertes Event abgelaufen ist, wird ein zufälliges zeitgesteuertes Event aus der Liste der zeitgesteuerten Events basierend auf dem Gewicht des Events ausgewählt.

Solange keine Spieler online sind, wird nichts ausgewählt, und ein bereits laufendes Event wird nie ein zweites Mal ausgewählt. Zeitgesteuerte Events können serverweit deaktiviert werden, indem timedEventsEnabled in events.yml auf false gesetzt wird.

spawnType

Legt den benutzerdefinierten Spawn fest, der vom Event verwendet wird und definiert, wo der Boss spawnen kann.

KeyWerteStandard
spawnTypeFilenamekeiner
Beispiel
spawnType: nether_spawn.yml

localCooldown

Legt die Zeit in Minuten fest, bevor dieses Event erneut ausgewählt werden kann.

KeyWerteStandard
localCooldownDouble0
Beispiel
localCooldown: 120

globalCooldown

Legt die Zeit in Minuten fest, bevor das nächste Event ausgewählt wird.

KeyWerteStandard
globalCooldownDouble0
Beispiel
globalCooldown: 60

weight

Legt das Gewicht des Events fest, das die Chance beeinflusst, dass es gegenüber anderen Events ausgewählt wird. Empfohlen: 100.

Das Gewichtssystem bestimmt die relative Wahrscheinlichkeit der Event-Auswahl. Zum Beispiel:

  • Event A mit Gewicht 100 vs. Event B mit Gewicht 50 = Event A wird doppelt so wahrscheinlich ausgewählt
  • Höheres Gewicht = höhere Chance, ausgewählt zu werden
  • Der Scheduler für zeitgesteuerte Events startet etwa 5 Minuten nach dem Serverstart und prüft dann einmal pro Minute, ob der globale Cooldown abgelaufen ist und ein Event ausgewählt werden kann
KeyWerteStandard
weightDouble0
Beispiel
weight: 60.5

eventDuration

Legt die maximale Dauer des Events in Minuten fest.

KeyWerteStandard
eventDurationDouble0
Beispiel
eventDuration: 30

endEventWithBossDeath

Legt fest, ob das Event mit dem Tod des Bosses endet.

KeyWerteStandard
endEventWithBossDeathBooleantrue
Beispiel
endEventWithBossDeath: true

eventEndTime

Legt die Spielzeit (in Ticks) fest, zu der das Event endet. Verwende Minecrafts Zeitsystem, wobei 0=Morgendämmerung, 6000=Mittag, 12000=Abenddämmerung, 18000=Mitternacht, 23000=späte Nacht. Setze auf -1, um das zeitbasierte Ende zu deaktivieren.

KeyWerteStandard
eventEndTimeInteger (0-24000, -1 zum Deaktivieren)-1
Beispiel
eventEndTime: 23000


Beachte, dass Events in eine Warteschlange gestellt werden, was bedeutet, dass sie erst starten, wenn die im spawnType definierten Bedingungen erfüllt sind.

Events-Konfigurationsbeispiel
isEnabled: true
eventType: TIMED
bossFilenames:
- "cool_boss.yml"
- "other_cool_boss.yml"
announcementPriority: 3
startMessage: "Cool event is starting!"
endMessage: "Cool event is ending!"
eventStartCommands:
- say The event started!
eventEndCommands:
- say The event ended!
spawnType: "myCoolSpawn.yml"
localCooldown: 30
globalCooldown: 15
weight: 100
eventDuration: 20
endEventWithBossDeath: true
eventEndTime: 10000
minimumPlayerCount: 5

Ein Event manuell auslösen

/em event <event filename>

Stellt ein zeitgesteuertes Event in die Warteschlange, damit es zur nächsten gültigen Zeit und am nächsten gültigen Ort startet, genau so, als hätte der Scheduler es ausgewählt. Der Befehl erfordert die Berechtigung elitemobs.event.start, muss von einem Spieler ausgeführt werden und akzeptiert nur Dateinamen aktivierter Events, deren eventType TIMED ist.

Wenn das Event nicht eingereiht werden kann, wird dir der Grund mitgeteilt: kein gesetzter spawnType, ein spawnType, der nicht auf eine gültige Custom-Spawn-Datei zeigt, keine gültigen bossFilenames oder ein anderes Plugin, das das Event abbricht.

Serverweite Event-Einstellungen

Diese liegen in ~/plugins/EliteMobs/events.yml und gelten für jedes Event:

KeyBeschreibungStandard
actionEventsEnabledOb Aktions-Events überhaupt stattfindentrue
timedEventsEnabledOb zeitgesteuerte Events überhaupt stattfindentrue
actionEventMinimumCooldownMinutesAbklingzeit pro Spieler in Minuten, nachdem ein Aktions-Event ausgelöst wurde4
timedEventMinimumCooldownMinutesMindestzeit in Minuten zwischen dem Start eines zeitgesteuerten Events und dem frühestmöglichen Start des nächsten4
announcementBroadcastWorldOnlyOb Event-Ankündigungen auf die Welt beschränkt sind, in der das Event stattfindetfalse