On RetroMc on of my townmates found a hole in the bedrock close to our town, and i wanted to show it off for people to see, and for an explanation for a bug.
The screenshot is after significant rennovation for, . . . reasons.
This happened because lava lakes (the pools, like on the surface but everywhere underground) replace blocks around them with stone and in older versions they could generate down to as low as y=1, replacing blocks at y=0 with stone, and there is nothing special about bedrock, other than that its hardness means that players and normal explosions can't break it, but game code can replace it just like any other other block (unless specifically coded not to, e.g. ores only replace stone, caves only replace stone, dirt, and grass, and so on).
This was fixed at some time between 1.0.0 and 1.3.1 by limiting their minimum surface altitude to y=5, with the lowest replaced blocks at y=1 (I've found source code for 1.0.0 and 1.3.1 but not e.g. 1.1 or 1.2.1; the Wiki doesn't say when this was fixed on either of their articles for bedrock or lava lakes, which as usual are woefully lacking in historical changes, like come on, nothing between Alpha 1.2.6 and 1.18? I can think of at least two other notable changes, in 1.7 their altitude range was doubled to accommodate the new height limit for terrain, which made them more (less) common on the surface (underground). In 1.13 code that prevented them from generating within villages was broken, which also affected water lakes and may have led to their eventual removal).
Interestingly, the code for 1.6.4 still attempts to place them as low as y=0 but they never could generate that low since the layer below must be solid:
// ChunkProviderGenerate.populate
if (!var11 && this.rand.nextInt(8) == 0)
{
var12 = var4 + this.rand.nextInt(16) + 8;
var13 = this.rand.nextInt(this.rand.nextInt(120) + 8); // y ranges from 0-126 with a nonlinear distribution
var14 = var5 + this.rand.nextInt(16) + 8;
if (var13 < 63 || this.rand.nextInt(10) == 0)
{
(new WorldGenLakes(Block.lavaStill.blockID)).generate(this.worldObj, this.rand, var12, var13, var14);
}
}
// WorldGenLakes
public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5)
{
// I know, weird code, they add 8 when calling this method only to subtract 8 (most other worldgen classes do
// not but always adding 8 makes things consistent, assuming otherwise did bite Mojang a few times)
par3 -= 8;
for (par5 -= 8; par4 > 5 && par1World.isAirBlock(par3, par4, par5); --par4)
{
;
}
if (par4 <= 4)
{
return false;
}
else
{
// This becomes the "bottom" of the lake, hence the minimum of y=1
par4 -= 4;
// This code converts blocks adjacent to lava to stone, only checking if its material is solid
if (Block.blocksList[this.blockIndex].blockMaterial == Material.lava)
{
for (var8 = 0; var8 < 16; ++var8)
{
for (var32 = 0; var32 < 16; ++var32)
{
for (var10 = 0; var10 < 8; ++var10)
{
var33 = !var6[(var8 * 16 + var32) * 8 + var10] && (var8 < 15 && var6[((var8 + 1) * 16 + var32) * 8 + var10] || var8 > 0 && var6[((var8 - 1) * 16 + var32) * 8 + var10] || var32 < 15 && var6[(var8 * 16 + var32 + 1) * 8 + var10] || var32 > 0 && var6[(var8 * 16 + (var32 - 1)) * 8 + var10] || var10 < 7 && var6[(var8 * 16 + var32) * 8 + var10 + 1] || var10 > 0 && var6[(var8 * 16 + var32) * 8 + (var10 - 1)]);
if (var33 && (var10 < 4 || par2Random.nextInt(2) != 0) && par1World.getBlockMaterial(par3 + var8, par4 + var10, par5 + var32).isSolid())
{
par1World.setBlock(par3 + var8, par4 + var10, par5 + var32, Block.stone.blockID, 0, 2);
}
}
}
}
}
This was fixed at some time between 1.0.0 and 1.3.1 by limiting their minimum surface altitude to y=5, with the lowest replaced blocks at y=1 (I've found source code for 1.0.0 and 1.3.1 but not e.g. 1.1 or 1.2.1; the Wiki doesn't say when this was fixed on either of their articles for bedrock or lava lakes, which as usual are woefully lacking in historical changes, like come on, nothing between Alpha 1.2.6 and 1.18? I can think of at least two other notable changes, in 1.7 their altitude range was doubled to accommodate the new height limit for terrain, which made them more (less) common on the surface (underground). In 1.13 code that prevented them from generating within villages was broken, which also affected water lakes and may have led to their eventual removal).
Interestingly, the code for 1.6.4 still attempts to place them as low as y=0 but they never could generate that low since the layer below must be solid:
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
lol did not expect my void hole to be here
Join my beta mc server's discord! https://discord.gg/btXdqu72yD