Featured framework
Carbon for modern Rust servers
Fast, self-updating, and built for performance with seamless in-game plugin and server management.
1,500+
servers powered by Carbon
AdminWarn is designed for situations where players clearly violate server rules or require a direct and serious warning.
With the latest update, an optional popup warning mode has been added alongside the mandatory acknowledgment GUI.
This allows admins to send clean, non-intrusive messages displayed at the top of the screen.
News: To avoid disrupting gameplay (such as PvP), you can use:
/warnpopup <SteamID> <message>
/warnpopupall <message>
The core purpose of AdminWarn remains unchanged: forcing players to acknowledge warnings.
Each mandatory warning includes a single confirmation button, ensuring the player has read and accepted it.
Acknowledgment events are tracked via Discord webhook logs, including whether the warning was confirmed while the player was online or after reconnecting.
AdminWarn is built for manual use only.
It is not an automated warning system.
All warnings are intentionally sent by admins using commands.
At the same time, the system works intelligently in the background:
- Warnings sent to offline players are stored and automatically shown when they next join, even days later.
- For online players, warnings remain active until acknowledged, then are automatically cleared.
- All data is fully wipe-aware and automatically cleaned on server wipes.
Each warning includes built-in in-game sound effects.
No external or custom audio files are used.
This is not a chat message.
Warnings are delivered as visual UI elements that require acknowledgment or appear as optional popup notifications.
Even if a player closes the game, mandatory warnings will reappear on the next login until confirmed.
No movement restrictions are applied.
Warnings can be sent via:
- RCON
- Server console
- In-game admin console (F1)
🚀 Performance:
AdminWarn is built with an optimized and efficient code structure, making its presence virtually unnoticeable on the server.
It runs smoothly during long uptimes and maintains stable hook memory and performance values under normal server conditions.
🔄 Wipe Behavior:
- Restarts: Data preserved (approved warnings are auto-deleted for data optimization)
- Server wipe: All warning data automatically cleared
- No manual cleanup needed (Most of the time, it is not necessary)
🔧 Commands Chat & Rcon:
Note: Player names are not unique and may include different alphabets or special characters. To avoid ambiguity, using Steam64ID is strongly recommended when sending warnings.
warn <SteamID> <message>
warn <PlayerName> <message>
warn <SteamID1>,<SteamID2>,<SteamID3> <message>
warn <Name1>,<Name2>,<Name3> <message>
warnall <message>
warnpopup <SteamID> <message>
warnpopup <PlayerName> <message>
warnpopup <SteamID1>,<SteamID2>,<SteamID3> <message>
warnpopup <Name1>,<Name2>,<Name3> <message>
warnpopupall <message>
🔐 Permissions Oxide/Carbon
oxide.grant group admin adminwarn.admin
c.grant group admin adminwarn.admin
📊 Discord Webhook Logging
- Player name/steamid and SteamURL
- Warning message / Timestamp
- Read status (online/after reconnect)
- Logs warning sending
- Logs individual warning acknowledgements
📁 Config:
{
"Warning sound": "assets/prefabs/building/wall.frame.shopfront/effects/metal_transaction_complete.prefab",
"Clear data on wipe": true,
"Discord Webhook URL": "https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks",
"Discord Log Enabled": true,
"Log Global Warnings (warnall)": true,
"Log Warning Sent (single + multi)": true,
"Show Date in GUI": true,
"Show logo in warning GUI": true,
"Logo size (px) — local image should be a square PNG, recommended 75-120": 90,
"Use local images (false = use Web URL below)": true,
"Web image URL for logo (128x128 transparent PNG recommended, used only when Use local images is false)": "",
"Popup duration (seconds)": 10
}
$25.00
Custom Smelt Item
Custom Smelt Item is an all-in-one plugin that allows you to add smeltable items, fuel items, and freely set the processing speed of each furnace. Create a unique gameplay experience with new smelting recipes, fuel items, and smelting speed adjustments! Compatible with Oxide. Installing this mod will change the smelting system from the vanilla version.
⚠️Note
This data includes "Custom Smelt Item" and "Custom Smelt Item Experimental." Please install only one of them.
"Custom Smelt Item" functions as a stable version, while "Custom Smelt Item Experimental" functions as a Experimental version.
"Custom Smelt Item Experimental" allows you to set additional foods, but please make sure you understand how to use this mod before using it. If there are many reports of bugs caused by incorrect use, we will discontinue releasing the Experimental version.
Custom Smelt Item Experimental will turn off the visuals of food places in campfires, etc.
Read below for instructions on how to use it.
■ Custom Smelting Items
- Set any item to be smelted
- Freely configure input/output items
- Set processing time for each item
- Set output amount per processing
- Support for skinned items (SkinID)
- Custom name settings for output items
- Item type classification for each furnace type (ore, oil)
■ Custom Fuel System
- Add any item as fuel
- Set burn time for each fuel
- Set by-product output (e.g., wood → charcoal)
- Adjust by-product drop rate
- Support for skinned fuel items
■ Furnace Speed Multiplier
Individual speed settings for each furnace type(Custom Smelt Item)
- Furnace
- Legacy Furnace
- Large Furnace
- Electric Furnace
- Small Oil Refinery
Notice : The speed cannot be adjusted for any other types. The speed for all other types is set to 1. This setting is to adjust the interaction between fuel and cooking time. (Custom Smelt Item Only)
You can fully customize the config, adding refined items, fuel items, refinement speed, and more.
*Please do not delete default items from the settings.
Custom Smelting Item
{
"Smelting Patterns": [
{
"ItemType": "oil", ///ore" (for furnaces) or "oil" (for refineries)
"InputItem": "crude.oil", ///Input item short name
"InputItemSkinId": 0, ///Input item skin ID
"OutputItem": "lowgradefuel", ///Output item short name
"OutputItemSkinId": 0, ///Output item skin ID
"OutputItemName": null, ///Custom display name for the output item (null for default)
"RequiredTime": 30, ///Smelting time (seconds)
"OutputAmountPerProcess": 3 ///Output amount per 1
},
{
"ItemType": "oil",
"InputItem": "diesel_barrel",
"InputItemSkinId": 0,
"OutputItem": "lowgradefuel",
"OutputItemSkinId": 0,
"OutputItemName": null,
"RequiredTime": 180,
"OutputAmountPerProcess": 150
},
{
"ItemType": "ore",
"InputItem": "metal.ore",
"InputItemSkinId": 0,
"OutputItem": "metal.fragments",
"OutputItemSkinId": 0,
"OutputItemName": null,
"RequiredTime": 10,
"OutputAmountPerProcess": 1
},
{
"ItemType": "ore",
"InputItem": "sulfur.ore",
"InputItemSkinId": 0,
"OutputItem": "sulfur",
"OutputItemSkinId": 0,
"OutputItemName": null,
"RequiredTime": 7,
"OutputAmountPerProcess": 1
},
{
"ItemType": "ore",
"InputItem": "hq.metal.ore",
"InputItemSkinId": 0,
"OutputItem": "metal.refined",
"OutputItemSkinId": 0,
"OutputItemName": null,
"RequiredTime": 20,
"OutputAmountPerProcess": 1
},
{
"ItemType": "ore",
"InputItem": "can.tuna.empty",
"InputItemSkinId": 0,
"OutputItem": "metal.fragments",
"OutputItemSkinId": 0,
"OutputItemName": null,
"RequiredTime": 20,
"OutputAmountPerProcess": 10
},
{
"ItemType": "ore",
"InputItem": "can.beans.empty",
"InputItemSkinId": 0,
"OutputItem": "metal.fragments",
"OutputItemSkinId": 0,
"OutputItemName": null,
"RequiredTime": 25,
"OutputAmountPerProcess": 15
},
{
"ItemType": "ore",
"InputItem": "honeycomb",
"InputItemSkinId": 0,
"OutputItem": "honey",
"OutputItemSkinId": 0,
"OutputItemName": null,
"RequiredTime": 3,
"OutputAmountPerProcess": 1
},
{
"ItemType": "ore",
"InputItem": "techparts",
"InputItemSkinId": 0,
"OutputItem": "metal.refined",
"OutputItemSkinId": 0,
"OutputItemName": null,
"RequiredTime": 120,
"OutputAmountPerProcess": 10
},
{
"ItemType": "ore",
"InputItem": "sheetmetal",
"InputItemSkinId": 0,
"OutputItem": "metal.fragments",
"OutputItemSkinId": 0,
"OutputItemName": null,
"RequiredTime": 180,
"OutputAmountPerProcess": 150
},
{
"ItemType": "ore",
"InputItem": "scrap",
"InputItemSkinId": 0,
"OutputItem": "metal.fragments",
"OutputItemSkinId": 0,
"OutputItemName": null,
"RequiredTime": 15,
"OutputAmountPerProcess": 10
}
],
"Fuel Patterns": [
{
"FuelInputItem": "wood", ///Fuel item short name
"FuelInputItemSkinId": 0, ///Fuel item skin ID
"FuelOutputItem": "charcoal", ///By-product item (null if none)
"FuelOutputItemSkinId": 0, ///By-product skin ID (default is 0)
"FuelOutputItemName": null, ///Custom by-product Display name
"FuelOutputAmountPerProcess": 1, ///By-product amount per fuel consumed
"FuelOutputChance": 0.7, ///By-product generation probability (0.0-1.0)
"FuelBurnTime": 10 ///Burn time per fuel (seconds)
},
{
"FuelInputItem": "lowgradefuel",
"FuelInputItemSkinId": 0,
"FuelOutputItem": null,
"FuelOutputItemSkinId": 0,
"FuelOutputItemName": null,
"FuelOutputAmountPerProcess": 0,
"FuelOutputChance": 0.0,
"FuelBurnTime": 80
},
{
"FuelInputItem": "coal",
"FuelInputItemSkinId": 0,
"FuelOutputItem": null,
"FuelOutputItemSkinId": 0,
"FuelOutputItemName": null,
"FuelOutputAmountPerProcess": 0,
"FuelOutputChance": 0.0,
"FuelBurnTime": 180
},
{
"FuelInputItem": "charcoal",
"FuelInputItemSkinId": 0,
"FuelOutputItem": null,
"FuelOutputItemSkinId": 0,
"FuelOutputItemName": null,
"FuelOutputAmountPerProcess": 0,
"FuelOutputChance": 0.0,
"FuelBurnTime": 60
},
{
"FuelInputItem": "cloth",
"FuelInputItemSkinId": 0,
"FuelOutputItem": null,
"FuelOutputItemSkinId": 0,
"FuelOutputItemName": null,
"FuelOutputAmountPerProcess": 0,
"FuelOutputChance": 0.0,
"FuelBurnTime": 30
},
{
"FuelInputItem": "plantfiber",
"FuelInputItemSkinId": 0,
"FuelOutputItem": null,
"FuelOutputItemSkinId": 0,
"FuelOutputItemName": null,
"FuelOutputAmountPerProcess": 0,
"FuelOutputChance": 0.0,
"FuelBurnTime": 120
}
],
"Oven Speed Multipliers": { ///Furnace Smelt Speed
"Furnace": 1.0,
"Legacy Furnace": 1.0,
"Large Furnace": 2.0,
"Electric Furnace": 2.0,
"Small Oil Refinery": 3.0
}
}
Custom Smelt Item Experimental
{
"Can Cook In Furnace": false, ///Can food be cooked in a furnace?
"Smelting Patterns": [
{
{
"ItemType": "food", ///"ore" or "oil" or "food"
"InputItem": "mushroom",
"InputItemSkinId": 0,
"OutputItem": "apple",
"OutputItemSkinId": 3347673417,
"OutputItemName": "Cooked Mushroom",
"RequiredTime": 30,
"OutputAmountPerProcess": 1
},
{
"ItemType": "food",
"InputItem": "seed.corn",
"InputItemSkinId": 0,
"OutputItem": "apple",
"OutputItemSkinId": 3154577332,
"OutputItemName": "Popcorn",
"RequiredTime": 30,
"OutputAmountPerProcess": 1
}
...
],
"Fuel Patterns": [
{
"FuelInputItem": "wood",
"FuelInputItemSkinId": 0,
"FuelOutputItem": "charcoal",
"FuelOutputItemSkinId": 0,
"FuelOutputItemName": null,
"FuelOutputAmountPerProcess": 1,
"FuelOutputChance": 0.7,
"FuelBurnTime": 10
},
...
],
"Oven Speed Multipliers": {
"Furnace": 1.0,
"Legacy Furnace": 1.0,
"Large Furnace": 2.0,
"Camp Fire": 1.0,
"Cursed Cauldron": 1.0,
"Skull Fire Pit": 1.0,
"Stone Fireplace": 1.0,
"Hobo Barrel": 1.0,
"Barbeque": 2.0,
"Cooking Workbench": 2.0,
"Electric Furnace": 2.0,
"Small Oil Refinery": 3.0
}
}
■ Configuration Option Details
ItemType: Item type: "ore" (for furnaces) or "oil" (for refineries)
InputItem: Input item short name
InputItemSkinId: Input item skin ID
OutputItem: Output item short name
OutputItemSkinId: Output item skin ID
OutputItemName: Custom display name for the output item (null for default)
RequiredTime: Refining time (seconds)
OutputAmountPerProcess: Output amount per unit
■ Fuel Pattern Settings
FuelInputItem - Fuel item short name
FuelInputItemSkinId - Fuel item skin ID
FuelOutputItem - By-product item (null if none)
FuelOutputItemSkinId - By-product skin ID (default is 0)
FuelOutputItemName - Custom by-product name
FuelOutputAmountPerProcess - By-product amount per fuel consumed
FuelOutputChance - By-product generation probability (0.0-1.0)
FuelBurnTime - Burn time per fuel (seconds)
Important Notes
- Food items (raw meat, fish, etc.) cannot be set as smelting items in Custom Smelt Items, as they maintain vanilla cooking behavior.
- Custom Smelt Item Only : Furnace speed cannot be adjusted for other types. All other types have the speed set to 1. This setting is to adjust the interaction between fuel and cooking time.
- The same item cannot be set as both a smelting item and a fuel item.
- The same item cannot be assigned to multiple item types (ore + oil).
- Fuel settings can only be used for smelting. Vehicle fuel consumption settings cannot be configured.
- The fuel used for vehicles cannot be customized with this mod.
- Please note that compatibility with other mods is not supported.
⚠️⚠️⚠️Important: How to Use Custom Smelt Items (Experimental)⚠️⚠️⚠️
To stop using this mod and keep the server running, you must remove all custom food items from the input slots of the cookable ovens. Before removing this mod, be sure to run the server console command (or reinstall the mod and then run the server console command again).
Failure to perform this step will prevent the server from starting.
Also, absolutely do not save the server in this state; it will corrupt the server save data.
Target Type
Campfire
Cursed Cauldron
Fireplace
Hobo Barrel
BBQ
Cooking Workbench
Console Command : removefood
When you run the command, a confirmation message will appear. Enter "y" if you agree. Then, remove this mod.
VOID / NINJA WORKS
DISCORD : https://discord.gg/U8uxePjSyA
MADE IN JAPAN
This is a custom package designed by us, featuring 210 unique bases and a specialized loot setup for five different difficulty levels, ranging from Easy to Nightmare.
Note: The building skins in the package showcase images may differ from the spawned bases or use the default building skin.
This MEGA PACK is an upgraded version of the FullWiped-110 Bases + Loot Pack we previously offered. If you've already purchased the FullWiped-110 Bases + Loot Pack, you only need to buy the expansion pack, which includes 100 new bases ranging from Easy to Hard. Get it here: https://codefling.com/bases/raidable-bases-pack-100-bases-expanded-package-from-easy-to-hard
Warning: The Raidable Bases plugin requires the Copy Paste plugin to function. You must install both for this bases pack to work.
🔗Raidable Bases (Paid): https://codefling.com/plugins/raidable-bases
🔗Copy Paste (Free): https://umod.org/plugins/copy-paste
This Raidable Bases Pack & Loot Tables package includes:
🏡70 Easy Bases +🗡️Base_Loot Tables (Easy "Vanilla" and "Enhanced" tables included)
🏡60 Medium Bases +🗡️Base_Loot Tables (Medium "Vanilla" and "Enhanced" tables included)
🏡60 Hard Bases +🗡️Base_Loot Tables (Hard "Vanilla" and "Enhanced" tables included)
🏡10 Expert Bases +🗡️Base_Loot Tables (Expert "Vanilla" and "Enhanced" tables included)
🏡10 Nightmare Bases +🗡️Base_Loot Tables (Nightmare "Vanilla" and "Enhanced" tables included)
Beware: Our loot table package includes only the 5-tier loot tables within the Base_loot folder, ranging from easy to nightmare.
It does not include the loot tables from the Difficulty_Loot or Weekday_Loot folders.
VANILLA AND ENHANCED LOOT TABLES FOR RAIDABLE BASES
This package includes 10 different base loot table files, ensuring a well-structured and advanced configuration for every difficulty level, from Easy to Nightmare.
- 5 loot files for the Vanilla setup (Easy, Medium, Hard, Expert, Nightmare), offering a balanced loot experience with some junk items, staying close to a 1x rate.
- 5 loot files for the Enhanced setup (Easy, Medium, Hard, Expert, Nightmare), designed for modded servers with 2x, 3x, or higher gather rates, featuring cleaner loot tables with minimal junk and more valuable rewards.
📁Installation Path:
All loot table files are intended for the 📁/oxide/data/RaidableBases/Base_Loot directory.
⚠️Setup Requirement: You must choose and install only one loot table setup at a time—either Vanilla or Enhanced. If you want to switch, you can replace the current files with the other set, but both cannot be active simultaneously.
For those exclusively seeking the loot table, we offer it as a standalone product: https://codefling.com/customizations/raidable-bases-loot-tables-pack
(Note: If you've purchased our Raidable Bases Mega Pack & Loot Tables (210 Bases) package, there is no need to buy this separately.)
WARNING: TWO DIFFERENT INSTALLATION METHODS
(PLEASE READ BOTH AND APPLY ONLY THE ONE THAT FITS YOUR NEEDS)
⚙️INSTALLATION GUIDE 1:
(If you do not have a custom configuration and are not a professional in server configurations, choose this option. However, if you already have your own configuration and profile settings and do not wish to use the optional configs we provide—in other words, if you only need the bases and loot tables—use the second installation guide instead.)
▶ Step 1: Place the Config File
From the extracted ZIP files, locate the config folder and find the RaidableBases.json file. Move it to the following directory:
📁/serverfiles/oxide/config
▶ Step 2: Place the Bases
From the extracted ZIP files, locate the copypaste folder and move it to the following directory:
📁/serverfiles/oxide/data
▶ Step 3: Place the Base_Loot Tables
From the extracted ZIP files, locate the Base_Loot folder and move it to the following directory:
📁/serverfiles/oxide/data/RaidableBases
Important: If there are any existing JSON files inside this folder that are not part of our loot tables, delete them to ensure proper functionality.
Choose between Vanilla or Enhanced loot tables based on your preference.
If the folder is named "Base_Loot (Enhanced loot)", remove the text in parentheses so that the correct folder name is simply: "Base_Loot" (Otherwise, the loot tables will not work properly.)
▶ Step 4: Place the Profiles Folder
From the extracted ZIP files, locate the profiles folder and move it to the following directory:
📁/serverfiles/oxide/data/RaidableBases
Why Are Profiles Important?
The profiles folder contains crucial settings that allow you to:
✔️ Enable/disable the dome
✔️ Enable/disable NPCs
✔️ Adjust the number of lootable items
These are just a few examples—there are dozens of important settings that directly affect how raid bases function. The config file alone is not enough—these files play a major role in customizing your raid bases.
⚡ I strongly recommend reviewing each difficulty setting (Easy to Nightmare) inside the profiles folder and adjusting them based on your needs.
▶ Step 5: Restart the plugin via RCON:
o.reload RaidableBases
⚙️INSTALLATION GUIDE 2:
(Use this installation method if you do not want to use our configurations and instead prefer to use your own config files and your own 📁/oxide/data/RaidableBases/Profiles configurations.)
In this case, you only need to add the bases. To do this, use the following commands in RCON:
▶ Step 1:
You can add bases one by one or in bulk.
After executing the commands in RCON, the bases will be registered inside the Profiles configuration.
If you do not want to deal with these adjustments, it is recommended to use Installation Guide 1 instead.
A- Example RCON commands:
rb.config add "Easy Bases" fullwipedeasy1
rb.config add "Hard Bases" fullwipedhard1
B- Commands to Integrate Raid Bases in Bulk via RCON:
rb.config add "Easy Bases" fullwipedeasy1 fullwipedeasy2 fullwipedeasy3 fullwipedeasy4 fullwipedeasy5 fullwipedeasy6 fullwipedeasy7 fullwipedeasy8 fullwipedeasy9 fullwipedeasy10 fullwipedeasy11 fullwipedeasy12 fullwipedeasy13 fullwipedeasy14 fullwipedeasy15 fullwipedeasy16 fullwipedeasy17 fullwipedeasy18 fullwipedeasy19 fullwipedeasy20 fullwipedeasy21 fullwipedeasy22 fullwipedeasy23 fullwipedeasy24 fullwipedeasy25 fullwipedeasy26 fullwipedeasy27 fullwipedeasy28 fullwipedeasy29 fullwipedeasy30 fullwipedeasy31 fullwipedeasy32 fullwipedeasy33 fullwipedeasy34 fullwipedeasy35 fullwipedeasy36 fullwipedeasy37 fullwipedeasy38 fullwipedeasy39 fullwipedeasy40 fullwipedeasy41 fullwipedeasy42 fullwipedeasy43 fullwipedeasy44 fullwipedeasy45 fullwipedeasy46 fullwipedeasy47 fullwipedeasy48 fullwipedeasy49 fullwipedeasy50 fullwipedeasy51 fullwipedeasy52 fullwipedeasy53 fullwipedeasy54 fullwipedeasy55 fullwipedeasy56 fullwipedeasy57 fullwipedeasy58 fullwipedeasy59 fullwipedeasy60 fullwipedeasy61 fullwipedeasy62 fullwipedeasy63 fullwipedeasy64 fullwipedeasy65 fullwipedeasy66 fullwipedeasy67 fullwipedeasy68 fullwipedeasy69 fullwipedeasy70
rb.config add "Medium Bases" fullwipedmed1 fullwipedmed2 fullwipedmed3 fullwipedmed4 fullwipedmed5 fullwipedmed6 fullwipedmed7 fullwipedmed8 fullwipedmed9 fullwipedmed10 fullwipedmed11 fullwipedmed12 fullwipedmed13 fullwipedmed14 fullwipedmed15 fullwipedmed16 fullwipedmed17 fullwipedmed18 fullwipedmed19 fullwipedmed20 fullwipedmed21 fullwipedmed22 fullwipedmed23 fullwipedmed24 fullwipedmed25 fullwipedmed26 fullwipedmed27 fullwipedmed28 fullwipedmed29 fullwipedmed30 fullwipedmed31 fullwipedmed32 fullwipedmed33 fullwipedmed34 fullwipedmed35 fullwipedmed36 fullwipedmed37 fullwipedmed38 fullwipedmed39 fullwipedmed40 fullwipedmed41 fullwipedmed42 fullwipedmed43 fullwipedmed44 fullwipedmed45 fullwipedmed46 fullwipedmed47 fullwipedmed48 fullwipedmed49 fullwipedmed50 fullwipedmed51 fullwipedmed52 fullwipedmed53 fullwipedmed54 fullwipedmed55 fullwipedmed56 fullwipedmed57 fullwipedmed58 fullwipedmed59 fullwipedmed60
rb.config add "Hard Bases" fullwipedhard1 fullwipedhard2 fullwipedhard3 fullwipedhard4 fullwipedhard5 fullwipedhard6 fullwipedhard7 fullwipedhard8 fullwipedhard9 fullwipedhard10 fullwipedhard11 fullwipedhard12 fullwipedhard13 fullwipedhard14 fullwipedhard15 fullwipedhard16 fullwipedhard17 fullwipedhard18 fullwipedhard19 fullwipedhard20 fullwipedhard21 fullwipedhard22 fullwipedhard23 fullwipedhard24 fullwipedhard25 fullwipedhard26 fullwipedhard27 fullwipedhard28 fullwipedhard29 fullwipedhard30 fullwipedhard31 fullwipedhard32 fullwipedhard33 fullwipedhard34 fullwipedhard35 fullwipedhard36 fullwipedhard37 fullwipedhard38 fullwipedhard39 fullwipedhard40 fullwipedhard41 fullwipedhard42 fullwipedhard43 fullwipedhard44 fullwipedhard45 fullwipedhard46 fullwipedhard47 fullwipedhard48 fullwipedhard49 fullwipedhard50 fullwipedhard51 fullwipedhard52 fullwipedhard53 fullwipedhard54 fullwipedhard55 fullwipedhard56 fullwipedhard57 fullwipedhard58 fullwipedhard59 fullwipedhard60
rb.config add "Expert Bases" fullwipedexp1 fullwipedexp2 fullwipedexp3 fullwipedexp4 fullwipedexp5 fullwipedexp6 fullwipedexp7 fullwipedexp8 fullwipedexp9 fullwipedexp10
rb.config add "Nightmare Bases" fullwipednight1 fullwipednight2 fullwipednight3 fullwipednight4 fullwipednight5 fullwipednight6 fullwipednight7 fullwipednight8 fullwipednight9 fullwipednight10
▶ Step 2: Place the Base_Loot Tables
From the extracted ZIP files, locate the Base_Loot folder and move it to the following directory:
📁/serverfiles/oxide/data/RaidableBases
Important: If there are any existing JSON files inside this folder that are not part of our loot tables, delete them to ensure proper functionality.
Choose between Vanilla or Enhanced loot tables based on your preference.
If the folder is named "Base_Loot (Enhanced loot)", remove the text in parentheses so that the correct folder name is simply: "Base_Loot" (Otherwise, the loot tables will not work properly.)
▶ Step 3: Restart the plugin via RCON:
o.reload RaidableBases
EXTRA IMPORTANT INFORMATIONS:
We do not use a dome, NPCs, or arena walls around raid bases on our servers, and in the ZIP file we provided, these features are also disabled by default. If you want to enable them, you will need to adjust the settings accordingly.
For example, to enable the dome, follow the steps below:
Navigate to:
📁/oxide/data/RaidableBases/Profiles
Open the files inside the Profiles folder with a text editor.
Locate the following settings:
(This is already set to false because it is required for markers to appear on the map.)
"Spawn Silently (No Notification, No Dome, No Map Marker)": false,
"Create Dome Around Event Using Spheres (0 = disabled, recommended = 5)": 0,
Change the value from 0 to 5 as shown below:
"Create Dome Around Event Using Spheres (0 = disabled, recommended = 5)": 5,
Additionally, the loot amount for bases varies depending on the difficulty level (easy, medium, hard, expert, and nightmare). You can adjust this setting in the same Profiles location according to your needs:
"Amount Of Items To Spawn": 210,
For example, in medium bases, this value is set to 210, which determines the total number of items that will appear in crates, furnaces, and the cupboard.
Our current configuration is specifically adjusted to prevent players from feeling overwhelmed by massive buildings right after a wipe. We have configured Maintained Events accordingly to ensure a balanced experience.
In our setup:
- Timed events and purchasable events are disabled.
- After a wipe, easy bases will start spawning 30 minutes later.
- Nightmare bases will begin spawning 48 hours (2 days) later.
Imagine starting the game with just a torch in hand and immediately encountering a nightmare base on the shore.
You’d likely quit the game right away—this setting is crucial for us to avoid such scenarios.
Configuration Example: 📁/serverfiles/oxide/config
"Maintained Events": {
"Always Maintain Max Events": true,
"Max Maintained Events": 30,
"Enable X Hours After Wipe (0 = immediately)": {
"Easy": 0.5,
"Medium": 1.0,
"Hard": 3.0,
"Expert": 24.0,
"Nightmare": 48.0
All of our bases from Easy to Nightmare are equipped with turret protection.
If you do not want turrets to spawn in your raidable bases on your server, you can use the following method.
Go to the file path /data/RaidableBases/Profiles, open the JSON files inside with a text editor, and apply the following:
"Kill These Prefabs After Paste": [
"assets/prefabs/npc/autoturret/autoturret_deployed.prefab",
"autoturret_deployed"
],
If you are satisfied with this package, you can support us by leaving a 5-star review on the site where you purchased it. Your feedback motivates us to continue improving and providing even better configurations for dedicated server owners like you.
Thank you! ❤️
$24.99
Skinner! The unrivaled no.1 performance skinning plugin. Skin any item in the game with a unique skinbox giving you live skinning, auto skinning and skin sets.
Thanks for everyone who has given feed back through the duration of the beta release. Skinner 3.0 is finally here!
Visual overhaul! - with dynamic UI menus for permission based player menus
Automatic skin filtering and dev modes for new TOS
Permission based skin sets
Team share skins!
Auto unlock owned skins!
and More!!!
Live Skinning - Skin items in place without moving them
Auto import - Automatically import and use all game approved skins
Skin Sets - Create a variety of different skin sets for any item
Skin Requests - Allows players to request and Admins to accept new skins in game
Auto Skins - Automatically apply selected skins to every item that enters your inventory
Skinner 2.0 offers unrivaled performance in plugin efficiency. Our standard testing shows runtime results were 60x faster and memory usage was 200x more efficient than the closest peforming plugin.
SkinMenu Commands:
/Skin or /S - Live skin any item in your inventory by selecting a skin you wish to apply
/SkinCraft or /Sc - Create multiple skin sets for use in other functions such as skinauto or skinteam
/Skinitem or /Si - Skin a deployable item you are looking at ingame.
Args - Spectify 1, 2 or 3 to automatically use a skin set.
Automatic Commands:
/Skincon or /scon - sets all items in a container you are looking at to your default craft set
Args - Optional, spectify 1, 2 or 3 to automatically use a skin set.
/Skininv or /sinv - sets all items in your inventory to your default craft set
Args - Optional, spectify 1, 2 or 3 to automatically use a skin set.
/Skinauto or /Sauto - Automatically apply selected skins to every item that enters your inventory based off your skin sets.
Args - Optional, spectify 1, 2 or 3 to automatically use a skin set.
/Skinteam or /st - sets all items in your inventory and your teams to your default craft set
Args - Optional, spectify 1, 2 or 3 to automatically use a skin set.
Toggle - Use /skinteam toggle to opt in or out of the team skin set
/SkinBase - Allows you to skin all deployables in your base to your default skincraft skins.
Args - Optional, specify item name to filter items being skinned example: /Skinbase sleepingbag to only skin sleeping bags.
/SkinAll Command - Skin all the items in all the containers in your base.
Args - Optional, specify item by shortname example: /SkinAll rifle.ak to only skin ak47's.
Skin Import Commands:
/Skinimport or /sip - Import custom workshop skins
Args - WorkshopID example: /Skinimport 2397648701
/Colimport or /cip - Import custom workshop collection using /skinimport collectionID
Args - Collection ID example: /Colimport 2921147807
/Skinrequest or /Sr - Request a skin to be added to skinner, requested skins will show in the /Skinrequests UI for approval
Args - WorkshopID example: /Skinrequest 2397648701
/Skinrequests or /Srs - Opens the the skinner menu with a box of skins awating approval
Button Usage - Select an option and remove the skin to enact the process
Try - Recieve a copy of an item with that skin
Approve - Adds the skin from the menu to the imported skins list
Deny - Removes the skin
Note: All chat commands are universal meaning they can be used via the console, rcon(for import commands) and can be customized via the configuration.
Player Permissions:
Skinner.default - enables /skin command
Skinner.items - enables /skinitem command
Skinner.craft - enables /skincraft command
Skinner.skinauto - enables /skinauto command
Skinner.skincon - enables /skincon command
Skinner.skininv - enables /skininv command
Skinner.skinbase - for use of the /skinbase command
Skinner.skinteam - Allows the use of the /skinteam command
Skinner.skinall - for the use of the /skinall command
Skinner.skinrequest - enables /skinrequest
Cooldowns Permissions:
Cooldown settins can be adjusted via the plugin config. Applying the cooldown permission example skinner.default30 will enforce cooldowns on those with the permission. If no cooldown permission is applied no cooldowns will be enforced. If multiple cooldown perms are assigned to a single player they fastest cooldown will be used.
"Command based cooldowns ('permission' : 'command' seconds": {
"Default30CD": {
"skin": 30.0,
"skinitem": 30.0,
"skincraft": 30.0,
"skincon": 30.0,
"skininv": 30.0,
"skinteam": 30.0,
"skinbase": 60.0,
"skinall": 60.0
}
Admin Permissions:
Skinner.import – enables /Skinimport, /Colimport and /Skinrequests
Skinner.bypassauth - bypasses the building auth requirement when using /Skinitem
Skinner.permskintry - enables try feature when using /Skinrequests
Warning: trying a skin will make a copy of that item. Only give this perm to admins who are allowed to spawn items.
Other Permissions:
Skinner.skinautotoggled - applied when a player disables skinauto
Skinner.skinteamblock - applied when a player disables team skins
Skinner offers multiple ways of importing skins including via the config and through commands:
Importing via the config:
To import skins via the config insert workshopIDs into the imported skins list as per the code snippet below, once finished reload skinner and the shortname and displayname fields will be automatically populated. You can add extra skins at any stage using this method.
"Imported Skins List": {
"861142659": {},
"2617744110": {}
},
Optionally entire workshop skin collections can be added to conifg, each item skin is automatically imported to your imported skins list on plugin load.
"Import Skin collections (steam workshop ID)": [496517795,2921147807],
Importing via commands:
Commands can be used to edit the config options for imported skins and collections via RCON, chat commands and the f1 console. Commands include:
/Skinimport WorkshopID
/Colimport CollectionID
Importing via Skin Requests:
Players can requests skins to be added to the game using the skinrequests feature. By using the command /skinrequest WorkshoID a skin gets automatically uploaded to the skin requests box. Admins with the skinner.import permission can open the requests box with the /skinrequests command.
Skins from the request box can then be "tried" approved or denied.
Each skin requested can be logged to discord using the webhook in the config.
Importing from other plugins:
Skinner now has a tool for windows to import data from skinbox, xskins and skincontroller. Simply select your json data file with imported skins into the tool and copy the new imported skins list into the skinner config.
https://github.com/Whispers88/SkinDataConverter/releases/tag/Main
Note: The "Imported Skins (skinid : 'shortnamestring', skinid2 : 'shortnamestring2'": {}" is now redundant and automatically converted to imported skins list.
{
"Skin Commands (skin items in you inventory": [
"skin",
"s",
"skinbox",
"sb"
],
"Skin Items Commands (skin items you have already placed": [
"skinitem",
"si",
"skindeployed",
"sd"
],
"Set default items to be skinned": [
"skincraft",
"sc"
],
"Automatically set all items in you inventory to your default skins": [
"skininv",
"sinv"
],
"Automatically set all items a container to your default skins": [
"skincon",
"scon"
],
"Automatically skin all deployables in your base": [
"skinbase",
"skinbuilding"
],
"Automatically skin all items in your base": [
"skinall",
"sa"
],
"Automatically skin all items that are moved into you inventory": [
"skinauto",
"sauto"
],
"Skin your teams inventories with your skin set": [
"skinteam",
"st"
],
"Request workshop skins via workshop ID": [
"skinrequest",
"sr"
],
"Approve workshop skin requests": [
"skinrequests",
"srs"
],
"Set your selected skin set": [
"skinset",
"ss"
],
"Import Custom Skins": [
"skinimport",
"sip"
],
"Import Workshop Collection Command": [
"colimport",
"cip"
],
"Skin Request Notification Discord Webhook": "",
"Custom Page Change UI Positon anchor/offset 'min x, min y', 'max x', max y'": [
"0.5 0.0",
"0.5 0.0",
"198 60",
"400 97"
],
"Custom Searchbar UI Positon anchor/offset 'min x, min y', 'max x', max y'": [
"0.5 0.0",
"0.5 0.0",
"410 635",
"572 660"
],
"Custom Set Selection UI Positon anchor/offset 'min x, min y', 'max x', max y'": [
"0.5 0.0",
"0.5 0.0",
"250 610",
"573 633"
],
"Auto import approved skins": true,
"Remove player data after inactivity (days)": 14,
"Apply names of skins to skinned items": true,
"Add Search Bar UI": true,
"Use on itemcraft hook (skin items after crafting - not required when using skinauto)": false,
"Override spraycan behaviour": false,
"Use spraycan effect when holding spraycan and skinning deployables": true,
"Blacklisted Skins (skinID)": [],
"Blacklisted Itemms (itemID)": [],
"Import Skin collections (steam workshop ID)": [],
"Command based cooldowns ('permission' : 'command' seconds": {
"Default30CD": {
"skin": 30.0,
"skinitem": 30.0,
"skincraft": 30.0,
"skincon": 30.0,
"skininv": 30.0,
"skinteam": 30.0,
"skinbase": 60.0,
"skinall": 60.0
}
},
"Imported Skins List": {}
}
//Get all Cached skins
public Dictionary<int, List<ulong>> GetAllCachedSkins()
{
return _cachedSkins;
}
//Check if skin is a Redirect item
public bool IsRedirectID(ulong uID)
{
return HasMask(uID);
}
//Convert Redirect ID to item ID
public int RedirectIDtoItemID(ulong uID)
{
return (int)UnsetMask(uID);
}
//Get a list of skins for a particular item
public List<ulong>? GetSkinsItemList(int itemid)
{
_cachedSkins.TryGetValue(itemid, out List<ulong>? cachedSkins);
return cachedSkins;
}
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.
$29.99
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 (14 contracts), Daily (16 contracts), Weekly (14 contracts) and Wipe (6)
50 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, plant, harvest, cloning
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"]
}
🌱 Plant
Requires the player to plant any or specified seeds
Configuration (excludes common objective fields):
type - Always "Plant"
amountRequired - An integer value greater than 0
items - List of seed shortnames. Leave empty for any seed.
Example (excludes common objective fields):
{
"type": "Plant",
"amountRequired": 100,
"items": ["seed.corn", "@berries_seed"]
}
🌾 Harvest
Requires the player to harvest any or specified plants.
Configuration (excludes common objective fields):
type - Always "Harvest"
amountRequired - An integer value greater than 0
items - List of seed shortnames. Leave empty for any seed.
source - One of Any, World or Planted
Any = Any plant | World = Natural plants | Planted = Player-planted plants
Example (excludes common objective fields):
{
"type": "Harvest",
"amountRequired": 100,
"items": ["mushroom", "@berries"],
"source": "World"
}
🍃 Cloning
Requires the player to clone any or specified plants.
Configuration (excludes common objective fields):
type - Always "Cloning"
amountRequired - An integer value greater than 0
items - List of clone shortnames to get. Leave empty for any clone.
Example (excludes common objective fields):
{
"type": "Cloning",
"amountRequired": 100,
"items": ["clone.hemp", "@berries_clone"]
}
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
AI-Powered Anti-Cheat & Moderation
Galium: the automated anti-cheat & moderation platform for Rust organizations
Detection, intelligence, and enforcement, automated and unified in one organizational dashboard.
Galium reads live, server-side gameplay to catch cheaters, teamers and rule-breakers from the way they play, then enforces automatically, 24/7, across every server you run. No client install. Works alongside EAC.
Request Access Join Discord
40,000+
players monitored live
2021
protecting Rust since
24/7
automated enforcement
Your browser does not support the video tag.
One automated layer over your whole operation
Galium is an anti-cheat at its core, designed to detect behavioral abuse through live production signals, risk modeling, and automated enforcement workflows. Everything runs server-side, so there is no client for players to install or tamper with, and detection runs off your game server without taxing your tick rate at peak population.
It analyzes four live behavioral signal streams in real time, and acts the moment a player crosses the line you set:
Combat
Aim, recoil & hit patterns
Movement
Speed, flight & position
Chat, voice & signs
AI toxicity & NSFW
Teams
Cooperation & grouping
Automated Pillar 01
Server-side anti-cheat
Galium flags the full range of Rust cheats from live gameplay, not from the player's machine, from blatant aimbot to the subtle no-recoil that slips past everything else. Every flagged player carries a single risk score and tier, so your staff review who matters first.
Detects in real time
Aimbot, triggerbot & aim assistance
No-recoil & no-spread
Spinbot, flyhack & speedhack
Scripting & automation
Risk scoring & tiers
One risk score per player, not per detection
Severity tiers prioritize who to review first
Explainable & auditable, never black-box
Weighting refined through years of real outcomes
Automated Pillar 02
Teaming detection, in 3D
Teaming beyond your group limit is the hardest rule on Rust to police, and the easiest to hide. Galium surfaces the relationships behind it and maps who is actually cooperating with whom, so you can act on evidence instead of suspicion.
✓
Flags cooperation that exceeds your group limit
✓
Player-to-player, player-to-clan & clan-to-clan scoring
✓
Weighted by interaction and proximity over time
Teaming on the 3D map · by RankEval
Automated Pillar 03
AI Moderation Toolkit
One AI-driven toolkit reads everything players type, say and draw. Language models score chat, speech models transcribe and judge voice, and computer vision scans every spray and sign. It acts in-game the moment something crosses the line, without a moderator in the loop.
Chat
AI toxicity scoring + word filters
Auto-mutes offenders instantly
Every action logged to Discord
Voice
AI transcribes voice in real time
Flags toxic & abusive players
Optional auto-enforcement & logs
Images
AI vision scans every spray & sign
Flags NSFW & offensive imagery
Auto-removed, no manual review
Automated enforcement that never sleeps
Detection only matters if something happens next. Build no-code rules (trigger, condition, action) and Galium bans, mutes, kicks or alerts the moment a player crosses your threshold, across every server, 24/7.
✓
No-code automation rules: trigger → condition → action
✓
Bans, mutes, kicks and alerts fire automatically, 24/7
✓
Two-way BattleMetrics ban sync
✓
Full Discord moderation bot, with actions & alerts posted live
✓
Ban history, mute history, evidence linkage & full audit trails
From a single server to a whole organization
Run one server or fifty. Galium fits both, and grows with you. Where most plugins stop at a single server, Galium gives every player one identity, one risk score and one enforcement history that follows them across everything you run.
✓
One player identity across your entire org
✓
Risk follows the player, not the server they join
✓
Behavioral profiles persist beyond wipe cycles
✓
Staff actions are fully traceable across teams
No silos. No per-server blind spots. One structured organizational view.
Plugs into the tools you already run
Discord
A full moderation bot with live alerts, actions and logs in your server.
BattleMetrics
Two-way ban sync keeps enforcement consistent everywhere.
RankEval
Player-position tracking and the 3D teaming map.
Automated moderation at scale starts here
If you operate Rust servers and need cross-server cheat detection, teaming intelligence and automated enforcement that runs itself, and Galium is the infrastructure to support it.
Request Access Join Discord
See every feature in detail at galium.gg/features
Automated Rust anti-cheat since 2021 · 40,000+ players monitored live · Built by CyberSynthetics Solutions LLC
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.
$29.99
Introducing Total Control – The Ultimate Rust Server Admin Tool
Total Control is a powerful full GUI admin plugin for Rust servers.
Whether you run hardcore PvP or relaxed PvE, Total Control gives you complete live control over every major system directly in-game, with zero config files or reloading after changes.
📅 Dynamic Schedule System:
•Plan your entire wipe and let the plugin do the work for you.
•Create up to 5 scheduled sets (plus the default) Automatically change gather rates, stack sizes, smelting, rewards, PvE/PvP mode, raid protection, and more at exact dates and times.
•Use real-world time or server time.
•Enable only the pages you want for each set everything else stays on your default settings.
•Run your server exactly how you want.
⚒️ Gather Rates & Stack Sizes:
•Full control over every item (ore, plants, crates, quarries, excavator, etc.) Quick multiplier buttons or type exact values.
•Category multipliers with individual item overrides.
•Add or remove any item instantly with chat commands.
🔥 Smelting & Cooking:
•Adjust speed, charcoal output, fuel usage, and resource output for every furnace type.
•Full control over the Mixing Table and Cooking Workbench.
🎁 Rewards System:
•Reward players for gathering, killing animals/NPCs/players, destroying barrels, emptying crates, Bradley/Heli loot, and playtime.
•Support for Scrap, Economics, and ServerRewards (use any or all three) Optional UI Notify integration with custom message styles.
⚙️ Settings Page:
•Auto or voted night skip. Time freeze, custom day/night lengths, and server date.
•PvE/PvP mode switching (manual or timed).
•Full raid protection (manual or timed).
•Offline raid protection (with adjustable cooldown timer).
•Option to disable shotgun traps, flame turrets, auto turrets, and SAM sites.
Any admin with the correct permission can open the Total Control GUI with /tc and modify everything, without requiring data file access or plugin reload. Ideal for administrators worldwide.
🔑 Permissions & Commands:
Permission: TotalControl.OpenGui
Chat Commands:
/tc Open the GUI
/addgather <shortname> /removegather <shortname> Add/Remove items to GatherRates page.
/addstack <shortname> /removestack <shortname> Add/Remove items to StackSize page.
/addreward <shortname or prefab> /removereward <shortname or prefab> Add/Remove items to Rewards page.
/raid help
/raid list List all excluded prefabs from Raid Protection.
/raid include <shortname | itemID | prefabID> /raid exclude <shortname | itemID | prefabID> Add/Remove items to or from Raid Protection.
/raid include <building.grade prefabID> /raid exclude <building.grade prefabID> Add/Remove Building blocks to or from Raid Protection.
(Shortnames list: https://www.corrosionhour.com/rust-item-list)
💬 Join the Community
Stay up to date, get support, make suggestions, report bugs, or promote your server.
🔗 https://discord.gg/AkwHUs8Qma
Welcome to UltimateCases - the most exciting case opening experience for Rust servers! Give your players the thrill of unboxing rare items with beautiful roulette animations, create unlimited custom cases with unique rewards, and build a thriving economy through our advanced key exchange system. Whether you want to reward active players with free cases or monetize your server with premium loot boxes, UltimateCases has everything you need to keep players engaged and coming back for more!
⭐️ Why Choose UltimateCases?
Beautiful Unboxing Experience - Watch your players' excitement as they spin the roulette and discover their rewards! Customizable animations, rarity backgrounds, and sound effects create an unforgettable opening experience.
Easy Case Creation - No coding required! Use our in-game visual editor to create cases, add items, set prices, and configure everything you need. Edit cases on the fly without touching configuration files.
Monetize Your Server - Turn your server into a profitable venture with our key exchange system. Players can buy keys using any currency (Economics, ServerRewards, scrap, etc.) and you control the economy.
Reward Active Players - Keep players engaged with free cases! Set playtime requirements and cooldowns to reward your most dedicated community members.
Protect Your Economy - Advanced limits and restrictions prevent abuse. Set daily limits, lifetime limits, minimum playtime requirements, and block case opening during combat or raids.
Store Rewards Safely - Built-in inventory system stores all case rewards securely. Players can retrieve items when they're ready, with options to persist items across wipes.
Share the Excitement - Announce rare wins in chat and Discord! Customizable logging and webhook integration lets your community celebrate big wins together.
NPC Traders at Monuments - Spawn NPCs at monuments where players can exchange keys for currency. Perfect for creating trading hubs and encouraging exploration!
VIP Benefits - Reward your supporters with exclusive discounts on case opening and key exchange. Multiple VIP tiers with customizable benefits.
Works Everywhere - Seamlessly integrates with ServerPanel, supports all major economy plugins, and works with ImageLibrary for perfect image management.
💰 Key Exchange System
Turn any currency into case keys! Our flexible exchange system supports:
Multiple Currencies - Use Economics, ServerRewards, BankSystem, IQEconomic, or any item (scrap, sulfur, etc.) as currency for key exchange.
Bulk Discounts - Reward players who exchange more keys! Automatic discounts: 5% off for 10+ keys, 10% off for 25+ keys, 15% off for 50+ keys, 20% off for 100+ keys.
VIP Discounts - Give your supporters extra savings! Configure permission-based discounts (5%, 10%, 15%, 20%) with custom daily limits.
Daily Limits - Prevent abuse by limiting how many keys players can exchange per day. Perfect for controlling your server economy.
Monument NPCs - Spawn traders at monuments! Players can visit NPCs at lighthouse, outpost, or any monument to exchange keys. Fully customizable appearance and rates.
📦 Smart Inventory System
Never lose a reward again! Our inventory system stores all case rewards safely:
Secure Storage - All case rewards are automatically stored in your personal inventory, accessible anytime through the UI.
Wipe Protection - Choose whether items persist across server wipes or are cleared automatically. Perfect for seasonal rewards!
Safe Retrieval - Items can only be retrieved when it's safe - no retrieving during combat, raids, or building blocked situations.
Post-Wipe Cooldown - Optional cooldown after wipe before items can be retrieved, helping maintain server balance.
📬 Video Overview
🖼️ Showcase
Templates
Fullscreen Template
ServerPanel V1 Template
ServerPanel V2 Template
ServerPanel V4 Template
In-Game Editor
Monument Trader
How to get Keys?
🎮 Commands
/opencases or /cases - Opens the cases interface for players
/cases.trader - Chat command for managing Monument Traders (requires ultimatecases.edit permission)
/cases.trader create [currencyID] [defaultKeys] [prefab] - Create a new trader bot
/cases.trader start <botIndex> - Enter edit mode for a trader
/cases.trader move - Update trader position (requires edit mode)
/cases.trader rotate <angle> - Set trader rotation (requires edit mode)
/cases.trader save - Save and reload trader (requires edit mode)
/cases.trader cancel/stop - Cancel edit mode
/cases.trader list - Show all configured trader bots
/cases.trader teleport <botIndex> - Teleport to a trader bot location
/cases.trader help - Show help for trader commands
cases.give - Console/Rcon command for giving keys or cases to players (admin only)
cases.give <player> keys <amount> - Give keys to a player
cases.give <player> case <caseID> [amount] - Give case(s) to a player
Examples: cases.give PlayerName keys 100 or cases.give 76561198000000000 case 0 5
cases.convert - Console command for converting cases from old Cases plugin (requires UltimateCasesConverter plugin, admin only)
cases.convert - Convert all cases and add them to existing UltimateCases data
cases.convert true - Clear existing UltimateCases data before converting (fresh start)
🛡️ Permissions
ultimatecases.edit - Permission to edit cases, items, and modals using the in-game editor. Required to access all editor functions and manage Monument Traders.
ultimatecases.discount1 - 5% discount on case opening
ultimatecases.discount2 - 10% discount on case opening
ultimatecases.discount3 - 15% discount on case opening
ultimatecases.vip1 - 5% discount on key exchange, with optional custom daily limit
ultimatecases.vip2 - 10% discount on key exchange, with optional custom daily limit
ultimatecases.vip3 - 15% discount on key exchange, with optional custom daily limit
ultimatecases.vip4 - 20% discount on key exchange, with optional custom daily limit
Note: Additional permissions can be configured in the config file for demo mode and quick unbox mode. These are optional and can be left empty to disable the features.
📚 FAQ
Q: How do I open the Case Editor?
A: To open the Case Editor:
Make sure you have the ultimatecases.edit permission
Open the cases menu using /opencases or /cases
Look for the "EDIT" button in the header of the interface (usually in the top-right area)
Click the "EDIT" button to open the Case Editor
From here you can create new cases, edit existing cases, add items, configure prices, permissions, and all case settings
Q: How do I open the Item Editor?
A: To open the Item Editor:
First, open the Case Editor (see instructions above)
Select a case from the list or create a new case
In the case editor, you'll see a section for items
Click "ADD ITEM" or click on an existing item to edit it
The Item Editor will open where you can configure item type, chance, image, title, description, permissions, and all item-specific settings (weapons, contents, genes, etc.)
Q: How do I open the Modal Editor?
A: To open the Modal Editor:
Make sure you have the ultimatecases.edit permission
Open the cases menu and navigate to any modal window (like the keys exchange modal)
Look for the "EDIT" button that appears on modal windows when you have edit permission
Click the "EDIT" button to open the Modal Editor
From here you can edit modal content, text elements, images, buttons, and all modal settings
Q: How do I create a case?
A: It's super easy! Open the cases menu in-game, click the "EDIT" button in the header, then click "ADD CASE" in the Case Editor. Configure the case title, image, price, permission, and add items. No file editing needed!
Q: Can players get free cases?
A: Yes! Enable Free Case Settings for any case. Set minimum playtime (e.g., 2 hours) and cooldown (e.g., 24 hours). Players meeting requirements can open the case for free once per cooldown period.
Q: How do I set up key exchange?
A: Go to Exchange Settings in the config. Add currencies (Economics, ServerRewards, scrap, etc.), set exchange rates, configure discounts, and you're done! Players can exchange currency for keys instantly.
Q: What can I put in cases?
A: Almost anything! Add items (weapons with attachments, containers with contents, blueprints, plant seeds with genes), or execute commands when cases are opened. Full customization for every reward type.
Q: How do Monument Traders work?
A: Configure NPCs in Exchange Settings to spawn at monuments. Players can visit these NPCs to exchange keys for currency. Set the monument (lighthouse, outpost, etc.), NPC appearance, position, and exchange rate.
Q: Can I limit how many cases players can open?
A: Absolutely! Set daily limits (e.g., 5 cases per day), total lifetime limits (e.g., 50 cases total), minimum playtime requirements, and block opening for a period after server wipe.
Q: How does the inventory system work?
A: When players open cases, rewards go to their inventory automatically. Players can access inventory through the UI and retrieve items when ready. Configure whether items persist across wipes.
Q: Can I announce rare wins?
A: Yes! Enable chat announcements and Discord webhooks. Set rarity threshold (e.g., only announce items with 5% or lower chance), customize message format, and share the excitement with your community!
Q: How do I add UltimateCases to ServerPanel?
A: In ServerPanel, create a new category with Type: "Plugin", Plugin Name: "UltimateCases", Plugin Hook: "API_OpenPlugin". The plugin integrates seamlessly!
Q: Can I give VIP players discounts?
A: Yes! Configure permission-based discounts in Case Opening Discounts and Exchange Privilege Settings. Set different discount percentages for different VIP tiers.
Q: How do I configure the plugin config file?
A: The config file is located at oxide/config/UltimateCases.json (or carbon/config/UltimateCases.json for Carbon). Here's how to configure key settings:
Template Selection: Set "Template" to "Fullscreen", "V1", "V2", or "V4"
Commands: Modify "Open UI Commands" array to add custom command aliases
Key Exchange: Configure "Exchange Settings" → "Currencies" to add currencies (Economics, ServerRewards, items, etc.)
Roulette Duration: Set "Roulette Settings" → "Default Duration" (seconds) and "Quick Mode Duration"
Sound Effects: Enable/disable sounds in "Sound Effects" section and set effect prefab paths
Logging: Configure console, file, chat, and Discord logging in "Logging Settings"
Restrictions: Enable/disable case opening restrictions in "Restrictions Settings"
Inventory: Configure inventory settings in "Inventory settings" section
After editing, reload the plugin: o.reload UltimateCases (Oxide) or c.reload UltimateCases (Carbon).
Q: How do I set up LangAPI for multi-language support?
A: To enable LangAPI support:
Make sure LangAPI plugin is installed and loaded on your server
In UltimateCases config, set "Work with LangAPI?" to true
Create language files in oxide/lang/UltimateCases/ (or carbon/lang/UltimateCases/ for Carbon)
Create files like en.json, ru.json, etc. with translation keys
Use LangAPI's translation system to translate all plugin messages
Reload the plugin to apply changes
Example translation key structure:
{
"UI_Header_Title": "Ultimate Cases",
"UI_Content_ButtonOpen": "OPEN CASE",
"UI_Content_ButtonOpenFREE": "FREE",
...
}
Q: How do I set up Monument Traders using commands?
A: To create and configure Monument Traders:
Make sure you have ultimatecases.edit permission
Go to the monument where you want to spawn a trader (e.g., lighthouse, outpost)
In server console, use: cases.trader create [currencyID] [defaultKeys] [prefab]
currencyID - ID of the currency from Exchange Settings (0, 1, 2, etc.)
defaultKeys - Default number of keys per exchange (e.g., 1)
prefab - NPC prefab path (e.g., "assets/prefabs/npc/bandit/missionproviders/missionprovider_outpost_b.prefab")
Enter edit mode: cases.trader start <botIndex> (use cases.trader list to see bot indices)
Position yourself where you want the NPC to spawn
Update position: cases.trader move
Set rotation: cases.trader rotate <angle> (0-360 degrees)
Save: cases.trader save
The NPC will spawn automatically at the configured monument
Q: How do I configure custom economy plugins?
A: To use a custom economy plugin:
In config, find "Custom Economy Settings"
Set "Use Custom Economy" to true
Set "Type" to "Plugin"
Enter "Plugin Name" (exact name as it appears in plugins list)
Configure hooks:
"Plugin Hook Add" - Hook name for adding balance (e.g., "AddPoints", "Deposit")
"Plugin Hook Remove" - Hook name for removing balance (e.g., "TakePoints", "Withdraw")
"Plugin Hook Balance" - Hook name for checking balance (e.g., "CheckPoints", "Balance")
Test the hooks work correctly by checking plugin documentation
Reload the plugin
Q: How do I configure rarity backgrounds?
A: To set up rarity backgrounds:
In config, find "Rarity Settings" → "Rarity Backgrounds"
Add entries with chance ranges and images:
"Min" - Minimum chance percentage (e.g., 0)
"Max" - Maximum chance percentage (e.g., 1)
"Image" - Background image URL for case display
"Roulette Item Background Image" - Background image URL for roulette item display
Example: Legendary (0-1%), Epic (1-5%), Rare (5-15%), Uncommon (15-50%), Common (50-100%)
Items with drop chances within each range will display the corresponding background
Q: How do I configure Discord webhook logging?
A: To set up Discord webhook logging:
Create a Discord webhook in your Discord server (Server Settings → Integrations → Webhooks → New Webhook)
Copy the webhook URL
In config, find "Logging Settings" → "Discord"
Set "Enabled" to true
Paste webhook URL in "Webhook URL"
Configure options:
"Rare Threshold" - Only log items with chance ≤ X% (0 = log all items)
"Embed Color" - Decimal color code (e.g., 15844367 for gold)
"Title" - Embed title
"Show Player Avatar" - Display player avatar in embed
"Show Item Icons" - Display item icons in embed
"Group Items" - Group multiple items in single message
"Include Statistics" - Add statistics to embed
Reload the plugin
Q: How do I configure item rewards with weapons and attachments?
A: In the Item Editor:
Set "Type" to "Item"
Enter the weapon "ShortName" (e.g., "rifle.ak")
In "Weapon" section, set "Enabled" to true
Set "Ammo Type" (e.g., "ammo.rifle.explosive")
Set "Ammo Amount" (e.g., 128)
In "Content" section, set "Enabled" to true
Add attachments in "Contents" array:
"ShortName" - Mod shortname (e.g., "weapon.mod.lasersight")
"Condition" - Item condition (0-100)
"Amount" - Usually 1 for mods
"Position" - Slot index (-1 for auto-assignment)
Save the item
Q: How do I configure command rewards in cases?
A: To add command rewards:
In Item Editor, set "Type" to "Command"
In "Command (%steamid%)" field, enter your command
Use placeholders:
%steamid% - Player's Steam ID
%username% - Player's display name
%player.x% - Player's X coordinate
%player.y% - Player's Y coordinate
%player.z% - Player's Z coordinate
Multiple commands can be separated by | or line breaks
Example: "inventory.giveto %steamid% rifle.ak 1|oxide.usergroup add %steamid% vip"
Q: How do I enable Offline Image Mode?
A: To use local images instead of downloading from internet:
In config, set "Enable Offline Image Mode" to true
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: o.reload UltimateCases (Oxide) or c.reload UltimateCases (Carbon)
Note: For custom images, place them in the "TheMevent" folder and reference them with the "TheMevent/" prefix (e.g., "TheMevent/MyImage.png").
Q: How do I configure demo mode and quick unbox mode?
A: Demo mode allows testing cases without spending keys, and quick unbox mode speeds up animations:
In config, find "Roulette Settings"
For demo mode: Set "Demo Mode Permission" to a permission name (e.g., "ultimatecases.demo") or leave empty to disable
For quick unbox: Set "Quick Unbox Permission" to a permission name (e.g., "ultimatecases.quick") or leave empty to disable
Set "Quick Mode Duration" (seconds) - how long the quick animation should last
Grant the permissions to players who should have access
Reload the plugin
Q: How do I configure case opening restrictions?
A: To prevent case opening in certain situations:
In config, find "Restrictions Settings"
Set "Enabled" to true
Enable/disable specific restrictions:
"Block During Combat" - Requires NoEscape plugin
"Block During Raid" - Requires NoEscape plugin
"Block in Building Blocked" - Blocks when player can't build
"Block While Swimming" - Blocks when player is swimming
"Block When Player is Wounded" - Blocks when player is wounded
"Block During Duel" - Requires Duel/Duelist plugin
"Block During Helicopter Flight" - Blocks when in helicopter
"Block When Player is Sleeping" - Blocks when player is sleeping
Reload the plugin
🧪 TEST SERVER
Join our test server to experience UltimateCases yourself!
Copy the IP Address below to start playing!
connect 194.147.90.147:28015
Ready to create the ultimate case opening experience? UltimateCases gives you all the tools you need to build excitement, reward players, and monetize your server. Start creating your first case today!
Highest Rated
Top-rated picks trusted and loved by the community.
-
$16.99
By David
-
$40.00$30.00By nivex
-
$29.99$19.99By 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$40.47By Monster
-
$19.99$15.99By Fruster
Trending Files
Popular picks members are downloading the most right now.
-
$40.00$31.95By Mevent
-
$24.99$19.99By Khan
-
$40.00
By The_Kiiiing
-
$30.00
By 0xF
-
$19.99$15.99By Fruster
-
Free
By Steenamaroo
-
$40.00$30.00By nivex
-
$14.99
By Iftebinjan
-
$19.99$15.99By Fruster
-
$16.99
By David
-
$29.99
By imthenewguy
Recently Updated
Recently improved files with fresh updates, fixes, and new content.
-
$25.00
By NINJA WORKS
-
$18.00
By Wrecks
-
$18.00
By Wrecks
-
$15.00
By ninco90
-
$29.90$24.00By J4V1
-
Free
By Bxrflip
-
Free
By Bxrflip
-
$15.00
By gaga407
-
By r3dd0t
-
$30.00
By Yac Vaguer
-
$14.99
By Iftebinjan
Latest Reviews
See what customers are saying about their experience with files.
It's great. The only improvement would be if custom items could be added as rewards. That feature would earn the 5th star
I haven't even had to really edit anything yet. The random weather cycle(s) is absolutely perfect and already adding a heavy layer of immersion to my server. Love this mod absolutely worth the $14.99
its a great table i just wish i had bought the no blueprints one instead lol
Managing loot tables is so complicated, this makes it super simple, i don't have to worry about adjusting them when new items come out or wondering if i broke something.
I’m honestly beyond impressed with this plugin. The level of quality, attention to detail, and overall functionality completely exceeded my expectations. Everything works smoothly, the setup process was straightforward, and you can clearly see how much effort and professionalism went into development.
I’ve tested many plugins before, but this one genuinely stands out. It saves time, performs flawlessly, and adds exactly the kind of features I was looking for.
I can confidently say I’m
Easy to use. Supports native C# Rust CUI code and dev is very responsive. 5/5
Amazing Plugin!
A bit of work getting it all setup, cusomisied with loot tables, and kits for the NPC's etc/ but once its done, its an aboslute blast!
I'm added a Prim Raid to mine, NPC with bows an eoka's, and also a Hell Raid mode with 9 waves with MLRS rockers on each, with difficulties everywhere inbetween.
So much fun, and great companion for the raidable bases plugin to give a PVE server both Raiding and being Raided.
Everything works perfectly.
Very easy to pick up if you have used similar tools in the past.
What I made in editor reflected cleanly in game without needing to adjust anything.
The app is full of tools and options to make exactly what you want.
Dev is very welcoming & fast to respond.
Nice work! I am looking forward to see this continue to improve.
This is a fun map! We're running BetterNpc and raidable bases on it. These guys always get an update out in reasonable time frame too! Going to buy another one of their maps and add Train Homes. Great job guys, Love the custom monuments!