

Library for adding content to R.E.P.O.
Reference REPOLib in your project's .csproj file.
<ItemGroup>
<PackageReference Include="Zehs.REPOLib" Version="1.*" />
</ItemGroup>
Add REPOLib as a dependency to your plugin class.
[BepInDependency(REPOLib.MyPluginInfo.PLUGIN_GUID, BepInDependency.DependencyFlags.HardDependency)]
[BepInPlugin("You.YourMod", "YourMod", "1.0.0")]
[BepInDependency(REPOLib.MyPluginInfo.PLUGIN_GUID, BepInDependency.DependencyFlags.HardDependency)]
public class YourMod : BaseUnityPlugin
{
// ...
}
Registering a network prefab.
[BepInPlugin("You.YourMod", "YourMod", "1.0.0")]
[BepInDependency(REPOLib.MyPluginInfo.PLUGIN_GUID, BepInDependency.DependencyFlags.HardDependency)]
public class YourMod : BaseUnityPlugin
{
// ...
private void Awake()
{
// ...
AssetBundle assetBundle = AssetBundle.LoadFromFile("your_assetbundle_file_path");
GameObject prefab = assetBundle.LoadAsset<GameObject>("your_network_prefab");
// Register a network prefab.
REPOLib.Modules.NetworkPrefabs.RegisterNetworkPrefab(prefab);
}
}
Registering a valuable.
[BepInPlugin("You.YourMod", "YourMod", "1.0.0")]
[BepInDependency(REPOLib.MyPluginInfo.PLUGIN_GUID, BepInDependency.DependencyFlags.HardDependency)]
public class YourMod : BaseUnityPlugin
{
// ...
private void Awake()
{
// ...
AssetBundle assetBundle = AssetBundle.LoadFromFile("your_assetbundle_file_path");
GameObject prefab = assetBundle.LoadAsset<GameObject>("your_valuable_prefab");
// Register a valuable.
REPOLib.Modules.Valuables.RegisterValuable(prefab);
}
}
Registering a valuable to a specific level.
[BepInPlugin("You.YourMod", "YourMod", "1.0.0")]
[BepInDependency(REPOLib.MyPluginInfo.PLUGIN_GUID, BepInDependency.DependencyFlags.HardDependency)]
public class YourMod : BaseUnityPlugin
{
// ...
private void Awake()
{
// ...
AssetBundle assetBundle = AssetBundle.LoadFromFile("your_assetbundle_file_path");
GameObject prefab = assetBundle.LoadAsset<GameObject>("your_valuable_prefab");
// Valuables Presets:
// "Valuables - Generic"
// "Valuables - Wizard"
// "Valuables - Manor"
// "Valuables - Arctic"
List<string> presets = new List<string> { "Valuables - Wizard" };
// Register a valuable.
REPOLib.Modules.Valuables.RegisterValuable(prefab, presets);
}
}
Registering an item.
[BepInPlugin("You.YourMod", "YourMod", "1.0.0")]
[BepInDependency(REPOLib.MyPluginInfo.PLUGIN_GUID, BepInDependency.DependencyFlags.HardDependency)]
public class YourMod : BaseUnityPlugin
{
// ...
private void Awake()
{
// ...
AssetBundle assetBundle = AssetBundle.LoadFromFile("your_assetbundle_file_path");
Item item = assetBundle.LoadAsset<Item>("your_item");
// Register an item.
REPOLib.Modules.Items.RegisterItem(item);
}
}
Registering an enemy.
[BepInPlugin("You.YourMod", "YourMod", "1.0.0")]
[BepInDependency(REPOLib.MyPluginInfo.PLUGIN_GUID, BepInDependency.DependencyFlags.HardDependency)]
public class YourMod : BaseUnityPlugin
{
// ...
private void Awake()
{
// ...
AssetBundle assetBundle = AssetBundle.LoadFromFile("your_assetbundle_file_path");
EnemySetup enemy = assetBundle.LoadAsset<EnemySetup>("your_enemy_setup");
// Register an enemy.
REPOLib.Modules.Enemies.RegisterEnemy(enemy);
}
}
Registering a chat /command.
public static class YourCommand
{
// ...
[CommandInitializer]
public static void Initialize()
{
// Perform any setup or caching
}
[CommandExecution(
"Your Command Name",
"Description of what the command does and how to use it.",
enabledByDefault: true,
requiresDeveloperMode: false,
)]
[CommandAlias("yourcommand")]
[CommandAlias("yourcmd")]
public static void Execute(string args)
{
// ...
}
}
[!NOTE] Registering valuables, items, and enemies automatically registers their prefabs as a network prefab.
[!IMPORTANT] You should only register network prefabs and features from your plugin's awake function.
[!TIP] You can enable extended logging in the config settings to get more info about features being registered, custom network prefabs being spawned, and more.
[!IMPORTANT] You must enable
DeveloperModein the config settings to use developer mode commands.
Chat commands currently only work in multiplayer since you need access to the in-game chat to use commands.
This mod comes with a few built-in chat commands:
/spawnvaluable <name>This command will spawn a valuable in front of you.
Replace <name> with the name of the valuable prefab.
Names are not case-sensitive.
Example usage: /spawnvaluable diamond
This command has multiple aliases: /spawnval, /sv
This command requires developer mode to be enabled.
This command is host-only!
/spawnitem <name>This command will spawn an item in front of you.
Replace <name> with the name of the item or item prefab.
Names are not case-sensitive.
Example usage: /spawnitem gun
This command has one alias: /si
This command requires developer mode to be enabled.
This command is host-only!
[!TIP] Commands can be enabled/disabled in the config settings.
If you are a mod developer and want to add your own custom chat commands to your mod, check the Usage > Chat commands section.
Anyone is free to contribute.
https://github.com/ZehsTeam/REPOLib
To set up the project, copy the REPOLib.csproj.user.example file to REPOLib.csproj.user. If needed, change the settings found in that file.
Report bugs, suggest features, or provide feedback: