Zum Hauptinhalt springen

Dungeon-Paketersteller

webapp_banner.jpg

Was sind Dungeons?

Informationen zu Dungeons, einschließlich Informationen zu vorgefertigten Dungeons, findest du hier.


Was ist der Dungeon-Paketersteller?

Der Dungeon-Paketersteller erlaubt es Administratoren, nicht nur Dungeons zu erstellen und zu packen, sondern jede Art von EliteMobs-Inhalten. Dazu gehören etwa Event-Pakete, Modellpakete, Arenen, NPC-Pakete, Gegenstandspakete und so weiter.

Warum Dungeon-Pakete verwenden?
  • Instanzierte Dungeons! Instanzierte Dungeons lassen sich ausschließlich über das Dungeon-Paketsystem erstellen.
  • Sichere Backups von Minidungeons! Wenn du ein Dungeon-Paket erstellst, kannst du es jederzeit und aus jedem beliebigen Grund auf jedem gewünschten Server bereitstellen und erneut bereitstellen.
  • Einfach an- und ausschalten! Du kannst jederzeit /em setup ausführen und Dungeon-Pakete vorübergehend oder dauerhaft an- und ausschalten.
  • Einfach zu teilen! Wenn du deine Kreationen teilen möchtest, lassen sich Dungeon-Pakete einfach zippen und an andere schicken. Es gibt einen Discord-Raum, der Community-Kreationen gewidmet ist, falls dich das interessiert!
  • Teleports! Dungeon-Pakete erzeugen automatisch Teleport-Positionen, die über die Teleport-Seite des /em-Menüs erreichbar sind -- das kann bei vielen Setups sehr nützlich sein.

Dungeons erstellen

Mit den folgenden Einstellungen wird eine Konfigurationsdatei erstellt, die in den Ordner content_packages gehört. Diese Einstellungen dienen speziell dem Erstellen von Dungeons und sind nicht erforderlich, wenn du den Dungeon-Paketersteller lediglich zum Verteilen von Nicht-Dungeon-Inhalten wie einem Gegenstands- oder Event-Paket nutzen möchtest.

Erforderliche Plugins

Keine. Der Dungeon-Schutz wird von EliteMobs selbst übernommen: protect: true wendet die eigene Schutz-Suite von EliteMobs pro Welt auf die Welt des Pakets an, ohne dass ein Regionen-Plugin beteiligt ist.

WorldGuard bleibt eine optionale weiche Abhängigkeit. Ist es installiert, werden seine EliteMobs-spezifischen Regionsflags verfügbar, es wird jedoch nicht benötigt, damit ein Dungeon-Paket geschützt ist.

Einen Dungeon Schritt für Schritt erstellen

EliteMobs hatte früher zwei Hauptarten von Dungeons: weltbasierte und schematicbasierte.

Schematicbasierte Dungeons waren mit einem Schematic-Bauwerk verknüpft. Sie werden inzwischen ausgemustert und nicht mehr unterstützt.

Alle EliteMobs-Dungeons sind jetzt weltbasiert.

Erforderliche pack.meta-Datei

Dein Dungeon-Paket sollte eine pack.meta-Datei enthalten -- schlicht eine umbenannte .txt-Datei mit der Endung .meta. Diese Datei sollte nur ein einziges Wort enthalten, das angibt, für welches Plugin das Paket bestimmt ist (z. B. "elitemobs", kleingeschrieben). Die pack.meta-Datei muss im Stammverzeichnis deines Pakets liegen, neben allen anderen Ordnern.


Globale Werte

Die folgenden Werte gelten für alle Dungeons

isEnabled

Legt fest, ob das Dungeon-Paket aktiviert ist.

SchlüsselWerteStandardPflicht
isEnabledBooleanfalse
Beispiel
isEnabled: true

name

Legt den Namen des Inhalts fest. Unterstützt Color Codes.

SchlüsselWerteStandardPflicht
nameStringnone
Beispiel
name: '&c[lvl 999] &aThe Green Dungeon'

create_packager_name.jpg


contentType

Legt den Typ des Dungeons fest.

SchlüsselWerteStandardPflicht
contentTypeOPEN_DUNGEON / INSTANCED_DUNGEON / DYNAMIC_DUNGEON / HUB / META_PACKAGE / ITEMS_PACKAGE / EVENTS_PACKAGE / MODELS_PACKAGEkeiner
Beispiel
contentType: INSTANCED_DUNGEON

customInfo

Legt die zusätzlichen Informationen fest, die im /em setup-Bildschirm erscheinen. Dient nur zu Informationszwecken. Unterstützt Color Codes.

SchlüsselWerteStandardPflicht
customInfoString Listkeine
Beispiel
customInfo:
- '&aThe best dungeon.'
- '&aMade by: CoolPlayer'

create_packager_custominfo.jpg


setupMenuDescription

Legt die Beschreibung fest, die im /em setup-Menü für dieses Dungeon-Paket erscheint. Unterstützt Color Codes.

SchlüsselWerteStandardPflicht
setupMenuDescriptionString Listkeine
Beispiel
setupMenuDescription:
- '&2A cool dungeon for levels 10-20!'
- '&2Features 3 bosses and custom loot!'

Legt den Download-Link fest, der Spielern im /em setup-Menü angezeigt wird, wenn der Inhalt noch nicht heruntergeladen wurde.

SchlüsselWerteStandardPflicht
downloadLinkStringleere Zeichenkette
Beispiel
downloadLink: http://www.example.org

create_packager_downloadlink.jpg


dungeonSizeCategory

Legt die Größenkategorie des Dungeon-Pakets fest. Dient nur zu Informationszwecken.

SchlüsselWerteStandardPflicht
dungeonSizeCategorySpeziell [1]keine
Beispiel
dungeonSizeCategory: MINIDUNGEON

create_packager_size.jpg

Speziell [1]

