Volcano
Adds volcanoes that release lava, ash clouds, and debris


This Rust plugin lets you place fully interactive volcanoes on your map that erupt with fireballs, expanding lava fields, and destructive heat, making it perfect for events or end-wipe scenarios.

Features

  • Performance-friendly!
  • Shoots fireballs in random directions at varying speeds.
  • Spews lava that expands, destroying anything it touches.
  • Volcano generates intense heat, hurting nearby players.
  • Trees, ore nodes, bushes, and buildings are destroyed on contact with lava.
  • Burned trees leave behind dead logs and stumps.
  • Volcanoes transition through different stages, each with unique behavior.
  • Players are alerted before an eruption begins, giving them time to prepare.
  • Bonus loot crates can be thrown out during eruptions.
  • Resources like ores and collectibles spawn in the surrounding area.
  • Being within the lava zone will slowly drain player health.
  • Can be used as an end-wipe event.

FAQ

  1. Does the volcano impact server performance?
    Not at all! Each eruption is capped at 30 fireballs—for comparison, each napalm strafe from the patrol helicopter produces around 10.

  2. Are volcanoes automatically generated on the map?
    No, volcanoes don't spawn automatically. You'll need to create them manually. See the Quick Start section for setup instructions!

  3. Do I need to edit the map to add a volcano?
    Nope, you don't have to. The volcano can be placed anywhere, but shaping the landscape to resemble a volcano makes it look more natural.

Permissions

  • volcano.admin - Grants full access to all volcano commands, including creating, editing, removing, and erupting volcanoes.
  • volcano.immune - Prevents the player from taking damage from lava.

Commands

  • volcano create <alias> - Creates a new volcano with the specified alias.
  • volcano edit <alias> - Enters editing mode for the specified volcano, allowing you to modify its properties.
  • volcano remove - Deletes the currently selected volcano.
  • volcano done - Saves changes to the currently edited volcano and exits editing mode.
  • volcano set <property> <value>- Updates a property of the currently edited volcano. Available properties:
    • enabled <true/false> - Toggles whether the volcano is active.
    • alias <string> - Updates the alias of the volcano.
    • spittime <float> - Sets the interval (in seconds) between spits during eruption.
    • minspit <int> - Sets the minimum number of fireballs per spit.
    • maxspit <int> - Sets the maximum number of fireballs per spit.
    • minspeed <float> - Sets the minimum speed of fireballs.
    • maxspeed <float> - Sets the maximum speed of fireballs.
    • tosscrates <true/false> - Sets whether the volcano will toss bonus loot crates during an eruption.
    • cratelifetime <float> - Sets the lifetime (in seconds) for tossed crates.
    • tosschance <int> - Defines the chance (percentage) for bonus crates to be thrown during an eruption.
    • zoneopacity <int> - Adjusts the transparency of the lava zone (higher values make it more visible).
    • damage <float> - Sets the damage per second dealt to players standing in the lava field.
    • hurtplayers <true/false> - Toggles whether players take damage from lava.
    • temp <float> - Sets the temperature of the lava field, which can damage nearby players.
    • killbuildings <true/false> - Determines if lava destroys buildings on contact.
    • killresources <true/false> - Determines if lava destroys trees, bushes, and resource nodes on contact.
  • volcano lava <position> <initialRadius> <targetRadius>- Defines the area where the lava flows and spreads during an eruption.
    • <position> - The center of the lava field. Use here to use your current location.
    • <initialRadius> - The starting radius of the lava field.
    • <targetRadius> - The maximum radius the lava field will expand to.
  • volcano crater <position> <radius>- Defines the central eruption point of the volcano.
    • <position> - The center of the crater. Use here to use your current location.
    • <radius> - The radius of the crater.
  • volcano spoils add <prefabName> [minSpawn] [maxSpawn] [rarity]- Adds a prefab that can spawn around the volcano while it's dormant.
    • <prefabName> - The path to the prefab that will be spawned.
    • [minSpawn] (Optional) - The minimum number of instances of this prefab that will spawn.
    • [maxSpawn] (Optional) - The maximum number of instances of this prefab that will spawn.
    • [rarity] (Optional) - Determines how frequently this prefab appears (values: Common, Uncommon, Rare, VeryRare).
  • volcano draw - Visualizes all volcanoes on the map. Useful for locating and inspecting volcanoes.
  • volcano erupt <alias> - Immediately triggers the eruption for the specified volcano, overriding any pending stage transitions and starting the eruption stage instantly.
  • volcano stop <alias> - Stops an ongoing eruption and forces the volcano into its cooldown stage.

