Skip to content

ModVersionGuard と起動時クラッシュ防止

コンポーネントクラス
バージョンガードnet.dasik.social.core.ModVersionGuard
使用 ClassLoaderThread.currentThread().getContextClassLoader()
保護対象起動時のクラスローディング不整合による強制終了の防止

🛡️ ModVersionGuard の仕組み

Fabric Loader の Knot 環境下において、ClassLoader を指定せずに Class.forName(name) を呼び出すと、クラスの検出に失敗したり不整合を見逃したりすることがあります。ModVersionGuard はカレントスレッドのコンテキスト ClassLoader を明示的に参照し、必要な API が存在するかを初期化の最上流で検証します。

java
public final class ModVersionGuard {
    public static void checkClass(String modName, String requiredClassName) {
        try {
            Class.forName(requiredClassName, true, Thread.currentThread().getContextClassLoader());
        } catch (ClassNotFoundException e) {
            throw new RuntimeException("\n" +
                "=====================================================================\n" +
                " [" + modName + "] Minecraft API Mismatch!\n" +
                " A required Minecraft class or API was not found in your game version.\n" +
                " Try updating your Minecraft version or download a matching build.\n" +
                "=====================================================================");
        }
    }
}

🔗 関連ページ

Official documentation & web portal for Dasik Igaijinn mods.