Minecraft ist bekannt für seine grenzenlose Kreativität, und dank Mods können wir diese Kreativität noch weiter ausleben. In diesem Tutorial zeigen wir dir, wie du dein eigenes, einzigartiges Custom Biome mit Minecraft Forge 1.18 erstellst. Keine Angst, es ist weniger kompliziert, als es klingt! Wir führen dich Schritt für Schritt durch den Prozess, sodass du am Ende deine eigene Welt erkunden kannst.
Warum ein eigenes Biome erstellen?
Bevor wir loslegen, lass uns kurz darüber sprechen, warum du überhaupt ein eigenes Biome erstellen solltest. Vielleicht hast du eine bestimmte Landschaft im Kopf, die du im Standard-Minecraft vermisst. Oder du möchtest ein Biome erschaffen, das perfekt zu einer anderen Mod passt, die du verwendest. Ganz gleich, was deine Gründe sind, das Erstellen eines eigenen Bioms ist eine großartige Möglichkeit, deine Minecraft-Erfahrung zu personalisieren und deine Programmierkenntnisse zu erweitern.
Voraussetzungen
Bevor wir in den Code eintauchen, stelle sicher, dass du folgende Dinge eingerichtet hast:
- Minecraft: Du benötigst eine legale Kopie von Minecraft.
- Minecraft Forge 1.18: Lade die passende Version von Forge herunter und installiere sie. Du findest sie auf der offiziellen Forge-Webseite.
- Java Development Kit (JDK): Forge benötigt ein JDK. Stelle sicher, dass du die richtige Version installiert hast (idealerweise Java 8 oder 17).
- Eine Integrated Development Environment (IDE): Wir empfehlen IntelliJ IDEA oder Eclipse, da sie gute Unterstützung für Minecraft-Modding bieten.
- Grundlegende Java-Kenntnisse: Ein grundlegendes Verständnis von Java ist für dieses Tutorial hilfreich.
Projekt aufsetzen
Los geht’s mit dem Erstellen deines Forge-Projekts:
- Öffne deine IDE und erstelle ein neues Forge-Projekt. In IntelliJ IDEA kannst du den „Forge” Generator verwenden. In Eclipse musst du das Forge MDK herunterladen und die Gradle-Aufgaben ausführen, um das Projekt einzurichten.
- Gib deinem Mod einen Namen (z.B. „MyCustomBiomeMod”) und eine eindeutige Mod-ID (z.B. „mycustombiome”).
- Überprüfe deine
build.gradle
Datei. Stelle sicher, dass die Versionsnummern korrekt sind und dass die Abhängigkeiten für Minecraft und Forge korrekt konfiguriert sind. - Erstelle die notwendigen Ordnerstrukturen unterhalb von
src/main/java
, die deiner Mod-ID entsprechen (z.B.src/main/java/com/example/mycustombiome
).
Das Biome registrieren
Der erste Schritt beim Erstellen eines Biomes ist seine Registrierung. Dazu erstellen wir eine neue Klasse, die für die Biome-Registrierung verantwortlich ist. Nennen wir sie MyBiomeRegistry
:
package com.example.mycustombiome;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.biome.Biome;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject;
public class MyBiomeRegistry {
public static final DeferredRegister<Biome> BIOMES = DeferredRegister.create(Registry.BIOME_REGISTRY, MyCustomBiomeMod.MOD_ID);
public static final ResourceKey<Biome> MY_CUSTOM_BIOME_KEY = ResourceKey.create(Registry.BIOME_REGISTRY, new ResourceLocation(MyCustomBiomeMod.MOD_ID, "my_custom_biome"));
public static final RegistryObject<Biome> MY_CUSTOM_BIOME = BIOMES.register("my_custom_biome", () -> MyBiome.createBiome());
public static void register(IEventBus eventBus) {
BIOMES.register(eventBus);
}
}
Erklärung:
DeferredRegister
: Ein Mechanismus von Forge, um Blöcke, Items, Biome und andere Ressourcen erst später zu registrieren, um Probleme mit Abhängigkeiten zu vermeiden.BIOMES
: EinDeferredRegister
für Biome.MY_CUSTOM_BIOME_KEY
: Ein eindeutiger Schlüssel, um auf dein Biome zuzugreifen.MY_CUSTOM_BIOME
: Das eigentlicheRegistryObject
, das dein Biome repräsentiert. Hier wird auch die MethodeMyBiome.createBiome()
aufgerufen, die wir später erstellen werden.register(IEventBus eventBus)
: Diese Methode muss imModEventBus
registriert werden.
Die Biome-Klasse erstellen
Jetzt erstellen wir die MyBiome
-Klasse, die die Eigenschaften unseres Bioms definiert. Dies ist der spannendste Teil, da du hier die Charakteristika deiner Welt festlegen kannst.
package com.example.mycustombiome;
import net.minecraft.data.worldgen.BiomeDefaultFeatures;
import net.minecraft.sounds.Music;
import net.minecraft.sounds.Musics;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.MobCategory;
import net.minecraft.world.level.biome.*;
import net.minecraft.world.level.levelgen.GenerationStep;
import net.minecraft.world.level.levelgen.SurfaceRules;
public class MyBiome {
public static Biome createBiome() {
// Bestimme die Biome-Eigenschaften
BiomeGenerationSettings.Builder biomeGenerationSettingsBuilder = new BiomeGenerationSettings.Builder();
MobSpawnSettings.Builder mobSpawnSettingsBuilder = new MobSpawnSettings.Builder();
float temperatur = 0.8F;
float niederschlag = 0.4F;
// Füge Standard-Features hinzu (Bäume, Pflanzen, etc.)
BiomeDefaultFeatures.addDefaultOres(biomeGenerationSettingsBuilder);
BiomeDefaultFeatures.addSurfaceFreezing(biomeGenerationSettingsBuilder);
BiomeDefaultFeatures.addForestFlowers(biomeGenerationSettingsBuilder);
// Konfiguriere das Mob-Spawning (optional)
mobSpawnSettingsBuilder.addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.SHEEP, 12, 4, 4));
mobSpawnSettingsBuilder.addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.PIG, 10, 4, 4));
mobSpawnSettingsBuilder.addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.ZOMBIE, 95, 4, 4));
return new Biome.BiomeBuilder()
.hasPrecipitation(true)
.temperature(temperatur)
.downfall(niederschlag)
.specialEffects((new BiomeSpecialEffects.Builder())
.waterColor(0x3f76e4)
.waterFogColor(0x050533)
.fogColor(0xc0d8ff)
.skyColor(0x77b6ff)
.foliageColorOverride(0x63a535)
.grassColorOverride(0x9bcd56)
.music(new Music(SoundEvents.MUSIC_DISC_WARD.getHolder().get(), 12000, 24000, false))
.build())
.generationSettings(biomeGenerationSettingsBuilder.build())
.mobSpawnSettings(mobSpawnSettingsBuilder.build())
.build();
}
}
Erklärung:
createBiome()
: Diese statische Methode erstellt das Biome-Objekt.BiomeGenerationSettings.Builder
: Hier konfigurierst du, welche Strukturen und Features in deinem Biome generiert werden.MobSpawnSettings.Builder
: Hier legst du fest, welche Kreaturen in deinem Biome spawnen und wie häufig.temperature
undniederschlag
: Bestimmen das Klima deines Biomes.BiomeDefaultFeatures
: Bietet vordefinierte Features wie Erzvorkommen, Vegetation und Oberflächeneffekte.Biome.BiomeBuilder
: Der Builder, der alle Eigenschaften des Biomes zusammenfasst.specialEffects
: Definiert Farben für Wasser, Nebel, Himmel, Blätter und Gras. Du kannst hier auch Musik hinzufügen.
Den Mod initialisieren
Damit alles funktioniert, musst du die Biome-Registrierung in deiner Hauptmod-Klasse initialisieren (die Klasse mit der @Mod
Annotation). Nennen wir diese Klasse MyCustomBiomeMod
:
package com.example.mycustombiome;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@Mod(MyCustomBiomeMod.MOD_ID)
public class MyCustomBiomeMod {
public static final String MOD_ID = "mycustombiome";
private static final Logger LOGGER = LogManager.getLogger();
public MyCustomBiomeMod() {
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
MyBiomeRegistry.register(modEventBus);
modEventBus.addListener(this::commonSetup);
MinecraftForge.EVENT_BUS.register(this);
}
private void commonSetup(final FMLCommonSetupEvent event) {
LOGGER.info("Setting up my custom biome!");
}
}
Erklärung:
@Mod(MyCustomBiomeMod.MOD_ID)
: Die Annotation, die deine Klasse als Mod identifiziert.MOD_ID
: Eine Konstante für die Mod-ID.MyBiomeRegistry.register(modEventBus)
: Registriert die Biome mit demModEventBus
.
Das Biome in der Weltgeneration einbinden
Bis jetzt haben wir das Biome erstellt und registriert. Aber es wird noch nicht in der Welt generiert. Um das zu erreichen, benötigen wir einen World Gen Modifier. Dies ist etwas fortgeschrittener und erfordert ein tieferes Verständnis der Weltgeneration in Minecraft. Vereinfacht gesagt, können wir durch den Modifier unser Biome an existierende Biome anfügen. Hier ist ein Beispiel, wie du das machen kannst (dies ist ein vereinfachtes Beispiel und kann für deine Bedürfnisse angepasst werden):
package com.example.mycustombiome.world;
import com.example.mycustombiome.MyBiomeRegistry;
import com.mojang.serialization.Codec;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderSet;
import net.minecraft.core.Registry;
import net.minecraft.core.RegistryCodecs;
import net.minecraft.resources.RegistryOps;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.biome.Biomes;
import net.minecraft.world.level.levelgen.GenerationStep;
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
import net.minecraftforge.common.world.BiomeModifier;
import net.minecraftforge.common.world.ModifiableBiomeInfo;
import java.util.List;
import java.util.function.Predicate;
public record AddMyBiomeModifier(HolderSet<Biome> targetBiomes) implements BiomeModifier {
@Override
public void modify(Holder<Biome> biome, Phase phase, ModifiableBiomeInfo.BiomeInfo.Builder builder) {
if (phase == Phase.ADD && targetBiomes.contains(biome)) {
builder.getGenerationSettings().addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Registry.PLACED_FEATURE.getOrCreateHolderOrThrow(ResourceKey.create(Registry.PLACED_FEATURE_REGISTRY, new ResourceLocation("minecraft", "oak")))); //Beispiel: Fügt Eichenbäume hinzu
}
}
@Override
public Codec<? extends BiomeModifier> codec() {
return null; //TODO: Codec implementieren
}
}
WICHTIG: Das obige Beispiel ist SEHR vereinfacht und dient nur als Ausgangspunkt. Du musst den Codec für den BiomeModifier implementieren und das Verhalten des Modifiers an deine Bedürfnisse anpassen. Das Hinzufügen von Features ist ein komplexes Thema und erfordert ein gutes Verständnis der Weltgeneration von Minecraft.
Testen deines Bioms
Jetzt kommt der spaßige Teil: Testen! Starte Minecraft mit Forge und erstelle eine neue Welt. Um dein Biome leichter zu finden, kannst du den Befehl /locatebiome
verwenden. Gib /locatebiome mycustombiome:my_custom_biome
ein und folge den Koordinaten.
Fazit
Das Erstellen eines eigenen Minecraft Bioms mit Forge 1.18 ist ein aufregendes Projekt, das dir die Möglichkeit gibt, deine eigene Welt zu gestalten. Auch wenn es am Anfang etwas knifflig sein kann, wirst du schnell feststellen, wie lohnend es ist, wenn du dein eigenes Biome zum ersten Mal in deinem Spiel entdeckst. Viel Spaß beim Modden!