Pyroclasm

Pyroclasm

5.3k Downloads

Status

THIS MOD IS CURRENTLY UNSUPPORTED

A huge thank you to everyone who tested and showed interest in this mod.  As I noted at the beginning, there was never going to be a supported release for 1.12 and I'm not planning to make any additional updates or fixes in the 1.12 version.

Pyroclasm will make a return - hopefully in an actually playable state - for Minecraft 1.14 or maybe 1.15.  It will be on the Fabric tool chain. I'm currently working on porting the various libraries needed to make that happen.

Overview

Pyroclasm introduces dynamic volcanos that erupt from the ground and slowly build up over time.  Volcanos are environmental hazards: they eject destructive lava bombs and volcanic lava can flow for very long distances, filling caves, lakes, ravines, or even oceans.  As lava flows it forms a smooth surface and eventually cools and hardens into basalt.

Bonus: If you would like more detail in your basalt and lava textures, download the Pyroclasm HD texture pack.

Quick Start

If you want to see a volcano working as quickly as possible, follow these steps:

  1. Install Minecraft 1.12.2 and the latest recommended build of Minecraft Forge. Most 1.12 mod packs should also work as a starting point.  (The video and screenshots here were captured using the FTB Continuum pack with Pyroclasm added.)
  2. Download the Pyroclasm mod and move it to the mods folder
  3. Download the Exotic Matter library mod and move it to the mods folder
  4. Download the Acuity Rendering API mod and move it to the mods folder
  5. Start a new world in creative mode
  6. Use the /volcano mark or /volcano status command to find nearby volcanos
  7. When you are near a volcano site you like, use the /volcano wake command to activate it

It will take a while for the volcano bore to break through the ground but you should hear rumbling right away and see a mound forming shortly after that.

Your volcano may stop working again after a few Minecraft days.  To prevent this, go to Mod Options / Pyroclasm (click config) / Volcano Settings and change Min Active Ticks to the maximum value.  If your volcano does stop, you can always restart it with /volcano wake. 

Videos and Albums

Significant Known Issues

This is an alpha release and bugs should be expected.

  • Ice, Water and some other transparent blocks don't render properly from certain angles.  (Acuity bug)

  • WORKAROUND: VanillaFix is incompatible if VanillaFix crash fixes are enabled.  The game will not start.  To workaround, disable Acuity, Exotic-Matter and Pyroclasm. Then start the game and disable crash fixes in the VanillaFix config. Exit the game, re-enable Acuity, Exotic-Matter and Pyroclasm and restart the game.

Pyroclasm consumes more RAM than most mods and you should run it with at least 6GB available to Minecraft.  Memory usage is efficient but there is a lot going on and some of the fiddly bits have to be kept in memory for performance. Running client and server on separate machines may help somewhat because then the dynamic models and fluid simulator don't have to share. 

Please check the issue tracker before posting a new bug report.  All bug reports should be submitted via the issue tracker.

Finding a Volcano

Volcano locations depend on your world seed and cannot be removed, added or changed. (A future version will give admins a way to permanently disable specific locations.) Locations are random but evenly distributed so that volcanos are at least 40 chunks apart. (Forty chunks is 640 blocks.)

Currently, volcanos are only present in the Overworld.


 Crude Seismometer

Crude Seismometer

Survival mode players can get a general idea of volcano locations by crafting a Crude Seismometer with early-game materials. Right-clicking with the Crude Seismometer in hand will tell you the approximate distance to the nearest volcano.  It is highly recommend you use this item to avoid building your base near a potential volcano.

Creative mode players and server administrators can simply use the /volcano mark command to render nearby volcanos as orange columns.  If you move to a different location, repeating the command will refresh the columns.  The location markers are only visible to the player typing the command and can be removed with the /volcano unmark command.

The /volcano status command can also help locate volcanos - it lists X & Z coordinates for all volcanoes in a 64-chunk radius.

Volcano Activation

Your world will have many volcano sites but only one or a few will normally become active.

For the first ten Minecraft days, all volcanos will remain dormant.  You can make this ”grace period” shorter or longer in the mod configuration.

Once the grace period has expired, the first eruption will occur 1 to 2.5 days later.  (Also configurable.)

When it is finally time for a volcano to become active, the mod chooses a volcano based on player activity.  The more time players have spent near a volcano, the more likely it is that volcano will become active.  This is why you don’t want your base too close to a volcano site!