Tabelle ausklappen
SchlüsselBeschreibung
LAIRLairs sind eine Art kleiner Dungeon, der sich auf einen großen Bosskampf konzentriert.
SANCTUMSanctums sind das Gegenstück zu instanzierten Lairs. Das bedeutet, dass sie sich auf einen einzigen riesigen Bosskampf konzentrieren.
MINIDUNGEONMinidungeons sind eine Art mittelgroßer Dungeon, der üblicherweise 3-15 Minibosse und einen großen Boss enthält sowie viele "Trash"-Mobs, die von Spielern für Münzen und Ausrüstung "gefarmt" werden sollen.
DUNGEONDungeons sind das Gegenstück zu instanzierten Minidungeons. Das ist der klassischste MMORPG-Dungeontyp, bei dem sich Spieler zu einer Gruppe zusammenschließen und sich durch ein Spießrutenlaufen aus Trash-Mobs und Minibossen kämpfen, um am Ende gegen einen Endboss anzutreten.
RAIDDemnächst verfügbar!
ADVENTUREAdventures sind vollständige Abenteuerkarten. Sie enthalten Questreihen, NPCs, große Mengen an Minibossen und Bossen und können sogar eigene Arenen oder Dungeons in sich tragen.
ARENAArenen sind wellenbasierte Überlebensbereiche, in denen Spieler für das Besiegen von Wellen belohnt werden.
OTHERAlles andere, das nicht bereits in eine der vorherigen Kategorien fällt.
REALMRealms sind große, dauerhafte Welten mit umfangreichen Inhalten und Fortschrittssystemen.

Ausführlichere Beschreibungen findest du unter Dungeons


protect

Legt fest, ob die Welt des Dungeon-Pakets geschützt werden soll. Dabei wird nicht WorldGuard verwendet -- EliteMobs registriert die Welt bei seiner eigenen Schutz-Suite, die das Abbauen und Platzieren von Blöcken, Blockbrand/-verfall/-entzündung, Laubzerfall, Knochenmehl, Flüssigkeitseimer, Schilderbearbeitung, Behälterzugriff (außer Schatztruhen), das Öffnen von Türen/Falltüren/Zauntoren, die Interaktion mit Dracheneiern und Blumentöpfen, das Manipulieren von Rahmen und Rüstungsständern sowie das gewöhnliche Mob-Spawning blockiert. Mehrere dieser Punkte werden zusätzlich über allowExplosionBlockDamage, allowLiquidFlow und allowElytra feinjustiert.

Ist protect auf false gesetzt, greift nichts davon und die Welt verhält sich wie jede normale Welt.

SchlüsselWerteStandardPflicht
protectBooleantrue
Beispiel
protect: true

dungeonVersion

Legt die Version des Dungeon-Pakets fest.

SchlüsselWerteStandardPflicht
dungeonVersionIntegerkeine
Beispiel
dungeonVersion: 1

playerInfo

Legt die Informationen fest, die im Menü erscheinen. Unterstützt Color Codes.

Funktioniert nur, wenn /em über /em alt in den Buchmodus versetzt wurde.

SchlüsselWerteStandardPflicht
playerInfoStringkeine
Beispiel
playerInfo: 'Difficulty: &a1-man easy content!'

create_packager_playerinfo.jpg


regionEnterMessage

Legt die Nachricht fest, die erscheint, wenn ein Spieler die Dungeon-Zone betritt. Unterstützt Color Codes.

SchlüsselWerteStandardPflicht
regionEnterMessageStringkeine
Beispiel
regionEnterMessage: '&aYou have entered the dungeon!'

create_packager_enter.jpg


regionLeaveMessage

Legt die Nachricht fest, die erscheint, wenn ein Spieler die Dungeon-Zone verlässt. Unterstützt Color Codes.

SchlüsselWerteStandardPflicht
regionLeaveMessageStringkeine
Beispiel
regionLeaveMessage: '&aYou have left the dungeon!'

create_packager_leave.jpg


hasCustomModels

Kennzeichnet, dass das Dungeon-Paket eigene Modelle mitbringt (für ModelEngine oder FreeMinecraftModels). Der Schlüssel wird gelesen und geschrieben, aber nichts in EliteMobs wertet ihn derzeit aus -- Modelle werden allein deshalb installiert, weil der Ordner models im Paket vorhanden ist. Betrachte ihn als Dokumentationsmarkierung.

SchlüsselWerteStandardPflicht
hasCustomModelsBooleanfalse
Beispiel
hasCustomModels: false

dungeonConfigFolderName

Legt den Namen der Ordner fest, die für Dateien dieses Dungeons verwendet werden.

Pflicht für instanzierte Dungeons!

SchlüsselWerteStandardPflicht
dungeonConfigFolderNameStringkeiner
Beispiel
dungeonConfigFolderName: my_dungeon_folder

anchorPoint

Legt den Bezugspunkt fest, von dem aus /em relativecoords <package> misst. Ist ein Ankerpunkt gesetzt, kann ein Administrator, der irgendwo innerhalb des installierten Pakets steht, diesen Befehl ausführen und erhält die Koordinaten seines Standorts relativ zum Anker zurück — genau das Format, das etwa Verstärkungs-Offsets und Script-Positionen verwenden.

Ist calculatedRotation ungleich null, wird der zurückgegebene Vektor vor der Anzeige um den Anker auf der Y-Achse rotiert, sodass die Zahlen auch bei rotierten Platzierungen stimmen.

Ohne Ankerpunkt teilt der Befehl dem Administrator mit, dass der Ankerpunkt ungültig ist, und tut sonst nichts.

SchlüsselWerteStandardPflicht
anchorPointLocationkeiner
calculatedRotationInteger (Grad)0
Beispiel
anchorPoint: my_dungeon_world,100,64,100,0,0
calculatedRotation: 0

contentLevel

Legt das Inhaltslevel fest, das der Dungeon im EM-Menü anzeigen soll.

SchlüsselWerteStandardPflicht
contentLevelIntegerkeins
Beispiel
contentLevel: 20

