Closed SlashNephy closed 2 years ago
試します
↑の修正だと ConfigManager
に IDivinationPluginApi<TConfiguration, TDefinition>
を渡す際に as で TDefinition
を無理矢理 EmptyDefinitionContainer
に変換しようとしてて、そこでNREが発生してた。
( DefinitionContainer
の派生型は EmptyDefinitionContainer
から派生しているわけではないので変換が行えず、 ConfigManager
に null が渡ってたと考えられる) (意訳)
https://github.com/horoscope-dev/Dalamud.Divination.Common/commit/1488b4a4b4eeffdb5b40c4ff19fd7055bc75724b でCommon側を修正、プラグイン側に以下の感じの対応をすることで正常にConfigまわりが動作した
public class TestPlugin: DivinationPlugin<TestPlugin, PluginConfig>
{
public override PluginConfig Config { get; } = null!;
public TestPlugin(DalamudPluginInterface pluginInterface) : base(pluginInterface)
{
Config = pluginInterface.GetPluginConfig() as PluginConfig ?? new PluginConfig();
}
protected override void ReleaseManaged()
{
base.ReleaseManaged();
Instance.Dalamud.PluginInterface.SavePluginConfig(Config);
}
}
PluginConfigWindows は Save()
が消失したので、
-Save()
+TestPlugin.Instance.Dalamud.PluginInterface.SavePluginConfig(Config);
で対応。
Save&Close
で正常にconfig.jsonに保存できている/cmd config HogeConfigKey fuga
等のコマンド実行でconfig.jsonに保存はされないのでConfigWindowsをひらいてSaveする必要あり。困ったら考える程度のレベル。
完全解決です感謝します
ConfigManager
は正しく設定値を取得できないConfigManager
は廃止したいがConfigWindow
などが依存している個別のプラグインで以下のようなオーバーライドが必要