Upgrade guide
Details on how to upgrade to uMod from Oxide
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