diff --git a/public/feather_diff.js b/public/feather_diff.js index 51af7e1..8c8d74c 100644 --- a/public/feather_diff.js +++ b/public/feather_diff.js @@ -10,14 +10,20 @@ import { import * as tiny from "./tiny_mappings.js"; (async () => { - const minecraftStableVersions = await getMinecraftStableVersions("gen1"); - const minecraftAllVersions = await getMinecraftVersions("gen1"); + let minecraftStableVersions = await getMinecraftStableVersions("gen1"); + let minecraftAllVersions = await getMinecraftVersions("gen1"); let possibleVersions; + const genSelectorRadios = { + gen1: document.getElementById("generation-gen1"), + gen2: document.getElementById("generation-gen2") + } + const versionSelectorInput = document.getElementById("mc-version"); const versionListElement = document.getElementById("version-list"); const allowSnapshotsCheck = document.getElementById("allow-snapshots"); + const featherGenSelector = document.getElementById("calamus-gen-selectors"); const buildSourceElement = document.getElementById("build-source"); const buildTargetElement = document.getElementById("build-target"); @@ -29,7 +35,8 @@ import * as tiny from "./tiny_mappings.js"; if ( possibleVersions.some((version) => versionSelectorInput.value === version) ) { - await getFeatherVersionMeta("gen1", versionSelectorInput.value).then( + const gen = Object.entries(genSelectorRadios).find(([_, button]) => button.checked)[0]; + await getFeatherVersionMeta(gen, versionSelectorInput.value).then( (featherVersionMeta) => { buildSourceElement.innerHTML = ""; buildTargetElement.innerHTML = ""; @@ -47,11 +54,16 @@ import * as tiny from "./tiny_mappings.js"; // Hide the diff viewer bc the source and target builds are the same diffViewerElement.style.display = "none"; + } else { + buildSourceElement.innerHTML = ""; + buildTargetElement.innerHTML = ""; + diffViewerElement.style.display = "none"; } } async function getTinyMappings(version) { - let arrayBuf = await getFeatherBuildMaven(version) + const gen = Object.entries(genSelectorRadios).find(([_, button]) => button.checked)[0]; + let arrayBuf = await getFeatherBuildMaven(gen, version) .then((response) => response.blob()) // Get response as a Blob .then(async (blob) => { const arrayBuffer = await blob.arrayBuffer(); // Convert Blob to ArrayBuffer @@ -142,14 +154,17 @@ import * as tiny from "./tiny_mappings.js"; ); allowSnapshotsCheck.addEventListener("change", (_) => { - if (allowSnapshotsCheck.checked) { - possibleVersions = minecraftAllVersions; - } else { - possibleVersions = minecraftStableVersions; - } updateVersionList(); }); + featherGenSelector.addEventListener("change", async (e) => { + const gen = Object.entries(genSelectorRadios).find(([_, button]) => button === e.target)[0]; + minecraftStableVersions = await getMinecraftStableVersions(gen); + minecraftAllVersions = await getMinecraftVersions(gen); + + updateVersionList(); + }) + buildSourceElement.addEventListener( "change", async (_) => await updateFeatherDiff(), @@ -165,17 +180,21 @@ import * as tiny from "./tiny_mappings.js"; }); function updateVersionList() { - const list = possibleVersions; + if (allowSnapshotsCheck.checked) { + possibleVersions = minecraftAllVersions; + } else { + possibleVersions = minecraftStableVersions; + } + while (versionListElement.firstChild) versionListElement.removeChild(versionListElement.lastChild); - list.forEach((e) => { + possibleVersions.forEach((e) => { const opt = new Option(); opt.value = e; versionListElement.appendChild(opt); }); } - possibleVersions = minecraftStableVersions; updateVersionList(); await updateFeatherBuilds(); })(); \ No newline at end of file diff --git a/public/meta_maven_utils.js b/public/meta_maven_utils.js index a3e05cd..5daca3a 100644 --- a/public/meta_maven_utils.js +++ b/public/meta_maven_utils.js @@ -143,7 +143,21 @@ function makeOrnitheMavenUrl(...pathComponents) { return makeMavenUrl("net/ornithemc", ...pathComponents); } -export async function getFeatherBuildMaven(version) { - const url = makeOrnitheMavenUrl("feather", version, "feather-" + version + "-tiny.gz"); +export async function getFeatherBuildMaven(ornitheGen, version) { + let feather; + switch (ornitheGen) { + case "gen1": { + feather = "feather"; + break; + } + case "gen2": { + feather = "feather-gen2"; + break; + } + default: { + throw new Error("Invalid generation: " + ornitheGen); + } + } + const url = makeOrnitheMavenUrl(feather, version, "feather-" + version + "-tiny.gz"); return await fetch(url); } diff --git a/src/pages/featherDiff.astro b/src/pages/featherDiff.astro index 6081fbf..22950a6 100644 --- a/src/pages/featherDiff.astro +++ b/src/pages/featherDiff.astro @@ -16,6 +16,15 @@ import Layout from "../layouts/Layout.astro"; +
+