1+ buildscript {
2+ dependencies {
3+ classpath ' net.fabricmc:fabric-loader:0.18.6'
4+ }
5+ }
6+
17plugins {
28 id ' java-library'
39 id ' eclipse'
@@ -7,6 +13,9 @@ plugins {
713 id ' ploceus' version ' 1.15-SNAPSHOT' apply false
814}
915
16+ import net.fabricmc.loader.api.SemanticVersion
17+ import net.fabricmc.loader.impl.game.minecraft.McVersionLookup
18+
1019setUpJar(project)
1120
1221def setUpJar (project ) {
@@ -157,7 +166,7 @@ def fillModJson(project, task) {
157166 project. tasks. build. dependsOn task
158167}
159168
160- def setUpLibrary (project , String ... dependencies ) {
169+ def setUpLibrary (project ) {
161170 project. apply plugin : ' java-library'
162171 project. apply plugin : ' eclipse'
163172 project. apply plugin : ' idea'
@@ -182,7 +191,10 @@ def setUpLibrary(project, String... dependencies) {
182191 mavenCentral()
183192 }
184193
185- def libraries = getLibraryDependencies(project, dependencies)
194+ def libraries = []
195+ def modules = []
196+
197+ findLibraryDependencies(project, libraries, modules)
186198
187199 project. dependencies {
188200 implementation " net.fabricmc:fabric-loader:${ project.rootProject.loader_version} "
@@ -195,13 +207,16 @@ def setUpLibrary(project, String... dependencies) {
195207 libraries. each { libraryPath ->
196208 implementation project. dependencies. project(path : libraryPath)
197209 }
210+ modules. each { modulePath ->
211+ implementation project. dependencies. project(path : modulePath, configuration : ' namedElements' )
212+ }
198213 }
199214
200215 addPomDependency(project)
201216 setUpJavadoc(project)
202217}
203218
204- def setUpModule (project , String ... dependencies ) {
219+ def setUpModule (project ) {
205220 // normally modules have a 'root' and subprojects
206221 // for different mc version ranges
207222 // the Core API is the only exception to this
@@ -243,10 +258,10 @@ def setUpModule(project, String... dependencies) {
243258 setIntermediaryGeneration(2 )
244259 }
245260
246- def modules = getModuleDependencies(project, dependencies)
261+ def libraries = []
262+ def modules = []
247263
248- project. repositories {
249- }
264+ findModuleDependencies(project, libraries, modules)
250265
251266 project. dependencies {
252267 minecraft " com.mojang:minecraft:${ project.minecraft_version} "
@@ -290,6 +305,9 @@ def setUpModule(project, String... dependencies) {
290305 implementation project. dependencies. project(path : library. path)
291306 }
292307
308+ libraries. each { libraryPath ->
309+ implementation project. dependencies. project(path : libraryPath)
310+ }
293311 modules. each { modulePath ->
294312 implementation project. dependencies. project(path : modulePath, configuration : ' namedElements' )
295313 }
@@ -430,31 +448,81 @@ def setUpModule(project, String... dependencies) {
430448 setUpJavadoc(project)
431449}
432450
433- def getLibraryDependencies (project , String ... libraryNames ) {
434- def libraries = new ArrayList<> ()
451+ def findLibraryDependencies (project , libraries , modules ) {
452+ if (project. hasProperty(' osl_dependencies' )) {
453+ def deps = project. osl_dependencies. split(' ,' )
435454
436- for (libraryName : libraryNames) {
437- libraries. add(" :libraries:${ libraryName} " )
438- }
455+ for (dep : deps) {
456+ def libraryName = dep. substring(0 , dep. indexOf(' :' ))
439457
440- return libraries
458+ if (libraryName != ' core' ) {
459+ libraries. add(" :libraries:${ libraryName} " )
460+ }
461+ }
462+
463+ modules. add(' :libraries:core' )
464+ }
441465}
442466
443- def getModuleDependencies (project , String ... moduleNames ) {
444- def modules = new ArrayList<> ()
467+ def findModuleDependencies (project , libraries , modules ) {
468+ if (project. hasProperty(' osl_dependencies' )) {
469+ def deps = project. osl_dependencies. split(' ,' )
470+
471+ for (dep : deps) {
472+ def libraryName = dep. substring(0 , dep. indexOf(' :' ))
473+
474+ if (libraryName != ' core' ) {
475+ def moduleName = findModuleDependency(project, libraryName)
476+
477+ libraries. add(" :libraries:${ libraryName} " )
478+ if (moduleName != null ) {
479+ modules. add(" :libraries:${ libraryName} :${ moduleName} " )
480+ }
481+ }
482+ }
445483
446- if (project. path != ' :libraries:core' ) {
447484 modules. add(' :libraries:core' )
448485 }
486+ }
487+
488+ def findModuleDependency (project , libraryName ) {
489+ def library = project. project(" :libraries:${ libraryName} " )
490+ def modules = library. getSubprojects()
449491
450- for (moduleName : moduleNames) {
451- def i = moduleName. indexOf(' -mc' )
452- def libraryName = moduleName. substring(0 , i)
492+ def projectMcVersion = getMinecraftVersion(project. minecraft_version)
493+
494+ for (module : modules) {
495+ if (! environmentsMatch(project, module)) {
496+ continue ;
497+ }
453498
454- modules. add(" :libraries:${ libraryName} :${ moduleName} " )
499+ def pathParts = module. path. split(' :' )
500+ def moduleName = pathParts[3 ]
501+
502+ def mcVersionParts = moduleName. split(' -mc' )
503+ def minMcVersion = getMinecraftVersion(mcVersionParts[1 ])
504+ def maxMcVersion = getMinecraftVersion(mcVersionParts[2 ])
505+
506+ if (projectMcVersion >= minMcVersion && projectMcVersion <= maxMcVersion) {
507+ return moduleName;
508+ }
455509 }
456510
457- return modules
511+ return null
512+ }
513+
514+ def getMinecraftVersion (name ) {
515+ def release = McVersionLookup . getRelease(name)
516+ def normalized = McVersionLookup . normalizeVersion(name, release)
517+
518+ return SemanticVersion . parse(normalized)
519+ }
520+
521+ def environmentsMatch (project , module ) {
522+ def env = project. hasProperty(' environment' ) ? project. environment : ' *'
523+ def menv = module. hasProperty(' environment' ) ? module. environment : ' *'
524+
525+ return env == ' *' || menv == ' *' || env == menv
458526}
459527
460528def shouldPublish (project , mavenUrl ) {
0 commit comments