mirror of
https://github.com/ViaVersion/ViaForge.git
synced 2024-11-30 13:23:23 +01:00
225 lines
7.8 KiB
Groovy
225 lines
7.8 KiB
Groovy
buildscript {
|
|
repositories {
|
|
gradlePluginPortal()
|
|
|
|
maven { url = "https://repo.spongepowered.org/repository/maven-public/" }
|
|
maven { url = "https://jitpack.io/" }
|
|
maven { url = "https://files.minecraftforge.net/maven" }
|
|
}
|
|
|
|
dependencies {
|
|
classpath "com.github.johnrengelman:shadow:7.1.2"
|
|
classpath "net.minecraftforge.gradle:ForgeGradle:6.+"
|
|
classpath "org.spongepowered:mixingradle:0.7-SNAPSHOT"
|
|
classpath "me.modmuss50:mod-publish-plugin:0.5.1"
|
|
classpath "xyz.wagyourtail.jvmdowngrader:gradle-plugin:0.6.1"
|
|
}
|
|
}
|
|
|
|
allprojects {
|
|
apply plugin: "java-library"
|
|
apply plugin: "com.github.johnrengelman.shadow"
|
|
apply plugin: "me.modmuss50.mod-publish-plugin"
|
|
apply plugin: "xyz.wagyourtail.jvmdowngrader"
|
|
|
|
java {
|
|
// Minecraft 1.17+ required Java 16/17 to compile
|
|
toolchain.languageVersion = JavaLanguageVersion.of(17)
|
|
}
|
|
|
|
// We define the configuration here so we can use it across all conventions and platforms
|
|
// To define which projects/source files should be included in the jar
|
|
configurations {
|
|
library
|
|
implementation.extendsFrom(library)
|
|
}
|
|
|
|
// Repositories for the ViaVersion dependencies defined below
|
|
repositories {
|
|
maven {
|
|
url = "https://repo.spongepowered.org/repository/maven-public"
|
|
}
|
|
maven {
|
|
url = "https://repo.viaversion.com"
|
|
metadataSources {
|
|
mavenPom()
|
|
artifact()
|
|
}
|
|
}
|
|
}
|
|
|
|
// Replace the version in the mcmod.info and mods.toml files with the project version
|
|
// Since this depends on the platform version, we can't define it in the global scope :(
|
|
tasks {
|
|
processResources {
|
|
for (final def file in ["mcmod.info", "META-INF/mods.toml"]) {
|
|
filesMatching(file) {
|
|
expand "version": project.version
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Including all required libraries for ViaVersion {for version numbers see gradle.properties}
|
|
dependencies {
|
|
compileOnly "io.netty:netty-all:4.0.20.Final"
|
|
|
|
library "com.viaversion:viaversion-common:${project.viaversion_version}"
|
|
library "com.viaversion:viabackwards-common:${project.viabackwards_version}"
|
|
library "com.viaversion:viarewind-common:${project.viarewind_version}"
|
|
library ("net.raphimc:ViaLegacy:${project.vialegacy_version}") {
|
|
exclude group: "com.google.code.gson", module: "gson"
|
|
}
|
|
library "net.raphimc:ViaAprilFools:${project.viaaprilfools_version}"
|
|
library ("net.raphimc:ViaLoader:${project.vialoader_version}") {
|
|
exclude group: "com.google.guava"
|
|
exclude group: "org.slf4j"
|
|
}
|
|
|
|
library "org.yaml:snakeyaml:${project.snake_yml_version}"
|
|
}
|
|
}
|
|
|
|
subprojects {
|
|
apply plugin: "net.minecraftforge.gradle"
|
|
apply plugin: "org.spongepowered.mixin"
|
|
|
|
// Define the jar output attributes for all platforms
|
|
archivesBaseName = project.maven_name
|
|
version = maven_version
|
|
group = maven_group
|
|
|
|
// Used to execute code only for specific submodules
|
|
def versionId = Integer.parseInt(project.mc_version.replace(".", ""))
|
|
|
|
compileJava.options.encoding = "UTF-8"
|
|
|
|
minecraft {
|
|
runs {
|
|
client {
|
|
workingDirectory project.file("run")
|
|
|
|
property "forge.logging.markers", "REGISTRIES"
|
|
property "forge.logging.console.level", "debug"
|
|
|
|
// mixin
|
|
property "mixin.debug.export", "true"
|
|
property "mixin.hotSwap", "true"
|
|
property "fml.coreMods.load", "de.florianmichael.viaforge.mixin.MixinLoader" // Only required for MC 1.12, but modern Forges skips this anyway
|
|
args "-mixin.config=" + "mixins." + project.getProperty('maven_name') + ".json"
|
|
|
|
// source set
|
|
mods {
|
|
"${project.maven_name}" {
|
|
source sourceSets.main
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
sourceSets.main.resources {
|
|
srcDir "src/generated/resources"
|
|
}
|
|
|
|
dependencies {
|
|
if (versionId >= 1_17_1) {
|
|
// Minecraft 1.17+ already includes slf4j, so we don't need to include it
|
|
compileOnly "org.slf4j:slf4j-api:${slf4j_version}"
|
|
} else {
|
|
library "org.slf4j:slf4j-api:${slf4j_version}"
|
|
}
|
|
|
|
library "org.spongepowered:mixin:${mixin_version}"
|
|
annotationProcessor "org.spongepowered:mixin:${mixin_version}:processor"
|
|
|
|
library project(":") // Include the base project, to get Common-ViaForge
|
|
}
|
|
|
|
mixin {
|
|
add sourceSets.main, "mixins.${project.maven_name}.refmap.json"
|
|
}
|
|
|
|
jar {
|
|
manifest.attributes(
|
|
"Specification-Title": "viaforge",
|
|
"Specification-Vendor": "viaforge",
|
|
"Specification-Version": project.version,
|
|
"Implementation-Title": project.name,
|
|
"Implementation-Version": project.version,
|
|
"Implementation-Vendor" :"viaforge",
|
|
"Implementation-Timestamp": new Date().format("yyyy-MM-dd"-"HH:mm:ssZ"),
|
|
"TweakClass": "org.spongepowered.asm.launch.MixinTweaker",
|
|
"TweakOrder": "0",
|
|
"FMLCorePluginContainsFMLMod": "true", // Only required for MC 1.12, but modern Forges skips this anyway
|
|
"FMLCorePlugin": "de.florianmichael.viaforge.mixin.MixinLoader", // Counterpart to the above
|
|
"MixinConfigs": "mixins.${project.maven_name}.json",
|
|
"ForceLoadAsMod": "true"
|
|
)
|
|
enabled = false
|
|
}
|
|
|
|
shadowJar {
|
|
if (versionId >= 1_17_1) {
|
|
archiveFileName = jar.archiveFileName
|
|
} else {
|
|
destinationDirectory = temporaryDir
|
|
}
|
|
configurations = [project.configurations.library] // Include the dependencies from the include configuration
|
|
duplicatesStrategy DuplicatesStrategy.EXCLUDE
|
|
|
|
// Prevent conflicts with Forge's weird service loading
|
|
exclude("META-INF/maven/**")
|
|
exclude("META-INF/versions/**")
|
|
|
|
if (versionId >= 1_13_2) {
|
|
// We don't need to package mixins into Forge 1.13+ jars, since Forge already has it
|
|
exclude("org/spongepowered/**")
|
|
}
|
|
if (versionId >= 1_16_5) {
|
|
// Get rid of the services folder, since Forge 1.16+ would conflict with some of the ForgeDev Environment's services
|
|
// And since we don't need them for Mixins anyway, we can just exclude them from the shadowJar
|
|
exclude("META-INF/services/**")
|
|
}
|
|
}
|
|
|
|
downgradeJar {
|
|
inputFile = shadowJar.archiveFile
|
|
destinationDirectory = temporaryDir
|
|
}
|
|
|
|
shadeDowngradedApi {
|
|
archiveFileName = jar.archiveFileName
|
|
}
|
|
|
|
publishMods {
|
|
file = shadowJar.archiveFile
|
|
type = STABLE
|
|
displayName = rootProject.name + ' ' + project.version
|
|
version = project.version + "+" + project.mc_version
|
|
modLoaders.add("forge")
|
|
changelog = file("../CHANGELOG.md").text
|
|
dryRun = rootProject.maven_version.contains("SNAPSHOT")
|
|
|
|
curseforge {
|
|
accessToken = providers.gradleProperty("curseforge.publishing_token")
|
|
projectId = "418933"
|
|
minecraftVersions.addAll(project.mc_version.split(','))
|
|
}
|
|
modrinth {
|
|
accessToken = providers.gradleProperty("modrinth.publishing_token")
|
|
projectId = "Z6se2s8f"
|
|
minecraftVersions.addAll(project.mc_version.split(','))
|
|
}
|
|
}
|
|
|
|
reobf {
|
|
shadowJar {}
|
|
}
|
|
|
|
jar.dependsOn("shadowJar")
|
|
if (versionId < 1_17_1) {
|
|
// Downgrade the jar to Java 8 for Minecraft 1.16.5 and below
|
|
jar.dependsOn("shadeDowngradedApi")
|
|
}
|
|
} |