Zum Hauptinhalt springen

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üsselStandardPflichtBeschreibung
isEnabledtrue❌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
highestYLevel320❌Maximales Y-Level für das Spawnen
validWorldsAlle erlaubt❌Liste der Welten, in denen Strukturen spawnen können
validWorldEnvironmentsAlle erlaubt❌NORMAL, NETHER, THE_END, CUSTOM
validBiomesV2Je nach Vorlage❌Liste gültiger Biome (Format namespace:key); eine effektiv leere Liste erlaubt alle Biome
treasureFilename-❌Schatzdatei für Truhenbeute
generateLootInBarrelstrue❌Ob Fässer, die in den Schematics dieses Generators gefunden werden, mit Beute befüllt werden sollen
barrelTreasureFilenametreasure_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!

TypOberwelt / BenutzerdefiniertNetherEndBeschreibung
SURFACEOberflächeOberflächenähnliche PunkteOberflächeSpawnt an der Oberfläche der Welt
SKY80-120 Blöcke über dem höchsten BlockLufttasche zwischen Y 45 und Y 10080-120 Blöcke über dem höchsten BlockSpawnt am Himmel (konfigurierbar in config.yml)
UNDERGROUND_SHALLOWAnfangs-Y 0-49Suche nach festem Gelände bei Y 60-119Suche nach festem Gelände bei Y 0-79Flache unterirdische Strukturen
UNDERGROUND_DEEPAnfangs-Y -53 bis -1Abwärtssuche nach festem Gelände bei Y 60-6Start bei Y 0 vor Offset- und GrenzanpassungenTiefe unterirdische Strukturen
LIQUID_SURFACEFlüssigkeit am höchsten BlockLava bei Y 31 mit Luft darüberKeine anfängliche Flüssigkeitsprüfung; Geländeprüfung gilt weiterhinSpawnt 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):

DimensionStandardbereichKonfigurationseinstellungen
Oberwelt/BenutzerdefiniertY=-60 bis Y=320lowestYNormalCustom / highestYNormalCustom
NetherY=4 bis Y=120lowestYNether / highestYNether
EndY=0 bis Y=320lowestYEnd / highestYEnd
Himmel (Oberwelt/Benutzerdefiniert)80 bis 120 Blöcke über dem höchsten BlocknormalCustomAirBuildingMinAltitude / normalCustomAirBuildingMaxAltitude
Himmel (End)80 bis 120 Blöcke über dem höchsten BlockendAirBuildMinAltitude / 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:

  1. Die langen Biomlisten, die du in den mitgelieferten generator_surface_*.yml-Dateien siehst, sind erzeugte Ausgabe, nicht die Quelle der Wahrheit. Beim Laden liest BetterStructures validBiomesV2, schlägt jeden minecraft:-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 jeder minecraft:-Eintrag, den du stehen lässt, wird beim nächsten Laden erneut erweitert.
  2. 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 validBiomesV2 eines 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 (Standard true) legt fest, ob Fässer innerhalb von Strukturen, die von diesem Generator platziert werden, befüllt werden. Setze es auf false, um Fässer unangetastet zu lassen.
  • barrelTreasureFilename (Standard treasure_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.