PojavLauncher icon indicating copy to clipboard operation
PojavLauncher copied to clipboard

[BUG] launch installed version without Internet connection always failed

Open Silvigarabis opened this issue 1 year ago • 0 comments

Describe the bug

If you disabled Verify game version manifest in the settings, then disconnect to Internet, and try to launch any version of game, it will fail. However, the installed version cannot be started in this case too.

The log file and images/videos

if launch was failed, usually it will output these logs:

java.io.IOException: Unable to download from https://piston-meta.mojang.com/v1/packages/ed5d8789ed29872ea2ef1c348302b0c55e3f3468/1.7.10.json
	at net.kdt.pojavlaunch.utils.DownloadUtils.download(DownloadUtils.java:39)
	at net.kdt.pojavlaunch.utils.DownloadUtils.download(DownloadUtils.java:20)
	at net.kdt.pojavlaunch.utils.DownloadUtils.downloadFile(DownloadUtils.java:61)
	at net.kdt.pojavlaunch.mirrors.DownloadMirror.downloadFileMirrored(DownloadMirror.java:66)
	at net.kdt.pojavlaunch.tasks.MinecraftDownloader.lambda$downloadGameJson$1(MinecraftDownloader.java:157)
	at net.kdt.pojavlaunch.tasks.MinecraftDownloader$$ExternalSyntheticLambda1.call(Unknown Source:4)
	at net.kdt.pojavlaunch.utils.DownloadUtils.downloadFile(DownloadUtils.java:125)
	at net.kdt.pojavlaunch.utils.DownloadUtils.ensureSha1(DownloadUtils.java:140)
	at net.kdt.pojavlaunch.tasks.MinecraftDownloader.downloadGameJson(MinecraftDownloader.java:154)
	at net.kdt.pojavlaunch.tasks.MinecraftDownloader.downloadAndProcessMetadata(MinecraftDownloader.java:198)
	at net.kdt.pojavlaunch.tasks.MinecraftDownloader.downloadGame(MinecraftDownloader.java:90)
	at net.kdt.pojavlaunch.tasks.MinecraftDownloader.lambda$start$0$net-kdt-pojavlaunch-tasks-MinecraftDownloader(MinecraftDownloader.java:63)
	at net.kdt.pojavlaunch.tasks.MinecraftDownloader$$ExternalSyntheticLambda0.run(Unknown Source:10)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
	at java.lang.Thread.run(Thread.java:784)
Caused by: java.net.UnknownHostException: Unable to resolve host "piston-meta.mojang.com": No address associated with hostname
	at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:141)
	at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:90)
	at java.net.InetAddress.getAllByName(InetAddress.java:787)
	at com.android.okhttp.Dns$1.lookup(Dns.java:39)
	at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:175)
	at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:141)
	at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:83)
	at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:174)
	at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
	at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
	at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
	at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
	at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89)
	at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(Unknown Source:0)
	at net.kdt.pojavlaunch.utils.DownloadUtils.download(DownloadUtils.java:31)
	... 15 more
Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
	at libcore.io.Linux.android_getaddrinfo(Native Method)
	at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:59)
	at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:122)
	... 31 more

Steps To Reproduce

1. install PojavLauncher (or says to reset to default status)
  - currently, `Verify game version manifest` is enabled by default.
2. connect to network
2.5 maybe you should add an account
3. launch the "Default" version, after enter the game, just close it.
  - Default version usually be 1.7.10
4. disconnect to the Internet
5. restart PojavLauncher
6. just launch "Default" (to prove it was installed correctly), then close it
7. restart PojavLauncher
8. disable `Verify game version manifest` in the `Miscellaneous settings`
9. restart PojavLauncher
10. launch the same "Default" version again, but failed due to the gamemeta couldn't be downloaded

---

(just some extra test)
11. re-enable `Verify game version manifest` in the `Miscellaneous settings`
12. launch the same "Default" version again, but still failed
13. connect to Internet
14. launch the same version again, usually it will succeed
15. disconnect to Internet
16. launch the same version again, it will succeed

Expected Behavior

An installed version should be able to launch without network connection regardless of whether Verify game version manifest has been enabled.

Platform

- Device model: Huawei DUB-AL00
- CPU architecture: arm64
- Android version: 8.1.0
- PojavLauncher version: edelweiss-20240219-195568c-v3_openjdk

Anything else?

I'm not sure if this is expected behavior, but it seems weird to me.

Silvigarabis avatar Mar 04 '24 05:03 Silvigarabis