From 6c6cc94905a95b70f6dd4461492b4f49d092f88b Mon Sep 17 00:00:00 2001 From: youpaishidifu Date: Mon, 13 Jul 2026 15:18:56 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E9=93=BE=E8=B7=AF=E6=97=A5?= =?UTF-8?q?=E5=BF=97=EF=BC=9AOfficialTranslations.lookUp=20+=20MaterialTra?= =?UTF-8?q?nslator.translate/translateWithFallback=20=E6=AF=8F=E6=AD=A5?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=97=A5=E5=BF=97=EF=BC=8C=E8=B7=9F=E8=B8=AA?= =?UTF-8?q?=E7=BF=BB=E8=AF=91=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/Sdf1_login/MaterialTranslator.java | 22 +++++++++++++++++-- .../java/Sdf1_login/OfficialTranslations.java | 20 ++++++++++++++--- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/main/java/Sdf1_login/MaterialTranslator.java b/src/main/java/Sdf1_login/MaterialTranslator.java index 071ad98..e6863bd 100644 --- a/src/main/java/Sdf1_login/MaterialTranslator.java +++ b/src/main/java/Sdf1_login/MaterialTranslator.java @@ -1,5 +1,7 @@ package Sdf1_login; +import org.bukkit.Bukkit; + import java.net.URI; import java.net.URLEncoder; import java.net.http.HttpClient; @@ -63,22 +65,33 @@ public class MaterialTranslator { public static String translate(String materialName) { if (materialName == null || materialName.isEmpty()) return ""; String key = materialName.toUpperCase(); - if (cache.containsKey(key)) return cache.get(key); + + // 缓存命中 + if (cache.containsKey(key)) { + Bukkit.getLogger().info("[翻译] translate 缓存命中: " + materialName + " → " + cache.get(key)); + return cache.get(key); + } // 1. 官方翻译(基于原始 Material 名 GRASS_BLOCK → block.minecraft.grass_block) + Bukkit.getLogger().info("[翻译] translate 查官方: " + materialName); String official = OfficialTranslations.lookUp(materialName); if (official != null && !official.isEmpty()) { + Bukkit.getLogger().info("[翻译] translate 官方命中: " + materialName + " → " + official); cache.put(key, official); return official; } // 2. 机翻兜底 String readable = toReadable(key); + Bukkit.getLogger().info("[翻译] translate 官方未命中,走机翻: " + materialName + " → readable=" + readable); String zh = translateWithFallback(readable); if (zh != null && !zh.isEmpty()) { + Bukkit.getLogger().info("[翻译] translate 机翻成功: " + materialName + " → " + zh); cache.put(key, zh); return zh; } + + Bukkit.getLogger().info("[翻译] translate 全部失败,返回可读英文: " + readable); return readable; // fallback 可读英文 } @@ -121,6 +134,7 @@ public class MaterialTranslator { * 多源翻译,按优先级尝试,失败自动降级 */ private static String translateWithFallback(String text) { + Bukkit.getLogger().info("[翻译] 机翻开始降级轮询: \"" + text + "\""); for (TranslationSource source : SOURCES) { try { String result = null; @@ -136,12 +150,16 @@ public class MaterialTranslator { break; } if (result != null && !result.isEmpty()) { + Bukkit.getLogger().info("[翻译] 机翻 " + source.name + " 成功: \"" + text + "\" → \"" + result + "\""); return result; + } else { + Bukkit.getLogger().warning("[翻译] 机翻 " + source.name + " 返回空结果,降级下一源"); } } catch (Exception e) { - // 该源失败,尝试下一个 + Bukkit.getLogger().warning("[翻译] 机翻 " + source.name + " 异常: " + e.getClass().getSimpleName() + ": " + e.getMessage()); } } + Bukkit.getLogger().warning("[翻译] 机翻全部源失败,返回 null"); return null; } diff --git a/src/main/java/Sdf1_login/OfficialTranslations.java b/src/main/java/Sdf1_login/OfficialTranslations.java index 779b29a..930d614 100644 --- a/src/main/java/Sdf1_login/OfficialTranslations.java +++ b/src/main/java/Sdf1_login/OfficialTranslations.java @@ -90,18 +90,32 @@ public class OfficialTranslations { if (materialName == null || materialName.isEmpty()) return null; String lower = materialName.toLowerCase(Locale.ROOT); + // 日志:当前 map 状态 + Bukkit.getLogger().info("[翻译] officialLookUp: " + materialName + + " | map已加载=" + isLoaded() + " 条目数=" + map.size()); + // 1. 精确匹配(部分 key 可直接用) String val = map.get(lower); - if (val != null) return val; + if (val != null) { + Bukkit.getLogger().info("[翻译] officialLookUp 命中(精确): " + lower + " → " + val); + return val; + } // 2. block.minecraft. val = map.get("block.minecraft." + lower); - if (val != null) return val; + if (val != null) { + Bukkit.getLogger().info("[翻译] officialLookUp 命中(block): " + lower + " → " + val); + return val; + } // 3. item.minecraft. val = map.get("item.minecraft." + lower); - if (val != null) return val; + if (val != null) { + Bukkit.getLogger().info("[翻译] officialLookUp 命中(item): " + lower + " → " + val); + return val; + } + Bukkit.getLogger().info("[翻译] officialLookUp 未命中: " + lower + ",将走机翻兜底"); return null; // 未命中 -> 调用者走机翻 }