版本检测
基本信息
| 属性 | 值 |
|---|---|
| 类 | com.github.lunatrius.core.version.VersionChecker |
| 类 | com.github.lunatrius.core.version.VersionTicker |
| 状态 | 在 GTNH 分支中已被掏空为全空实现 |
| 内部调用方 | 无 |
[!IMPORTANT] 名字和常量看起来像一套完整的联网版本检测系统,但所有方法体都是空的。
startVersionCheck()、setDone(boolean)、addOutdatedMod(...)、onTick(...)全部什么都不做。本条目记录的是这套残留 API 的实际形状,而不是它被设计时的功能。
VersionChecker 公共常量
| 常量 | 值 |
|---|---|
RECOMMENDED_FORGE |
"\n---\nRecommended Forge: %s" |
VERCHECKAPI_URL |
"http://mc.lunatri.us/json?latest=1&mc=%s&v=%d" |
VERCHECKAPI_VER |
2 |
VERSION |
"%s -> %s" |
UPDATEAVAILABLE |
"\nUpdate is available (%s -> %s)!" |
UPTODATE |
"\nUp to date!" |
UPDATEAVAILABLECON |
"Update is available for %s (%s -> %s)!" |
UPTODATECON |
"%s is up to date!" |
FUTURECON |
"Is %s from the future?" |
DYNIOUS_VERSIONCHECKER_MODID |
"VersionChecker" |
UPDATE_URL |
"https://mods.io/mods?author=Lunatrius" |
[!NOTE]
VERCHECKAPI_URL是 HTTP 而非 HTTPS,且指向已停用的mc.lunatri.us域名。所幸没有任何代码再使用它。
VersionChecker 方法(全部为空实现)
| 签名 | 实际行为 |
|---|---|
@Deprecated public static void registerMod(ModMetadata modMetadata) |
空方法体 |
public static void registerMod(ModMetadata modMetadata, String forgeVersion) |
空方法体 |
public static Set<Map.Entry<String, String>> getOutdatedMods() |
return OUTDATED_MODS.entrySet(); — 返回私有 HashMap 的视图,该 map 永远为空 |
public static void setDone(boolean isDone) |
空方法体 |
public static boolean isDone() |
return true; — 恒为 true,即「检测已完成」 |
public static void startVersionCheck() |
空方法体 |
private static void addOutdatedMod(ModMetadata metadata, ArtifactVersion versionLocal, DefaultArtifactVersion versionRemote, String changeLog) |
空方法体 |
内部状态只有一个字段:private static final Map<String, String> OUTDATED_MODS = new HashMap<String, String>(); —— 没有任何代码往里 put。
VersionTicker
| 成员 | 值 |
|---|---|
| 常量 | public static final String UPDATESAVAILABLE = "lunatriuscore.message.updatesavailable"; |
| 订阅方法 | @SubscribeEvent public void onTick(ClientTickEvent event) — 空方法体 |
对应的本地化键 lunatriuscore.message.updatesavailable 在全部 5 份语言文件中都有定义:
| 语言 | 值 |
|---|---|
en_US |
Updates are available for %s. |
zh_CN |
有新的%s更新可用. |
[!WARNING]
VersionTicker从未被注册。ClientProxy.registerTickers()只注册了ConfigurationHandler与GuiHandler;grep -rn "VersionTicker"在src/main/java/下只命中它自己的文件。因此onTick永不执行,UPDATESAVAILABLE这个本地化键也永不会被使用。
调用关系
grep -rn "VersionTicker\|VersionChecker" 在 src/main/java/ 下的全部命中只有 3 行,且全在 VersionChecker 自身文件内:类声明(VersionChecker.java:11)、常量 DYNIOUS_VERSIONCHECKER_MODID(:25)、以及 VersionTicker.java:7 的自身声明。
也就是说:这两个类在本 mod 内零互相引用、零外部调用,是一个整体休眠的子系统。
对配置的影响
versioncheck 分类下的 3 个配置项因此全部失效:
| 配置项 | 失效原因 |
|---|---|
checkForUpdates |
startVersionCheck() 空实现,没有任何代码读取它来启动检测 |
silenceKnownUpdates |
只被 ConfigurationHandler.canNotifyOfUpdate 读取,而该方法无调用方 |
knownVersions |
只被 addUpdate / canNotifyOfUpdate 读写,二者均无调用方 |
详见配置项。