fix biomes somewhat

This commit is contained in:
Sen 2025-07-30 18:11:16 +02:00
parent 02c007f0c0
commit fb6b612934
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
11 changed files with 168 additions and 256 deletions

View file

@ -71,7 +71,7 @@ import server.worldgen.caves.MapGenBigCaves;
import server.worldgen.caves.MapGenCaves;
import server.worldgen.caves.MapGenRavine;
import server.worldgen.populator.PopulatorAsteroids;
import server.worldgen.populator.PopulatorBiome;
import server.worldgen.populator.PopulatorTerranian;
import server.worldgen.populator.PopulatorBlackened;
import server.worldgen.populator.PopulatorChaos;
import server.worldgen.populator.PopulatorForest;
@ -512,7 +512,7 @@ public abstract class UniverseRegistry extends DimensionRegistry {
registerPlanet("Terra", new Planet(6378136, 8766144L, 24000L, 28.0f, 9.81f, 259.15f, Blocks.stone.getState(), Blocks.water.getState(), 63), new GeneratorData()
.setGenerator(new GeneratorPerlin(true))
.setReplacer(new ReplacerTerranian(Blocks.grass.getState(), Blocks.dirt.getState(), Blocks.gravel.getState(), Blocks.sand.getState()))
.setPopulator(new PopulatorBiome())
.setPopulator(new PopulatorTerranian())
.setBiomeGen(new BiomeGenerator(new Biome(8.0f, 80.0f), false, 4, 4, 6, 50,
new Biome[] {new Biome(60.0f, 0.0f, Scaling.PLAINS_LOW), new Biome(60.0f, 0.0f, Scaling.PLAINS_LOW), new Biome(60.0f, 0.0f, Scaling.HILLS_LOW), new Biome(28.0f, 0.0f, Scaling.PLAINS_LOW), new Biome(20.0f, 0.0f, Scaling.HILLS_PLATEAU), new Biome(12.0f, 40.0f, Scaling.PLAINS_LOW)},
new Biome[] {new Biome(8.0f, 80.0f), new Biome(8.0f, 80.0f, 0.1F, 0.4F), new Biome(8.0f, 80.0f), new Biome(-12.0f, 30.0f, Scaling.HILLS_LARGE), new Biome(12.0f, 40.0f, Scaling.PLAINS_LOW), new Biome(4.0f, 60.0f), new Biome(12.0f, 90.0f, Scaling.SEA_POND), new Biome(18.0f, 90.0f)},
@ -637,7 +637,7 @@ public abstract class UniverseRegistry extends DimensionRegistry {
new GeneratorData().setGenerator(new GeneratorPerlin(true))
.setReplacer(new ReplacerAltSimple(Blocks.grass.getState(), Blocks.dirt.getState(), Blocks.gravel.getState()))
.setBiomeGen(new BiomeGenerator(new Biome(8.0f, 80.0f), true, 5, 3, 3, 30))
.setPopulator(new PopulatorForest(0)).addCaveGen(new MapGenCaves(Blocks.lava.getState()), new MapGenRavine(Blocks.lava.getState()))
.setPopulator(new PopulatorForest(3)).addCaveGen(new MapGenCaves(Blocks.lava.getState()), new MapGenRavine(Blocks.lava.getState()))
.addFeature(new FeatureDungeons(10)).enableSnow()
.addLake(Blocks.water.getState(), null, Blocks.grass.getState(), 4, 0, 255, false)
.addLake(Blocks.lava.getState(), null, null, 8, 8, 255, true)

View file

@ -26,7 +26,6 @@ import server.worldgen.tree.WorldGenTree;
public abstract class PopulatorBasic implements Populator {
protected static final PerlinGen TREE_NOISE = new PerlinGen(new Random(726528729282625L), 8);
protected static final PerlinGen GRASS_NOISE = new PerlinGen(new Random(297363826225L), 1);
protected static final FeatureDoublePlant DOUBLE_PLANT_GEN = new FeatureDoublePlant();
protected final WorldGenBaseTree worldGeneratorTrees = new WorldGenBaseTree(false);

View file

@ -1,12 +0,0 @@
package server.worldgen.populator;
public class PopulatorBeach extends PopulatorBasic
{
public PopulatorBeach()
{
this.treesPerChunk = -999;
this.deadBushPerChunk = 0;
this.reedsPerChunk = 0;
this.cactiPerChunk = 0;
}
}

View file

@ -1,4 +0,0 @@
package server.worldgen.populator;
public class PopulatorDefault extends PopulatorBasic {
}

View file

@ -7,6 +7,7 @@ import common.init.WoodType;
import common.rng.Random;
import common.util.BlockPos;
import common.util.ExtMath;
import server.rng.PerlinGen;
import server.world.WorldServer;
import server.worldgen.foliage.WorldGenBigMushroom;
import server.worldgen.tree.WorldGenBaseTree;
@ -17,7 +18,16 @@ import server.worldgen.tree.WorldGenTree;
public class PopulatorForest extends PopulatorBasic
{
private static final BlockDoublePlant[] FLOWER_TYPES = new BlockDoublePlant[] {
private static final BlockFlower.EnumFlowerType[] TULIP_TYPES = new BlockFlower.EnumFlowerType[] {
BlockFlower.EnumFlowerType.ORANGE_TULIP, BlockFlower.EnumFlowerType.RED_TULIP,
BlockFlower.EnumFlowerType.PINK_TULIP, BlockFlower.EnumFlowerType.WHITE_TULIP
};
private static final BlockFlower.EnumFlowerType[] FLOWER_TYPES = new BlockFlower.EnumFlowerType[] {
BlockFlower.EnumFlowerType.POPPY, BlockFlower.EnumFlowerType.HOUSTONIA, BlockFlower.EnumFlowerType.DAISY
};
protected static final PerlinGen GRASS_NOISE = new PerlinGen(new Random(297363826225L), 1);
private static final BlockDoublePlant[] DFLOWER_TYPES = new BlockDoublePlant[] {
Blocks.syringa, Blocks.rose_bush, Blocks.paeonia
};
protected static final WorldGenBirch tallBirch = new WorldGenBirch(false, true);
@ -25,11 +35,6 @@ public class PopulatorForest extends PopulatorBasic
protected static final WorldGenDarkOak darkOak = new WorldGenDarkOak(false);
private final int subType;
// protected LeavesType leavesType = null;
// protected WorldGenBaseTree cherry;
// protected WorldGenBaseTree maple;
// protected WorldGenBigTree cherryBig;
// protected WorldGenBigTree mapleBig;
protected WorldGenBaseTree cherry = new WorldGenBaseTree(false, Blocks.cherry_log.getState(), // .withProperty(BlockNewLog.VARIANT, BlockPlanks.EnumType.CHERRY),
WoodType.CHERRY); // .withProperty(BlockLeaves.TYPE, worldIn.getLeavesGen()));
protected WorldGenBaseTree maple = new WorldGenBaseTree(false, Blocks.maple_log.getState(), // .withProperty(BlockNewLog.VARIANT, BlockPlanks.EnumType.MAPLE),
@ -45,13 +50,6 @@ public class PopulatorForest extends PopulatorBasic
this.treesPerChunk = 10;
this.grassPerChunk = 2;
if (this.subType == 1)
{
this.treesPerChunk = 6;
this.flowersPerChunk = 100;
this.grassPerChunk = 1;
}
if (this.subType == 4)
{
this.treesPerChunk = 20;
@ -69,23 +67,52 @@ public class PopulatorForest extends PopulatorBasic
protected WorldGenTree genBigTreeChance(Random rand)
{
if(this.subType == 5)
if(this.subType == 1)
return rand.chance() ? PopulatorForest.tallBirch : PopulatorForest.normalBirch;
return (WorldGenTree)
(this.subType == 3 && rand.rarity(3) ? darkOak :
(this.subType != 2 && rand.rarity(5) ? (this.subType != 3 && this.subType != 4 && rand.chance(this.subType == 1 ? 2 : 30) ? (rand.chance(25) ? this.cherryBig : this.cherry) :
(rand.rarity(5) ? (this.subType != 3 && this.subType != 4 && rand.chance(30) ? (rand.chance(25) ? this.cherryBig : this.cherry) :
this.subType == 4 && rand.chance(42) ? this.worldGeneratorBigTree : this.worldGeneratorTrees) :
(this.subType == 4 || rand.chance(this.subType == 2 ? 30 : 2) ? (rand.chance(this.subType == 4 ? 32 : 5) ? this.mapleBig : this.maple) : normalBirch)));
(this.subType == 4 || rand.chance(2) ? (rand.chance(this.subType == 4 ? 32 : 5) ? this.mapleBig : this.maple) : normalBirch)));
}
protected BlockFlower.EnumFlowerType pickRandomFlower(Random rand, BlockPos pos)
{
if (this.subType == 1)
{
double d0 = ExtMath.clampd((1.0D + GRASS_NOISE.generate((double)pos.getX() / 48.0D, (double)pos.getZ() / 48.0D)) / 2.0D, 0.0D, 0.9999D);
BlockFlower.EnumFlowerType blockflower$enumflowertype = BlockFlower.EnumFlowerType.values()[(int)(d0 * (double)BlockFlower.EnumFlowerType.values().length)];
return blockflower$enumflowertype == BlockFlower.EnumFlowerType.BLUE_ORCHID ? BlockFlower.EnumFlowerType.ROSE : blockflower$enumflowertype;
}
if(this.subType == 0) {
double d0 = GRASS_NOISE.generate((double)pos.getX() / 200.0D, (double)pos.getZ() / 200.0D);
if (d0 < -0.8D)
{
return rand.pick(TULIP_TYPES);
// int j = rand.nextInt(4);
//
// switch (j)
// {
// case 0:
// return BlockFlower.EnumFlowerType.ORANGE_TULIP;
//
// case 1:
// return BlockFlower.EnumFlowerType.RED_TULIP;
//
// case 2:
// return BlockFlower.EnumFlowerType.PINK_TULIP;
//
// case 3:
// default:
// return BlockFlower.EnumFlowerType.WHITE_TULIP;
// }
}
else if (d0 < -0.5 && rand.rarity(3))
{
return rand.pick(FLOWER_TYPES);
// int i = rand.nextInt(3);
// return i == 0 ? BlockFlower.EnumFlowerType.POPPY : (i == 1 ? BlockFlower.EnumFlowerType.HOUSTONIA : BlockFlower.EnumFlowerType.OXEYE_DAISY);
}
else
{
return super.pickRandomFlower(rand, pos);
}
}
else if (this.subType == 4)
{
double d0 = ExtMath.clampd((1.0D + GRASS_NOISE.generate((double)pos.getX() / 48.0D, (double)pos.getZ() / 48.0D)) / 2.0D, 0.0D, 0.9999D);
@ -99,6 +126,52 @@ public class PopulatorForest extends PopulatorBasic
public void decorate(WorldServer worldIn, Random rand, BlockPos pos)
{
if(this.subType == 0) {
double d0 = GRASS_NOISE.generate((double)(pos.getX() + 8) / 200.0D, (double)(pos.getZ() + 8) / 200.0D);
if(d0 < -0.5) {
this.treesPerChunk = -999;
if (d0 < -0.8D)
{
this.flowersPerChunk = 15;
this.grassPerChunk = 5;
}
else
{
this.flowersPerChunk = 4;
this.grassPerChunk = 10;
DOUBLE_PLANT_GEN.setPlantType(Blocks.large_tallgrass);
for (int i = 0; i < 7; ++i)
{
int j = rand.chOffset();
int k = rand.chOffset();
int l = rand.zrange(worldIn.getHeight(pos.add(j, 0, k)).getY() + 32);
DOUBLE_PLANT_GEN.generate(worldIn, rand, pos.add(j, l, k));
}
}
// int n = rand.range(0, 2);
if (rand.chance())
{
DOUBLE_PLANT_GEN.setPlantType(Blocks.sunflower);
// for (int i1 = 0; i1 < 10; ++i1)
// {
int j1 = rand.chOffset();
int k1 = rand.chOffset();
int l1 = rand.zrange(worldIn.getHeight(pos.add(j1, 0, k1)).getY() + 32);
DOUBLE_PLANT_GEN.generate(worldIn, rand, pos.add(j1, l1, k1));
// }
}
super.decorate(worldIn, rand, pos);
return;
}
else {
this.treesPerChunk = 10;
}
}
// if(worldIn.getLeavesGen() != this.leavesType) {
// this.leavesType = worldIn.getLeavesGen();
// this.cherry = new WorldGenBaseTree(false, Blocks.log2.getDefaultState().withProperty(BlockNewLog.VARIANT, BlockPlanks.EnumType.CHERRY),
@ -142,18 +215,13 @@ public class PopulatorForest extends PopulatorBasic
int j1 = rand.range(-3, 1);
if (this.subType == 1)
{
j1 += 2;
}
for (int k1 = 0; k1 < j1; ++k1)
{
// int l1 = rand.nextInt(3);
// if (l1 == 0)
// {
DOUBLE_PLANT_GEN.setPlantType(rand.pick(FLOWER_TYPES));
DOUBLE_PLANT_GEN.setPlantType(rand.pick(DFLOWER_TYPES));
// }
// else if (l1 == 1)
// {

View file

@ -1,115 +0,0 @@
package server.worldgen.populator;
import common.block.foliage.BlockFlower;
import common.init.Blocks;
import common.rng.Random;
import common.util.BlockPos;
import server.world.WorldServer;
public class PopulatorPlains extends PopulatorBasic
{
private static final BlockFlower.EnumFlowerType[] TULIP_TYPES = new BlockFlower.EnumFlowerType[] {
BlockFlower.EnumFlowerType.ORANGE_TULIP, BlockFlower.EnumFlowerType.RED_TULIP,
BlockFlower.EnumFlowerType.PINK_TULIP, BlockFlower.EnumFlowerType.WHITE_TULIP
};
private static final BlockFlower.EnumFlowerType[] FLOWER_TYPES = new BlockFlower.EnumFlowerType[] {
BlockFlower.EnumFlowerType.POPPY, BlockFlower.EnumFlowerType.HOUSTONIA, BlockFlower.EnumFlowerType.DAISY
};
// protected boolean field_150628_aC;
protected PopulatorPlains()
{
this.treesPerChunk = -999;
this.flowersPerChunk = 4;
this.grassPerChunk = 10;
}
protected BlockFlower.EnumFlowerType pickRandomFlower(Random rand, BlockPos pos)
{
double d0 = GRASS_NOISE.generate((double)pos.getX() / 200.0D, (double)pos.getZ() / 200.0D);
if (d0 < -0.8D)
{
return rand.pick(TULIP_TYPES);
// int j = rand.nextInt(4);
//
// switch (j)
// {
// case 0:
// return BlockFlower.EnumFlowerType.ORANGE_TULIP;
//
// case 1:
// return BlockFlower.EnumFlowerType.RED_TULIP;
//
// case 2:
// return BlockFlower.EnumFlowerType.PINK_TULIP;
//
// case 3:
// default:
// return BlockFlower.EnumFlowerType.WHITE_TULIP;
// }
}
else if (rand.rarity(3))
{
return rand.pick(FLOWER_TYPES);
// int i = rand.nextInt(3);
// return i == 0 ? BlockFlower.EnumFlowerType.POPPY : (i == 1 ? BlockFlower.EnumFlowerType.HOUSTONIA : BlockFlower.EnumFlowerType.OXEYE_DAISY);
}
else
{
return BlockFlower.EnumFlowerType.DANDELION;
}
}
public void decorate(WorldServer worldIn, Random rand, BlockPos pos)
{
double d0 = GRASS_NOISE.generate((double)(pos.getX() + 8) / 200.0D, (double)(pos.getZ() + 8) / 200.0D);
if (d0 < -0.8D)
{
this.flowersPerChunk = 15;
this.grassPerChunk = 5;
}
else
{
this.flowersPerChunk = 4;
this.grassPerChunk = 10;
DOUBLE_PLANT_GEN.setPlantType(Blocks.large_tallgrass);
for (int i = 0; i < 7; ++i)
{
int j = rand.chOffset();
int k = rand.chOffset();
int l = rand.zrange(worldIn.getHeight(pos.add(j, 0, k)).getY() + 32);
DOUBLE_PLANT_GEN.generate(worldIn, rand, pos.add(j, l, k));
}
}
// int n = rand.range(0, 2);
if (rand.chance())
{
DOUBLE_PLANT_GEN.setPlantType(Blocks.sunflower);
// for (int i1 = 0; i1 < 10; ++i1)
// {
int j1 = rand.chOffset();
int k1 = rand.chOffset();
int l1 = rand.zrange(worldIn.getHeight(pos.add(j1, 0, k1)).getY() + 32);
DOUBLE_PLANT_GEN.generate(worldIn, rand, pos.add(j1, l1, k1));
// }
}
super.decorate(worldIn, rand, pos);
}
// protected Biome createMutatedBiome(int p_180277_1_)
// {
// BiomePlains biomegenplains = new BiomePlains(p_180277_1_);
// biomegenplains.setBiomeName("sunflowerPlains");
// biomegenplains.field_150628_aC = true;
// biomegenplains.setColor(9286496);
// return biomegenplains;
// }
}

View file

@ -11,21 +11,11 @@ public class PopulatorSavanna extends PopulatorBasic
{
private static final WorldGenSavanna field_150627_aC = new WorldGenSavanna(false);
private final boolean dplant;
protected PopulatorSavanna(boolean dplant)
protected PopulatorSavanna()
{
this.dplant = dplant;
if(dplant) {
this.treesPerChunk = 1;
this.flowersPerChunk = 4;
this.grassPerChunk = 20;
}
else {
this.treesPerChunk = 2;
this.flowersPerChunk = 2;
this.grassPerChunk = 5;
}
this.treesPerChunk = 1;
this.flowersPerChunk = 4;
this.grassPerChunk = 20;
}
protected WorldGenTree genBigTreeChance(Random rand)
@ -35,17 +25,15 @@ public class PopulatorSavanna extends PopulatorBasic
public void decorate(WorldServer worldIn, Random rand, BlockPos pos)
{
if(this.dplant) {
DOUBLE_PLANT_GEN.setPlantType(Blocks.large_tallgrass);
for (int i = 0; i < 7; ++i)
{
int j = rand.chOffset();
int k = rand.chOffset();
int l = rand.zrange(worldIn.getHeight(pos.add(j, 0, k)).getY() + 32);
DOUBLE_PLANT_GEN.generate(worldIn, rand, pos.add(j, l, k));
}
}
DOUBLE_PLANT_GEN.setPlantType(Blocks.large_tallgrass);
for (int i = 0; i < 7; ++i)
{
int j = rand.chOffset();
int k = rand.chOffset();
int l = rand.zrange(worldIn.getHeight(pos.add(j, 0, k)).getY() + 32);
DOUBLE_PLANT_GEN.generate(worldIn, rand, pos.add(j, l, k));
}
super.decorate(worldIn, rand, pos);
}

View file

@ -1,46 +1,11 @@
package server.worldgen.populator;
import common.rng.Random;
import common.util.BlockPos;
import server.world.WorldServer;
import server.worldgen.feature.WorldGenIcePath;
import server.worldgen.feature.WorldGenIceSpike;
import server.worldgen.tree.WorldGenTaiga2;
import server.worldgen.tree.WorldGenTree;
public class PopulatorSnow extends PopulatorBasic
{
private final WorldGenIceSpike spikeGen = new WorldGenIceSpike();
private final WorldGenIcePath pathGen = new WorldGenIcePath(4);
private final boolean spiky;
public PopulatorSnow(boolean spiky)
{
this.spiky = spiky;
}
public void decorate(WorldServer worldIn, Random rand, BlockPos pos)
{
if (this.spiky)
{
for (int i = 0; i < 3; ++i)
{
int j = rand.chOffset();
int k = rand.chOffset();
this.spikeGen.generate(worldIn, rand, worldIn.getHeight(pos.add(j, 0, k)));
}
for (int l = 0; l < 2; ++l)
{
int i1 = rand.chOffset();
int j1 = rand.chOffset();
this.pathGen.generate(worldIn, rand, worldIn.getHeight(pos.add(i1, 0, j1)));
}
}
super.decorate(worldIn, rand, pos);
}
protected WorldGenTree genBigTreeChance(Random rand)
{
return new WorldGenTaiga2(false);

View file

@ -0,0 +1,39 @@
package server.worldgen.populator;
import common.rng.Random;
import common.util.BlockPos;
import server.world.WorldServer;
import server.worldgen.feature.WorldGenIcePath;
import server.worldgen.feature.WorldGenIceSpike;
import server.worldgen.tree.WorldGenTaiga2;
import server.worldgen.tree.WorldGenTree;
public class PopulatorSpikes extends PopulatorBasic
{
private final WorldGenIceSpike spikeGen = new WorldGenIceSpike();
private final WorldGenIcePath pathGen = new WorldGenIcePath(4);
public void decorate(WorldServer worldIn, Random rand, BlockPos pos)
{
for (int i = 0; i < 3; ++i)
{
int j = rand.chOffset();
int k = rand.chOffset();
this.spikeGen.generate(worldIn, rand, worldIn.getHeight(pos.add(j, 0, k)));
}
for (int l = 0; l < 2; ++l)
{
int i1 = rand.chOffset();
int j1 = rand.chOffset();
this.pathGen.generate(worldIn, rand, worldIn.getHeight(pos.add(i1, 0, j1)));
}
super.decorate(worldIn, rand, pos);
}
protected WorldGenTree genBigTreeChance(Random rand)
{
return new WorldGenTaiga2(false);
}
}

View file

@ -4,29 +4,21 @@ import common.rng.Random;
import common.util.BlockPos;
import server.world.WorldServer;
public class PopulatorBiome implements Populator {
private final Populator plains = (new PopulatorPlains());
public class PopulatorTerranian implements Populator {
private final Populator desert = (new PopulatorDesert());
private final Populator extremeHills = (new PopulatorHills(false));
private final Populator extremeHillsPlus = (new PopulatorHills(true));
private final Populator taiga = (new PopulatorTaiga(0));
private final Populator swampland = (new PopulatorSwamp());
private final Populator icePlains = (new PopulatorSnow());
private final Populator jungle = (new PopulatorTropical());
private final Populator stoneBeach = (new PopulatorRocky());
private final Populator savanna = (new PopulatorSavanna());
private final Populator forest = (new PopulatorForest(0));
private final Populator extremeHillsPlus = (new PopulatorHills(true));
private final Populator megaTaiga = (new PopulatorTaiga(1));
private final Populator tallTreeTaiga = new PopulatorTaiga(2);
private final Populator swampland = (new PopulatorSwamp());
private final Populator river = (new PopulatorDefault());
private final Populator icePlains = (new PopulatorSnow(false));
private final Populator iceSpikes = new PopulatorSnow(true);
private final Populator beach = (new PopulatorBeach());
private final Populator jungle = (new PopulatorTropical(false));
private final Populator jungleEdge = (new PopulatorTropical(true));
private final Populator stoneBeach = (new PopulatorRocky());
private final Populator savanna = (new PopulatorSavanna(true));
private final Populator savannaNoDPlants = new PopulatorSavanna(false);
private final Populator forest = (new PopulatorForest(0));
private final Populator flowerForest = new PopulatorForest(1);
private final Populator birchForest = (new PopulatorForest(2));
private final Populator roofedForest = (new PopulatorForest(3));
private final Populator tallBirchForest = new PopulatorForest(5);
private final Populator tallBirchForest = new PopulatorForest(1);
public void decorate(WorldServer world, Random rand, BlockPos pos) {
float absTemp = world.getGenTemperature(pos.getX(), pos.getZ());
@ -44,8 +36,12 @@ public class PopulatorBiome implements Populator {
gen = this.extremeHills;
else if(absTemp < 5.0f && humidity >= 70.0f)
gen = this.taiga;
else if(absTemp < 5.0f)
gen = this.icePlains;
else if(absTemp < 22.0f && humidity >= 85.0f)
gen = this.swampland;
else if(humidity >= 85.0f)
gen = this.jungle;
gen.decorate(world, rand, pos);
}

View file

@ -21,28 +21,16 @@ public class PopulatorTropical extends PopulatorBasic
private static final WoodType LEAVES = WoodType.JUNGLE; // .withProperty(BlockOldLeaf.VARIANT, BlockPlanks.EnumType.JUNGLE); // .withProperty(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false));
private static final WoodType BUSH = WoodType.OAK; // .withProperty(BlockOldLeaf.VARIANT, BlockPlanks.EnumType.OAK); // .withProperty(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false));
private final boolean edge;
public PopulatorTropical(boolean edge)
public PopulatorTropical()
{
this.edge = edge;
if (edge)
{
this.treesPerChunk = 2;
}
else
{
this.treesPerChunk = 50;
}
this.treesPerChunk = 50;
this.grassPerChunk = 25;
this.flowersPerChunk = 4;
}
protected WorldGenTree genBigTreeChance(Random rand)
{
return (WorldGenTree)(rand.chance(10) ? this.worldGeneratorBigTree : (rand.chance(2) ? new WorldGenShrub(LOG, BUSH) : (!this.edge && rand.chance(3) ? new WorldGenJungle(false, 10, 20, LOG, LEAVES) : new WorldGenBaseTree(false, rand.range(4, 10), LOG, LEAVES, true))));
return (WorldGenTree)(rand.chance(10) ? this.worldGeneratorBigTree : (rand.chance(2) ? new WorldGenShrub(LOG, BUSH) : (rand.chance(3) ? new WorldGenJungle(false, 10, 20, LOG, LEAVES) : new WorldGenBaseTree(false, rand.range(4, 10), LOG, LEAVES, true))));
}
protected FeatureGenerator getRandomWorldGenForGrass(Random rand)