Improve integration and migration logging

This commit is contained in:
Coldsmiles
2026-10-05 02:08:18 +08:00
parent 98ccff3ff2
commit d87fc866ab
3 changed files with 53 additions and 6 deletions
+10
View File
@@ -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
@@ -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");
}
@@ -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<Conflict> 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),