Was sind modulare Dungeons?
Modulare Dungeons sind ein Dungeon-System, das in BetterStructures 2.0.0 und später eingeführt wurde. Anstatt als ein festes Schematic zu spawnen, werden modulare Dungeons dynamisch aus kleineren, handgefertigten Modulen zusammengesetzt. Dieser Ansatz ermöglicht große, mehrstöckige Dungeons, die sich in jeder Welt einzigartig anfühlen und sich dennoch nahtlos in Vanilla-Minecraft einfügen.
Wie werden modulare Dungeons generiert
-
Module Jedes Modul wird typischerweise in einer konfigurierbaren Größe gebaut (Standard 16x16x16 Blöcke, obwohl einige Inhaltspakete 32x16x32 oder andere Dimensionen verwenden). Module werden mit standardisierten Verbindungspunkten mittels eines Border-Tag-Systems entworfen, damit sie ohne Lücken oder Überlappungen an andere Module angehängt werden können. Die Dimensionen für einen Dungeon werden mit den Konfigurationsoptionen
moduleSizeXZundmoduleSizeYin der Modulgenerator-Konfiguration festgelegt. Module können Korridore, Räume, Treppen oder spezielle Begegnungsräume enthalten. -
Generierungsprozess Wenn ein modularer Dungeon in einem neuen Chunk generiert wird, verwendet BetterStructures einen Wave Function Collapse (WFC) Algorithmus, um Module aus dem verfügbaren Pool prozedural zusammenzusetzen. Das System wählt zufällig kompatible Module basierend auf Border-Tag-Abgleich aus und "näht" sie zu einem vollständigen Dungeon zusammen. Die Generierungszeit variiert basierend auf Serverleistung, Dungeon-Größe (Radius), vertikalem Bereich, Modulanzahl und Einschränkungskomplexität. Das System verwendet Arbeitslastverteilung, um Server-Lag während der Generierung zu verhindern.
-
Dungeon-Größe Dungeons können so konfiguriert werden, dass sie in verschiedenen Größen mittels des Radius-Parameters generiert werden. Größere Radiuswerte erzeugen deutlich größere Dungeons, die sich über Hunderte von Blöcken erstrecken können. Die meisten Dungeons umfassen mehrere Stockwerke, verbunden durch Treppenmodule oder vertikale Schächte. Vertikale Verbindungen zwischen Stockwerken werden über die
up-/down-Einträge der Border-Tag-Mapborderseines Moduls erreicht: Die Oberseite eines Moduls verbindet sich mit einem darüberliegenden Nachbarn, wenn ihre gegenüberliegenden Border-Tags übereinstimmen.
Vielfalt und Paketintegration
-
Kostenloses Paket Das Dungeoneering Modules Free Pack enthält 15 Module. Dies funktioniert als ein vollständig spielbarer Dungeon für sich allein.
-
Premium-Paket Das Dungeoneering Modules Premium Pack fügt 38 zusätzliche Module hinzu. In Kombination mit dem kostenlosen Paket verflechten sich beide Sets zu einem einzigen Dungeon-System mit einem viel größeren Modulpool. Dies reduziert Wiederholungen und erhöht die Vielfalt in den generierten Layouts.
-
Props-Integration Wenn du auch das BetterStructures Prop Pack (über FreeMinecraftModels) installierst, zeigen modulare Dungeons benutzerdefinierte Modell-Props in den Bauwerken an, wie in unseren Showcase-Screenshots gezeigt. Ohne das Prop-Paket funktionieren die Dungeons weiterhin normal, aber ohne die dekorativen Modelle.
EliteMobs-Integration
Während der Großteil des Dungeons nur auf BetterStructures und Vanilla-Minecraft-Mobs basiert, bieten einige Dungeons Boss-Begegnungen:
- Wenn EliteMobs und FreeMinecraftModels beide installiert sind → voller benutzerdefinierter Bosskampf mit Modell.
- Wenn nur FreeMinecraftModels installiert ist → Boss-Modell erscheint als dekoratives Prop.
- Wenn keines installiert ist → Bossraum ist einfach leer.
Das System verwendet ein schildbasiertes Spawn-System mit speziellen Tags, um Entitäten und Container in festgelegten Bereichen zu platzieren. Boss-Level skalieren basierend auf der Entfernung vom Dungeon-Zentrum und bieten angemessene Herausforderung in der gesamten Struktur.
Modul-Schildtypen
| Schild-Tag | Zeile 1 | Weitere Zeilen | Beschreibung |
|---|---|---|---|
[spawn] | [spawn] | Entitätstyp in Zeile 2 | Spawnt eine Vanilla-Entität am Standort des Schilds |
[pool: poolname] | [pool: poolname] | — | Spawnt einen zufälligen Boss aus dem benannten Spawn-Pool |
[chest] | [chest] | — | Platziert eine Truhe am Standort des Schilds |
[trapped_chest] | [trapped_chest] | — | Platziert eine Redstone-Truhe am Standort des Schilds |
[barrel] | [barrel] | — | Platziert ein Fass am Standort des Schilds |
[exit] | [exit] | Aufzug-Schematic-Dateinamen in Zeile 2-3 | Markiert einen Ausgangspunkt mit Aufzug-Schematics nach oben/unten |
Wenn EliteMobs nicht installiert ist, aber ein Inhaltspaket es erfordert, erhalten Administratoren eine Warnmeldung.
Dieses Design hält modulare Dungeons kompatibel mit Vanilla-ähnlichen Setups und bietet gleichzeitig tiefere Integration für Benutzer mit zusätzlichen Plugins.
Spawn-Pools
[pool: poolname]-Schilder lesen aus Spawn-Pool-Konfigurationsdateien im Ordner spawn_pools/. Jede Spawn-Pool-Datei ist eine kleine YAML-Konfiguration mit diesen Feldern:
| Feld | Standard | Beschreibung |
|---|---|---|
isEnabled | true | Ob dieser Spawn-Pool aktiviert ist |
poolStrings | [] | Liste der EliteMobs-Boss-Dateinamen, die für diesen Pool infrage kommen |
minLevel | -1 | Minimales Level für instanzierte Bosse, die aus diesem Pool gespawnt werden (-1 = nicht angegeben) |
maxLevel | -1 | Maximales Level für instanzierte Bosse, die aus diesem Pool gespawnt werden (-1 = nicht angegeben) |
Wenn ein [pool: poolname]-Schild verarbeitet wird, sucht BetterStructures nach poolname.yml (optional mit dem spawnPoolSuffix des Generators angehängt) und wählt einen zufälligen Boss aus den poolStrings des Pools aus. Bei instanzierten Bossen skaliert das Spawn-Level zwischen minLevel und maxLevel, basierend auf der Entfernung des Bosses vom Dungeon-Zentrum.
MythicMobs-Integration
BetterStructures unterstützt auch die MythicMobs-Integration für benutzerdefinierte Mob-Begegnungen in modularen Dungeons.
Wenn MythicMobs installiert ist, können Strukturpakete benutzerdefinierte MythicMobs als Teil der Dungeon-Generierung spawnen. Dies ermöglicht anspruchsvollere Mob-Begegnungen und Bosskämpfe über das hinaus, was Vanilla-Minecraft oder EliteMobs bieten.
Wenn MythicMobs nicht installiert ist, benachrichtigt das Plugin Administratoren mit entsprechenden Berechtigungen und stellt einen Download-Link bereit.
FMM-Integration
Modulare Dungeons können auch FreeMinecraftModels (FMM) Props während der Erstellung nutzen.
- Wenn FMM installiert ist, werden alle Props, die vom Modulersteller oder Builder platziert wurden, im generierten Dungeon erscheinen.
- Props sind rein dekorativ und beeinflussen das Gameplay nicht, verbessern aber die visuelle Treue und Immersion der Umgebung.
- Wenn FMM nicht installiert ist, wird der Dungeon weiterhin normal generiert, aber diese benutzerdefinierten Props werden nicht angezeigt.
Dies stellt sicher, dass Ersteller Dungeons mit zusätzlichen Details entwerfen können, während die Kompatibilität für Spieler gewahrt bleibt, die FMM nicht installiert haben.
Moduldimensionen
Wichtig: Die Modulgröße ist konfigurierbar, nicht fest.
Jeder Modulgenerator definiert seine Standard-Modulgröße mit:
moduleSizeXZ: Breite und Tiefe in Blöcken (Standard: 16)moduleSizeY: Höhe in Blöcken (Standard: 16)
Standardgröße: 16×16×16 Blöcke Häufige Alternative: 32×16×32 Blöcke (in einigen Inhaltspaketen verwendet)
Für Modulersteller:
- Prüfe deine Generator-Konfiguration auf
moduleSizeXZ- undmoduleSizeY-Werte - Baue ALLE Module für diesen Generator genau in diesen Dimensionen
- Nicht übereinstimmende Größen verursachen Verbindungsfehler
Benutzerdefinierte Dimensionen festlegen: In deiner Modulgenerator-Konfigurationsdatei:
moduleSizeXZ: 32 # Width and depth
moduleSizeY: 16 # Height
Hinweis: Alle Module in einem Generator müssen dieselben Dimensionen verwenden. Du kannst keine 16×16×16 und 32×16×32 Module im selben Dungeon-System mischen.
Modulgenerator-Konfigurationsfelder
Neben moduleSizeXZ und moduleSizeY unterstützt die Modulgenerator-Konfiguration die folgenden Felder:
| Feld | Standard | Beschreibung |
|---|---|---|
radius | 1 | Dungeon-Radius in Chunks |
edges | false | Ob Randmodule generiert werden |
startModule | — | Liste der Start-Module für die Generierung |
minChunkY | 0 | Minimale vertikale Chunk-Grenze |
maxChunkY | 0 | Maximale vertikale Chunk-Grenze |
moduleSizeXZ | 16 | Breite und Tiefe der Module in Blöcken |
moduleSizeY | 16 | Höhe der Module in Blöcken |
debug | false | Aktiviert den Debug-Modus zur Fehlersuche bei der Generierung |
useGradientLevels | false | Aktiviert gradientenbasierte Level-Skalierung für gespawnte Entitäten |
spawnPoolSuffix | — | Suffix, das an Spawn-Pool-Namen für diesen Generator angehängt wird |
isWorldGeneration | false | Ob dieser Generator für die Weltgenerierung verwendet wird |
treasureFile | — | Schatzkonfigurationsdatei für Truhen in diesem Dungeon |
generateLootInBarrels | true | Ob Fässer in Modulen mit Beute befüllt werden sollen |
barrelTreasureFilename | treasure_barrel_food.yml | Schatzkonfigurationsdatei zum Befüllen von Fässern in diesem Dungeon |
validWorlds | leer (alle Welten) | Liste gültiger Weltnamen, in denen der Dungeon generiert werden kann |
validWorldEnvironments | leer (alle Umgebungen) | Liste gültiger Weltumgebungen (NORMAL, NETHER, THE_END, CUSTOM). Der mitgelieferte Dungeoneering-Generator liefert ausdrücklich [NORMAL, CUSTOM] mit, ab Werk generieren Dungeons also nur in Welten vom Oberwelt-Typ. Siehe den Hinweis unten dazu, was passiert, wenn der Schlüssel fehlt. |
centerModuleAltitude | 0 | Höhe für das Zentralmodul |
Hinweis zu fehlenden Schlüsseln: Die Spalte „Standard“ oben listet den Wert auf, den BetterStructures in eine generierte Generatordatei schreibt. Schreibst du eine Modulgeneratordatei von Hand und lässt einen Schlüssel vollständig weg, stammt der für diese Sitzung tatsächlich verwendete Wert aus dem Java-Feld statt aus dieser Spalte – das ist 0 für radius, moduleSizeXZ und moduleSizeY sowie „überhaupt keine Einschränkung“ für validWorlds und validWorldEnvironments. Ein fehlendes validWorldEnvironments beschränkt den Generator also nicht auf NORMAL/CUSTOM; es lässt den Dungeon in jeder Umgebung generieren. Schreibe die Schlüssel immer ausdrücklich aus, statt dich auf das Weglassen zu verlassen, und lass dir im Zweifel zuerst vom Plugin eine Datei generieren.
Pro-Modul-Konfigurationsfelder
Jedes einzelne Modul kann die folgenden Konfigurationsfelder definieren:
| Feld | Standard | Beschreibung |
|---|---|---|
isEnabled | true | Ob dieses Modul aktiviert ist |
weight | 100 | Auswahlgewicht für dieses Modul während der Generierung |
repetitionPenalty | 0 | Strafe bei mehrfacher Auswahl dieses Moduls |
noRepeat | false | Verhindert, dass sich dieses Modul wiederholt |
enforceVerticalRotation | false | Erzwingt vertikale Rotationseinschränkungen |
enforceHorizontalRotation | false | Erzwingt horizontale Rotationseinschränkungen |
minY | -4 | Minimales Y-Level für dieses Modul |
maxY | 20 | Maximales Y-Level für dieses Modul |
biome | default | Biom-Anforderung für dieses Modul |
minecraftBiome | null | Minecraft-Biom-Anforderung für dieses Modul |
treasureFile | — | Schatzkonfigurationsdatei für Truhen in diesem Modul |
generateLootInBarrels | true | Ob Fässer in diesem Modul mit Beute befüllt werden sollen |
barrelTreasureFilename | treasure_barrel_food.yml | Schatzkonfigurationsdatei zum Befüllen von Fässern in diesem Modul |
borders | — | Border-Tag-Map, die die Verbindungskompatibilität definiert |
cloneConfig | — | Klont Einstellungen aus einer anderen Modul-Konfigurationsdatei |
compoundModule | — | Verknüpft dieses Modul als Teil eines zusammengesetzten (mehrteiligen) Moduls |
isAutomaticallyPlaced | true | Ob das Modul während der Generierung automatisch platziert wird |
Hinweis: Welche Seiten eines Moduls sich mit Nachbarn verbinden können, wird vollständig durch die Border-Tag-Map borders gesteuert. Zwei Module verbinden sich an einer Seite, wenn ihre gegenüberliegenden Border-Tags übereinstimmen.
Hinweis zu cloneConfig: Verweise damit auf den .yml-Dateinamen eines anderen Moduls, und dieses Modul liest jede geklonte Einstellung aus jener Datei statt aus seiner eigenen. Lässt sich das Klonziel auflösen, löscht BetterStructures die nun überflüssigen Schlüssel aus der Datei dieses Moduls auf der Festplatte – treasureFile, barrelTreasureFilename, generateLootInBarrels, borders, minY, maxY, weight, repetitionPenalty, die beiden Rotationsschalter, noRepeat, die sechs *IsPassable-Schlüssel und isAutomaticallyPlaced. Nur isEnabled, biome, minecraftBiome, cloneConfig und compoundModule bleiben lokal. Existiert die genannte Datei nicht, wird die Klon-Einstellung mit einer Warnung ignoriert und das Modul behält seine eigenen Werte.
In generierten Modul-Konfigurationen wirst du außerdem northIsPassable, southIsPassable, eastIsPassable, westIsPassable, upIsPassable und downIsPassable finden. Sie stehen standardmäßig auf true und nichts im Generator liest sie aus – sie zu ändern hat keine Wirkung. Verwende stattdessen borders.
Einen Dungeon manuell mit /bs generateModules erzeugen
/bs generateModules <ModuleGeneratorsConfigFile.yml> führt einen Modulgenerator auf Abruf aus, statt darauf zu warten, dass während der Weltgenerierung einer auftaucht. Die Tab-Vervollständigung listet jede geladene Modulgeneratordatei auf.
Was passiert, hängt von der Einstellung isWorldGeneration des Generators ab:
isWorldGeneration: true– BetterStructures erzeugt eine brandneue Welt für den Dungeon. Die Welt wird nach der Generatordatei benannt, mit angehängtem_0,_1,_2…, wobei das erste Suffix gewählt wird, dessen Ordner noch nicht existiert, sodass wiederholte Durchläufe nie ein früheres Ergebnis überschreiben. Es handelt sich um eine flache Void-Welt mit der UmgebungNORMAL, deren Spawn-Chunks nicht im Speicher gehalten werden und deren Autosave deaktiviert ist; der Spieler, der den Befehl ausgeführt hat, wird in den Zuschauermodus versetzt.isWorldGeneration: false– die Generierung findet in der Welt statt, in der du gerade stehst.
Eine Bossleiste verfolgt den Fortschritt, während das Gitter kollabiert und Module eingefügt werden. Hat der Generator keine brauchbaren startModule-Einträge, meldet der Befehl, dass du zuerst Module installieren oder bauen musst, und bricht ab.
Der Befehl wird abgelehnt, während ein Neuladen der Inhalte läuft.
Wo Moduldateien liegen
Module gehören nach plugins/BetterStructures/modules, das rekursiv durchsucht wird – ein Inhaltspaket kann seine .schem-Dateien in Unterordnern halten, und die passenden .yml-Konfigurationen werden daneben erzeugt.
Die Dateinamen der Modul-Schematics müssen im gesamten modules-Verzeichnisbaum eindeutig sein. Zwei .schem-Dateien mit demselben Namen in verschiedenen Ordnern machen die Konfigurationssuche mehrdeutig, und BetterStructures verweigert den Start, statt eine davon auszuwählen. Eine aktivierte Modul-Konfiguration, deren .schem nicht gelesen werden kann, wird ebenfalls als fatal behandelt, sodass ein defektes Modulpaket lautstark scheitert, statt still Dungeons mit Löchern zu generieren.