enchantmentChallenge

Legt fest, ob der Dungeon ein Verzauberungs-Herausforderungs-Dungeon sein soll.

SchlüsselWerteStandardPflicht
enchantmentChallengeBooleanfalse
Beispiel
enchantmentChallenge: false

song

Legt fest, ob der Dungeon einen Soundtrack haben soll.

SchlüsselWerteStandardPflicht
songStringnone

name= Hier legst du fest, welche Datei aus dem Ressourcenpaket abgespielt werden soll.
length= Die Länge des Soundtracks in Millisekunden. EliteMobs rechnet dies intern in Ticks um, daher muss es die tatsächliche Dauer des Klangs sein, sonst startet der Titel zu früh oder zu spät neu.

Die beiden Teile werden durch ein Leerzeichen getrennt. Zwei Titel lassen sich mit -> verketten, wobei der zweite Eintrag dieselbe name=/length=-Syntax verwendet.

Beispiel
song: name=elitemobs:dark_cathedral.ambient length=93830

Form mit zwei Titeln:

song: name=elitemobs:intro length=12000->name=elitemobs:dark_cathedral.ambient length=93830

dungeonLockoutMinutes

Legt eine Dungeon-Sperrzeit fest, nachdem der Boss des Dungeons erschlagen wurde. Der angegebene Wert ist in Minuten. Der Standard beträgt seit EliteMobs 10.3.1 4320 (72 Stunden) und gilt für jedes vorgefertigte Inhaltspaket — setze ihn in deiner YAML auf 0, um die Sperre für ein bestimmtes Paket zu deaktivieren, oder auf eine andere positive Zahl, um ihn zu überschreiben. Gesperrte Spieler erhalten außerdem keine Skill-EP von dem Boss, für den ihre Sperre läuft.

SchlüsselWerteStandardPflicht
dungeonLockoutMinutesInteger4320
Beispiel
dungeonLockoutMinutes: 1440

containedPackages

Legt die Liste der Dungeon-Pakete fest, die in einem Meta-Paket enthalten sind. Dies wird verwendet, wenn contentType auf META_PACKAGE gesetzt ist, um alle Unterpakete aufzuführen, die zum größeren Dungeon gehören.

SchlüsselWerteStandardPflicht
containedPackagesString Listkeine
Beispiel
containedPackages:
- my_dungeon_adventure.yml
- my_dungeon_sanctum.yml
- my_dungeon_boss_fight.yml

customItemFilenames

Legt die Liste der benutzerdefinierten Gegenstandsdateien für ein Gegenstandspaket fest. Das Setzen dieses Werts setzt contentType automatisch auf ITEMS_PACKAGE.

SchlüsselWerteStandardPflicht
customItemFilenamesString Listkeine
Beispiel
customItemFilenames:
- my_custom_sword.yml
- my_custom_armor.yml

customEventFilenames

Legt die Liste der benutzerdefinierten Event-Dateien für ein Event-Paket fest. Das Setzen dieses Werts setzt contentType automatisch auf EVENTS_PACKAGE.

SchlüsselWerteStandardPflicht
customEventFilenamesString Listkeine
Beispiel
customEventFilenames:
- my_custom_event.yml

modelNames

Legt die Liste der Modellnamen für ein Modellpaket fest. Das Setzen dieses Werts setzt contentType automatisch auf MODELS_PACKAGE.

SchlüsselWerteStandardPflicht
modelNamesString Listkeine
Beispiel
modelNames:
- my_custom_model

Übersetzbare Schlüssel

Sechs der oben genannten Werte werden beim Laden des Pakets beim Übersetzungssystem registriert: name, customInfo, playerInfo, regionEnterMessage, regionLeaveMessage und der name jedes Eintrags in difficulties. Auf einem Server mit einer nicht englischen Sprache werden diese in der CSV-Datei der jeweiligen Sprache nachgeschlagen, und der Text, den du in der YAML schreibst, ist das, womit die englische Spalte abgeglichen wird. Schreibe sie auf Englisch, wenn dein Paket übersetzbar sein soll.


Weltbasierte Dungeon-Pakete

Die folgenden Werte gelten nur für weltbasierte Dungeons.


worldName

Legt den Namen der Welt fest, die gepackt werden soll.

SchlüsselWerteStandardPflicht
worldNameStringkeiner
Beispiel
worldName: my_minecraft_world

wormholeWorldName

Diese Funktion legt den Namen der Wurmloch-Welt fest, die als sekundäre, mit der Hauptwelt verknüpfte Welt dient. Sie wird für Funktionen wie Teleport-Hubs oder besondere Bosskammern genutzt.

SchlüsselWerteStandardPflicht
wormholeWorldNameStringkeiner
Beispiel
wormholeWorldName: my_minecraft_world_wormhole

environment

Legt die Umgebung der Welt fest.

SchlüsselWerteStandardPflicht
environmentEnvironmentkeine
Beispiel
environment: NORMAL

teleportLocation

Legt die Teleport-Position des Dungeon-Pakets fest. Dorthin werden die Spieler teleportiert, wenn sie den Dungeon betreten.

SchlüsselWerteStandardPflicht
teleportLocationStringkeine
Beispiel
teleportLocation: my_minecraft_world,-1.5,68,0.5,0.0,0.0

allowExplosionBlockDamage

Erlaubt oder verhindert, dass Explosionen Blöcke in einem Dungeon beschädigen. Die Explosionen gelten als Elite-Explosionen, daher wird jeglicher Blockschaden innerhalb von 2 Minuten regeneriert.

SchlüsselWerteStandardPflicht
allowExplosionBlockDamageBooleanfalse
Beispiel
allowExplosionBlockDamage: true

allowLiquidFlow

Legt fest, ob Flüssigkeiten (Wasser, Lava) im Dungeon fließen dürfen.

SchlüsselWerteStandardPflicht
allowLiquidFlowBooleantrue
Beispiel
allowLiquidFlow: false

allowElytra

Legt fest, ob Spieler in der Welt dieses Inhaltspakets mit einer Elytra gleiten dürfen. Bei false (dem Standard) bricht EliteMobs Gleitversuche in der Welt des Pakets ab und setzt den Nicht-Gleit-Zustand in jedem Tick erneut durch — nützlich, um Spieler davon abzuhalten, die vorgesehene Dungeon-Durchquerung zu überspringen.

SchlüsselWerteStandardPflicht
allowElytraBooleanfalse
Beispiel
allowElytra: true

listedInTeleports

Legt fest, ob das Dungeon-Paket im Teleport-Menü erscheint. Ist es auf false gesetzt, können Spieler nicht über das /em-Teleport-Menü zum Dungeon teleportieren.

SchlüsselWerteStandardPflicht
listedInTeleportsBooleantrue
Beispiel
listedInTeleports: false

teleportLocationOffset

Legt einen Versatz für die Teleport-Position des Dungeon-Pakets fest.

Dieser Schlüssel wird ausgewertet, aber derzeit nicht verwendet -- nichts in EliteMobs liest den resultierenden Versatz aus, das Setzen hat also keine Auswirkung darauf, wo Spieler landen. Passe stattdessen teleportLocation selbst an.

SchlüsselWerteStandardPflicht
teleportLocationOffsetStringkeiner
Beispiel
teleportLocationOffset: my_minecraft_world,0.5,2,0.5,0.0,0.0

Instanzierte Dungeons

Instanzierte Dungeons erzeugen jedes Mal eine neue Welt, wenn eine Gruppe von Spielern einen Dungeon abschließen möchte, und löschen sie anschließend wieder. Damit das korrekt funktioniert, musst du einen Ordner mit dem Namen aus dungeonConfigFolderName in den Konfigurationsordner world_blueprints von EliteMobs legen.

Anschließend legst du die zu verwendende Welt in den erstellten Ordner und stellst sicher, dass die Datei session.lock der Welt gelöscht wurde.

Die folgenden Werte gelten nur für instanzierte Dungeons. Beachte, dass alle instanzierten Dungeons Welt-Dungeons sind und daher auch die Werte von Welt-Dungeons verwenden.


startLocation

Legt die Teleport-Position des Startpunkts des instanzierten Dungeons fest. Dorthin werden die Spieler teleportiert, wenn sie den instanzierten Dungeon mit /em start beginnen.

SchlüsselWerteStandardPflicht
startLocationStringkeine
Beispiel
startLocation: my_minecraft_world,10.5,70,10.5,0.0,0.0

permission

Legt die Berechtigung fest, die zum Betreten der Dungeon-Instanz erforderlich ist.

SchlüsselWerteStandardPflicht
permissionStringkeine
Beispiel
permission: elitedungeon.mypermission

minPlayerCount

Legt die Mindestanzahl an Spielern fest, die zum Starten eines Dungeons erforderlich ist.

SchlüsselWerteStandardPflicht
minPlayerCountInteger1
Beispiel
minPlayerCount: 1

maxPlayerCount

Legt die maximale Anzahl an Spielern fest, die in einem Dungeon zugelassen ist.

SchlüsselWerteStandardPflicht
maxPlayerCountInteger5
Beispiel
maxPlayerCount: 5

dungeonObjectives

Legt die Liste der Dungeon-Ziele fest, die erfüllt sein müssen, damit der Dungeon als abgeschlossen gilt.

SchlüsselWerteStandardPflicht
dungeonObjectivesString Listkeine
Beispiele

Derzeit gibt es zwei Arten von Dungeon-Zielen:

  • Ziel töten: filename=boss.yml:amount=X
  • Prozentsatz des Dungeons ausräumen: clearpercentage=X.Y
dungeonObjectives:
- filename=dungeon_final_boss.yml
- filename=dungeon_miniboss_one.yml
- filename=dungeon_miniboss_two.yml
dungeonObjectives: 
- clearpercentage=0.8

difficulties

Legt die Liste der Schwierigkeitsgrade im instanzierten Dungeon fest.

Pflicht für instanzierte Dungeons!

SchlüsselWerteStandardPflicht
difficultiesSpeziell [1]keine
Beispiele
difficulties:
- levelSync: 25
id: 0
name: normal
- levelSync: 20
id: 1
name: hard
- levelSync: 15
id: 2
name: mythic

create_packager_difficulty.jpg

Speziell [1]

Tabelle ausklappen

Das Festlegen von Schwierigkeitsgraden für instanzierte Dungeons erzeugt beim Betreten des Dungeons automatisch verschiedene Schwierigkeitsoptionen.

Die hier festgelegten Schwierigkeitsnamen sind diejenigen, die im Ordner für benutzerdefinierte Bosse verwendet werden, wo du festlegen kannst, welche Kräfte Bosse je nach Schwierigkeitsgrad besitzen.

Schwierigkeitsgrade liegen als Liste vor und haben die folgenden Felder:

SchlüsselBeschreibungWertePflicht
nameName des Schwierigkeitsgrads für Spieler.String
idID des Schwierigkeitsgrads, wird in benutzerdefinierten Bossen und Gegenständen für die schwierigkeitsabhängige Funktion verwendet.String
levelSyncLegt das Level des Level-Syncs fest, falls vorhanden. Level-Sync begrenzt die gesamte Spielerausrüstung auf den festgelegten Wert, sodass Spieler für einen Dungeon nicht überleveln können und dieser auch für spätere Durchläufe relevant bleibt. Angelehnt an das Level-Sync-System von Final Fantasy 14.Integer

Dynamische Dungeons

Dynamische Dungeons sind eine Erweiterung instanzierter Dungeons, mit einem entscheidenden Unterschied: Sie erlauben es, den Inhalt des Dungeons auf den vom Spieler gewählten Schwierigkeitsgrad zu skalieren. Welche Level-Optionen dem Spieler zur Verfügung stehen, wird durch das freigeschaltete Gildenlevel des Spielers bestimmt.

Verwende beim Entwerfen von Bossen und Mobs für einen dynamischen Dungeon die Einstellung level: dynamic. Jegliche Beute in dynamischen Dungeons sollte mit scalability: scalable versehen werden.

Die folgenden Werte werden für dynamische Dungeons benötigt.
Da alle dynamischen Dungeons auch instanzierte Dungeons sind, verwenden sie zusätzlich alle Werte und Einstellungen instanzierter Dungeons.


contentType

Legt den Typ des Dungeons fest. Dies muss auf DYNAMIC_DUNGEON gesetzt werden.

SchlüsselWerteStandardPflicht
contentTypeOPEN_DUNGEON / INSTANCED_DUNGEON / DYNAMIC_DUNGEON / HUB / META_PACKAGE / ITEMS_PACKAGE / EVENTS_PACKAGE / MODELS_PACKAGEkeiner
Beispiel
contentType: DYNAMIC_DUNGEON

contentLevel

Legt das Inhaltslevel fest, das der Dungeon im EM-Menü anzeigen soll. Dieser Wert muss auf -1 gesetzt werden, damit der Dungeon als dynamischer Dungeon angezeigt wird.

SchlüsselWerteStandardPflicht
contentLevelIntegerkeins
Beispiel
contentLevel: -1

difficulties

Legt die verfügbare Liste der Schwierigkeitsgrade und den Level-Sync im dynamischen Dungeon fest.

Pflicht für instanzierte Dungeons!

SchlüsselWerteStandardPflicht
difficultiesSpeziell [1]keine
Beispiele
difficulties:
- levelSync: '+5'
name: normal
id: 0
- levelSync: '+0'
name: hard
id: 1
- levelSync: '-5'
name: mythic
id: 2

create_packager_difficulty.jpg

Speziell [1]

Tabelle ausklappen

Das Festlegen von Schwierigkeitsgraden für instanzierte Dungeons erzeugt beim Betreten des Dungeons automatisch verschiedene Schwierigkeitsoptionen.

Die hier festgelegten Schwierigkeitsnamen sind diejenigen, die im Ordner für benutzerdefinierte Bosse verwendet werden, wo du festlegen kannst, welche Kräfte Bosse je nach Schwierigkeitsgrad besitzen.

Werden levelSync-Werte als positive oder negative Zahlen in Anführungszeichen gesetzt, steuert das, wie die Ausrüstung des Spielers innerhalb des Dungeons synchronisiert wird. Diese Werte beeinflussen nicht das Level des Dungeons selbst -- der Dungeon-Inhalt synchronisiert sich beim Betreten immer direkt mit der Levelwahl des Spielers.

Ist levelSync beispielsweise auf "+0" gesetzt, wird die Ausrüstung des Spielers exakt auf das Inhaltslevel des Dungeons synchronisiert.
Bei "+5" wird die Ausrüstung des Spielers auf 5 Level über dem Dungeon-Inhalt synchronisiert.
Bei "-5" wird seine Ausrüstung auf 5 Level unter dem Dungeon-Inhalt synchronisiert.

Schwierigkeitsgrade liegen als Liste vor und haben die folgenden Felder:

SchlüsselBeschreibungWertePflicht
nameName des Schwierigkeitsgrads für Spieler.String
idID des Schwierigkeitsgrads, wird in benutzerdefinierten Bossen und Gegenständen für die schwierigkeitsabhängige Funktion verwendet.String
levelSyncLegt das Level für die Skalierung der Spielerausrüstung fest. Das bestimmt, wie das Ausrüstungslevel eines Spielers relativ zum Dungeon-Inhalt angepasst wird, sodass die Ausrüstung einige Level über oder unter dem gewählten Dungeon-Schwierigkeitsgrad liegen kann. Angelehnt an das Level-Sync-System von Final Fantasy 14.Integer

Die Dungeon-Paketdatei meta_pack.yml für große Dungeons verwenden

Manchmal arbeitest du vielleicht an einem großen Dungeon, der weitere, kleinere Dungeons in sich enthält, sodass Spieler über die Hauptwelt des Dungeons zwischen ihnen reisen können. Ein hervorragendes Beispiel dafür ist der EliteMobs-Abenteuer-Dungeon Primis.

Primis bietet eine riesige Welt, in der Spieler erkunden und Quests abschließen können, enthält jedoch auch zwei instanzierte Dungeons in seiner Welt -- einer davon dient als finaler Bosskampf. In solchen Fällen gibt es mehrere Dungeon-Paketdateien, obwohl sie alle zum selben übergeordneten Dungeon gehören.

Um das zu verwalten, verwenden wir eine Meta-Dungeon-Paketdatei. Diese Datei fungiert als zentrales Verzeichnis, benennt den Haupt-Dungeon und führt alle zusätzlichen zugehörigen Dungeon-Inhalte auf.

Sehen wir uns genauer an, wie das Meta-Dungeon-Paket von Primis aufgebaut ist:

isEnabled: true
name: '&2[000-020] The Primis Adventure!'
customInfo:
- The tutorial adventure for players
- new to EliteMobs!
downloadLink: https://discord.gg/9f5QSka
dungeonSizeCategory: LAIR
environment: NORMAL
protect: true
contentType: META_PACKAGE
containedPackages:
- primis_adventure.yml
- primis_blood_temple_sanctum.yml
- primis_gladius_invasion_dungeon.yml
setupMenuDescription:
- '&2A soft tutorial adventure for players between levels 0-20!'
- '&2Adventures are massive maps with quests,'
- '&2many bosses and npcs, among other things!'
- '&2Also has custom models!'
dungeonVersion: 21 #added dungeon meta package file

Wie du siehst, ähnelt die Meta-Dungeon-Paketdatei stark einem gewöhnlichen Dungeon-Paket, mit einigen entscheidenden Unterschieden. contentType: ist auf META_PACKAGE gesetzt, und es gibt eine zusätzliche Einstellung namens containedPackages:. Diese Einstellung listet alle anderen Dungeon-Pakete auf, die Teil des größeren Dungeons sind.

