More Oil improvements and tweaks
Added a 50% bonus to well gen in biomes that spawn Lakes. Added Taiga to biomes that spawn Oil Lakes (waves at Canada and Siberia).
This commit is contained in:
parent
6fc1fc0abd
commit
4d601e976e
1 changed files with 22 additions and 14 deletions
|
@ -20,6 +20,7 @@ import buildcraft.BuildCraftEnergy;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import net.minecraft.block.BlockFlower;
|
import net.minecraft.block.BlockFlower;
|
||||||
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
|
|
||||||
public class OilPopulate {
|
public class OilPopulate {
|
||||||
|
|
||||||
|
@ -28,6 +29,7 @@ public class OilPopulate {
|
||||||
|
|
||||||
static {
|
static {
|
||||||
surfaceDepositBiomes.add(BiomeGenBase.desert.biomeID);
|
surfaceDepositBiomes.add(BiomeGenBase.desert.biomeID);
|
||||||
|
surfaceDepositBiomes.add(BiomeGenBase.taiga.biomeID);
|
||||||
|
|
||||||
excludedBiomes.add(BiomeGenBase.sky.biomeID);
|
excludedBiomes.add(BiomeGenBase.sky.biomeID);
|
||||||
excludedBiomes.add(BiomeGenBase.hell.biomeID);
|
excludedBiomes.add(BiomeGenBase.hell.biomeID);
|
||||||
|
@ -58,7 +60,7 @@ public class OilPopulate {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate a surface oil lake
|
// Generate a surface oil lake
|
||||||
if (surfaceDepositBiomes.contains(biome.biomeID) && rand.nextFloat() > 0.97) {
|
if (surfaceDepositBiomes.contains(biome.biomeID) && rand.nextDouble() <= 0.02) { // 2%
|
||||||
int lakeX = rand.nextInt(10) + 2 + x;
|
int lakeX = rand.nextInt(10) + 2 + x;
|
||||||
int lakeZ = rand.nextInt(10) + 2 + z;
|
int lakeZ = rand.nextInt(10) + 2 + z;
|
||||||
int lakeY = world.getTopSolidOrLiquidBlock(lakeX, lakeZ) - 1;
|
int lakeY = world.getTopSolidOrLiquidBlock(lakeX, lakeZ) - 1;
|
||||||
|
@ -69,8 +71,9 @@ public class OilPopulate {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean mediumDeposit = rand.nextDouble() <= (0.15 / 100.0);
|
double bonus = surfaceDepositBiomes.contains(biome.biomeID) ? 1.5 : 1;
|
||||||
boolean largeDeposit = rand.nextDouble() <= (0.005 / 100.0);
|
boolean mediumDeposit = rand.nextDouble() <= 0.0015 * bonus; // 0.15%
|
||||||
|
boolean largeDeposit = rand.nextDouble() <= 0.0005 * bonus; // 0.05%
|
||||||
|
|
||||||
if (BuildCraftCore.debugMode && x == 0 && z == 0) {
|
if (BuildCraftCore.debugMode && x == 0 && z == 0) {
|
||||||
largeDeposit = true;
|
largeDeposit = true;
|
||||||
|
@ -112,7 +115,7 @@ public class OilPopulate {
|
||||||
|
|
||||||
boolean started = false;
|
boolean started = false;
|
||||||
|
|
||||||
for (int y = 128; y >= baseY; --y) {
|
for (int y = world.getActualHeight(); y >= baseY; --y) {
|
||||||
if (started) {
|
if (started) {
|
||||||
int blockId = world.getBlockId(baseX, y, baseZ);
|
int blockId = world.getBlockId(baseX, y, baseZ);
|
||||||
if (blockId == Block.bedrock.blockID) {
|
if (blockId == Block.bedrock.blockID) {
|
||||||
|
@ -132,13 +135,11 @@ public class OilPopulate {
|
||||||
generateSurfaceDeposit(world, rand, baseX, y, baseZ, 5 + rand.nextInt(5));
|
generateSurfaceDeposit(world, rand, baseX, y, baseZ, 5 + rand.nextInt(5));
|
||||||
}
|
}
|
||||||
|
|
||||||
int ymax = 0;
|
int wellHeight = 4;
|
||||||
|
|
||||||
if (largeDeposit) {
|
if (largeDeposit) {
|
||||||
ymax = (y + 30 < 128 ? y + 30 : 128);
|
wellHeight = 16;
|
||||||
} else if (mediumDeposit) {
|
|
||||||
ymax = (y + 4 < 128 ? y + 4 : 128);
|
|
||||||
}
|
}
|
||||||
|
int ymax = Math.min(y + wellHeight, world.getActualHeight() - 1);
|
||||||
|
|
||||||
for (int h = y + 1; h <= ymax; ++h) {
|
for (int h = y + 1; h <= ymax; ++h) {
|
||||||
world.setBlock(baseX, h, baseZ, BuildCraftEnergy.oilStill.blockID);
|
world.setBlock(baseX, h, baseZ, BuildCraftEnergy.oilStill.blockID);
|
||||||
|
@ -178,6 +179,11 @@ public class OilPopulate {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isOilOrWater(World world, int x, int y, int z) {
|
||||||
|
int blockId = world.getBlockId(x, y, z);
|
||||||
|
return blockId == Block.waterMoving.blockID || blockId == Block.waterStill.blockID || blockId == BuildCraftEnergy.oilStill.blockID || blockId == BuildCraftEnergy.oilMoving.blockID;
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean isOil(World world, int x, int y, int z) {
|
private static boolean isOil(World world, int x, int y, int z) {
|
||||||
int blockId = world.getBlockId(x, y, z);
|
int blockId = world.getBlockId(x, y, z);
|
||||||
return (blockId == BuildCraftEnergy.oilStill.blockID || blockId == BuildCraftEnergy.oilMoving.blockID);
|
return (blockId == BuildCraftEnergy.oilStill.blockID || blockId == BuildCraftEnergy.oilMoving.blockID);
|
||||||
|
@ -194,16 +200,18 @@ public class OilPopulate {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (adjacentOil || force) {
|
if (adjacentOil || force) {
|
||||||
if (world.isAirBlock(x, y + 1, z) || Block.blocksList[world.getBlockId(x, y + 1, z)] instanceof BlockFlower) {
|
if (world.isAirBlock(x, y + 1, z) || !world.isBlockOpaqueCube(x, y + 1, z) || Block.blocksList[world.getBlockId(x, y + 1, z)] instanceof BlockFlower) {
|
||||||
int blockId = world.getBlockId(x, y, z);
|
world.setBlockToAir(x, y + 1, z);
|
||||||
if (blockId == Block.waterMoving.blockID || blockId == Block.waterStill.blockID || isOil(world, x, y, z)) {
|
if (isOilOrWater(world, x, y, z)) {
|
||||||
world.setBlock(x, y, z, BuildCraftEnergy.oilStill.blockID);
|
world.setBlock(x, y, z, BuildCraftEnergy.oilStill.blockID);
|
||||||
} else {
|
} else {
|
||||||
world.setBlockToAir(x, y, z);
|
world.setBlockToAir(x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = depth; i > 0; i--) {
|
for (int d = depth; d > 0; d--) {
|
||||||
world.setBlock(x, y - i, z, BuildCraftEnergy.oilStill.blockID);
|
if (isOilOrWater(world, x, y - d - 1, z) || world.isBlockSolidOnSide(x, y - d - 1, z, ForgeDirection.UP)) {
|
||||||
|
world.setBlock(x, y - d, z, BuildCraftEnergy.oilStill.blockID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue