use of net.minecraft.world.gen.feature.WorldGenerator in project Realistic-Terrain-Generation by Team-RTG.
the class DecoSeaweed method generate.
@Override
public void generate(IRealisticBiome biome, RTGWorld rtgWorld, Random rand, int worldX, int worldZ, float strength, float river, boolean hasPlacedVillageBlocks) {
if (this.allowed) {
/*
* Determine how much seaweed we're going to try to generate (loopCount).
* The actual amount of seaweed that ends up being generated could be *less* than this value,
* depending on environmental conditions.
*/
float noise = rtgWorld.simplex.noise2(worldX / this.distribution.noiseDivisor, worldZ / this.distribution.noiseDivisor) * this.distribution.noiseFactor + this.distribution.noiseAddend;
int loopCount = this.loops;
loopCount = (this.strengthFactorForLoops > 0f) ? (int) (this.strengthFactorForLoops * strength) : loopCount;
loopCount = (this.strengthNoiseFactorForLoops) ? (int) (noise * strength) : loopCount;
loopCount = (this.strengthNoiseFactorXForLoops) ? (int) (noise * this.strengthFactorForLoops * strength) : loopCount;
if (loopCount < 1) {
return;
}
WorldGenerator worldGen = new WorldGenSeaweed(this.seaweedBlock, RandomUtil.getRandomInt(rand, this.minHeight, this.maxHeight));
for (int i = 0; i < loopCount; i++) {
// + 8;
int intX = scatter.get(rand, worldX);
// + 8;
int intZ = scatter.get(rand, worldZ);
int intY = RandomUtil.getRandomInt(rand, this.minY, this.maxY);
if (intY <= this.maxY && intY >= this.minY && isValidCondition(noise, rand, strength)) {
worldGen.generate(rtgWorld.world, rand, new BlockPos(intX, intY, intZ));
}
}
}
}
use of net.minecraft.world.gen.feature.WorldGenerator in project Realistic-Terrain-Generation by Team-RTG.
the class DecoShrub method generate.
@Override
public void generate(IRealisticBiome biome, RTGWorld rtgWorld, Random rand, int worldX, int worldZ, float strength, float river, boolean hasPlacedVillageBlocks) {
if (this.allowed) {
DecoBase.tweakShrubLeaves(this, false, true);
// Shrub size.
this.size = (this.size == -1) ? rand.nextInt(4) + 1 : this.size;
if (this.minSize > 0 && this.maxSize > 0 && this.maxSize >= this.minSize) {
this.size = this.minSize + rand.nextInt(this.maxSize - this.minSize + 1);
}
// Do we want random shrubs?
if (this.useDefaultRandom && this.randomLogBlocks.length > 0 && this.randomLogBlocks.length == this.randomLeavesBlocks.length) {
int rnd = rand.nextInt(this.randomLogBlocks.length);
this.setLogBlock(this.randomLogBlocks[rnd]);
this.setLeavesBlock(this.randomLeavesBlocks[rnd]);
}
WorldUtil worldUtil = new WorldUtil(rtgWorld.world);
WorldGenerator worldGenerator = new WorldGenShrubRTG(this.size, this.logBlock, this.leavesBlock, this.sand);
int loopCount = this.loops;
loopCount = (this.strengthFactor > 0f) ? (int) (this.strengthFactor * strength) : loopCount;
for (int i = 0; i < loopCount; i++) {
// + 8;
int intX = worldX + rand.nextInt(16);
// + 8;
int intZ = worldZ + rand.nextInt(16);
int intY = rtgWorld.world.getHeight(new BlockPos(intX, 0, intZ)).getY();
if (this.notEqualsZeroChance > 1) {
if (intY >= this.minY && intY <= this.maxY && rand.nextInt(this.notEqualsZeroChance) != 0) {
generateWorldGenerator(worldGenerator, worldUtil, rtgWorld.world, rand, intX, intY, intZ, hasPlacedVillageBlocks);
}
} else {
if (intY >= this.minY && intY <= this.maxY && rand.nextInt(this.chance) == 0) {
generateWorldGenerator(worldGenerator, worldUtil, rtgWorld.world, rand, intX, intY, intZ, hasPlacedVillageBlocks);
}
}
}
}
}
use of net.minecraft.world.gen.feature.WorldGenerator in project Realistic-Terrain-Generation by Team-RTG.
the class DecoSponge method generate.
@Override
public void generate(IRealisticBiome biome, RTGWorld rtgWorld, Random rand, int worldX, int worldZ, float strength, float river, boolean hasPlacedVillageBlocks) {
if (this.allowed) {
WorldUtil worldUtil = new WorldUtil(rtgWorld.world);
WorldGenerator worldGenerator = new WorldGenSponge(spongeBlock, 0, rand, validGroundBlocks);
for (int l1 = 0; l1 < this.strengthFactor * strength; ++l1) {
// + 8;
int i1 = worldX + rand.nextInt(16);
// + 8;
int j1 = worldZ + rand.nextInt(16);
int k1;
switch(this.heightType) {
case NEXT_INT:
k1 = RandomUtil.getRandomInt(rand, this.minY, this.maxY);
break;
case GET_HEIGHT_VALUE:
k1 = rtgWorld.world.getHeight(new BlockPos(i1, 0, j1)).getY();
break;
default:
k1 = rtgWorld.world.getHeight(new BlockPos(i1, 0, j1)).getY();
break;
}
if (k1 >= this.minY && k1 <= this.maxY && rand.nextInt(this.chance) == 0) {
worldGenerator.generate(rtgWorld.world, rand, new BlockPos(i1, k1, j1));
}
}
}
}
use of net.minecraft.world.gen.feature.WorldGenerator in project Realistic-Terrain-Generation by Team-RTG.
the class DecoDoubleGrass method generate.
@Override
public void generate(IRealisticBiome biome, RTGWorld rtgWorld, Random rand, int worldX, int worldZ, float strength, float river, boolean hasPlacedVillageBlocks) {
if (this.allowed) {
if (TerrainGen.decorate(rtgWorld.world, rand, new BlockPos(worldX, 0, worldZ), GRASS)) {
WorldGenerator worldGenerator = new WorldGenGrass(Blocks.DOUBLE_PLANT.getStateFromMeta(2), 2);
this.setLoops((this.strengthFactor > 0f) ? (int) (this.strengthFactor * strength) : this.loops);
for (int i = 0; i < this.loops; i++) {
int intX = worldX + rand.nextInt(16) + 8;
int intY = rand.nextInt(this.maxY);
int intZ = worldZ + rand.nextInt(16) + 8;
if (intY <= this.maxY) {
worldGenerator.generate(rtgWorld.world, rand, new BlockPos(intX, intY, intZ));
}
}
}
}
}
use of net.minecraft.world.gen.feature.WorldGenerator in project Realistic-Terrain-Generation by Team-RTG.
the class DecoFallenTree method generate.
@Override
public void generate(IRealisticBiome biome, RTGWorld rtgWorld, Random rand, int worldX, int worldZ, float strength, float river, boolean hasPlacedVillageBlocks) {
if (this.allowed) {
float noise = rtgWorld.simplex.noise2(worldX / this.distribution.noiseDivisor, worldZ / this.distribution.noiseDivisor) * this.distribution.noiseFactor + this.distribution.noiseAddend;
WorldUtil worldUtil = new WorldUtil(rtgWorld.world);
//Do we want to choose a random log?
if (this.randomLogBlocks.length > 0) {
this.setLogBlock(this.randomLogBlocks[rand.nextInt(this.randomLogBlocks.length)]);
}
WorldGenerator worldGenerator = null;
int finalSize = 4;
// Adjust the chance according to biome config.
this.setLogConditionChance(decoUtil.adjustChanceFromMultiplier(this.getLogConditionChance(), biome.getConfig().FALLEN_LOG_DENSITY_MULTIPLIER.get()));
if (this.maxSize > this.minSize) {
finalSize = this.minSize + rand.nextInt(this.maxSize - this.minSize);
worldGenerator = new WorldGenLog(this.logBlock, this.leavesBlock, finalSize);
} else if (this.maxSize == this.minSize) {
finalSize = this.minSize;
worldGenerator = new WorldGenLog(this.logBlock, this.leavesBlock, finalSize);
} else {
worldGenerator = new WorldGenLog(this.logBlock, this.leavesBlock, finalSize);
}
for (int i = 0; i < this.loops; i++) {
if (isValidLogCondition(noise, strength, rand)) {
// + 8;
int x22 = worldX + rand.nextInt(16);
// + 8;
int z22 = worldZ + rand.nextInt(16);
int y22 = rtgWorld.world.getHeight(new BlockPos(x22, 0, z22)).getY();
if (y22 <= this.maxY) {
// If we're in a village, check to make sure the log has extra room to grow to avoid corrupting the village.
if (hasPlacedVillageBlocks) {
if (!worldUtil.isSurroundedByBlock(Blocks.AIR.getDefaultState(), finalSize, WorldUtil.SurroundCheckType.CARDINAL, rand, x22, y22, z22)) {
return;
}
}
worldGenerator.generate(rtgWorld.world, rand, new BlockPos(x22, y22, z22));
}
}
}
}
}
Aggregations