diff --git a/src/AutoPluginManager/Plugin.cs b/src/AutoPluginManager/Plugin.cs index 144d7529..9fef2126 100644 --- a/src/AutoPluginManager/Plugin.cs +++ b/src/AutoPluginManager/Plugin.cs @@ -16,7 +16,7 @@ public class Plugin : TerrariaPlugin { public override string Name => "AutoPluginManager"; - public override Version Version => new(2, 0, 1, 5); + public override Version Version => new(2, 0, 1, 6); public override string Author => "少司命,Cai"; @@ -80,6 +80,7 @@ private void AutoCheckUpdate(EventArgs args) try { var updates = GetUpdates(); + PluginRepeat(TSPlayer.Server); if (updates.Any()) { TShock.Log.ConsoleInfo(GetString("[以下插件有新的版本更新]\n" + string.Join("\n", updates.Select(i => $"[{i.Name}] V{i.OldVersion} >>> V{i.NewVersion}")))); @@ -106,6 +107,20 @@ private void AutoCheckUpdate(EventArgs args) this._timer.Start(); } + private static void PluginRepeat(TSPlayer ply) + { + if (typeof(ServerApi) + .GetField("loadedAssemblies", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance) + !.GetValue(null) is Dictionary loadassemblys) + { + var mutexs = loadassemblys + .GroupBy(x => x.Value.GetName().FullName) + .Where(x => x.Count() > 1) + .SelectMany(x => x); + ply.SendErrorMessage("[插件重复安装]" + string.Join(" >>> ", mutexs.Select(x => x.Key + ".dll"))); + } + } + private void PluginManager(CommandArgs args) { if (args.Parameters.Count == 1 && (args.Parameters[0].ToLower() == "-c" || args.Parameters[0].ToLower() == "c")) @@ -150,6 +165,10 @@ private void PluginManager(CommandArgs args) Config.PluginConfig.Write(); args.Player.SendSuccessMessage(GetString("排除成功, 已跳过此插件的更新检查~")); } + else if (args.Parameters.Count == 1 && (args.Parameters[0].ToLower() == "-r" || args.Parameters[0].ToLower() == "r")) + { + PluginRepeat(args.Player); + } else if (args.Parameters.Count == 2 && (args.Parameters[0].ToLower() == "-rb" || args.Parameters[0].ToLower() == "rb")) { if (!Config.PluginConfig.UpdateBlackList.Contains(args.Parameters[1])) @@ -515,4 +534,4 @@ private static List UpdatePlugin(List plugin return pluginUpdateInfos; } #endregion -} \ No newline at end of file +} diff --git a/src/AutoPluginManager/README.md b/src/AutoPluginManager/README.md index dd2f957c..84a9effe 100644 --- a/src/AutoPluginManager/README.md +++ b/src/AutoPluginManager/README.md @@ -36,6 +36,7 @@ V2.0.0.0 | /apm -l | AutoUpdatePlugin | 查看仓库插件列表 | | /apm -i [插件序号] | AutoUpdatePlugin | 安装插件,需重启服务器,插件序号多选`英文逗号隔开`配合`/apm -i`指令使用 | | /apm -b [插件名] | AutoUpdatePlugin | 将插件排除更新 | +| /apm -r | AutoUpdatePlugin | 检查重复安装的插件 | | /apm -rb [插件名] | AutoUpdatePlugin | 移除排除更新 | | /apm -lb | AutoUpdatePlugin | 列出排除更新的插件 | ## 配置 diff --git a/src/AutoPluginManager/README_EN.md b/src/AutoPluginManager/README_EN.md index 9cc87e2b..840d090b 100644 --- a/src/AutoPluginManager/README_EN.md +++ b/src/AutoPluginManager/README_EN.md @@ -13,6 +13,7 @@ | /apm -l | AutoUpdatePlugin | View the list of repository plugins | | /apm -i [plugin number] | AutoUpdatePlugin | Install plugins, requires server restart. Multiple plugin numbers can be separated by `commas` and used with the `/apm -i` command | | /apm -b [plugin name] | AutoUpdatePlugin | Exclude plugin from updates | +| /apm -r | AutoUpdatePlugin | Check for duplicate installed plugins | | /apm -rb [plugin name] | AutoUpdatePlugin | Remove update exclusion | | /apm -lb | AutoUpdatePlugin | List plugins excluded from updates |