90 lines
2.9 KiB
C#
90 lines
2.9 KiB
C#
|
using System;
|
|||
|
using System.Reflection;
|
|||
|
|
|||
|
using IllusionPlugin;
|
|||
|
// using GamecraftModdingAPI;
|
|||
|
using GamecraftModdingAPI.Commands;
|
|||
|
using DiscordRPC;
|
|||
|
|
|||
|
namespace GamecraftRPC
|
|||
|
{
|
|||
|
public class MyPlugin : IPlugin // the Illusion Plugin Architecture (IPA) will ignore classes that don't implement IPlugin'
|
|||
|
{
|
|||
|
public string Name { get; } = Assembly.GetExecutingAssembly().GetName().Name;
|
|||
|
|
|||
|
public string Version { get; } = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
|||
|
|
|||
|
private static readonly string CLIENT_ID = "692733325902872619";
|
|||
|
|
|||
|
private DiscordRpcClient discordRPC;
|
|||
|
|
|||
|
// called when Gamecraft shuts down
|
|||
|
public void OnApplicationQuit()
|
|||
|
{
|
|||
|
// Shutdown this mod
|
|||
|
GamecraftModdingAPI.Utility.Logging.LogDebug($"{Name} has shutdown");
|
|||
|
|
|||
|
// Shutdown the Gamecraft modding API last
|
|||
|
GamecraftModdingAPI.Main.Shutdown();
|
|||
|
}
|
|||
|
|
|||
|
// called when Gamecraft starts up
|
|||
|
public void OnApplicationStart()
|
|||
|
{
|
|||
|
// Initialize the Gamecraft modding API first
|
|||
|
GamecraftModdingAPI.Main.Init();
|
|||
|
|
|||
|
// Initialize this mod
|
|||
|
SimpleCustomCommandEngine rpcCommand = new SimpleCustomCommandEngine(
|
|||
|
() => { }, // TODO: command action
|
|||
|
// also try using CommandLogWarning or CommandLogError instead of CommandLog
|
|||
|
"RPC", // command name (used to invoke it in the console)
|
|||
|
"DiscordRPC Experimental command" // command description (displayed when help command is executed)
|
|||
|
); // this command can also be executed using the Command Computer
|
|||
|
|
|||
|
// register the command so the modding API knows about it
|
|||
|
CommandManager.AddCommand(rpcCommand);
|
|||
|
|
|||
|
discordRPC = new DiscordRpcClient(CLIENT_ID);
|
|||
|
|
|||
|
discordRPC.OnReady += (sender, e) =>
|
|||
|
{
|
|||
|
GamecraftModdingAPI.Utility.Logging.LogDebug($"Received Ready from user {e.User.Username}");
|
|||
|
};
|
|||
|
|
|||
|
discordRPC.OnPresenceUpdate += (sender, e) =>
|
|||
|
{
|
|||
|
GamecraftModdingAPI.Utility.Logging.LogDebug($"Received Update! {e.Presence}");
|
|||
|
};
|
|||
|
|
|||
|
discordRPC.Initialize();
|
|||
|
|
|||
|
discordRPC.SetPresence(new RichPresence()
|
|||
|
{
|
|||
|
Details = "Gamecraft Rich Presence",
|
|||
|
State = "Gamecraft RPC test",
|
|||
|
Assets = new DiscordRPC.Assets()
|
|||
|
{
|
|||
|
LargeImageKey = "image_large",
|
|||
|
LargeImageText = "Testing stuff",
|
|||
|
SmallImageKey = "image_small"
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
GamecraftModdingAPI.Utility.Logging.LogDebug($"{Name} has started up");
|
|||
|
}
|
|||
|
|
|||
|
// unused methods
|
|||
|
|
|||
|
public void OnFixedUpdate() { } // called once per physics update
|
|||
|
|
|||
|
public void OnLevelWasInitialized(int level) { } // called after a level is initialized
|
|||
|
|
|||
|
public void OnLevelWasLoaded(int level) { } // called after a level is loaded
|
|||
|
|
|||
|
public void OnUpdate() // called once per rendered frame (frame update)
|
|||
|
{
|
|||
|
if (discordRPC != null ) discordRPC.Invoke();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|