Achte beim Erstellen deines Meta-Pakets darauf, die Einstellung containedPackages: einzubinden und jedes Dungeon-Paket aufzuführen, das Teil deines größeren Dungeons ist. So ist sichergestellt, dass alles innerhalb der übergeordneten Struktur korrekt verknüpft und organisiert ist.

Bei der Versionierung deines Dungeons sollte die gesamte Versionierung über das Meta-Paket erfolgen. Das liegt daran, dass das Meta-Paket als Hauptpaket dient, das die Version des gesamten Dungeons bestimmt, und außerdem das Paket ist, über das Informationen im /em setup-Menü angezeigt werden.

Bedenke, dass einzelne im Meta-Paket aufgeführte Dungeons weiterhin im /em setup-Teleport-Menü erscheinen können. Um das zu verhindern, musst du die Teleport-Optionen für jeden dieser Dungeons in deren jeweiligen Konfigurationsdateien manuell deaktivieren.

Zum Beispiel im Fall des Primis-Dungeons:

Deaktiviere die Teleport-Einträge im Menü für primis_blood_temple_sanctum.yml und primis_gladius_invasion_dungeon.yml. Lasse die Teleport-Optionen für primis_adventure.yml aktiviert, da diese als Haupt-Hub dient, in dem Spieler ihre Reise beginnen und auf die anderen Dungeons zugreifen. Dieses Setup sorgt für ein reibungsloses Spielerlebnis und erhält gleichzeitig die passende Struktur und Funktionalität des Dungeon-Systems.

Für die Benennung der Datei empfehlen wir die folgende Namenskonvention:

your_dungeon_name_meta_pack.yml


Empfohlene Bosswerte

Einen durchschnittlichen Dungeon-Mob erstellen

Wir empfehlen, die Einstellung normalizedCombat auf true zu belassen. Diese Einstellung normalisiert alle Mobs so, dass sie unabhängig von ihrem Entitätstyp gleichermaßen mit Leben und Schaden skalieren.

Beachte, dass dies bei Dungeon-Inhalten meist bereits für dich entschieden ist: Solange normalizeRegionalBosses in MobCombatSettings.yml auf true steht (der Standard), wird jeder regionale Boss und jeder Boss eines instanzierten Dungeons unabhängig von der Boss-Datei auf normalisierten Kampf gezwungen. Die untenstehenden Multiplikatoren sind daher die Werte, die tatsächlich zählen.

normalizedCombat: true
healthMultiplier: 1.0 #~3 sword hits to slay
damageMultiplier: 1.0 #1.5 hearts of dmg

Hinweis: Da 1.0 der Standardwert für Leben und Schaden ist, kannst du die Definition von healthMultiplier oder damageMultiplier einfach weglassen und normalizedCombat auf true setzen.

Trash-Packs erstellen

Trash-Packs sind zahlreich, aber nicht besonders gefährlich:

normalizedCombat: true
healthMultiplier: 0.7 #~2 sword hits to slay
damageMultiplier: 0.5 #0.5 hearts of dmg

Verstärkungen erstellen

Verstärkungen sollten sehr leicht sterben, aber schadensmäßig eine Gefahr darstellen (diese Werte werden für 4+ Nahkampf-Entitäten empfohlen, der tatsächliche Einsatz kann abweichen):

normalizedCombat: true
healthMultiplier: 0.25 #~1 sword hit to slay
damageMultiplier: 0.6 #1 heart of dmg

Minibosse erstellen

Minibosse sollten sich behaupten und Spielern eine mechanische Herausforderung bieten. Es sollte eine Geschicklichkeitsprobe sein, die eine Weile dauert, aber nichts extrem Tödliches:

normalizedCombat: true
healthMultiplier: 3.0 #~10 sword hits to slay
damageMultiplier: 1.2 #2 hearts of dmg

Bosse erstellen

Bosse sind eine echte Herausforderung, der Höhepunkt eines Spannungsaufbaus in einem Dungeon und eine echte Geschicklichkeitsprobe, bei der alles auf dem Spiel steht. Begegnungen sollten lang sein und der Tod eine allgegenwärtige Bedrohung.

normalizedCombat: true
healthMultiplier: 7.0 #~23 sword hits to slay
damageMultiplier: 1.4 #2.5 hearts of dmg

Diese empfohlenen Werte sind lediglich grobe Schätzungen; die endgültigen Werte sollten an die konkreten Begegnungen angepasst werden.

Das gilt insbesondere für finale Dungeon-Bosse: Du solltest den empfohlenen Wert von 7.0 für healthMultiplier deutlich überschreiten, um dem letzten Kampf das gewisse epische Gefühl zu verleihen.

Mind the health ceiling before pushing healthMultiplier up

Die Lebenspunkte eines Bosses werden auf den Serverwert settings.attribute.maxHealth.max begrenzt (2048 auf einem Standardserver), der Bossschaden hingegen wird nicht begrenzt. Jeder Multiplikator hat daher ein Level, ab dem der Boss keine Lebenspunkte mehr hinzugewinnt, während sein Schaden weiter skaliert — 7.0 erreicht die Grenze bei Level 36, 10.0 bei Level 33, 40.0 bei Level 23. Den Multiplikator über den Punkt hinaus anzuheben, an dem er ohnehin begrenzt wird, bringt dir nichts außer einem zerbrechlicheren Boss. Die vollständige Tabelle und wie du die Obergrenze anhebst, findest du unter healthMultiplier.


EliteMobs-Inhalte zur Weitergabe packen

Zu guter Letzt möchtest du deinen Dungeon vermutlich zur Aufbewahrung oder zur Weitergabe packen.

EliteMobs verfügt über ein Importsystem, mit dem Administratoren Inhalte schnell importieren, installieren und deinstallieren können. Wie es funktioniert, siehst du hier.