Quick Start

  1. Use volcano create <alias> to create a new volcano.
    Example: volcano create Fuji creates a volcano named 'Fuji'.

  2. Define the lava spread area at the base of the volcano using volcano lava <position> <initialRadius> <targetRadius>.
    Example: volcano lava here 5 70 sets the lava to start at your location with a 5 meter radius and expand up to 70 meters.

  3. Set the eruption point at the summit, positioned in the air above the vent, using volcano crater <position> <radius>.
    Example: volcano crater here 5 defines the eruption point at your location with a 5 meter radius.

  4. Finally, use volcano done to finish editing and apply changes.

  5. All other settings, like eruption timing and fireball count, can be adjusted in the data file.

Configuration

JSON:
{
  "Version": "1.0.0",
  "Rarity Weights": {
    "Common": 50,
    "Uncommon": 30,
    "Rare": 15,
    "VeryRare": 5
  }
}
  • Rarity Weights - Defines the spawn chances for different rarity categories in bonus loot and volcano spoils.

Stored Data

JSON:
{
  "Enabled": true,
  "Alias": "Fuji",
  "Dormant Stage Duration Seconds": 7200,
  "Eruption Stage Duration Seconds": 30,
  "Crater": {
    "Position": { "x": 100.0, "y": 200.0, "z": 300.0 },
    "Radius": 50.0
  },
  "Lava Field": {
    "Spew Lava": true,
    "Position": { "x": 120.0, "y": 200.0, "z": 320.0 },
    "Initial Radius": 5.0,
    "Target Radius": 100.0,
    "Temperature": 70.0,
    "Kill Resources On Touch": true,
    "Kill Buildings On Touch": false,
    "Hurt Players": true,
    "Damage Per Second": 10.0,
    "Zone Opacity": 1
  },
  "Eruption": {
    "Time Between Spits Seconds": 3.0,
    "Minimum Number Of Fire Balls Per Spit": 5,
    "Maximum Number Of Fire Balls Per Spit": 10,
    "Minimum Fire Ball Speed": 30.0,
    "Maximum Fire Ball Speed": 50.0
  },
  "Bonus Crate": {
    "Toss Bonus Crates": true,
    "Bonus Crate Toss Chance": 40,
    "Crate Lifetime Seconds": 300.0,
    "Use Custom Loot Table": true,
    "Minimum Loot Spawn Slots": 1,
    "Maximum Loot Spawn Slots": 3,
    "Custom Loot Table": [
      { "Short Name": "pistol.m92", "Minimum Amount": 1, "Maximum Amount": 1, "Spawn As Blueprint": false, "Rarity": "Uncommon" }
    ]
  },
  "Spoils": {
    "Time Between Spawns Seconds": 900.0,
    "Entities": [
      { "Prefab Name": "assets/bundled/prefabs/autospawn/resource/ores/stone-ore.prefab", "Minimum Number To Spawn": 3, "Maximum Number To Spawn": 6, "Rarity": "Common" }
    ]
  }
}
  • Enabled - Turns the volcano on or off.
  • Alias - A name or label for the volcano, like 'Fuji,' so it's easy to identify.
  • Dormant Stage Duration Seconds - How long the volcano stays quiet before moving to the next stage.
  • Eruption Stage Duration Seconds - How long the volcano erupts before it calms down.
  • Crater- The central part of the volcano where eruptions originate.
    • Position - The exact spot where fireballs are launched.
    • Radius - The size of the crater, determining how far fireballs spread outward.
  • Lava Field- The area affected by molten lava spreading from the volcano.
    • Spew Lava - If enabled, the lava is represented by a ring of fireballs that expands outward. If disabled, only the lava zone appears without fireballs. In both cases, lava destroys objects on contact.
    • Position - The starting point of the lava field.
    • Initial Radius - The size of the lava field when it first appears.
    • Target Radius - The maximum size the lava field can grow to.
    • Temperature - The heat level of the lava field, which can damage players nearby.
    • Kill Resources On Touch - If enabled, lava will destroy trees, bushes, ores, and other natural resources.
    • Kill Buildings On Touch - If enabled, lava will destroy player-built structures it comes into contact with.
    • Hurt Players - Determines if players take damage while inside the lava field.
    • Damage Per Second - The amount of damage dealt to players in the lava zone per second.
    • Zone Opacity - Adjusts the transparency of the lava zone's visualization (higher values make it more visible).
  • Eruption- Defines how the volcano behaves during an eruption.
    • Time Between Spits Seconds - How often the volcano spits fireballs during an eruption.
    • Minimum Number Of Fire Balls Per Spit - The least number of fireballs released in one eruption.
    • Maximum Number Of Fire Balls Per Spit - The most number of fireballs released in one eruption.
    • Minimum Fire Ball Speed - The slowest speed a fireball can travel.
    • Maximum Fire Ball Speed - The fastest speed a fireball can travel.
  • Bonus Crate- The loot containers ejected from the volcano during an eruption.
    • Toss Bonus Crates - If enabled, the volcano may throw bonus loot crates during an eruption.
    • Bonus Crate Toss Chance - The probability (in percentage) that a bonus crate will be tossed during an eruption.
    • Crate Lifetime Seconds - The duration (in seconds) before tossed crates despawn.
    • Use Custom Loot Table - If enabled, the plugin will use a custom loot table instead of default crate loot.
    • Minimum Loot Spawn Slots - The least number of loot slots filled in a crate.
    • Maximum Loot Spawn Slots - The most number of loot slots filled in a crate.
    • Custom Loot Table- A list of items that can be found in bonus crates.
      • Short Name - The short name of the item.
      • Minimum Amount - The least amount of this item that can appear in a crate.
      • Maximum Amount - The most amount of this item that can appear in a crate.
      • Spawn As Blueprint - Whether the item should be given as a blueprint instead of a usable item.
      • Rarity - Determines how rare an item is in the loot table.
  • Spoils- Defines the entities that spawn from the volcano over time during its dormant phase. As long as the volcano is inactive, resources such as ores, collectables, or other entities will gradually appear in the surrounding environment, making the area more rewarding to explore.
    • Time Between Spawns Seconds - The interval between each set of spawned spoils.
    • Entities- A list of entities (like ores, collectables, or other resources) that can spawn as part of the volcano's spoils.
      • Prefab Name - The internal prefab path of the entity being spawned.
      • Minimum Number To Spawn - The lowest number of this entity that can be created in one spawn cycle.
      • Maximum Number To Spawn - The highest number of this entity that can be created in one spawn cycle.
      • Rarity - Determines how frequently this entity appears (values: Common, Uncommon, Rare, VeryRare).

