Generatoren erstellen
Generatoren
Generatoren sind der leistungsstärkste Teil des Konfigurationssystems für BetterStructures. Standardmäßig gibt es 29 Generatoren, die gemeinsam die derzeit von BetterStructures verteilten Bauwerke verwalten, und obwohl du eigene Generatoren erstellen kannst, kannst du auch bestehende als Abkürzung verwenden.
Generatoren teilen dem Plugin mit, wo genau Dinge spawnen sollen, und definieren Beutetabellen. Die Standard-Generatoren sind auch so benannt, dass man leicht erraten kann, was sie tun.
Generator-Konfigurationsoptionen
| Schlüssel | Standard | Pflicht | Beschreibung |
|---|---|---|---|
isEnabled | true | ❌ | Ob der Generator aktiviert ist. Wird er auf false gesetzt, wird auch jedes Schematic, das auf diesen Generator verweist, nicht mehr registriert — das ist also der schnellste Weg, einen ganzen Satz Strukturen abzuschalten. |
structureType | - | ✅ | Wo Strukturen spawnen (siehe Tabelle unten) |
lowestYLevel | -59 | ❌ | Minimales Y-Level für das Spawnen |
highestYLevel | 320 | ❌ | Maximales Y-Level für das Spawnen |
validWorlds | Alle erlaubt | ❌ | Liste der Welten, in denen Strukturen spawnen können |
validWorldEnvironments | Alle erlaubt | ❌ | NORMAL, NETHER, THE_END, CUSTOM |
validBiomesV2 | Je nach Vorlage | ❌ | Liste gültiger Biome (Format namespace:key); eine effektiv leere Liste erlaubt alle Biome |
treasureFilename | - | ❌ | Schatzdatei für Truhenbeute |
generateLootInBarrels | true | ❌ | Ob Fässer, die in den Schematics dieses Generators gefunden werden, mit Beute befüllt werden sollen |
barrelTreasureFilename | treasure_barrel_food.yml | ❌ | Schatzdatei zum Befüllen von Fässern für diesen Generator |
structureType
Legt fest, welche Art von Struktur das Bauwerk ist. Du kannst mehrere Strukturtypen für einen einzelnen Generator angeben!
| Typ | Oberwelt / Benutzerdefiniert | Nether | End | Beschreibung |
|---|---|---|---|---|
SURFACE | Oberfläche | Oberflächenähnliche Punkte | Oberfläche | Spawnt an der Oberfläche der Welt |
SKY | 80-120 Blöcke über dem höchsten Block | Lufttasche zwischen Y 45 und Y 100 | 80-120 Blöcke über dem höchsten Block | Spawnt am Himmel (konfigurierbar in config.yml) |
UNDERGROUND_SHALLOW | Anfangs-Y 0-49 | Suche nach festem Gelände bei Y 60-119 | Suche nach festem Gelände bei Y 0-79 | Flache unterirdische Strukturen |
UNDERGROUND_DEEP | Anfangs-Y -53 bis -1 | Abwärtssuche nach festem Gelände bei Y 60-6 | Start bei Y 0 vor Offset- und Grenzanpassungen | Tiefe unterirdische Strukturen |
LIQUID_SURFACE | Flüssigkeit am höchsten Block | Lava bei Y 31 mit Luft darüber | Keine anfängliche Flüssigkeitsprüfung; Geländeprüfung gilt weiterhin | Spawnt auf Flüssigkeitsoberflächen |
DUNGEON | ✅ | ✅ | ✅ | Für das separate Modulgenerator-System reserviert; dieser Typ allein macht eine Schematic nicht zu einem modularen Dungeon |
Die Himmelsbereiche sind Offsets über dem höchsten Block der Säule, keine absoluten Y-Level. Untergrundbereiche beschreiben die anfängliche Auswahl oder Suche vor Anpassungen durch Schematic-Offsets und Dimensionsgrenzen. Die Himmelsuche im Nether besucht Y 45-99.
Beispiel für mehrere Strukturtypen
structureType:
- SURFACE
- UNDERGROUND_SHALLOW
Dies ermöglicht es demselben Generator, Strukturen an mehreren Stellen zu spawnen, wie z.B. sowohl an der Oberfläche als auch in flachen unterirdischen Bereichen.
Hinweis: Es gibt zwei unterirdische Einstellungen, weil Minecraft viel unterirdischen Raum hat. Beides zu haben gewährleistet eine gleichmäßige Verteilung über verschiedene Tiefen und verhindert, dass Spieler Strukturen verpassen.
Y-Level-Bereiche nach Dimension
Standard-Höhenbereiche pro Dimension (konfigurierbar in config.yml):
| Dimension | Standardbereich | Konfigurationseinstellungen |
|---|---|---|
| Oberwelt/Benutzerdefiniert | Y=-60 bis Y=320 | lowestYNormalCustom / highestYNormalCustom |
| Nether | Y=4 bis Y=120 | lowestYNether / highestYNether |
| End | Y=0 bis Y=320 | lowestYEnd / highestYEnd |
| Himmel (Oberwelt/Benutzerdefiniert) | 80 bis 120 Blöcke über dem höchsten Block | normalCustomAirBuildingMinAltitude / normalCustomAirBuildingMaxAltitude |
| Himmel (End) | 80 bis 120 Blöcke über dem höchsten Block | endAirBuildMinAltitude / endAirBuildMaxAltitude |
lowestYLevel und highestYLevel des Generators filtern mögliche Ankerpositionen. Sie ersetzen weder die dimensionsweiten Untergrundgrenzen noch definieren sie den Bereich der Himmels-Offsets neu.
Die beiden Himmelszeilen sind Offsets, die auf den höchsten Block der Säule aufgeschlagen werden, keine absoluten Y-Level. Sowohl die Himmels-Offsets für Oberwelt/Benutzerdefiniert als auch die für das End werden bei jeder Platzierung zufällig zwischen ihrem Minimum und Maximum ausgewürfelt.
Der Nether ignoriert diese Offsets vollständig: Statt über dem höchsten Block zu bauen, durchsucht BetterStructures die Säule zwischen Y 45 und Y 100 nach einer mindestens 20 Blöcke hohen Lufttasche und platziert die Struktur darin. Existiert keine solche Tasche, spawnt in diesem Chunk nichts.
Unterstützung benutzerdefinierter Biome
BetterStructures unterstützt automatisch benutzerdefinierte Biome von Weltgeneratoren wie Terralith, Iris, Terra und TerraformGenerator.
Wenn du ein Vanilla-Biom in validBiomesV2 angibst, schließt das Plugin automatisch kompatible benutzerdefinierte Biome ein:
validBiomesV2:
- minecraft:plains
- minecraft:forest
Das erlaubt Strukturen in den Vanilla-Biomen UND allen zugeordneten benutzerdefinierten Biomen, sofern die übrigen Platzierungsprüfungen bestehen. Beispielsweise ist terralith:brushland plains zugeordnet.
Eine leere oder fehlende Liste validBiomesV2 behält die eingebaute Biomauswahl einer mitgelieferten Vorlage bei. Sie hebt deren Einschränkungen nicht auf. Ein neuer eigener Generator ohne eingebaute Biome hat eine effektiv leere Liste und erlaubt alle Biome. Ersetze die Auswahl einer Vorlage durch eine explizite, nicht leere Liste. Vanilla-Enum-Namen ohne Namensraum sind zulässig, aber namespace:key ist eindeutiger. Einträge mit Namensraum werden kleingeschrieben, ohne zu prüfen, ob das Biom existiert.
Wo die Zuordnungen tatsächlich liegen
Die Zuordnungstabelle von benutzerdefinierten Biomen zu Vanilla-Biomen ist nicht in BetterStructures gespeichert. Sie ist eine einzelne fest einprogrammierte Tabelle innerhalb von MagmaCore, der gemeinsamen Bibliothek, die in BetterStructures gebündelt ist, und wird mit den anderen MagmaGuy-Plugins geteilt, die sie benötigen.
Das hat zwei praktische Konsequenzen:
- Die langen Biomlisten, die du in den mitgelieferten
generator_surface_*.yml-Dateien siehst, sind erzeugte Ausgabe, nicht die Quelle der Wahrheit. Beim Laden liest BetterStructuresvalidBiomesV2, schlägt jedenminecraft:-Eintrag in der MagmaCore-Tabelle nach, hängt alle benutzerdefinierten Biome an, die darauf abgebildet sind, und schreibt die erweiterte Liste direkt zurück in die Generatordatei. Ein Generator, den du mit zwei Zeilen geschrieben hast, kann also mit hundert zurückkommen. Das Bearbeiten dieser erweiterten Liste betrifft nur diesen einen Generator, und jederminecraft:-Eintrag, den du stehen lässt, wird beim nächsten Laden erneut erweitert. - Ein neues benutzerdefiniertes Biom für alle zu unterstützen ist eine MagmaCore-Änderung, keine Konfigurationsänderung. Wenn ein Weltgenerator ein Biom mitliefert, das BetterStructures nicht kennt, ist das Hinzufügen zu
validBiomesV2eines Generators eine lokale Notlösung für genau diesen Generator. Eine saubere Zuordnung bedeutet, es in die Zuordnungstabelle von MagmaCore aufzunehmen, und das ist eine Codeänderung — stelle lieber eine Anfrage, statt es in den yml-Dateien lösen zu wollen.
Du kannst ein benutzerdefiniertes Biom weiterhin direkt in validBiomesV2 angeben. Ein Namensraum außerhalb von minecraft: wird unverändert übernommen und nicht weiter erweitert. Das eignet sich für einen einzelnen Generator, der nur in einem bestimmten benutzerdefinierten Biom spawnen soll.
Biome, die MagmaCore auf nothing abbildet, sind absichtlich ausgeschlossen — es handelt sich um benutzerdefinierte Biome, die als ungeeignet für Strukturen gelten, und kein Vanilla-Biom zieht sie herein.
treasureFilename
Legt die Schatzdatei für Truhenbeute fest. Dies gilt für alle Bauwerke, die diesen Generator verwenden, es sei denn, es wird in der Schematic-Konfiguration überschrieben.
Der Generator muss trotzdem eine gültige Schatzkonfiguration für Truhen auflösen, bevor Truhen befüllt werden. Eine Schematic-Überschreibung gleicht eine fehlende oder ungültige Schatzdatei im Generator nicht aus. Ungültige Überschreibungen erzeugen eine Warnung und verwenden die Tabelle des Generators.
generateLootInBarrels und barrelTreasureFilename
BetterStructures behandelt Fässer jetzt als zweiten Beutebehälter neben Truhen.
generateLootInBarrels(Standardtrue) legt fest, ob Fässer innerhalb von Strukturen, die von diesem Generator platziert werden, befüllt werden. Setze es auffalse, um Fässer unangetastet zu lassen.barrelTreasureFilename(Standardtreasure_barrel_food.yml) wählt aus, welche Schatzdatei beim Befüllen dieser Fässer ausgewürfelt wird. Der Standard liefert eine schlanke, nahrungsorientierte Beutetabelle, aber du kannst es auf jede beliebige Schatzdatei verweisen.
barrelTreasureFilename in der Schematic kann die Beutetabelle ersetzen. Der Generator benötigt sowohl generateLootInBarrels: true als auch eine gültige Fass-Schatzkonfiguration. Eine Schematic-Überschreibung kann keine dieser Voraussetzungen umgehen. Ungültige Überschreibungen erzeugen eine Warnung und verwenden die Tabelle des Generators.