Add Minecraft 26.x support and version Java artifacts

This commit is contained in:
2026-10-07 13:18:31 +05:00
parent 48b34db6f1
commit dac8650ac1
50 changed files with 813 additions and 162 deletions

View File

@@ -37,7 +37,11 @@ const jar = zipSync(
);
const checksum = createHash("sha1").update(jar).digest("hex");
async function isolatedCache(t: TestContext, corruptDownload = false) {
async function isolatedCache(
t: TestContext,
corruptDownload = false,
minecraftVersion = "1.21.11",
) {
const previous = process.cwd();
const cacheParent = resolve(".cache");
await mkdir(cacheParent, { recursive: true });
@@ -54,7 +58,9 @@ async function isolatedCache(t: TestContext, corruptDownload = false) {
requests.push(url);
if (url.includes("version_manifest_v2"))
return Response.json({
versions: [{ id: "1.21.11", url: "https://fixture.invalid/version" }],
versions: [
{ id: minecraftVersion, url: "https://fixture.invalid/version" },
],
});
if (url.endsWith("/version"))
return Response.json({
@@ -91,6 +97,27 @@ test("missing vanilla cache is prepared completely and subsequent runs work offl
assert.deepEqual(requests, []);
});
test("26.x assets use distinct verified caches and reject unsupported versions", async (t) => {
await isolatedCache(t, false, "26.2");
const directory = await prepareAssets("26.2");
assert.equal(directory, ".cache/minecraft/26.2");
const marker = JSON.parse(
await readFile(`${directory}/.minegeo-assets.json`, "utf8"),
);
assert.equal(marker.minecraftVersion, "26.2");
await assert.rejects(readFile(`${assetsRoot}/.minegeo-assets.json`), {
code: "ENOENT",
});
await assert.rejects(
prepareAssets("../secrets"),
/Unsupported Minecraft asset version/,
);
await assert.rejects(
prepareAssets("26.3"),
/Unsupported Minecraft asset version/,
);
});
test("an interrupted extraction with only a blockstate cannot masquerade as complete", async (t) => {
await isolatedCache(t);
await mkdir(`${assetsRoot}/assets/minecraft/blockstates`, {