版本检测

基本信息

属性 值
类 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 读写,二者均无调用方

详见配置项。

相关条目