I have the feeling that in 1.7.2 abandoned mines are more rare compared to 1.6.4. I've only played one world in 1.7 so far, but I spend much time underground in this one (explored about four large cave systems and went into many smaller ones). I haven't found an abandoned mine yet and that feels really strange to me, because in my last 1.6 world they were everywhere. I rarely explored a medium or large cave system and didn't stumble into at least one. The fact that I haven't seen one in 1.7 led me to believe that Mojang made them more rare. Did any of you get the feeling they changed something about the mine shafts?
I'm pretty sure they were made rarer as well; the map I posted above (about 900x900 blocks) has just one mineshaft complex, and not a really big one either, in the entire area; normally you'll see several, and often multiple complexes overlapping. I'm not as familiar with the code that generates mineshafts but I could probably find where it generates them; they probably have a chance of generating in any one chunk similar to caves and ravines, hence you can often find two or more connected together (the big room with dirt is the starting point and there is only one in a single complex).
For comparison, this is from a world generated in 1.6 and covers a smaller area (it isn't like this everywhere but there are at least 5-6 in any similar area over the entire 2000x4000 block world):
Note - this is pure vanilla generation from a world I played before I modified cave/ravine generation, not that I think it affects mineshafts; the seed is -123775873255737467 for both of the maps I posted (modifying 1.7.2 to generate caves like 1.6 makes the exact same caves generate, so the random number generator still works the same way; large biomes and Amplfiied also have the same generation, less anything at the surface/in mountains, for the same seed, not surprising since the cave generator only works off the world seed and chunk coordinates).
Given all of this, it is a bit odd that ravine generation wasn't changed/reduced; they still have the same 1 in 50 chance of generating in a chunk and don't appear any different in Unmined.
I'm also wondering if Mojang ever gave any reasons for reducing caves and mineshafts; I don't think it was ever mentioned in the change logs. I actually think it is good that mineshafts were reduced, but not to the extent they appear to have been; they could have just made it so that they can't spawn on top of each other, and for caves, just reduce the generation frequency but not the size (my mod actually does this, except makes them bigger, so I get more caves overall but they aren't all in a big mess and making it easier to tell when you're going into a new system).
Another thing I'm noticing, is they seemed to tone down the amount of resources. I've been playing my world for 9+ hours, and have less than a stack of iron in the reserves, and still haven't found diamonds.
Which is perfectly fine with me. What's the point of playing if you can accomplish everything within a single play session?
I honestly like being able to earn a significant amount of resources right off so that I can start building cool stuff. I really dislike caving, so making it much more demanding like they have in this update is going to make it hard for me to keep enjoying the game. I'm going to look at the update logs and wiki to see if any real changes were made as to how ores are distributed. Maybe even do some testing via MCEdit
I honestly like being able to earn a significant amount of resources right off so that I can start building cool stuff. I really dislike caving, so making it much more demanding like they have in this update is going to make it hard for me to keep enjoying the game. I'm going to look at the update logs and wiki to see if any real changes were made as to how ores are distributed. Maybe even do some testing via MCEdit
I already looked at the code and confirmed that there were in fact no changes to ores; MCEdit also confirmed this. In fact, I actually found MORE iron and coal than what the Wiki says, even though I didn't see a reason why.
Incidentally, here is the ore generation code for 1.6 and 1.7 respectively, found in BiomeDecorator in MCP and agm.class in 1.7.2 (I found it by using JAD to decompile the 1.7.2 jar, then searched the files for "Already decorating", a string found in BiomeDecorator):
this.dirtGen = new WorldGenMinable(Block.dirt.blockID, 32);
this.gravelGen = new WorldGenMinable(Block.gravel.blockID, 32);
this.coalGen = new WorldGenMinable(Block.oreCoal.blockID, 16);
this.ironGen = new WorldGenMinable(Block.oreIron.blockID, 8);
this.goldGen = new WorldGenMinable(Block.oreGold.blockID, 8);
this.redstoneGen = new WorldGenMinable(Block.oreRedstone.blockID, 7);
this.diamondGen = new WorldGenMinable(Block.oreDiamond.blockID, 7);
this.lapisGen = new WorldGenMinable(Block.oreLapis.blockID, 6);
protected void genStandardOre1(int par1, WorldGenerator par2WorldGenerator, int par3, int par4)
{
for (int var5 = 0; var5 < par1; ++var5)
{
int var6 = this.chunk_X + this.randomGenerator.nextInt(16);
int var7 = this.randomGenerator.nextInt(par4 - par3) + par3;
int var8 = this.chunk_Z + this.randomGenerator.nextInt(16);
par2WorldGenerator.generate(this.currentWorld, this.randomGenerator, var6, var7, var8);
}
}
protected void generateOres()
{
this.genStandardOre1(20, this.dirtGen, 0, 128);
this.genStandardOre1(10, this.gravelGen, 0, 128);
this.genStandardOre1(20, this.coalGen, 0, 128);
this.genStandardOre1(20, this.ironGen, 0, 64);
this.genStandardOre1(2, this.goldGen, 0, 32);
this.genStandardOre1(8, this.redstoneGen, 0, 16);
this.genStandardOre1(1, this.diamondGen, 0, 16);
this.genStandardOre2(1, this.lapisGen, 16, 16);
}
protected apz h = new aqq(ahz.d, 32);
protected apz i = new aqq(ahz.n, 32);
protected apz j = new aqq(ahz.q, 16);
protected apz k = new aqq(ahz.p, 8);
protected apz l = new aqq(ahz.o, 8);
protected apz m = new aqq(ahz.ax, 7);
protected apz n = new aqq(ahz.ag, 7);
protected apz o = new aqq(ahz.x, 6);
protected void a(int paramInt1, apz paramapz, int paramInt2, int paramInt3)
{
for (int i1 = 0; i1 < paramInt1; i1++) {
int i2 = this.c + this.b.nextInt(16);
int i3 = this.b.nextInt(paramInt3 - paramInt2) + paramInt2;
int i4 = this.d + this.b.nextInt(16);
paramapz.a(this.a, this.b, i2, i3, i4);
}
}
protected void a()
{
a(20, this.h, 0, 256);
a(10, this.i, 0, 256);
a(20, this.j, 0, 128);
a(20, this.k, 0, 64);
a(2, this.l, 0, 32);
a(8, this.m, 0, 16);
a(1, this.n, 0, 16);
b(1, this.o, 16, 16);
}
Despite the obfuscated names, it should be easy to see the similarities; the only difference is the generation of dirt and gravel, increased to the word height limit along with terrain, and actually, this means that you'll find half as much of either when digging a straight tunnel because they didn't also double the number of veins generated.
Also, here is an analysis from MCEdit of a 1.7.2 world (the same one I posted a map of earlier; I modified cave generation but otherwise it is vanilla):
I analyzed 2025 chunks; so there are about 90 iron ore and 177 coal ore per chunk; the Wiki says that there are 77 and 142 respectively in an average world; I have analyzed more than one 1.7 world and they all give similar results for various numbers of chunks (this world also has less ore than usual because there are far more caves, twice as many as even pre-1.7 worlds, although the amount of air+lava blocks vs total blocks below y=60 is still relatively low).
Note also that there are about 8.2 gold ore per chunk, and the Wiki says that is the average, the same is also true for lapis redstone and diamond - so what's up with iron and coal? The latter can be inflated if there are more mountains since coal generates up to y=128, but not iron.
I already looked at the code and confirmed that there were in fact no changes to ores; MCEdit also confirmed this. In fact, I actually found MORE iron and coal than what the Wiki says, even though I didn't see a reason why.
Incidentally, here is the ore generation code for 1.6 and 1.7 respectively, found in BiomeDecorator in MCP and agm.class in 1.7.2 (I found it by using JAD to decompile the 1.7.2 jar, then searched the files for "Already decorating", a string found in BiomeDecorator):
this.dirtGen = new WorldGenMinable(Block.dirt.blockID, 32);
this.gravelGen = new WorldGenMinable(Block.gravel.blockID, 32);
this.coalGen = new WorldGenMinable(Block.oreCoal.blockID, 16);
this.ironGen = new WorldGenMinable(Block.oreIron.blockID, 8);
this.goldGen = new WorldGenMinable(Block.oreGold.blockID, 8);
this.redstoneGen = new WorldGenMinable(Block.oreRedstone.blockID, 7);
this.diamondGen = new WorldGenMinable(Block.oreDiamond.blockID, 7);
this.lapisGen = new WorldGenMinable(Block.oreLapis.blockID, 6);
protected void genStandardOre1(int par1, WorldGenerator par2WorldGenerator, int par3, int par4)
{
for (int var5 = 0; var5 < par1; ++var5)
{
int var6 = this.chunk_X + this.randomGenerator.nextInt(16);
int var7 = this.randomGenerator.nextInt(par4 - par3) + par3;
int var8 = this.chunk_Z + this.randomGenerator.nextInt(16);
par2WorldGenerator.generate(this.currentWorld, this.randomGenerator, var6, var7, var8);
}
}
protected void generateOres()
{
this.genStandardOre1(20, this.dirtGen, 0, 128);
this.genStandardOre1(10, this.gravelGen, 0, 128);
this.genStandardOre1(20, this.coalGen, 0, 128);
this.genStandardOre1(20, this.ironGen, 0, 64);
this.genStandardOre1(2, this.goldGen, 0, 32);
this.genStandardOre1(8, this.redstoneGen, 0, 16);
this.genStandardOre1(1, this.diamondGen, 0, 16);
this.genStandardOre2(1, this.lapisGen, 16, 16);
}
protected apz h = new aqq(ahz.d, 32);
protected apz i = new aqq(ahz.n, 32);
protected apz j = new aqq(ahz.q, 16);
protected apz k = new aqq(ahz.p, 8);
protected apz l = new aqq(ahz.o, 8);
protected apz m = new aqq(ahz.ax, 7);
protected apz n = new aqq(ahz.ag, 7);
protected apz o = new aqq(ahz.x, 6);
protected void a(int paramInt1, apz paramapz, int paramInt2, int paramInt3)
{
for (int i1 = 0; i1 < paramInt1; i1++) {
int i2 = this.c + this.b.nextInt(16);
int i3 = this.b.nextInt(paramInt3 - paramInt2) + paramInt2;
int i4 = this.d + this.b.nextInt(16);
paramapz.a(this.a, this.b, i2, i3, i4);
}
}
protected void a()
{
a(20, this.h, 0, 256);
a(10, this.i, 0, 256);
a(20, this.j, 0, 128);
a(20, this.k, 0, 64);
a(2, this.l, 0, 32);
a(8, this.m, 0, 16);
a(1, this.n, 0, 16);
b(1, this.o, 16, 16);
}
Despite the obfuscated names, it should be easy to see the similarities; the only difference is the generation of dirt and gravel, increased to the word height limit along with terrain, and actually, this means that you'll find half as much of either when digging a straight tunnel because they didn't also double the number of veins generated.
Also, here is an analysis from MCEdit of a 1.7.2 world (the same one I posted a map of earlier; I modified cave generation but otherwise it is vanilla):
I analyzed 2025 chunks; so there are about 90 iron ore and 177 coal ore per chunk; the Wiki says that there are 77 and 142 respectively in an average world; I have analyzed more than one 1.7 world and they all give similar results for various numbers of chunks (this world also has less ore than usual because there are far more caves, twice as many as even pre-1.7 worlds, although the amount of air+lava blocks vs total blocks below y=60 is still relatively low).
Note also that there are about 8.2 gold ore per chunk, and the Wiki says that is the average, the same is also true for lapis redstone and diamond - so what's up with iron and coal? The latter can be inflated if there are more mountains since coal generates up to y=128, but not iron.
Surprisingly enough I understood half of that code. Looks like AP Computer Science is paying off
Its a shame what the "caves" have become... the whole point (at least for me and some friends) was to venture those neverending tunnels and from time to time discovering underground ravines and connecting passages between two mega caves.
now we've been searching for weeks now but all caves end after 5 to 10 minutes of exploring. it has simply put become boring...
i miss my swiss cheese!
Its a shame what the "caves" have become... the whole point (at least for me and some friends) was to venture those neverending tunnels and from time to time discovering underground ravines and connecting passages between two mega caves.
now we've been searching for weeks now but all caves end after 5 to 10 minutes of exploring. it has simply put become boring...
i miss my swiss cheese!
I edited the class file for the cave generator and uploaded several versions here so you can get back the old generation (a simple jar mod; works for the server too). Or even twice the old generation. Although it would be even better if MCP updated because then I could update my my mega-cave mod (both in complexity and how big some cave systems and ravines can get*) and perhaps even upload it for others to use (I currently still play in 1.6 on my main world for this reason, besides using other mods).
*This is the largest cave system possible, with vanilla-size systems nearby to show the variation you can get; ravines have a similar range of sizes:
(mind you, these are very rare, as this 3008x3008 block map shows, same for the largest "ravines"; you can see a very long one to the south of the mega-cave system, others can loop around on themselves multiple times)
I think you definitely should make a full mod out of this.
Ideally, a text file should store the parameters, and this is copied into the world (so that if you change the paramters for a later world, it doesn't screw up previous worlds). Unless you want to really add a full new world gen screen, which is more work. The frequency, size and density of abandoned mineshafts would also be important.
However, I wouldn't make it super-random. Some players like huge infinite swiss cheese caves, others like small cave systems that they can fully explore in less than an hour, and others like to find a bit of everything and be surprised. There should be a way for the player to have some "hint" as to what kind of cave system he is going to explore, tough.
For example it could be biome based used a simple rule :
Example: Cave systems under mountaineous sub-biomes tend to be much more bigger denser.
It would also be good if there were surface world "hints" as to what is below.
Personally, I think a 2048x2048 blocks area, one one max zoom map unit, is enough to define "a big chunk of the world", with most variety contained WITHIN the area. Maybe 4096x 4096, but for most players, than is the entire amount of "world" they need.
In short, if you take a sufficiently big map area, eventually you'll should get a % probability of at least 100% of some kind of feature appearing. This area should not be too big, not all players want to have to explore tends of thouands of blocks before getting a chance to find smething! And exploring is much harder (or at least slower) to do underground than on the surface.
Think of it this way:
Cows spawn in random packs. Sometimes you spawn in an area without trees, but usually, you don't need to explore a 2000x2000 blocks area before you are sure to eventually find some trees. That would even make the game "unplayable" for many players for which exploring such a big area is felt as "woah, too big of a world". After all, it takes several hours to map such an area. So trees appear much more often, nearly everywhere in fact. You might start in a treeless biome, but move a couple hundreds blocks away, Aand you"re sure to find trees.
The same thing should be defined for every feature, no matter if it is as small as a tree or as big or bigger than a mineshaft.
Another way to put it uis by saying "if it doesnMt appear often enough within an area of a size considered explorable by the majority of players, it might as well not exist, and thus might as well not be in the game at all. Let's say you create a special type of caves that are made of cobblestone instead of normal stone, but like the supermassive caves, those generate only on average once on a 1000000x1000000 blocks map. Then it would obtiously be pointless to have such feature: almost no player would ever see it. A fature should have a reasonably VERY HIGH chance to appear at least ONCE on a map of the size of what you can expect a typical player to thouroughly explore. This area of thorough exploration is, for most players, between about one max zoom map, or 2048x2048, and a 3x3 grid of such maps. And according to bandwith theory, the only way to make the chances high, is to make the average instanciation be double the expected "semi-garantee" amount. If you want the odds to be VERY high, you do this along both axises.
So in your 3008x2008 image, is already very near this limit. There should be about *4* uber-mega-caves in the image (3x3 max zoom map units = 6000x6000 blocks, and to insure "very high" chances of getting the feature, we shrink the area by 2 on each size), and we find 2 mega-uber cave systems in there. So it is okay, the maximum "scale" at which it is okay to put the feature. However, re,e,ber that this is for players with a HIGH tolerance for exploration and through world mapping. Even yourself used a 3000x3000 image after all, and not a 6000x6000 one. So I basically think that the "mega" caves scarcity (and well size) could be toned down, at least as the default values for a mod.
Other "tricks" to make finding the "limit" between two cave system easier:
The super-long tunnels that connect the cave systems, let's call them the "underground highway network", could have a different look than plain tunnels. This would help players tell apart "local" caves networks from "tunnels connecting between the cave networks".
Also, you said 1.7.3 caves tend to be less connected vertically also. Maybe more work could be done on the vertical connections? This would help having cave system that connect to lower areas, without having to have the "swiss cheese" effect where you end up doing more climbing and jumping and watching out for mobs FALLING on you, than actual digging and travelling along actual tunnels.
Currently cave networks seems to connect only on the sheer luck of total tentacly randomness. The ore tunnels a cave system creates, the greater the chances for it to connect to nearby cave networks, adjacent or below it's area. This is leaving way too much too random chance. If instead a system of "nodes" was created then a cave system could send a tunnel to the node directly (well, not in a STRAIGHT path, but you get the idea). A wider cavern could be put there. You'd end up with less "dead ends" and more connections. These nodes could work on several "levels": Minor nodes connect WITHIN the same cave system, and cave systems above or below. Ergo, they serve to "remove" some dead ends and make a part of the local caves "loop back" on another part, and help cave systems standing one on top of each other to form a single more meshed together network. Hub nodes would connect nearby cave systems together, forming a bigger cave network, a "hub" of cave systems all around a hub node. Finally, Primary nodes would form a kind of "underground superhighway" network, using very long tunnels to connect hub nodes together, allowing the network to be infinite, but with clear several hundreds or even thousands of blocks long "main tunnels" that cross through everything.
Dead areas, or "Shield" areas, could also be added, where there are no or almost no caves. At the center, maybe some hint of that "total ground solidity" found on the surface would help players wanting to build underground without constantly having their digging opening up into cave systems find their mining haven. Same for super-dense caves areas, some kind of surface hint would be useful.
For "solid" ground, a big boulder (say 8-12 blocks big) located near the center of the area would do the trick nicely.
For pinpointing "really dense caves", a large fractured pit opening up on some of the tunnels, would also work good: it would look as if one of the caves, with all of it's columns and twistings, simply reached the surface. Easy to do: remove a lot of the surface dirt right above a "placed a bit too high" cave with multiple exits, and allow all exists going up to cross dirt.
Some Mineshafts, if Mineshafts are made rare, could also have such surface hint: simply put, a simple 5x5 "mining well" structure going down until it hits the abandoned mineshaft. Or a little cabin with a cobble stairway going down into the mineshaft.
In any case, overall I like very much what you have done with the generator, adding way more variety and shapes.
I think you definitely should make a full mod out of this...
I like some of the suggestions but I'm not sure how I'd implement them; for example, removing some of the randomness, although I did make it so the biggest cave systems generate at fixed locations (every 512 and 1024 blocks with a 12.5% chance, so they can never be less than 512 and 1024 blocks apart center-center), this so that I could define a range of chunks, each of which has a random probability of generating a single cave + its branches, as opposed the the vanilla method of generating an entire system based in one chunk; my method also greatly improves chunk generation speed with large caves, besides preventing other caves from generating inside them, plus a border. There is still a random factor, however, based on the world seed and "region" coordinates, where each "region" is 32 or 64 chunks on a side, centered over the centers of the potential cave systems; here is a map using a different seed, same size as the first one:
(if you look at the three big systems in the middle you can see that they are aligned onto a grid with the top two 512 blocks apart and a third 1024 blocks south of the one of the top-left), less evident on the first map)
Those "supercolossal" cave systems should be made smaller if I were to include them in a mod, or perhaps just have "supermassive" cave systems as the biggest; that said, I can easily make "caveless" areas by using the same code for them but optionally not generating anything; this would be easy to do, the simplest way would be the double the frequency; currently determined by a random number from 0-7 being equal to 0; change that to < 2 so 0 and 1 are valid, but only generate a cave system if it is equal to 0, while still excluding others from generating).
I can also apply the same logic to normal-size cave systems, although I decided that it was better to have them generate like they do in vanilla for the randomness aspect (it is much easier to control the size though if two or more adjacent chunks can't spawn cave systems, sometimes happening for many chunks and making one of those messes where you can't identify separate passages, like the cave system I posted about here; this is one thing I try to avoid by setting a cap on the maximum density of a cave system, even as I increased the average density; I also decreased the chance of generating and added those very long caves to help keep them interconnected; it is easy to tell when you are in one because they are relatively straight and of a constant size without branches; surface caves are generated similarly but are more vertical).
Making caves generate based on biomes would also have issues; while I can read the biome for a given chunk (for simplicity, just read the biome for one block in the middle), translating that into a measure of cave size/frequency, without using a look-up table of all of the biome IDs, is another matter, although I suppose it could be done by just defining a 256 element array and populating it with the appropriate values.
Also, while I have worked with the code a lot, I have mostly changed things already in the game; I don't know how to add a configuration file, or, since many mods use Forge, use Forge to do this; their tutorial on world generation is also very unhelpful to say the least. I do have some hint from the Forge source code though, which contains this line in ChunkProviderGenerate:
That appears to get a mod generator and uses it instead of the vanilla one (I used the Forge source to make my mod, but only because I use Forge for other mods; doing this leaves in all of the Forge code normally added at runtime, but not added because it doesn't patch modded files).
Today was the first time I explored any caves for real in 1.7. I found two different cave entrances. Both of them were about ...big enough that exploring them is a fun adventure, but not too big that it's overwhelming. And they weren't connected either. :-)
The Meaning of Life, the Universe, and Everything.
Location:
Lawndale
Join Date:
10/11/2013
Posts:
43
Member Details
Í hate this tweak, and I don't understand anyone who likes it. It made it easier to get 2 ingots for a sword! All of you who say "ya is beter know" wait 'til you get cornered by a creeper and your best bet is a wooden sword. Instead of having your sexy iron sword that you got from 2 iron ingots you found in a cave. Take that
The Meaning of Life, the Universe, and Everything.
Join Date:
9/16/2013
Posts:
207
Member Details
I don't like swiss cheese cave but this is a very horrible tweak comparing to Notch's pre beta 1.8 cave.
In Release 1.7
The holes on surface has decreased but the cave is totally horrible,it is very hard to find a cave that leading to deep underground.You can dominate a cave just under 1 minute.
In Beta 1.8-Release 1.6
We got lot of swiss cheese cave which cause cave entrace everywhere on surface.Swiss cheese cake can generate from surface until bottom.In my opinion,it is extremely hard to dominate this cave but very fun to exploring it(except for getting lost).
Pre Beta 1.8
Before 1.8,the cave is not a swiss cheese like in Release 1.7 but there are some difference.The cave is very short and tiny near surface.If the player is below Y=30,the cave is very large and long but a player can dominate it in 3 minute.
Overall
Release 1.7's cave tweak make cave look like a tiny tunnel.I prefer old swiss cheese cave than this horrible tweak.They make cave too short and ending too quickly.They should make cave like in pre Beta 1.8.Cave near surface is very tiny and end quickly but in underground(Y=30 and below) the cave should be long and large.
I loved swiss cheese caves! It meant more ores to me! Based on your picture the right one looks like you have to mine FURTHER for more caves! I think that they should add a variety of caves! Lava filled caves, Big caves, small caves, mob filled caves, and cavey caves! XD
Rollback Post to RevisionRollBack
"Or you could go outside for a change, that's what i do when I'm bored in MC."
"Where is this magical realm of "outside" you speak of?"
I didn't like the spread caves, it made it where mobs would rain down on your head. I like the caves from alpha, they were pretty small but pretty cool at the same time. I do like the caves we have now, they feel almost the same as the ones in alpha.
Í hate this tweak, and I don't understand anyone who likes it. It made it easier to get 2 ingots for a sword! All of you who say "ya is beter know" wait 'til you get cornered by a creeper and your best bet is a wooden sword. Instead of having your sexy iron sword that you got from 2 iron ingots you found in a cave. Take that
If you can't find 2 iron to make a sword, take your mouse and move it in circles, make sure to place torches too, it really helps.
If you don't like the new cave generation, you can use a mod I made (1.7.2 and 1.7.4) to get the old generation back - or even more.
Also, you ought to see what I've done for my own worlds (beyond what I've mentioned previously); I actually doubled ground depth (sea level is 127 instead of 63) to create truly epic caves and ravines (and yes, you can try it out, for 1.6.4; the changes I made are much more complex and require MCP). Here is a look at the caves I've explored in my world, from two different directions (I've so far used over 17,000 torches to light them up, as seen by all of the yellow dots, and mined over 48,000 ore, including 31,000 coal, 12,700 iron and 300 diamond):
Also, as you can see on this Unmined map (same area as above, except showing unexplored caves as well), caves are bigger and denser but are also more concentrated, with larger cave-free areas between systems:
Not that you'd never suspect what lies under your feet from the surface; all you'll ever find is this (I made it so that most caves and ravines only cut through stone, similar to what happens in vanilla in deserts because caves only cut through stone, dirt, and grass).
Also, I tweaked the generation of abandoned mineshafts (in addition to increasing the y-range to around y=100); the default generation makes them less common within 80 chunks of the origin but I removed that and reduced the chance to 25% of normal (1 in 400 vs 1 in 100 chunks), so they generate with the same frequency everywhere (which is to say, still fairly common but not the huge messes you find far from the origin; check out this ridiculous mess from my first world; so far all of the complexes I've explored had just one of those big dirt floor rooms, indicating that no overlapping complexes generated).
I was also wondering, did Mojang ever release an official statement as to why they nerfed cave generation? I don't think they ever mentioned it in the change logs; the Wiki actually refers to this thread for evidence that cave generation was changed, presumably my posts when I decompiled the code to compare it. Personally, I still think they ought to have made cave generation configurable; all they'd need to do is use a Superflat-like configuration string for default worlds and a slider to adjust cave size and generation chance (and hey, why not throw in all of the other settings as well? All Superflat does is allow you to adjust defaults that are used otherwise, so they don't need to add any new code).
I don't get why people want less caves. Why do you have to feel like you have to "conquer it"? Just stop exploring and go home if you get sick of looking around in a cave.
Most people are unwilling to leave caves unexplored for many reasons. I just wall off ones I'm not ready to explore yet, usually with literal cobblestone wall and fence gates because that is a very easy way to break up caves into pieces.
I would disagree. Nether is easily explored by horse and horse + Portals is faster than Portals. Also, fortresses are tall, thin, and flat: perfect for horse riding.
It severely disappoints me that no undead horse mobs spawn in fortresses. 1.16 was the update to add that.
Dead areas, or "Shield" areas, could also be added, where there are no or almost no caves. At the center, maybe some hint of that "total ground solidity" found on the surface would help players wanting to build underground without constantly having their digging opening up into cave systems find their mining haven. Same for super-dense caves areas, some kind of surface hint would be useful.
Shield areas already exist in the game but I don't think they indicate anything.
Most people are unwilling to leave caves unexplored for many reasons. I just wall off ones I'm not ready to explore yet, usually with literal cobblestone wall and fence gates because that is a very easy way to break up caves into pieces.
An unfortunate problem with this as of 1.16 (?) is that walls are now fully solid so no peeking between cracks for monsters.
I'm pretty sure they were made rarer as well; the map I posted above (about 900x900 blocks) has just one mineshaft complex, and not a really big one either, in the entire area; normally you'll see several, and often multiple complexes overlapping. I'm not as familiar with the code that generates mineshafts but I could probably find where it generates them; they probably have a chance of generating in any one chunk similar to caves and ravines, hence you can often find two or more connected together (the big room with dirt is the starting point and there is only one in a single complex).
For comparison, this is from a world generated in 1.6 and covers a smaller area (it isn't like this everywhere but there are at least 5-6 in any similar area over the entire 2000x4000 block world):
Note - this is pure vanilla generation from a world I played before I modified cave/ravine generation, not that I think it affects mineshafts; the seed is -123775873255737467 for both of the maps I posted (modifying 1.7.2 to generate caves like 1.6 makes the exact same caves generate, so the random number generator still works the same way; large biomes and Amplfiied also have the same generation, less anything at the surface/in mountains, for the same seed, not surprising since the cave generator only works off the world seed and chunk coordinates).
Given all of this, it is a bit odd that ravine generation wasn't changed/reduced; they still have the same 1 in 50 chance of generating in a chunk and don't appear any different in Unmined.
I'm also wondering if Mojang ever gave any reasons for reducing caves and mineshafts; I don't think it was ever mentioned in the change logs. I actually think it is good that mineshafts were reduced, but not to the extent they appear to have been; they could have just made it so that they can't spawn on top of each other, and for caves, just reduce the generation frequency but not the size (my mod actually does this, except makes them bigger, so I get more caves overall but they aren't all in a big mess and making it easier to tell when you're going into a new system).
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?
I honestly like being able to earn a significant amount of resources right off so that I can start building cool stuff. I really dislike caving, so making it much more demanding like they have in this update is going to make it hard for me to keep enjoying the game. I'm going to look at the update logs and wiki to see if any real changes were made as to how ores are distributed. Maybe even do some testing via MCEdit
I already looked at the code and confirmed that there were in fact no changes to ores; MCEdit also confirmed this. In fact, I actually found MORE iron and coal than what the Wiki says, even though I didn't see a reason why.
Incidentally, here is the ore generation code for 1.6 and 1.7 respectively, found in BiomeDecorator in MCP and agm.class in 1.7.2 (I found it by using JAD to decompile the 1.7.2 jar, then searched the files for "Already decorating", a string found in BiomeDecorator):
Despite the obfuscated names, it should be easy to see the similarities; the only difference is the generation of dirt and gravel, increased to the word height limit along with terrain, and actually, this means that you'll find half as much of either when digging a straight tunnel because they didn't also double the number of veins generated.
Also, here is an analysis from MCEdit of a 1.7.2 world (the same one I posted a map of earlier; I modified cave generation but otherwise it is vanilla):
I analyzed 2025 chunks; so there are about 90 iron ore and 177 coal ore per chunk; the Wiki says that there are 77 and 142 respectively in an average world; I have analyzed more than one 1.7 world and they all give similar results for various numbers of chunks (this world also has less ore than usual because there are far more caves, twice as many as even pre-1.7 worlds, although the amount of air+lava blocks vs total blocks below y=60 is still relatively low).
Note also that there are about 8.2 gold ore per chunk, and the Wiki says that is the average, the same is also true for lapis redstone and diamond - so what's up with iron and coal? The latter can be inflated if there are more mountains since coal generates up to y=128, but not iron.
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?
Surprisingly enough I understood half of that code. Looks like AP Computer Science is paying off
now we've been searching for weeks now but all caves end after 5 to 10 minutes of exploring. it has simply put become boring...
i miss my swiss cheese!
I edited the class file for the cave generator and uploaded several versions here so you can get back the old generation (a simple jar mod; works for the server too). Or even twice the old generation. Although it would be even better if MCP updated because then I could update my my mega-cave mod (both in complexity and how big some cave systems and ravines can get*) and perhaps even upload it for others to use (I currently still play in 1.6 on my main world for this reason, besides using other mods).
*This is the largest cave system possible, with vanilla-size systems nearby to show the variation you can get; ravines have a similar range of sizes:
(mind you, these are very rare, as this 3008x3008 block map shows, same for the largest "ravines"; you can see a very long one to the south of the mega-cave system, others can loop around on themselves multiple times)
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?
Check out this vid
Like and Subscribe
Ideally, a text file should store the parameters, and this is copied into the world (so that if you change the paramters for a later world, it doesn't screw up previous worlds). Unless you want to really add a full new world gen screen, which is more work. The frequency, size and density of abandoned mineshafts would also be important.
However, I wouldn't make it super-random. Some players like huge infinite swiss cheese caves, others like small cave systems that they can fully explore in less than an hour, and others like to find a bit of everything and be surprised. There should be a way for the player to have some "hint" as to what kind of cave system he is going to explore, tough.
For example it could be biome based used a simple rule :
Example: Cave systems under mountaineous sub-biomes tend to be much more bigger denser.
It would also be good if there were surface world "hints" as to what is below.
Personally, I think a 2048x2048 blocks area, one one max zoom map unit, is enough to define "a big chunk of the world", with most variety contained WITHIN the area. Maybe 4096x 4096, but for most players, than is the entire amount of "world" they need.
In short, if you take a sufficiently big map area, eventually you'll should get a % probability of at least 100% of some kind of feature appearing. This area should not be too big, not all players want to have to explore tends of thouands of blocks before getting a chance to find smething! And exploring is much harder (or at least slower) to do underground than on the surface.
Think of it this way:
Cows spawn in random packs. Sometimes you spawn in an area without trees, but usually, you don't need to explore a 2000x2000 blocks area before you are sure to eventually find some trees. That would even make the game "unplayable" for many players for which exploring such a big area is felt as "woah, too big of a world". After all, it takes several hours to map such an area. So trees appear much more often, nearly everywhere in fact. You might start in a treeless biome, but move a couple hundreds blocks away, Aand you"re sure to find trees.
The same thing should be defined for every feature, no matter if it is as small as a tree or as big or bigger than a mineshaft.
Another way to put it uis by saying "if it doesnMt appear often enough within an area of a size considered explorable by the majority of players, it might as well not exist, and thus might as well not be in the game at all. Let's say you create a special type of caves that are made of cobblestone instead of normal stone, but like the supermassive caves, those generate only on average once on a 1000000x1000000 blocks map. Then it would obtiously be pointless to have such feature: almost no player would ever see it. A fature should have a reasonably VERY HIGH chance to appear at least ONCE on a map of the size of what you can expect a typical player to thouroughly explore. This area of thorough exploration is, for most players, between about one max zoom map, or 2048x2048, and a 3x3 grid of such maps. And according to bandwith theory, the only way to make the chances high, is to make the average instanciation be double the expected "semi-garantee" amount. If you want the odds to be VERY high, you do this along both axises.
So in your 3008x2008 image, is already very near this limit. There should be about *4* uber-mega-caves in the image (3x3 max zoom map units = 6000x6000 blocks, and to insure "very high" chances of getting the feature, we shrink the area by 2 on each size), and we find 2 mega-uber cave systems in there. So it is okay, the maximum "scale" at which it is okay to put the feature. However, re,e,ber that this is for players with a HIGH tolerance for exploration and through world mapping. Even yourself used a 3000x3000 image after all, and not a 6000x6000 one. So I basically think that the "mega" caves scarcity (and well size) could be toned down, at least as the default values for a mod.
Other "tricks" to make finding the "limit" between two cave system easier:
The super-long tunnels that connect the cave systems, let's call them the "underground highway network", could have a different look than plain tunnels. This would help players tell apart "local" caves networks from "tunnels connecting between the cave networks".
Also, you said 1.7.3 caves tend to be less connected vertically also. Maybe more work could be done on the vertical connections? This would help having cave system that connect to lower areas, without having to have the "swiss cheese" effect where you end up doing more climbing and jumping and watching out for mobs FALLING on you, than actual digging and travelling along actual tunnels.
Currently cave networks seems to connect only on the sheer luck of total tentacly randomness. The ore tunnels a cave system creates, the greater the chances for it to connect to nearby cave networks, adjacent or below it's area. This is leaving way too much too random chance. If instead a system of "nodes" was created then a cave system could send a tunnel to the node directly (well, not in a STRAIGHT path, but you get the idea). A wider cavern could be put there. You'd end up with less "dead ends" and more connections. These nodes could work on several "levels": Minor nodes connect WITHIN the same cave system, and cave systems above or below. Ergo, they serve to "remove" some dead ends and make a part of the local caves "loop back" on another part, and help cave systems standing one on top of each other to form a single more meshed together network. Hub nodes would connect nearby cave systems together, forming a bigger cave network, a "hub" of cave systems all around a hub node. Finally, Primary nodes would form a kind of "underground superhighway" network, using very long tunnels to connect hub nodes together, allowing the network to be infinite, but with clear several hundreds or even thousands of blocks long "main tunnels" that cross through everything.
Dead areas, or "Shield" areas, could also be added, where there are no or almost no caves. At the center, maybe some hint of that "total ground solidity" found on the surface would help players wanting to build underground without constantly having their digging opening up into cave systems find their mining haven. Same for super-dense caves areas, some kind of surface hint would be useful.
For "solid" ground, a big boulder (say 8-12 blocks big) located near the center of the area would do the trick nicely.
For pinpointing "really dense caves", a large fractured pit opening up on some of the tunnels, would also work good: it would look as if one of the caves, with all of it's columns and twistings, simply reached the surface. Easy to do: remove a lot of the surface dirt right above a "placed a bit too high" cave with multiple exits, and allow all exists going up to cross dirt.
Some Mineshafts, if Mineshafts are made rare, could also have such surface hint: simply put, a simple 5x5 "mining well" structure going down until it hits the abandoned mineshaft. Or a little cabin with a cobble stairway going down into the mineshaft.
In any case, overall I like very much what you have done with the generator, adding way more variety and shapes.
I like some of the suggestions but I'm not sure how I'd implement them; for example, removing some of the randomness, although I did make it so the biggest cave systems generate at fixed locations (every 512 and 1024 blocks with a 12.5% chance, so they can never be less than 512 and 1024 blocks apart center-center), this so that I could define a range of chunks, each of which has a random probability of generating a single cave + its branches, as opposed the the vanilla method of generating an entire system based in one chunk; my method also greatly improves chunk generation speed with large caves, besides preventing other caves from generating inside them, plus a border. There is still a random factor, however, based on the world seed and "region" coordinates, where each "region" is 32 or 64 chunks on a side, centered over the centers of the potential cave systems; here is a map using a different seed, same size as the first one:
(if you look at the three big systems in the middle you can see that they are aligned onto a grid with the top two 512 blocks apart and a third 1024 blocks south of the one of the top-left), less evident on the first map)
Those "supercolossal" cave systems should be made smaller if I were to include them in a mod, or perhaps just have "supermassive" cave systems as the biggest; that said, I can easily make "caveless" areas by using the same code for them but optionally not generating anything; this would be easy to do, the simplest way would be the double the frequency; currently determined by a random number from 0-7 being equal to 0; change that to < 2 so 0 and 1 are valid, but only generate a cave system if it is equal to 0, while still excluding others from generating).
I can also apply the same logic to normal-size cave systems, although I decided that it was better to have them generate like they do in vanilla for the randomness aspect (it is much easier to control the size though if two or more adjacent chunks can't spawn cave systems, sometimes happening for many chunks and making one of those messes where you can't identify separate passages, like the cave system I posted about here; this is one thing I try to avoid by setting a cap on the maximum density of a cave system, even as I increased the average density; I also decreased the chance of generating and added those very long caves to help keep them interconnected; it is easy to tell when you are in one because they are relatively straight and of a constant size without branches; surface caves are generated similarly but are more vertical).
Making caves generate based on biomes would also have issues; while I can read the biome for a given chunk (for simplicity, just read the biome for one block in the middle), translating that into a measure of cave size/frequency, without using a look-up table of all of the biome IDs, is another matter, although I suppose it could be done by just defining a 256 element array and populating it with the appropriate values.
Also, while I have worked with the code a lot, I have mostly changed things already in the game; I don't know how to add a configuration file, or, since many mods use Forge, use Forge to do this; their tutorial on world generation is also very unhelpful to say the least. I do have some hint from the Forge source code though, which contains this line in ChunkProviderGenerate:
That appears to get a mod generator and uses it instead of the vanilla one (I used the Forge source to make my mod, but only because I use Forge for other mods; doing this leaves in all of the Forge code normally added at runtime, but not added because it doesn't patch modded files).
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?
█▀▀█ He made it so you couldn't have more than two lines in a signature.
I scored 82% on the Minecraft Trivia Quiz. How much do you know about Minecraft?
In Release 1.7
The holes on surface has decreased but the cave is totally horrible,it is very hard to find a cave that leading to deep underground.You can dominate a cave just under 1 minute.
In Beta 1.8-Release 1.6
We got lot of swiss cheese cave which cause cave entrace everywhere on surface.Swiss cheese cake can generate from surface until bottom.In my opinion,it is extremely hard to dominate this cave but very fun to exploring it(except for getting lost).
Pre Beta 1.8
Before 1.8,the cave is not a swiss cheese like in Release 1.7 but there are some difference.The cave is very short and tiny near surface.If the player is below Y=30,the cave is very large and long but a player can dominate it in 3 minute.
Overall
Release 1.7's cave tweak make cave look like a tiny tunnel.I prefer old swiss cheese cave than this horrible tweak.They make cave too short and ending too quickly.They should make cave like in pre Beta 1.8.Cave near surface is very tiny and end quickly but in underground(Y=30 and below) the cave should be long and large.
Nothing to see here~
"Where is this magical realm of "outside" you speak of?"
If you can't find 2 iron to make a sword, take your mouse and move it in circles, make sure to place torches too, it really helps.
Also, you ought to see what I've done for my own worlds (beyond what I've mentioned previously); I actually doubled ground depth (sea level is 127 instead of 63) to create truly epic caves and ravines (and yes, you can try it out, for 1.6.4; the changes I made are much more complex and require MCP). Here is a look at the caves I've explored in my world, from two different directions (I've so far used over 17,000 torches to light them up, as seen by all of the yellow dots, and mined over 48,000 ore, including 31,000 coal, 12,700 iron and 300 diamond):
Also, as you can see on this Unmined map (same area as above, except showing unexplored caves as well), caves are bigger and denser but are also more concentrated, with larger cave-free areas between systems:
Not that you'd never suspect what lies under your feet from the surface; all you'll ever find is this (I made it so that most caves and ravines only cut through stone, similar to what happens in vanilla in deserts because caves only cut through stone, dirt, and grass).
Also, I tweaked the generation of abandoned mineshafts (in addition to increasing the y-range to around y=100); the default generation makes them less common within 80 chunks of the origin but I removed that and reduced the chance to 25% of normal (1 in 400 vs 1 in 100 chunks), so they generate with the same frequency everywhere (which is to say, still fairly common but not the huge messes you find far from the origin; check out this ridiculous mess from my first world; so far all of the complexes I've explored had just one of those big dirt floor rooms, indicating that no overlapping complexes generated).
I was also wondering, did Mojang ever release an official statement as to why they nerfed cave generation? I don't think they ever mentioned it in the change logs; the Wiki actually refers to this thread for evidence that cave generation was changed, presumably my posts when I decompiled the code to compare it. Personally, I still think they ought to have made cave generation configurable; all they'd need to do is use a Superflat-like configuration string for default worlds and a slider to adjust cave size and generation chance (and hey, why not throw in all of the other settings as well? All Superflat does is allow you to adjust defaults that are used otherwise, so they don't need to add any new code).
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?
"Hmm... no diamonds here. Maybe I should look underground?"
Most people are unwilling to leave caves unexplored for many reasons. I just wall off ones I'm not ready to explore yet, usually with literal cobblestone wall and fence gates because that is a very easy way to break up caves into pieces.
What if you run out of picks and materials?
I would disagree. Nether is easily explored by horse and horse + Portals is faster than Portals. Also, fortresses are tall, thin, and flat: perfect for horse riding.
It severely disappoints me that no undead horse mobs spawn in fortresses. 1.16 was the update to add that.
Shield areas already exist in the game but I don't think they indicate anything.
An unfortunate problem with this as of 1.16 (?) is that walls are now fully solid so no peeking between cracks for monsters.