Dungeon-Ressourcenpakete verteilen

Seit EliteMobs 9.6.0 können Dungeons mit ihren eigenen Ressourcenpaketen gepackt und verteilt werden! Damit lassen sich coole Dinge umsetzen, etwa eigene Texturen oder Modelle für Beute aus dem Dungeon oder eigene Klänge -- so wie wir es in unserem Dungeon The Hallowed Haunt gemacht haben.

Um ein Ressourcenpaket mit deinem Dungeon zu verteilen, erstelle es wie jedes gewöhnliche Ressourcenpaket. Wenn du eine Vorlage brauchst, kannst du dich am Standard-Ressourcenpaket von EliteMobs orientieren, das EliteMobs beim Start nach plugins/EliteMobs/resource_pack/em_rsp_defaults/ exportiert. Das Ressourcenpaket muss unkomprimiert verteilt werden. Erstelle daher einen Ordner mit dem Namen deines Dungeons, zum Beispiel my_cool_dungeon_rsp. Lege alle Ressourcenpaket-Dateien, die normalerweise in das Zip gehören würden, in diesen Ordner. Lege diesen Ordner anschließend in einen neuen Ordner namens resource_pack -- das ist derselbe Ordner, in dem EliteMobs sein Standard-Ressourcenpaket ablegt.

Bearbeite em_rsp_defaults nicht selbst: EliteMobs bildet bei jedem Start eine Prüfsumme der Kopie in seiner Jar und löscht den Ordner und exportiert ihn neu, sobald sich beide unterscheiden -- deine Änderungen gehen also verloren.

Nach dem Ordnen deiner Dateien sollte die Verzeichnisstruktur so aussehen:

resource_pack
└── my_cool_dungeon_rsp
└── [resource pack files]

Ist alles fertig, sollte dein Dungeon-Ressourcenpaket bei der Installation des Dungeons erfolgreich importiert werden.

Welten zuschneiden

Manchmal musst du die Größe deiner Minecraft-Welt reduzieren, um sie leichter und damit einfacher verteilbar zu machen. Das lässt sich mit dem WorldBorder-Plugin erreichen. Obwohl das Plugin als nur bis MineCraft-Version 1.19 unterstützt gelistet ist, funktioniert es mit Stand 25. Januar 2024 reibungslos auf der neuesten MineCraft-Version.

Details

Tip Wenn du das zum ersten Mal machst, ist es vielleicht eine gute Idee, ein Backup deiner Welt anzulegen, falls etwas schiefgeht.

Sobald das Plugin installiert ist, begib dich in die Mitte der Welt oder in den Bereich, den du zuschneiden möchtest. Führe dann den Befehl /wb set x aus, wobei x der ungefähre Radius ist, den dein Bereich haben soll.

Details

Tip Falls /wb bei dir nicht funktioniert, versuche /worldborder:wb.

Nach dem Ausführen dieses Befehls fliege zu den Rändern deiner Welt, um zu prüfen, ob die Weltgrenze korrekt gesetzt wurde und die gewünschte Größe abdeckt. Du erkennst den Rand der Weltgrenze daran, dass du zurückgestoßen wirst, begleitet von einer Nachricht im Chat.

trim_pic_1.jpg

Im obigen Bild möchten wir die Welt rund um die violetten Blöcke zuschneiden und nur wenige Chunks um sie herum belassen. Dazu stellen wir uns in die Mitte des violetten Bereichs auf die roten Quadrate und führen /wb set 50 aus, wodurch die Weltgrenze knapp außerhalb des violetten Bereichs gesetzt wird.

Als Nächstes verwenden wir den Befehl /wb trim [freq] [pad], mit der Frequenz 200 und dem Pad 20. Das Pad bestimmt, wie viele Chunks rund um die Weltgrenze (den violetten Bereich) erhalten bleiben sollen, und die Frequenz bestimmt, wie viele Chunks pro Sekunde verarbeitet werden. Nach dem Ausführen von /wb trim 200 20 werden wir aufgefordert, mit /wb trim confirm zu bestätigen. Wir bestätigen die Aktion, und nach einiger Zeit ist unsere Welt zugeschnitten, wodurch ihre Größe sinkt und sie sich bequemer verteilen lässt.

Du kannst die Weltgrenze nun mit /wb clear all entfernen oder sie einfach belassen, wenn du möchtest.

Den Weltordner zuschneiden

Im Weltordner liegen mehrere Dateien und Ordner, die wir verwerfen können, da die Plugins nicht alle davon nutzen. Das verringert die Größe deiner Welt und erleichtert die Weitergabe.

Für eine Weltumgebung vom Typ NORMAL:

Um deine Welt vorzubereiten, behalte die folgenden Dateien und Ordner:

  1. Ordner region
  2. raids.dat aus dem Ordner data (achte darauf, dass sie beim Kopieren im Ordner data liegt)
  3. Datei level.dat

Alle anderen Dateien und Ordner im Weltordner kannst du bedenkenlos löschen. Damit ist deine Welt für die Umgebung NORMAL korrekt eingerichtet.

Für die Weltumgebungen NETHER und THE_END:

Um deine Welt vorzubereiten, behalte die folgenden Dateien und Ordner:

  1. Ordner region im Ordner DIM-1 (achte darauf, dass er beim Kopieren im Ordner DIM-1 liegt)
  2. raids.dat aus dem Ordner data (achte darauf, dass sie beim Kopieren im Ordner data liegt)
  3. Datei level.dat

Alle anderen Dateien und Ordner im Weltordner kannst du bedenkenlos löschen. Damit ist deine Welt für die Umgebungen NETHER und THE_END korrekt eingerichtet.

Den Paketbefehl ausführen

EliteMobs verfügt über den Befehl /em package <dungeonName> <version>. Dieser Befehl sucht in jedem der unten aufgeführten Inhaltsordner nach einem Unterordner namens dungeonName, kopiert alles Gefundene nach exports/<dungeonName>/ und zippt das anschließend zu exports/<dungeonName>_packaged.zip.

