Universal modding framework for Rust, 7 Days to Die, and more
| Supported Games: | Rust, 7 Days to Die, Hurtworld, Reign of Kings, The Forest |
| Languages: | C# (primary), Lua (limited support) |
| Plugin Repository: | umod.org (formerly oxidemod.org) |
| Current Version: | uMod 2.x (successor to Oxide 2.0) |
| Permissions System: | Built-in group and user permissions |
| Website: | umod.org |
Oxide (now uMod) is a modding framework that provides a universal API for creating plugins across multiple games. It allows server owners to add custom functionality without modifying game files.
| Game | Support Level | Popular Plugins |
|---|---|---|
| Rust | ★★★★★ Full | Kits, Economics, Clans, TP, Vote |
| 7 Days to Die | ★★★★★ Full | Admin Tools, Teleport, Bloodmoon |
| Hurtworld | ★★★★☆ Good | Admin Tools, Kits, Economy |
| Reign of Kings | ★★★☆☆ Fair | Admin Tools, Custom Commands |
| The Forest | ★★★☆☆ Fair | Limited plugin support |
# Stop your Rust server first
# Download uMod for Rust from umod.org
# Extract Oxide.Rust.zip to your server directory
# Files extract to: RustDedicated_Data/Managed/
# Start server - Oxide will create directories:
# oxide/plugins/ (place plugins here)
# oxide/config/ (plugin configs)
# oxide/data/ (plugin data)
# oxide/logs/ (Oxide logs)
# Stop Rust server
cd /home/rustserver
# Download and extract Oxide
wget https://umod.org/games/rust/download
unzip -o Oxide.Rust.zip
# Set permissions
chmod +x RustDedicated
# Start server
./RustDedicated -batchmode +server.port 28015 +server.level "Procedural Map" +server.seed 12345 +server.worldsize 4000 +server.maxplayers 100 +server.hostname "My Rust Server" +server.description "Powered by Oxide" +server.identity "server1"
# Stop 7 Days to Die server
# Download uMod for 7 Days to Die from umod.org
# Extract to 7DaysToDieServer directory
# Files go to: 7DaysToDieServer_Data/Managed/
# Start server - Oxide directories created in:
# 7DaysToDieServer_Data/oxide/
# Stop server
cd /home/7daysserver
# Download and extract
wget https://umod.org/games/7-days-to-die/download
unzip -o Oxide.7DaysToDie.zip
# Start server
./7DaysToDieServer.sh
# Download plugin .cs file from umod.org
# Example: AdminPanel.cs
# Place in oxide/plugins/ directory
oxide/
└── plugins/
└── AdminPanel.cs
# Oxide automatically compiles and loads the plugin
# Check oxide/logs/oxide.log for any errors
# Some admin tools allow downloading plugins in-game
oxide.load PluginName
oxide.reload PluginName
oxide.unload PluginName
After first load, plugins create config files in oxide/config/:
# Example: oxide/config/Kits.json
{
"Kits": {
"starter": {
"items": [
{"shortname": "stones", "amount": 3000},
{"shortname": "wood", "amount": 5000},
{"shortname": "bandage", "amount": 5}
],
"cooldown": 3600
}
}
}
# Edit configs and use: oxide.reload Kits
Oxide uses a hierarchical permission system with groups and individual user permissions.
# Grant permission to user (use Steam64 ID)
oxide.grant user 76561198012345678 pluginname.permission
# Grant permission to group
oxide.grant group admin adminradar.allowed
# Revoke permission
oxide.revoke user 76561198012345678 pluginname.permission
# Show user permissions
oxide.show user 76561198012345678
# Show group permissions
oxide.show group admin
# Create group
oxide.group add vip "VIP Members" 1
# Add user to group
oxide.usergroup add 76561198012345678 vip
# Remove user from group
oxide.usergroup remove 76561198012345678 vip
# List all groups
oxide.show groups
# Set parent group (inheritance)
oxide.group parent vip default
| Group | Rank | Purpose |
|---|---|---|
| admin | 0 (highest) | Full permissions |
| moderator | 1 | Moderate permissions |
| vip | 2 | VIP player perks |
| default | 3 (lowest) | Regular players |
players - shows online players with Steam IDsusing Oxide.Core;
using Oxide.Core.Libraries.Covalence;
namespace Oxide.Plugins
{
[Info("HelloWorld", "YourName", "1.0.0")]
[Description("Simple hello world plugin")]
class HelloWorld : RustPlugin
{
// Called when plugin is loaded
void Init()
{
Puts("HelloWorld plugin loaded!");
}
// Chat command: /hello
[Command("hello")]
void HelloCommand(IPlayer player, string command, string[] args)
{
player.Reply("Hello, " + player.Name + "!");
}
// Hook: Called when player connects
void OnPlayerConnected(BasePlayer player)
{
PrintToChat($"{player.displayName} has joined the server!");
}
}
}
| Hook | Purpose |
|---|---|
Init() |
Plugin initialization |
OnServerInitialized() |
Server fully loaded |
OnPlayerConnected(BasePlayer) |
Player joins server |
OnPlayerDisconnected(BasePlayer) |
Player leaves server |
OnPlayerChat(BasePlayer, string) |
Player sends chat message |
OnEntityDeath(BaseCombatEntity) |
Entity (player/NPC) dies |
OnEntitySpawned(BaseNetworkable) |
Entity spawns |
// Store player data in JSON file
class PlayerData
{
public string Name;
public int Points;
public DateTime LastSeen;
}
class MyPlugin : RustPlugin
{
Dictionary playerData = new Dictionary();
void LoadData()
{
playerData = Interface.Oxide.DataFileSystem.ReadObject>("MyPlugin_Data");
}
void SaveData()
{
Interface.Oxide.DataFileSystem.WriteObject("MyPlugin_Data", playerData);
}
}
# Server startup with Oxide
./RustDedicated -batchmode \
+server.port 28015 \
+server.level "Procedural Map" \
+server.hostname "My Oxide Server" \
+rcon.port 28016 \
+rcon.password "your_rcon_password"
# Essential first plugins:
# 1. BetterChat (chat enhancement)
# 2. AdminRadar (admin tool)
# 3. Vanish (admin invisibility)
# Oxide config location:
# 7DaysToDieServer_Data/oxide/config/
# Essential plugins:
# 1. Admin Tools
# 2. Teleport System
# 3. Player Info
# Check oxide/logs/ for plugin errors
# Check oxide/logs/oxide.log for errors
tail -f oxide/logs/oxide.log
# Common issues:
# 1. Syntax errors in plugin code
# 2. Missing dependencies
# 3. Outdated plugin version
# 4. Permission denied (file permissions)
# Reload plugin manually
oxide.reload PluginName
oxide.show user STEAMID# Disable plugins one by one to find conflict
oxide.unload PluginName
# Check oxide/logs/ for conflict errors
# Some plugins modify same hooks - may conflict