pluginManagement { repositories { gradlePluginPortal() //mavenLocal() maven { url = 'https://maven.minecraftforge.net/' } } } buildscript { dependencies { classpath('com.google.code.gson:gson') { version { strictly '2.11.0' } } } } plugins { id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0' } dependencyResolutionManagement { versionCatalogs { libs { plugin('apt', 'com.diffplug.eclipse.apt').version('4.2.0') library('forgespi', 'net.minecraftforge:forgespi:7.1.5') // Needs modlauncher library('modlauncher', 'net.minecraftforge:modlauncher:10.2.4') // Needs securemodules library('securemodules', 'net.minecraftforge:securemodules:2.2.21') // Needs unsafe library('unsafe', 'net.minecraftforge:unsafe:0.9.2') library('accesstransformers', 'net.minecraftforge:accesstransformers:8.2.2') library('coremods', 'net.minecraftforge:coremods:5.2.6') library('nashorn', 'org.openjdk.nashorn:nashorn-core:15.4') // Needed by coremods, because the JRE no longer ships JS library('eventbus', 'net.minecraftforge:eventbus:7.0-beta.11') library('eventbus-validator', 'net.minecraftforge:eventbus-validator:7.0-beta.11') library('mergetool-api', 'net.minecraftforge:mergetool-api:1.0') library('mixin', 'org.spongepowered:mixin:0.8.7') library('jetbrains-annotations', 'org.jetbrains:annotations:24.1.0') // for ApiStatus annotations library('jspecify', 'org.jspecify:jspecify:1.0.0') // for nullability annotations library('slf4j-api', 'org.slf4j:slf4j-api:2.0.7') library('maven-artifact', 'org.apache.maven:maven-artifact:3.8.8') // Google's InMemory File System. Used by ForgeDev Tests for now, but could be useful for a lot of things. library('jimfs', 'com.google.jimfs:jimfs:1.3.0') bundle('jimfs', ['guava', 'failureaccess']) version('bootstrap', '2.1.8') library('bootstrap', 'net.minecraftforge', 'bootstrap' ).versionRef('bootstrap') // Needs modlauncher library('bootstrap-api', 'net.minecraftforge', 'bootstrap-api' ).versionRef('bootstrap') library('bootstrap-dev', 'net.minecraftforge', 'bootstrap-dev' ).versionRef('bootstrap') library('bootstrap-shim', 'net.minecraftforge', 'bootstrap-shim').versionRef('bootstrap') // ASM it's used for so many of our hacks version('asm', '9.8') library('asm', 'org.ow2.asm', 'asm' ).versionRef('asm') library('asm-tree', 'org.ow2.asm', 'asm-tree' ).versionRef('asm') library('asm-util', 'org.ow2.asm', 'asm-util' ).versionRef('asm') library('asm-commons', 'org.ow2.asm', 'asm-commons' ).versionRef('asm') library('asm-analysis', 'org.ow2.asm', 'asm-analysis').versionRef('asm') bundle('asm', ['asm', 'asm-tree', 'asm-util', 'asm-commons', 'asm-analysis']) // Terminal Console Appender.. essentually make pretty colors in the console, but it's been a PITA library('terminalconsoleappender', 'net.minecrell:terminalconsoleappender:1.2.0') version('jline', '3.25.1') library('jline-reader', 'org.jline', 'jline-reader' ).versionRef('jline') library('jline-terminal', 'org.jline', 'jline-terminal' ).versionRef('jline') library('jline-terminal-jna', 'org.jline', 'jline-terminal-jna').versionRef('jline') // Colors and tab completeion bundle('terminalconsoleappender', ['terminalconsoleappender', 'jline-reader', 'jline-terminal', 'jline-terminal-jna']) // The core of our configuration system, it has many flaws, but it works for the most part version('night-config', '3.7.4') library('night-config-toml', 'com.electronwill.night-config', 'toml').versionRef('night-config') library('night-config-core', 'com.electronwill.night-config', 'core').versionRef('night-config') bundle('night-config', ['night-config-toml', 'night-config-core']) // Jar in Jar FileSystem version('jarjar', '0.3.26') library('jarjar-fs', 'net.minecraftforge', 'JarJarFileSystems').versionRef('jarjar') library('jarjar-meta', 'net.minecraftforge', 'JarJarMetadata' ).versionRef('jarjar') library('jarjar-selector', 'net.minecraftforge', 'JarJarSelector' ).versionRef('jarjar') bundle('jarjar', ['jarjar-fs', 'jarjar-selector', 'jarjar-meta']) // These are libraries shipped by the MC launcher, try and keep them in sync with the manifest // but honestly if we don't it just means we ship them as normal libraries by adding them to the installer config in the forge project library('gson', 'com.google.code.gson:gson:2.11.0') library('guava', 'com.google.guava:guava:33.3.1-jre') library('failureaccess', 'com.google.guava:failureaccess:1.0.2') version('log4j', '2.24.3') library('log4j-api', 'org.apache.logging.log4j', 'log4j-api' ).versionRef('log4j') library('log4j-core', 'org.apache.logging.log4j', 'log4j-core').versionRef('log4j') bundle('log4j', ['log4j-api', 'log4j-core']) library('apache-commons', 'org.apache.commons:commons-lang3:3.17.0') library('mojang-logging', 'com.mojang:logging:1.5.10') library('jopt-simple', 'net.sf.jopt-simple:jopt-simple:5.0.4') library('commons-io', 'commons-io:commons-io:2.17.0') version('lwjgl', '3.3.3') library('lwjgl', 'org.lwjgl', 'lwjgl' ).versionRef('lwjgl') library('lwjgl-glfw', 'org.lwjgl', 'lwjgl-glfw' ).versionRef('lwjgl') library('lwjgl-opengl', 'org.lwjgl', 'lwjgl-opengl').versionRef('lwjgl') library('lwjgl-stb', 'org.lwjgl', 'lwjgl-stb' ).versionRef('lwjgl') library('lwjgl-tinyfd', 'org.lwjgl', 'lwjgl-tinyfd').versionRef('lwjgl') bundle('lwjgl', ['lwjgl', 'lwjgl-glfw', 'lwjgl-opengl', 'lwjgl-stb', 'lwjgl-tinyfd']) } } } rootProject.name = 'ForgeRoot' include 'fmlloader' include 'fmlcore' include 'mclanguage' include 'javafmllanguage' include 'lowcodelanguage' include 'fmlearlydisplay' include ':mcp' project(":mcp").projectDir = file("projects/mcp") include ':forge' project(":forge").projectDir = file("projects/forge") project(':forge').buildFileName = '../../build_forge.gradle' if (false && !System.env.TEAMCITY_VERSION) { include ':clean' project(':clean').projectDir = file('projects/clean') project(':clean').buildFileName = '../../build_clean.gradle' }