Files
AkarinMC/src/main/java/net/minecraft/server/BiomeBase.java
2019-03-04 18:16:32 +08:00

627 lines
32 KiB
Java

package net.minecraft.server;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import javax.annotation.Nullable;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public abstract class BiomeBase {
public static final Logger a = LogManager.getLogger();
public static final WorldGenCarverAbstract<WorldGenFeatureConfigurationChance> b = new WorldGenCaves();
public static final WorldGenCarverAbstract<WorldGenFeatureConfigurationChance> c = new WorldGenCavesHell();
public static final WorldGenCarverAbstract<WorldGenFeatureConfigurationChance> d = new WorldGenCanyon();
public static final WorldGenCarverAbstract<WorldGenFeatureConfigurationChance> e = new WorldGenCanyonOcean();
public static final WorldGenCarverAbstract<WorldGenFeatureConfigurationChance> f = new WorldGenCavesOcean();
public static final WorldGenDecorator<WorldGenDecoratorFrequencyConfiguration> g = new WorldGenDecoratorHeight();
public static final WorldGenDecorator<WorldGenDecoratorFrequencyConfiguration> h = new WorldGenDecoratorSkyVisible();
public static final WorldGenDecorator<WorldGenDecoratorFrequencyConfiguration> i = new WorldGenDecoratorHeight32();
public static final WorldGenDecorator<WorldGenDecoratorFrequencyConfiguration> j = new WorldGenDecoratorHeightDouble();
public static final WorldGenDecorator<WorldGenDecoratorFrequencyConfiguration> k = new WorldGenDecoratorHeight64();
public static final WorldGenDecorator<WorldGenFeatureDecoratorNoiseConfiguration> l = new WorldGenDecoratorNoiseHeight32();
public static final WorldGenDecorator<WorldGenFeatureDecoratorNoiseConfiguration> m = new WorldGenDecoratorNoiseHeightDouble();
public static final WorldGenDecorator<WorldGenFeatureDecoratorEmptyConfiguration> n = new WorldGenDecoratorEmpty();
public static final WorldGenDecorator<WorldGenDecoratorChanceConfiguration> o = new WorldGenDecoratorChance();
public static final WorldGenDecorator<WorldGenDecoratorChanceConfiguration> p = new WorldGenDecoratorChanceHeight();
public static final WorldGenDecorator<WorldGenDecoratorChanceConfiguration> q = new WorldGenDecoratorChancePass();
public static final WorldGenDecorator<WorldGenDecoratorChanceConfiguration> r = new WorldGenDecoratorSkyVisibleBiased();
public static final WorldGenDecorator<WorldGenDecoratorFrequencyExtraChanceConfiguration> s = new WorldGenDecoratorHeightExtraChance();
public static final WorldGenDecorator<WorldGenFeatureChanceDecoratorCountConfiguration> t = new WorldGenDecoratorNetherHeight();
public static final WorldGenDecorator<WorldGenFeatureChanceDecoratorCountConfiguration> u = new WorldGenDecoratorHeightBiased();
public static final WorldGenDecorator<WorldGenFeatureChanceDecoratorCountConfiguration> v = new WorldGenDecoratorHeightBiased2();
public static final WorldGenDecorator<WorldGenFeatureChanceDecoratorCountConfiguration> w = new WorldGenDecoratorNetherRandomCount();
public static final WorldGenDecorator<WorldGenFeatureChanceDecoratorRangeConfiguration> x = new WorldGenDecoratorNetherChance();
public static final WorldGenDecorator<WorldGenDecoratorFrequencyChanceConfiguration> y = new WorldGenFeatureChanceDecorator();
public static final WorldGenDecorator<WorldGenDecoratorFrequencyChanceConfiguration> z = new WorldGenFeatureChanceDecoratorHeight();
public static final WorldGenDecorator<WorldGenDecoratorHeightAverageConfiguration> A = new WorldGenDecoratorHeightAverage();
public static final WorldGenDecorator<WorldGenFeatureDecoratorEmptyConfiguration> B = new WorldGenDecoratorSolidTop();
public static final WorldGenDecorator<WorldGenDecoratorRangeConfiguration> C = new WorldGenDecoratorSolidTopHeight();
public static final WorldGenDecorator<WorldGenDecoratorNoiseConfiguration> D = new WorldGenDecoratorSolidTopNoise();
public static final WorldGenDecorator<WorldGenDecoratorCarveMaskConfiguration> E = new WorldGenDecoratorCarveMask();
public static final WorldGenDecorator<WorldGenDecoratorFrequencyConfiguration> F = new WorldGenDecoratorForestRock();
public static final WorldGenDecorator<WorldGenDecoratorFrequencyConfiguration> G = new WorldGenDecoratorNetherFire();
public static final WorldGenDecorator<WorldGenDecoratorFrequencyConfiguration> H = new WorldGenDecoratorNetherMagma();
public static final WorldGenDecorator<WorldGenFeatureDecoratorEmptyConfiguration> I = new WorldGenDecoratorEmerald();
public static final WorldGenDecorator<WorldGenDecoratorLakeChanceConfiguration> J = new WorldGenDecoratorLakeLava();
public static final WorldGenDecorator<WorldGenDecoratorLakeChanceConfiguration> K = new WorldGenDecoratorLakeWater();
public static final WorldGenDecorator<WorldGenDecoratorDungeonConfiguration> L = new WorldGenDecoratorDungeon();
public static final WorldGenDecorator<WorldGenFeatureDecoratorEmptyConfiguration> M = new WorldGenDecoratorRoofedTree();
public static final WorldGenDecorator<WorldGenDecoratorChanceConfiguration> N = new WorldGenDecoratorIceburg();
public static final WorldGenDecorator<WorldGenDecoratorFrequencyConfiguration> O = new WorldGenDecoratorNetherGlowstone();
public static final WorldGenDecorator<WorldGenFeatureDecoratorEmptyConfiguration> P = new WorldGenDecoratorSpike();
public static final WorldGenDecorator<WorldGenFeatureDecoratorEmptyConfiguration> Q = new WorldGenDecoratorEndIsland();
public static final WorldGenDecorator<WorldGenFeatureDecoratorEmptyConfiguration> R = new WorldGenDecoratorChorusPlant();
public static final WorldGenDecorator<WorldGenFeatureDecoratorEmptyConfiguration> S = new WorldGenDecoratorEndGateway();
protected static final IBlockData T = Blocks.AIR.getBlockData();
protected static final IBlockData U = Blocks.DIRT.getBlockData();
protected static final IBlockData V = Blocks.GRASS_BLOCK.getBlockData();
protected static final IBlockData W = Blocks.PODZOL.getBlockData();
protected static final IBlockData X = Blocks.GRAVEL.getBlockData();
protected static final IBlockData Y = Blocks.STONE.getBlockData();
protected static final IBlockData Z = Blocks.COARSE_DIRT.getBlockData();
protected static final IBlockData aa = Blocks.SAND.getBlockData();
protected static final IBlockData ab = Blocks.RED_SAND.getBlockData();
protected static final IBlockData ac = Blocks.WHITE_TERRACOTTA.getBlockData();
protected static final IBlockData ad = Blocks.MYCELIUM.getBlockData();
protected static final IBlockData ae = Blocks.NETHERRACK.getBlockData();
protected static final IBlockData af = Blocks.END_STONE.getBlockData();
public static final WorldGenSurfaceConfigurationBase ag = new WorldGenSurfaceConfigurationBase(BiomeBase.T, BiomeBase.T, BiomeBase.T);
public static final WorldGenSurfaceConfigurationBase ah = new WorldGenSurfaceConfigurationBase(BiomeBase.U, BiomeBase.U, BiomeBase.X);
public static final WorldGenSurfaceConfigurationBase ai = new WorldGenSurfaceConfigurationBase(BiomeBase.V, BiomeBase.U, BiomeBase.X);
public static final WorldGenSurfaceConfigurationBase aj = new WorldGenSurfaceConfigurationBase(BiomeBase.Y, BiomeBase.Y, BiomeBase.X);
public static final WorldGenSurfaceConfigurationBase ak = new WorldGenSurfaceConfigurationBase(BiomeBase.X, BiomeBase.X, BiomeBase.X);
public static final WorldGenSurfaceConfigurationBase al = new WorldGenSurfaceConfigurationBase(BiomeBase.Z, BiomeBase.U, BiomeBase.X);
public static final WorldGenSurfaceConfigurationBase am = new WorldGenSurfaceConfigurationBase(BiomeBase.W, BiomeBase.U, BiomeBase.X);
public static final WorldGenSurfaceConfigurationBase an = new WorldGenSurfaceConfigurationBase(BiomeBase.aa, BiomeBase.aa, BiomeBase.aa);
public static final WorldGenSurfaceConfigurationBase ao = new WorldGenSurfaceConfigurationBase(BiomeBase.V, BiomeBase.U, BiomeBase.aa);
public static final WorldGenSurfaceConfigurationBase ap = new WorldGenSurfaceConfigurationBase(BiomeBase.aa, BiomeBase.aa, BiomeBase.X);
public static final WorldGenSurfaceConfigurationBase aq = new WorldGenSurfaceConfigurationBase(BiomeBase.ab, BiomeBase.ac, BiomeBase.X);
public static final WorldGenSurfaceConfigurationBase ar = new WorldGenSurfaceConfigurationBase(BiomeBase.ad, BiomeBase.U, BiomeBase.X);
public static final WorldGenSurfaceConfigurationBase as = new WorldGenSurfaceConfigurationBase(BiomeBase.ae, BiomeBase.ae, BiomeBase.ae);
public static final WorldGenSurfaceConfigurationBase at = new WorldGenSurfaceConfigurationBase(BiomeBase.af, BiomeBase.af, BiomeBase.af);
public static final WorldGenSurface<WorldGenSurfaceConfigurationBase> au = new WorldGenSurfaceDefaultBlock();
public static final WorldGenSurface<WorldGenSurfaceConfigurationBase> av = new WorldGenSurfaceExtremeHills();
public static final WorldGenSurface<WorldGenSurfaceConfigurationBase> aw = new WorldGenSurfaceSavannaMutated();
public static final WorldGenSurface<WorldGenSurfaceConfigurationBase> ax = new WorldGenSurfaceExtremeHillMutated();
public static final WorldGenSurface<WorldGenSurfaceConfigurationBase> ay = new WorldGenSurfaceTaigaMega();
public static final WorldGenSurface<WorldGenSurfaceConfigurationBase> az = new WorldGenSurfaceSwamp();
public static final WorldGenSurface<WorldGenSurfaceConfigurationBase> aA = new WorldGenSurfaceMesa();
public static final WorldGenSurface<WorldGenSurfaceConfigurationBase> aB = new WorldGenSurfaceMesaForest();
public static final WorldGenSurface<WorldGenSurfaceConfigurationBase> aC = new WorldGenSurfaceMesaBryce();
public static final WorldGenSurface<WorldGenSurfaceConfigurationBase> aD = new WorldGenSurfaceFrozenOcean();
public static final WorldGenSurface<WorldGenSurfaceConfigurationBase> aE = new WorldGenSurfaceNether();
public static final WorldGenSurface<WorldGenSurfaceConfigurationBase> aF = new WorldGenSurfaceEmpty();
public static final Set<BiomeBase> aG = Sets.newHashSet();
public static final RegistryBlockID<BiomeBase> aH = new RegistryBlockID<>();
protected static final NoiseGenerator3 aI = new NoiseGenerator3(new Random(1234L), 1);
public static final NoiseGenerator3 aJ = new NoiseGenerator3(new Random(2345L), 1);
@Nullable
protected String aK;
protected final float aL;
protected final float aM;
protected final float aN;
protected final float aO;
protected final int aP;
protected final int aQ;
@Nullable
protected final String aR;
protected final WorldGenSurfaceComposite<?> aS;
protected final BiomeBase.Geography aT;
protected final BiomeBase.Precipitation aU;
protected final Map<WorldGenStage.Features, List<WorldGenCarverWrapper<?>>> aV = Maps.newHashMap();
protected final Map<WorldGenStage.Decoration, List<WorldGenFeatureComposite<?, ?>>> aW = Maps.newHashMap();
protected final List<WorldGenFeatureCompositeFlower<?>> aX = Lists.newArrayList();
protected final Map<StructureGenerator<?>, WorldGenFeatureConfiguration> aY = Maps.newHashMap();
private final java.util.EnumMap<EnumCreatureType, List<BiomeBase.BiomeMeta>> aZ = Maps.newEnumMap(EnumCreatureType.class); // Paper
@Nullable
public static BiomeBase a(BiomeBase biomebase) {
return (BiomeBase) BiomeBase.aH.fromId(IRegistry.BIOME.a(biomebase)); // Paper - decompile fix
}
public static <C extends WorldGenFeatureConfiguration> WorldGenCarverWrapper<C> a(WorldGenCarver<C> worldgencarver, C c0) {
return new WorldGenCarverWrapper<>(worldgencarver, c0);
}
public static <F extends WorldGenFeatureConfiguration, D extends WorldGenFeatureDecoratorConfiguration> WorldGenFeatureComposite<F, D> a(WorldGenerator<F> worldgenerator, F f0, WorldGenDecorator<D> worldgendecorator, D d0) {
return new WorldGenFeatureComposite<>(worldgenerator, f0, worldgendecorator, d0);
}
public static <D extends WorldGenFeatureDecoratorConfiguration> WorldGenFeatureCompositeFlower<D> a(WorldGenFlowers worldgenflowers, WorldGenDecorator<D> worldgendecorator, D d0) {
return new WorldGenFeatureCompositeFlower<>(worldgenflowers, worldgendecorator, d0);
}
protected BiomeBase(BiomeBase.a biomebase_a) {
if (biomebase_a.a != null && biomebase_a.b != null && biomebase_a.c != null && biomebase_a.d != null && biomebase_a.e != null && biomebase_a.f != null && biomebase_a.g != null && biomebase_a.h != null && biomebase_a.i != null) {
this.aS = biomebase_a.a;
this.aU = biomebase_a.b;
this.aT = biomebase_a.c;
this.aL = biomebase_a.d;
this.aM = biomebase_a.e;
this.aN = biomebase_a.f;
this.aO = biomebase_a.g;
this.aP = biomebase_a.h;
this.aQ = biomebase_a.i;
this.aR = biomebase_a.j;
WorldGenStage.Decoration[] aworldgenstage_decoration = WorldGenStage.Decoration.values();
int i = aworldgenstage_decoration.length;
int j;
for (j = 0; j < i; ++j) {
WorldGenStage.Decoration worldgenstage_decoration = aworldgenstage_decoration[j];
this.aW.put(worldgenstage_decoration, Lists.newArrayList());
}
EnumCreatureType[] aenumcreaturetype = EnumCreatureType.values();
i = aenumcreaturetype.length;
for (j = 0; j < i; ++j) {
EnumCreatureType enumcreaturetype = aenumcreaturetype[j];
this.aZ.put(enumcreaturetype, new MobList()); // Paper
}
} else {
throw new IllegalStateException("You are missing parameters to build a proper biome for " + this.getClass().getSimpleName() + "\n" + biomebase_a);
}
}
protected void a() {
this.a(WorldGenStage.Decoration.UNDERGROUND_STRUCTURES, a(WorldGenerator.f, new WorldGenMineshaftConfiguration(0.004000000189989805D, WorldGenMineshaft.Type.NORMAL), BiomeBase.n, WorldGenFeatureDecoratorConfiguration.e));
this.a(WorldGenStage.Decoration.SURFACE_STRUCTURES, a(WorldGenerator.e, new WorldGenFeatureVillageConfiguration(0, WorldGenVillagePieces.Material.OAK), BiomeBase.n, WorldGenFeatureDecoratorConfiguration.e));
this.a(WorldGenStage.Decoration.UNDERGROUND_STRUCTURES, a(WorldGenerator.m, new WorldGenFeatureStrongholdConfiguration(), BiomeBase.n, WorldGenFeatureDecoratorConfiguration.e));
this.a(WorldGenStage.Decoration.SURFACE_STRUCTURES, a(WorldGenerator.l, new WorldGenFeatureSwampHutConfiguration(), BiomeBase.n, WorldGenFeatureDecoratorConfiguration.e));
this.a(WorldGenStage.Decoration.SURFACE_STRUCTURES, a(WorldGenerator.i, new WorldGenFeatureDesertPyramidConfiguration(), BiomeBase.n, WorldGenFeatureDecoratorConfiguration.e));
this.a(WorldGenStage.Decoration.SURFACE_STRUCTURES, a(WorldGenerator.h, new WorldGenFeatureJunglePyramidConfiguration(), BiomeBase.n, WorldGenFeatureDecoratorConfiguration.e));
this.a(WorldGenStage.Decoration.SURFACE_STRUCTURES, a(WorldGenerator.j, new WorldGenFeatureIglooConfiguration(), BiomeBase.n, WorldGenFeatureDecoratorConfiguration.e));
this.a(WorldGenStage.Decoration.SURFACE_STRUCTURES, a(WorldGenerator.k, new WorldGenFeatureShipwreckConfiguration(false), BiomeBase.n, WorldGenFeatureDecoratorConfiguration.e));
this.a(WorldGenStage.Decoration.SURFACE_STRUCTURES, a(WorldGenerator.n, new WorldGenMonumentConfiguration(), BiomeBase.n, WorldGenFeatureDecoratorConfiguration.e));
this.a(WorldGenStage.Decoration.SURFACE_STRUCTURES, a(WorldGenerator.g, new WorldGenMansionConfiguration(), BiomeBase.n, WorldGenFeatureDecoratorConfiguration.e));
this.a(WorldGenStage.Decoration.SURFACE_STRUCTURES, a(WorldGenerator.o, new WorldGenFeatureOceanRuinConfiguration(WorldGenFeatureOceanRuin.Temperature.COLD, 0.3F, 0.9F), BiomeBase.n, WorldGenFeatureDecoratorConfiguration.e));
this.a(WorldGenStage.Decoration.UNDERGROUND_STRUCTURES, a(WorldGenerator.r, new WorldGenBuriedTreasureConfiguration(0.01F), BiomeBase.n, WorldGenFeatureDecoratorConfiguration.e));
}
public boolean b() {
return this.aR != null;
}
protected void a(EnumCreatureType enumcreaturetype, BiomeBase.BiomeMeta biomebase_biomemeta) {
((List) this.aZ.get(enumcreaturetype)).add(biomebase_biomemeta);
}
public List<BiomeBase.BiomeMeta> getMobs(EnumCreatureType enumcreaturetype) {
return (List) this.aZ.get(enumcreaturetype);
}
public BiomeBase.Precipitation c() {
return this.aU;
}
public boolean d() {
return this.getHumidity() > 0.85F;
}
public float e() {
return 0.1F;
}
public float getAdjustedTemperature(BlockPosition blockposition) {
if (blockposition.getY() > 64) {
float f = (float) (BiomeBase.aI.a((double) ((float) blockposition.getX() / 8.0F), (double) ((float) blockposition.getZ() / 8.0F)) * 4.0D);
return this.getTemperature() - (f + (float) blockposition.getY() - 64.0F) * 0.05F / 30.0F;
} else {
return this.getTemperature();
}
}
public boolean a(IWorldReader iworldreader, BlockPosition blockposition) {
return this.a(iworldreader, blockposition, true);
}
public boolean a(IWorldReader iworldreader, BlockPosition blockposition, boolean flag) {
if (this.getAdjustedTemperature(blockposition) >= 0.15F) {
return false;
} else {
if (blockposition.getY() >= 0 && blockposition.getY() < 256 && iworldreader.getBrightness(EnumSkyBlock.BLOCK, blockposition) < 10) {
IBlockData iblockdata = iworldreader.getType(blockposition);
Fluid fluid = iworldreader.getFluid(blockposition);
if (fluid.c() == FluidTypes.WATER && iblockdata.getBlock() instanceof BlockFluids) {
if (!flag) {
return true;
}
boolean flag1 = iworldreader.B(blockposition.west()) && iworldreader.B(blockposition.east()) && iworldreader.B(blockposition.north()) && iworldreader.B(blockposition.south());
if (!flag1) {
return true;
}
}
}
return false;
}
}
public boolean b(IWorldReader iworldreader, BlockPosition blockposition) {
if (this.getAdjustedTemperature(blockposition) >= 0.15F) {
return false;
} else {
if (blockposition.getY() >= 0 && blockposition.getY() < 256 && iworldreader.getBrightness(EnumSkyBlock.BLOCK, blockposition) < 10) {
IBlockData iblockdata = iworldreader.getType(blockposition);
if (iblockdata.isAir() && Blocks.SNOW.getBlockData().canPlace(iworldreader, blockposition)) {
return true;
}
}
return false;
}
}
public void a(WorldGenStage.Decoration worldgenstage_decoration, WorldGenFeatureComposite<?, ?> worldgenfeaturecomposite) {
if (worldgenfeaturecomposite instanceof WorldGenFeatureCompositeFlower) {
this.aX.add((WorldGenFeatureCompositeFlower) worldgenfeaturecomposite);
}
((List) this.aW.get(worldgenstage_decoration)).add(worldgenfeaturecomposite);
}
public <C extends WorldGenFeatureConfiguration> void a(WorldGenStage.Features worldgenstage_features, WorldGenCarverWrapper<C> worldgencarverwrapper) {
((List) this.aV.computeIfAbsent(worldgenstage_features, (worldgenstage_features1) -> {
return Lists.newArrayList();
})).add(worldgencarverwrapper);
}
public List<WorldGenCarverWrapper<?>> a(WorldGenStage.Features worldgenstage_features) {
return (List) this.aV.computeIfAbsent(worldgenstage_features, (worldgenstage_features1) -> {
return Lists.newArrayList();
});
}
public <C extends WorldGenFeatureConfiguration> void a(StructureGenerator<C> structuregenerator, C c0) {
this.aY.put(structuregenerator, c0);
}
public <C extends WorldGenFeatureConfiguration> boolean a(StructureGenerator<C> structuregenerator) {
return this.aY.containsKey(structuregenerator);
}
@Nullable
public <C extends WorldGenFeatureConfiguration> WorldGenFeatureConfiguration b(StructureGenerator<C> structuregenerator) {
return (WorldGenFeatureConfiguration) this.aY.get(structuregenerator);
}
public List<WorldGenFeatureCompositeFlower<?>> f() {
return this.aX;
}
public List<WorldGenFeatureComposite<?, ?>> a(WorldGenStage.Decoration worldgenstage_decoration) {
return (List) this.aW.get(worldgenstage_decoration);
}
public void a(WorldGenStage.Decoration worldgenstage_decoration, ChunkGenerator<? extends GeneratorSettings> chunkgenerator, GeneratorAccess generatoraccess, long i, SeededRandom seededrandom, BlockPosition blockposition) {
int j = 0;
for (Iterator iterator = ((List) this.aW.get(worldgenstage_decoration)).iterator(); iterator.hasNext(); ++j) {
WorldGenFeatureComposite<?, ?> worldgenfeaturecomposite = (WorldGenFeatureComposite) iterator.next();
seededrandom.b(i, j, worldgenstage_decoration.ordinal());
worldgenfeaturecomposite.a(generatoraccess, chunkgenerator, seededrandom, blockposition, WorldGenFeatureConfiguration.e);
}
}
public void a(Random random, IChunkAccess ichunkaccess, int i, int j, int k, double d0, IBlockData iblockdata, IBlockData iblockdata1, int l, long i1) {
this.aS.a(i1);
this.aS.a(random, ichunkaccess, this, i, j, k, d0, iblockdata, iblockdata1, l, i1, BiomeBase.ag);
}
public BiomeBase.EnumTemperature g() {
return this.aT == BiomeBase.Geography.OCEAN ? BiomeBase.EnumTemperature.OCEAN : ((double) this.getTemperature() < 0.2D ? BiomeBase.EnumTemperature.COLD : ((double) this.getTemperature() < 1.0D ? BiomeBase.EnumTemperature.MEDIUM : BiomeBase.EnumTemperature.WARM));
}
public static BiomeBase getBiome(int i, BiomeBase biomebase) {
BiomeBase biomebase1 = (BiomeBase) IRegistry.BIOME.fromId(i);
return biomebase1 == null ? biomebase : biomebase1;
}
public final float h() {
return this.aL;
}
public final float getHumidity() {
return this.aO;
}
public String k() {
if (this.aK == null) {
this.aK = SystemUtils.a("biome", IRegistry.BIOME.getKey(this));
}
return this.aK;
}
public final float l() {
return this.aM;
}
public final float getTemperature() {
return this.aN;
}
public final int n() {
return this.aP;
}
public final int o() {
return this.aQ;
}
public final BiomeBase.Geography p() {
return this.aT;
}
public WorldGenSurfaceComposite<?> q() {
return this.aS;
}
public WorldGenSurfaceConfiguration r() {
return this.aS.a();
}
@Nullable
public String s() {
return this.aR;
}
public static void t() {
a(0, "ocean", new BiomeOcean());
a(1, "plains", new BiomePlains());
a(2, "desert", new BiomeDesert());
a(3, "mountains", new BiomeBigHills());
a(4, "forest", new BiomeForest());
a(5, "taiga", new BiomeTaiga());
a(6, "swamp", new BiomeSwamp());
a(7, "river", new BiomeRiver());
a(8, "nether", new BiomeHell());
a(9, "the_end", new BiomeTheEnd());
a(10, "frozen_ocean", new BiomeFrozenOcean());
a(11, "frozen_river", new BiomeFrozenRiver());
a(12, "snowy_tundra", new BiomeIcePlains());
a(13, "snowy_mountains", new BiomeIceMountains());
a(14, "mushroom_fields", new BiomeMushrooms());
a(15, "mushroom_field_shore", new BiomeMushroomIslandShore());
a(16, "beach", new BiomeBeach());
a(17, "desert_hills", new BiomeDesertHills());
a(18, "wooded_hills", new BiomeForestHills());
a(19, "taiga_hills", new BiomeTaigaHills());
a(20, "mountain_edge", new BiomeExtremeHillsEdge());
a(21, "jungle", new BiomeJungle());
a(22, "jungle_hills", new BiomeJungleHills());
a(23, "jungle_edge", new BiomeJungleEdge());
a(24, "deep_ocean", new BiomeDeepOcean());
a(25, "stone_shore", new BiomeStoneBeach());
a(26, "snowy_beach", new BiomeColdBeach());
a(27, "birch_forest", new BiomeBirchForest());
a(28, "birch_forest_hills", new BiomeBirchForestHills());
a(29, "dark_forest", new BiomeRoofedForest());
a(30, "snowy_taiga", new BiomeColdTaiga());
a(31, "snowy_taiga_hills", new BiomeColdTaigaHills());
a(32, "giant_tree_taiga", new BiomeMegaTaiga());
a(33, "giant_tree_taiga_hills", new BiomeMegaTaigaHills());
a(34, "wooded_mountains", new BiomeExtremeHillsWithTrees());
a(35, "savanna", new BiomeSavanna());
a(36, "savanna_plateau", new BiomeSavannaPlateau());
a(37, "badlands", new BiomeMesa());
a(38, "wooded_badlands_plateau", new BiomeMesaPlataeu());
a(39, "badlands_plateau", new BiomeMesaPlataeuClear());
a(40, "small_end_islands", new BiomeTheEndFloatingIslands());
a(41, "end_midlands", new BiomeTheEndMediumIsland());
a(42, "end_highlands", new BiomeTheEndHighIsland());
a(43, "end_barrens", new BiomeTheEndBarrenIsland());
a(44, "warm_ocean", new BiomeWarmOcean());
a(45, "lukewarm_ocean", new BiomeLukewarmOcean());
a(46, "cold_ocean", new BiomeColdOcean());
a(47, "deep_warm_ocean", new BiomeWarmDeepOcean());
a(48, "deep_lukewarm_ocean", new BiomeLukewarmDeepOcean());
a(49, "deep_cold_ocean", new BiomeColdDeepOcean());
a(50, "deep_frozen_ocean", new BiomeFrozenDeepOcean());
a(127, "the_void", new BiomeVoid());
a(129, "sunflower_plains", new BiomeSunflowerPlains());
a(130, "desert_lakes", new BiomeDesertMutated());
a(131, "gravelly_mountains", new BiomeExtremeHillsMutated());
a(132, "flower_forest", new BiomeFlowerForest());
a(133, "taiga_mountains", new BiomeTaigaMutated());
a(134, "swamp_hills", new BiomeSwamplandMutated());
a(140, "ice_spikes", new BiomeIcePlainsSpikes());
a(149, "modified_jungle", new BiomeJungleMutated());
a(151, "modified_jungle_edge", new BiomeJungleEdgeMutated());
a(155, "tall_birch_forest", new BiomeBirchForestMutated());
a(156, "tall_birch_hills", new BiomeBirchForestHillsMutated());
a(157, "dark_forest_hills", new BiomeRoofedForestMutated());
a(158, "snowy_taiga_mountains", new BiomeColdTaigaMutated());
a(160, "giant_spruce_taiga", new BiomeMegaSpruceTaiga());
a(161, "giant_spruce_taiga_hills", new BiomeRedwoodTaigaHillsMutated());
a(162, "modified_gravelly_mountains", new BiomeExtremeHillsWithTreesMutated());
a(163, "shattered_savanna", new BiomeSavannaMutated());
a(164, "shattered_savanna_plateau", new BiomeSavannaPlateauMutated());
a(165, "eroded_badlands", new BiomeMesaBryce());
a(166, "modified_wooded_badlands_plateau", new BiomeMesaPlateauMutated());
a(167, "modified_badlands_plateau", new BiomeMesaPlateauClearMutated());
Collections.addAll(BiomeBase.aG, new BiomeBase[] { Biomes.OCEAN, Biomes.PLAINS, Biomes.DESERT, Biomes.MOUNTAINS, Biomes.FOREST, Biomes.TAIGA, Biomes.SWAMP, Biomes.RIVER, Biomes.FROZEN_RIVER, Biomes.SNOWY_TUNDRA, Biomes.SNOWY_MOUNTAINS, Biomes.MUSHROOM_FIELDS, Biomes.MUSHROOM_FIELD_SHORE, Biomes.BEACH, Biomes.DESERT_HILLS, Biomes.WOODED_HILLS, Biomes.TAIGA_HILLS, Biomes.JUNGLE, Biomes.JUNGLE_HILLS, Biomes.JUNGLE_EDGE, Biomes.DEEP_OCEAN, Biomes.STONE_SHORE, Biomes.SNOWY_BEACH, Biomes.BIRCH_FOREST, Biomes.BIRCH_FOREST_HILLS, Biomes.DARK_FOREST, Biomes.SNOWY_TAIGA, Biomes.SNOWY_TAIGA_HILLS, Biomes.GIANT_TREE_TAIGA, Biomes.GIANT_TREE_TAIGA_HILLS, Biomes.WOODED_MOUNTAINS, Biomes.SAVANNA, Biomes.SAVANNA_PLATEAU, Biomes.BADLANDS, Biomes.WOODED_BADLANDS_PLATEAU, Biomes.BADLANDS_PLATEAU});
}
private static void a(int i, String s, BiomeBase biomebase) {
IRegistry.BIOME.a(i, new MinecraftKey(s), biomebase);
if (biomebase.b()) {
BiomeBase.aH.a(biomebase, IRegistry.BIOME.a(IRegistry.BIOME.get(new MinecraftKey(biomebase.aR))));
}
}
// Paper start - keep track of data in a pair set to give O(1) contains calls - we have to hook removals incase plugins mess with it
public static class MobList extends java.util.ArrayList<BiomeMeta> {
java.util.Set<BiomeMeta> biomes = new java.util.HashSet<>();
@Override
public boolean contains(Object o) {
return biomes.contains(o);
}
@Override
public boolean add(BiomeMeta biomeMeta) {
biomes.add(biomeMeta);
return super.add(biomeMeta);
}
@Override
public BiomeMeta remove(int index) {
BiomeMeta removed = super.remove(index);
if (removed != null) {
biomes.remove(removed);
}
return removed;
}
@Override
public void clear() {
biomes.clear();
super.clear();
}
}
// Paper end
public static class a {
@Nullable
private WorldGenSurfaceComposite<?> a;
@Nullable
private BiomeBase.Precipitation b;
@Nullable
private BiomeBase.Geography c;
@Nullable
private Float d;
@Nullable
private Float e;
@Nullable
private Float f;
@Nullable
private Float g;
@Nullable
private Integer h;
@Nullable
private Integer i;
@Nullable
private String j;
public a() {}
public BiomeBase.a a(WorldGenSurfaceComposite<?> worldgensurfacecomposite) {
this.a = worldgensurfacecomposite;
return this;
}
public BiomeBase.a a(BiomeBase.Precipitation biomebase_precipitation) {
this.b = biomebase_precipitation;
return this;
}
public BiomeBase.a a(BiomeBase.Geography biomebase_geography) {
this.c = biomebase_geography;
return this;
}
public BiomeBase.a a(float f) {
this.d = f;
return this;
}
public BiomeBase.a b(float f) {
this.e = f;
return this;
}
public BiomeBase.a c(float f) {
this.f = f;
return this;
}
public BiomeBase.a d(float f) {
this.g = f;
return this;
}
public BiomeBase.a a(int i) {
this.h = i;
return this;
}
public BiomeBase.a b(int i) {
this.i = i;
return this;
}
public BiomeBase.a a(@Nullable String s) {
this.j = s;
return this;
}
public String toString() {
return "BiomeBuilder{\nsurfaceBuilder=" + this.a + ",\nprecipitation=" + this.b + ",\nbiomeCategory=" + this.c + ",\ndepth=" + this.d + ",\nscale=" + this.e + ",\ntemperature=" + this.f + ",\ndownfall=" + this.g + ",\nwaterColor=" + this.h + ",\nwaterFogColor=" + this.i + ",\nparent='" + this.j + '\'' + "\n" + '}';
}
}
public static class BiomeMeta extends WeightedRandom.WeightedRandomChoice {
public EntityTypes<? extends EntityInsentient> b;
public int c;
public int d;
public BiomeMeta(EntityTypes<? extends EntityInsentient> entitytypes, int i, int j, int k) {
super(i);
this.b = entitytypes;
this.c = j;
this.d = k;
}
public String toString() {
return EntityTypes.getName(this.b) + "*(" + this.c + "-" + this.d + "):" + this.a;
}
}
public static enum Precipitation {
NONE, RAIN, SNOW;
private Precipitation() {}
}
public static enum Geography {
NONE, TAIGA, EXTREME_HILLS, JUNGLE, MESA, PLAINS, SAVANNA, ICY, THEEND, BEACH, FOREST, OCEAN, DESERT, RIVER, SWAMP, MUSHROOM, NETHER;
private Geography() {}
}
public static enum EnumTemperature {
OCEAN, COLD, MEDIUM, WARM;
private EnumTemperature() {}
}
}