Thứ Hai, 27 tháng 10, 2014

Sedimentology Plugin 1.7.2

a bukkit plugin that simulates erosion and sedimentation.


Description


This plugin attempts to create processes that are involved in the transport and deposition of sediments:



  • water picking up material

  • transportation down slopes

  • weather influence

  • material falling down cliffs

  • material decaying/degrading into smaller grained materials

  • creating thicker piles of snow, and thawing snow


The plugin doesn’t properly recreate real geologic processes, instead it mimics the bahavior of erosion and deposition by rolling a dice for most of the factors involved, and if the roll was succesful, proceed to the next step.


Material hardness and resistance are taken into account – some materials are easier displaced than others. Some materials degrade easier than others. Some materials (sand) have a different angle of repose.


This plugin isn’t meant to enhance game play per se, it will operate slowly over time and vegetation will prevent most of it’s effects from taking a toll on the landscape in most cases, so it will take a long time in default settings from actually doing anything noticeable. Because dirt naturally gets a grass cover in Minecraft it will be unlikely that this plugin does significant damage to your world. Of course, planting stuff is still advisable if you want to reduce the effects of the plugin further.


From version 8 on and higher, this plugin will create thicker piles of snow, potentially up to several blocks high. Snow accumulation and melt are based on various factors and will create thick snow covers on mountain tops, and thin covers near snow edges or lower down. Daylight and sunshine cause snow melt, and the plugin can even remove all snow cover entirely over time if the parameters are right.



Concepts of Sedimentology





This page attempts to explain and describe the concepts used in this plugin. It is by no means complete or exact. The plugin code itself may change as parameters and factors are tweaked and playing with the knobs may be fun for people.


Displacement vs. Degradation


The two major changes that blocks can undergo in this plugin are displacement and degradation. This isn’t identical to what sedimentology teaches us where generally we have 3 parts involved: degradation, transport and deposition. If we wanted to truly implement transportation in minecraft, we would have to have transport rivers contain sediment so it could actually be transported somewhere far, as happens in real life with rivers. However, in MInecraft, rivers are not made with flowing water. And even if we’d figure out that a river ends up in an ocean, we may just have to walk hundreds of chunks in order to determine where the suspended materials should be deposited.


Thus, implementing transportation of sediments in a realistic way will be too expensive and complex. It may be interesting as a research project, but I’m writing this plugin in order to get Minecraft worlds look a bit more realistic, not be realistic. Blocks are still going to be cubes, you know.


So, I chose to implement displacement and degradation. Blocks will not get carried away over large distances, instead, we’re looking at moving blocks very small distances only.


Block-neutral


The plugin is entirely block neutral: The total amount of blocks stays the same. This is important since we do not want to end up with an empty world over time, but we also do not want to create new blocks out of thin air.


Angle of repose


This geology term describes the angle of the terrain in which material will no longer easily move. The angle of repose for sand is low, for dirt may be higher, and hard rock can stack vertical for a long time. Underwater, the angle of repose changes and becomes even smaller, our earth’s seafloor bottoms are so incredibly flat you’d have a hard time making out that you are on a continental slope.


The plugin uses this AoR to determine if blocks can be moved downward, and will make some blocks move further than others. This wil result in the long run that sandy slopes are going to be very gently, but dirt slopes remain steep, and makes for a nice natural landscape. It also causes rocky outcroppings to become the determining factor as to how mountains shape, and you’ll end up seeing that the shape of the stone blocks under the dirt cover is dominant in forming the final shapes of hills and mountains, until they themselves degrade and start to move downhill.


Degradation


Rock degrades into smaller rocks, then into gravel, then into sand, silt, clay. Each step is easier, as the surface area of the material is larger and the effects of weathering will break down particles in to smaller particles faster and faster, until the size is so small that there isn’t much to break down anyway and the material is mostly at rest anyway. In this plugin, we assign a hardness factor to the materials which determines the rate at which they decay into a material of smaller grain size. For stone, it’s obviously a very low rate. But for gravel however, it’s fairly easy to degrade into dirt. The rates chosen in this plugin somewhat are tuned to keep the minecraft landscape the same – you won’t see the hills get covered in sand or clay, but anywhere underwater you will find sand deposits created, and clay will eventually become the dominant ocean floor cover material.


Water and Vegetation


The presence of water accelerates all aspects of Sedimentology. Rain increases both degradation and displacement, flowing water increases it further and stationary water also increases it, but not as much. These factors can make a big difference, and correspond to why in some areas the landscape is perfectly safe in dry periods, but a rain cloud can create massive landslides.