IMPORTANT: volcanos do not have to be chunk loaded to activate.  Being away from your base offers no protection!

Creative players and server admins can also activate the nearest volcano at any time using the /volcano wake command.

Mound Building

When a volcano becomes active there will be a deep rumbling sound, audible from a long distance.  Then the volcano will start pushing blocks out of the bore, starting just above bedrock, and filling the bore with volcanic lava.  Minecraft lava is converted to obsidian and solid blocks in the way of the bore are moved to plug holes leading out of the bore area.

(The holes in the walls of the bore are plugged because otherwise the lava would flow into every ravine, cave, dungeon or mineshaft accessible from the bore until they were eventually full of basalt.  It would take a long time before you got to see a volcano!)

Once all the holes are plugged, blocks pushed out of the bore are teleported to the surface and start to form a mound.

 Mound building

Mound Building

Volcanic Lava

When the bore finally reaches the surface, volcanic lava will start to flow out of it.  In the default configuration, the volcano will emit 16 blocks of lava every real-world second.  

Volcanic lava up close

Volcanic Lava Up Close

Things to Know About Volcanic Lava

Volcanic lava is very different from normal Minecraft lava.  

  • It's not a Minecraft fluid - the mod will simply taunt you if use a bucket on it.
  • It can't be broken in Survival mode.
  • It will instantly destroy wood, glass and many other blocks on contact. (How blocks are affected is configurable.)
  • Trees in the path of flowing volcanic lava will fall.  This is not useful for harvesting wood because the logs will probably burn up as they fall into the lava.
  • It tries to flow down hill.  On a level surface it will spread randomly.
  • Volcanic lava accumulates and pools when it flows into a low area - until the area is full. 
  • Lava moves fast.  It may seem slow because volcanos emit a steady flow that spreads over a large area.  But if a barrier containing lava is broken, the lava will flow out immediately!  Mining near active lava flows is extremely hazardous.
  • Once lava flows onto a surface, some of it always sticks and eventually cools.  How much sticks depends on the steepness of the surface.

IMPORTANT: Just like real lava, volcanic lava under pressure can flow UP!  Being above lava doesn't protect you if the lava is coming in from a height that is above you. 

Volcanic lava can flow for very long distances and does not require chunk loading to do so.  Given time, it will completely fill nearby ravines or small oceans.  Do not assume you or your base are safe unless you are well above low lying areas that lava could flow into.

Long lava flow

 Long Distance Lava Flows

Basalt

When lava hasn't flowed in a while it turns into Hot Basalt.  Hot Basalt keeps the same shape as the lava that formed it, and eventually cools completely.  If you look closely at fully cooled basalt, you may notice subtle cracks matching the  cracks that occurred during the cooling process.  (Cooling times for lava and basalt are both configurable.)

Cooling basalt

Hot Basalt Cooling Progression 

Basalt is currently only useful as building material.  If you break surface blocks (Flowing Basalt) you'll get Basalt Rubble. How many pieces of rubble you get is based on the volume of the block broken and is not affected by the Fortune enchantment. Nine pieces of Basalt Rubble can be crafted into Basalt Cobblestone.

Breaking basalt blocks under the surface (Cut Basalt) yields Basalt Cobblestone.  Basalt Cobblestone can be smelted in a furnace to give Cut Basalt.

A Silk Touch pickaxe can mine Cut Basalt directly.  With Silk Touch, you can also mine Flowing Basalt without breaking it into rubble.  However, there are practically infinite possible combinations of Flowing Basalt shapes and textures, so your inventory will fill up very quickly and you will probably find it extraordinarily difficult to reassemble more than a few pieces.

Basalt that has cooled from lava will automatically reshape itself to form a smooth surface if more lava flows into the area or if lava flows away.  When you break a basalt block, nearby Flowing Basalt is "frozen" so that you can mine without unintentionally changing the terrain surface. But be advised: if volcanic lava later on flows within a few blocks, the heat may cause your basalt to "melt" and take on new shapes!

Basalt variants

 Cut Basalt, Basalt Cobblestone and Basalt Rubble (item)

Flowing Terrain

Minecraft wasn't designed to make curved surfaces easy.  Sometimes "curvy" blocks introduced by mods look different than they behave. Unfortunately, this breaks one of the core features of Minecraft that makes it such a compelling experience: the entire game world is sliced into blocks at regular 1-meter boundaries and every block can be mined and interacted with.

