diff --git a/ZalithLauncher/src/main/assets/game/unlist_versions.json b/ZalithLauncher/src/main/assets/game/unlist_versions.json new file mode 100644 index 000000000..59510ed8b --- /dev/null +++ b/ZalithLauncher/src/main/assets/game/unlist_versions.json @@ -0,0 +1,1430 @@ +[ + { + "id": "1.21.11_unobfuscated", + "type": "unobfuscated", + "url": "https://piston-meta.mojang.com/v1/packages/327be7759157b04495c591dbb721875e341877af/1.21.11_unobfuscated.json", + "time": "2025-12-09T12:43:15+00:00", + "releaseTime": "2025-12-09T12:43:15+00:00" + }, + { + "id": "1.21.11-rc2_unobfuscated", + "type": "unobfuscated", + "url": "https://piston-meta.mojang.com/v1/packages/9282a3fb154d2a425086c62c11827281308bf93b/1.21.11-rc2_unobfuscated.json", + "time": "2025-12-05T11:57:45+00:00", + "releaseTime": "2025-12-05T11:57:45+00:00" + }, + { + "id": "1.21.11-rc1_unobfuscated", + "type": "unobfuscated", + "url": "https://piston-meta.mojang.com/v1/packages/5d3ee0ef1f0251cf7e073354ca9e085a884a643d/1.21.11-rc1_unobfuscated.json", + "time": "2025-12-04T15:56:55+00:00", + "releaseTime": "2025-12-04T15:56:55+00:00" + }, + { + "id": "1.21.11-pre5_unobfuscated", + "type": "unobfuscated", + "url": "https://piston-meta.mojang.com/v1/packages/1028441ca6d288bbf2103e773196bf524f7260fd/1.21.11-pre5_unobfuscated.json", + "time": "2025-12-03T13:34:06+00:00", + "releaseTime": "2025-12-03T13:34:06+00:00" + }, + { + "id": "1.21.11-pre4_unobfuscated", + "type": "unobfuscated", + "url": "https://piston-meta.mojang.com/v1/packages/410ce37a2506adcfd54ef7d89168cfbe89cac4cb/1.21.11-pre4_unobfuscated.json", + "time": "2025-12-01T13:40:12+00:00", + "releaseTime": "2025-12-01T13:40:12+00:00" + }, + { + "id": "1.21.11-pre3_unobfuscated", + "type": "unobfuscated", + "url": "https://piston-meta.mojang.com/v1/packages/579bf3428f72b5ea04883d202e4831bfdcb2aa8d/1.21.11-pre3_unobfuscated.json", + "time": "2025-11-25T14:14:30+00:00", + "releaseTime": "2025-11-25T14:14:30+00:00" + }, + { + "id": "1.21.11-pre2_unobfuscated", + "type": "unobfuscated", + "url": "https://piston-meta.mojang.com/v1/packages/2955ce0af0512fdfe53ff0740b017344acf6f397/1.21.11-pre2_unobfuscated.json", + "time": "2025-11-21T12:07:21+00:00", + "releaseTime": "2025-11-21T12:07:21+00:00" + }, + { + "id": "1.21.11-pre1_unobfuscated", + "type": "unobfuscated", + "url": "https://piston-meta.mojang.com/v1/packages/9c267f8dda2728bae55201a753cdd07b584709f1/1.21.11-pre1_unobfuscated.json", + "time": "2025-11-19T08:30:46+00:00", + "releaseTime": "2025-11-19T08:30:46+00:00" + }, + { + "id": "25w46a_unobfuscated", + "type": "unobfuscated", + "url": "https://piston-meta.mojang.com/v1/packages/314ade2afeada364047798e163ef8e82427c69e1/25w46a_unobfuscated.json", + "time": "2025-11-11T13:20:54+00:00", + "releaseTime": "2025-11-11T13:20:54+00:00" + }, + { + "id": "25w45a_unobfuscated", + "type": "unobfuscated", + "url": "https://piston-meta.mojang.com/v1/packages/7a3c149f148b6aa5ac3af48c4f701adea7e5b615/25w45a_unobfuscated.json", + "time": "2025-11-04T14:07:08+00:00", + "releaseTime": "2025-11-04T14:07:08+00:00" + }, + { + "id": "1.19_deep_dark_experimental_snapshot-1", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_19_deep_dark_experimental_snapshot-1/1_19_deep_dark_experimental_snapshot-1.json", + "time": "2022-02-17T13:55:59+00:00", + "releaseTime": "2022-02-17T13:55:59+00:00" + }, + { + "id": "1.18_experimental-snapshot-7", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_18_experimental-snapshot-7/1_18_experimental-snapshot-7.json", + "time": "2021-09-08T12:33:23+00:00", + "releaseTime": "2021-09-08T12:33:23+00:00" + }, + { + "id": "1.18_experimental-snapshot-6", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_18_experimental-snapshot-6/1_18_experimental-snapshot-6.json", + "time": "2021-09-01T12:53:14+00:00", + "releaseTime": "2021-09-01T12:53:14+00:00" + }, + { + "id": "1.18_experimental-snapshot-5", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_18_experimental-snapshot-5/1_18_experimental-snapshot-5.json", + "time": "2021-08-25T14:41:57+00:00", + "releaseTime": "2021-08-25T14:41:57+00:00" + }, + { + "id": "1.18_experimental-snapshot-4", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_18_experimental-snapshot-4/1_18_experimental-snapshot-4.json", + "time": "2021-08-17T16:10:25+00:00", + "releaseTime": "2021-08-17T16:10:25+00:00" + }, + { + "id": "1.18_experimental-snapshot-3", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_18_experimental-snapshot-3/1_18_experimental-snapshot-3.json", + "time": "2021-08-10T12:42:45+00:00", + "releaseTime": "2021-08-10T12:42:45+00:00" + }, + { + "id": "1.18_experimental-snapshot-2", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_18_experimental-snapshot-2/1_18_experimental-snapshot-2.json", + "time": "2021-07-20T13:35:08+00:00", + "releaseTime": "2021-07-20T13:35:08+00:00" + }, + { + "id": "1.18_experimental-snapshot-1", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_18_experimental-snapshot-1/1_18_experimental-snapshot-1.json", + "time": "2021-07-13T12:54:19+00:00", + "releaseTime": "2021-07-13T12:54:19+00:00" + }, + { + "id": "1.16_combat-6", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_16_combat-6/1_16_combat-6.json", + "time": "2020-08-26T06:24:28+00:00", + "releaseTime": "2020-08-26T06:24:28+00:00" + }, + { + "id": "1.16_combat-5", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_16_combat-5/1_16_combat-5.json", + "time": "2020-08-21T09:23:13+00:00", + "releaseTime": "2020-08-21T09:23:13+00:00" + }, + { + "id": "1.16_combat-4", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_16_combat-4/1_16_combat-4.json", + "time": "2020-08-19T11:14:58+00:00", + "releaseTime": "2020-08-19T11:14:58+00:00" + }, + { + "id": "1.16_combat-3", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_16_combat-3/1_16_combat-3.json", + "time": "2020-08-14T09:02:15+00:00", + "releaseTime": "2020-08-14T09:02:15+00:00" + }, + { + "id": "1.16_combat-2", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_16_combat-2/1_16_combat-2.json", + "time": "2020-08-13T11:56:30+00:00", + "releaseTime": "2020-08-13T11:56:30+00:00" + }, + { + "id": "1.16_combat-1", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_16_combat-1/1_16_combat-1.json", + "time": "2020-08-12T14:07:25+00:00", + "releaseTime": "2020-08-12T14:07:25+00:00" + }, + { + "id": "1.16_combat-0", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_16_combat-0/1_16_combat-0.json", + "time": "2020-08-07T10:44:47+00:00", + "releaseTime": "2020-08-07T10:44:47+00:00" + }, + { + "id": "1.15_combat-6", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_15_combat-6/1_15_combat-6.json", + "time": "2020-01-15T09:46:35+00:00", + "releaseTime": "2020-01-15T09:46:35+00:00" + }, + { + "id": "1.15_combat-1", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_15_combat-1/1_15_combat-1.json", + "time": "2019-11-29T15:41:39+00:00", + "releaseTime": "2019-11-29T15:41:39+00:00" + }, + { + "id": "1.14_combat-3", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_14_combat-3/1_14_combat-3.json", + "time": "2019-10-31T14:31:38+00:00", + "releaseTime": "2019-10-31T14:31:38+00:00" + }, + { + "id": "1.14_combat-0", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_14_combat-0/1_14_combat-0.json", + "time": "2019-08-13T07:33:42+00:00", + "releaseTime": "2019-08-13T07:33:42+00:00" + }, + { + "id": "1.14_combat-212796", + "type": "pending", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_14_combat-212796/1_14_combat-212796.json", + "time": "2019-06-20T13:23:44+00:00", + "releaseTime": "2019-06-20T13:23:44+00:00" + }, + { + "id": "2.0_blue", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/2point0_blue/2point0_blue.json", + "time": "2013-08-06T06:00:02-05:00", + "releaseTime": "2013-03-20T05:00:02-05:00" + }, + { + "id": "2.0_red", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/2point0_red/2point0_red.json", + "time": "2013-08-06T06:00:01-05:00", + "releaseTime": "2013-03-20T05:00:01-05:00" + }, + { + "id": "2.0_purple", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/2point0_purple/2point0_purple.json", + "time": "2013-08-06T06:00:00-05:00", + "releaseTime": "2013-03-20T05:00:00-05:00" + }, + { + "id": "13w12~", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w12-/13w12-.json", + "time": "2013-03-19T00:00:00+00:00", + "releaseTime": "2013-03-19T00:00:00+00:00" + }, + { + "id": "13w10b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w10b/13w10b.json", + "time": "2013-03-06T00:00:00+00:00", + "releaseTime": "2013-03-06T00:00:00+00:00" + }, + { + "id": "13w10a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w10a/13w10a.json", + "time": "2013-03-04T00:00:00+00:00", + "releaseTime": "2013-03-04T00:00:00+00:00" + }, + { + "id": "13w09c", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w09c/13w09c.json", + "time": "2013-03-01T00:00:00+00:00", + "releaseTime": "2013-03-01T00:00:00+00:00" + }, + { + "id": "13w09b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w09b/13w09b.json", + "time": "2013-02-27T00:00:00+00:00", + "releaseTime": "2013-02-27T00:00:00+00:00" + }, + { + "id": "13w09a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w09a/13w09a.json", + "time": "2013-02-26T00:00:00+00:00", + "releaseTime": "2013-02-26T00:00:00+00:00" + }, + { + "id": "13w07a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w07a/13w07a.json", + "time": "2013-02-14T00:00:00+00:00", + "releaseTime": "2013-02-14T00:00:00+00:00" + }, + { + "id": "13w11a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w11a/13w11a.json", + "time": "2013-02-14T00:00:00+00:00", + "releaseTime": "2013-02-14T00:00:00+00:00" + }, + { + "id": "13w06a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w06a/13w06a.json", + "time": "2013-02-07T00:00:00+00:00", + "releaseTime": "2013-02-07T00:00:00+00:00" + }, + { + "id": "13w05b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w05b/13w05b.json", + "time": "2013-02-01T00:00:00+00:00", + "releaseTime": "2013-02-01T00:00:00+00:00" + }, + { + "id": "13w05a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w05a/13w05a.json", + "time": "2013-01-31T00:00:00+00:00", + "releaseTime": "2013-01-31T00:00:00+00:00" + }, + { + "id": "13w04a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w04a/13w04a.json", + "time": "2013-01-24T00:00:00+00:00", + "releaseTime": "2013-01-24T00:00:00+00:00" + }, + { + "id": "13w03a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w03a/13w03a.json", + "time": "2013-01-17T00:00:00+00:00", + "releaseTime": "2013-01-17T00:00:00+00:00" + }, + { + "id": "13w02b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w02b/13w02b.json", + "time": "2013-01-11T00:00:00+00:00", + "releaseTime": "2013-01-11T00:00:00+00:00" + }, + { + "id": "13w02a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w02a/13w02a.json", + "time": "2013-01-10T00:00:00+00:00", + "releaseTime": "2013-01-10T00:00:00+00:00" + }, + { + "id": "13w01b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w01b/13w01b.json", + "time": "2013-01-04T00:00:00+00:00", + "releaseTime": "2013-01-04T00:00:00+00:00" + }, + { + "id": "13w01a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/13w01a/13w01a.json", + "time": "2013-01-03T00:00:00+00:00", + "releaseTime": "2013-01-03T00:00:00+00:00" + }, + { + "id": "12w50b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w50b/12w50b.json", + "time": "2012-12-14T00:00:00+00:00", + "releaseTime": "2012-12-14T00:00:00+00:00" + }, + { + "id": "12w50a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w50a/12w50a.json", + "time": "2012-12-13T00:00:00+00:00", + "releaseTime": "2012-12-13T00:00:00+00:00" + }, + { + "id": "12w49a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w49a/12w49a.json", + "time": "2012-12-07T00:00:00+00:00", + "releaseTime": "2012-12-07T00:00:00+00:00" + }, + { + "id": "12w42b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w42b/12w42b.json", + "time": "2012-10-18T00:00:00+00:00", + "releaseTime": "2012-10-18T00:00:00+00:00" + }, + { + "id": "12w42a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w42a/12w42a.json", + "time": "2012-10-17T00:00:00+00:00", + "releaseTime": "2012-10-17T00:00:00+00:00" + }, + { + "id": "12w41b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w41b/12w41b.json", + "time": "2012-10-12T00:00:00+00:00", + "releaseTime": "2012-10-12T00:00:00+00:00" + }, + { + "id": "12w41a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w41a/12w41a.json", + "time": "2012-10-11T00:00:00+00:00", + "releaseTime": "2012-10-11T00:00:00+00:00" + }, + { + "id": "12w40b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w40b/12w40b.json", + "time": "2012-10-05T00:00:00+00:00", + "releaseTime": "2012-10-05T00:00:00+00:00" + }, + { + "id": "12w40a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w40a/12w40a.json", + "time": "2012-10-04T00:00:00+00:00", + "releaseTime": "2012-10-04T00:00:00+00:00" + }, + { + "id": "12w39b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w39b/12w39b.json", + "time": "2012-09-28T00:00:00+00:00", + "releaseTime": "2012-09-28T00:00:00+00:00" + }, + { + "id": "12w39a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w39a/12w39a.json", + "time": "2012-09-27T00:00:00+00:00", + "releaseTime": "2012-09-27T00:00:00+00:00" + }, + { + "id": "12w38b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w38b/12w38b.json", + "time": "2012-09-21T00:00:00+00:00", + "releaseTime": "2012-09-21T00:00:00+00:00" + }, + { + "id": "12w38a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w38a/12w38a.json", + "time": "2012-09-20T00:00:00+00:00", + "releaseTime": "2012-09-20T00:00:00+00:00" + }, + { + "id": "12w37a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w37a/12w37a.json", + "time": "2012-09-13T00:00:00+00:00", + "releaseTime": "2012-09-13T00:00:00+00:00" + }, + { + "id": "12w36a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w36a/12w36a.json", + "time": "2012-09-06T00:00:00+00:00", + "releaseTime": "2012-09-06T00:00:00+00:00" + }, + { + "id": "12w34b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w34b/12w34b.json", + "time": "2012-08-24T00:00:00+00:00", + "releaseTime": "2012-08-24T00:00:00+00:00" + }, + { + "id": "12w34a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w34a/12w34a.json", + "time": "2012-08-23T00:00:00+00:00", + "releaseTime": "2012-08-23T00:00:00+00:00" + }, + { + "id": "12w32a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w32a/12w32a.json", + "time": "2012-08-09T00:00:00+00:00", + "releaseTime": "2012-08-09T00:00:00+00:00" + }, + { + "id": "12w30d", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w30d/12w30d.json", + "time": "2012-07-25T00:00:00+00:00", + "releaseTime": "2012-07-25T00:00:00+00:00" + }, + { + "id": "12w30e", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w30e/12w30e.json", + "time": "2012-07-25T00:00:00+00:00", + "releaseTime": "2012-07-25T00:00:00+00:00" + }, + { + "id": "12w30c", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w30c/12w30c.json", + "time": "2012-07-24T00:00:00+00:00", + "releaseTime": "2012-07-24T00:00:00+00:00" + }, + { + "id": "12w30a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w30a/12w30a.json", + "time": "2012-07-23T00:00:00+00:00", + "releaseTime": "2012-07-23T00:00:00+00:00" + }, + { + "id": "12w30b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w30b/12w30b.json", + "time": "2012-07-23T00:00:00+00:00", + "releaseTime": "2012-07-23T00:00:00+00:00" + }, + { + "id": "12w27a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w27a/12w27a.json", + "time": "2012-07-05T00:00:00+00:00", + "releaseTime": "2012-07-05T00:00:00+00:00" + }, + { + "id": "12w26a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w26a/12w26a.json", + "time": "2012-06-27T00:00:00+00:00", + "releaseTime": "2012-06-27T00:00:00+00:00" + }, + { + "id": "12w25a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w25a/12w25a.json", + "time": "2012-06-21T00:00:00+00:00", + "releaseTime": "2012-06-21T00:00:00+00:00" + }, + { + "id": "12w24a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w24a/12w24a.json", + "time": "2012-06-14T00:00:00+00:00", + "releaseTime": "2012-06-14T00:00:00+00:00" + }, + { + "id": "12w23a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w23a/12w23a.json", + "time": "2012-06-07T00:00:00+00:00", + "releaseTime": "2012-06-07T00:00:00+00:00" + }, + { + "id": "12w23b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w23b/12w23b.json", + "time": "2012-06-07T00:00:00+00:00", + "releaseTime": "2012-06-07T00:00:00+00:00" + }, + { + "id": "12w22a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w22a/12w22a.json", + "time": "2012-05-31T00:00:00+00:00", + "releaseTime": "2012-05-31T00:00:00+00:00" + }, + { + "id": "12w21b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w21b/12w21b.json", + "time": "2012-05-25T00:00:00+00:00", + "releaseTime": "2012-05-25T00:00:00+00:00" + }, + { + "id": "12w21a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w21a/12w21a.json", + "time": "2012-05-24T00:00:00+00:00", + "releaseTime": "2012-05-24T00:00:00+00:00" + }, + { + "id": "12w19a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w19a/12w19a.json", + "time": "2012-05-10T00:00:00+00:00", + "releaseTime": "2012-05-10T00:00:00+00:00" + }, + { + "id": "12w18a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w18a/12w18a.json", + "time": "2012-05-03T00:00:00+00:00", + "releaseTime": "2012-05-03T00:00:00+00:00" + }, + { + "id": "12w17a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w17a/12w17a.json", + "time": "2012-04-26T00:00:00+00:00", + "releaseTime": "2012-04-26T00:00:00+00:00" + }, + { + "id": "12w16a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w16a/12w16a.json", + "time": "2012-04-19T00:00:00+00:00", + "releaseTime": "2012-04-19T00:00:00+00:00" + }, + { + "id": "1.2", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1_2/1_2.json", + "time": "2012-02-29T00:00:00+00:00", + "releaseTime": "2012-02-29T00:00:00+00:00" + }, + { + "id": "12w08a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w08a/12w08a.json", + "time": "2012-02-23T00:00:00+00:00", + "releaseTime": "2012-02-23T00:00:00+00:00" + }, + { + "id": "12w07a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w07a/12w07a.json", + "time": "2012-02-15T00:00:00+00:00", + "releaseTime": "2012-02-15T00:00:00+00:00" + }, + { + "id": "12w07b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w07b/12w07b.json", + "time": "2012-02-15T00:00:00+00:00", + "releaseTime": "2012-02-15T00:00:00+00:00" + }, + { + "id": "12w06a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w06a/12w06a.json", + "time": "2012-02-09T00:00:00+00:00", + "releaseTime": "2012-02-09T00:00:00+00:00" + }, + { + "id": "12w05b", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w05b/12w05b.json", + "time": "2012-02-03T00:00:00+00:00", + "releaseTime": "2012-02-03T00:00:00+00:00" + }, + { + "id": "12w05a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w05a/12w05a.json", + "time": "2012-02-02T00:00:00+00:00", + "releaseTime": "2012-02-02T00:00:00+00:00" + }, + { + "id": "12w04a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w04a/12w04a.json", + "time": "2012-01-26T00:00:00+00:00", + "releaseTime": "2012-01-26T00:00:00+00:00" + }, + { + "id": "12w03a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w03a/12w03a.json", + "time": "2012-01-19T00:00:00+00:00", + "releaseTime": "2012-01-19T00:00:00+00:00" + }, + { + "id": "12w01a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/12w01a/12w01a.json", + "time": "2012-01-05T00:00:00+00:00", + "releaseTime": "2012-01-05T00:00:00+00:00" + }, + { + "id": "11w50a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/11w50a/11w50a.json", + "time": "2011-12-15T00:00:00+00:00", + "releaseTime": "2011-12-15T00:00:00+00:00" + }, + { + "id": "11w49a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/11w49a/11w49a.json", + "time": "2011-12-08T00:00:00+00:00", + "releaseTime": "2011-12-08T00:00:00+00:00" + }, + { + "id": "11w48a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/11w48a/11w48a.json", + "time": "2011-12-01T00:00:00+00:00", + "releaseTime": "2011-12-01T00:00:00+00:00" + }, + { + "id": "11w47a", + "type": "snapshot", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/11w47a/11w47a.json", + "time": "2011-11-24T00:00:00+00:00", + "releaseTime": "2011-11-24T00:00:00+00:00" + }, + { + "id": "1.0.0-rc2-3", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1.0.0-rc2-3/1.0.0-rc2-3.json", + "time": "2013-08-06T07:33:30-07:00", + "releaseTime": "2011-11-14T15:00:00-07:00" + }, + { + "id": "1.0.0-rc2-2", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1.0.0-rc2-2/1.0.0-rc2-2.json", + "time": "2019-04-21T21:04:24+00:00", + "releaseTime": "2011-11-14T00:00:00+00:00" + }, + { + "id": "1.0.0-rc2-1", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1.0.0-rc2-1/1.0.0-rc2-1.json", + "time": "2019-11-21T22:37:45+00:00", + "releaseTime": "2011-11-13T17:33:00+00:00" + }, + { + "id": "1.0.0-rc1", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/1.0.0-rc1/1.0.0-rc1.json", + "time": "2013-08-06T07:33:30-07:00", + "releaseTime": "2011-11-13T15:00:00-07:00" + }, + { + "id": "b1.9-pre6", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/b1_9-pre6/b1_9-pre6.json", + "time": "2011-11-11T00:00:00+00:00", + "releaseTime": "2011-11-11T00:00:00+00:00" + }, + { + "id": "b1.9-pre5", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/b1_9-pre5/b1_9-pre5.json", + "time": "2011-10-27T00:00:00+00:00", + "releaseTime": "2011-10-27T00:00:00+00:00" + }, + { + "id": "b1.9-pre4", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/b1_9-pre4/b1_9-pre4.json", + "time": "2011-10-13T00:00:00+00:00", + "releaseTime": "2011-10-13T00:00:00+00:00" + }, + { + "id": "b1.9-pre3", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/b1_9-pre3/b1_9-pre3.json", + "time": "2011-10-06T00:00:00+00:00", + "releaseTime": "2011-10-06T00:00:00+00:00" + }, + { + "id": "b1.9-pre2", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/b1_9-pre2/b1_9-pre2.json", + "time": "2011-09-29T00:00:00+00:00", + "releaseTime": "2011-09-29T00:00:00+00:00" + }, + { + "id": "b1.9-pre1", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/b1_9-pre1/b1_9-pre1.json", + "time": "2011-09-22T00:00:00+00:00", + "releaseTime": "2011-09-22T00:00:00+00:00" + }, + { + "id": "b1.8-pre2", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/b1_8-pre2/b1_8-pre2.json", + "time": "2011-09-13T00:00:00+00:00", + "releaseTime": "2011-09-13T00:00:00+00:00" + }, + { + "id": "b1.8-pre1-2", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/b1_8-pre1/b1_8-pre1.json", + "time": "2011-09-09T00:00:00+00:00", + "releaseTime": "2011-09-09T00:00:00+00:00" + }, + { + "id": "b1.8-pre1-1", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/b1.8-pre1-1/b1.8-pre1-1.json", + "time": "2011-09-09T00:00:00+00:00", + "releaseTime": "2011-09-09T00:00:00+00:00" + }, + { + "id": "b1.6-tb3", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/b1.6-tb3/b1.6-tb3.json", + "time": "2013-08-06T07:33:30-07:00", + "releaseTime": "2011-05-24T15:00:00-07:00" + }, + { + "id": "b1.1-1", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/b1.1-1/b1.1-1.json", + "time": "2016-02-02T15:37:47+00:00", + "releaseTime": "2010-12-21T22:00:00+00:00" + }, + { + "id": "b1.1-2", + "type": "old_beta", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/b1.1-2/b1.1-2.json", + "time": "2016-02-02T15:37:47+00:00", + "releaseTime": "2010-12-21T22:00:00+00:00" + }, + { + "id": "a1.1.1", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.1.1/a1.1.1.json", + "time": "2010-09-18T19:29:56+02:00", + "releaseTime": "2010-09-18T19:29:56+02:00" + }, + { + "id": "a1.1.0-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.1.0-2/a1.1.0-2.json", + "time": "2016-02-02T15:37:47+00:00", + "releaseTime": "2010-09-12T22:00:00+00:00" + }, + { + "id": "a1.1.0-1", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.1.0-1/a1.1.0-1.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-09-10T00:00:00+00:00" + }, + { + "id": "a1.0.17_03", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.17_03/a1.0.17_03.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-08-23T00:00:00+00:00" + }, + { + "id": "a1.0.16_02", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.16_02/a1.0.16_02.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-08-13T00:00:00+00:00" + }, + { + "id": "a1.0.16_01", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.16_01/a1.0.16_01.json", + "time": "2013-08-06T04:00:00-07:00", + "releaseTime": "2010-08-12T15:00:00-07:00" + }, + { + "id": "a1.0.14-1", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.14-1/a1.0.14-1.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-30T00:00:00+00:00" + }, + { + "id": "a1.0.14-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.14-2/a1.0.14-2.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-30T00:00:00+00:00" + }, + { + "id": "a1.0.13_01-1", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.13_01-1/a1.0.13_01-1.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-29T00:00:00+00:00" + }, + { + "id": "a1.0.13_01-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.13_01-2/a1.0.13_01-2.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-29T00:00:00+00:00" + }, + { + "id": "a1.0.13", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.13/a1.0.13.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-28T00:00:00+00:00" + }, + { + "id": "a1.0.12", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.12/a1.0.12.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-26T00:00:00+00:00" + }, + { + "id": "a1.0.10", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.10/a1.0.10.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-22T00:00:00+00:00" + }, + { + "id": "a1.0.9", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.9/a1.0.9.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-21T00:00:00+00:00" + }, + { + "id": "a1.0.7", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.7/a1.0.7.json", + "time": "2013-08-06T04:00:00-07:00", + "releaseTime": "2010-07-19T15:00:00-07:00" + }, + { + "id": "a1.0.8_01", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.8_01/a1.0.8_01.json", + "time": "2013-08-06T04:00:00-07:00", + "releaseTime": "2010-07-19T15:00:00-07:00" + }, + { + "id": "a1.0.6_01", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.6_01/a1.0.6_01.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-17T00:00:00+00:00" + }, + { + "id": "a1.0.6_03", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.6_03/a1.0.6_03.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-17T00:00:00+00:00" + }, + { + "id": "a1.0.6", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.6/a1.0.6.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-16T00:00:00+00:00" + }, + { + "id": "a1.0.5", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.5/a1.0.5.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-13T00:00:00+00:00" + }, + { + "id": "a1.0.3", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.3/a1.0.3.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-07T00:00:00+00:00" + }, + { + "id": "a1.0.2_01", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.2_01/a1.0.2_01.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-06T00:00:00+00:00" + }, + { + "id": "a1.0.2_02", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.2_02/a1.0.2_02.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-06T00:00:00+00:00" + }, + { + "id": "a1.0.1_01", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/a1.0.1_01/a1.0.1_01.json", + "time": "2017-10-22T05:26:50+00:00", + "releaseTime": "2010-07-03T22:00:00+00:00" + }, + { + "id": "inf-20100630-1", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100630-1/inf-20100630-1.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-06-30T00:00:00-00:00" + }, + { + "id": "inf-20100630-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100630-2/inf-20100630-2.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-06-30T00:00:00-00:00" + }, + { + "id": "inf-20100629", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100629/inf-20100629.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-06-29T00:00:00-00:00" + }, + { + "id": "inf-20100627", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100627/inf-20100627.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-06-27T15:00:00-07:00" + }, + { + "id": "inf-20100625-1", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100625-1/inf-20100625-1.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-06-25T00:00:00-00:00" + }, + { + "id": "inf-20100625-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100625-2/inf-20100625-2.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-06-25T00:00:00-00:00" + }, + { + "id": "inf-20100624", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100624/inf-20100624.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-06-24T00:00:00-00:00" + }, + { + "id": "inf-20100617-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100617-2/inf-20100617-2.json", + "time": "2010-06-17T00:00:00-00:00", + "releaseTime": "2010-06-17T00:00:00-00:00" + }, + { + "id": "inf-20100617-3", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100617-3/inf-20100617-3.json", + "time": "2010-06-17T00:00:00-00:00", + "releaseTime": "2010-06-17T00:00:00-00:00" + }, + { + "id": "inf-20100615", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100615/inf-20100615.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-06-15T00:00:00-00:00" + }, + { + "id": "inf-20100611", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100611/inf-20100611.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-06-11T00:00:00-00:00" + }, + { + "id": "inf-20100608", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100608/inf-20100608.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-06-08T15:00:00-07:00" + }, + { + "id": "inf-20100607", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100607/inf-20100607.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-06-07T00:00:00-00:00" + }, + { + "id": "inf-20100420", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100420/inf-20100420.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-04-20T15:00:00-07:00" + }, + { + "id": "inf-20100415", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100415/inf-20100415.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-04-15T15:00:00-07:00" + }, + { + "id": "inf-20100414", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100414/inf-20100414.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-04-14T00:00:00-00:00" + }, + { + "id": "inf-20100413", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100413/inf-20100413.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-04-13T00:00:00-00:00" + }, + { + "id": "inf-20100330", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100330/inf-20100330.json", + "time": "2010-03-30T00:00:00-00:00", + "releaseTime": "2010-03-30T00:00:00-00:00" + }, + { + "id": "inf-20100327", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100327/inf-20100327.json", + "time": "2010-03-27T00:00:00-00:00", + "releaseTime": "2010-03-27T00:00:00-00:00" + }, + { + "id": "inf-20100325", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100325/inf-20100325.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-03-25T00:00:00-00:00" + }, + { + "id": "inf-20100321", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100321/inf-20100321.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-03-21T00:00:00-00:00" + }, + { + "id": "inf-20100320", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100320/inf-20100320.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-03-20T00:00:00-00:00" + }, + { + "id": "inf-20100316", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100316/inf-20100316.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-03-16T00:00:00-00:00" + }, + { + "id": "inf-20100313", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/inf-20100313/inf-20100313.json", + "time": "2015-04-13T07:33:30-07:00", + "releaseTime": "2010-03-13T00:00:00-00:00" + }, + { + "id": "in-20100223", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100223/in-20100223.json", + "time": "2013-08-06T07:33:30-07:00", + "releaseTime": "2010-02-23T15:00:00-07:00" + }, + { + "id": "in-20100219", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100219/in-20100219.json", + "time": "2017-10-24T00:00:00+00:00", + "releaseTime": "2010-02-19T00:00:00+00:00" + }, + { + "id": "in-20100218", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100218/in-20100218.json", + "time": "2017-09-20T00:00:00+00:00", + "releaseTime": "2010-02-18T00:00:00+00:00" + }, + { + "id": "in-20100214-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100214-2/in-20100214-2.json", + "time": "2017-09-20T00:00:00+00:00", + "releaseTime": "2010-02-14T00:00:01+00:00" + }, + { + "id": "in-20100214-1", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100214-1/in-20100214-1.json", + "time": "2017-09-20T00:00:00+00:00", + "releaseTime": "2010-02-14T00:00:00+00:00" + }, + { + "id": "in-20100212-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100212-2/in-20100212-2.json", + "time": "2017-09-20T00:00:00+00:00", + "releaseTime": "2010-02-12T00:00:01+00:00" + }, + { + "id": "in-20100212-1", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100212-1/in-20100212-1.json", + "time": "2017-09-20T00:00:00+00:00", + "releaseTime": "2010-02-12T00:00:00+00:00" + }, + { + "id": "in-20100207-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100207-2/in-20100207-2.json", + "time": "2017-09-20T00:00:00+00:00", + "releaseTime": "2010-02-07T00:00:01+00:00" + }, + { + "id": "in-20100207-1", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100207-1/in-20100207-1.json", + "time": "2017-09-20T00:00:00+00:00", + "releaseTime": "2010-02-07T00:00:00+00:00" + }, + { + "id": "in-20100206-2103", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100206-2103/in-20100206-2103.json", + "time": "2020-10-14T18:51:02+00:00", + "releaseTime": "2010-02-06T21:03:00+00:00" + }, + { + "id": "in-20100203", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100203/in-20100203.json", + "time": "2017-09-20T19:21:48+02:00", + "releaseTime": "2010-02-03T00:30:00+02:00" + }, + { + "id": "in-20100201-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100201-2/in-20100201-2.json", + "time": "2017-09-20T19:21:48+02:00", + "releaseTime": "2010-02-01T00:00:00+00:00" + }, + { + "id": "in-20100201-3", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100201-3/in-20100201-3.json", + "time": "2017-09-20T19:21:48+02:00", + "releaseTime": "2010-02-01T00:00:00+00:00" + }, + { + "id": "in-20100130", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100130/in-20100130.json", + "time": "2013-08-06T07:33:30-07:00", + "releaseTime": "2010-01-30T00:00:00-00:00" + }, + { + "id": "in-20100129", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100129/in-20100129.json", + "time": "2010-01-29T00:00:00-00:00", + "releaseTime": "2010-01-29T00:00:00-00:00" + }, + { + "id": "in-20100128-2304", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100128-2304/in-20100128-2304.json", + "time": "2010-01-28T23:04:00-00:00", + "releaseTime": "2010-01-28T23:04:00-00:00" + }, + { + "id": "in-20100125-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100125-2/in-20100125-2.json", + "time": "2017-09-20T00:00:00+00:00", + "releaseTime": "2010-01-25T15:00:01-07:00" + }, + { + "id": "in-20100125-1", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100125-1/in-20100125-1.json", + "time": "2017-09-20T00:00:00+00:00", + "releaseTime": "2010-01-25T15:00:00-07:00" + }, + { + "id": "in-20100111-1", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100111-1/in-20100111-1.json", + "time": "2017-09-20T00:00:00+00:00", + "releaseTime": "2010-01-11T15:00:00-07:00" + }, + { + "id": "in-20100105", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20100105/in-20100105.json", + "time": "2013-08-06T07:33:30-07:00", + "releaseTime": "2010-01-05T00:00:00-00:00" + }, + { + "id": "in-20091231-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20091231-2/in-20091231-2.json", + "time": "2021-06-26T22:48:05+00:00", + "releaseTime": "2009-12-31T23:55:00+00:00" + }, + { + "id": "in-20091223-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/in-20091223-2/in-20091223-2.json", + "time": "2009-12-23T00:00:00-00:00", + "releaseTime": "2009-12-23T00:00:00-00:00" + }, + { + "id": "c0.30-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.30-2/c0.30-2.json", + "time": "2013-08-06T17:33:30+03:00", + "releaseTime": "2009-11-10T00:00:01+02:00" + }, + { + "id": "c0.30-1", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.30-1/c0.30-1.json", + "time": "2013-08-06T17:33:30+03:00", + "releaseTime": "2009-11-10T00:00:00+02:00" + }, + { + "id": "c0.29_02", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.29_02/c0.29_02.json", + "time": "2017-09-20T03:05:00+01:00", + "releaseTime": "2009-10-30T00:00:00+00:00" + }, + { + "id": "c0.29_01", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.29_01/c0.29_01.json", + "time": "2021-06-26T12:16:50+00:00", + "releaseTime": "2009-10-29T00:00:00+00:00" + }, + { + "id": "c0.28_01", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.28_01/c0.28_01.json", + "time": "2017-09-20T03:19:48+01:00", + "releaseTime": "2009-10-27T00:00:00+00:00" + }, + { + "id": "c0.27_st", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.27_st/c0.27_st.json", + "time": "2017-09-17T16:33:30+02:00", + "releaseTime": "2009-10-24T23:00:00+00:00" + }, + { + "id": "c0.25_05_st", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.25_05_st/c0.25_05_st.json", + "time": "2009-09-03T00:00:00+00:00", + "releaseTime": "2009-09-03T00:00:00+00:00" + }, + { + "id": "c0.24_st_03", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.24_st_03/c0.24_st_03.json", + "time": "2009-09-01T00:00:00+00:00", + "releaseTime": "2009-09-01T00:00:00+00:00" + }, + { + "id": "c0.0.22a_05", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.0.22a_05/c0.0.22a_05.json", + "time": "2009-06-30T00:00:00+00:00", + "releaseTime": "2009-06-30T00:00:00+00:00" + }, + { + "id": "c0.0.21a", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.0.21a/c0.0.21a.json", + "time": "2017-09-20T03:12:34+01:00", + "releaseTime": "2009-06-22T23:11:11+01:00" + }, + { + "id": "c0.0.20a_01", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.0.20a_01/c0.0.20a_01.json", + "time": "2020-10-14T23:51:10+00:00", + "releaseTime": "2009-06-20T23:10:00+00:00" + }, + { + "id": "c0.0.19a_06-2", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.0.19a_06-2/c0.0.19a_06-2.json", + "time": "2020-10-17T19:47:58-00:00", + "releaseTime": "2009-06-20T01:37:00-00:00" + }, + { + "id": "c0.0.18a_02", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.0.18a_02/c0.0.18a_02.json", + "time": "2020-10-15T18:45:15-00:00", + "releaseTime": "2009-06-14T10:53:00-00:00" + }, + { + "id": "c0.0.17a", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.0.17a/c0.0.17a.json", + "time": "2021-04-17T21:49:29-00:00", + "releaseTime": "2009-06-10T20:14:00-00:00" + }, + { + "id": "c0.0.16a_02", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.0.16a_02/c0.0.16a_02.json", + "time": "2019-10-20T21:42:41+00:00", + "releaseTime": "2009-06-08T12:47:00+00:00" + }, + { + "id": "c0.0.23a_01", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.0.23a_01/c0.0.23a_01.json", + "time": "2013-08-06T15:33:30+01:00", + "releaseTime": "2009-05-28T23:11:11+01:00" + }, + { + "id": "c0.0.14a_08", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.0.14a_08/c0.0.14a_08.json", + "time": "2019-10-20T21:41:28+00:00", + "releaseTime": "2009-05-28T22:37:00+00:00" + }, + { + "id": "c0.0.12a_03", + "type": "old_alpha", + "url": "https://zkitefly.github.io/unlisted-versions-of-minecraft/files/c0.0.12a_03/c0.0.12a_03.json", + "time": "2021-04-26T19:18:00-00:00", + "releaseTime": "2009-05-20T00:00:00-00:00" + } +] \ No newline at end of file diff --git a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/MinecraftVersion.kt b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/MinecraftVersion.kt index e28821435..b43aeb672 100644 --- a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/MinecraftVersion.kt +++ b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/MinecraftVersion.kt @@ -29,7 +29,8 @@ import com.movtery.zalithlauncher.game.versioninfo.models.VersionManifest class MinecraftVersion( val version: VersionManifest.Version, val type: Type, - val summary: Int? + val summary: Int?, + val urlSuffix: String? = null ): Comparable { override fun compareTo(other: MinecraftVersion): Int { return version.releaseTime.compareTo(other.version.releaseTime) diff --git a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/MinecraftVersions.kt b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/MinecraftVersions.kt index 44eff9e47..7f58b1cb5 100644 --- a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/MinecraftVersions.kt +++ b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/MinecraftVersions.kt @@ -18,12 +18,14 @@ package com.movtery.zalithlauncher.game.versioninfo +import com.google.gson.reflect.TypeToken import com.movtery.zalithlauncher.game.addons.mirror.mapBMCLMirrorUrls import com.movtery.zalithlauncher.game.versioninfo.models.VersionManifest import com.movtery.zalithlauncher.game.versioninfo.models.filterType import com.movtery.zalithlauncher.path.PathManager import com.movtery.zalithlauncher.path.URL_MINECRAFT_VERSION_REPOS import com.movtery.zalithlauncher.utils.GSON +import com.movtery.zalithlauncher.utils.file.readString import com.movtery.zalithlauncher.utils.logging.Logger.lWarning import com.movtery.zalithlauncher.utils.network.fetchStringFromUrls import com.movtery.zalithlauncher.utils.network.withRetry @@ -84,7 +86,8 @@ object MinecraftVersions { } } - newManifest ?: throw IllegalStateException("Version manifest is null after all attempts") + val newManifest0 = newManifest ?: throw IllegalStateException("Version manifest is null after all attempts") + mergeUnlistVersions(newManifest0) ?: newManifest0 }.also { newManifest -> manifest = newManifest } @@ -117,4 +120,32 @@ object MinecraftVersions { } } } + + /** + * 尝试从本地合并官方隐藏的版本 + */ + private suspend fun mergeUnlistVersions( + currentManifest: VersionManifest + ): VersionManifest? { + return withContext(Dispatchers.IO) { + MinecraftVersions::class.java.getResourceAsStream("/assets/game/unlist_versions.json")?.use { input -> + input.readString() + }?.let { unlistVersionJson -> + GSON.fromJson>( + unlistVersionJson, + object : TypeToken>() {}.type + ) + }?.let { unlistVersions -> + val versions = currentManifest.versions.toMutableList() + versions.addAll(unlistVersions) + versions.sortWith { version, other -> + other.releaseTime.compareTo(version.releaseTime) + } + + currentManifest.copy( + versions = versions.toList() + ) + } + } + } } \ No newline at end of file diff --git a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/_MinecraftVersionCatalog.kt b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/_MinecraftVersionCatalog.kt index aa3821591..6cc335d64 100644 --- a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/_MinecraftVersionCatalog.kt +++ b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/_MinecraftVersionCatalog.kt @@ -53,7 +53,8 @@ val allGameVersions = listOf( * 愚人节版本类型 */ enum class AprilFoolsType( - val summary: Int? = null + val summary: Int? = null, + val urlSuffix: String? = null ) { /** * [Wiki](https://zh.minecraft.wiki/w/25w14craftmine) @@ -86,7 +87,11 @@ enum class AprilFoolsType( /** * [Wiki](https://zh.minecraft.wiki/w/15w14a) */ - TheLoveAndHugsUpdate(R.string.version_summary_fools_the_love_and_hugs_update) + TheLoveAndHugsUpdate(R.string.version_summary_fools_the_love_and_hugs_update), + /** + * [Wiki](https://zh.minecraft.wiki/w/Java%E7%89%882.0) + */ + `2_0`(R.string.version_summary_fools_2_0, "2.0") } /** @@ -109,7 +114,10 @@ val allAprilFools = listOf( AprilFoolsVersion("20w14∞", AprilFoolsType.Infinite), AprilFoolsVersion("3D Shareware v1.34", AprilFoolsType.Minecraft3DShareware), AprilFoolsVersion("1.RV-Pre1", AprilFoolsType.TrendyUpdate), - AprilFoolsVersion("15w14a", AprilFoolsType.TheLoveAndHugsUpdate) + AprilFoolsVersion("15w14a", AprilFoolsType.TheLoveAndHugsUpdate), + AprilFoolsVersion("2.0_blue", AprilFoolsType.`2_0`), + AprilFoolsVersion("2.0_red", AprilFoolsType.`2_0`), + AprilFoolsVersion("2.0_purple", AprilFoolsType.`2_0`), ) /** diff --git a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/models/VersionManifest.java b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/models/VersionManifest.java deleted file mode 100644 index 741a87f12..000000000 --- a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/models/VersionManifest.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Zalith Launcher 2 - * Copyright (C) 2025 MovTery and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.movtery.zalithlauncher.game.versioninfo.models; - -import com.google.gson.annotations.SerializedName; - -import java.util.List; - -public class VersionManifest { - @SerializedName("latest") - private Latest latest; - - @SerializedName("versions") - private List versions; - - public Latest getLatest() { - return latest; - } - - public List getVersions() { - return versions; - } - - public static class Latest { - @SerializedName("release") - private String release; - - @SerializedName("snapshot") - private String snapshot; - - public String getRelease() { - return release; - } - - public String getSnapshot() { - return snapshot; - } - } - - public static class Version { - @SerializedName("id") - private String id; - - @SerializedName("type") - private String type; - - @SerializedName("url") - private String url; - - @SerializedName("time") - private String time; - - @SerializedName("releaseTime") - private String releaseTime; - - @SerializedName("sha1") - private String sha1; - - @SerializedName("complianceLevel") - private int complianceLevel; - - public String getId() { - return id; - } - - public String getType() { - return type; - } - - public String getUrl() { - return url; - } - - public String getTime() { - return time; - } - - public String getReleaseTime() { - return releaseTime; - } - - public String getSha1() { - return sha1; - } - - public int getComplianceLevel() { - return complianceLevel; - } - } -} diff --git a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/models/VersionManifest.kt b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/models/VersionManifest.kt new file mode 100644 index 000000000..48ad758a8 --- /dev/null +++ b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/models/VersionManifest.kt @@ -0,0 +1,51 @@ +/* + * Zalith Launcher 2 + * Copyright (C) 2025 MovTery and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.movtery.zalithlauncher.game.versioninfo.models + +import com.google.gson.annotations.SerializedName + +data class VersionManifest( + @SerializedName("latest") + val latest: Latest, + @SerializedName("versions") + val versions: List +) { + data class Latest( + @SerializedName("release") + val release: String, + @SerializedName("snapshot") + val snapshot: String + ) + + data class Version( + @SerializedName("id") + val id: String, + @SerializedName("type") + val type: String, + @SerializedName("url") + val url: String, + @SerializedName("time") + val time: String, + @SerializedName("releaseTime") + val releaseTime: String, + @SerializedName("sha1") + val sha1: String? = null, + @SerializedName("complianceLevel") + val complianceLevel: Int? = null + ) +} diff --git a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/models/_VersionManifest.kt b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/models/_VersionManifest.kt index a16c6ea05..5456f402a 100644 --- a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/models/_VersionManifest.kt +++ b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/versioninfo/models/_VersionManifest.kt @@ -51,13 +51,14 @@ fun List.mapVersion(): List { } else { when (version.type) { "release" -> MinecraftVersion.Type.Release - "snapshot", "pending" -> MinecraftVersion.Type.Snapshot + "snapshot", "pending", "unobfuscated" -> MinecraftVersion.Type.Snapshot "old_beta" -> MinecraftVersion.Type.OldBeta "old_alpha" -> MinecraftVersion.Type.OldAlpha else -> MinecraftVersion.Type.Unknown } }, - summary = aprilFoolsVersion?.type?.summary //暂时仅为愚人节版提供描述 + summary = aprilFoolsVersion?.type?.summary, //暂时仅为愚人节版提供描述 + urlSuffix = aprilFoolsVersion?.type?.urlSuffix ) } } diff --git a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/setting/AllSettings.kt b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/setting/AllSettings.kt index de4fdc315..0bb5c5cd3 100644 --- a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/setting/AllSettings.kt +++ b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/setting/AllSettings.kt @@ -520,7 +520,7 @@ object AllSettings : SettingsRegistry() { /** * 摇杆前进锁判定范围 */ - val joystickLockThreshold = intSetting("joystickLockThreshold", 30, 5..50) + val joystickLockThreshold = intSetting("joystickLockThreshold", 30, 5..100) /** * 游戏中摇杆移动组件是否可锁定 diff --git a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/activities/SplashActivity.kt b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/activities/SplashActivity.kt index 11a8a9208..7dd079faa 100644 --- a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/activities/SplashActivity.kt +++ b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/activities/SplashActivity.kt @@ -144,6 +144,11 @@ class SplashActivity : BaseAppCompatActivity(refreshData = false) { } private fun checkAllTask() { + //检查应用 assets 目录 + listAssetsPath("runtimes").forEach { filePath -> + lInfo("The launcher contains the runtime environment: $filePath") + } + unpackItems.forEach { item -> if (!item.task.isNeedUnpack()) { item.isFinished = true @@ -152,6 +157,30 @@ class SplashActivity : BaseAppCompatActivity(refreshData = false) { } } + private fun listAssetsPath(root: String): List { + return buildList { + val rootFiles = runCatching { + assets.list(root)?.takeIf { it.isNotEmpty() } + }.getOrNull() + if (rootFiles != null) { + rootFiles.forEach { child -> + val childPath = "$root/$child" + val childFiles = runCatching { + assets.list(childPath)?.takeIf { it.isNotEmpty() } + }.getOrNull() + + if (childFiles != null) { + addAll(listAssetsPath(childPath)) + } else { + add(childPath) + } + } + } else { + add(root) + } + } + } + private fun startAllTask() { lifecycleScope.launch { val jobs = unpackItems diff --git a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/components/Menu.kt b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/components/Menu.kt index eb6a211b9..e5641b21a 100644 --- a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/components/Menu.kt +++ b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/components/Menu.kt @@ -21,10 +21,12 @@ package com.movtery.zalithlauncher.ui.components import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.animateFloatAsState -import androidx.compose.animation.core.tween import androidx.compose.animation.expandVertically +import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.shrinkVertically +import androidx.compose.animation.slideInHorizontally +import androidx.compose.animation.slideOutHorizontally import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.MutableInteractionSource @@ -41,7 +43,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn -import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn @@ -59,7 +60,6 @@ import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -72,15 +72,15 @@ import androidx.compose.ui.draw.rotate import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.IntOffset +import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp import com.movtery.zalithlauncher.R import com.movtery.zalithlauncher.ui.screens.content.elements.DisabledAlpha import com.movtery.zalithlauncher.utils.animation.getAnimateTween import com.movtery.zalithlauncher.utils.animation.getAnimateTweenJellyBounce -import com.movtery.zalithlauncher.utils.animation.swapAnimateDpAsState import java.text.DecimalFormat /** @@ -117,46 +117,21 @@ fun MenuSubscreen( closeScreen: () -> Unit, shape: Shape = RoundedCornerShape(21.0.dp), backgroundColor: Color = Color.Black.copy(alpha = 0.25f), - backgroundAnimDuration: Int = 150, content: @Composable ColumnScope.() -> Unit ) { val visible = state == MenuState.SHOW - val animationProgress = remember { Animatable(0f) } - var shouldRender by remember { mutableStateOf(false) } - - LaunchedEffect(visible) { - if (visible) { - shouldRender = true - animationProgress.animateTo( - targetValue = 1f, - animationSpec = tween(backgroundAnimDuration) - ) - } else { - animationProgress.animateTo( - targetValue = 0f, - animationSpec = tween(backgroundAnimDuration) - ) - shouldRender = false - } - } + val isRtl = LocalLayoutDirection.current == LayoutDirection.Rtl - val bgAlpha by remember { - derivedStateOf { animationProgress.value } - } - val menuOffset by swapAnimateDpAsState( - targetValue = 40.dp, - swapIn = visible, - isHorizontal = true, - animationSpec = getAnimateTweenJellyBounce() - ) - - if (shouldRender) { - Box(modifier = Modifier.fillMaxSize()) { + Box(modifier = Modifier.fillMaxSize()) { + AnimatedVisibility( + visible = visible, + enter = fadeIn(), + exit = fadeOut() + ) { //背景阴影层 Box( modifier = Modifier .fillMaxSize() - .alpha(bgAlpha) .background(color = backgroundColor) .clickable( indication = null, //禁用水波纹点击效果 @@ -164,28 +139,33 @@ fun MenuSubscreen( onClick = closeScreen ) ) + } - //Menu - if (animationProgress.value > 0f) { - Box( - modifier = Modifier - .align(Alignment.CenterEnd) - .fillMaxWidth(fraction = 1f / 3f) - .fillMaxHeight() - .padding(top = 12.dp, end = 12.dp, bottom = 12.dp) - .offset { - IntOffset(x = menuOffset.roundToPx(), y = 0) - } + //Menu + Box( + modifier = Modifier + .align(Alignment.CenterEnd) + .fillMaxWidth(fraction = 1f / 3f) + .fillMaxHeight() + .padding(top = 12.dp, end = 12.dp, bottom = 12.dp) + ) { + AnimatedVisibility( + visible = visible, + enter = fadeIn() + slideInHorizontally( + animationSpec = getAnimateTweenJellyBounce() ) { - BackgroundCard( - shape = shape, - influencedByBackground = false, - modifier = Modifier - .fillMaxSize() - .alpha(animationProgress.value), - content = content - ) + if (isRtl) -40 else 40 + }, + exit = fadeOut() + slideOutHorizontally { + if (isRtl) -40 else 40 } + ) { + BackgroundCard( + shape = shape, + influencedByBackground = false, + modifier = Modifier.fillMaxSize(), + content = content + ) } } } @@ -197,7 +177,6 @@ fun DualMenuSubscreen( closeScreen: () -> Unit, shape: Shape = RoundedCornerShape(21.0.dp), backgroundColor: Color = Color.Black.copy(alpha = 0.25f), - backgroundAnimDuration: Int = 150, titleHeight: Dp = 48.dp, leftMenuTitle: (@Composable BoxScope.() -> Unit)? = null, leftMenuContent: @Composable ColumnScope.() -> Unit = {}, @@ -205,51 +184,18 @@ fun DualMenuSubscreen( rightMenuContent: @Composable ColumnScope.() -> Unit = {} ) { val visible = state == MenuState.SHOW + val isRtl = LocalLayoutDirection.current == LayoutDirection.Rtl - val animationProgress = remember { Animatable(0f) } - var shouldRender by remember { mutableStateOf(false) } - - LaunchedEffect(visible) { - if (visible) { - shouldRender = true - animationProgress.animateTo( - targetValue = 1f, - animationSpec = tween(backgroundAnimDuration) - ) - } else { - animationProgress.animateTo( - targetValue = 0f, - animationSpec = tween(backgroundAnimDuration) - ) - shouldRender = false - } - } - - val bgAlpha by remember { - derivedStateOf { animationProgress.value } - } - - val leftMenuOffset by swapAnimateDpAsState( - targetValue = (-40).dp, //从左 - swapIn = visible, - isHorizontal = true, - animationSpec = getAnimateTweenJellyBounce() - ) - - val rightMenuOffset by swapAnimateDpAsState( - targetValue = 40.dp, //从右 - swapIn = visible, - isHorizontal = true, - animationSpec = getAnimateTweenJellyBounce() - ) - - if (shouldRender) { - Box(modifier = Modifier.fillMaxSize()) { + Box(modifier = Modifier.fillMaxSize()) { + AnimatedVisibility( + visible = visible, + enter = fadeIn(), + exit = fadeOut() + ) { //背景阴影层 Box( modifier = Modifier .fillMaxSize() - .alpha(bgAlpha) .background(color = backgroundColor) .clickable( indication = null, @@ -257,61 +203,71 @@ fun DualMenuSubscreen( onClick = closeScreen ) ) + } - //左侧菜单 - if (animationProgress.value > 0f) { - Box( - modifier = Modifier - .align(Alignment.CenterStart) - .fillMaxWidth(fraction = 1f / 3f) - .fillMaxHeight() - .padding(top = 12.dp, start = 12.dp, bottom = 12.dp) - .offset { - IntOffset(x = leftMenuOffset.roundToPx(), y = 0) - } + //左侧菜单 + Box( + modifier = Modifier + .align(Alignment.CenterStart) + .fillMaxWidth(fraction = 1f / 3f) + .fillMaxHeight() + .padding(top = 12.dp, start = 12.dp, bottom = 12.dp) + ) { + AnimatedVisibility( + visible = visible, + enter = fadeIn() + slideInHorizontally( + animationSpec = getAnimateTweenJellyBounce() ) { - BackgroundCard( - shape = shape, - influencedByBackground = false, - modifier = Modifier - .fillMaxSize() - .alpha(animationProgress.value), - content = { - leftMenuTitle?.let { titleLayout -> - MenuTitleLayout(titleLayout, titleHeight) - } - leftMenuContent() - } - ) + if (isRtl) 40 else -40 + }, + exit = fadeOut() + slideOutHorizontally { + if (isRtl) 40 else -40 } + ) { + BackgroundCard( + shape = shape, + influencedByBackground = false, + modifier = Modifier.fillMaxSize(), + content = { + leftMenuTitle?.let { titleLayout -> + MenuTitleLayout(titleLayout, titleHeight) + } + leftMenuContent() + } + ) } + } - //右侧菜单 - if (animationProgress.value > 0f) { - Box( - modifier = Modifier - .align(Alignment.CenterEnd) - .fillMaxWidth(fraction = 1f / 3f) - .fillMaxHeight() - .padding(top = 12.dp, end = 12.dp, bottom = 12.dp) - .offset { - IntOffset(x = rightMenuOffset.roundToPx(), y = 0) - } + //右侧菜单 + Box( + modifier = Modifier + .align(Alignment.CenterEnd) + .fillMaxWidth(fraction = 1f / 3f) + .fillMaxHeight() + .padding(top = 12.dp, end = 12.dp, bottom = 12.dp) + ) { + AnimatedVisibility( + visible = visible, + enter = fadeIn() + slideInHorizontally( + animationSpec = getAnimateTweenJellyBounce() ) { - BackgroundCard( - shape = shape, - influencedByBackground = false, - modifier = Modifier - .fillMaxSize() - .alpha(animationProgress.value), - content = { - rightMenuTitle?.let { titleLayout -> - MenuTitleLayout(titleLayout, titleHeight) - } - rightMenuContent() - } - ) + if (isRtl) -40 else 40 + }, + exit = fadeOut() + slideOutHorizontally { + if (isRtl) -40 else 40 } + ) { + BackgroundCard( + shape = shape, + influencedByBackground = false, + modifier = Modifier.fillMaxSize(), + content = { + rightMenuTitle?.let { titleLayout -> + MenuTitleLayout(titleLayout, titleHeight) + } + rightMenuContent() + } + ) } } } @@ -605,6 +561,7 @@ fun MenuSliderLayout( shadowElevation: Dp = itemLayoutShadowElevation(influencedByBackground = influencedByBackground) ) { val interactionSource = remember { MutableInteractionSource() } + var showInputDialog by remember { mutableStateOf(false) } MenuButtonLayout( modifier = modifier, @@ -612,7 +569,10 @@ fun MenuSliderLayout( shape = shape, color = color, contentColor = contentColor, - shadowElevation = shadowElevation + shadowElevation = shadowElevation, + onClick = { + showInputDialog = true + } ) { Column( modifier = Modifier @@ -632,6 +592,9 @@ fun MenuSliderLayout( style = MaterialTheme.typography.titleSmall ) Text( + modifier = Modifier.clickable(enabled = enabled) { + showInputDialog = true + }, text = "$value${suffix ?: ""}", style = MaterialTheme.typography.titleSmall ) @@ -648,6 +611,17 @@ fun MenuSliderLayout( ) } } + + if (showInputDialog) { + SliderValueEditDialog( + onDismissRequest = { showInputDialog = false }, + title = title, + valueRange = valueRange, + value = value.toFloat(), + onValueChange = { onValueChangeFinished(it.toInt()) }, + intCheck = true + ) + } } @Composable @@ -672,6 +646,7 @@ fun MenuSliderLayout( fun getTextString(value: Float) = formatter.format(value) + (suffix ?: "") val interactionSource = remember { MutableInteractionSource() } + var showInputDialog by remember { mutableStateOf(false) } MenuButtonLayout( modifier = modifier, @@ -679,7 +654,10 @@ fun MenuSliderLayout( shape = shape, color = color, contentColor = contentColor, - shadowElevation = shadowElevation + shadowElevation = shadowElevation, + onClick = { + showInputDialog = true + } ) { Column( modifier = Modifier @@ -699,6 +677,9 @@ fun MenuSliderLayout( style = MaterialTheme.typography.titleSmall ) Text( + modifier = Modifier.clickable(enabled = enabled) { + showInputDialog = true + }, text = getTextString(value), style = MaterialTheme.typography.titleSmall ) @@ -715,6 +696,16 @@ fun MenuSliderLayout( ) } } + + if (showInputDialog) { + SliderValueEditDialog( + onDismissRequest = { showInputDialog = false }, + title = title, + valueRange = valueRange, + value = value, + onValueChange = { onValueChangeFinished(it) }, + ) + } } @Composable diff --git a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/screens/content/download/game/SelectGameVersionScreen.kt b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/screens/content/download/game/SelectGameVersionScreen.kt index 2319bc44c..b8f296741 100644 --- a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/screens/content/download/game/SelectGameVersionScreen.kt +++ b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/screens/content/download/game/SelectGameVersionScreen.kt @@ -302,15 +302,16 @@ fun SelectGameVersionScreen( private fun List.filterVersions( versionFilter: VersionFilter ) = this.filter { version -> - val type = version.isType( + version.isType( release = versionFilter.release, snapshot = versionFilter.snapshot, aprilFools = versionFilter.aprilFools, old = versionFilter.old ) +}.filter { version -> + //Fix:单独过滤版本名称 val versionId = versionFilter.id - val id = (versionId.isEmptyOrBlank()) || version.version.id.contains(versionId) - (type && id) + versionId.isEmptyOrBlank() || version.version.id.contains(versionId) } @Composable @@ -555,13 +556,14 @@ private fun getVersionComponents( ): Quadruple { val vmVer = version.version val summary = version.summary?.let { stringResource(it) } + val urlSuffix = version.urlSuffix ?: vmVer.id return when (version.type) { MinecraftVersion.Type.Release -> { Quadruple( painterResource(R.drawable.img_minecraft), stringResource(R.string.download_game_type_release), - stringResource(R.string.url_wiki_minecraft_game_release, vmVer.id), + stringResource(R.string.url_wiki_minecraft_game_release, urlSuffix), summary ) } @@ -569,7 +571,7 @@ private fun getVersionComponents( Quadruple( painterResource(R.drawable.img_command_block), stringResource(R.string.download_game_type_snapshot), - stringResource(R.string.url_wiki_minecraft_game_snapshot, vmVer.id), + stringResource(R.string.url_wiki_minecraft_game_snapshot, urlSuffix), summary ) } @@ -577,7 +579,7 @@ private fun getVersionComponents( Quadruple( painterResource(R.drawable.img_diamond_block), stringResource(R.string.download_game_type_april_fools), - stringResource(R.string.url_wiki_minecraft_game_snapshot, vmVer.id), + stringResource(R.string.url_wiki_minecraft_game_snapshot, urlSuffix), summary ) } diff --git a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/screens/content/versions/VersionOverViewScreen.kt b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/screens/content/versions/VersionOverViewScreen.kt index ba4b332ca..8ae5e7a9f 100644 --- a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/screens/content/versions/VersionOverViewScreen.kt +++ b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/screens/content/versions/VersionOverViewScreen.kt @@ -166,7 +166,11 @@ fun VersionOverViewScreen( VersionQuickActions( modifier = Modifier.offset { IntOffset(x = 0, y = yOffset.roundToPx()) }, accessFolder = { path -> - val folder = File(version.getGameDir(), path) + val folder = if (path.isEmpty()) { + version.getGameDir() + } else { + File(version.getGameDir(), path) + } runCatching { folder.ensureDirectory() }.onFailure { e -> @@ -178,7 +182,14 @@ fun VersionOverViewScreen( ) return@VersionQuickActions } - shareFile(context, folder) + shareFile(context, folder) { + submitError( + ErrorViewModel.ThrowableMessage( + title = context.getString(R.string.generic_error), + message = context.getString(R.string.versions_overview_cant_share_folder_message) + ) + ) + } } ) } diff --git a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/screens/main/control_editor/edit_widget/EditWidgetDialog.kt b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/screens/main/control_editor/edit_widget/EditWidgetDialog.kt index 5f02fec04..b58e75205 100644 --- a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/screens/main/control_editor/edit_widget/EditWidgetDialog.kt +++ b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/screens/main/control_editor/edit_widget/EditWidgetDialog.kt @@ -140,7 +140,7 @@ fun EditWidgetDialog( .clickable( indication = null, interactionSource = remember { MutableInteractionSource() }, - onClick = {} + onClick = onDismissRequest ) ) } diff --git a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/utils/file/FileUtils.kt b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/utils/file/FileUtils.kt index 5e26bd3ee..d6cfbee90 100644 --- a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/utils/file/FileUtils.kt +++ b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/utils/file/FileUtils.kt @@ -19,6 +19,7 @@ package com.movtery.zalithlauncher.utils.file import android.annotation.SuppressLint +import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent import androidx.core.content.FileProvider @@ -197,7 +198,11 @@ fun InputStream.readString(): String { } } -fun shareFile(context: Context, file: File) { +fun shareFile( + context: Context, + file: File, + cantProcess: () -> Unit = {} +) { val uri = FileProvider.getUriForFile(context, "${context.packageName}.provider", file) val shareIntent = Intent(Intent.ACTION_SEND).apply { @@ -207,7 +212,11 @@ fun shareFile(context: Context, file: File) { } val chooserIntent = Intent.createChooser(shareIntent, file.name) - context.startActivity(chooserIntent) + try { + context.startActivity(chooserIntent) + } catch (_: ActivityNotFoundException) { + cantProcess() + } } fun zipDirRecursive(baseDir: File, current: File, zipOut: ZipOutputStream) { diff --git a/ZalithLauncher/src/main/jniLibs/arm64-v8a/libEGL_angle.so b/ZalithLauncher/src/main/jniLibs/arm64-v8a/libEGL_angle.so index 36cf6ebce..f29660e62 100644 Binary files a/ZalithLauncher/src/main/jniLibs/arm64-v8a/libEGL_angle.so and b/ZalithLauncher/src/main/jniLibs/arm64-v8a/libEGL_angle.so differ diff --git a/ZalithLauncher/src/main/jniLibs/arm64-v8a/libGLESv2_angle.so b/ZalithLauncher/src/main/jniLibs/arm64-v8a/libGLESv2_angle.so index 5c3919365..d7453fe63 100644 Binary files a/ZalithLauncher/src/main/jniLibs/arm64-v8a/libGLESv2_angle.so and b/ZalithLauncher/src/main/jniLibs/arm64-v8a/libGLESv2_angle.so differ diff --git a/ZalithLauncher/src/main/jniLibs/armeabi-v7a/libEGL_angle.so b/ZalithLauncher/src/main/jniLibs/armeabi-v7a/libEGL_angle.so index 80eb56d66..9b1c4e86a 100644 Binary files a/ZalithLauncher/src/main/jniLibs/armeabi-v7a/libEGL_angle.so and b/ZalithLauncher/src/main/jniLibs/armeabi-v7a/libEGL_angle.so differ diff --git a/ZalithLauncher/src/main/jniLibs/armeabi-v7a/libGLESv2_angle.so b/ZalithLauncher/src/main/jniLibs/armeabi-v7a/libGLESv2_angle.so index ee2115d56..8c8edac3c 100644 Binary files a/ZalithLauncher/src/main/jniLibs/armeabi-v7a/libGLESv2_angle.so and b/ZalithLauncher/src/main/jniLibs/armeabi-v7a/libGLESv2_angle.so differ diff --git a/ZalithLauncher/src/main/jniLibs/x86/libEGL_angle.so b/ZalithLauncher/src/main/jniLibs/x86/libEGL_angle.so index 6b6ab8d4c..637871e38 100644 Binary files a/ZalithLauncher/src/main/jniLibs/x86/libEGL_angle.so and b/ZalithLauncher/src/main/jniLibs/x86/libEGL_angle.so differ diff --git a/ZalithLauncher/src/main/jniLibs/x86/libGLESv2_angle.so b/ZalithLauncher/src/main/jniLibs/x86/libGLESv2_angle.so index e9a1e13f0..6fa22cd56 100644 Binary files a/ZalithLauncher/src/main/jniLibs/x86/libGLESv2_angle.so and b/ZalithLauncher/src/main/jniLibs/x86/libGLESv2_angle.so differ diff --git a/ZalithLauncher/src/main/jniLibs/x86_64/libEGL_angle.so b/ZalithLauncher/src/main/jniLibs/x86_64/libEGL_angle.so index c2dc19b33..7fa424ec1 100644 Binary files a/ZalithLauncher/src/main/jniLibs/x86_64/libEGL_angle.so and b/ZalithLauncher/src/main/jniLibs/x86_64/libEGL_angle.so differ diff --git a/ZalithLauncher/src/main/jniLibs/x86_64/libGLESv2_angle.so b/ZalithLauncher/src/main/jniLibs/x86_64/libGLESv2_angle.so index fd3f0d5ad..c7978205b 100644 Binary files a/ZalithLauncher/src/main/jniLibs/x86_64/libGLESv2_angle.so and b/ZalithLauncher/src/main/jniLibs/x86_64/libGLESv2_angle.so differ diff --git a/ZalithLauncher/src/main/res/values-zh-rCN/strings.xml b/ZalithLauncher/src/main/res/values-zh-rCN/strings.xml index 3c7ac0dee..be1af777e 100644 --- a/ZalithLauncher/src/main/res/values-zh-rCN/strings.xml +++ b/ZalithLauncher/src/main/res/values-zh-rCN/strings.xml @@ -347,6 +347,7 @@ 导入失败 在安装整合包的过程中遇到了异常: + 我们不会更新它们!如果您发现漏洞,那您就倒霉了!XD 爱与拥抱更新,让世界充满和平与彩虹。 未来已来!我们为 Minecraft 加入了现代科技! 我们从地下室深处挖出了这款“1994 年 DOS 版”Minecraft! @@ -629,6 +630,7 @@ 屏幕截图文件夹 日志文件夹 崩溃报告文件夹 + 当前设备没有第三方应用可以打开该目录! 版本独立设置 游戏独立设置 额外支持设置 diff --git a/ZalithLauncher/src/main/res/values-zh-rTW/strings.xml b/ZalithLauncher/src/main/res/values-zh-rTW/strings.xml index 8bfa277ba..59463a9cf 100644 --- a/ZalithLauncher/src/main/res/values-zh-rTW/strings.xml +++ b/ZalithLauncher/src/main/res/values-zh-rTW/strings.xml @@ -310,6 +310,7 @@ 匯入失敗 安裝模組包時發生錯誤: + 我們不會更新它們!如果你發現漏洞,那就算你倒楣了!XD 愛與擁抱更新,讓世界充滿和平與彩虹。 未來已來!我們為 Minecraft 加入了現代科技! 我們從地下室深處挖出了這款「1994 年 DOS 版」Minecraft! @@ -581,6 +582,7 @@ 螢幕擷圖資料夾 日誌資料夾 崩潰報告資料夾 + 目前裝置上沒有可開啟此資料夾的第三方應用程式! 版本獨立設定 遊戲獨立設定 額外支援設定 diff --git a/ZalithLauncher/src/main/res/values/strings.xml b/ZalithLauncher/src/main/res/values/strings.xml index 1336cdb56..8c78df2b4 100644 --- a/ZalithLauncher/src/main/res/values/strings.xml +++ b/ZalithLauncher/src/main/res/values/strings.xml @@ -348,6 +348,7 @@ Import Failed An error occurred while installing the modpack: + We won\'t update them! If you find a bug, you\'re just out of luck! XD Love & Hugs Update, filling the world with peace and rainbows. The future is here! We\'ve added modern technology to Minecraft! We\'ve dug up this "1994 DOS version" of Minecraft from the basement! @@ -631,6 +632,7 @@ Screenshot Folder Log Folder Crash Report Folder + No third-party app is available on this device to open this folder! Version-Specific Settings Game-Specific Settings Additional Support Settings