Vegetation has the opposite effect on Sedimentology: it slows down displacement, because plant and tree roots hold on to the material and create a mat of organic material that stop the soil from leaching out. Tree cover also provides a direct shield from the effects of rain water. This effect can be used beneficially to guard your landscape against erosion, up to a certain point. If your slopes are not too steep, planting grass or flowers on slopes will most likely halt or lower the chance of blocks falling down. But if your slopes are too steep, eventually material will still move down and crush vegetation on the way down the hill.


A waterfall is one of the more destructive things in nature. It will carve out deep holes in bedrock easily, and if left unattended, can destroy mountain slopes. At the bottom, massive deposition areas will form that flow blocks downhill as long as it can. While in nature these streams meander around, in minecraft this results in massive fan-like waterfalls that grow and grow wider. It is somewhat less aesthetic, but the effects on the landscape are actually quite similar to what happens in real life, except it all happens under a massive layer of water.


At great waterdepths, erosion still happens and the angle of repose is still low, but there are not as many forces working on sediments as out in the open, so the plugin implements an exponential declining chance in deep ocean waters. This has the effect that a sediment buffer zone is created around coastlines which somewhat delays erosion, otherwise your coastlines would degrate away really fast. In real life, sea water doesn’t only take away sand, it also creates beaches and dunes at the same time, so this chance factor somewhat makes coastlines look a bit more realistic.


Under the hood


Erosion works exactly the same no matter where you are, and this plugin attempts to do exactly the same. Since we can’t inspect every block in the world, we need to program a selection mechanism that is ultimately fair and does not disproportionally degrade some blocks more than others.


Ultimately, erosion really only does something in locations near the surface. For this plugin, we’ve simplified this to make the selection mechanism only consider the topmost block in each (x, z) location. This means that a river running in a tunnel doesn’t do any erosion, but it eventually will erode the whole tunnel away if it is above sealevel.


The selection mechanism considers blocks only in chunks that are loaded, and randomly finds a block in one of the loaded chunks. That means that areas that are not visited often will not be eroding, and heavily visited areas will see high levels of erosion.


Displacement is done by finding a suitable dropping point. The plugin implements a grid walking algorithm that attempts to find the closest spot to drop blocks down to, and will favor shorter horizontal drop distances over further ones, but will still go for the lowest drop position. This has the effect that on steep slopes, blocks will likely drop 2 or more blocks and not 1 at a time, so effectively erosion does more work there.




Commands


/sed is equivalent to /sedimentology.


/sedimentology stats


Display statistics from the plugin. The plugin keeps internal counters for modifications made and attempts, and this command allows you to display those statistics.


/sedimentology blocks <integer>


Modify the number of blocks per cycle that the plugin will attempt to consider for modification. Note that due to the various factors involved, this number will almost never equal the number of modifications made per cycle – but increasing it will accelerate the erosion process.


/sedimentology protect <boolean>


This option was removed in Sedimentology-6. Instead, the flag can be specified from the config.yml file instead.


/sedimentology list


List the worlds that will get the effects of this plugin


/sedimentology enable <world>


/sedimentology disable <world>


Enable or disable the effects of this plugin for a particular world.


/sedimentology help


Displays a help message describing the commands available.


All these plugins require the sedimentology permission.


config.yml


Sedimentology uses the standard config.yml method to store settings. The following fields are known by the plugin, and may be overwritten if you change settings in the game (default settings shown here):




blocks: 10ticks: 1protect: trueworlds:- world




  • blocks: modifies the amount of attempts per world that the plugin makes each interval to modify the world. The higher the number, the more blocks will move or decay. If 0, the plugin is effectively disabled. High numbers can cause lag and a high server load. Numbers above 500 are not advised for deployment even with high end servers.

  • ticks: modifies the interval, in minecraft ticks, that the plugin will run as. There are 20 minecraft ticks in a second. Higher values mean more time in between plugin doing things.

  • protect: Enable Factions or Towny protection, if present. If Factions or Towny are not present, has no effect – disabling all protection.

  • worlds: A list containing worlds that should be modified by the plugin. Worlds should be specified with a leading hyphen, one per line. Use the command if unsure about the format instead.


Factions / Towny


Both Factions and Towny are optional and this plugin will work even if they are not installed. If they are present however, the plugin will stop making modifications to claimed blocks. This can be configured disabled with the /sedimentology protect command.


While I tested Factions support thoroughly, I can’t currently test Towny integration, so feedback appreciated if you can test this for me.


Bugs / Code


For bugs, tips, donations please feel free to contact me: Auke Kok – auke@foo-projects.org


The project code is hosted on my github page: https:github.com/sofar/Sedimentology


Sedimentology Plugin 1.7.2 Download Links


http://www.dl2.9minecraft.net/index.php?act=dl&id=1388195529


http://www.dl5.9minecraft.net/index.php?act=dl&id=1388221015

Không có nhận xét nào:

Đăng nhận xét