Flowing basalt and lava blocks behave like normal Minecraft blocks even though they are curved in myriad ways.  They always fit within a single block space and they always have collision boxes that match their visual shape.  You can walk on them, target them, mine them just like any other block.

Lava Bombs

When a volcano is actively flowing and it can see the sky it will occasionally launch lava bombs. When they land, the result is a blob of volcanic lava on the ground that cools and hardens as it normally would.

Lava bombs will destroy the same block as volcanic lava and also damage players and creatures unlucky enough to be in the path of the bomb.  

Lava Bombs will likely become even more destructive in future versions. 

Lava bombs

Lava bombs launching from a volcano bore at night

Volcano Cooling

The fluid simulation and block cooling logic in Pyroclasm is designed to handle many thousands of lava and hot basalt blocks. But eventually as lava accumulates it can become more than is good for your server.

To keep performance healthy, Pyroclasm periodically measures how much of each Minecraft server tick it used and how much processor time it used overall.  (The lava fluid simulator uses all available processors.)   It also counts the number of loaded chunks, lava blocks and cooling basalt blocks. If any measurement is above the configured limit, Pyroclasm will pause lava flow so that existing lava and basalt blocks can cool.

When enough lava and basalt blocks have cooled to bring performance back to normal levels, lava will begin flowing again.

Volcano Dormancy

By default, volcanos are configured to remain active for between 2.5 and 5 Minecraft days.   When a volcano has been active long enough it will become dormant for a configured period of time and then have a chance to become active again.

The default time isn't long enough for a volcano to get very big, but is kept small in this initial release so players who aren't familiar with the mod have some time to figure out what is going on before their base is engulfed in fiery death.  If you want a bigger volcano, faster, you'll need to change the configuration to make active periods longer and dormant periods shorter.  (The configuration can be changed in-game and no game restart is required.)

Unimplemented Features

This mod remains a work in progress.  Here are some features I'd like to add, time permitting.  

  • Better lava bomb sounds and sound configs - The lava bomb launch sound is too much like a gun.  Also, players need a way to reduce rumble and bomb volume independently of other sounds.

  • Smoke / Haze - Real volcanos make smoke! Ideally this feature will change visibility / light levels in some interesting way when you are near an active volcano.

  • Volcano Biome - A volcano alters the terrain dramatically and it should probably change the biome as a result

  • Explosions - Lava bombs and eruptions should cause interesting and destructive explosions.

  • Ash - Real volcanos often deposit large amounts of ash.  This feature will require multi-part terrain blocks which are possible but not yet implemented.

  • Water Compatibility - Flowing terrain blocks below or next to water don't render well.  This will wait for the "flooded block" feature introduced in Minecraft 1.13

  •  Multi-Dimension Support - Volcanos should be possible in dimensions other than the over world.

  • Volcano World Gen - In the real world most volcanos already have a large cinder cone.  The world gen for existing cones will require completely different code because currently the volcano shape emerges over time as lava cools and builds up.

It is unlikely most of these features will be implemented before Minecraft Forge for 1.13 becomes available. I also want to release some other mods I've been working on before adding more features to Pyroclasm. 

Support

This mod is in active development and is not feature-complete nor stable. The first stable, non-alpha release will be for 1.13. There will NEVER be a non-alpha build of this mod for 1.12 and support for 1.12 will cease as soon as 1.13 Forge becomes available.  By the time this mod is stable, 1.13 should be a viable option for pack makers.

The inherent complexity and extreme volume of block updates generated by this mod also make it difficult to ensure consistently good performance in every circumstance.  I've done the best I can so far, but some lag may be unavoidable. (Servers are probably fine, but client performance remains a challenge.) 

No warranty is provided, but useful bug reports are always welcome. Please use the issue tracker for all bug reports.

License

Code is licensed under the MIT License, which is reproduced below.

MIT License

Copyright (c) 2018

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Creative Commons License
Textures and sounds in this work are licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Pack Makers, Broadcasters and Community Support

You are welcome and encouraged to use this mod in mod packs and to produce streaming or recorded broadcasts that feature this mod. If you post a link in the comments I may promote your link on this page.

I do not have a Patreon or any other way to receive donations.  Comments about your experience with the mod are the only compensation I will accept.  Please send any donation you would have sent to me to a mod author or community contributor who needs it more than I do.