5 minutes to read
Created by
Calytic
Updated by
Wulf

Upgrade guide

Details on how to upgrade to uMod from Oxide

This guide is for uMod, not Oxide.
Join our discord for the latest updates and the latest news! Join discord

Platform changes

.NET 5.0 required

uMod requires .NET 5.0 to work, we recommend following the installation guide.

Plugin compiler upgrade

Mono-based Compiler.exe (C# 6) was removed and upgraded to Roslyn-based compiler which supports C# 9 (also see C# 8 and C# 7 changes)

New standalone web client

Web requests are now off-loaded to a standalone web client which provides the most modern and secure protocols possible.

New standalone database client

Database queries via SQL are now off-loaded to a standalone client application which allows for maximum stability and performance.

Oxide.MySql and Oxide.Sqlite are immediately deprecated, but are still available as uMod.MySql and uMod.Sqlite until the plugin ecosystem has upgraded to the new database abstraction layer.

Plugin changes

By default, uMod supports all existing Oxide plugins out of the box. However, a lot of functionality is deprecated and replaced. Developers should consider the changes listed below and then get started with the basics.

Oxide namespace

In most cases, simply change Oxide to uMod.

Impact: Medium

ChatCommand and ConsoleCommand

Both the ChatCommand and ConsoleCommand attributes are deprecated and replaced with the Command attribute.

The default command method signature has changed, however previously valid command method signatures will still work.

Impact: Medium

Plugin classes

All plugin classes, including CovalencePlugin, CSPlugin, CSharpPlugin, and all game-specific plugin classes (e.g. RustPlugin, HurtworldPlugin, etc) are now just Plugin. In most cases, simply changing the parent class is sufficient.

Impact: Low

PluginReference attribute

The PluginReference attribute is deprecated and replaced with the Optional and Requires attributes.

Impact: Low

DynamicConfigFile

The DynamicConfigFile class is deprecated and replaced with a new library to handle configuration files and data files.

Impact: Medium

WebRequest library

The Oxide web request library is deprecated and replaced with the new standalone WebClient to perform web requests. The new WebClient supports multipart/form-data the HTTP methods: GET, POST, PUT, PATCH, and DELETE.

Impact: Medium

RequestMethod renamed

The RequestMethod enum was renamed to WebRequestMethod.

Impact: Low

Plugin.ResourceId

Resource Id's are no longer necessary and can be removed.

Impact: Low

Data changes

User & Group Data

User & group data is automatically imported from existing Oxide data files.

Administrators can continue using protobuf as the file format to store the data with no immediate impact but it is recommended to switch to a database driver. To do this, configure a global database connection, restart the server, and run the import command to convert data from protobuf to the target format (sqlite or mysql).

Impact: Low

Extension changes

Extension Constructor

The extension constructor no longer accepts an ExtensionManager. Use HandleAddedToManager(IExtensionManager) if access the extension manager is required.

Impact: Low

Extension Name removed

The extension Name property was removed and replaced with Title. The extension name was less than useful as it must always match the name of the output DLL. This is now done automatically.

Impact: Low

Library changes

Libraries must now accept an instance of IApplication in their constructor. An implementation of IApplication may be accessed globally via Interface.uMod.Application

Impact: Low