I'm confused on how caves will stay the same with the changes that are coming for them though.
I assume that the new caves will displace some of the old caves, much as I've done:
An animation of all "layers" (everything, special caves only, caves only, mineshafts only):
These are static images for each frame, in the same order:
Most of the caves shown are "vanilla" type caves (with more variation), but they don't generate wherever "special" caves are present, especially in the upper-right and lower-left, where a giant cave region and network cave region are, which both disable normal cave generation within an 18x18 chunk area (excluding "sea level" caves, which are not shown). Mineshafts are also disabled in regions of high cave density; their base chance is about the same as vanilla 1.6.4 (1/100 chance per chunk, 1/98 in TMCW, 1/250 in 1.7+) but about 40% fail to generate (unlike vanilla they are also spaced apart, like other vanilla structures are, so they do not generate right next to each other, with overlap being rare). Strongholds reduce the density of caves nearby (no large caves or ravines allowed, which can still get large enough to intersect them, but the walls of strongholds overwrite air so they don't get disrupted).
The exact way this works is by populating an array with data corresponding to whether a certain type of cave can generate (one method is shown here) and for each chunk checking a radius around it to see if any generate, which is how a multi-chunk radius is excluded around each type (size depending on the size of the special cave; regional caves generate within 12x12 chunk areas):
// Initializes array used to store cave data, used to avoid recalculations due to overlapping chunks
// within the ranges of each chunk checked for a major improvement in performance.
private void initializeCaveData(int chunkX, int chunkZ, int distance)
{
// caveDataArray is 33x33 chunks in size (+/- 16) to account for 11 chunk gen range and 5 chunk max
// radius for checking nearby chunks around each chunk within the 11 chunk radius
for (int z = -16; z <= 16; ++z)
{
int zIndex = (z + 16) * 33 + 16;
int cz = chunkZ + z;
int z2 = z * z;
for (int x = -16; x <= 16; ++x)
{
int x2z2 = x * x + z2;
// x2z2 values were calculated with CaveInfo.calculateMaxX2Z2, using 10 for special caves,
// 15 for regional caves, and 35 for colossal caves and strongholds
if (x2z2 <= 317)
{
int cx = chunkX + x;
if (distance < 16384) distance = cx * cx + cz * cz;
byte data = 0;
if (this.validColossalCaveLocation(cx, cz, distance))
{
data = COLOSSAL;
}
else if (this.strongholdsEnabled && this.strongholdGenerator.validStrongholdLocation(cx, cz, distance))
{
data = STRONGHOLD;
}
else if (x2z2 <= 244)
{
if (this.validRegionalCaveLocation(cx, cz, distance))
{
data = REGIONAL;
}
else if (x2z2 <= 225)
{
data = (byte)this.validSpecialCaveLocation(cx, cz, distance);
}
}
this.caveDataArray[zIndex + x] = data;
}
}
}
}
// Returns a value indicating the type of cave that should be generated in a chunk
private int validCaveLocation(int cx, int cz)
{
int flag = NORMAL;
cx += 16;
cz += 16;
for (int z = -5; z <= 5; ++z)
{
int zIndex = (cz + z) * 33 + cx;
int z2 = z * z;
for (int x = -5; x <= 5; ++x)
{
int x2z2 = x * x + z2;
if (x2z2 <= 35)
{
int data = this.caveDataArray[zIndex + x];
if (data != 0)
{
if (data == COLOSSAL)
{
// Colossal cave systems
if (x2z2 == 0) return COLOSSAL;
return 0;
}
else if (data == STRONGHOLD)
{
// Used to exclude large caves/ravines from around strongholds
if (x2z2 == 0) return STRONGHOLD;
flag = NORMAL_ONLY;
}
else if (x2z2 <= 10)
{
// Special cave systems
if (data == CIRCULAR_RAVINE)
{
if (x2z2 == 0) return CIRCULAR_RAVINE;
if (x2z2 <= 5) return 0;
flag = NORMAL_ONLY;
}
else if (data == VERTICAL)
{
if (x2z2 == 0) return VERTICAL;
if (x2z2 <= 5) return 0;
flag = NORMAL_ONLY;
}
else if (data == MAZE)
{
if (x2z2 == 0) return MAZE;
if (x2z2 <= 5) return 0;
flag = NORMAL_ONLY;
}
else if (data == LARGE_CAVE_SYSTEM)
{
if (x2z2 == 0) return LARGE_CAVE_SYSTEM;
if (x2z2 <= 5) return 0;
flag = NORMAL_ONLY;
}
}
// Note that regional caves only set flag to REGIONAL_EXCLUSION when it is NORMAL so other caves
// can override it (NORMAL is large caves and ravines; NORMAL_ONLY is only normal caves, reduced
// in size, and no large ravines)
if (data == REGIONAL && x2z2 <= 15)
{
if (x2z2 == 0) return REGIONAL;
if (flag == NORMAL) flag = REGIONAL_EXCLUSION;
}
}
}
}
}
return flag;
}
// Colossal cave systems generate to a 64 chunk grid embedded within a larger 128 chunk grid in alternating
// quadrants with an overall frequency of one per 8192 chunks. Cave systems are excluded within 40 chunks
// of the origin; they also never overlap with strongholds or regional cave areas since they use the same
// grid but with quadrants swapped (!= vs ==) and/or different offsets.
public boolean validColossalCaveLocation(int chunkX, int chunkZ, int distance)
{
chunkX += this.caveOffsetX;
chunkZ += this.caveOffsetZ;
if ((chunkX & 64) == (chunkZ & 64)) return false;
this.colossalCaveRNG.setChunkSeed(chunkX >> 6, chunkZ >> 6);
return (chunkX & 63) == this.colossalCaveRNG.nextInt(32) && (chunkZ & 63) == this.colossalCaveRNG.nextInt(32) && distance >= COLOSSAL_CAVE_EXCLUSION_DISTANCE;
}
Other types of caves are the opposite; they count the number of normal caves around them and only generate if it is below a threshold (thus, these generate in regions which would otherwise have no caves in vanilla):
// Checks a 2 chunk radius for no more than 15 caves so large caves do not generate in denser cave systems
// Number of caves in center chunk is included in total (not checked again). Also checks a 3 chunk radius,
// returning 3 for <= 6 caves, 2 for 7-10 caves, and 1 for > 10 caves (approx 50-25-25 chance of each).
public int validLargeCaveLocation(int chunkX, int chunkZ, int caves)
{
int caves2 = caves;
for (int x = -3; x <= 3; ++x)
{
for (int z = -3; z <= 3; ++z)
{
int x2z2 = x * x + z * z;
if (x2z2 > 0 && x2z2 <= 10)
{
this.caveRNG.setChunkSeed(chunkX + x, chunkZ + z);
if (this.caveRNG.nextInt(15) == 0)
{
int c = this.caveRNG.nextInt(this.caveRNG.nextInt(this.caveRNG.nextInt(40) + 1) + 1);
if (c > 0)
{
if (x2z2 <= 5)
{
caves += c;
if (caves > 15) return 0;
}
caves2 += c;
}
}
}
}
}
return (caves2 > 6 ? (caves2 > 10 ? 1 : 2) : 3);
}
The Meaning of Life, the Universe, and Everything.
Join Date:
8/31/2015
Posts:
47
Member Details
I'd like to see what they have planned for underground structures like mineshafts, strongholds, dungeons, etc. I speculate there's going to be layers to it, as there's going to be a "crust" layer that is virtually what we already have, including the underground structures. Beneath that would be where the larger open caves would generate, and obviously below that, there's the deep dark. There's obviously going to be modifications or sub-layers so that these layers mesh together well where they meet.
I'd been working on a fun idea for strongholds for about 2 years now, and while it's always been for the sake of fun, there's always been that hope that it at least inspired some sort of change to the shabby stronghold algorithm we have now.
I would prefer this to not be the case. I'm still in the "Emerald Ore should be in every biome" club and think that biome based ores is the worst idea ever. If you want variation in ore generation that's fine as long as it's not biome based.
I'm fairly certain the archaeology bit was in like basically alpha stages. I believe that, in the end, the goal is to have a feature that concentrates on the lore. I had an idea for this a while back that I can't seem to find where I wrote it all down. But basically, there are ruins and pyramids and everything else all over minecraft already. Using archaeology, you could find hints or fragments of hints at what and who these civilizations and peoples were that made them. Everything will be fairly vague at first but then those community members who are lorehounds, like myself, can collaborate and debate and figure out details and theories relating to these ancient civilizations. I believe this is the direction they are wanting to go with it, which is what I would like to see, as well. Hopefully there will also be Artifacts and certain things you could hopefully super-rarely find and put on armorstands or item frames to proudly display in your home I for one am very, very excited to see this and if done correctly, could be the single most exciting addition in 1.17. And even though I do agree that the Brushing animation needs work to bring it in line with the game, I am fairly certain the entire feature is very early in dev. These things will be refined and QA'd over and over again.
I would prefer this to not be the case. I'm still in the "Emerald Ore should be in every biome" club and think that biome based ores is the worst idea ever. If you want variation in ore generation that's fine as long as it's not biome based.
Ore variation per biome is actually an interesting concept, as it gives some reasons to some biomes. And, yes, I know the next thing to come is "that's a bad thing to prop a biome up; make it better on it's own", and I'd actually agree with that in principle, but then what does make a biome something to be set apart from others? Besides aesthetics, resources (and mobs) are about the only things you can do to set them apart, no? The problem in the case of emeralds is it's entirely limited to one biome (rather than being in many, with rarity varying), but it's also mostly useless outside villager trades, which is probably a better way to get them anyway.
The other issue is, ever since 1.7, climate zones have made biome variety across shorter distances lower, so something being restricted to a biome you may not find for a while is a big mood kill. I'm against the climate zones as they are (idea itself is nice, but they are too strict as-is). When emeralds came, though, and I want to say this was 1.3 (?), terrain generation didn't have that, though i guess mountains themselves are still probably (?) almost as common as before, at least outside the savannah/desert warm end of the climate zone.
So I guess I kind of agree with you in a way, but in another, I realize biomes should have some things that set them apart.
What's so bad about illusioners or strays? I actually really like the illusioner concept and wish it was implemented into the actual game.
It's not really new, I mean. Better just add illusioners.
And we have enough kinds of cows with brown and red mooshrooms.
So while a non-luminescent glow squid is boring, at least it adds variety to the seas and shows that passive mobs can also have glow texture parts like spiders and endermen.
Also as to caves: again, I'm really quite scared of caves and I'm glad for them to be small, disposed apart, and end sooner, but I get that other people want them big and chonky, it's work to avoid big caves but not impossible.
Kaiju's picture worries me a bit though if that's legit 1.17 generation. Villages barely improved with 1.14, I don't want them to go back down the rabbit hole of caveins and floating towers again.
Kaiju's picture worries me a bit though if that's legit 1.17 generation. Villages barely improved with 1.14, I don't want them to go back down the rabbit hole of caveins and floating towers again.
They can easily prevent them from reaching the surface, either by having them generate deep down (instead of at a randomized height like normal caves, which start between layers 0-126) and/or preventing them from going to high, much as I do for my "giant cave regions", which constrain the altitude of individual caves to y=45 or less (the ceiling can go higher) with the result that there are very few surface indications despite having a volume of more than 1.25 million blocks across a 300x300 block area; likewise, the largest variants of caves always begin on layers 15-40, with larger caves shifted down and their width-height ratio decreased as their width increases (the widest possible cave has a radius of 42.5 blocks but a height radius of only 25.5, which means that at the maximum altitude of y=34 for a cave of this width the ceiling reaches y=59/60), and the widest caves have a limited vertical variance:
The green areas are exposed at sea level (air on layer 62), but not necessarily above the surface, which is usually higher, so this overestimates the number of surface openings (for example, the large ravine near the lower-right is entirely below the surface despite being shown as reaching sea level along most of its length), the majority of which are due to "normal" caves, with some smaller large caves reaching the surface, otherwise, only smaller branches do; in particular, only a single cave within the giant cave region, which is made up of 94 large caves, reaches the surface, excluding the much smaller "vertical caves" which were added to intentionally do so:
This is the code that I use to generate the largest sizes of caves, which are very similar to normal caves (generateLargeCave2) except they are wider and longer:
// Generates the largest sizes of caves. Type 0 has a large average size and small size range while type
// 1+ has the largest average size (type is 2 or more for multiple cave clusters)
private int generateLargeCave(int chunkX, int chunkZ, int type)
{
int length;
float width;
if (type == 0)
{
// Length ranges from 224-336 and width from 10 to 36
length = 224 + this.largeCaveRNG.nextInt(113);
width = this.largeCaveRNG.nextFloat() * 8.0F + this.largeCaveRNG.nextFloat() * 6.0F + 10.0F;
if (this.largeCaveRNG.nextBoolean()) width *= ((float)length / 224.0F);
}
else
{
// Length ranges up to 336, averages about 192
length = Math.min(112 + this.largeCaveRNG.nextInt(this.largeCaveRNG.nextInt(336) + 1), 336);
// Width is varied over 16x16 chunk areas, initial width averages 3 in both cases
// (multiplier / 8 + min width).
this.caveRNG.setChunkSeed((chunkX + this.caveOffsetX + 12) >> 4, (chunkZ + this.caveOffsetZ + 12) >> 4);
width = this.largeCaveRNG.nextFloat() * this.largeCaveRNG.nextFloat() * this.largeCaveRNG.nextFloat();
if (this.caveRNG.nextBoolean())
{
width = width * 8.0F + 2.0F;
}
else
{
width = width * 2.66667F + 2.66667F;
}
// Final width ranges from 2 to 40; scaled up with length (only if multiplier is greater than 1)
// or multiplied by 1-4. Regardless of length 85.7% of caves have a multiplier that is greater
// than 1.
if (this.largeCaveRNG.nextBoolean())
{
float multiplier = (this.largeCaveRNG.nextFloat() * (float)length / 96.0F + (float)(672 - length) / 672.0F);
if (multiplier > 1.0F) width *= multiplier;
}
else
{
float multiplier = this.largeCaveRNG.nextFloat();
width *= (multiplier * multiplier * 3.0F + 1.0F);
}
}
double x = (double)(chunkX << 4 | 8);
double y = (double)(this.largeCaveRNG.nextInt(26) + 15);
double z = (double)(chunkZ << 4 | 8);
if (y < 20.5D)
{
// Increases minimum depth of larger caves (from 15 to 21 at the maximum width of 40)
y += (double)(width * 0.25F);
}
else if (y > 34.5D)
{
// Decreases average depth of larger caves (from 40 to 34 at the maximum width of 40)
y -= (double)(width * 0.25F);
}
int branchPoint = this.largeCaveRNG.nextInt(length >> 2) + (length >> 1);
float direction = this.largeCaveRNG.nextFloat() * 6.283185F;
// Curviness varies from 0.333 to 0.6 depending on length (normal is 0.4)
float curviness = (float)length / 840.0F + 0.2F;
if (type == 0)
{
if (this.largeCaveRNG.nextInt(6) == 0)
{
// Generates the largest possible size of cave; generated as three main caves at roughly 120
// degree angles offset outwards from starting point. Also adjusts width upwards further,
// but maximum is reduced to 32 (68 blocks). Equivalent length is up to 504 blocks.
int startPos = length >> 2;
width = width * 0.75F + 5.0F;
float width2 = width * 0.5F;
this.generateLargeCave2(this.largeCaveRNG.nextLong(), x + (double)(cosine(direction) * width2), y, z + (double)(sine(direction) * width2), width, direction, (this.largeCaveRNG.nextFloat() - 0.5F) * 0.25F, startPos, length, branchPoint, curviness, true, true);
float direction2 = direction + this.largeCaveRNG.nextFloat() + 1.594395F;
this.generateLargeCave2(this.largeCaveRNG.nextLong(), x + (double)(cosine(direction2) * width2), y, z + (double)(sine(direction2) * width2), width, direction2, (this.largeCaveRNG.nextFloat() - 0.5F) * 0.25F, startPos, length, branchPoint, curviness, true, true);
direction2 = direction + this.largeCaveRNG.nextFloat() + 3.68879F;
this.generateLargeCave2(this.largeCaveRNG.nextLong(), x + (double)(cosine(direction2) * width2), y, z + (double)(sine(direction2) * width2), width, direction2, (this.largeCaveRNG.nextFloat() - 0.5F) * 0.25F, startPos, length, branchPoint, curviness, true, true);
}
else
{
// Generates three caves from the starting point; a large main cave and two smaller branches
// at 90 degree angles, each of which branch again; these caves are equivalent to a single
// normal cave that is up to 462 blocks long.
int startPos = length - branchPoint;
this.generateLargeCave2(this.largeCaveRNG.nextLong(), x, y, z, width, direction, (this.largeCaveRNG.nextFloat() - 0.5F) * 0.25F, startPos, length, 0, curviness, false, true);
length += startPos;
startPos = length >> 1;
branchPoint = ((startPos * 3) >> 1) + this.largeCaveRNG.nextInt(startPos >> 2);
// Primary branches are 50-75% of the width of the main cave and secondary branches are
// 50-100% of the width of the primary branches (both relative to the width at the branch
// point, not the maximum width).
this.generateLargeCave2(this.largeCaveRNG.nextLong(), x, y, z, (this.largeCaveRNG.nextFloat() * width + width * 2.0F) * 0.25F, direction + 1.570796F, (this.largeCaveRNG.nextFloat() - 0.5F) * 0.25F, startPos, length, branchPoint, curviness, true, true);
this.generateLargeCave2(this.largeCaveRNG.nextLong(), x, y, z, (this.largeCaveRNG.nextFloat() * width + width * 2.0F) * 0.25F, direction - 1.570796F, (this.largeCaveRNG.nextFloat() - 0.5F) * 0.25F, startPos, length, branchPoint, curviness, true, true);
}
}
else
{
// Smaller variant generated like normal caves; for length > 200 startPos is set to length / 2
// and two caves are generated in opposite directions from the start (at a length of 336 the
// main cave extends back 84 while branches begin 84-168 in the other direction), so caves
// don't go outside the gen-range.
int startPos = (length - 168) >> 1;
if (startPos > 16)
{
// Shifts starting point backwards
this.generateLargeCave2(this.largeCaveRNG.nextLong(), x, y, z, width, direction - 3.141593F, (this.largeCaveRNG.nextFloat() - 0.5F) * 0.25F, length - startPos, length, -999, curviness, false, true);
}
else
{
startPos = 0;
}
this.generateLargeCave2(this.largeCaveRNG.nextLong(), x, y, z, width, direction, (this.largeCaveRNG.nextFloat() - 0.5F) * 0.25F, startPos, length, branchPoint, curviness, false, true);
}
// If type is 1 returns y + (direction * 1024) * 256, else returns y
int ret = (int)(y + 0.5D);
if (type == 1) ret += (int)(direction * 1024.0F) << 8;
return ret;
}
// Used to generate larger than normal caves; length and branchpoint are set externally. giantCaveBranch
// increases the width of secondary branches, used by the largest variant of cave; vertVar determines if
// there is a 1/6 chance of increased vertical variation, disabled for type 2 caves in giant cave
// regions; only affects main cave, not branches.
private void generateLargeCave2(long seed, double x, double y, double z, float width, float directionXZ, float directionY, int pos, int length, int branchPoint, float curviness, boolean giantCaveBranch, boolean vertVar)
{
this.caveRNG.setSeed(seed);
float varXZ = 0.0F;
float varY = 0.0F;
int startPos = pos;
// Minimum radius varies from 1.75 to 2.5 for a width of 0-40
float minRadius = 1.75F + width / 53.3333F;
// Only caves with a width of less than 20 can have increased vertical variation
for (float vertVarMultiplier = (vertVar && this.caveRNG.nextInt(6) == 0 && width < 20.0F ? 0.92F : 0.7F); pos < length; ++pos)
{
if (pos == branchPoint)
{
// Unlike normal caves the width of branches varies from 33% to 66% of the width of the
// parent cave (50 to 100% when giantCaveBranch is true).
seed = this.caveRNG.nextLong();
if (giantCaveBranch) width *= 1.5F;
varY = (this.caveRNG.nextFloat() * width + width) / 3.0F;
directionY /= 3.0F;
this.generateLargeCave2(this.caveRNG.nextLong(), x, y, z, (this.caveRNG.nextFloat() * width + width) / 3.0F, directionXZ - 1.570796F, directionY, pos, length, 0, curviness, false, true);
this.generateLargeCave2(seed, x, y, z, varY, directionXZ + 1.570796F, directionY, pos, length, 0, curviness, false, true);
return;
}
double radiusW = minRadius + (double)(sine((float)pos * 3.141593F / (float)length) * width);
double distanceX = x - this.chunkCenterX;
double distanceZ = z - this.chunkCenterZ;
double lengthAndRadius = (double)(length - pos + MARGIN) + radiusW;
if (distanceX * distanceX + distanceZ * distanceZ > lengthAndRadius * lengthAndRadius) return;
float dy = cosine(directionY);
x += (double)(cosine(directionXZ) * dy);
y += (double)sine(directionY);
z += (double)(sine(directionXZ) * dy);
directionY *= vertVarMultiplier;
// Constrains type 2 caves to y=4-45
if (!vertVar)
{
if (y > 45.0D)
{
varY = -0.25F;
}
else if (y < 4.0D)
{
varY = 0.25F;
}
}
directionY += varY * 0.2F;
directionXZ += varXZ * curviness;
varY *= 0.9F;
varXZ *= 0.75F;
varY += this.caveRNG.nextFloatSq();
varXZ += this.caveRNG.nextFloatSq();
double radiusW9 = radiusW + 9.0D;
// Skips 50-75% of segments depending on width
if (x >= this.chunkCenterX - radiusW9 && x <= this.chunkCenterX + radiusW9 && z >= this.chunkCenterZ - radiusW9 && z <= this.chunkCenterZ + radiusW9 && ((pos & (radiusW >= 4.0D ? 3 : 1)) == 0 || pos == startPos || pos == length - 1))
{
// Adjusts width-height ratio so larger caves are not as relatively tall; at the maximum radius of
// 40 (radiusW = 42.5) ratio is 0.6, giving a maximum height radius of 25.5 (42.5 * 0.6).
double radiusH = radiusW * (1.0D - radiusW / 106.25D);
// Adjusts amplitude of noise as width of cave varies; reaches a minimum of 0.01 at the
// maximum width of 40 (radiusW = 42.5)
double noiseMultiplier = 0.275D / Math.max(radiusW - 1.0D, 0.916666D) + 0.0033735D;
this.generateCaveSegment(x, y, z, radiusW, radiusH, noiseMultiplier, 1);
}
}
}
That said, I've found things like this, which could swallow an entire village (note that in newer versions they generate on the surface, regardless of altitude; in 1.6.4/TMCW they generate no lower than sea level, creating pillars below; the latter is preferable IMO since you can fill in holes around the buildings, leaving them on a flat surface at sea level, while now you'd need to deconstruct and rebuild the buildings if you want them at the "real" surface/sea level):
This is another cave that I found, which goes all the way up to y=128 in a Superflat world:
This is the rare exception though; even the largest caves are usually entirely underground; this is the largest single cave that I know of, with a volume of over 730,000 blocks yet it barely breaches the surface, y=64 in the "Overworld" Superflat preset (it is entirely underground in a non-Superflat world since it is under an ocean, otherwise, the ground only needs to be a few blocks deeper and even e.g. Plains will likely cover it):
Locations of largest caves by volume:
1: 7240 26 1032 (length: 490, width: 73, volume: 731429)
To put the size of this cave into perspective the area shown is 23x23 chunks or 368x368 blocks and the cave istelf is 256 blocks north-south (the white/gray checkerbord represents the maxmum extent of a cave from its origin chunk; ravines can get as long as this allows without clipping):
Of course, it is impossible to tell what Mojang will do but I'm sure they will consider this since many players do dislike "swiss cheese" at the surface; they could even prevent larger caves from generating near villages, much as I exclude them from near strongholds (though they generate intact anyway; it is a myth that caves cut apart strongholds, rather, the walls of strongholds do not replace air blocks, much in the opposite manner as mineshafts replacing air in the floor with wood planks), or just prevent them from breaking the surface near a village (you just need the surface height map, which is availabe from chunk generation, and prevent caves from carving out blocks within a few layers, also, caves should replace sand/gravel above them with sandstone/cobblestone or some other support block, as they did for a short time in 1.8, which was later removed so they will now cave in when updated).
Ore variation per biome is actually an interesting concept, as it gives some reasons to some biomes. And, yes, I know the next thing to come is "that's a bad thing to prop a biome up; make it better on it's own", and I'd actually agree with that in principle, but then what does make a biome something to be set apart from others? Besides aesthetics, resources (and mobs) are about the only things you can do to set them apart, no? The problem in the case of emeralds is it's entirely limited to one biome (rather than being in many, with rarity varying), but it's also mostly useless outside villager trades, which is probably a better way to get them anyway.
The other issue is, ever since 1.7, climate zones have made biome variety across shorter distances lower, so something being restricted to a biome you may not find for a while is a big mood kill. I'm against the climate zones as they are (idea itself is nice, but they are too strict as-is). When emeralds came, though, and I want to say this was 1.3 (?), terrain generation didn't have that, though i guess mountains themselves are still probably (?) almost as common as before, at least outside the savannah/desert warm end of the climate zone.
So I guess I kind of agree with you in a way, but in another, I realize biomes should have some things that set them apart.
The thing is that the cave biomes already have things that make them unique. Each of the new caves biomes all have unique items, blocks and (sometimes) mobs that can only be found in those biomes. Ores should be separate from biomes. As interesting as iron level gold in mesas and emeralds being found in mountains is; this update is pretty much going to remove these features due to cave biomes. Something that could be done to make ore generation more interesting is a separate ore distribution seed of sorts. Sometimes you might come across an area where there is far more iron than normal but with less coal. You might find a place where gold or even diamonds are found at higher elevations. This could make ore generation more interesting and possibly make caving more profitable/efficient and make boring strip mining less effective. It would do this while being separate from biomes and thus not punishing players for preferring some caves over others.
As for emerald ore I think that it's fine to make it a bit more common as emerald ore can provide a good boost to early game village building. Early bases often don't have the large farms that are necessary for good emerald output. Making emerald ore more available will help players level up low level villagers that prefer to sell more than buy in their beginning levels. It won't beat the amount of emeralds that automatic sugar cane or wool farms can produce but I could see a long mining trip able to provide a player with 20 emeralds (without fortune).
I don't agree with the first thing; that's pretty much variation, which you're saying you're against, only it's random and tied to nothing which is even worse. If it's going to vary, tie it to something identifiable. Hidden mechanics are bad mechanics in my opinion (it's understandable to have certain things a bit less clear, but not the bigger things).
If you want iron, you'd have to hope you don't go to a place low on it. As someone who recently started a new world and is having issues with this, I'm about to resort to branch mining with stone tools or looking up iron farms or something (and I almost NEVER make automated farms) because caves have been awful since 1.7. If such a mechanic existed, I'd be more frustrated right now.
If it's going to be tied to something at all, it should be a clear, identifiable thing, not random. Like with flowers, they have a random (but consistent) pattern, but if you don't know it, you still know "I want tulips so I better seek a flower forest". That's acceptable (well, somewhat; the climate zones being so strict and rarity of some biomes can make it a pain to find one early on). If it was pure random and not tied to a biome, I would find that poorer design.
If you're just saying the new biomes are going to add variety so emeralds shouldn't be restricted entirely to mountain biomes anymore, then yeah, I can agree with that.
Oh, I'm not necessarily saying they should be, per se. I'm just also acknowledging that resource variation and mob variation is about all the game can do to differentiate biomes (besides aesthetics) and that I'm also not totally against it, if done right.
As it is now, I think the resources that ARE limited are done so in a way that's not really detrimental. At the very least, in the case of emeralds, the biome they are restricted to isn't all that rare AND the ore in question isn't ONLY obtainable from natural generation (so it's really not only found just there) AND it has a more currency role among villagers rather than a primary role as most other ores have. In that way, it's balanced, which is what matters way more than the fact that it's only naturally found in one biome. Are you also against nether quartz and the new nether ores being restricted? They may be in another dimension but the concept is the same (if not, more so, as they take longer to get AND have more of a primary role than emeralds).
Most exclusive resources are typically not too important but sometimes have alternate ways to obtain them (such as bamboo). Lush caves will be getting plenty of new foliage blocks, items, and the new axolotl. Dripstone caves have stalagmites and stalactites. The Deep dark has skulk growths and skulkers. I personally think that is fine.
I am well aware that emerald ore is a secondary source of emeralds but so are illagers and illager patrols can now be found in every biome except ocean biomes (and other dimensions). Emerald ore being more common would also up the ore diversity alongside the new copper ore. However if Mojang insists on the ore being exclusive then I think it should generate in the abandoned mine shafts (which hopefully get an overhaul themselves).
I find the Nether ores a nice reason to travel to the Nether on a regular basis. The Nether ores also follow a global distribution that is technically the same in every biome.
However there is one other block I hope has a good future in 1.17: Monster Egg Blocks. Silverfish are a neat mob that can threaten any player that cannot one-shot them. Their blocks instantly break and can be a startling surprise at times. The problem is that they also only generate in the extreme hills biome. Now I think they should be in every biome but if they were going to be biome exclusive still I would hope they would go to the dripstone cave which would add on to the caves' crumbly vibes.
I don't agree with the first thing; that's pretty much variation, which you're saying you're against, only it's random and tied to nothing which is even worse. If it's going to vary, tie it to something identifiable. Hidden mechanics are bad mechanics in my opinion (it's understandable to have certain things a bit less clear, but not the bigger things).
I, on the contrary, would like more random generation.
After playing hundreds of Minecraft games, you find that the game has too much predictable patterns and behavior... For example, you need to get diamonds, and you always go to the level Y=10 or Y=11 and start branch mining there... Or you find a desert temple, and the TNT is always placed the same way and you always deactivate the trap the same way. And so on.
There are too many things predictable in Minecraft, which is a sandbox game with procedural generation that could use seed numbers much better to make more random and less predictable worlds.
I'd like this upcoming release to improve unpredictability of what you find underground... It seems we'll get variations in caves, but I'd like also variations in mineshafts and dungeons, variations in ore rarity and placement (depending on the underground biome would be logical, since it's not the same a biome with large caverns where many ores are unveiled than a biome with narrow caves where you need to break stone to reveal ores), etc.
This video makes me worry about mine shafts and strongholds. These things are seriously outdated and will need changes made to them to have them work with the new cave systems. If a mine shaft generates in a vast empty cave then it will simply make an awkward, floating wood structure. A stronghold will be reduced to floating doors with a giant floating portal room. Somethings needs to happen to these structures. At least Nether forts got a passive buff in the Nether Update: If a fort generates in a warped forest, soulsand valley, or basalt delta it will spawn much more blazes and wither skeletons which make them far more dangerous. These BETA 1.8 structures will be torn to shreds by the new cave mechanics unless they generate in solid stone. Hopefully this issue will become big enough that it could not be ignored.
However I am excited that crystals and copper will be getting other uses besides what we were initially shown.
I agree on regards to existing structures. Heck, they get torn to shreds by current generation so I can only imagine what bigger and more varied caves will do to them.
Rollback Post to RevisionRollBack
Want some advice on how to thrive in the Suggestions section? Check this handy list of guidelines and tips for posting your ideas and responding to the ideas of others!
I assume that the new caves will displace some of the old caves, much as I've done:
These are static images for each frame, in the same order:
Most of the caves shown are "vanilla" type caves (with more variation), but they don't generate wherever "special" caves are present, especially in the upper-right and lower-left, where a giant cave region and network cave region are, which both disable normal cave generation within an 18x18 chunk area (excluding "sea level" caves, which are not shown). Mineshafts are also disabled in regions of high cave density; their base chance is about the same as vanilla 1.6.4 (1/100 chance per chunk, 1/98 in TMCW, 1/250 in 1.7+) but about 40% fail to generate (unlike vanilla they are also spaced apart, like other vanilla structures are, so they do not generate right next to each other, with overlap being rare). Strongholds reduce the density of caves nearby (no large caves or ravines allowed, which can still get large enough to intersect them, but the walls of strongholds overwrite air so they don't get disrupted).
The exact way this works is by populating an array with data corresponding to whether a certain type of cave can generate (one method is shown here) and for each chunk checking a radius around it to see if any generate, which is how a multi-chunk radius is excluded around each type (size depending on the size of the special cave; regional caves generate within 12x12 chunk areas):
Other types of caves are the opposite; they count the number of normal caves around them and only generate if it is below a threshold (thus, these generate in regions which would otherwise have no caves in vanilla):
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?
Well that seems disappointing. Hopefully they are common and large enough to make a sizeable difference.
Man, really looking forward to playing with the new generation! Source.
That's a pretty funny image.
Praise be to Spode.
I'd like to see what they have planned for underground structures like mineshafts, strongholds, dungeons, etc. I speculate there's going to be layers to it, as there's going to be a "crust" layer that is virtually what we already have, including the underground structures. Beneath that would be where the larger open caves would generate, and obviously below that, there's the deep dark. There's obviously going to be modifications or sub-layers so that these layers mesh together well where they meet.
I'd been working on a fun idea for strongholds for about 2 years now, and while it's always been for the sake of fun, there's always been that hope that it at least inspired some sort of change to the shabby stronghold algorithm we have now.
I'd like some variation in ore rarity and placement depending on the underground biomes, but I guess this is asking too much.
I would prefer this to not be the case. I'm still in the "Emerald Ore should be in every biome" club and think that biome based ores is the worst idea ever. If you want variation in ore generation that's fine as long as it's not biome based.
Praise be to Spode.
I'm fairly certain the archaeology bit was in like basically alpha stages. I believe that, in the end, the goal is to have a feature that concentrates on the lore. I had an idea for this a while back that I can't seem to find where I wrote it all down. But basically, there are ruins and pyramids and everything else all over minecraft already. Using archaeology, you could find hints or fragments of hints at what and who these civilizations and peoples were that made them. Everything will be fairly vague at first but then those community members who are lorehounds, like myself, can collaborate and debate and figure out details and theories relating to these ancient civilizations. I believe this is the direction they are wanting to go with it, which is what I would like to see, as well. Hopefully there will also be Artifacts and certain things you could hopefully super-rarely find and put on armorstands or item frames to proudly display in your home
I for one am very, very excited to see this and if done correctly, could be the single most exciting addition in 1.17. And even though I do agree that the Brushing animation needs work to bring it in line with the game, I am fairly certain the entire feature is very early in dev. These things will be refined and QA'd over and over again.
Ore variation per biome is actually an interesting concept, as it gives some reasons to some biomes. And, yes, I know the next thing to come is "that's a bad thing to prop a biome up; make it better on it's own", and I'd actually agree with that in principle, but then what does make a biome something to be set apart from others? Besides aesthetics, resources (and mobs) are about the only things you can do to set them apart, no? The problem in the case of emeralds is it's entirely limited to one biome (rather than being in many, with rarity varying), but it's also mostly useless outside villager trades, which is probably a better way to get them anyway.
The other issue is, ever since 1.7, climate zones have made biome variety across shorter distances lower, so something being restricted to a biome you may not find for a while is a big mood kill. I'm against the climate zones as they are (idea itself is nice, but they are too strict as-is). When emeralds came, though, and I want to say this was 1.3 (?), terrain generation didn't have that, though i guess mountains themselves are still probably (?) almost as common as before, at least outside the savannah/desert warm end of the climate zone.
So I guess I kind of agree with you in a way, but in another, I realize biomes should have some things that set them apart.
It's not really new, I mean. Better just add illusioners.
And we have enough kinds of cows with brown and red mooshrooms.
So while a non-luminescent glow squid is boring, at least it adds variety to the seas and shows that passive mobs can also have glow texture parts like spiders and endermen.
Also as to caves: again, I'm really quite scared of caves and I'm glad for them to be small, disposed apart, and end sooner, but I get that other people want them big and chonky, it's work to avoid big caves but not impossible.
Kaiju's picture worries me a bit though if that's legit 1.17 generation. Villages barely improved with 1.14, I don't want them to go back down the rabbit hole of caveins and floating towers again.
They can easily prevent them from reaching the surface, either by having them generate deep down (instead of at a randomized height like normal caves, which start between layers 0-126) and/or preventing them from going to high, much as I do for my "giant cave regions", which constrain the altitude of individual caves to y=45 or less (the ceiling can go higher) with the result that there are very few surface indications despite having a volume of more than 1.25 million blocks across a 300x300 block area; likewise, the largest variants of caves always begin on layers 15-40, with larger caves shifted down and their width-height ratio decreased as their width increases (the widest possible cave has a radius of 42.5 blocks but a height radius of only 25.5, which means that at the maximum altitude of y=34 for a cave of this width the ceiling reaches y=59/60), and the widest caves have a limited vertical variance:
This is the code that I use to generate the largest sizes of caves, which are very similar to normal caves (generateLargeCave2) except they are wider and longer:
That said, I've found things like this, which could swallow an entire village (note that in newer versions they generate on the surface, regardless of altitude; in 1.6.4/TMCW they generate no lower than sea level, creating pillars below; the latter is preferable IMO since you can fill in holes around the buildings, leaving them on a flat surface at sea level, while now you'd need to deconstruct and rebuild the buildings if you want them at the "real" surface/sea level):
This is another cave that I found, which goes all the way up to y=128 in a Superflat world:
This is the rare exception though; even the largest caves are usually entirely underground; this is the largest single cave that I know of, with a volume of over 730,000 blocks yet it barely breaches the surface, y=64 in the "Overworld" Superflat preset (it is entirely underground in a non-Superflat world since it is under an ocean, otherwise, the ground only needs to be a few blocks deeper and even e.g. Plains will likely cover it):
Of course, it is impossible to tell what Mojang will do but I'm sure they will consider this since many players do dislike "swiss cheese" at the surface; they could even prevent larger caves from generating near villages, much as I exclude them from near strongholds (though they generate intact anyway; it is a myth that caves cut apart strongholds, rather, the walls of strongholds do not replace air blocks, much in the opposite manner as mineshafts replacing air in the floor with wood planks), or just prevent them from breaking the surface near a village (you just need the surface height map, which is availabe from chunk generation, and prevent caves from carving out blocks within a few layers, also, caves should replace sand/gravel above them with sandstone/cobblestone or some other support block, as they did for a short time in 1.8, which was later removed so they will now cave in when updated).
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?
The thing is that the cave biomes already have things that make them unique. Each of the new caves biomes all have unique items, blocks and (sometimes) mobs that can only be found in those biomes. Ores should be separate from biomes. As interesting as iron level gold in mesas and emeralds being found in mountains is; this update is pretty much going to remove these features due to cave biomes. Something that could be done to make ore generation more interesting is a separate ore distribution seed of sorts. Sometimes you might come across an area where there is far more iron than normal but with less coal. You might find a place where gold or even diamonds are found at higher elevations. This could make ore generation more interesting and possibly make caving more profitable/efficient and make boring strip mining less effective. It would do this while being separate from biomes and thus not punishing players for preferring some caves over others.
As for emerald ore I think that it's fine to make it a bit more common as emerald ore can provide a good boost to early game village building. Early bases often don't have the large farms that are necessary for good emerald output. Making emerald ore more available will help players level up low level villagers that prefer to sell more than buy in their beginning levels. It won't beat the amount of emeralds that automatic sugar cane or wool farms can produce but I could see a long mining trip able to provide a player with 20 emeralds (without fortune).
Praise be to Spode.
I don't agree with the first thing; that's pretty much variation, which you're saying you're against, only it's random and tied to nothing which is even worse. If it's going to vary, tie it to something identifiable. Hidden mechanics are bad mechanics in my opinion (it's understandable to have certain things a bit less clear, but not the bigger things).
If you want iron, you'd have to hope you don't go to a place low on it. As someone who recently started a new world and is having issues with this, I'm about to resort to branch mining with stone tools or looking up iron farms or something (and I almost NEVER make automated farms) because caves have been awful since 1.7. If such a mechanic existed, I'd be more frustrated right now.
If it's going to be tied to something at all, it should be a clear, identifiable thing, not random. Like with flowers, they have a random (but consistent) pattern, but if you don't know it, you still know "I want tulips so I better seek a flower forest". That's acceptable (well, somewhat; the climate zones being so strict and rarity of some biomes can make it a pain to find one early on). If it was pure random and not tied to a biome, I would find that poorer design.
If you're just saying the new biomes are going to add variety so emeralds shouldn't be restricted entirely to mountain biomes anymore, then yeah, I can agree with that.
I see your point on the randomized ore thing, but I still don't think ores should be biome based.
Praise be to Spode.
Oh, I'm not necessarily saying they should be, per se. I'm just also acknowledging that resource variation and mob variation is about all the game can do to differentiate biomes (besides aesthetics) and that I'm also not totally against it, if done right.
As it is now, I think the resources that ARE limited are done so in a way that's not really detrimental. At the very least, in the case of emeralds, the biome they are restricted to isn't all that rare AND the ore in question isn't ONLY obtainable from natural generation (so it's really not only found just there) AND it has a more currency role among villagers rather than a primary role as most other ores have. In that way, it's balanced, which is what matters way more than the fact that it's only naturally found in one biome. Are you also against nether quartz and the new nether ores being restricted? They may be in another dimension but the concept is the same (if not, more so, as they take longer to get AND have more of a primary role than emeralds).
Most exclusive resources are typically not too important but sometimes have alternate ways to obtain them (such as bamboo). Lush caves will be getting plenty of new foliage blocks, items, and the new axolotl. Dripstone caves have stalagmites and stalactites. The Deep dark has skulk growths and skulkers. I personally think that is fine.
I am well aware that emerald ore is a secondary source of emeralds but so are illagers and illager patrols can now be found in every biome except ocean biomes (and other dimensions). Emerald ore being more common would also up the ore diversity alongside the new copper ore. However if Mojang insists on the ore being exclusive then I think it should generate in the abandoned mine shafts (which hopefully get an overhaul themselves).
I find the Nether ores a nice reason to travel to the Nether on a regular basis. The Nether ores also follow a global distribution that is technically the same in every biome.
However there is one other block I hope has a good future in 1.17: Monster Egg Blocks. Silverfish are a neat mob that can threaten any player that cannot one-shot them. Their blocks instantly break and can be a startling surprise at times. The problem is that they also only generate in the extreme hills biome. Now I think they should be in every biome but if they were going to be biome exclusive still I would hope they would go to the dripstone cave which would add on to the caves' crumbly vibes.
Praise be to Spode.
I, on the contrary, would like more random generation.
After playing hundreds of Minecraft games, you find that the game has too much predictable patterns and behavior... For example, you need to get diamonds, and you always go to the level Y=10 or Y=11 and start branch mining there... Or you find a desert temple, and the TNT is always placed the same way and you always deactivate the trap the same way. And so on.
There are too many things predictable in Minecraft, which is a sandbox game with procedural generation that could use seed numbers much better to make more random and less predictable worlds.
I'd like this upcoming release to improve unpredictability of what you find underground... It seems we'll get variations in caves, but I'd like also variations in mineshafts and dungeons, variations in ore rarity and placement (depending on the underground biome would be logical, since it's not the same a biome with large caverns where many ores are unveiled than a biome with narrow caves where you need to break stone to reveal ores), etc.
This video makes me worry about mine shafts and strongholds. These things are seriously outdated and will need changes made to them to have them work with the new cave systems. If a mine shaft generates in a vast empty cave then it will simply make an awkward, floating wood structure. A stronghold will be reduced to floating doors with a giant floating portal room. Somethings needs to happen to these structures. At least Nether forts got a passive buff in the Nether Update: If a fort generates in a warped forest, soulsand valley, or basalt delta it will spawn much more blazes and wither skeletons which make them far more dangerous. These BETA 1.8 structures will be torn to shreds by the new cave mechanics unless they generate in solid stone. Hopefully this issue will become big enough that it could not be ignored.
However I am excited that crystals and copper will be getting other uses besides what we were initially shown.
Praise be to Spode.
I agree on regards to existing structures. Heck, they get torn to shreds by current generation so I can only imagine what bigger and more varied caves will do to them.
Want some advice on how to thrive in the Suggestions section? Check this handy list of guidelines and tips for posting your ideas and responding to the ideas of others!
http://www.minecraftforum.net/forums/minecraft-discussion/suggestions/2775557-guidelines-for-the-suggestions-forum