@@ -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