diff --git a/MIGRATION.md b/MIGRATION.md index cc07f0e..c495e94 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -172,6 +172,16 @@ Imported original plugins/MagicGem into MagicGem-Reforged: X files copied, Y con MagicGem Reforged 已启用,命令 /mgem,加载 N 颗宝石。 ``` +插件还会逐项记录可选挂钩插件的状态,例如: + +```text +Optional integration PlaceholderAPI: enabled (version 2.x, api=available) +Optional integration MMOItems: absent +Optional integration MythicMobs: enabled (version 5.x, adapter=items=..., skillApi=true) +``` + +迁移器也会记录开始、未找到 `plugins/MagicGem`、已完成标记跳过和迁移失败等状态。 + 然后执行: ```text diff --git a/src/main/java/cn/infstar/magicgem/MagicGemPlugin.java b/src/main/java/cn/infstar/magicgem/MagicGemPlugin.java index 1a6173c..d4187d3 100644 --- a/src/main/java/cn/infstar/magicgem/MagicGemPlugin.java +++ b/src/main/java/cn/infstar/magicgem/MagicGemPlugin.java @@ -27,6 +27,7 @@ import cn.infstar.magicgem.skill.SkillEngine; import cn.infstar.magicgem.util.MessageDispatcher; import de.tr7zw.changeme.nbtapi.NBT; import org.bukkit.command.PluginCommand; +import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; import java.io.File; @@ -90,13 +91,39 @@ public class MagicGemPlugin extends JavaPlugin { getServer().getPluginManager().registerEvents(gemBrowser, this); getServer().getPluginManager().registerEvents(guiManager, this); getServer().getPluginManager().registerEvents(skillEngine, this); - getLogger().info("Integrations: Vault=" + economy.status() - + ", PlayerPoints=" + points.status() - + ", PlaceholderAPI=" + placeholders.status() - + ", MythicMobs=" + mythic.status()); + logIntegrationStatus(); getLogger().info("MagicGem Reforged 已启用,命令 /mgem,加载 " + gemRegistry.all().size() + " 颗宝石。"); } + private void logIntegrationStatus() { + logOptionalPlugin("PlaceholderAPI", "api=" + (placeholders.available() ? "available" : "unavailable")); + logOptionalPlugin("Vault", "economy=" + (economy.available() ? "available" : "unavailable")); + logOptionalPlugin("PlayerPoints", "api=" + (points.available() ? "available" : "unavailable")); + logOptionalPlugin("MythicMobs", "adapter=" + mythic.status()); + logOptionalPlugin("MMOItems", null); + logOptionalPlugin("MythicArtifacts", null); + logOptionalPlugin("MythicCrucible", null); + logOptionalPlugin("Residence", null); + logOptionalPlugin("PvPManager", null); + logOptionalPlugin("EcoEnchants", null); + logOptionalPlugin("GoldenEnchants", null); + } + + private void logOptionalPlugin(String name, String adapterStatus) { + Plugin dependency = getServer().getPluginManager().getPlugin(name); + if (dependency == null) { + getLogger().info("Optional integration " + name + ": absent"); + return; + } + String version = dependency.getDescription().getVersion(); + if (!dependency.isEnabled()) { + getLogger().warning("Optional integration " + name + ": present but disabled (version " + version + ")"); + return; + } + String suffix = adapterStatus == null ? "" : ", " + adapterStatus; + getLogger().info("Optional integration " + name + ": enabled (version " + version + suffix + ")"); + } + public void reloadAll() { reloadScope("all"); } diff --git a/src/main/java/cn/infstar/magicgem/migration/LegacyDirectoryImporter.java b/src/main/java/cn/infstar/magicgem/migration/LegacyDirectoryImporter.java index c2add5f..7b6ace1 100644 --- a/src/main/java/cn/infstar/magicgem/migration/LegacyDirectoryImporter.java +++ b/src/main/java/cn/infstar/magicgem/migration/LegacyDirectoryImporter.java @@ -36,17 +36,27 @@ public final class LegacyDirectoryImporter { public ImportResult importIfPresent() { Path sourceDirectory = pluginsDirectory.resolve(LEGACY_PLUGIN_DIRECTORY).normalize(); - if (targetDirectory.equals(sourceDirectory) || !Files.isDirectory(sourceDirectory)) { + if (targetDirectory.equals(sourceDirectory)) { + logger.info("MagicGem migration skipped because the legacy source and target directories are identical: " + + sourceDirectory); + return ImportResult.none(); + } + if (!Files.isDirectory(sourceDirectory)) { + logger.info("MagicGem migration source not found at " + sourceDirectory + "; no legacy import is needed."); return ImportResult.none(); } Path marker = targetDirectory.resolve(MARKER); - if (Files.exists(marker)) return new ImportResult(0, 0, true); + if (Files.exists(marker)) { + logger.info("MagicGem migration already completed; skipping legacy import (marker: " + marker + ")."); + return new ImportResult(0, 0, true); + } int copiedFiles = 0; int conflictFiles = 0; List conflicts = new ArrayList<>(); try { + logger.info("Starting MagicGem migration: source=" + sourceDirectory + ", target=" + targetDirectory); Files.createDirectories(targetDirectory); for (String directory : DATA_DIRECTORIES) { ImportCounts counts = importDirectory(sourceDirectory.resolve(directory),