Localization

JSON:
{
  "NoPermission": "You do not have permission to use this command.",
  "UnknownCommand": "Unknown subcommand. Use 'create', 'edit', 'set', 'remove', 'done', 'lava', 'crater', or 'draw'.",
  "CreateUsage": "Usage: volcano create <alias>",
  "EditUsage": "Usage: volcano edit <alias>",
  "SetUsage": "Usage: volcano set <property> <value>",
  "LavaUsage": "Usage: volcano lava <position> <initialRadius> <targetRadius> [temperature] [killOnTouch]",
  "CraterUsage": "Usage: volcano crater <position> <radius>",
  "VolcanoAlreadyExists": "A volcano with the alias '{0}' already exists.",
  "VolcanoNotFound": "No volcano found with alias '{0}'.",
  "InvalidPosition": "Invalid position. Enter a valid position or type 'here'.",
  "InvalidInitialRadius": "Invalid initial radius. Please enter a positive number.",
  "InvalidTargetRadius": "Invalid target radius. Please enter a positive number greater than or equal to the initial radius.",
  "InvalidRadius": "Invalid radius. Please enter a positive number.",
  "InvalidEnabledValue": "Invalid value for enabled. Please use 'true' or 'false'.",
  "InvalidSpitInterval": "Invalid value for time between spits. Enter a valid number.",
  "InvalidMinFireballs": "Invalid value for minimum fireballs. Enter a valid number.",
  "InvalidMaxFireballs": "Invalid value for maximum fireballs. Enter a valid number.",
  "InvalidMinSpeed": "Invalid value for minimum fireball speed. Enter a valid number.",
  "InvalidMaxSpeed": "Invalid value for maximum fireball speed. Enter a valid number.",
  "VolcanoCreated": "Volcano '{0}' created. Use 'volcano lava' or 'volcano crater' to configure details.",
  "VolcanoEdited": "Editing volcano '{0}'. Use 'volcano set <property> <value>' to modify properties or 'volcano done' to save changes.",
  "VolcanoSetProperty": "Set property '{0}' to value '{1}'.",
  "VolcanoRemoved": "Volcano '{0}' has been removed.",
  "VolcanoDoneEditing": "Finished editing volcano '{0}'.",
  "VolcanoLavaUpdated": "Updated lava configuration for volcano '{0}'.",
  "VolcanoCraterUpdated": "Updated crater configuration for volcano '{0}'.",
  "VolcanoVisualizing": "Visualizing all volcanoes."
}

