@@ -67,6 +67,7 @@ public class VersionDatabase {
6767 public static final PomDependencyParser OSL_DEPENDENCY_PARSER = new PomDependencyParser (ORNITHE_MAVEN_URL + "net/ornithemc/osl" );
6868
6969 private static final Pattern INVALID_FABRIC_LOADER_VERSIONS_GEN2 = Pattern .compile ("^(?:0\\ .(?:\\ d|1[0-6])\\ .|0\\ .17\\ .[0-2])" );
70+ private static final Pattern INVALID_QUILT_LOADER_VERSIONS_GEN2 = Pattern .compile ("^(?:0\\ .(?:\\ d|1\\ d|2[0-8])\\ .|0\\ .29\\ .[0-2])" );
7071
7172 public final VersionManifest manifest = new VersionManifest ();
7273 private final Int2ObjectMap <List <BaseVersion >> game ;
@@ -119,6 +120,25 @@ public static StableVersionIdentifier filterFabricLoaderVersions(int generation)
119120 };
120121 }
121122
123+ public static StableVersionIdentifier filterQuiltLoaderVersions (int generation ) {
124+ return versions -> {
125+ boolean foundStableVersion = false ;
126+
127+ for (Iterator <? extends BaseVersion > it = versions .iterator (); it .hasNext (); ) {
128+ BaseVersion version = it .next ();
129+
130+ if (generation >= 2 && INVALID_QUILT_LOADER_VERSIONS_GEN2 .matcher (version .getVersion ()).matches ()) {
131+ it .remove ();
132+ } else
133+ // Quilt publishes beta versions of their loader, filter those out
134+ if (!foundStableVersion && isPublicLoaderVersion (version ) && !version .getVersion ().contains ("-" )) {
135+ foundStableVersion = true ;
136+ version .setStable (true );
137+ }
138+ }
139+ };
140+ }
141+
122142 public static final Map <String , PomParser > getOslModulePomParsers (List <MavenVersion > osl ) {
123143 Set <String > versions = new HashSet <>();
124144 Map <String , PomParser > parsers = new HashMap <>();
@@ -169,15 +189,7 @@ public static VersionDatabase generate() throws IOException, XMLStreamException
169189 database .feather .put (generation , featherParser (generation ).getMeta (MavenBuildGameVersion ::new , generation == 1 ? "net.ornithemc:feather:" : String .format ("net.ornithemc:feather-gen%d:" , generation )));
170190 database .loader .put (generation , new EnumMap <>(LoaderType .class ));
171191 database .loader .get (generation ).put (LoaderType .FABRIC , FABRIC_LOADER_PARSER .getMeta (MavenBuildVersion ::new , "net.fabricmc:fabric-loader:" , filterFabricLoaderVersions (generation )));
172- database .loader .get (generation ).put (LoaderType .QUILT , QUILT_LOADER_PARSER .getMeta (MavenBuildVersion ::new , "org.quiltmc:quilt-loader:" , list -> {
173- for (BaseVersion version : list ) {
174- // Quilt publishes beta versions of their loader, filter those out
175- if (isPublicLoaderVersion (version ) && !version .getVersion ().contains ("-" )) {
176- version .setStable (true );
177- break ;
178- }
179- }
180- }));
192+ database .loader .get (generation ).put (LoaderType .QUILT , QUILT_LOADER_PARSER .getMeta (MavenBuildVersion ::new , "org.quiltmc:quilt-loader:" , filterQuiltLoaderVersions (generation )));
181193 }
182194 database .raven = RAVEN_PARSER .getMeta (MavenBuildGameVersion ::new , "net.ornithemc:raven:" );
183195 database .sparrow = SPARROW_PARSER .getMeta (MavenBuildGameVersion ::new , "net.ornithemc:sparrow:" );
0 commit comments