Ever noticed that while you can make a Superflat world that has most of the features of a normal world (e.g. using the Overworld preset) there are certain features that are conspicuously absent. In other worlds, it is impossible to have caves and ravines in a Superflat world because there is no option to generate them.
However, this mod changes that, adding two new Superflat options and a new preset.
These mods are installed by placing them in the jar file, following the instructions listed here. They should also be compatible with many other mods, including Forge (for Forge, I suggest adding the mod using the method described here; rename the zip to superflatcaves-(version).jar without extracting it), as long as they don't modify/access ChunkProviderFlat and GuiFlatPresets (I added a new cave/ravine generator class completely separate from the vanilla ones).
As you can see, there are two new options, "cave" and "ravine" which respectively enable those features (Cavers' Dream is basically Tunnelers' Dream but with caves and ravines and 64 layers of stone instead of 230). In addition, you can change the size and abundance of caves and ravines using the following syntax:
cave(size=x chance=x max=x)
ravine(chance=x max=x)
These work as follows:
Size (caves only): Specifies the maximum size of a single cave system; range is 1 to 100 and the default is 39. Note that the actual size of cave systems will average much lower than this and be skewed towards the low end in a log-like distribution (derived from random(random(random(size + 1) + 1) + 1); there is also a hard limit of 50 applied afterwards to avoid extremely dense cave systems, with little effect on the average even with a size of 100).
Chance: Specifies the chance of a cave or ravine generating in a given chunk; range is 1 to 10000, equivalent to 100 times the percentage (e.g. 100 is a 1% chance). Default is 667 (1-in-15 chance per chunk) for caves and 200 (1-in-50 chance per chunk) for ravines. Note that this setting should be used with some caution, especially if you specify a high value for cave size at the same time, as high values will cause a lot of world generation lag.
Max: Maximum height caves and ravines will generate at; defaults and maximums are 160 for caves and 120 for ravines (none generate higher than this) and the minimum is 1. This can be used to prevent caves from breaking the surface; for example, a max of 64 added to Cavers' Dream will cut off caves and ravines at the top of the stone layer.
Note that you need to enable map features in order for caves and ravines to generate, even if you include them in the preset.
Here are some examples of worlds generated with different presets:
Cavers' Dream, using the seed -123775873255737467; cave generation is similar to that in 1.6.4
Same seed but with cave size set to 100 and chance to 100 and ravines omitted, resulting in rarer but large isolated cave systems (which can get considerably larger than what you see here):
Setting the cave size to 1 and cave chance to 10000; despite a 100% chance of generating caves in a chunk there are less due to the random size (averaging 0.125):
Ravines only, with a chance of 1000 (5 times the normal number):
Adding (max=64) to the Cavers' Dream preset, showing that caves and ravines stop generating at the top of the stone layer, with no pits and gouges in the surface as a result:
Also, a fun thing to do is make a classic Superflat world and add in cave(max=2) - watch where you dig!
In addition, caves only cut through the following blocks:
Note that normal caves only cut through stone, dirt, and grass but generate before chunks are populated; I had to put the superflat cave generator in the chunk populator and add in ores or they'd be left behind in the middle of caves. This can also result in some glitches if water lakes are enabled, as the cave/ravine code prevents them from generating into bodies of water (this can be seen if you replace dirt/grass with water in the Cavers' Dream preset; no caves will cut into the bottom of the water layer, except where gravel falls in) and lakes are normally generated afterwards.
Also, cave/ravine generation is 100% consistent between all versions, so no underground chunk glitches will occur if you change versions (decoration and other structures will be different). Note that due to a reduction in mineshaft frequency in 1.7 you want to add (chance=0.01) after "mineshaft" if you want the same frequency as in 1.6.4 (the 1.7.x default is 0.004).
I think this is a brilliant idea for superflat enthusiasts.
You should continue to work on this mod and improve it in the future.
I will be sure to tell some people about this mod.
He doesn't like 1.8, and likewise, i despise it as well
It is also because I tried making a better world customization mod (able to customize all structures, similar to Superflat and even more, as well as caves, and even emerald ore and bedrock) and while it worked within MCP when I tried running it outside the game crashes with a "malformed class name" error whenever I try to make a customized world - as far as I can tell, MCP for 1.8 is buggy and I don't see much point in trying to make anything other than the simplest mods until they release a fixed version (probably for 1.8.3+).
Encountered an unexpected exception
java.lang.NoClassDefFoundError: b
at net.minecraft.server.MinecraftServer.v(SourceFile:516) ~[MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.u(SourceFile:453) ~[MinecraftServer.class:?]
at bsx.u(IntegratedServer.java:186) ~[bsx.class:?]
at net.minecraft.server.MinecraftServer.run(SourceFile:369) [MinecraftServer.class:?]
at lj.run(SourceFile:628) [lj.class:?]
Caused by: java.lang.ClassNotFoundException: b
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:94) ~[launchwrapper-1.7.jar:?]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_25]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_25]
... 5 more
[17:52:32] [Server thread/INFO]: Stopping server
[17:52:32] [Server thread/INFO]: Saving players
[17:52:32] [Server thread/INFO]: Saving worlds
[17:52:32] [Server thread/INFO]: Saving chunks for level 'New World'/Overworld
[17:52:33] [Server thread/INFO]: Saving chunks for level 'New World'/Nether
[17:52:33] [Server thread/INFO]: Saving chunks for level 'New World'/The End
the preset was cave size 225 and ravines chance 1847
Encountered an unexpected exception
java.lang.NoClassDefFoundError: b
at net.minecraft.server.MinecraftServer.v(SourceFile:516) ~[MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.u(SourceFile:453) ~[MinecraftServer.class:?]
at bsx.u(IntegratedServer.java:186) ~[bsx.class:?]
at net.minecraft.server.MinecraftServer.run(SourceFile:369) [MinecraftServer.class:?]
at lj.run(SourceFile:628) [lj.class:?]
Caused by: java.lang.ClassNotFoundException: b
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:94) ~[launchwrapper-1.7.jar:?]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_25]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_25]
... 5 more
[17:52:32] [Server thread/INFO]: Stopping server
[17:52:32] [Server thread/INFO]: Saving players
[17:52:32] [Server thread/INFO]: Saving worlds
[17:52:32] [Server thread/INFO]: Saving chunks for level 'New World'/Overworld
[17:52:33] [Server thread/INFO]: Saving chunks for level 'New World'/Nether
[17:52:33] [Server thread/INFO]: Saving chunks for level 'New World'/The End
the preset was cave size 225 and ravines chance 1847
I presume that you were using the 1.7.10 version since bsx corresponds to the IntegratedServer class in that version (you should post a more detailed report in its entirety, and use spoilers).
However, I'm not sure why you would be getting such an error; I do not modify MinecraftServer, which is trying to call the (supposedly) nonexistent class "b", unless you are trying to use it with other mods; Optifine is the only mod I can gurantee it will work with (I tested it just now with the latest version for 1.7.10, just in case they changed something, and there were no issues).
That said, Optifine modifies b.class, along with bsx.class, but again I don't modify those classes or any related classes, only ChunkProviderFlat and GuiFlatPresets (reobfuscated into 4 classes), plus my own class MapGenCavesSuperflat.
Also, setting cave size to more than 100 has no further effect since I set that as an upper limit (still enough to seriously lag your game if you also set the chance very high). Otherwise, using invalid settings shouldn't be able to cause the game to crash.
I'm trying to use this with the MultiMC launcher. There is no "libraries" folder or "versions" folder in the instance's "minecraft" folder. Any help would be greatly appreciated.
I'm trying to use this with the MultiMC launcher. There is no "libraries" folder or "versions" folder in the instance's "minecraft" folder. Any help would be greatly appreciated.
I have never used it but MultiMC should have an option to add a jar mod:
Beware that if you use Forge this will likely cause it to crash even if no other mods that depend on the code I modified, which is probably very few, are installed since Forge modifies many classes (the only mod I've ever tested any of my mods with is Optifine, installed as a jar mod itself, not with its installer).
Unfortunately, I want to use this with my Thaumcraft modpack (aka Thaumcraft plus every addon that I could find), meaning Forge is a must; thus, I was trying to do the "Forge-compatible" install route. I remember reading somewhere else (in fact I think it was one of your other threads) that MultiMC does everything completely differently than every other MC launcher.
You could still try it and see if it works; the only classes that I modified are GuiFlatPresets and ChunkProviderFlat, plus a new class containing modified versions of the vanilla cave and ravine generators; unless Forge tries to add new methods or fields to the first two classes it shouldn't be an issue as long as no other mods try changing them, and I doubt that any other mod uses the same name as my modified cave class. You'll have to add the JVM arguments "-Dfml.ignorePatchDiscrepancies=true -Dfml.ignoreInvalidMinecraftCertificates=true" to tell Forge to ignore the changes to the jar (the latter may not actually be necessary; that's if you delete META-INF but I don't think MultiMC does that).
How would one go about getting this to work on Curse (now Twitch) launcher? I ask this because this is a neat mod, but this is not working at all. Superflat accepts the parameters, doesn't show the presets and doesn't generate the caves or other features. I've tried everything, installing it in the 1.7.10 jar, naming it from .zip to .jar, putting it in the core mods folder and the regulr mods foler, nothing works.
I have no idea; I only have experience with the vanilla launcher, and that won't work with the installation instructions that I linked to (which have been removed; they used to describe how to install jar mods on the 1.6+ launcher, but even that wouldn't work anymore since you have to edit the json file to delete the downloads. Apparently, they just decided to remove the instructions instead of updating them).
To install it in the vanilla launcher you have to first play the appropriate version, then copy the folder for it inside the versions folder and rename the folder as well as the jar and json files. Then, open the json file and search for "id": "version", where "version" is the version you are using and change it to the same name you used before (make sure that you are changing the right line, there is another one which refers to assets). Just before this line (in the jsons that I've seen, which appear to be standardized for all versions) is a section marked "downloads" which includes a URL for "client.jar"; this entire section needs to be deleted (here is an example; only the last line shown should remain). Unzip the mod and add the files to the jar using a zip utility, and delete META-INF.
In the case of Forge, the installation introductions I link to have also been removed (they described how to add it as a library so you don't need to edit the jar itself, which may have also worked for vanilla. Apparently, somebody at the Wiki thinks that jar mods are entirely irrelevant as to not even warrant installation instructions for old versions; the same person removed the old instructions from both pages). I have no idea if it is even compatible though even though I only modified two classes (GuiFlatPresets and ChunkProviderFlat, and only the latter is actually needed since I just added a preset with caves to the GUI. For some reason MCP reobfuscated two additional classes for the 1.7 versions); a much simpler mod that only disabled void fog was enough to cause it to crash without any mods since Forge adds new fields and methods that it relies on to many classes.
However, this mod changes that, adding two new Superflat options and a new preset.
Downloads:
Superflat Caves 1.6.4
Superflat Caves 1.7.2
Superflat Caves 1.7.10
These mods are installed by placing them in the jar file, following the instructions listed here. They should also be compatible with many other mods, including Forge (for Forge, I suggest adding the mod using the method described here; rename the zip to superflatcaves-(version).jar without extracting it), as long as they don't modify/access ChunkProviderFlat and GuiFlatPresets (I added a new cave/ravine generator class completely separate from the vanilla ones).
As you can see, there are two new options, "cave" and "ravine" which respectively enable those features (Cavers' Dream is basically Tunnelers' Dream but with caves and ravines and 64 layers of stone instead of 230). In addition, you can change the size and abundance of caves and ravines using the following syntax:
cave(size=x chance=x max=x)
ravine(chance=x max=x)
These work as follows:
Size (caves only): Specifies the maximum size of a single cave system; range is 1 to 100 and the default is 39. Note that the actual size of cave systems will average much lower than this and be skewed towards the low end in a log-like distribution (derived from random(random(random(size + 1) + 1) + 1); there is also a hard limit of 50 applied afterwards to avoid extremely dense cave systems, with little effect on the average even with a size of 100).
Chance: Specifies the chance of a cave or ravine generating in a given chunk; range is 1 to 10000, equivalent to 100 times the percentage (e.g. 100 is a 1% chance). Default is 667 (1-in-15 chance per chunk) for caves and 200 (1-in-50 chance per chunk) for ravines. Note that this setting should be used with some caution, especially if you specify a high value for cave size at the same time, as high values will cause a lot of world generation lag.
Max: Maximum height caves and ravines will generate at; defaults and maximums are 160 for caves and 120 for ravines (none generate higher than this) and the minimum is 1. This can be used to prevent caves from breaking the surface; for example, a max of 64 added to Cavers' Dream will cut off caves and ravines at the top of the stone layer.
Note that you need to enable map features in order for caves and ravines to generate, even if you include them in the preset.
Here are some examples of worlds generated with different presets:
Same seed but with cave size set to 100 and chance to 100 and ravines omitted, resulting in rarer but large isolated cave systems (which can get considerably larger than what you see here):
Setting the cave size to 1 and cave chance to 10000; despite a 100% chance of generating caves in a chunk there are less due to the random size (averaging 0.125):
Ravines only, with a chance of 1000 (5 times the normal number):
Adding (max=64) to the Cavers' Dream preset, showing that caves and ravines stop generating at the top of the stone layer, with no pits and gouges in the surface as a result:
Also, a fun thing to do is make a classic Superflat world and add in cave(max=2) - watch where you dig!
In addition, caves only cut through the following blocks:
Stone, dirt, grass, coal ore, iron ore, gold ore, redstone ore, diamond ore, lapis ore, emerald ore.
Note that normal caves only cut through stone, dirt, and grass but generate before chunks are populated; I had to put the superflat cave generator in the chunk populator and add in ores or they'd be left behind in the middle of caves. This can also result in some glitches if water lakes are enabled, as the cave/ravine code prevents them from generating into bodies of water (this can be seen if you replace dirt/grass with water in the Cavers' Dream preset; no caves will cut into the bottom of the water layer, except where gravel falls in) and lakes are normally generated afterwards.
Also, cave/ravine generation is 100% consistent between all versions, so no underground chunk glitches will occur if you change versions (decoration and other structures will be different). Note that due to a reduction in mineshaft frequency in 1.7 you want to add (chance=0.01) after "mineshaft" if you want the same frequency as in 1.6.4 (the 1.7.x default is 0.004).
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?
You should continue to work on this mod and improve it in the future.
I will be sure to tell some people about this mod.
The preset is shown right in my OP, "Caver's Dream", and I explain how to use the codes afterwards; otherwise, I'm not sure what you are referring to.
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 doesn't like 1.8, and likewise, i despise it as well
It is also because I tried making a better world customization mod (able to customize all structures, similar to Superflat and even more, as well as caves, and even emerald ore and bedrock) and while it worked within MCP when I tried running it outside the game crashes with a "malformed class name" error whenever I try to make a customized world - as far as I can tell, MCP for 1.8 is buggy and I don't see much point in trying to make anything other than the simplest mods until they release a fixed version (probably for 1.8.3+).
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?
Encountered an unexpected exception
java.lang.NoClassDefFoundError: b
at net.minecraft.server.MinecraftServer.v(SourceFile:516) ~[MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.u(SourceFile:453) ~[MinecraftServer.class:?]
at bsx.u(IntegratedServer.java:186) ~[bsx.class:?]
at net.minecraft.server.MinecraftServer.run(SourceFile:369) [MinecraftServer.class:?]
at lj.run(SourceFile:628) [lj.class:?]
Caused by: java.lang.ClassNotFoundException: b
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:94) ~[launchwrapper-1.7.jar:?]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_25]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_25]
... 5 more
[17:52:32] [Server thread/INFO]: Stopping server
[17:52:32] [Server thread/INFO]: Saving players
[17:52:32] [Server thread/INFO]: Saving worlds
[17:52:32] [Server thread/INFO]: Saving chunks for level 'New World'/Overworld
[17:52:33] [Server thread/INFO]: Saving chunks for level 'New World'/Nether
[17:52:33] [Server thread/INFO]: Saving chunks for level 'New World'/The End
the preset was cave size 225 and ravines chance 1847
I presume that you were using the 1.7.10 version since bsx corresponds to the IntegratedServer class in that version (you should post a more detailed report in its entirety, and use spoilers).
However, I'm not sure why you would be getting such an error; I do not modify MinecraftServer, which is trying to call the (supposedly) nonexistent class "b", unless you are trying to use it with other mods; Optifine is the only mod I can gurantee it will work with (I tested it just now with the latest version for 1.7.10, just in case they changed something, and there were no issues).
That said, Optifine modifies b.class, along with bsx.class, but again I don't modify those classes or any related classes, only ChunkProviderFlat and GuiFlatPresets (reobfuscated into 4 classes), plus my own class MapGenCavesSuperflat.
Also, setting cave size to more than 100 has no further effect since I set that as an upper limit (still enough to seriously lag your game if you also set the chance very high). Otherwise, using invalid settings shouldn't be able to cause the game to crash.
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?
no crash report happened it just said Server Closed oh also i was using the following mods
Better mineshafts
Superflat caves
no derp strongholds + optifine
thats when i put ravine(chance=1874)
how can i install it for 1.7.10?
I'm trying to use this with the MultiMC launcher. There is no "libraries" folder or "versions" folder in the instance's "minecraft" folder. Any help would be greatly appreciated.
I have never used it but MultiMC should have an option to add a jar mod:
http://www.howtogeek.com/202661/how-to-manage-minecraft-instances-and-mods-with-multimc/
Beware that if you use Forge this will likely cause it to crash even if no other mods that depend on the code I modified, which is probably very few, are installed since Forge modifies many classes (the only mod I've ever tested any of my mods with is Optifine, installed as a jar mod itself, not with its installer).
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?
Unfortunately, I want to use this with my Thaumcraft modpack (aka Thaumcraft plus every addon that I could find), meaning Forge is a must; thus, I was trying to do the "Forge-compatible" install route. I remember reading somewhere else (in fact I think it was one of your other threads) that MultiMC does everything completely differently than every other MC launcher.
Guess I'll have to do without this mod. Damn.
You could still try it and see if it works; the only classes that I modified are GuiFlatPresets and ChunkProviderFlat, plus a new class containing modified versions of the vanilla cave and ravine generators; unless Forge tries to add new methods or fields to the first two classes it shouldn't be an issue as long as no other mods try changing them, and I doubt that any other mod uses the same name as my modified cave class. You'll have to add the JVM arguments "-Dfml.ignorePatchDiscrepancies=true -Dfml.ignoreInvalidMinecraftCertificates=true" to tell Forge to ignore the changes to the jar (the latter may not actually be necessary; that's if you delete META-INF but I don't think MultiMC does that).
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 install this mod, but he doesn't work.
What is the problem?
I have no idea; I only have experience with the vanilla launcher, and that won't work with the installation instructions that I linked to (which have been removed; they used to describe how to install jar mods on the 1.6+ launcher, but even that wouldn't work anymore since you have to edit the json file to delete the downloads. Apparently, they just decided to remove the instructions instead of updating them).
To install it in the vanilla launcher you have to first play the appropriate version, then copy the folder for it inside the versions folder and rename the folder as well as the jar and json files. Then, open the json file and search for "id": "version", where "version" is the version you are using and change it to the same name you used before (make sure that you are changing the right line, there is another one which refers to assets). Just before this line (in the jsons that I've seen, which appear to be standardized for all versions) is a section marked "downloads" which includes a URL for "client.jar"; this entire section needs to be deleted (here is an example; only the last line shown should remain). Unzip the mod and add the files to the jar using a zip utility, and delete META-INF.
In the case of Forge, the installation introductions I link to have also been removed (they described how to add it as a library so you don't need to edit the jar itself, which may have also worked for vanilla. Apparently, somebody at the Wiki thinks that jar mods are entirely irrelevant as to not even warrant installation instructions for old versions; the same person removed the old instructions from both pages). I have no idea if it is even compatible though even though I only modified two classes (GuiFlatPresets and ChunkProviderFlat, and only the latter is actually needed since I just added a preset with caves to the GUI. For some reason MCP reobfuscated two additional classes for the 1.7 versions); a much simpler mod that only disabled void fog was enough to cause it to crash without any mods since Forge adds new fields and methods that it relies on to many classes.
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?