Zehs.REPOLib
1.4.0
See the version list below for details.
dotnet add package Zehs.REPOLib --version 1.4.0
NuGet\Install-Package Zehs.REPOLib -Version 1.4.0
<PackageReference Include="Zehs.REPOLib" Version="1.4.0" />
<PackageVersion Include="Zehs.REPOLib" Version="1.4.0" />
<PackageReference Include="Zehs.REPOLib" />
paket add Zehs.REPOLib --version 1.4.0
#r "nuget: Zehs.REPOLib, 1.4.0"
#addin nuget:?package=Zehs.REPOLib&version=1.4.0
#tool nuget:?package=Zehs.REPOLib&version=1.4.0
REPOLib
Library for adding content to R.E.P.O.
Features
- Registering network prefabs.
- Registering valuables.
- Registering items.
- Registering enemies.
- Registering custom chat /commands
- Built-in dev mode commands: Spawn Valuable, Spawn Item
- Fixing audio mixer groups.
- Managing Photon RaiseEvent event codes.
- Registering features without code using the REPOLib-Sdk.
Usage
<details><summary>Click to expand</summary><br>
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
{
// ...
}
<details><summary>Network prefabs</summary><br>
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);
}
}
</details>
<details><summary>Valuables</summary><br>
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);
}
}
</details>
<details><summary>Items</summary><br>
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);
}
}
</details>
<details><summary>Enemies</summary><br>
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);
}
}
</details>
<details><summary>Chat commands</summary><br>
Registering a chat /command.
using REPOLib.Commands;
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)
{
// ...
}
}
</details>
<details><summary>Fixing audio mixer groups</summary><br>
Fixing audio mixer groups on a prefab and their children.
[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_prefab");
// Fix the audio mixer groups on a prefab and their children.
REPOLib.Modules.Utilities.FixAudioMixerGroups(prefab);
}
}
Registering any features will automatically fix their prefabs audio mixer groups. </details>
<details><summary>Networked event</summary><br>
Creating a networked event.
using ExitGames.Client.Photon;
using REPOLib.Modules;
[BepInPlugin("You.YourMod", "YourMod", "1.0.0")]
[BepInDependency(REPOLib.MyPluginInfo.PLUGIN_GUID, BepInDependency.DependencyFlags.HardDependency)]
public class YourMod : BaseUnityPlugin
{
// ...
public static NetworkedEvent ExampleEvent;
private void Awake()
{
// ...
ExampleEvent = new NetworkedEvent("My Example Event", HandleExampleEvent);
}
// EventData is from ExitGames.Client.Photon
private static void HandleExampleEvent(EventData eventData)
{
string message = (string)eventData.CustomData;
Debug.Log($"Received message from example event: {message}");
}
}
Calling a networked event.
// The data you are sending through your networked event.
string message = "Hello World!";
// Call networked event on everyone.
PhotonNetwork.RaiseEvent(YourMod.ExampleEvent.EventCode, message, REPOLib.Modules.NetworkingEvents.RaiseAll, SendOptions.SendReliable);
// Call networked event on everyone but yourself.
PhotonNetwork.RaiseEvent(YourMod.ExampleEvent.EventCode, message, REPOLib.Modules.NetworkingEvents.RaiseOthers, SendOptions.SendReliable);
</details> </details>
[!NOTE] Registering features (Valuables, Items, Enemies, etc...) automatically registers their prefabs as a network prefab.
[!NOTE] Registering features (Valuables, Items, Enemies, etc...) automatically fixes their prefabs audio mixer groups.
[!IMPORTANT] You should only register network prefabs and features (Valuables, Items, Enemies, etc...) 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.
Chat Commands
[!IMPORTANT] You must enable
DeveloperMode
in 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:
1. Spawn Valuable /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
<ins>This command requires developer mode to be enabled.</ins>
<ins>This command is host-only!</ins>
2. Spawn Item /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
<ins>This command requires developer mode to be enabled.</ins>
<ins>This command is host-only!</ins>
[!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.
Contribute
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.
Developer Contact
Report bugs, suggest features, or provide feedback:
- GitHub Issues Page: REPOLib
- Email: crithaxxog@gmail.com
- Twitch: CritHaxXoG
- YouTube: Zehs
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- BepInEx.Core (>= 5.4.21)
- BepInEx.PluginInfoProps (>= 2.1.0)
- Newtonsoft.Json (>= 13.0.3)
- R.E.P.O.GameLibs.Steam (>= 0.1.2-ngd.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Zehs.REPOLib:
Package | Downloads |
---|---|
PaintedUtils
Utility Mod for REPO |
GitHub repositories
This package is not used by any popular GitHub repositories.