Community collections
Collections curated by the community
Explore curated groups of files assembled by the community to help you discover tools and resources that work well together.
Welcome to "Decay: The Last Haven," a custom map for the game RUST that immerses players in a post-apocalyptic world where survival is a luxury. This expansive map, with a size of 4500, boasts around 70,000 prefabs, creating a rich and detailed environment. It's fully compatible with BetterNPC plugins(Config for bots in the file), and Train Homes, featuring three stations for the plugin. The map showcases a double-track surface railway, offering two metro entrances with separate branches for spawning trains, complemented by an intricate underground railway system.
The layout includes evenly spaced monuments to optimize the FPS load for clients, ensuring smooth gameplay. Players can find custom building spots in the subway, marked as 'XU' on the minimap, amidst a network of bridges that are navigable by tugboats. The map's design incorporates a multitude of rivers, allowing tugboats and other water transport to access any point on the map with ease.
For those seeking a strategic advantage, the map presents custom monuments in ample quantity for a comfortable and engaging gaming experience. Builders will appreciate the custom sites, indicated by 'X' on the minimap, while the heart of the map features fresh water and lush vegetation, ideal for farmers.
Explorers can discover a large number of small settlements and standalone buildings, not marked on the road map, offering hidden gems throughout the landscape. Adventurous players can delve into underwater farm zones, denoted by 'O' on the minimap, and explore the depths of an underwater laboratory. To add to the excitement, the map is equipped with ziplines, providing a thrilling way to traverse this desolate yet captivating world.
"Decay: The Last Haven" is not just a map; it's a testament to the resilience of humanity in the face of desolation, offering a sanctuary for those brave enough to claim it.
Features:
Map size: 4500;
Prefabs count: ~65K;
Compatible with BetterNPC plugins (Config for bots in the file) & Train Homes ( 3 stations for plug-in );
Double-track surface railway with 2 entrances to the metro with separate branches for spawn trains;
Underground railway;
Evenly spaced monuments to spread the FPS load of client;
Custom places for building in the subway (XU on the minimap);
A lot of bridges ( The tugboat passes );
A large number of rivers, tugboats and other water transport can pass to any point on the map;
Designed custom monuments in sufficient quantity for a comfortable game;
Custom building sites (X on the minimap);
Fresh water and vegetation for farmers are in the center of the map;
A large number of small settlements/single buildings not marked on the road map by road;
Underwater farm zones (O on the minimap);
Underwater Laboratory;
Ziplines.
Custom monuments:
Nuclear Cargo;
Settlement;
Bandit Settlement;
Wood Industry;
Industrial Settlement;
Office Area;
Reverpost;
Shorpek;
Warehouse Settlement;
Bandit Ship;
Slave Ship;
Rebel Ship;
RW Station;
A large number of small settlements/single buildings not marked on the road map by road;
A lots custom places to build a base. ( "X"/"XU" on map );
Underwater farm zones ( "O" on map ).
Monuments:
Combined Outpost;
Launch Site;
The Dome;
Ziggurat;
PowerPlant;
JunkYard;
Harbor;
Airfield;
Arctic Research Base;
Desert Military Base;
Ferry Terminal;
Large fishing village;
Oxum`s Gas Station;
Abandoned supermarket;
Fishing villages;
Lighthouses;
Satellite Dish;
Nuclear Missile Silo;
Water Treatment Plant;
Train Yard;
Giant Excavator Pit;
Underwater laboratory;
Ranch;
Underground railway;
Quarries(HQM,Stone, Sulfur);
Large oilrig;
Oilrig.
My Discord: shemov
A password is attached to the map. You can edit it.
Contracts allows you to create versatile quests/missions that rotate periodically.
Each contract can have one or more objectives, with multiple objective types to choose from. It doesn't stop there: each objective can be augmented with objective conditions, which add additional requirements in order to progress it. This allows you to define versatile and unique quests:
You could have quests as simple as "Kill 5 scientists"...
or a little bit more challenging quests like "Kill 5 scientists with an assault rifle"
or have crazy requirements like "Kill 5 scientists, with an assault rifle OR an MP5, between 25-50m away, while being below 20 HP, while wearing a bandana and riding a horse". The possibilities are endless!
Features
Highly customizable quests/missions to help you build your unique set of goals and control difficulty beyond just progression amounts required.
Control the flow and order of how contract objectives can be completed.
10+ objective types to vary gameplay across your server
10+ objective condition types to add as many layers of challenge that you want to your objectives
Customizable categories and their rotation period, with the possibility to disable rotations altogether and manually control when contracts rotate.
Clean UI for browsing and tracking contracts.
HUD to track contracts while playing.
Permission based features for your VIP members: Max active contracts globally, Max active contracts per category and Max HUD pins.
Event logging with JSONL format support
Powerful Web editor to make editing your configs a breeze and viewing insightful charts on your JSONL logs
Motivation
The motivation behind the plugin is to give players an evolving gameplay experience on your server with an urgency aspect, with the goal of improving player engagement. Instead of making hundreds of quests available from day 1 and achievable anytime during the wipe, I wanted players to have a sense of urgency and achievement when completing quests. I also didn't want to overwhelm players with hundreds of quests to choose from. Contracts solves this by letting you define any number of contracts and assign them to timed categories that will rotate through a portion of contracts on the period you set them to. The more contracts you have, the more variety you add, without adding the mental burden of choice.
Included
While you can discard and customize the contracts, categories and presets yourself, the plugin comes with:
4 categories: Hourly (11 contracts), Daily (13 contracts), Weekly (11 contracts) and Wipe (6)
41 contracts designed to touch just about every objective types and objective conditions available. These contracts' difficulty were designed for the category they were assigned to.
Permissions
All permissions listed here are the default ones. You can configure them in the config file of the plugin.
contracts.use - allows the player to use Contracts (open the menu, accept/complete contracts, etc.)
contracts.admin - allows the player to run admin commands (manually rotate categories, reset data, view cache debug info, etc.)
Max Active Contracts - Maximum amount of contracts the player can have at a time. Largest amount is used. (-1 for unlimited)
contracts.use - 3
contracts.vip - 5
contracts.admin - -1
Max Tracked Contracts - Maximum amount of contracts the player can pin in the HUD. Largest amount is used. (-1 for unlimited. 0 disables the HUD)
contracts.use - 2
contracts.vip - 5
contracts.admin - -1
Chat Commands
Note: While the "contracts" command is the default, it can be configured to be different name(s) in the config file!
/contracts - opens the contracts menu
/contracts hud - toggles the HUD
/contracts scale <0.5 - 1.0> - adjusts the plugin's UI element's scale. (default: 1.0)
This option is designed to be set to the same as the player's Rust UI scale, configurable under the Settings > User Interface menu. No action is required for players who left Rust default UI scale (1.0), but players with a smaller scale will have their initial UI much smaller than intended. Unfortunately, the plugin cannot read the player's Rust UI scale, so it will need to be set manually. You should inform your players about this so they get the best UI!
Console Commands
contracts.rotate_category <category_id> - trigger rotation for the specified category ID.
contracts.reset_all_progress - clears all player progress data
Debugging commands
contracts.debug.refresh.all - refresh all caches (clears and rebuilds them). This is normally only done on category rotation.
contracts.debug.cache.all - Print all caches info. Replace "all" with individual cache names: attackers, card_swipe, craft, damage, kill, loot, gather, heal, fishing, crate_hack
contracts.debug.hooks - Print the subscription status of hooks (enabled or disabled, depending on if any objective needs them)
contracts.debug.tainted_items - Print information about item taints (for the Loot objectives)
contracts.debug.clear_tainted_items - Clears all taints from the loot cache
contracts.debug.transfers - Print information about item transfers (for the Loot objectives). Normally, there should be zero transfers printed most of the time. Transfers are only meant to track items movement between containers (where they start and where they end) and then automatically get cleaned up.
contracts.debug.clear_transfers - Clears the transfers cache
Configuration
Contracts has 1 config file and 3 data files that you can edit for your needs, though the plugin comes with a generous amount of pre-defined contracts (generated when you first load the plugin).
oxide/config/Contracts.json
Command - The commands that can be used to interact with the plugin
Permissions - Set the permissions for features
Use Contracts Features - Permission required to use Contracts, open the menu, accept contracts and complete them.
Admin - Permission required to use admin commands
Max Active Contracts - Maximum amount of contracts the player can have at a time. Largest amount is used. (-1 for unlimited)
Max Tracked Contracts (HUD) - Maximum amount of contracts the player can pin in the HUD. Largest amount is used. (-1 for unlimited. 0 disables the HUD)
Rewards
Show Ineligible Rewards - When true, rewards that the player is not eligible to get upon completion are dimmed. When false, ineligible rewards are hidden from the menu.
Conditions
Condition Ordering - One of "Optimized" (default), "None" or "RootOptimized"
Optimized - The plugin will re-order conditions to execute from less computationally expensive to most
None - Condition ordering are kept as defined
RootOptimized - Only conditions at the first level are optimized, not the nested ones in AND and OR conditions
HUD
Anchor Min - The HUD's bottom left anchor position (see Oxide UI position)
Anchor Max - The HUD's top right anchor position (see Oxide UI position)
Collapse Direction - One of "TopLeft" (default), "TopRight", "BottomLeft" or "BottomRight"
TopLeft = Header is above tracked contracts. Toggle button is on the left.
TopRight = Header is above tracked contracts. Toggle button is on the right.
BottomLeft = Header is below tracked contracts. Toggle button is on the left.
BottomRight = Header is below tracked contracts. Toggle button is on the right.
Logging - collect logs on specified events (stored in oxide/logs/Contracts/<date> or carbon/logs/Contracts/<date>)
Mode - One of "None" (default), "JSONL" or "Text"
None = Disable logging
JSONL = Logs events in a structured format. JSONL is more efficient for large datasets than JSON because it doesn't require you to load the entire file into memory!
Text = Human readable text lines that you can configure with placeholders. Can also be used to create your own JSONL format, if the one provided is not preferred.
Retention Days - Log folders past this age will be deleted at plugin load time. Set to 0 to disable and never delete logs (not recommended).
Contract Accepted - occurs when the player accepts a contract
Enabled - whether or not to collect logs for this event
Format (Text Mode) - Log format to use when the logging mode is "Text". See Logging section below for {placeholders}.
Contract Completed - occurs when the player completes a contract.
Contract Claimed - occurs when the player claims the rewards on a contract.
Contract Abandoned - occurs when the player abandons a contract.
Reward Given - occurs once for each reward given when the player claims the contract
Rotation Started - occurs when a category rotates its contracts
Objective Completed - occurs when the player completes a contract objective
Version - The version of the config. Matches the plugin's version.
Default Configuration
{
"Command": ["contracts"],
"Permissions": {
"Use Contracts Features": "contracts.use",
"Admin": "contracts.admin",
"Max Active Contracts": {
"contracts.use": 3,
"contracts.vip": 5,
"contracts.admin": -1
},
"Max Tracked Contracts (HUD)": {
"contracts.use": 2,
"contracts.vip": 5,
"contracts.admin": -1
}
},
"Rewards": {
"Show Ineligible Rewards": true
},
"Conditions": {
"Condition Ordering": "Optimized"
},
"HUD": {
"Anchor Min": "0.0 0.60",
"Anchor Max": "0.135 0.87",
"Collapse Direction": "TopLeft"
},
"Logging": {
"Mode": "None",
"Retention Days": 30,
"Contract Accepted": {
"Enabled": false,
"Format (Text Mode)": "[{timestamp_local}] {player_name} ({player_id}) accepted contract {contract_name} ({contract_id}) in {category_name} ({category_id})"
},
"Contract Completed": {
"Enabled": false,
"Format (Text Mode)": "[{timestamp_local}] {player_name} ({player_id}) completed contract {contract_name} ({contract_id}) in {category_name} ({category_id}) in {duration}s"
},
"Contract Claimed": {
"Enabled": false,
"Format (Text Mode)": "[{timestamp_local}] {player_name} ({player_id}) claimed contract {contract_name} ({contract_id}) in {category_name} ({category_id})"
},
"Contract Abandoned": {
"Enabled": false,
"Format (Text Mode)": "[{timestamp_local}] {player_name} ({player_id}) abandoned contract {contract_name} ({contract_id}) in {category_name} ({category_id})"
},
"Reward Given": {
"Enabled": false,
"Format (Text Mode)": "[{timestamp_local}] {player_name} ({player_id}) received {reward_type} reward: {reward_detail} from contract {contract_name} ({contract_id})"
},
"Rotation Started": {
"Enabled": false,
"Format (Text Mode)": "[{timestamp_local}] Category {category_name} ({category_id}) rotated. Contracts: {contract_ids}."
},
"Objective Completed": {
"Enabled": false,
"Format (Text Mode)": "[{timestamp_local}] {player_name} ({player_id}) completed objective {objective_name} (#{objective_id}) in contract {contract_name} ({contract_id})"
}
},
"Version": {
"Major": 0,
"Minor": 5,
"Patch": 0
}
}
Contracts Website
The data files that follow this section don't have to be manually edited! Head to the Web Editor at https://www.rustcontracts.com , drop your data configs and start editing your configs in a convenient UI. The quality of the editor and its extensive features are on par with the quality of the plugin!
Website Features
Convenient UI: Edit all your contracts, categories and presets in a Web-based UI. No manual JSON editing required.
Rich Editing Experience: Validation, undo/redo from anywhere, ID refactoring, autocomplete fields, optional raw JSON editing and more QoL features.
Data Persistence: Save snapshots of your configs and restore or download them at a later time (data saved in your browser).
AI Generated Contracts: (experimental) Use OpenAI, Google or Anthropic's models to generate entire contracts from a prompt. (BYOK)
Command Palette: Easily navigate through contracts, categories, presets from anywhere in the editor through the command palette.
Stats: View your JSONL logs in pre-made charts to gain insights into your contracts, such as pacing and reward balance.
Data Files
Contracts has 3 types of data files meant to be configured by you (other data files are generated by the plugin, such as player progress, but not meant to be edited): Presets, Contracts and Categories.
oxide/data/Contracts/preset_data.json
Presets are lists of strings you can define to easily reference them in contracts. E.g: Instead of defining all the types of scientists for a kill contract, you can reference them with "@scientists"
presets - key/value pair where the key is the name of the preset and the value is a list of strings that the preset resolves to. You can mention other presets in a preset, but they must not have a circular reference
version - The version of the config. Matches the plugin's version.
Example presets:
{
"presets": {
"scientists": [
"scientist2.heavy",
"scientist2",
"scientist2.shotgun",
"scientistnpc_arena",
"scientistnpc_bradley",
"scientistnpc_bradley_heavy",
"scientistnpc_cargo",
"scientistnpc_cargo_turret_any",
"scientistnpc_cargo_turret_lr300",
"scientistnpc_ch47_gunner",
"scientistnpc_excavator",
"scientistnpc_full_any",
"scientistnpc_full_lr300",
"scientistnpc_full_mp5",
"scientistnpc_full_pistol",
"scientistnpc_full_shotgun",
"scientistnpc_heavy",
"scientistnpc_junkpile_pistol",
"scientistnpc_oilrig",
"scientistnpc_outbreak",
"scientistnpc_patrol",
"scientistnpc_patrol_arctic",
"scientistnpc_peacekeeper",
"scientistnpc_ptboat",
"scientistnpc_rhib",
"scientistnpc_roam",
"scientistnpc_roam_nvg_variant",
"scientistnpc_roamtethered"
],
"ballista": [
"ballista.static",
"ballista.mounted"
],
},
"version": {
"Major": 0,
"Minor": 2,
"Patch": 0
}
}
oxide/data/Contracts/contracts_data.json
This file holds all your contract definitions.
contracts - key/value pair where the key is the contract ID and the value is the contract definition
title - The title of the contract
description - Optional description for the contract
progressionType - One of "Independant" (default), "Sequential" or "Progressive"
Independant - objectives can be completed in any order simultaneously
Sequential - objectives must be completed in order from first to last. The locked objectives are visible.
Progressive - objectives must be completed in order from first to last. The locked objectives are hidden.
objectives - key/value pair where the key is the objective ID and the value is the objective definition
title - The objective title
description - Optional objective description
conditions - key/value pair where the key is the condition ID and the value is the condition definition
type - The type of the condition (see Objective Conditions below)
... more fields depending on the objective condition type (see Objective Conditions below)
type - Type of the objective (see Objective Types below)
... more fields depending on the objective type (see Objective Types below)
rewards - key/value pair where the key is the reward ID and the value is the reward defintion
title - Optional title for the reward (empty titles will use default names)
description - Optional description for the reward
eligiblePermissions - list of strings of permissions allowed to claim this reward
type - Type of the reward (see Contract Rewards below)
... more fields depending on the reward type (see Contract Rewards below)
version - The version of the config. Matches the plugin's version.
oxide/data/Contracts/contract_category_data.json
This file holds all your contract categories definitions.
categories - key/value pair where the key is the category ID and the value is the category definition
name - The category name
description - Optional category description
contractIds - List of all contract IDs defined earlier that are part of the category and will be rotated periodically
rotation
duration - Time in seconds that the rotation lasts (-1 = never rotates)
minContractsAmount - minimum number of contracts to include in the rotation
maxContractsAmount - maximum number of contracts to include in the rotation
maxActiveContracts - key/value pair where the key is the permission name and the value is a number indicating the maximum amount of contracts that can be active in this category for a given player (-1 for unlimited. defaults to -1). This works in conjunction to the config Max Active Contracts parameter. e.g:
"contracts.use": 1 - only 1 contract in this category can be active at a time
version - The version of the config. Matches the plugin's version.
Objective Types
Contracts currently support the following objective types, with additional types possible in the future! Objective types are intentionally kept simple with minimal configuration so that you can create more complex objectives with Objective Conditions. This section also details the additional fields to be added in the objectives definition of the contract (where it says "... more fields depending on the objective type").
☠️ Kill
Requires the player to kill one of the specified entities.
Configuration (excludes common objective fields):
type - Always "Kill"
amountRequired - An integer value greater than 0
entities - list of entities targeted by the objective. Can include presets.
Example (excludes common objective fields):
{
"type": "Kill",
"amountRequired": 50,
"entities": ["wolf", "boar", "@scientists"]
}
💔 Damage
Requires the player to damage one of the specified entities.
Configuration (excludes common objective fields):
type - Always "Damage"
amountRequired - An integer value greater than 0
entities - list of entities targeted by the objective. Can include presets.
Example (excludes common objective fields):
{
"type": "Damage",
"amountRequired": 5000,
"entities": ["wolf", "boar", "@scientists"]
}
🛠️ Craft
Requires the player to craft one of the specified items.
Configuration (excludes common objective fields):
type - Always "Craft"
amountRequired - An integer value greater than 0
items - list of items that count toward the objective's progression. Can include presets.
Example (excludes common objective fields):
{
"type": "Craft",
"amountRequired": 50,
"items": ["bandage", "@firearms"]
}
🪓 Gather
Requires the player to gather one of the specified items.
Configuration (excludes common objective fields):
type - Always "Gather"
amountRequired - An integer value greater than 0
items - list of items received from a gathered dispenser that count towards the objective's progress. Can include presets.
Example (excludes common objective fields):
{
"type": "Gather",
"amountRequired": 500,
"entities": ["wood", "metal.ore", "@ores"]
}
💳 Card Swipe
Requires the player to swipe cards of specified access levels.
Configuration (excludes common objective fields):
type - Always "CardSwipe"
amountRequired - An integer value greater than 0
accessLevels - list of access levels that count towards the objective's progress. Valid access levels are 1, 2 or 3
1 = Green | 2 = Blue | 3 = Red
Example (excludes common objective fields):
{
"type": "CardSwipe",
"amountRequired": 3,
"accessLevels": [1, 3]
}
🔟 Crate Hack
Requires the player to hack hackable crates.
Configuration (excludes common objective fields):
type - Always "CrateHack"
amountRequired - An integer value greater than 0
Example (excludes common objective fields):
{
"type": "CrateHack",
"amountRequired": 50
}
🐟 Fishing
Requires the player to catch any or specified types of fish.
Configuration (excludes common objective fields):
type - Always "Fishing"
amountRequired - An integer value greater than 0
fish - List of fishes that count towards the objective's progress. Leave empty for any. Can include presets.
bait - List of baits used to fish that count towards the objective's progress. Leave empty for any. Can include presets.
Example (excludes common objective fields):
{
"type": "Fishing",
"amountRequired": 50,
"fish": ["fish.salmon", "@rarefish"],
"bait": ["grub", "@rawmeat"]
}
❤️🩹 Heal
Requires the player to heal themselves and/or others by a specified amount of health
Configuration (excludes common objective fields):
type - Always "Heal"
amountRequired - An integer value greater than 0
items - List of healing items that can be used to count towards the objective's progress. Leave empty for any. Can include presets.
target - One of Any, Self or Others
Any = Heal anyone | Self = Heal self | Others = Heal others
Example (excludes common objective fields):
{
"type": "Heal",
"amountRequired": 100,
"items": ["bandage", "@advancedheals"],
"target": "Self"
}
📦 Turn In
Requires the player to give specified items to the plugin. Turned in items are removed from the inventory.
Configuration (excludes common objective fields):
type - Always "TurnIn"
amountRequired - An integer value greater than 0
items - List of items that count towards the objective's progress. Can include presets.
Example (excludes common objective fields):
{
"type": "TurnIn",
"amountRequired": 100,
"items": ["scrap", "@components"]
}
🔎 Loot
Requires the player to loot the specified items from the world. Looted items are not removed from the inventory, unlike turn in objectives.
Configuration (excludes common objective fields):
type - Always "Loot"
amountRequired - An integer value greater than 0
items - List of items that count towards the objective's progress. Can include presets.
Example (excludes common objective fields):
{
"type": "Loot",
"amountRequired": 100,
"items": ["scrap", "@components"]
}
Objective Conditions
Objective types on their own do not provide much configuration for variety by design. Objective conditions are what makes your objectives so customizable with many combination of conditions that can be applied on top of objective types. They are what makes your objectives challenging and versatile. This section also details the additional fields to be added in the objective conditions definition of the contract (where it says "... more fields depending on the objective condition type").
🔫 Weapon
Requires the player to use a specific weapon during an attack on an entity.
Configuration (excludes common objective condition fields):
type - Always "Weapon"
weapon - List of weapons that satisfy the condition. Can include presets.
Example (excludes common objective condition fields):
{
"type": "Weapon",
"items": ["grenade.molotov", "@primitiveweapons"]
}
🌙 Time of Day
Requires the player to progress the objective between set times.
Note: the plugin supports day wrapping. If your start time is "20:00" and end time is "06:00", then the plugin will understand it's between 8PM - 6AM.
Configuration (excludes common objective condition fields):
type - Always "TimeOfDay"
startTime - The minimum time of day. 24h format. e.g: "21:32"
endTime - The maximum time of day. 24h format. e.g: "06:00"
Example (excludes common objective condition fields):
{
"type": "TimeOfDay",
"startTime": "20:00",
"endTime": "06:00"
}
👕 Player Wear
Requires the player to wear specific clothing
Configuration (excludes common objective condition fields):
type - Always "PlayerWear"
items - List of wearable items that satisfy the condition. Can include presets.
requireAll - true = requires all items to be worn. false = require some items to be worn.
requireNaked - true = requires the player to wear nothing (items should be empty (i.e: [ ] ) ). false = use items list to determine the condition.
Example (excludes common objective condition fields):
{
"type": "PlayerWear",
"items": ["bandana", "@woodarmor"],
"requireAll": false,
"requireNaked": false
}
🐎 Player Mount
Requires the player to be mounted on specific entities (vehicles, horse, chairs, etc.)
Configuration (excludes common objective condition fields):
type - Always "PlayerMount"
mounts - List of mount entities that count satisfy the condition. Can include presets.
Example (excludes common objective condition fields):
{
"type": "PlayerMount",
"mounts": ["ridablehorse", "@chairs"]
}
♥️ Player Health
Requires the player to be between specific amount of HP.
Configuration (excludes common objective condition fields):
type - Always "PlayerHealth"
minHealth - Minimum amount of health required to satisfy the condition. -1.0 to ignore.
maxHealth - Maximum amount of health required to satisfy the condition. -1.0 to ignore.
Example (excludes common objective condition fields):
{
"type": "PlayerHealth",
"minHealth": -1.0,
"maxHealth": 30.0
}
💥 Min Damage Ratio
Requires the player to have done a minimum amount of damage when compared to the total damage done with others.
Currently, this is mostly only useful for the Kill objective, though it could be attached to a Damage objective if you have the need for it...
Configuration (excludes common objective condition fields):
type - Always "MinDamageRatio"
minDamageRatio - The minimum ratio of damage that the player needs to have on the victim to satisfy the condition. Between 0.0 and 1.0.
Example (excludes common objective condition fields):
{
"type": "MinDamageRatio",
"minDamageRatio": 0.5
}
↔️ Attack Distance
Requires the player's attack to occur between specified distance in meters.
Configuration (excludes common objective condition fields):
type - Always "AttackDistance"
minDistance - Minimum distance required to satisfy the condition. -1.0 to ignore.
maxDistance - Maximum distance required to satisfy the condition. -1.0 to ignore.
Example (excludes common objective condition fields):
{
"type": "AttackDistance",
"minDistance": 50.0,
"maxDistance": -1
}
&& And
Requires the player to satisfy all listed conditions inside the AND operator condition.
Note that this condition is useless when used at the top level of your conditions, because multiple conditions are already evaluated as an AND condition (i.e: all conditions within the objective's "conditions" list must be satisfied). It is only useful when placed inside a Not or an Or condition.
Configuration (excludes common objective condition fields):
type - Always "And"
conditions - key/value pair where the key is the condition ID and the value is a condition that needs to be satisfied. All conditions inside the And condition need to pass to satisfy this condition.
Example (excludes common objective condition fields):
{
"type": "And",
"conditions" {
"and_weapon_condition": {
"type": "Weapon",
"weapon": ["rifle.ak"]
},
"and_attackdistance_condition": {
"type": "AttackDistance",
"minDistance": -1.0,
"maxDistance": 10.0
}
}
}
|| Or
Requires the player to satisfy any of the listed conditions inside the OR operator condition.
Configuration (excludes common objective condition fields):
type - Always "Or"
conditions - key/value pair where the key is the condition ID and the value is a condition that needs to be satisfied. Any condition inside the Or condition need to pass to satisfy this condition.
Example (excludes common objective condition fields):
{
"type": "Or",
"conditions" {
"or_attackdistance1_condition": {
"type": "AttackDistance",
"minDistance": -1.0,
"maxDistance": 10.0
},
"or_attackdistance2_condition": {
"type": "AttackDistance",
"minDistance": 100.0,
"maxDistance": -1.0
}
}
}
🚫 Not
Requires the player to NOT satisfy the specified condition. (inverses the satisfaction requirement)
Configuration (excludes common objective condition fields):
type - Always "Not"
condition - The condition to NOT satisfy
Example (excludes common objective condition fields):
{
"type": "Not",
"condition" {
"type": "Weapon",
"weapon": ["@firearms"]
}
}
Contract Rewards
The following rewards can be distributed by the plugin. This section also details the additional fields to be added in the reward definition of the contract (where it says "... more fields depending on the reward type").
🏷️ Item
Grants the player a specified quantity of an item.
Configuration (excludes common reward fields):
type - Always "Item"
item - The item shortname
quantity - An integer value greater than 0
Example (excludes common reward fields):
{
"type": "Item",
"item": "scrap",
"quantity": 50
}
💲 Economics
Grants the player an amount of money. Requires the Economics plugin.
Configuration (excludes common reward fields):
type - Always "Economics"
amount - A decimal value greater than 0.0
Example (excludes common reward fields):
{
"type": "Economics",
"amount": 50.50
}
🎁 Server RP
Grants the player an amount of server rewards points. Requires the Server Rewards plugin.
Configuration (excludes common reward fields):
type - Always "ServerRewards"
amount - An integer value greater than 0
Example (excludes common reward fields):
{
"type": "ServerRewards",
"amount": 5
}
⌘ Command
Runs a parameterized command. Useful when the other rewards are not suitable and you need something custom. Technically, all above rewards can be achieved through a command reward.
Configuration (excludes common reward fields):
type - Always "Command"
command - The command to run on reward claim. You can add the following {placeholders} and the plugin will fill them during distribution:
{playerId} - The player's Steam ID
{playerName} - The player's Steam name
{qPlayerName} - The player's Steam name wrapped in "quotes"
{playerX} - The player's current X position, rounded to the nearest integer
{playerY} - The player's current Y position, rounded to the nearest integer
{playerZ} - The player's current Z position, rounded to the nearest integer
Example (excludes common reward fields):
{
"type": "Command",
"command": "say {playerName} is the top fisherman!"
}
Logging
When using Text formatting for logging, you can use {placeholders} to inject data into your logs. Each event type has their own placeholders. The following placeholders are always available:
timestamp_utc - yyyy-MM-dd HH:mm:ss timestamp using the UTC timezone
timestamp_local - yyyy-MM-dd HH:mm:ss timestamp using your server's local timezone
timestamp_iso - timestamp using the ISO format (same format used in JSONL)
time_utc - HH:mm:ss timestamp using the UTC timezone
time_local - HH:mm:ss timestamp using your server's local timezone
The following are additional fields per event type:
Contract Abandoned
player_id
category_id
contract_id
player_name
category_name
contract_name
Contract Accepted
player_id
category_id
contract_id
player_name
category_name
contract_name
Contract Claimed
player_id
category_id
contract_id
player_name
category_name
contract_name
Contract Completed
player_id
category_id
contract_id
player_name
category_name
contract_name
duration - the amount of time (in seconds) that passed since the player accepted the contract
Contract Expired
player_id
category_id
contract_id
player_name
category_name
contract_name
duration - the amount of time (in seconds) that passed since the player accepted the contract
Objective Completed
objective_type
player_id
category_id
contract_id
objective_id
player_name
category_name
contract_name
objective_name
Reward Given
reward_type
player_id
category_id
contract_id
reward_id
player_name
category_name
contract_name
reward_name
reward_detail - e.g: scraps x50 ; command ; $1000 ; 10 RP
amount - always 1 for commands
Rotation Started
category_id
contract_ids - comma separated list of contract IDs
category_name
API
This plugin does not currently expose an API. Let me know what you'd like to see in a future implementation!
Discord
Join the official Discord server for support, announcements and more! https://discord.rustcontracts.com
This is a complete pack with loot table, stacksizes, gathering, crafting time, smelt configs and data files.
choose your own plugins and don’t bother setting up the basics!
Save yourself the headache of manual balancing! Setting up a high-quality 2x server takes hours of fine-tuning. If the loot is too good, the wipe ends in a day. If the stacks are too small, players get frustrated.
This bundle provides the perfect "Vanilla+" core for your Rust server, with everything synced to work together perfectly.
This is a Plug & Play solution. No need to spend days editing JSON files – I’ve done the hard work for you.
What’s included in this bundle?
Custom BetterLoot v4 Config & Data: A completely overhauled loot table. No junk, balanced progression, and optimized for a 2x environment.
Perfected Gather Rates: 2x resources for wood, stone, metal, and sulfur, including pickups (hemp, berries, etc.) and quarries.
Synced Stack Sizes: Stack sizes are increased to match the 2x gather rate, ensuring a smooth inventory experience for your players.
Optimized QuickSmelt: Smelting speeds are adjusted to keep up with the faster resource gain (including electric furnance which alot of servers have problem with).
Half-Craft Configuration: 50% faster crafting times to maintain a great server tempo.
Why choose this bundle?
Time Saver: Skip days of configuration and testing.
Balanced Progression: Not too fast, not too slow—just the right 2x feel.
Performance Friendly: Clean configs that won't lag your server.
Tried & Tested: This setup is currently running on live servers with great player feedback.
This configuration is backed by consistent positive feedback and has been refined to ensure a stable, bug-free experience. Quality and reliability are my top priorities.
Loot table video :
$21.00
This plugin allows players to gather weed from hemp plants and craft joints using a mixing table. There are different types of weed where each type can be found in a different biome. Joints can be crafted at a mixing table and will give the player configurable buffs and healing with each tier having different effects.
Features:
Fully customizable
Different types of weed
Configurable effects for each type
Custom crafting UI integrates in the mixing table UI
Configurable recipes for mixing table
Yield amount and chance configurable for each type
Ideal for Roleplay Servers
New in v2.0.15: Advanced modifiers
Advanced modifiers allow you to use any tea/pie modifier that's currently in the game. I did not test all of them so there is a chance that some modifiers might not work as expected.
List of modifiers:
Wood_Yield,
Ore_Yield,
Radiation_Resistance,
Radiation_Exposure_Resistance,
Max_Health,
Scrap_Yield,
MoveSpeed,
ObscureVision,
Warming,
Cooling,
CoreTemperatureMinAdjustment,
CoreTemperatureMaxAdjustment,
Crafting_Quality,
VisionCare,
MetabolismBooster,
Harvesting,
DigestionBoost,
FishingBoost,
Collectible_DoubleYield,
Farming_BetterGenes,
HorseGallopSpeed,
HorseDungProductionBoost,
Comfort,
Clotting,
HunterVision,
Radiation,
Configuration Example:
"Advanced modifiers (only works for joints)": [
{
"Name (case sensitive! see plugin description for all modifiers)": "Warming",
"Duration (seconds)": 60.0,
"Value": 10.0
}
]
New in v2.0.10: Give command
Server owners can use this command to give weed or joints to themselves or a certain player. The identifier has to be specified in the config file for every type of weed or joint.
ganja.give <weed|joint> <identifier> <amount> <player?>
Permission:
ganja.give - Required to use ganja.give command
New in v2.0.0: Fully configurable crafting:
With Version 2.0.0 the crafting system has been integrated in the mixing table. Joints can now be crafted by using the right ingredients in the right slot. The crafting recipes are fully configurable. New recipes can also be added.
New in v1.0.8: Loot Table integration:
This plugin now supports the custom item api of Loot Table and Stack Size GUI, so you can easily add weed to the loot table. When both plugins are installed on the server, the weed items will show up in the custom items tab of Loottable (right image):
Different tiers:
Depending on the biome, you will receive different tiers of weed, the biomes can also be changed in the config. By default, tier2 weed can be gathered in the snow biome, tier1 in the desert and tier0 everywhere else.
Names, droprates, and boosts can also be configured individually for each tier.
Controls:
With a joint selected in the hot bar:
Right click to ignite / extinguish a joint
When joint is bruning: left click to use a joint
Permissions:
Permissions can be disabled in the config, making gathering and crafting accessible to everyone regardless of permissions.
ganja.craft - Required to craft joints
ganja.gather - Required to obtain weed
Biome masks:
The biome mask is a simple 4-bit number that determines where a certain tier of weed can be found. Each biome has its own number; add these numbers together to select multiple biomes. The numbers for each biome are as follows:
1 - Arid
2 - Temperate
4 - Tundra
8 - Arctic
16 - Jungle
32 - Deep Sea
For example: Low Quality Weed has the biome mask 6 by default (see configuration below). That means it can be found in the Temperate and the Tundra biome.
Configuration:
{
"Weed configuration": [
{
"Drop chance when harvesting (1 = 100%)": 0.4,
"Drop amount when harvesting": {
"min": 1,
"max": 3
},
"Biome mask (see description for details)": 6,
"Gene configuration": {
"h": {
"Minimum amount for a chance to yield": 1,
"Minimum amount for guaranteed yield": 3,
"Maximum amount (-1 = no limit, set to 0 to disable gathering from plants with that gene)": -1
}
},
"Disable gathering from collectable hemp": false,
"Disable gathering from growable hemp": false,
"Item identifier (used with ganja.give command)": "low_quality",
"Custom item name (null = default name)": "Low Quality Weed",
"Item short name": "sticks",
"Item skin id": 2661029427
},
{
"Drop chance when harvesting (1 = 100%)": 0.3,
"Drop amount when harvesting": {
"min": 1,
"max": 3
},
"Biome mask (see description for details)": 1,
"Gene configuration": {
"h": {
"Minimum amount for a chance to yield": 1,
"Minimum amount for guaranteed yield": 3,
"Maximum amount (-1 = no limit, set to 0 to disable gathering from plants with that gene)": -1
}
},
"Disable gathering from collectable hemp": false,
"Disable gathering from growable hemp": false,
"Item identifier (used with ganja.give command)": "med_quality",
"Custom item name (null = default name)": "Medium Quality Weed",
"Item short name": "sticks",
"Item skin id": 2661031542
},
{
"Drop chance when harvesting (1 = 100%)": 0.1,
"Drop amount when harvesting": {
"min": 1,
"max": 2
},
"Biome mask (see description for details)": 8,
"Gene configuration": {
"h": {
"Minimum amount for a chance to yield": 1,
"Minimum amount for guaranteed yield": 3,
"Maximum amount (-1 = no limit, set to 0 to disable gathering from plants with that gene)": -1
}
},
"Disable gathering from collectable hemp": false,
"Disable gathering from growable hemp": false,
"Item identifier (used with ganja.give command)": "high_quality",
"Custom item name (null = default name)": "High Quality Weed",
"Item short name": "sticks",
"Item skin id": 2660588149
}
],
"Crafting Recipes": [
{
"Ingredient Slots": {
"0": {
"Amount": 1,
"Item short name": "note",
"Item skin id": 0
},
"1": {
"Amount": 1,
"Item short name": "sticks",
"Item skin id": 2661029427
},
"2": {
"Amount": 1,
"Item short name": "sticks",
"Item skin id": 2661029427
}
},
"Produced Item": {
"Amount": 1,
"Custom item name (null = default name)": "Low Quality Joint",
"Item short name": "horse.shoes.basic",
"Item skin id": 2894101592
},
"Identifier (used with ganja.give command)": "low_quality",
"Is joint": true,
"Boosts (only works for joints)": {
"Wood boost percentage (1 = 100%)": 0.4,
"Wood boost duration (seconds)": 20.0,
"Ore boost percentage (1 = 100%)": 0.0,
"Ore boost duration (seconds)": 0.0,
"Scrap boost percentage (1 = 100%)": 0.0,
"Scrap boost duration (seconds)": 0.0,
"Max Health percentage (1 = 100%)": 0.0,
"Max Health duration (seconds)": 0.0,
"Healing per use": 1.0,
"Health regeneration per use": 0.0,
"Poisoning per use(a negative value will decrease poisoning)": 0.0,
"Radiation poisoning per use (a negative value will decrease radiation)": 0.0,
"Bleeding per use (a negative value will decrease bleeding)": 0.0,
"Calories per use (a negative value will decrease calories)": 0.0,
"Hydration per use (a negative value will decrease hydration)": 0.0,
"Joint durability (seconds)": 120.0,
"Joint durability loss per hit (seconds)": 10.0
},
"Advanced modifiers (only works for joints)": [
{
"Name (case sensitive! see plugin description for all modifiers)": "Warming",
"Duration (seconds)": 60.0,
"Value": 10.0
}
]
},
{
"Ingredient Slots": {
"0": {
"Amount": 1,
"Item short name": "note",
"Item skin id": 0
},
"1": {
"Amount": 1,
"Item short name": "sticks",
"Item skin id": 2661031542
},
"2": {
"Amount": 1,
"Item short name": "sticks",
"Item skin id": 2661031542
}
},
"Produced Item": {
"Amount": 1,
"Custom item name (null = default name)": "Medium Quality Joint",
"Item short name": "horse.shoes.basic",
"Item skin id": 2894101290
},
"Identifier (used with ganja.give command)": "med_quality",
"Is joint": true,
"Boosts (only works for joints)": {
"Wood boost percentage (1 = 100%)": 0.0,
"Wood boost duration (seconds)": 0.0,
"Ore boost percentage (1 = 100%)": 0.8,
"Ore boost duration (seconds)": 20.0,
"Scrap boost percentage (1 = 100%)": 0.0,
"Scrap boost duration (seconds)": 0.0,
"Max Health percentage (1 = 100%)": 0.0,
"Max Health duration (seconds)": 0.0,
"Healing per use": 4.0,
"Health regeneration per use": 0.0,
"Poisoning per use(a negative value will decrease poisoning)": 0.0,
"Radiation poisoning per use (a negative value will decrease radiation)": 0.0,
"Bleeding per use (a negative value will decrease bleeding)": 0.0,
"Calories per use (a negative value will decrease calories)": 0.0,
"Hydration per use (a negative value will decrease hydration)": 0.0,
"Joint durability (seconds)": 120.0,
"Joint durability loss per hit (seconds)": 10.0
},
"Advanced modifiers (only works for joints)": [
{
"Name (case sensitive! see plugin description for all modifiers)": "Warming",
"Duration (seconds)": 60.0,
"Value": 20.0
}
]
},
{
"Ingredient Slots": {
"0": {
"Amount": 1,
"Item short name": "note",
"Item skin id": 0
},
"1": {
"Amount": 1,
"Item short name": "sticks",
"Item skin id": 2660588149
},
"2": {
"Amount": 1,
"Item short name": "sticks",
"Item skin id": 2660588149
}
},
"Produced Item": {
"Amount": 1,
"Custom item name (null = default name)": "High Quality Joint",
"Item short name": "horse.shoes.basic",
"Item skin id": 2893700325
},
"Identifier (used with ganja.give command)": "high_quality",
"Is joint": true,
"Boosts (only works for joints)": {
"Wood boost percentage (1 = 100%)": 0.0,
"Wood boost duration (seconds)": 0.0,
"Ore boost percentage (1 = 100%)": 0.0,
"Ore boost duration (seconds)": 0.0,
"Scrap boost percentage (1 = 100%)": 1.0,
"Scrap boost duration (seconds)": 30.0,
"Max Health percentage (1 = 100%)": 0.3,
"Max Health duration (seconds)": 30.0,
"Healing per use": 8.0,
"Health regeneration per use": 0.0,
"Poisoning per use(a negative value will decrease poisoning)": 0.0,
"Radiation poisoning per use (a negative value will decrease radiation)": 0.0,
"Bleeding per use (a negative value will decrease bleeding)": 0.0,
"Calories per use (a negative value will decrease calories)": 0.0,
"Hydration per use (a negative value will decrease hydration)": 0.0,
"Joint durability (seconds)": 120.0,
"Joint durability loss per hit (seconds)": 10.0
},
"Advanced modifiers (only works for joints)": [
{
"Name (case sensitive! see plugin description for all modifiers)": "Cooling",
"Duration (seconds)": 60.0,
"Value": 10.0
}
]
}
],
"Require permission for crafting": true,
"Require permission for gathering": true,
"Disable built-in stack fix (set to true if you have problems with item stacking/splitting)": false,
"Automatically extinguish joint when unequiping it": true
}
$49.90
Welcome to ThemePark Island
An expansive and meticulously crafted custom map for Rust, brought to you by the combined efforts of Silent Creations and Explosive Shart.
This map blends high-octane thrill-seeking with gritty, urban survival. Whether you’re riding a functional coaster or navigating the trap-filled halls of a medical center, ThemePark Island offers a fresh gameplay loop for PVP and PVE servers alike.
🎡 Featured Custom Monuments
The Theme Park
The crown jewel of the island. This isn't just a static monument—it features a fully functional, custom-coded rollercoaster. Scale the heights for a view of the island before diving into the chaos below.
Loot: High-density loot spawns throughout the park.
Puzzles: Includes both Green and Blue keycard puzzle rooms.
The 2 Gorges Dam
A massive, custom-built architectural marvel. The dam dominates the landscape, offering scenic vistas and deep, dark secrets.
Underground Puzzles: Navigate multiple puzzle rooms hidden deep within the structure.
Tactical Depth: Perfect for long-range engagements or sneaky subterranean looting.
Black Rock City
A sprawling urban center that feels like a lived-in wasteland.
Black Rock Medical Center: Enter at your own risk. This landmark is rigged with traps, multiple puzzles, and enough loot to supply an entire clan.
Custom Car Dealership: A unique urban addition for those looking to secure high-tier parts.
Pine Bluff
A smaller, dense city center for quick skirmishes and essential supplies.
Interiors: Explore a replica McDonald’s and a completely custom Supermarket.
Puzzles: Features multiple puzzles and heavy loot concentrations.
Mills Trailer Park
An eerie, abandoned residential area.
Puzzles: Features 2x Green Card puzzles and 1x Blue Card puzzle, making it a high-value stop for progression.
Additional Points of Interest
7-Eleven: That’s right—a faithful replica of the iconic convenience store for all your raiding snack needs.
Fuel Depot: An abandoned facility located in the snow biome, featuring a working Pumpjack and a Green Card puzzle.
Rose Hill Development: An unfinished construction site offering unique verticality and parkour opportunities.
Green Houses: Small botanical structures perfect for picking up plants and quick loot.
Map Size
4500
Prefab Count
#38450
🏛️ Facepunch Monuments
ThemePark Island includes a full suite of classic monuments to ensure a balanced Rust experience:
Tier 3: Launch Site, Arctic Research, Large Oil Rig, Small Oil Rig, Military Tunnel, Giant Excavator.
Tier 2: Airfield, Trainyard, Ferry Terminal, Rad Town, Jungle Ziggurat, Large/Small Harbor.
Tier 1: & Utilities: Bandit Camp, 3x Mining Outpost, 3x Oxums, Lighthouse, Supermarket, Large Barn, Ranch, Abandoned Cabins, Fishing Villages, 3x Water Well.
Resources: Stone, HQM, and Sulfur Quarries.
🙏 Acknowledgements
A massive thank you to those who helped bring this project to life:
Substrata: For the incredible work on the custom rollercoaster plugin.
Milky: For the stellar work on the promotional video.
MrLiquid & the Luffy Map Testing Team: For their dedication to polishing and balancing the map.
For any Assistance or questions Please contact me on Discord @ https://discord.gg/HNhPTPZVmd
$32.99
Well rounded shop, with various features. It's standalone plugin which is compatible with WelcomePanel, HumanNpc.
This plugin also supports selling commands, wipe block, no escape, sales, permission access.
Multi-currency support
Use different currencies for different items. Economics and ServerRewards (RP) is supported as well as scrap or any other ingame item.
Restrictions
Combat, raid, spawn and building block supported alongside with basic cooldowns and wipe block. NoEscape is required for combat and raid block.
Appearance
Simple and clean design to ensure smooth user experience for your players. Additionally Shop can be inserted into WelcomePanel to achieve "all in" server panel.
Customization
Widely customizable and feature rich Shop which will fit all needs of your community.
Field Tested
Plugin made by experienced developer, tested by hundreds of server owners and used by some big organizations.
Discord
Customer support available on discord,
Installation
- unzip downloaded package and place Shop.cs file into your plugin folder.
- after succesfuly loading the plugin, data folder oxide/data/Shop will be generated
- take data files provided in plugin package and drop them into your Shop data folder
After finishing these steps your shop is ready to used.
Server Currency
If you don't wish to use ingame items as currency make sure you use either Economics or ServerRewards as you currency management as only those two plugins are compatible with Shop. Default currency setting is Economics ("eco"), if you wish to change it navigate to "oxide/data/Shop/Items.json", open this file in some text editor (VSC recommended) and simply select "eco" and mass replace for desired value. (video here)
"eco" for Economics
"rp" for ServerRewards
"scrap" or any other ingame item
Shop Categories
To remove, change or add new categories open "oxide/data/Shop/Categories.json" file. There you will find all categories alongside with items lists. If you wish to remove certain items from category, just head over to item list and delete from there.
Items
Changing prices
In "oxide/data/Shop/Items.json" you will find every item with their properties, to quick search for specific items press "CTRL + F". By leaving BuyPrice or SellPrice at 0 you will disable selling or buying of said item. Due to multi-currency support prices can be set only in whole numbers, no decimals. To offset for this, you can set minimal amount requirement. For example instead of selling one piece of wood for 0.01$ you can set minimal amount of 100x wood for 1$.
Removing items
If you wish to remove some items from Shop, you can do that directly in "data/Shop/Categories.json" file. Removing items from "Items.json" is not needed as they have no effect unless they are listed in some category.
Adding new items
To add new item you must first head over to "Items.json" data file and create new entry by copy pasting some of the existing ones. Once done with that you can add the item into category. To add multiple versions of same item can be created by simply adding unique tag behind shortname, for example "rifle.ak{1}", "rifle.ak{2}", etc...
Commands
Adding new commands
Commands can be create at "data/Shop/Commands.json". Plugin can only run server side console commands and then parse steam id or player name with tags {steamid} and {playername}. There are two examples shown in default data file. Server side console commands are common thing and almost all plugins utilize them.
Listing commands in categories
Simply type in one of your command names into category item list like this "cmd/yourCommandName". Slash cmd in front of command name is there to make difference between ingame item and command.
Cooldowns
These are very basic, cooldown is triggered when buy/sell action is triggered. By using minimal amount requirement for items you can manage how much player buy and how often. Cooldowns are managed in "data/Shop/Cooldowns.json". Default data file contains two example of cooldowns but it's simply shortname and amount of seconds.
Restrictions
Raid and Combat Block
Managed by NoEscape plugin, option to enable these two block can be found in config file.
Building Block
Prevents players from using shop while they are building block, option can be found in config file.
Spawn Block
Prevents players from using shop after they respawn, amount of seconds can be set in config file, 0 = disabled.
Wipe Block
Prevents players from buying specific items after wipe. Settings are located in "data/Shop/ItemsWipeBlock.json", similar as cooldowns.
Sales
By Permission (config file)
Discount on every item in the shop assigned by permission, multiple permission can be created with their own discount values.
By Category (categories data file)
Discount for every item within specified category.
By Item
Discount for specific item in the shop. If item is already in discounted category, higher discount will be applied.
WelcomePanel integration
To integrate this plugin into WelcomePanel simply use one of the four configs included in download package. These config were premade for each WelcomePanel template (goes from 1 to 4). In case you have own highly customized layout for WelcomePanel you will have to adjust "Layout Container" in Shop config file by yourself.
ServerPanel adds a player information menu to your server, where you can both share important and useful information with your players and integrate your plugins into it!
🌟 Features
User-Friendly Interface: Intuitive GUI for easy navigation and interaction.
Economy Integration: Supports various economy plugins for seamless financial management.
Dynamic Menu Categories: Organize functionalities into customizable categories for better user experience.
Extensive Configuration Options: Almost every aspect of the plugin can be customized, including messages, colors, sizes, fonts, tion.
Auto-Open Menu: Automatically displays the menu upon player connection, configurable per server settings.
Block Settings: Control access to the menu during building, raiding, or combat situations to enhance gameplay balance.
Multiple Economy Head Fields: Display various economic metrics such as balance, server rewards, and bank information.
Permission Management: Fine-tune permissions for different user roles to control access to features.
Localization Support: Easily translate and customize all messages for different languages.
Performance Optimized: Designed to minimize server lag while providing rich functionality.
Customizable Hooks: Integrate with existing economy systems using customizable hooks for adding, removing, and displaying balances.
Editor Position Change: Admins can now change editor positions with a simple click, choosing between left, center, or right alignments.
Command Enhancements: Commands are now processed with multiple arguments separated by "|", enabling bulk command processing.
🎮 Commands
/info – open menu
/sp.install (or) /welcome.install – open installer menu
sp.migrations – console command for updating plugin data structure when upgrading to new versions. Automatically creates backups before making changes.
sp.migrations list – shows available migrations and whether they need to run
sp.migrations run <version> – runs specific migration (e.g., "1.3.0")
sp.migrations run <version> force – forces migration even if not detected as needed
🛡️ Permissions
serverpanel.edit – allows players to edit the plugin settings and open the edit menu
serverpanelinstaller.admin - required to access the plugin installation functions
🎥 Video
🖼️ Showcase
Templates
Template V1
Template V2
Template V3
Template V5
Editor
Installer
🧪 TEST SERVER
Join our test server to view and experience all our unique features yourself!
Copy the IP Address below to start playing!
connect 194.147.90.239:28015
📊 Update Fields
ServerPanel supports dynamic update fields that can be used in your templates to display real-time information. These fields are automatically updated and can be used in text components, headers, and other interface elements.
Player Information
{online_players} – Number of currently online players
{sleeping_players} – Number of sleeping players
{all_players} – Total number of players (online + sleeping)
{max_players} – Maximum server capacity
{player_kills} – Player's kill count (requires KillRecords, Statistics, or UltimateLeaderboard)
{player_deaths} – Player's death count (requires KillRecords, Statistics, or UltimateLeaderboard)
{player_username} – Player's display name
{player_avatar} – Player's Steam ID for avatar display
Economy
{economy_economics} – Economics plugin balance
{economy_server_rewards} – ServerRewards points
{economy_bank_system} – BankSystem balance
Note: Economy fields are fully customizable in "oxide/config/ServerPanel.json" under "Economy Header Fields". You can add support for any economy plugin by configuring the appropriate hooks (Add, Balance, Remove). Custom keys can be created and used in templates just like the default ones.
Server Information
{server_name} – Server hostname
{server_description} – Server description
{server_url} – Server website URL
{server_headerimage} – Server header image URL
{server_fps} – Current server FPS
{server_entities} – Number of entities on server
{seed} – World seed
{worldsize} – World size
{ip} – Server IP address
{port} – Server port
{server_time} – Current server time (YYYY-MM-DD HH:MM:SS)
{tod_time} – Time of day (24-hour format)
{realtime} – Server uptime in seconds
{map_size} – Map size in meters
{map_url} – Custom map URL
{save_interval} – Auto-save interval
{pve} – PvE mode status (true/false)
Player Stats
{player_health} – Current health
{player_maxhealth} – Maximum health
{player_calories} – Calorie level
{player_hydration} – Hydration level
{player_radiation} – Radiation poisoning level
{player_comfort} – Comfort level
{player_bleeding} – Bleeding amount
{player_temperature} – Body temperature
{player_wetness} – Wetness level
{player_oxygen} – Oxygen level
{player_poison} – Poison level
{player_heartrate} – Heart rate
Player Position
{player_position_x} – X coordinate
{player_position_y} – Y coordinate (height)
{player_position_z} – Z coordinate
{player_rotation} – Player rotation (degrees)
Player Connection
{player_ping} – Connection time in seconds
{player_ip} – Player's IP address
{player_auth_level} – Authorization level (0=Player, 1=Moderator, 2=Admin)
{player_steam_id} – Steam ID
{player_connected_time} – Connection start time
{player_idle_time} – Idle time (HH:MM:SS)
Player States
{player_sleeping} – Is sleeping (true/false)
{player_wounded} – Is wounded (true/false)
{player_dead} – Is dead (true/false)
{player_building_blocked} – Is building blocked (true/false)
{player_safe_zone} – Is in safe zone (true/false)
{player_swimming} – Is swimming (true/false)
{player_on_ground} – Is on ground (true/false)
{player_flying} – Is flying (true/false)
{player_admin} – Is admin (true/false)
{player_developer} – Is developer (true/false)
Network & Performance
{network_in} – Network input (currently shows 0)
{network_out} – Network output (currently shows 0)
{fps} – Server FPS
{memory} – Memory allocations
{collections} – Garbage collections count
Usage Example:
You can use these fields in any text component like: "Welcome {player_username}! Server has {online_players}/{max_players} players online."
🔧 API Documentation for Developers
ServerPanel provides an API for plugin developers to integrate their plugins into the menu system.
Required Methods
API_OpenPlugin(BasePlayer player) - Main integration method that returns CuiElementContainer
OnServerPanelClosed(BasePlayer player) - Called when panel closes (cleanup)
OnServerPanelCategoryPage(BasePlayer player, int category, int page) - Called when category changes (cleanup)
OnReceiveCategoryInfo(int categoryID) - Receives your category ID
Integration Example
[PluginReference]
private Plugin ServerPanel;
private int _serverPanelCategoryID = -1;
private void OnServerInitialized()
{
ServerPanel?.Call("API_OnServerPanelProcessCategory", Name);
}
private void OnReceiveCategoryInfo(int categoryID)
{
_serverPanelCategoryID = categoryID;
}
private void OnServerPanelCategoryPage(BasePlayer player, int category, int page)
{
// Cleanup when player switches categories
}
private CuiElementContainer API_OpenPlugin(BasePlayer player)
{
var container = new CuiElementContainer();
// Create base panels (required structure)
container.Add(new CuiPanel()
{
RectTransform = {AnchorMin = "0 0", AnchorMax = "1 1"},
Image = {Color = "0 0 0 0"}
}, "UI.Server.Panel.Content", "UI.Server.Panel.Content.Plugin", "UI.Server.Panel.Content.Plugin");
container.Add(new CuiPanel()
{
RectTransform = {AnchorMin = "0 0", AnchorMax = "1 1"},
Image = {Color = "0 0 0 0"}
}, "UI.Server.Panel.Content.Plugin", "YourPlugin.Background", "YourPlugin.Background");
// Add your plugin's UI elements here
container.Add(new CuiLabel
{
RectTransform = {AnchorMin = "0.1 0.8", AnchorMax = "0.9 0.9"},
Text = {Text = "Your Plugin Interface", FontSize = 16, Align = TextAnchor.MiddleCenter, Color = "1 1 1 1"}
}, "YourPlugin.Background", "YourPlugin.Title");
// Add buttons, panels, etc. using "YourPlugin.Background" as parent
return container;
}
private void OnServerPanelClosed(BasePlayer player)
{
// Cleanup when panel closes
}
Header Update Fields
API_OnServerPanelAddHeaderUpdateField(Plugin plugin, string updateKey, Func<BasePlayer, string> updateFunction) - Registers a per-player string provider for a header placeholder. Returns true on success.
API_OnServerPanelRemoveHeaderUpdateField(Plugin plugin, string updateKey = null) - Unregisters a specific updateKey for your plugin, or all keys for your plugin when updateKey is null. Returns true on success.
Usage Example
[PluginReference]
private Plugin ServerPanel;
private void OnServerInitialized()
{
// Register a dynamic header field for each player
ServerPanel?.Call("API_OnServerPanelAddHeaderUpdateField", this, "{player_kdr}", (Func<BasePlayer, string>)(player => GetKdr(player)));
}
private string GetKdr(BasePlayer player)
{
// Compute and return the value to display in the header for this player
return "1.23";
}
Using in UI: Place your key (e.g., {player_kdr}) directly in Header Field texts. The value will be updated per player using your function.
📚 FAQ
Q: Why can't I open the menu?
A: Make sure that the plugin is installed and activated on your server. If the problem persists, contact the server administrator.
Q: How do I enable Expert Mode? (disables automatic template updates)
A: In the data file "Template.json", turn on the "Use an expert mod?" option:
"Use an expert mod?": true,
P.S. "Template.json” is located in the "oxide/data/ServerPanel" directory (if you use Oxide) or in the "carbon/data/ServerPanel" directory (if you use Carbon)
Q: I see black images with Rust logo or get error 429 when loading images. What should I do?
A: These issues occur when there are problems downloading images from the internet. To fix this, enable Offline Image Mode which will use local images instead:
Enable the mode in config:
Open "oxide/config/ServerPanel.json" (or "carbon/config/ServerPanel.json" for Carbon)
Set "Enable Offline Image Mode": true
Set up the images:
Create folder "TheMevent" in "oxide/data" (or "carbon/data" for Carbon)
Download PluginsStorage (click "CODE" → "Download ZIP")
Extract the ZIP and copy all contents to the "TheMevent" folder
Reload the plugin:
Type o.reload ServerPanel (Oxide) or c.reload ServerPanel (Carbon)
Note: If using a hosting service, you may need to use their file manager or FTP to upload the files.
Q: Does ServerPanel work only with Mevent's plugins?
A: Currently, ServerPanel integrates seamlessly with Mevent's plugins (Shop, Kits, Daily Rewards, etc.). However, other developers can use the provided API to integrate their plugins into the menu system. The plugin system is designed to be extensible for third-party integrations.
Q: Why do integrated plugins (Shop, Kits) have different window sizes?
A: Different plugins may use different templates for integration. Make sure all your integrated plugins use the same template version (V1, V2, etc.) that matches your ServerPanel template. Update the template in each plugin to ensure consistent sizing.
Q: The panel displays differently for different players. How can I make it show the same on everyone's screen?
A: This issue occurs when players have different UI scale settings. To fix this and ensure consistent display for all players:
Open the "Template.json" file located in "oxide/data/ServerPanel" (or "carbon/data/ServerPanel" for Carbon)
Find the "Parent (Overlay/Hud)" setting in the "Background" section
Change the value from "Overlay" to "OverlayNonScaled"
Save the file and restart your server or reload the plugin
Q: How can I change the video displayed in the ServerPanel interface to my own custom video?
A: Yes, you can replace the default video with your own! You need to find and modify the command:
serverpanel_broadcastvideo [your_video_url]
Replace [your_video_url] with the direct link to your video. For best compatibility, we recommend hosting your video on imgur.com.
Q: My custom images are not loading or show as blank/question marks. What image hosting should I use?
A: For custom images, we recommend using imgbb.com for image hosting. Avoid Imgur and services without direct access to the image. For the most reliable experience, use Offline Image Mode with local images instead.
Q: How can I make plugin UIs open outside of the ServerPanel menu instead of inside categories?
A: You can configure buttons to execute chat commands that open plugin UIs independently. To do this:
In your button configuration, set "Chat Button": true
Set the "Commands" field to "chat.say /command" (replace "command" with the actual plugin command)
Example: To open the Cases plugin outside the menu:
"Chat Button": true
"Commands": "chat.say /cases"
This will execute the command as if the player typed it in chat, opening the plugin's interface independently rather than within the ServerPanel menu.
Q: Text in V4 template is shifting or sliding out of place. How can I fix this?
A: This issue occurs when text width isn't properly configured. ServerPanel provides "TITLE LOCALIZATION" settings to control text width for categories and pages:
Open the ServerPanel editor (click the "ADMIN MODE" button to open the edit menu)
Select the category or page you want to edit (click to "EDIT CATEGORY" or "EDIT PAGE" button)
In the editor, find the "TITLE LOCALIZATION" section
For each language (en, ru, etc.), you'll see three columns:
LANGUAGE - The language code
TEXT - The localized text content
WIDTH (px) - The width setting in pixels
Adjust the "WIDTH (px)" value to match your text length. Longer text requires larger width values
Save your changes and test in-game
Tip: Start with a width value around 100-150 pixels for short text, and increase it for longer titles. You can adjust this value until the text displays correctly without shifting.
$9.99
Offline Raid Limiter
Stop Unfair Offline Raids in Their Tracks
Tired of seeing your Rust server overrun by offline raid abuse? Offline Raid Limiter steps in to restore balance and fair play. With powerful tracking and immediate damage blocking, your players can enjoy a more authentic Rust experience—and you can enjoy worry-free server management.
Key Benefits
Prevent Offline Raid Abuse
Daily + Per-Wipe raid limits
Run daily limits, wipe limits, or both at the same time (fully configurable).
Proximity-Based Tracking: Only counts raids when attackers are within range of a Tool Cupboard (TC), ensuring offline raid limits don’t trigger prematurely.
Smart Raid Session Management
Team & Additional Raider Tracking: Keeps tabs on individual players as well as entire teams—even if they leave and rejoin. Plus, if additional players jump into the same raid, their involvement is recorded.
Edge Case Handling: No more confusion or gaps in coverage if a defender goes offline mid-raid or when multiple attackers are involved. Offline Raid Limiter’s robust logic sorts out these scenarios seamlessly.
Instant Damage Blocking
Enforce Fair Play: Once a team or individual hits their daily offline raid quota, further damage is blocked automatically. That means no more sneaky workarounds or unstoppable raids.
Modded Server UI
In-Game Control: For modded servers, gain access to a simple in-game UI that displays raid history, player statistics, and real-time session data.
Player-Friendly Features: Grant permissions so your players can check their offline raid counts with the /orl.mystats command—helping everyone stay within the rules.
Detailed Alerts & Reporting
Discord Integration: Offline Raid Limiter sends comprehensive alerts to Discord, making admin oversight a breeze.
Export & Clear Sessions: Use /orl.export to log and share your entire raid history for deeper analysis, then wipe all sessions with a simple console command if you need a fresh start.
Designed for Vanilla & Modded Servers
Flexible Configuration: If you set your server to "Vanilla,” the plugin automatically disables UI and direct damage blocks, limiting itself to Discord notifications so admins can monitor raiding behind the scenes.
Seamless Integration: Works hand-in-hand with Rust’s existing frameworks and requires only the Simple Status & Image Library for certain UI elements.
Why Choose Offline Raid Limiter?
Enhanced Fairness: Players can’t take shortcuts with offline raids for easy loot.
Clear Oversight: Admins see exactly who’s raiding and how often, helping you enforce balanced gameplay.
Configurable & User-Friendly: Tailor the plugin to your server’s needs in just a few clicks, with plenty of documentation to guide you.
If you’re ready to level the playing field and protect your community from unfair offline raids, Offline Raid Limiter has you covered. Bring your Rust server to new heights of balance, transparency, and peace of mind!
Commands & Usage
Player Commands (permission based)
/orl.mystats — Shows your overall stats (daily + wipe, plus active limits).
/orl.mydaily — Shows your daily offline raids and daily limit.
/orl.mywipe — Shows your wipe offline raids and wipe limit.
Admin Commands
/orl.disable <hours> — Temporarily disables enforcement for X hours.
/orl.enable — Re-enables immediately.
/orl.clearall — Clears all stored raid sessions (and fully resets tracking).
/orl.clearplayer <SteamID64 or name> — Clears raids for a specific player/team.
/orl.export — Exports raid sessions to JSON via the debug webhook.
/orl.dailyall [top] — Shows a “top raiders” list for daily scope.
/orl.wipeall [top] — Shows a “top raiders” list for wipe scope.
/orl.dailyplayer <name/id> — Check a player’s daily count.
/orl.wipeplayer <name/id> — Check a player’s wipe count.
Damage / Raid Logic
OfflineRaidLimiter checks incoming damage to building blocks, doors, external walls, and more.
If a team or player has exceeded the daily offline raid limit, all further damage to offline bases is blocked—and you can optionally broadcast an alert to Discord.
Key Points to Note About Commands
Some commands differ depending on your permissions and server setup. For instance, if a player types /exportraidsessions in chat, it won’t work unless they have OfflineRaidLimiter.admin.
For "Vanilla” servers (as set in the config), UI, damage blocking, and certain other features may be disabled—so commands like clearraidsessions and clearraidsforplayer will still work, but may only be visible to server admins via console.
When Commands Might Defer
Cleanup Commands: If the plugin detects that some raid sessions are still "cooling down” (meaning the raid window hasn’t fully expired), the system may defer clearing them until the next pass. This prevents conflicts with currently active raids.
Blocking Logic: After the daily limit is reached, the blocking triggers immediately and remains in place until the next server reset or cleanup routine (depending on how you configure it).
$30.00
Fed up with the need to use multiple addons on my server for functions that players could execute from within the game, and considering the constant increase of new Skins for builds, I found myself dissatisfied with the limited supply of automatic upgrades on the market.
For this reason, I have reworked the most used TC-related features on my server into a single plugin, which has been enriched with ideas contributed by players and other Rust administrators.
All this under an attractive graphical interface, inspired by the item store of the game itself.
Video Update 1.5.0
Video Update 1.4.9
Video Update 1.4.0
Old Video
Features
AUTOMATIC CONSTRUCTION SKINS
With BetterTC your players will be able to improve their builds to any level of improvement, but they will also be able to choose their favorite Skin (if you enable it) completely free of charge or offering it to the VIPS on your server.
Update system: I have added a small system that checks for new skins to automatically add them to the configuration. When you install the plugin for the first time and once you obtain permission from bettertc.admin, you must click on "Check Update" so that it performs an internal check and adds all the skins and options that exist to date.
LIST OF AUTHORIZED PLAYERS
It allows players or simply the rest of the Staff to easily see which players are authorized in the locker. Except for the administrators themselves, if you activate it in the config. (I don't think any player needs to know that the admin was authorized in their locker to check something)
You can also allow authorizations to be deleted individually.
AUTOMATIC IMPROVEMENT SYSTEM
Allows your players to upgrade the grade of their bases automatically by obtaining resources directly from the TC. As long as they don't have RaidBlock (if you use NoEscape/RaidBlock plugin of course).
You can configure different speed levels and costs depending on the player's permission from the plugin's own settings. That is, you can have players improve a building every 5 seconds for free and VIPs can improve every 2 or 1... Use your imagination!
In addition, you can also calculate the cost of materials that will be required to carry out said improvement by clicking on the info button.
A new setting has been added to disable the Container skin's multi-color option. Disabling this option, which is enabled by default, will slightly improve frame rates in builds using this skin: Fewer colors = Better performance (FPS Client).
AUTOMATIC RESKIN OF EXTERNAL WALLS
The plugin also includes an automatic reskin system for external walls.
Previously, it was only compatible with standard stone external walls and their adobe variant. Now, it also includes the ability to switch wooden walls to Frontier and vice versa. Ice walls have also been added as a variant for stone.
If you place regular stone external walls (the usual ones), you can change their appearance to adobe or ice by clicking on the corresponding wall icon.
When changing the skin, the original wall's health will be preserved, so if it’s damaged, it won’t be fully restored. This prevents players from abusing the system.
Important:
I recommend using the system for external walls as an appearance modification system, not as an upgrade system. In other words, with the following configuration: "Only reskin on wall of the same grade": true
If you disable this parameter, you will be able to change from wood to stone, or vice versa, completely free of charge. Since the wall system doesn’t have a cost mechanism for players, I recommend keeping this option enabled.
AUTOMATIC REPAIR SYSTEM
Allows your players to repair their bases automatically by obtaining resources directly from the TC. As long as they don't have RaidBlock (if you use NoEscape of course). Now since version 1.4.0 it will also repair damaged objects such as doors, trapdoors, windows, boxes!
With configurable cooling system to prevent repair abuse during raids. ("Repair Cooldown After Recent Damage (seconds)": 30.0)
AUTOMATIC CONSTRUCTION DEGRADATION
It allows players to regret upgrading their huge base to metal and not being able to afford it anymore. Of course, it will charge them resources as if they improved it from 0. However, if you do not want to allow downgrade you can disable it from the config.
AUTOMATIC WALLPAPER PLACEMENT
Allows your players to place any available wallpaper in the game automatically based on the building type. Support for wallpapers on walls, ceilings, and floors.
Wallpapers are always kept up-to-date automatically. So if FacePunch adds new wallpapers, they will be instantly added to the list.
You'll also enjoy my exclusive wallpapers. Since update 1.5.0, you can also add and remove custom wallpapers with the following commands.
Chat Command:
Usage: /addwp <skinid> <Wall|Floor|Ceiling>,
Example: /addwp 3356517390 Wall,
Usage: /wpb (It allows you to place wallpapers on boats. To do this, you must first sit at the boat’s steering wheel.)
Console Command:
Usage: addwp <skinid> <Wall|Floor|Ceiling>,
Example: addwp 3356517390 Wall
I've added a new parameter to the config: "Wallpaper Damage": true Setting this parameter to false prevents wallpapers from being broken in melee or with ammunition. However, you can still break them with C4 or missiles. Blocking damage completely is more complex and, in my opinion, unnecessary.
In addition, with BetterTC you can place wallpapers on both sides of the walls, even if they are on the outside of the building, as it includes an option in the configuration to force this placement.
TC SKINS
Give your players the ability to change the appearance of their TC.
ALLOWS TO SAVE OLD ITEMS
A new configuration option has been added to allow saving items back to the TC.
"Allow items in TC inventory": {
"gunpowder": false,
"sulfur": false,
"sulfur.ore": false,
"explosives": false,
"diesel_barrel": false,
"cctv.camera": false,
"targeting.computer": false
}
CONSTRUCTION EFFECTS
Allows players to disable auto-build buff effects and reduces headaches.However, if you do not want to allow them to disable this, you can disable it from the config.
BETTER GUI
The plugin's interface has been programmed so that it maintains its size regardless of the interface scaling settings of each player.
It has also been taken into account that perhaps not everyone wants to enable all options for their players. Therefore, the buttons that appear at the top of the TC have been programmed so that if a player does not have permission for a specific function, instead of leaving the space empty, the buttons adapt their position automatically.
The player list GUI and construction SKINS have also been prepared with a pagination system if necessary.
95% of the images used in the plugin are loaded directly from the client side, thus optimizing the loading and rendering of the interface and reducing the use of Image Library.
Carbon Image Module support. If your server is running Carbon instead of Oxide, it will now use the built-in module instead of the Image Library.
Permissions
bettertc.admin Exclusive for Admin. It allows you to check if there are new skins to add. You will not appear in the list of authorized players if the option in the settings is activated.
bettertc.authlist Shows a button at the top of the TC to check which players are authorized.
bettertc.deleteauth Allows you to individually revoke an authorized player. You can give this permission to players if you want them to be able to delete individually.
bettertc.use It is the basic degree of use found in the configuration.
bettertc.vip It is the level of use for advanced that is found in the configuration. Depending on how you configure it, it makes players with this permission improve/repair/change skin faster. Or it simply costs them less resources.
bettertc.repair Displays a button on top of the TC to repair the build automatically.
bettertc.repair.nocost No explanation needed I think. (USE WITH CAUTION)
bettertc.reskin Allows players to change the skin of their build automatically. Imagine one day you upgrade your entire foundation to container and the next day you regret losing FPS and would like to leave it on normal metal.
bettertc.reskin.nocost No explanation needed I think.
bettertc.updefault Shows players the default upgrade options. Without SKINS.
bettertc.upskin Show players upgrade options with SKINS.
bettertc.upwall Allows players to change the skin of external walls.
bettertc.upgrade Permission to evade blocking of all items.
bettertc.upgrade.nocost No explanation needed I think. (USE WITH CAUTION)
bettertc.wallpaper Allows players to place Wallpaper.
bettertc.wallpaper.nocost No explanation needed I think. (USE WITH CAUTION)
bettertc.wallpaper.custom Display custom wallpapers to players with this permission.
bettertc.tcskinchange Allows players to change the TC skin.
bettertc.tcskindeployed Allows players to place TC with Skin.
Commands
Chat Command:
Usage: /addwp <skinid> <Wall|Floor|Ceiling>,
Example: /addwp 3356517390 Wall,
Console Command:
Usage: addwp <skinid> <Wall|Floor|Ceiling>,
Example: addwp 3356517390 Wall
Configuration
DEFAULT CONFIGURATION
{
"Check for updates when loading": true,
"Bypass DLC ownership check (⚠ only allowed on creative/test servers per Facepunch rules)": false,
"Use NoEscape Plugin": false,
"Use RaidBlock Plugin": true,
"GUI Buttons TC - Color Default": "0.3 0.40 0.3 0.60",
"GUI Buttons TC - Color Active": "0.90 0.20 0.20 0.50",
"GUI Buttons TC - OffsetMin": "280 621",
"GUI Buttons TC - OffsetMax": "573 643",
"GUI Buttons TC - AnchorMin": "0.5 0",
"GUI Buttons TC - AnchorMax": "0.5 0",
"Alert Gametip": true,
"Alert Chat": true,
"Alert Notify Plugin": false,
"Notify: select what notification type to be used": {
"error": 0,
"info": 0
},
"Color Prefix Chat": "#f74d31",
"Show Admin Auth List": false,
"Show SteamID Auth List": true,
"Upgrade Effect": true,
"Colour Selection MultiColor Option": false,
"Reskin Enable": true,
"Reskin Wall Enable": true,
"Only reskin on wall of the same grade": true,
"Reskin Wall TC Distance (Default: 100)": 100.0,
"Deployables Repair": true,
"Repair Cooldown After Recent Damage (seconds)": 30.0,
"Downgrade Enable": true,
"Downgrade only Owner Entity Build": false,
"Upgrade only Owner Entity Build": false,
"Upgrade / Downgrade only Owner and Team": true,
"Wallpaper Enable": true,
"Wallpaper placement Cost (Cloth)": 5,
"Wallpaper Damage": true,
"Wallpaper both sides": true,
"Force both sides including external sides": true,
"Cooldown Frequency Upgrade (larger number is slower)": {
"bettertc.use": 2.0,
"bettertc.vip": 1.0
},
"Cooldown Frequency Reskin (larger number is slower)": {
"bettertc.use": 2.0,
"bettertc.vip": 1.0
},
"Cooldown Frequency Repair (larger number is slower)": {
"bettertc.use": 2.0,
"bettertc.vip": 1.0
},
"Cooldown Frequency Wallpaper (larger number is slower)": {
"bettertc.use": 2.0,
"bettertc.vip": 1.0
},
"Cost Modifier for repairs": {
"bettertc.use": 1.5,
"bettertc.vip": 1.0
},
"Allow Items in TC Inventory": {
"gunpowder": false,
"sulfur": false,
"sulfur.ore": false,
"explosives": false,
"diesel_barrel": true,
"cctv.camera": true,
"targeting.computer": true
},
...
]
}
Bonus
KNOWN ISSUES
Random spawn of default (blue) wallpapers in constructions. If this happens on your server, it's likely because you have the TruePVE plugin or a similar one installed. Make sure to disable the configuration option that protects wallpaper damage in that plugin.
Instead, enable wallpaper damage protection in BetterTC. While it won't prevent 100% of the damage to wallpapers, it will significantly reduce it—especially from melee weapons.
For any problem, doubt, suggestion or assistance do not hesitate to contact me by Discord ninco90#6219
If you need me to configure everything from scratch, according to your tastes, for your server I can also do it for an additional fee. Although you should be able to configure everything yourself 😊
☣️🧟♂️ FORSAKEN ISLANDS – 5000K CREATIVE RUST MAP MADE FOR BUILDERS AND EXPLORERS!
Forsaken Islands is a hauntingly beautiful and dangerously fun 5000K Rust map built for explorers, survivors, and creative builders alike. Packed with every major monument and 40+ custom ❌ marked build locations hidden across eerie islands, forgotten coastlines, and mysterious terrain. Designed with ultra low entity counts for buttery smooth performance, endless creativity, and nonstop gameplay. Your players will NEVER run out of creepy new places to explore, conquer, and build on Forsaken Islands. Even though this is a 5000K Map performance is top notch! Land mass is more closer to a 4500 size Map because of all the islands and rivers.
⭐What Makes It Special
⚒️40+ Custom Build Zones marked with an "X" on the Map!!! Your players will NEVER run out of fun places to build their base!
We use super shallow beach areas so there are always spots for players to build and endless spots for your Raidable Bases to spawn. These shallow beach waters go out very far allowing for spawning and building of all types!
Fully connected train tracks + underground rails for fast travel and tactical control
Endless Custom Buildable areas/Caves/Rock Formations that players will love!
Beautiful Snowy Mountains, Rivers, Canyons and Valleys players can Build on
Diverse terrain: forests, deserts, coasts, cliffs, valleys & plateaus
Perfect for solos, clans, builders, and high-pop servers.
SUPER Low-prefab, FPS-friendly buildables:
Custom caves
Floating Crystal Rock Islands with HeliPad
Custom HUGE Bus Stop Bases! - Enjoy those nostalgic bus stop builds
Underwater Locations to build a base
Hidden structures
Unique build pockets with glass roofs
Works with 100% of all Popular Events Plugins like Convoy, ArmoredTrain, Raidable Bases, Sputnik, Airfield Event and many more!
🗼Custom Monuments:
Stinky Man Joes Bridge
Crystal Island
🏭All Facepunch Monuments Included:
Launch Site • Military Tunnels • Military Base • Silo • Airfield • Power Plant • Water Treatment • Trainyard • Harbors • Outpost • Excavator • Large Oil Rig • Small Oil Rig • Arctic Base • Junkyard • Sphere Tank • Satellite Dish • Ferry Terminal • Sewer Branch • Abandoned Supermarket • Oxum's Gas Station • Mining Outpost • Lighthouse • Bandit Camp • Fishing Village • Large Barn • Underwater Labs • Stone Quarry • Sulfur Quarry • HQM Quarry • Underwater Labs • Abandoned Cabins • Jungle Ziggurat • Jungle Ruins • Caves • Ranch — and more.
🗺️Map Info
Size: 5000k
Prefabs: ~8140
🆘Support
Discord: Dymize_
What's New
Fresh uploads, new releases, and recently updated files.
-
$37.00
By Nomad Rush
-
Free
By HunterZ
-
Free
By educatalan02
-
$9.99$6.99By RainyDev
-
$30.00$20.00By Enclave
-
Free
By Tigernaut
-
Free
By -Samir-
-
$5.00
-
By L33
Highest Rated
Top-rated picks trusted and loved by the community.
-
$16.99
By David
-
$40.00$30.00By nivex
-
$29.99
By LosGranada
-
$29.99
By imthenewguy
-
$24.99
By Whispers88
-
$40.00$31.95By Mevent
-
Free
By Steenamaroo
-
$14.99
By AhigaO
-
$19.99$15.99By Fruster
-
$14.99
By David
-
$45.99
By Monster
-
$19.99
By ZEODE
-
$19.99
By Fruster
Trending Files
Popular picks members are downloading the most right now.
-
$35.00
By KpucTaJl
-
$24.99
By Whispers88
-
Free
By KpucTaJl
-
$29.99
By imthenewguy
-
$29.99
By Adem
-
$40.00
By The_Kiiiing
-
$24.99
By Khan
-
$24.99
By imthenewguy
-
$40.00$31.95By Mevent
-
$15.00
By imthenewguy
-
$25.00$18.75By Martian
Great Deals
Discounted picks, limited-time deals, and sale items worth grabbing now.
-
$24.99$19.99By SlayersRust
-
$3.99$2.99By Alka
-
$10.99$7.99By fullwiped
-
$12.99$9.90By m1t1ngg
-
$9.99$4.99By SlayersRust
-
By Shemov
-
By fullwiped
-
$14.99$9.99By SlayersRust
-
$29.99$11.40 -
$11.99$10.79By kaysharp
-
$20.00$12.99By Qbis
Latest Reviews
See what customers are saying about their experience with files.
Absolutely outstanding map.
Bwana Dik has been a fantastic addition to our LuffyRust 1000x server, and our players absolutely love it. The layout is well thought out, the pacing works perfectly for fast-action gameplay, and the overall craftsmanship really shows.
The map feels polished, balanced, and built with purpose. From the custom areas to the flow between monuments, roads, rails, and build locations, everything feels like it was designed to keep players engaged without feeling ov
very good sigma ligma bigma skibidi toilet 67 67 67 so good skibidi yes yes
Great Quality of Life plugin. This should be how Rust does it. Quick on any fixes needing down too! Thanks!!
What a beauty of a QoL plugin! No hassle, load it, equip the backpack and wonder how you played Rust for so long without this. Prompt and effective turnaround of fixes from the developer also. 5 stars!
Bought this a while back only just used it recently. Creator gave no support to the bugs. The plugin does not work correct. And like many other customers has reported he does not reply or seem to care. Granted it took me a long time to use I still paid money for this for it to be useless still. Would recommend purchasing from somewhere with better support and aftercare for their products.
Exelent 🙂 easy understand all
Great plugin you don't realise how much you need it till you don't have it.
My players love it and i love it. Thanks for the quick replies and quick fixes.
fun server not to hard not to easy. its great!!! great for all players
5 starssssss
Great setup, I just added the file to the config folder and reloaded the plugin and it worked.
Very nice map with some great build spots and the dev is awesome at responding to any questions or bugs you find