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
- 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.
- 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!
- 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. Usehere
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. Usehere
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
- Use
volcano create <alias>
to create a new volcano.
Example:volcano create Fuji
creates a volcano named 'Fuji'.
- 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.
- 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.
- Finally, use
volcano done
to finish editing and apply changes.
- 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)
alias
- The volcano alias supplied when the volcano was created.- No value is returned.
C#:
string API_GetVolcanoStage(string alias)
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)
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.