Die durchsuchten Ordner sind, in dieser Reihenfolge:

custombosses, customevents, npcs, customitems, customquests, customarenas, customspawns, customtreasurechests, wormholes, world_blueprints, powers

Alles, was nicht gefunden wird, erzeugt einen Hinweis "no subdirectory" und wird übersprungen -- das ist bei einem Paket normal, das nicht jeden Inhaltstyp verwendet.

Aus diesem Grund wird dringend empfohlen, die Inhalte, die du packen möchtest, in Ordnern mit demselben Namen wie dein Paket abzulegen. Andernfalls musst du die Dateien für die Weitergabe manuell zusammentragen und in die Dateistruktur einordnen.

Beachte, dass /em package die Ordner content_packages, worldcontainer, models und resource_pack nicht erfasst. Diese vier musst du vor dem Zippen von Hand in den Exportordner legen.

Die Dungeon-Paketdatei hinzufügen

Wenn du einen Dungeon erstellst, musst du die Dungeon-Paketdatei manuell in den frisch erzeugten Ordner im Exportordner legen. Deine Konfigurationsdatei für das Dungeon-Paket sollte dem oben beschriebenen Format folgen und in einem Ordner namens content_packages liegen. Mehr dazu findest du unten im Abschnitt File structure.

Vergiss nicht, deinen Dungeon anschließend zu zippen!

Dateistruktur

Wenn du alles richtig gemacht hast, sollte die Dateistruktur diesem Beispiel ähneln, in dem wir den Dungeon my_cool_dungeon genannt haben:

my_cool_dungeon File Structure Example
  • my_cool_dungeon.zip
    • content_packages
      • my_cool_dungeon.yml <- Hier kommt deine Konfigurationsdatei für das Dungeon-Paket hin
    • worldcontainer
      • [Hier kommen deine Weltordner hin]
    • wormholes
      • my_cool_dungeon
        • [Hier kommen deine Wurmlöcher hin]
    • npcs
      • my_cool_dungeon
        • [Hier kommen deine NPCs hin]
    • customtreasurechests
      • my_cool_dungeon
        • [Hier kommen deine Schatztruhen hin]
    • customquests
      • my_cool_dungeon
        • [Hier kommen deine Quests hin]
    • customitems
      • my_cool_dungeon
        • [Hier kommen deine benutzerdefinierten Gegenstände hin]
    • custombosses
      • my_cool_dungeon
        • [Hier kommen deine benutzerdefinierten Bosse hin]
    • customarenas
      • my_cool_dungeon
        • [Hier kommen deine benutzerdefinierten Arenen hin]
    • powers
      • my_cool_dungeon
        • [Hier kommen deine benutzerdefinierten Kräfte hin]
    • world_blueprints
      • my_cool_dungeon
        • [Hier kommt dein Weltordner hin, wird für instanzierte Dungeons verwendet]
    • customevents
      • my_cool_dungeon
        • [Hier kommen deine benutzerdefinierten Events hin]
    • customspawns
      • my_cool_dungeon
        • [Hier kommen deine benutzerdefinierten Spawns hin]
    • models
      • [Hier kommen deine Modelle im bbmodel-Format hin, Ordner sind zulässig]
    • scripts
      • [Hier kommen deine FreeMinecraftModels-Lua-Skripte hin]
    • resource_pack
      • my_cool_dungeon_rsp
        • [Hier kommen deine Ressourcenpaket-Dateien hin]

Dadurch können die meisten Nutzer die Dateien einfach per Drag-and-drop auf ihren Server ziehen und alles funktioniert sofort.

Erkannte Ordner auf oberster Ebene

Der Importer versteht nur eine feste Menge an Namen auf oberster Ebene. Für ein EliteMobs-Paket (pack.meta mit dem Inhalt elitemobs) sind das:

OrdnerWo er installiert wird
content_packagesplugins/EliteMobs/content_packages
dungeonpackagesplugins/EliteMobs/content_packages (alter Aliasname)
custombossesplugins/EliteMobs/custombosses
customitemsplugins/EliteMobs/customitems
customtreasurechestsplugins/EliteMobs/customtreasurechests
customeventsplugins/EliteMobs/customevents
customspawnsplugins/EliteMobs/customspawns
customquestsplugins/EliteMobs/customquests
customarenasplugins/EliteMobs/customarenas
npcsplugins/EliteMobs/npcs
wormholesplugins/EliteMobs/wormholes
powersplugins/EliteMobs/powers
world_blueprintsplugins/EliteMobs/world_blueprints
resource_packplugins/EliteMobs/resource_pack
worldcontainerder Weltcontainer des Servers
models oder modelengineModellordner von FreeMinecraftModels, wenn FreeMinecraftModels installiert ist, andernfalls der blueprints-Ordner von ModelEngine
scriptsplugins/FreeMinecraftModels/scripts
pack.metawird nirgendwo installiert -- sie wird nur gelesen, um das Paket zu identifizieren

Alles andere auf oberster Ebene des Zips wird nicht erkannt und nicht installiert. Halte daher herumliegende Readme-Dateien, Screenshots und __MACOSX-Ordner aus dem Archivstamm heraus.

schematics ist ein Sonderfall: Der Import in EliteMobs gibt eine Warnung aus, die dich darauf hinweist, dass Schematic-Dungeons in EliteMobs 9.0 entfernt wurden.

Wichtig: Achte beim Packen zur Weitergabe darauf, den MINIDUNGEON ZUERST ZU DEINSTALLIEREN! Du willst keine installierten Minidungeons verteilen, sondern dass Administratoren sie auf ihren Servern selbst einrichten!

Von dir erstellte Dungeon-Pakete mit der Community teilen

Auf Discord gibt es einen Bereich #community_dungeons, in dem Leute ihre Minidungeon-Kreationen teilen können. Trag gerne etwas bei!