# 2. Welten erstellen (Builder)

<span style="white-space: pre-wrap;">In GWorld v2 werden neue Welten über das </span>**Builder-Pattern**<span style="white-space: pre-wrap;"> erstellt. Dies trennt die </span>**Konfiguration**<span style="white-space: pre-wrap;"> (Registrierung) von der </span>**Generierung**<span style="white-space: pre-wrap;"> (Last).</span>

# Schritt 1: Der Builder (Registrierung)

<span style="white-space: pre-wrap;">Mit dem </span>`<span class="editor-theme-code">WorldCreationBuilder</span>`<span style="white-space: pre-wrap;"> legst du alle Eigenschaften der Welt fest. Der Aufruf von </span>`<span class="editor-theme-code">.build()</span>`<span style="white-space: pre-wrap;"> registriert die Welt in der Datenbank, erstellt sie aber noch nicht physikalisch.</span>

```java
import de.gilljan.gworld.api.IManageableWorld;
import de.gilljan.gworld.enums.WorldTypeMapping;

// Startet den Builder
IManageableWorld newWorld = worldManager.createBuilder("MeineEventWelt")
    .worldType(WorldTypeMapping.NORMAL) // Umgebung: Normal, Nether, End, Large Biomes, Amplified, Flat
    .generator("PlotSquared")           // Optional: Custom Generator Name
    .seed(987654321L)                   // Optional: Seed festlegen
    .build();                           // -> Speichert die Welt in die Config/DB
```

<p class="callout info">**Hinweis:**<span style="white-space: pre-wrap;"> Die Methode </span>`<span class="editor-theme-code">.build()</span>`<span style="white-space: pre-wrap;"> ruft intern </span>`<span class="editor-theme-code">addWorldFromBuilder</span>`<span style="white-space: pre-wrap;"> auf. Die Welt ist danach bekannt (</span>`<span class="editor-theme-code">registered</span>`<span style="white-space: pre-wrap;">), aber noch </span>`<span class="editor-theme-code">unloaded</span>`.</p>

## Schritt 2: Laden (Generierung)

```java
// Erstellt die Bukkit-Welt und lädt Chunks
boolean success = newWorld.createMap(); 

if (success) {
  getLogger().info("Welt ist bereit!");
}

```

<p class="callout success"><span style="white-space: pre-wrap;">Für einen Import gilt dies analog. Den Ordnernamen der Welt verwenden und anstatt </span>`<span class="editor-theme-code">createMap()</span>`<span style="white-space: pre-wrap;"> die Methode </span>`<span class="editor-theme-code">importMap()</span>`<span style="white-space: pre-wrap;"> verwenden.</span></p>

## Warum zwei Schritte?

1. **Performance:**<span style="white-space: pre-wrap;"> Du kannst Welten beim Serverstart registrieren, aber erst laden, wenn ein Spieler ein Minigame startet.</span>
2. **Sicherheit:**<span style="white-space: pre-wrap;"> Du kannst Flags (z. B. PvP aus) setzen, bevor der erste Spieler die Welt betritt.</span>