private static File getJmeUserCacheFolder() {
        File userHomeFolder = new File(System.getProperty("user.home"));
        File userCacheFolder = null;
        
        switch (JmeSystem.getPlatform().getOs()) {
            case Linux:
                userCacheFolder = new File(userHomeFolder, ".cache");
                break;
            case MacOS:
                userCacheFolder = new File(new File(userHomeFolder, "Library"), "Caches");
                break;
            case Windows:
                userCacheFolder = new File(new File(userHomeFolder, "AppData"), "Local");
                break;
        }
        
        if (userCacheFolder == null || !userCacheFolder.exists()) {
            // Fallback to home directory if cache folder is missing
            return new File(userHomeFolder, ".jme3");
        }
        
        return new File(userCacheFolder, "jme3");
    }
Determine jME3's cache folder for the user account based on the OS.

If the OS cache folder is missing, the assumption is that this
particular version of the OS does not have a dedicated cache folder,
hence, we use the user's home folder instead as the root.

The folder returned is as follows:<br>
<ul>
<li>Windows: ~\AppData\Local\jme3</li>
<li>Mac OS X: ~/Library/Caches/jme3</li>
<li>Linux: ~/.cache/jme3</li>
</ul>

@return the user cache folder.
jme3-desktop/src/main/java/com/jme3/system/NativeLibraryLoader.java