net.minecraft.server.BiomeBase Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of chest-server Show documentation
Show all versions of chest-server Show documentation
A spigot fork to kotlin structure and news.
The newest version!
package net.minecraft.server;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.*;
public abstract class BiomeBase {
// ChestMC start - moved up - fixed not initializing - private -> public.
private static final BiomeBase[] biomes = new BiomeBase[256];
// ChestMC end.
public static final Set n = Sets.newHashSet();
public static final Map o = Maps.newHashMap();
// ChestMC start - moved up.
protected static final NoiseGenerator3 ae;
protected static final NoiseGenerator3 af;
protected static final WorldGenTallPlant ag;
private static final Logger aD = LogManager.getLogger();
// ChestMC end.
// ChestMC start - organization between biomes and biomes temperatures.
protected static final BiomeTemperature a = new BiomeTemperature(0.1F, 0.2F);
protected static final BiomeTemperature b = new BiomeTemperature(-0.5F, 0.0F);
protected static final BiomeTemperature c = new BiomeTemperature(-1.0F, 0.1F);
protected static final BiomeTemperature d = new BiomeTemperature(-1.8F, 0.1F);
protected static final BiomeTemperature e = new BiomeTemperature(0.125F, 0.05F);
protected static final BiomeTemperature f = new BiomeTemperature(0.2F, 0.2F);
protected static final BiomeTemperature g = new BiomeTemperature(0.45F, 0.3F);
protected static final BiomeTemperature h = new BiomeTemperature(1.5F, 0.025F);
protected static final BiomeTemperature i = new BiomeTemperature(1.0F, 0.5F);
protected static final BiomeTemperature j = new BiomeTemperature(0.0F, 0.025F);
protected static final BiomeTemperature k = new BiomeTemperature(0.1F, 0.8F);
protected static final BiomeTemperature l = new BiomeTemperature(0.2F, 0.3F);
protected static final BiomeTemperature m = new BiomeTemperature(-0.2F, 0.1F);
public static final BiomeBase PLAINS = (new BiomePlains(1)).b(9286496).a("Plains");
public static final BiomeBase FOREST = (new BiomeForest(4, 0)).b(353825).a("Forest");
public static final BiomeBase HELL = (new BiomeHell(8)).b(16711680).a("Hell").b().a(2.0F, 0.0F);
public static final BiomeBase SKY = (new BiomeTheEnd(9)).b(8421631).a("The End").b();
public static final BiomeBase JUNGLE = (new BiomeJungle(21, false)).b(5470985).a("Jungle").a(5470985).a(0.95F, 0.9F);
public static final BiomeBase JUNGLE_EDGE = (new BiomeJungle(23, true)).b(6458135).a("JungleEdge").a(5470985).a(0.95F, 0.8F);
public static final BiomeBase BIRCH_FOREST = (new BiomeForest(27, 2)).a("Birch Forest").b(3175492);
public static final BiomeBase ROOFED_FOREST = (new BiomeForest(29, 3)).b(4215066).a("Roofed Forest");
public static final BiomeBase MESA = (new BiomeMesa(37, false, false)).b(14238997).a("Mesa");
public static final BiomeBase ad = BiomeBase.OCEAN;
public static final BiomeBase RIVER = (new BiomeRiver(7)).b(255).a("River").a(BiomeBase.b);
public static final BiomeBase FROZEN_RIVER = (new BiomeRiver(11)).b(10526975).a("FrozenRiver").c().a(BiomeBase.b).a(0.0F, 0.5F);
public static final BiomeBase OCEAN = (new BiomeOcean(0)).b(112).a("Ocean").a(BiomeBase.c);
public static final BiomeBase FROZEN_OCEAN = (new BiomeOcean(10)).b(9474208).a("FrozenOcean").c().a(BiomeBase.c).a(0.0F, 0.5F);
public static final BiomeBase DEEP_OCEAN = (new BiomeOcean(24)).b(48).a("Deep Ocean").a(BiomeBase.d);
public static final BiomeBase DESERT = (new BiomeDesert(2)).b(16421912).a("Desert").b().a(2.0F, 0.0F).a(BiomeBase.e);
public static final BiomeBase ICE_PLAINS = (new BiomeIcePlains(12, false)).b(16777215).a("Ice Plains").c().a(0.0F, 0.5F).a(BiomeBase.e);
public static final BiomeBase SAVANNA = (new BiomeSavanna(35)).b(12431967).a("Savanna").a(1.2F, 0.0F).b().a(BiomeBase.e);
public static final BiomeBase TAIGA = (new BiomeTaiga(5, 0)).b(747097).a("Taiga").a(5159473).a(0.25F, 0.8F).a(BiomeBase.f);
public static final BiomeBase COLD_TAIGA = (new BiomeTaiga(30, 0)).b(3233098).a("Cold Taiga").a(5159473).c().a(-0.5F, 0.4F).a(BiomeBase.f).c(16777215);
public static final BiomeBase MEGA_TAIGA = (new BiomeTaiga(32, 1)).b(5858897).a("Mega Taiga").a(5159473).a(0.3F, 0.8F).a(BiomeBase.f);
public static final BiomeBase ICE_MOUNTAINS = (new BiomeIcePlains(13, false)).b(10526880).a("Ice Mountains").c().a(BiomeBase.g).a(0.0F, 0.5F);
public static final BiomeBase DESERT_HILLS = (new BiomeDesert(17)).b(13786898).a("DesertHills").b().a(2.0F, 0.0F).a(BiomeBase.g);
public static final BiomeBase FOREST_HILLS = (new BiomeForest(18, 0)).b(2250012).a("ForestHills").a(BiomeBase.g);
public static final BiomeBase TAIGA_HILLS = (new BiomeTaiga(19, 0)).b(1456435).a("TaigaHills").a(5159473).a(0.25F, 0.8F).a(BiomeBase.g);
public static final BiomeBase JUNGLE_HILLS = (new BiomeJungle(22, false)).b(2900485).a("JungleHills").a(5470985).a(0.95F, 0.9F).a(BiomeBase.g);
public static final BiomeBase BIRCH_FOREST_HILLS = (new BiomeForest(28, 2)).a("Birch Forest Hills").b(2055986).a(BiomeBase.g);
public static final BiomeBase COLD_TAIGA_HILLS = (new BiomeTaiga(31, 0)).b(2375478).a("Cold Taiga Hills").a(5159473).c().a(-0.5F, 0.4F).a(BiomeBase.g).c(16777215);
public static final BiomeBase MEGA_TAIGA_HILLS = (new BiomeTaiga(33, 1)).b(4542270).a("Mega Taiga Hills").a(5159473).a(0.3F, 0.8F).a(BiomeBase.g);
public static final BiomeBase SAVANNA_PLATEAU = (new BiomeSavanna(36)).b(10984804).a("Savanna Plateau").a(1.0F, 0.0F).b().a(BiomeBase.h);
public static final BiomeBase MESA_PLATEAU_F = (new BiomeMesa(38, false, true)).b(11573093).a("Mesa Plateau F").a(BiomeBase.h);
public static final BiomeBase MESA_PLATEAU = (new BiomeMesa(39, false, false)).b(13274213).a("Mesa Plateau").a(BiomeBase.h);
public static final BiomeBase EXTREME_HILLS = (new BiomeBigHills(3, false)).b(6316128).a("Extreme Hills").a(BiomeBase.i).a(0.2F, 0.3F);
public static final BiomeBase SMALL_MOUNTAINS = (new BiomeBigHills(20, true)).b(7501978).a("Extreme Hills Edge").a(BiomeBase.i.a()).a(0.2F, 0.3F);
public static final BiomeBase EXTREME_HILLS_PLUS = (new BiomeBigHills(34, true)).b(5271632).a("Extreme Hills+").a(BiomeBase.i).a(0.2F, 0.3F);
public static final BiomeBase MUSHROOM_SHORE = (new BiomeMushrooms(15)).b(10486015).a("MushroomIslandShore").a(0.9F, 1.0F).a(BiomeBase.j);
public static final BiomeBase BEACH = (new BiomeBeach(16)).b(16440917).a("Beach").a(0.8F, 0.4F).a(BiomeBase.j);
public static final BiomeBase COLD_BEACH = (new BiomeBeach(26)).b(16445632).a("Cold Beach").a(0.05F, 0.3F).a(BiomeBase.j).c();
public static final BiomeBase STONE_BEACH = (new BiomeStoneBeach(25)).b(10658436).a("Stone Beach").a(0.2F, 0.3F).a(BiomeBase.k);
public static final BiomeBase MUSHROOM_ISLAND = (new BiomeMushrooms(14)).b(16711935).a("MushroomIsland").a(0.9F, 1.0F).a(BiomeBase.l);
public static final BiomeBase SWAMPLAND = (new BiomeSwamp(6)).b(522674).a("Swampland").a(9154376).a(BiomeBase.m).a(0.8F, 0.9F);
// ChestMC end.
static {
BiomeBase.PLAINS.k();
BiomeBase.DESERT.k();
BiomeBase.FOREST.k();
BiomeBase.TAIGA.k();
BiomeBase.SWAMPLAND.k();
BiomeBase.ICE_PLAINS.k();
BiomeBase.JUNGLE.k();
BiomeBase.JUNGLE_EDGE.k();
BiomeBase.COLD_TAIGA.k();
BiomeBase.SAVANNA.k();
BiomeBase.SAVANNA_PLATEAU.k();
BiomeBase.MESA.k();
BiomeBase.MESA_PLATEAU_F.k();
BiomeBase.MESA_PLATEAU.k();
BiomeBase.BIRCH_FOREST.k();
BiomeBase.BIRCH_FOREST_HILLS.k();
BiomeBase.ROOFED_FOREST.k();
BiomeBase.MEGA_TAIGA.k();
BiomeBase.EXTREME_HILLS.k();
BiomeBase.EXTREME_HILLS_PLUS.k();
BiomeBase.MEGA_TAIGA.d(BiomeBase.MEGA_TAIGA_HILLS.id + 128).a("Redwood Taiga Hills M");
BiomeBase[] abiomebase = BiomeBase.biomes;
int i = abiomebase.length;
for (BiomeBase biomebase : abiomebase) {
if (biomebase != null) {
if (BiomeBase.o.containsKey(biomebase.ah)) {
throw new Error("Biome \"" + biomebase.ah + "\" is defined as both ID " + BiomeBase.o.get(biomebase.ah).id + " and " + biomebase.id);
}
BiomeBase.o.put(biomebase.ah, biomebase);
if (biomebase.id < 128) {
BiomeBase.n.add(biomebase);
}
}
}
BiomeBase.n.remove(BiomeBase.HELL);
BiomeBase.n.remove(BiomeBase.SKY);
BiomeBase.n.remove(BiomeBase.FROZEN_OCEAN);
BiomeBase.n.remove(BiomeBase.SMALL_MOUNTAINS);
ae = new NoiseGenerator3(new Random(1234L), 1);
af = new NoiseGenerator3(new Random(2345L), 1);
ag = new WorldGenTallPlant();
}
public final int id;
public String ah;
public int ai;
public int aj;
public IBlockData ak;
public IBlockData al;
public int am;
public float an;
public float ao;
public float temperature;
public float humidity;
public int ar;
public BiomeDecorator as;
protected List at;
protected List au;
protected List av;
protected List aw;
protected boolean ax;
protected boolean ay;
protected WorldGenTrees aA;
protected WorldGenBigTree aB;
protected WorldGenSwampTree aC;
protected BiomeBase(int i) {
this.ak = Blocks.GRASS.getBlockData();
this.al = Blocks.DIRT.getBlockData();
this.am = 5169201;
this.an = BiomeBase.a.a;
this.ao = BiomeBase.a.b;
this.temperature = 0.5F;
this.humidity = 0.5F;
this.ar = 16777215;
this.at = Lists.newArrayList();
this.au = Lists.newArrayList();
this.av = Lists.newArrayList();
this.aw = Lists.newArrayList();
this.ay = true;
this.aA = new WorldGenTrees(false);
this.aB = new WorldGenBigTree(false);
this.aC = new WorldGenSwampTree();
this.id = i;
BiomeBase.biomes[i] = this;
this.as = this.a();
this.au.add(new BiomeMeta(EntitySheep.class, 12, 4, 4));
this.au.add(new BiomeMeta(EntityRabbit.class, 10, 3, 3));
this.au.add(new BiomeMeta(EntityPig.class, 10, 4, 4));
this.au.add(new BiomeMeta(EntityChicken.class, 10, 4, 4));
this.au.add(new BiomeMeta(EntityCow.class, 8, 4, 4));
this.at.add(new BiomeMeta(EntitySpider.class, 100, 4, 4));
this.at.add(new BiomeMeta(EntityZombie.class, 100, 4, 4));
this.at.add(new BiomeMeta(EntitySkeleton.class, 100, 4, 4));
this.at.add(new BiomeMeta(EntityCreeper.class, 100, 4, 4));
this.at.add(new BiomeMeta(EntitySlime.class, 100, 4, 4));
this.at.add(new BiomeMeta(EntityEnderman.class, 10, 1, 4));
this.at.add(new BiomeMeta(EntityWitch.class, 5, 1, 1));
this.av.add(new BiomeMeta(EntitySquid.class, 10, 4, 4));
this.aw.add(new BiomeMeta(EntityBat.class, 10, 8, 8));
}
public static BiomeBase[] getBiomes() {
return BiomeBase.biomes;
}
public static BiomeBase getBiome(int i) {
return getBiome(i, null);
}
public static BiomeBase getBiome(int i, BiomeBase biomebase) {
if (i >= 0 && i <= BiomeBase.biomes.length) {
BiomeBase biomebase1 = BiomeBase.biomes[i];
return biomebase1 == null ? biomebase : biomebase1;
} else {
BiomeBase.aD.warn("Biome ID is out of bounds: " + i + ", defaulting to 0 (Ocean)");
return BiomeBase.OCEAN;
}
}
protected BiomeDecorator a() {
return new BiomeDecorator();
}
protected BiomeBase a(float f, float f1) {
if (f > 0.1F && f < 0.2F) {
throw new IllegalArgumentException("Please avoid temperatures in the range 0.1 - 0.2 because of snow");
} else {
this.temperature = f;
this.humidity = f1;
return this;
}
}
protected final BiomeBase a(BiomeTemperature biomebase_biometemperature) {
this.an = biomebase_biometemperature.a;
this.ao = biomebase_biometemperature.b;
return this;
}
protected BiomeBase b() {
this.ay = false;
return this;
}
public WorldGenTreeAbstract a(Random random) {
return random.nextInt(10) == 0 ? this.aB : this.aA;
}
public WorldGenerator b(Random random) {
return new WorldGenGrass(BlockLongGrass.EnumTallGrassType.GRASS);
}
public BlockFlowers.EnumFlowerVarient a(Random random, BlockPosition blockposition) {
return random.nextInt(3) > 0 ? BlockFlowers.EnumFlowerVarient.DANDELION : BlockFlowers.EnumFlowerVarient.POPPY;
}
protected BiomeBase c() {
this.ax = true;
return this;
}
protected BiomeBase a(String s) {
this.ah = s;
return this;
}
protected BiomeBase a(int i) {
this.am = i;
return this;
}
protected BiomeBase b(int i) {
this.a(i, false);
return this;
}
protected BiomeBase c(int i) {
this.aj = i;
return this;
}
protected BiomeBase a(int i, boolean flag) {
this.ai = i;
if (flag) {
this.aj = (i & 16711422) >> 1;
} else {
this.aj = i;
}
return this;
}
public List getMobs(EnumCreatureType enumcreaturetype) {
switch (SyntheticClass_1.switchMap[enumcreaturetype.ordinal()]) {
case 1:
return this.at;
case 2:
return this.au;
case 3:
return this.av;
case 4:
return this.aw;
default:
return Collections.emptyList();
}
}
public boolean d() {
return this.j();
}
public boolean e() {
return !this.j() && this.ay;
}
public boolean f() {
return this.humidity > 0.85F;
}
public float g() {
return 0.1F;
}
public final int h() {
return (int) (this.humidity * 65536.0F);
}
public final float a(BlockPosition blockposition) {
if (blockposition.getY() > 64) {
float f = (float) (BiomeBase.ae.a((double) blockposition.getX() * 1.0D / 8.0D, (double) blockposition.getZ() * 1.0D / 8.0D) * 4.0D);
return this.temperature - (f + (float) blockposition.getY() - 64.0F) * 0.05F / 30.0F;
} else {
return this.temperature;
}
}
public void a(World world, Random random, BlockPosition blockposition) {
this.as.a(world, random, this, blockposition);
}
public boolean j() {
return this.ax;
}
public void a(World world, Random random, ChunkSnapshot chunksnapshot, int i, int j, double d0) {
this.b(world, random, chunksnapshot, i, j, d0);
}
public final void b(World world, Random random, ChunkSnapshot chunksnapshot, int i, int j, double d0) {
int k = world.F();
IBlockData iblockdata = this.ak;
IBlockData iblockdata1 = this.al;
int l = -1;
int i1 = (int) (d0 / 3.0D + 3.0D + random.nextDouble() * 0.25D);
int j1 = i & 15;
int k1 = j & 15;
BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition();
for (int l1 = 255; l1 >= 0; --l1) {
if (l1 <= random.nextInt(5)) {
chunksnapshot.a(k1, l1, j1, Blocks.BEDROCK.getBlockData());
} else {
IBlockData iblockdata2 = chunksnapshot.a(k1, l1, j1);
if (iblockdata2.getBlock().getMaterial() == Material.AIR) {
l = -1;
} else if (iblockdata2.getBlock() == Blocks.STONE) {
if (l == -1) {
if (i1 <= 0) {
iblockdata = null;
iblockdata1 = Blocks.STONE.getBlockData();
} else if (l1 >= k - 4 && l1 <= k + 1) {
iblockdata = this.ak;
iblockdata1 = this.al;
}
if (l1 < k && (iblockdata == null || iblockdata.getBlock().getMaterial() == Material.AIR)) {
if (this.a(blockposition_mutableblockposition.c(i, l1, j)) < 0.15F) {
iblockdata = Blocks.ICE.getBlockData();
} else {
iblockdata = Blocks.WATER.getBlockData();
}
}
l = i1;
if (l1 >= k - 1) {
chunksnapshot.a(k1, l1, j1, iblockdata);
} else if (l1 < k - 7 - i1) {
iblockdata = null;
iblockdata1 = Blocks.STONE.getBlockData();
chunksnapshot.a(k1, l1, j1, Blocks.GRAVEL.getBlockData());
} else {
chunksnapshot.a(k1, l1, j1, iblockdata1);
}
} else if (l > 0) {
--l;
chunksnapshot.a(k1, l1, j1, iblockdata1);
if (l == 0 && iblockdata1.getBlock() == Blocks.SAND) {
l = random.nextInt(4) + Math.max(0, l1 - 63);
iblockdata1 = iblockdata1.get(BlockSand.VARIANT) == BlockSand.EnumSandVariant.RED_SAND ? Blocks.RED_SANDSTONE.getBlockData() : Blocks.SANDSTONE.getBlockData();
}
}
}
}
}
}
protected BiomeBase k() {
return this.d(this.id + 128);
}
protected BiomeBase d(int i) {
return new BiomeBaseSub(i, this);
}
public Class extends BiomeBase> l() {
return this.getClass();
}
public boolean a(BiomeBase biomebase) {
return biomebase == this || (biomebase != null && this.l() == biomebase.l());
}
public EnumTemperature m() {
return (double) this.temperature < 0.2D ? EnumTemperature.COLD : ((double) this.temperature < 1.0D ? EnumTemperature.MEDIUM : EnumTemperature.WARM);
}
public enum EnumTemperature {
OCEAN,
COLD,
MEDIUM,
WARM;
EnumTemperature() {
}
}
static class SyntheticClass_1 {
static final int[] switchMap = new int[EnumCreatureType.values().length];
static {
try {
SyntheticClass_1.switchMap[EnumCreatureType.MONSTER.ordinal()] = 1;
} catch (NoSuchFieldError nosuchfielderror) {
}
try {
SyntheticClass_1.switchMap[EnumCreatureType.CREATURE.ordinal()] = 2;
} catch (NoSuchFieldError nosuchfielderror1) {
}
try {
SyntheticClass_1.switchMap[EnumCreatureType.WATER_CREATURE.ordinal()] = 3;
} catch (NoSuchFieldError nosuchfielderror2) {
}
try {
SyntheticClass_1.switchMap[EnumCreatureType.AMBIENT.ordinal()] = 4;
} catch (NoSuchFieldError nosuchfielderror3) {
}
}
}
public static class BiomeMeta extends WeightedRandom.WeightedRandomChoice {
public Class extends EntityInsentient> b;
public int c;
public int d;
public BiomeMeta(Class extends EntityInsentient> oclass, int i, int j, int k) {
super(i);
this.b = oclass;
this.c = j;
this.d = k;
}
public String toString() {
return this.b.getSimpleName() + "*(" + this.c + "-" + this.d + "):" + this.a;
}
}
public static class BiomeTemperature {
public float a;
public float b;
public BiomeTemperature(float f, float f1) {
this.a = f;
this.b = f1;
}
public BiomeTemperature a() {
return new BiomeTemperature(this.a * 0.8F, this.b * 0.6F);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy