Inactive [WGEN] Mineral Veins 1.4.1 - Ore placement overhaul [1.2.5-R1]

Discussion in 'Inactive/Unsupported Plugins' started by m0rt, Sep 7, 2011.

  1. Offline

    m0rt

    Mineral Vein - Ore generator modification
    Version: v1.4.1
    Download: jar
    Source: github
    BukkitDev

    WARNING - As of MV 1.4.1, instead of veins.yml, config.yml is used. It's purely a name change, caused by switching over to the new API, file format remains the same.

    Mineral Vein changes the way ores are generated. Instead of lots of small, randomly placed deposits, several huge veins will be generated.
    Technically, Mineral Vein adds new BlockPopulator that removes all previously placed ores and generates new ones. This ensures compatibility with any other world generators, including the default one.

    Veins
    Veins are vast, rare areas, that are rich on particular resource. These veins are multiple chunks wide and long, their respective resources don't exist outside them. Veins aren't made completely of given material, it's just very common there, and often multiple veins of different materials overlap. This ore distribution changes mining for resources completely - you have to scout wide areas for a vein, and when you finally find one, it can supply you for quite a long time. In general, the average density of resources/chunk is simillar, but the distribution is changed completely.

    Converting old worlds

    By default, the plugin works as world generator and only affects newly generated chunks. However, you can force it manually to apply the algorithm to any chunks that are already present.
    The command \mineralvein apply <worldname> [x] [z] [width] [height] will apply this to the selected world. Run this command just once after installing MineralVein, then you don't have to run it at all. By default the command is accessible from console and/or anyone with "MineralVein.apply" permission. (since you need to run this command exactly once, you propably won't need the permission at all.
    The numbers default to 0,0 (center) and 200x200 chunks around it. If your map is bigger, use appropriate setting (widht corresponds to X coordinate, the value is in chunks).

    Screenshot:
    Show Spoiler
    comparsion.png Vanilla minecraft on left, MineralVein right. (white areas are iron blocks, other ores aren't shown, but generated in simillar manner)



    Configuration
    All variables used in ore placement can be set in config file.

    Code:
    worlds:
      default:
        -
            block: GOLD_ORE
            seed: 35434
            density: 3
            thickness: 4
            densityBonus: 0
            heightAvg: 20
            heightVar: 20
            heightLength: 80
            densLength: 80
            exclusive: false
            #biomes: [forest,swampland]
            #exclude_biomes: [desert]
            mode: replace
    
    Each item of the list represents one "layer" that is generated. By default, there is one layer for each ore type, but there can be more.
    seed is a unique number for each layer. If you want to create a layer with two different ores, that always uses same space, just use the same seed.
    density is a chance multiplier. Higher density means more ore
    thickness is vertical size (actually it's distance from the center of the vein, in which the ore can spawn, so it's one-half of the actual thickness)
    densityBonus: The density in an area is determined using a random generator, that gives values between -1 and 1, where 0 and less represent no chance of ore spawning in given location. Giving a densityBonus of 1 will represent in this layer to be filled with resource everywhere on the map.
    heighAvg is the average height in which this layer can be found
    heightVar is the random portion of heigh, the actual heigh goes from avg - var to avg + var (in the example, setting of 20/20 would result in layer beeing between 0-40)
    heightLength is distance in blocks between height definition points changes (higher values -> less frequent height changes)
    densLength is distance in blocks between density definition points changes (higher values -> bigger, rarer veins)
    exclusive parameter makes sure no other veins appear if this one is present (technically, it descreases their chance by the density of this ore here)
    biomes is a list of biomes this vein can appear in. If this parameter is NOT present, it appears everywhere.
    exclude_biomes is a list of biomes to be excluded from the list (logically this should be used when biomes option is defaulted to all)
    mode allows to turn off replacement (by setting mode to "add") - this vein will just add more blocks, without removing the old ones

    The mathematics behind (open)

    This section explains how exactly the ore generation works, which should help you in deciding what config to use.

    The ore placement process works in two levels: column(X and Z coordinate) and block (Y coordinate, within the column). Some of the values (like VeinHeight) will be generated for each column, then all blocks within the column will have a specific chance to spawn ore in them. The following tutorial explains how a single ore vein is generated.

    At the very beginning, height and density maps are generated. Those describe distribution of VeinHeight (block height in world) and VeinDensity (spawn chance multiplier). These maps are based on world seed, so they are identical every time you run the apply command.
    tut1.gif
    This is an example of a density map (not yet finished). The way this generator works is it selects random values each densLength blocks (in this case 40), and interpolates inbetween. (This is a simplified generator, the actual generator has much smoother results). Another example:

    tut2.gif
    Here the densLength is 20, resulting in much faster changes in density. In a moment, the density is "cut", anyting below zero is ignored.

    tut3.gif
    This represents the basic ore vein distribution. Wherever you can see the red plane, the density map generated value below zero, therefore this ore will not spawn in this column. However, before the cut is done, densBonus is applied.

    tut4.gif
    This is the same map with +0.3 densBonus applied. You can see the red areas are much rarer, resulting in ore beeing much more common. This value (random+densBonus) is now multiplied by density, giving the final VeinDensity for the particular column.
    Generating heigh map is simpler, the height map just needs to be adjusted according to heightAvg and heightVar (note this is just a side view, for a single Z coordinate):
    tut5.gif
    This could be described by a simple formula height=heightAvg+(rand*heightVar).

    So now we have VeinHeight and VeinDensity for each column. Each column is then run through, and generated a ChanceMap for. It looks like this (Y is on the horizontal axis):
    tut6.gif
    The result of this function (0 to 1) is multiplied by VeinDensity for this column, resulting in a chance that the ore is spawned in this block (0 is no chace, 1 is 100% chance).
    You can see that blocks that are close to the VeinHeight have a high chance of ore spawning, while blocks that are further that thickness have zero chance. Then a "dice" is rolled for each block and compared with the resulting chance, to see whether this block will have the ore spawned in it or not. Note that the "dice" roll is completely random, independent of world seed, so each run of apply would result in different local layout.


    Changelog:
    Version 1.4.1:
    • Compatibility for MC 1.2.3
    • Minor fixes, permissions should work
    Version 1.3.10:
    • added debug mode ("debug: true" in config file)
    • BEWARE - permission now defaulted to OP (temporary solution)
    Version 1.3.9:
    • application now runs in sync, should take care of concurrent modification exceptions
    Version 1.3.8:
    • fixed some issues, now works quite fine
    Version 1.3.7:
    • Now supports ANY id, even non-existing ones. Useful for MCForge-added blocks (e.g. Industrialcraft)
    Version 1.3.6:
    • fixed thread usage in apply command
    Version 1.3.5:
    • new HeightRel option
    Version 1.3.4:
    • Two new config options - mode and exclude_biomes
    • Fixed bug with using same noise generator for height and density
    • Fixed apply command
    Version 1.3.3:
    • Fixed crash for config files that don't have "default" world setting
    Version 1.3.2:
    • The "Apply" command is now executed in separate thread, and worlds can be referenced by their index (failed command will display list of worlds and indexes)
    • Huge changes in default config file, hopefully for the best
    Version 1.3.1:
    • The "Apply" command now works much better and safer
    Version 1.3:
    • Added exclusive and biomes parameters to config
    • It is now possible to populate already existing worlds
    Version 1.2:
    • Added heightLenght and densLength parameters to conf file
    Version 1.1:
    • Fixed bugs, switched to in-built Noise generators for better results
    Version 1.0:
    • First release
     
  2. Offline

    m0rt

    Strange, I tested this very thing (started world without MV, then applied and moved away), and it worked. Are you using the latest version? Also, is the vein's "mode" set to "replace" (or better, not set at all)?
     
  3. Offline

    Zidkon

    Yes, I'm using the latest version I could get there up.

    The thing is, it works for certain values, but with the density bonus setted to -1 it doesn't work, when I generate new chunks, if you want I make you a video and you check.
     
  4. Offline

    Killerrabbit

  5. Offline

    Zidkon

    Recommended Version of CraftBukkit is now released! CB 1597.

    Please test plugin against this version and compile it for new Bukkit version too :D I wanna see if I don't get any other "weird" errors when I apply mineral veins ^^
     
  6. Offline

    m0rt

    Killerrabit: It seems that the error appears inside some CB functions, not the MineralVein itself. What versions do you use? Also, do you have custom config? (I could image an incorrect block ID causing this)
    Zidkon: current version works fine for 1.0.1 R2
     
  7. Offline

    Zidkon

    1 Question, is the plugin running at all the Processing speed it can when the /Mineralvein apply command is on course? Or it uses ticks of the world to run?
     
  8. Offline

    Twisted420

    This plugin causes my server to crash when using /mineralvein apply, this is the error that shows up aswell
    2011-12-14 03:07:54 [SEVERE] java.util.ConcurrentModificationException
    2011-12-14 03:07:54 [SEVERE] at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
    2011-12-14 03:07:54 [SEVERE] at java.util.AbstractList$Itr.next(AbstractList.java:343)
    2011-12-14 03:07:54 [SEVERE] at net.minecraft.server.World.tickEntities(World.java:1165)
    2011-12-14 03:07:54 [SEVERE] at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:518)
    2011-12-14 03:07:54 [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:425)
    2011-12-14 03:07:54 [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:457)
    2011-12-14 03:07:54 [SEVERE] Unexpected exception
    java.util.ConcurrentModificationException
    at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
    at java.util.AbstractList$Itr.next(AbstractList.java:343)
    at net.minecraft.server.World.tickEntities(World.java:1165)
    at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:518)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:425)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:457)
     
  9. Offline

    Zidkon


    I got this error too, but map doesn't get corrupted and seems that after all the application finishes it worked out, you just have to restart the server when it finishes.
     
  10. Offline

    m0rt

    It runs in separate thread, so it just slows down the main process. However I advise to kick all players and let it run on empty server.
    The error you posted, along with any simillar errors, are caused by server, I don't know about anything I am doing wrong. It seems that sometimes it can't handle fast chunk loading/uloading.
     
  11. Offline

    Twisted420

    @Zidkon :\ ill just not let it do the older chunks not much of the map was gened b4 i put it in i have noticed even in the new chunks though it looks like old ore placement. maybe because it needs to update? i know there where terrian changes in 1.0.0
     
  12. Offline

    Killerrabbit

    I actually added a custom ID to the config yes:
    Code:
        -
            block: 1098
            seed: 63834843
            density: 0.6
            thickness: 4
            densityBonus: -0.6
            heightAvg: 10
            heightVar: 10
            heightLength: 10
            densLength: 40
            exclusive: false
    
    From a custom block that's included in the Spouts itemMap.txt, and works to get ingame as well - I assume this is causing the problem then?

    p.s. World height increase will come today for spout/bukkit, will this be able to run with increased map heights?
     
  13. Offline

    Zidkon

    So you mean the applying is actually changing the map? I mean not only the ores :/?
     
  14. Offline

    Twisted420

    no, i ment there was new terrain gerantion implemented in the full 1.0 minecraft, but i dont think this plugin is working as it say, ive gone to brand new chunks (teleported to cords i knew wherent generated) and the ore placement was like default, even though i have this plugin in.
     
  15. Offline

    m0rt

    @Killerrabbit: So far I know block ID's go to 256, so 1098 is definetelly wrong (unless Spout changes max. block ID, which is unlikely). Also, judging from the filename itemMap.txt, it somehow adds new items, not blocks.
    MV will not run on increased map heights, currently it's hardcoded to go from 0 to 127. I think there is a function that returns the world's height, but I am not sure whether Spouts uses it, or if it needs another function. If it did, a fix would be very simple.

    @Terrain change: It should not affect MV at all, as it runs after any terrain generation.

    @Twisted420: How did you check the ore placement? Did you use some X-ray? (My guess: some X-ray could use seed to find out where the ores are, instead of their real position (to prevent anti-xray), then they would display default placement, while in fact it was changed. I am not sure if there is such a program, though)
     

  16. where ?​

     
  17. Offline

    Killerrabbit

    Will take a bit longer after all with the world height, dev ran into some problem.

    Spout does indeed support custom blocks, and have a own auto-generated item list file for them, thus the "1098" ID blocks - custom items and blocks has been in spout since MC 1.8 if I remember right.

    Would be nice if you could include the spout support so we can generate ore veins based on our own custom ID specs! And the world height will soon be unlocked completely, so better prepare in advance and don't hard code the height to 0-127



    Thanks in advance :)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 19, 2016
  18. Offline

    Zidkon

    Don't know how much is it working but I'm getting this bug and I'm afraid it corrupts my map.

    Code:
    2011-12-19 00:59:00 [SEVERE] java.util.ConcurrentModificationException
    2011-12-19 00:59:00 [SEVERE]     at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
    2011-12-19 00:59:00 [SEVERE]     at java.util.AbstractList$Itr.next(Unknown Source)
    2011-12-19 00:59:00 [SEVERE]     at java.util.AbstractCollection.removeAll(Unknown Source)
    2011-12-19 00:59:00 [SEVERE]     at net.minecraft.server.World.tickEntities(World.java:1109)
    2011-12-19 00:59:00 [SEVERE]     at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:518)
    2011-12-19 00:59:00 [SEVERE]     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:425)
    2011-12-19 00:59:00 [SEVERE]     at net.minecraft.server.ThreadServerApplication.run(SourceFile:457)
    2011-12-19 00:59:00 [SEVERE] Unexpected exception
    java.util.ConcurrentModificationException
        at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
        at java.util.AbstractList$Itr.next(Unknown Source)
        at java.util.AbstractCollection.removeAll(Unknown Source)
        at net.minecraft.server.World.tickEntities(World.java:1109)
        at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:518)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:425)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:457)
    2011-12-19 01:01:29 [SEVERE] Exception in thread "Thread-79"
    2011-12-19 01:01:29 [SEVERE] java.lang.OutOfMemoryError: Java heap space
    2011-12-19 01:01:29 [SEVERE]     at net.minecraft.server.NBTTagByteArray.load(SourceFile:24)
    2011-12-19 01:01:29 [SEVERE]     at net.minecraft.server.NBTBase.b(SourceFile:95)
    2011-12-19 01:01:29 [SEVERE]     at net.minecraft.server.NBTTagCompound.load(SourceFile:27)
    2011-12-19 01:01:29 [SEVERE]     at net.minecraft.server.NBTBase.b(SourceFile:95)
    2011-12-19 01:01:29 [SEVERE]     at net.minecraft.server.NBTTagCompound.load(SourceFile:27)
    2011-12-19 01:01:29 [SEVERE]     at net.minecraft.server.NBTBase.b(SourceFile:95)
    2011-12-19 01:01:29 [SEVERE]     at net.minecraft.server.NBTCompressedStreamTools.a(SourceFile:75)
    2011-12-19 01:01:29 [SEVERE]     at net.minecraft.server.ChunkRegionLoader.a(SourceFile:52)
    2011-12-19 01:01:29 [SEVERE]     at net.minecraft.server.ChunkProviderServer.loadChunk(ChunkProviderServer.java:124)
    2011-12-19 01:01:29 [SEVERE]     at org.bukkit.craftbukkit.CraftWorld.loadChunk(CraftWorld.java:246)
    2011-12-19 01:01:29 [SEVERE]     at mort.mineralvein.MineralVein.applyChunkSimple(MineralVein.java:145)
    2011-12-19 01:01:29 [SEVERE]     at mort.mineralvein.MineralVein$WorldApplier.run(MineralVein.java:184)
    2011-12-19 01:01:29 [SEVERE]     at org.bukkit.craftbukkit.scheduler.CraftWorker.run(CraftWorker.java:34)
    2011-12-19 01:01:29 [SEVERE]     at java.lang.Thread.run(Unknown Source)
    2011-12-19 01:02:12 [INFO] Read timed out
     
  19. Offline

    WhosDaMan

    I want to implement this, but then it's sort of like cheater heaven for x-rayers D:
     
  20. Offline

    noahwhygodwhy

    looks good, but what really bought me is that there is a way to convert old worlds to the new viens
    DIAMONDS AT 128!
     
  21. Offline

    Zidkon

    So apply an anti-xray plugin :S
     
  22. Offline

    tademan123

    I need help, I want to make an ALL desert server. And grass often spawns in some places, and then cobblestone replaced with the other mothy cobblestone in mob spawners places. (sorry for my bad english), and wood spawns in the ground mostly around the top of the land, and in the desert mountains. But not lots of it. And lots of caves around which rarely cobblestone iron diamonds gold coal etc are in them, and maybe often trees on the rare grass you find (super rare) could anyone put a script up together for me in the veins.txt or whatever please? thanks. i don't understand how it works :c
     
  23. Offline

    m0rt

    tademan123: Then this isn't the right plugin for you. Mineral vein modifies the world with functions optimised for single block modification, what you are talking here are thousands of blocks beeing replaced. I tried simple air placement in all-stone world, it took half an hour and wasn't done. So better look for some terrain generation plugin with adjustable config (Don't know if it is still developed, but phoenix terrain generator was quite good), they are optimised for large-scale terrain changes.
     
  24. Offline

    packetshepherd

    So is there an optimized way to convert a pre-gen'd world using MineralVein? I have a 7500m radius world (~690,000 chunks) and I have plenty of additional servers and CPUs/GPUs to throw at it.

    Also, a progress meter or report of the conversion when using the "apply" function would be very much appreciated!
     
  25. Offline

    Kane

    @m0rt This plugin looks amazing. I hear that it works with IndustrialCraft/RedPower. I'm a bit worried though about setting the proper values and such or even the proper densities. As much as I would love to use this I'm actually worried I might make my Industrial Server very unlegit.

    Not sure if you have any suggestions for this but it would be wonderful.
     
  26. Offline

    m0rt

    @packetshepherd: There is currently only one method of applying mineral vein, however if you think your server is strong enough, you could run two applications at once, each having half of the world (however it runs quite fast, it should do one X coordinate (chunk) per tick, which equals 320 block strip per second). Progress report could be done, but it would be highly innacurate.

    @Kane: IC2/RP2 works fine with mineralvein (aside from their regular bukkit-port bugs), I am using it on my own server.But since I don't know the original density, I can't really tell how high you should set the values, I used the default iron for copper & tin, increasing density a little (which approximates the original setting). You should also make diamond much rarer. But in general, don't worry about rarity that much, once you have mining drill, it won't matter anymore :). Btw. the correct id's are 247, 248,249(Uranium, copper, tin), and 140 (140-0 ruby, 140-1 emerald, 140-2 sapphire, 140-3 silver, 140-6 tungsten, 140-7 nikolite).
     
    Kane likes this.
  27. Offline

    gummby8

    Using the apply command just crashed the server. If I specified any sort of coordinates or chunk range, it said it was complete, but nothing changed

    When I tested this out on a small server with 0 plugins it would create the veins as per the config, but any newly generated terrain would use the standard ore generation.

    I was looking for a pluggin that would scrub diamond ore from my map permanantly, and in new generated terrain. but apparently it isnt this pluggin just yet
     
  28. Offline

    josip1

    Code:
    23:57:21 [SEVERE]       at java.util.zip.DeflaterOutputStream.close(Unknown Source)
    23:57:21 [SEVERE]       at java.io.FilterOutputStream.close(Unknown Source)
    23:57:21 [SEVERE]       at net.minecraft.server.ChunkRegionLoader.a(SourceFile:133)
    23:57:21 [SEVERE]       at net.minecraft.server.ChunkRegionLoader.c(SourceFile:121)
    23:57:21 [SEVERE]       at net.minecraft.server.FileIOThread.b(SourceFile:29)
    23:57:21 [SEVERE]       at net.minecraft.server.FileIOThread.run(SourceFile:22)
    23:57:21 [SEVERE]       at java.lang.Thread.run(Unknown Source)
    
    I kept getting errors...this was the most common...trying to replace ore within 3500.

    I mainly just want to lower the amount of diamonds around the place by half of default gen

    It also corrupted my world had to restore it
     
  29. Offline

    m0rt

    gummyby8: If you used density 0 or densBonus -1 it won't work on newly generated chunks. Don't know why, it does not make sense. Try using heighAvg 200 for deleting ore from map.
    josip1: this is a fraction of error report, but is seems as some kind of disk error. What config did you use?
     
  30. Offline

    sithrebel15

    @m0rt hey can you post the config u used for rp and ic2?
     
  31. Offline

    m0rt

    Here it is, but I don't quarantee balancedness.
    Code (open)

    Code:
    default:
        -
            block: GOLD_ORE
            # block, that represents this ore. Use name, block ID, or XX-YY for blockID and data
            seed: 35434
            # used for random generator, pick random different number for each vein
            density: 0.3
            # ore chance multiplicator, default 1
            thickness: 4
            # maximal vertical span from vein center, default 5
            densityBonus: -0.5
            # density modification. Random number is between -1 and 1, this is applied and result is ore spawn chance (negative is zero chance), default 0
            # e.g. 0.0 will result in 50% of columns covered in ore, -0.5 25%, -0.9 5%, -1 0%
            heightAvg: 20
            # average height this vein spawn at, default 32
            heightVar: 20
            # maximal random difference from heightAvg, default 20
            heightRel: false
            # if true, result of heightAvg and heightVar calculation will be instead
            #treated as "relative" to maxHeight in that area (you should use floats for heightAvg/Car)
            #dafaults to false
            heightLength: 80
            # distance in blocks between height slope change, default 80
            densLength: 80
            # distance in blocks between density slope change, dafult 80
            exclusive: false
            # if this ore is present, it will block out any other ores (in column), default false;
            #biomes: [forest,swamp]
            # this vein will manifest in given biomes. default: all biomes
            # biomes are (not all used by world gen): RAINFOREST, SWAMPLAND, SEASONAL_FOREST, FOREST, SAVANNA, SHRUBLAND, TAIGA, DESERT, PLAINS, ICE_DESERT, TUNDRA, HELL, SKY, OCEAN, RIVER, EXTREME_HILLS;;
            mode: replace
            # "add" will cause all already placed ore to remain, and this vein only to add new ores.
            #any other value will cause the old ore to be removed
            #exclude_biomes: [swampland]
            #same as biomes setting, this time sets the biomes that are specifically excluded for this vein. Takes precedence over "biomes"
    
        -
            block: IRON_ORE
            seed: 67436874
            density: 0.4
            thickness: 5
            densityBonus: -0.4
            heightAvg: 32
            heightVar: 30
            heightLength: 80
            densLength: 80
            exclusive: false
        -
            block: REDSTONE_ORE
            seed: 4325483
            density: 0.8
            thickness: 3
            densityBonus: -0.4
            heightAvg: 10
            heightVar: 10
            heightLength: 10
            densLength: 30
            exclusive: false
        -
            block: DIAMOND_ORE
            seed: 98746835
            density: 0.5
            thickness: 3
            densityBonus: -0.6
            heightAvg: 10
            heightVar: 6
            heightLength: 10
            densLength: 40
            exclusive: false
        -
            block: LAPIS_ORE
            seed: 63834343
            density: 0.6
            thickness: 4
            densityBonus: -0.5
            heightAvg: 20
            heightVar: 10
            heightLength: 10
            densLength: 40
            exclusive: false
        -
            block: COAL_ORE
            seed: 543543
            density: 0.3
            thickness: 8
            densityBonus: -0.1
            heightAvg: 40
            heightVar: 20
            heightLength: 80
            densLength: 80
            exclusive: false
        -
            block: 140
            seed: 4325483
            density: 0.5
            thickness: 3
            densityBonus: -0.6
            heightAvg: 10
            heightVar: 10
            heightLength: 10
            densLength: 40
            exclusive: false
        -
            block: 140-1
            seed: 53243
            density: 0.5
            thickness: 3
            densityBonus: -0.6
            heightAvg: 10
            heightVar: 6
            heightLength: 10
            densLength: 40
            exclusive: false
        -
            block: 140-2
            seed: 53834343
            density: 0.5
            thickness: 3
            densityBonus: -0.6
            heightAvg: 10
            heightVar: 6
            heightLength: 10
            densLength: 40
            exclusive: false
        -
            block: 140-3
            seed: 8334634
            density: 0.8
            thickness: 3
            densityBonus: -0.4
            heightAvg: 10
            heightVar: 6
            heightLength: 10
            densLength: 40
            exclusive: false
        -
            block: 140-7
            seed: 9343443
            density: 0.9
            thickness: 3
            densityBonus: -0.3
            heightAvg: 20
            heightVar: 20
            heightLength: 10
            densLength: 40
            exclusive: false
        -
            block: 247
            seed: 53243
            density: 0.5
            thickness: 3
            densityBonus: -0.6
            heightAvg: 10
            heightVar: 6
            heightLength: 10
            densLength: 40
            exclusive: false
        -
            block: 248
            seed: 34343346334
            density: 0.7
            thickness: 5
            densityBonus: -0.1
            heightAvg: 32
            heightVar: 30
            heightLength: 80
            densLength: 80
            densLength: 40
            exclusive: false
        -
            block: 249
            seed: 434534633
            density: 0.7
            thickness: 5
            densityBonus: -0.1
            heightAvg: 32
            heightVar: 30
            heightLength: 80
            densLength: 80
            exclusive: false
    
     

Share This Page