using System; using IPA; using IPA.Logging; using IPA.Config; using IPA.Config.Stores; namespace Demo { /* [Plugin(RuntimeOptions.DynamicInit)] */ [Plugin(RuntimeOptions.SingleStartInit)] internal class Plugin { public static Logger log { get; private set; } [Init] public Plugin(Logger logger, Config conf) { log = logger; PluginConfig.Instance = conf.Generated(); log.Debug("Config loaded"); // setup that does not require game code // this is only called once ever, so do once-ever initialization } /* [Init] public Plugin(Logger logger) { log = logger; log.Debug("Basic plugin running!"); // setup that does not require game code // this is only called once ever, so do once-ever initialization } */ [Init] public void Init(Logger logger) { // logger will be the same instance as log currently is } /* [OnEnable] public void OnEnable() */ [OnStart] public void OnStart() { // setup that requires game code } /* [OnDisable] public void OnDisable() */ [OnExit] public void OnExit() { // teardown // this may be called mid-game if you are using RuntimeOptions.DynamicInit } } }