Developer API

C#:
void API_ForceErupt(string alias)
Instantly forces the specified volcano to begin its eruption stage, regardless of its current state.
  • alias - The volcano alias supplied when the volcano was created.
  • No value is returned.
C#:
string API_GetVolcanoStage(string alias)
Retrieves the current stage of the requested volcano.
  • alias - The volcano alias to query.
  • Returns a string equal to Dormant, Active, Eruption, or Cooldown when the alias is valid, or null if no volcano with that alias exists.

Developer Hooks

C#:
void OnVolcanoStageChanged(string alias, Volcano.VolcanoStage previousStage, Volcano.VolcanoStage newStage)
Called whenever a volcano changes from one stage to another (Dormant, Active, Eruption, Cooldown).
  • alias - The unique alias assigned to the volcano instance.
  • previousStage - The stage the volcano was in before the transition.
  • newStage - The stage the volcano has just entered.
This hook is informational; its return value is ignored.
  • Like
Reactions: (Manky)sieve
Author
VisEntities
License duration
Unlimited
Price
14.99 USD
First release
Last update

Ratings

5.00 star(s) 1 reviews

Also by VisEntities

Latest updates

  1. 1.6.0

    Fixed spoils sometimes spawning in mid-air. Added API_ForceErupt allowing other plugins to...
  2. 1.5.2

    Fixed issue where volcano eruptions spammed NullReferenceException in the console because...
  3. 1.5.1

    Fixed an issue where players could continue taking volcano heat damage after dying or teleporting.

Latest reviews

Absolute Game-Changer!
The Volcano Plugin is pure chaos and destruction, exactly what Rust needs! Fully customizable eruptions, lava spread, and dynamic events make it perfect for survival, RP, or end-wipe madness. VisEntities delivers again with another top-tier plugin clean, optimized, and game-changing. If you want cinematic disaster moments on your server, this is a must-have! 🚀🔥🌋
Back
Top
Chat commands start with a /, while console commands can be entered directly in the F1 console or server console. Use find <keyword> in console to search for available commands related to the plugin. Parameters in < > are required, while [ ] are optional.
This plugin uses Oxide's permission system. Grant or revoke permissions using oxide.grant and oxide.revoke. You can assign them to individual players or groups using their Steam id or group name.
Settings are stored in the config file found under the config/ directory. You can edit this file manually, then reload the plugin to apply your changes.
Persistent data is saved in the data/ directory. This includes things like saved settings, usage stats, or player progress depending on the plugin. Deleting a data file will reset stored progress or customizations.
Language files are located in the lang/ folder. To translate messages, copy the en.json file into your target language folder (e.g. fr, de) and edit the values. Reload the plugin after changes to apply new messages.
This section lists public methods exposed by the plugin for use in other plugins. You can call these via the CallHook method. Ensure the plugin is loaded before calling its API to avoid null reference errors.
These are custom hooks that other plugins can listen for. Simply define a method with the same name and expected parameters in your plugin to handle the event. Hooks are triggered at key moments and are useful for extending or reacting to plugin behavior.
These hooks are injected into the game's code using Harmony. They let the plugin run code at key points in the game's internal logic. You can return values to block or modify behavior. Use with caution — these are powerful and can affect core mechanics.
Cart