package net.minecraft.world.level.chunk; import net.minecraft.world.level.biome.BiomeSource; import net.minecraft.world.level.Level; import net.minecraft.core.Registry; import java.util.function.Supplier; import net.minecraft.world.level.levelgen.FlatLevelSource; import net.minecraft.world.level.levelgen.flat.FlatLevelGeneratorSettings; import net.minecraft.world.level.levelgen.DebugLevelSource; import net.minecraft.world.level.levelgen.DebugGeneratorSettings; import net.minecraft.world.level.levelgen.TheEndLevelSource; import net.minecraft.world.level.levelgen.TheEndGeneratorSettings; import net.minecraft.world.level.levelgen.NetherLevelSource; import net.minecraft.world.level.levelgen.NetherGeneratorSettings; import net.minecraft.world.level.levelgen.OverworldLevelSource; import net.minecraft.world.level.levelgen.OverworldGeneratorSettings; import net.minecraft.world.level.levelgen.ChunkGeneratorSettings; public class ChunkGeneratorType> implements ChunkGeneratorFactory { public static final ChunkGeneratorType SURFACE; public static final ChunkGeneratorType CAVES; public static final ChunkGeneratorType FLOATING_ISLANDS; public static final ChunkGeneratorType DEBUG; public static final ChunkGeneratorType FLAT; private final ChunkGeneratorFactory factory; private final boolean isPublic; private final Supplier settingsFactory; private static > ChunkGeneratorType register(final String string, final ChunkGeneratorFactory bzy, final Supplier supplier, final boolean boolean4) { return Registry.>register(Registry.CHUNK_GENERATOR_TYPE, string, new ChunkGeneratorType(bzy, boolean4, supplier)); } public ChunkGeneratorType(final ChunkGeneratorFactory bzy, final boolean boolean2, final Supplier supplier) { this.factory = bzy; this.isPublic = boolean2; this.settingsFactory = supplier; } @Override public T create(final Level bjt, final BiomeSource bkt, final C cbn) { return this.factory.create(bjt, bkt, cbn); } public C createSettings() { return this.settingsFactory.get(); } public boolean isPublic() { return this.isPublic; } static { SURFACE = ChunkGeneratorType.register("surface", OverworldLevelSource::new, OverworldGeneratorSettings::new, true); CAVES = ChunkGeneratorType.register("caves", NetherLevelSource::new, NetherGeneratorSettings::new, true); FLOATING_ISLANDS = ChunkGeneratorType.register("floating_islands", TheEndLevelSource::new, TheEndGeneratorSettings::new, true); DEBUG = ChunkGeneratorType.register("debug", DebugLevelSource::new, DebugGeneratorSettings::new, false); FLAT = ChunkGeneratorType.register("flat", FlatLevelSource::new, FlatLevelGeneratorSettings::new, false); } }