Skip to content

Commit 53ed7b5

Browse files
authored
Merge pull request #11 from moehreag/feat/semver-overview
[develop page] add minecraft semver version, separate depencency blocks
2 parents 7061503 + 8824df1 commit 53ed7b5

3 files changed

Lines changed: 474 additions & 45 deletions

File tree

public/develop.js

Lines changed: 89 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ import {
99
getLatestNestsBuild
1010
} from "./meta_maven_utils.js";
1111

12+
import { getMinecraftSemverVersion } from "./minecraft_semver.js";
13+
1214
(async () => {
1315
const genSelectorRadios = {
14-
gen1: document.getElementById("generation-gen1"),
15-
gen2: document.getElementById("generation-gen2")
16+
gen1: document.getElementById("generation-gen1"),
17+
gen2: document.getElementById("generation-gen2")
1618
}
1719

1820
const gen = Object.entries(genSelectorRadios).find(([_, button]) => button.checked)[0];
@@ -44,25 +46,93 @@ import {
4446

4547
async function updateOrnitheDependencies() {
4648
if (possibleVersions.some(version => versionSelectorInput.value === version)) {
47-
document.getElementById("ornithe-dependencies").innerText = await constructOrnitheDependenciesMessage();
49+
const minecraftVersion = versionSelectorInput.value;
50+
setExtraMsg("");
51+
52+
setDependencyBlockLines("ornithe-dependencies", await constructOrnitheDependenciesMessage(minecraftVersion));
53+
54+
const gen = Object.entries(genSelectorRadios).find(([_, button]) => button.checked)[0];
55+
56+
const mergedFeatherBuild = await getLatestFeatherBuild(gen, minecraftVersion);
57+
58+
if (mergedFeatherBuild != null) {
59+
hideDependencyBlock("ornithe-dependencies-client");
60+
hideDependencyBlock("ornithe-dependencies-server");
61+
}
62+
63+
64+
if (mergedFeatherBuild != null) {
65+
// for gen1, Feather builds for Minecraft 1.3+ are for all sides
66+
// for gen2, Feather builds for all Minecraft versions are for all sides
67+
appendDependencyBlockLines("ornithe-dependencies", await getOrnitheDependenciesForMerged(gen, minecraftVersion, mergedFeatherBuild));
68+
69+
// Raven, Sparrow, Nests builds for Minecraft versions between b1.0 and 1.3
70+
// are for one side only, regardless of the intermediary gen
71+
appendDependencyBlockLines("ornithe-dependencies", await getOrnitheDependenciesForSplit(gen, minecraftVersion, "client", null));
72+
appendDependencyBlockLines("ornithe-dependencies", await getOrnitheDependenciesForSplit(gen, minecraftVersion, "server", null));
73+
} else {
74+
// this block is only reached for gen1 for Minecraft versions older than 1.3
75+
// where Feather builds are for one side only
76+
const clientFeatherBuild = await getLatestFeatherBuild(gen, `${minecraftVersion}-client`);
77+
const serverFeatherBuild = await getLatestFeatherBuild(gen, `${minecraftVersion}-server`);
78+
setDependencyBlockLines("ornithe-dependencies-client", await getOrnitheDependenciesForSplit(gen, minecraftVersion, "client", clientFeatherBuild));
79+
setDependencyBlockLines("ornithe-dependencies-server", await getOrnitheDependenciesForSplit(gen, minecraftVersion, "server", serverFeatherBuild));
80+
81+
// Raven, Sparrow, Nests builds for Minecraft versions older than b1.0
82+
// or newer than 1.3 are for all sides, regardless of the intermediary gen
83+
appendDependencyBlockLines("ornithe-dependencies", await getOrnitheDependenciesForMerged(gen, minecraftVersion, null));
84+
}
85+
86+
if (gen === "gen2") {
87+
addExtraMsg("Make sure to use the \"gen2\" mod template!");
88+
} else if (mergedFeatherBuild != null) {
89+
addExtraMsg("Make sure to use the \"merged\" mod template for this Minecraft version!");
90+
} else {
91+
addExtraMsg("Make sure to use the \"split\" mod template for this Minecraft version!");
92+
}
93+
setDependencyBlockLines("ornithe-dependencies-fmj", await getFmjDependenciesNote(minecraftVersion));
4894
} else {
4995
document.getElementById("ornithe-dependencies").innerText = "Please select a valid Minecraft version!";
96+
hideDependencyBlock("ornithe-dependencies-client");
97+
hideDependencyBlock("ornithe-dependencies-server");
98+
hideDependencyBlock("ornithe-dependencies-fmj");
5099
setExtraMsg("");
51100
}
52101
}
53102

54-
async function constructOrnitheDependenciesMessage() {
55-
setExtraMsg("");
103+
function appendDependencyBlockLines(blockId, lines) {
104+
let elem = document.getElementById(blockId);
105+
elem.innerText = (elem.innerText.split("\n").concat(lines)).join("\n");
106+
}
107+
108+
function setDependencyBlockLines(blockId, lines) {
109+
let elem = document.getElementById(blockId);
110+
elem.style = "";
111+
elem.innerText = lines.join("\n");
112+
}
56113

114+
function hideDependencyBlock(blockId) {
115+
let elem = document.getElementById(blockId);
116+
elem.style = "display: none;"
117+
elem.innerText = "";
118+
}
119+
120+
async function getFmjDependenciesNote(minecraftVersion) {
121+
let version = await getMinecraftSemverVersion(minecraftVersion);
122+
123+
let text = ["### fabric.mod.json "];
124+
text.push(`"minecraft": "${version}"`);
125+
return text;
126+
}
127+
128+
async function constructOrnitheDependenciesMessage(minecraftVersion) {
57129
let lines = [
58130
"### <project root>/gradle.properties",
59131
"# Dependencies"
60132
];
61133

62134
const loader = Object.entries(loaderSelectorRadios).find(([_, button]) => button.checked)[0];
63-
const gen = Object.entries(genSelectorRadios).find(([_, button]) => button.checked)[0];
64135

65-
const minecraftVersion = versionSelectorInput.value;
66136
const loaderVersion = await getLatestLoader(loader);
67137
const oslVersion = await getLatestOsl();
68138

@@ -72,42 +142,12 @@ import {
72142
`osl_version = ${oslVersion}`
73143
);
74144

75-
const featherBuild = await getLatestFeatherBuild(gen, minecraftVersion);
76-
77-
if (featherBuild !== null) {
78-
// for gen1, Feather builds for Minecraft 1.3+ are for all sides
79-
// for gen2, Feather builds for all Minecraft versions are for all sides
80-
await addOrnitheDependenciesForBothSides(lines, gen, minecraftVersion, featherBuild);
81-
// Raven, Sparrow, Nests builds for Minecraft versions between b1.0 and 1.3
82-
// are for one side only, regardless of the intermediary gen
83-
await addOrnitheDependenciesForOneSide(lines, gen, minecraftVersion, "client", null);
84-
await addOrnitheDependenciesForOneSide(lines, gen, minecraftVersion, "server", null);
85-
} else {
86-
// this block is only reached for gen1 for Minecraft versions older than 1.3
87-
// where Feather builds are for one side only
88-
const clientFeatherBuild = await getLatestFeatherBuild(gen,`${minecraftVersion}-client`);
89-
const serverFeatherBuild = await getLatestFeatherBuild(gen,`${minecraftVersion}-server`);
90-
91-
await addOrnitheDependenciesForOneSide(lines, gen, minecraftVersion, "client", clientFeatherBuild);
92-
await addOrnitheDependenciesForOneSide(lines, gen, minecraftVersion, "server", serverFeatherBuild);
93-
94-
// Raven, Sparrow, Nests builds for Minecraft versions older than b1.0
95-
// or newer than 1.3 are for all sides, regardless of the intermediary gen
96-
await addOrnitheDependenciesForBothSides(lines, gen, minecraftVersion, null);
97-
}
98-
99-
if (gen === "gen2") {
100-
addExtraMsg("Make sure to use the \"gen2\" mod template!");
101-
} else if (featherBuild !== null) {
102-
addExtraMsg("Make sure to use the \"merged\" mod template for this Minecraft version!");
103-
} else {
104-
addExtraMsg("Make sure to use the \"split\" mod template for this Minecraft version!");
105-
}
106-
107-
return lines.join("\n");
145+
return lines;
108146
}
109147

110-
async function addOrnitheDependenciesForBothSides(lines, gen, minecraftVersion, featherBuild) {
148+
async function getOrnitheDependenciesForMerged(gen, minecraftVersion, featherBuild) {
149+
const lines = [];
150+
111151
const ravenBuild = await getLatestRavenBuild(minecraftVersion);
112152
const sparrowBuild = await getLatestSparrowBuild(minecraftVersion);
113153
const nestsBuild = await getLatestNestsBuild(minecraftVersion);
@@ -124,25 +164,28 @@ import {
124164
if (nestsBuild !== null) {
125165
lines.push(`nests_build = ${nestsBuild}`);
126166
}
167+
return lines
127168
}
128169

129-
async function addOrnitheDependenciesForOneSide(lines, gen, minecraftVersion, environment, featherBuild) {
170+
async function getOrnitheDependenciesForSplit(gen, minecraftVersion, environment, featherBuild) {
130171
const ravenBuild = await getLatestRavenBuild(`${minecraftVersion}-${environment}`);
131172
const sparrowBuild = await getLatestSparrowBuild(`${minecraftVersion}-${environment}`);
132173
const nestsBuild = await getLatestNestsBuild(`${minecraftVersion}-${environment}`);
133174

134175
if (featherBuild !== null || ravenBuild !== null || sparrowBuild !== null || nestsBuild !== null) {
135-
lines.push("");
176+
let lines = [];
136177
if (gen === "gen1") {
137178
lines.push(`### <project root>/${environment}/gradle.properties`)
138179
lines.push(`environment = ${environment}`)
180+
} else {
181+
lines.push("")
139182
}
140183

141184
// the gen1 mod template uses a subproject structure
142185
// similar properties can have the same name in different subprojects
143186
const prefix = gen === "gen1" ? "" : `${environment}_`;
144187

145-
if (featherBuild !== null) {
188+
if (featherBuild != null) {
146189
lines.push(`feather_build = ${featherBuild}`);
147190
}
148191
if (ravenBuild !== null) {
@@ -154,7 +197,9 @@ import {
154197
if (nestsBuild !== null) {
155198
lines.push(`${prefix}nests_build = ${nestsBuild}`);
156199
}
200+
return lines;
157201
}
202+
return [];
158203
}
159204

160205
Object.entries(loaderSelectorRadios).forEach(([_, button]) => button.addEventListener("change", async _ => await updateOrnitheDependencies()));

0 commit comments

Comments
 (0)