minecraft-source/src/net/minecraft/world/level/biome/BiomeSourceType.java

39 lines
2.1 KiB
Java
Raw Normal View History

2020-07-22 06:23:34 +01:00
package net.minecraft.world.level.biome;
import net.minecraft.core.Registry;
import java.util.function.Supplier;
import java.util.function.Function;
public class BiomeSourceType<C extends BiomeSourceSettings, T extends BiomeSource> {
public static final BiomeSourceType<CheckerboardBiomeSourceSettings, CheckerboardBiomeSource> CHECKERBOARD;
public static final BiomeSourceType<FixedBiomeSourceSettings, FixedBiomeSource> FIXED;
public static final BiomeSourceType<OverworldBiomeSourceSettings, OverworldBiomeSource> VANILLA_LAYERED;
public static final BiomeSourceType<TheEndBiomeSourceSettings, TheEndBiomeSource> THE_END;
private final Function<C, T> factory;
private final Supplier<C> settingsFactory;
private static <C extends BiomeSourceSettings, T extends BiomeSource> BiomeSourceType<C, T> register(final String string, final Function<C, T> function, final Supplier<C> supplier) {
return Registry.<BiomeSourceType<C, T>>register(Registry.BIOME_SOURCE_TYPE, string, new BiomeSourceType<C, T>(function, supplier));
}
public BiomeSourceType(final Function<C, T> function, final Supplier<C> supplier) {
this.factory = function;
this.settingsFactory = supplier;
}
public T create(final C bir) {
return this.factory.apply(bir);
}
public C createSettings() {
return this.settingsFactory.get();
}
static {
CHECKERBOARD = BiomeSourceType.<CheckerboardBiomeSourceSettings, CheckerboardBiomeSource>register("checkerboard", CheckerboardBiomeSource::new, CheckerboardBiomeSourceSettings::new);
FIXED = BiomeSourceType.<FixedBiomeSourceSettings, FixedBiomeSource>register("fixed", FixedBiomeSource::new, FixedBiomeSourceSettings::new);
VANILLA_LAYERED = BiomeSourceType.<OverworldBiomeSourceSettings, OverworldBiomeSource>register("vanilla_layered", OverworldBiomeSource::new, OverworldBiomeSourceSettings::new);
THE_END = BiomeSourceType.<TheEndBiomeSourceSettings, TheEndBiomeSource>register("the_end", TheEndBiomeSource::new, TheEndBiomeSourceSettings::new);
}
}