mirror of
https://github.com/barkeser2002/CatServer.git
synced 2026-09-25 02:20:01 +03:00
724 lines
30 KiB
Groovy
724 lines
30 KiB
Groovy
buildscript {
|
|
repositories {
|
|
mavenLocal()
|
|
maven { url = 'https://maven.minecraftforge.net/' }
|
|
mavenCentral()
|
|
}
|
|
dependencies {
|
|
classpath 'net.minecraftforge.gradle:ForgeGradle:5.1.+'
|
|
}
|
|
}
|
|
|
|
|
|
import net.minecraftforge.forge.tasks.*
|
|
import net.minecraftforge.gradle.common.tasks.ExtractInheritance
|
|
import net.minecraftforge.gradle.patcher.tasks.ReobfuscateJar
|
|
import org.gradle.plugins.ide.eclipse.model.SourceFolder
|
|
|
|
import java.nio.file.Files
|
|
|
|
import static net.minecraftforge.forge.tasks.Util.getArtifactsOffline
|
|
|
|
plugins {
|
|
id 'com.github.ben-manes.versions' version '0.36.0'
|
|
id 'net.minecraftforge.gradleutils' version '1.+'
|
|
id 'eclipse'
|
|
}
|
|
|
|
Util.init() //Init all our extension methods
|
|
|
|
def gitVersion = 'git rev-parse --short HEAD'.execute().text.trim()
|
|
|
|
println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch') + ' Git-Commit: ' + gitVersion)
|
|
|
|
ext {
|
|
JAR_SIGNER = null
|
|
MAPPING_CHANNEL = 'official'
|
|
MAPPING_VERSION = '1.16.5'
|
|
MC_VERSION = '1.16.5'
|
|
MCP_VERSION = '20210115.111550'
|
|
SPI_VERSION = '3.2.0'
|
|
}
|
|
|
|
project(':mcp') {
|
|
apply plugin: 'net.minecraftforge.gradle.mcp'
|
|
repositories {
|
|
mavenLocal()
|
|
}
|
|
mcp {
|
|
config MC_VERSION + '-' + MCP_VERSION
|
|
pipeline = 'joined'
|
|
}
|
|
}
|
|
|
|
project(':clean') {
|
|
evaluationDependsOn(':mcp')
|
|
apply plugin: 'eclipse'
|
|
apply plugin: 'net.minecraftforge.gradle.patcher'
|
|
java.toolchain.languageVersion = JavaLanguageVersion.of(8)
|
|
|
|
repositories {
|
|
mavenLocal()
|
|
mavenCentral()
|
|
}
|
|
|
|
dependencies {
|
|
implementation 'net.minecraftforge:forgespi:' + SPI_VERSION
|
|
}
|
|
|
|
patcher {
|
|
parent = project(':mcp')
|
|
mcVersion = MC_VERSION
|
|
patchedSrc = file('src/main/java')
|
|
|
|
mappings channel: MAPPING_CHANNEL, version: MAPPING_VERSION
|
|
|
|
runs {
|
|
clean_client {
|
|
taskName 'clean_client'
|
|
|
|
main 'net.minecraft.client.main.Main'
|
|
workingDirectory project.file('run')
|
|
|
|
args '--gameDir', '.'
|
|
args '--version', MC_VERSION
|
|
args '--assetsDir', downloadAssets.output
|
|
args '--assetIndex', '{asset_index}'
|
|
args '--accessToken', '0'
|
|
}
|
|
|
|
clean_server {
|
|
taskName 'clean_server'
|
|
|
|
main 'net.minecraft.server.Main'
|
|
workingDirectory project.file('run')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
project(':forge') {
|
|
evaluationDependsOn(':clean')
|
|
apply plugin: 'java-library'
|
|
apply plugin: 'eclipse'
|
|
apply plugin: 'net.minecraftforge.gradle.patcher'
|
|
|
|
java.toolchain.languageVersion = JavaLanguageVersion.of(8)
|
|
group = 'net.minecraftforge'
|
|
|
|
sourceSets {
|
|
fmllauncher {
|
|
java {
|
|
srcDirs = ["$rootDir/src/fmllauncher/java"]
|
|
}
|
|
resources {
|
|
srcDirs = ["$rootDir/src/fmllauncher/resources"]
|
|
}
|
|
}
|
|
main {
|
|
compileClasspath += sourceSets.fmllauncher.runtimeClasspath
|
|
runtimeClasspath += sourceSets.fmllauncher.runtimeClasspath
|
|
java {
|
|
srcDirs = ["$rootDir/src/main/java"]
|
|
}
|
|
resources {
|
|
srcDirs = [
|
|
"$rootDir/src/main/resources",
|
|
"$rootDir/src/generated/resources"
|
|
]
|
|
}
|
|
}
|
|
userdev {
|
|
compileClasspath += sourceSets.main.runtimeClasspath
|
|
runtimeClasspath += sourceSets.main.runtimeClasspath
|
|
java {
|
|
srcDirs = ["$rootDir/src/userdev/java"]
|
|
}
|
|
resources {
|
|
srcDirs = ["$rootDir/src/userdev/resources"]
|
|
}
|
|
}
|
|
}
|
|
//Eclipse adds the sourcesets twice, once where we tell it to, once in the projects folder. No idea why. So delete them
|
|
eclipse.classpath.file.whenMerged { cls -> cls.entries.removeIf { e -> e instanceof SourceFolder && e.path.startsWith('src/') && !e.path.startsWith('src/main/') } }
|
|
|
|
repositories {
|
|
mavenLocal()
|
|
mavenCentral()
|
|
maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' }
|
|
maven { url 'https://papermc.io/repo/repository/maven-public/' }
|
|
}
|
|
|
|
ext {
|
|
SPEC_VERSION = '36.2' // This is overwritten by git tag, but here so dev time doesnt explode
|
|
// The new versioning sceme is <MCVersion>-<ForgeMC>.<RB>.<CommitsSinceRB>
|
|
// ForgeMC is a unique identifier for every MC version we have supported.
|
|
// Essentially, the same as the old, except dropping the first number, and the builds are no longer unique.
|
|
MCP_ARTIFACT = project(':mcp').mcp.config.get()
|
|
SPECIAL_SOURCE = 'net.md-5:SpecialSource:1.10.0'
|
|
SPECIAL_SOURCE_MCP = 'net.md-5:SpecialSource:1.8.5'
|
|
VERSION_JSON = project(':mcp').file('build/mcp/downloadJson/version.json')
|
|
BINPATCH_TOOL = 'net.minecraftforge:binarypatcher:1.0.12:fatjar'
|
|
INSTALLER_TOOLS = 'net.minecraftforge:installertools:1.2.6'
|
|
}
|
|
|
|
version = '1.16.5-36.2.39'
|
|
println('Forge Version: ' + version)
|
|
|
|
patcher {
|
|
excs.from = file("$rootDir/src/main/resources/forge.exc")
|
|
parent = project(':clean')
|
|
patches = file("$rootDir/patches/minecraft")
|
|
patchedSrc = file('src/main/java')
|
|
srgPatches = true
|
|
accessTransformers.from file("$rootDir/src/main/resources/META-INF/accesstransformer.cfg")
|
|
sideAnnotationStrippers.from file("$rootDir/src/main/resources/forge.sas")
|
|
|
|
runs {
|
|
forge_client {
|
|
taskName 'forge_client'
|
|
|
|
main 'net.minecraftforge.userdev.LaunchTesting'
|
|
workingDirectory project.file('run')
|
|
|
|
environment 'target', 'fmldevclient'
|
|
environment 'assetIndex', '{asset_index}'
|
|
environment 'assetDirectory', downloadAssets.output
|
|
environment 'nativesDirectory', extractNatives.output.get().asFile
|
|
|
|
environment 'MC_VERSION', MC_VERSION
|
|
environment 'MCP_VERSION', MCP_VERSION
|
|
environment 'FORGE_GROUP', project.group
|
|
environment 'FORGE_SPEC', SPEC_VERSION
|
|
environment 'FORGE_VERSION', project.version.substring(MC_VERSION.length() + 1)
|
|
environment 'LAUNCHER_VERSION', SPEC_VERSION
|
|
property 'org.lwjgl.system.SharedLibraryExtractDirectory', 'lwjgl_dll'
|
|
property 'eventbus.checkTypesOnDispatch', 'true'
|
|
|
|
ideaModule "${rootProject.name}.${project.name}.userdev"
|
|
|
|
mods {
|
|
forge { source sourceSets.main }
|
|
}
|
|
}
|
|
|
|
forge_server {
|
|
taskName 'forge_server'
|
|
|
|
main 'net.minecraftforge.userdev.LaunchTesting'
|
|
workingDirectory project.file('run')
|
|
|
|
environment 'target', 'fmldevserver'
|
|
|
|
environment 'MC_VERSION', MC_VERSION
|
|
environment 'MCP_VERSION', MCP_VERSION
|
|
environment 'FORGE_GROUP', project.group
|
|
environment 'FORGE_SPEC', SPEC_VERSION
|
|
environment 'FORGE_VERSION', project.version.substring(MC_VERSION.length() + 1)
|
|
environment 'LAUNCHER_VERSION', SPEC_VERSION
|
|
property 'eventbus.checkTypesOnDispatch', 'true'
|
|
|
|
ideaModule "${rootProject.name}.${project.name}.userdev"
|
|
|
|
mods {
|
|
forge { source sourceSets.main }
|
|
}
|
|
}
|
|
|
|
forge_data {
|
|
taskName 'forge_data'
|
|
|
|
main 'net.minecraftforge.userdev.LaunchTesting'
|
|
workingDirectory project.file('run')
|
|
|
|
environment 'target', 'fmldevdata'
|
|
environment 'assetIndex', '{asset_index}'
|
|
environment 'assetDirectory', downloadAssets.output
|
|
|
|
environment 'MC_VERSION', MC_VERSION
|
|
environment 'MCP_VERSION', MCP_VERSION
|
|
environment 'FORGE_GROUP', project.group
|
|
environment 'FORGE_SPEC', SPEC_VERSION
|
|
environment 'FORGE_VERSION', project.version.substring(MC_VERSION.length() + 1)
|
|
environment 'LAUNCHER_VERSION', SPEC_VERSION
|
|
|
|
ideaModule "${rootProject.name}.${project.name}.userdev"
|
|
|
|
mods {
|
|
forge { source sourceSets.main }
|
|
}
|
|
|
|
args '--mod', 'forge', '--all', '--output', rootProject.file('src/generated/resources/'), '--validate',
|
|
'--existing', sourceSets.main.resources.srcDirs[0]
|
|
}
|
|
}
|
|
}
|
|
|
|
ext {
|
|
MANIFESTS = [
|
|
'/': [
|
|
'Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
|
|
'GitCommit': gradleutils.gitInfo.abbreviatedId,
|
|
'Git-Branch': '1.16.5'
|
|
] as LinkedHashMap,
|
|
'net/minecraftforge/versions/forge/': [
|
|
'Specification-Title': 'Forge',
|
|
'Specification-Vendor': 'Forge Development LLC',
|
|
'Specification-Version': SPEC_VERSION,
|
|
'Implementation-Title': project.group,
|
|
'Implementation-Version': project.version.substring(MC_VERSION.length() + 1),
|
|
'Implementation-Vendor': 'Forge Development LLC'
|
|
] as LinkedHashMap,
|
|
'net/minecraftforge/versions/mcp/': [
|
|
'Specification-Title': 'Minecraft',
|
|
'Specification-Vendor': 'Mojang',
|
|
'Specification-Version': MC_VERSION,
|
|
'Implementation-Title': 'MCP',
|
|
'Implementation-Version': MCP_VERSION,
|
|
'Implementation-Vendor': 'Forge'
|
|
] as LinkedHashMap,
|
|
'net/minecraftforge/fml/javafmlmod/': [
|
|
'Specification-Title': 'Mod Language Provider',
|
|
'Specification-Vendor': 'Forge Development LLC',
|
|
'Specification-Version': '1',
|
|
'Implementation-Title': 'FML Java Mod',
|
|
'Implementation-Version': SPEC_VERSION,
|
|
'Implementation-Vendor': 'Forge'
|
|
] as LinkedHashMap,
|
|
'net/minecraftforge/fml/mclanguageprovider/': [
|
|
'Specification-Title': 'Mod Language Provider',
|
|
'Specification-Vendor': 'Forge Development LLC',
|
|
'Specification-Version': '1',
|
|
'Implementation-Title': 'Minecraft Language Mod Provider',
|
|
'Implementation-Version': '1',
|
|
'Implementation-Vendor': 'Forge'
|
|
] as LinkedHashMap,
|
|
'net/minecraftforge/fml/loading/': [
|
|
'Specification-Title': 'Launcher',
|
|
'Specification-Vendor': 'Forge Development LLC',
|
|
'Specification-Version': '1',
|
|
'Implementation-Title': 'FML Launcher',
|
|
'Implementation-Version': SPEC_VERSION,
|
|
'Implementation-Vendor': 'Forge'
|
|
] as LinkedHashMap,
|
|
'net/minecraftforge/fml/userdev/': [
|
|
'Specification-Title': 'Forge User Development',
|
|
'Specification-Vendor': 'Forge Development LLC',
|
|
'Specification-Version': SPEC_VERSION,
|
|
'Implementation-Title': project.group,
|
|
'Implementation-Version': project.version.substring(MC_VERSION.length() + 1),
|
|
'Implementation-Vendor': 'Forge Development LLC'
|
|
] as LinkedHashMap,
|
|
'moe/loliserver/': [
|
|
'Specification-Title' : MCP_VERSION,
|
|
'Specification-Vendor' : 'Loli-Server',
|
|
'Specification-Version': project.version.substring(MC_VERSION.length() + 1),
|
|
'Implementation-Title' : 'LoliServer',
|
|
'Implementation-Version': '1.16.5-' + gitVersion,
|
|
'Implementation-Vendor' : 'Loli-Server'
|
|
] as LinkedHashMap,
|
|
'catserver/server/': [
|
|
'Specification-Title' : MCP_VERSION,
|
|
'Specification-Vendor' : 'CatServerMC',
|
|
'Specification-Version': project.version.substring(MC_VERSION.length() + 1),
|
|
'Implementation-Title' : 'CatServer',
|
|
'Implementation-Version': '1.16.5-' + gitVersion,
|
|
'Implementation-Vendor' : 'CatServerMC'
|
|
] as LinkedHashMap,
|
|
'org/bukkit/craftbukkit/v1_16_R3/': [
|
|
'Specification-Title' : MCP_VERSION,
|
|
'Specification-Vendor' : 'SpigotMC',
|
|
'Specification-Version': '1.16.5',
|
|
'Implementation-Title' : 'Spigot',
|
|
'Implementation-Version': '1.16.5-' + gitVersion,
|
|
'Implementation-Vendor' : 'SpigotMC'
|
|
] as LinkedHashMap
|
|
]
|
|
}
|
|
|
|
configurations {
|
|
installer {
|
|
transitive = false //Don't pull all libraries, if we're missing something, add it to the installer list so the installer knows to download it.
|
|
}
|
|
api.extendsFrom(installer)
|
|
fmllauncherImplementation.extendsFrom(installer, implementation)
|
|
}
|
|
dependencies {
|
|
installer 'org.ow2.asm:asm:9.1'
|
|
installer 'org.ow2.asm:asm-commons:9.1'
|
|
installer 'org.ow2.asm:asm-tree:9.1'
|
|
installer 'org.ow2.asm:asm-util:9.1'
|
|
installer 'org.ow2.asm:asm-analysis:9.1'
|
|
installer 'cpw.mods:modlauncher:8.1.3'
|
|
installer 'cpw.mods:grossjava9hacks:1.3.3'
|
|
installer 'net.minecraftforge:accesstransformers:3.0.1'
|
|
installer 'org.antlr:antlr4-runtime:4.9.1' //Dep of AccessTransformer
|
|
installer 'net.minecraftforge:eventbus:4.0.0'
|
|
installer 'net.minecraftforge:forgespi:' + SPI_VERSION
|
|
installer 'net.minecraftforge:coremods:4.0.6'
|
|
installer 'net.minecraftforge:unsafe:0.2.0'
|
|
installer 'com.electronwill.night-config:core:3.6.3'
|
|
installer 'com.electronwill.night-config:toml:3.6.3'
|
|
installer 'org.jline:jline:3.12.1'
|
|
installer 'org.apache.maven:maven-artifact:3.6.3'
|
|
installer 'net.jodah:typetools:0.8.3'
|
|
installer 'org.apache.logging.log4j:log4j-api:2.17.0' //TODO: Unpin in 1.18.1 or when Mojang bumps the Log4J version
|
|
installer 'org.apache.logging.log4j:log4j-core:2.17.0' //TODO: Unpin in 1.18.1 or when Mojang bumps the Log4J version
|
|
installer 'org.apache.logging.log4j:log4j-slf4j18-impl:2.17.0' //TODO: Unpin in 1.18.1 or when Mojang bumps the Log4J version
|
|
installer 'net.minecrell:terminalconsoleappender:1.2.0'
|
|
installer 'net.sf.jopt-simple:jopt-simple:5.0.4'
|
|
installer 'org.spongepowered:mixin:0.8.4'
|
|
// This is org.openjdk.nashorn:nashorn-core:15.1.1 repackaged so it doesn't crash on JREs < 15.
|
|
// See: https://github.com/LexManos/NashornLegacyPackager
|
|
installer 'net.minecraftforge:nashorn-core-compat:15.1.1.1'
|
|
|
|
// bukkit
|
|
installer 'commons-lang:commons-lang:2.6'
|
|
installer 'org.yaml:snakeyaml:1.27'
|
|
installer 'org.apache.maven:maven-resolver-provider:3.8.1'
|
|
installer 'org.apache.maven.resolver:maven-resolver-connector-basic:1.6.2'
|
|
installer 'org.apache.maven.resolver:maven-resolver-transport-http:1.6.2'
|
|
compileOnly 'org.jetbrains:annotations:20.1.0'
|
|
installer 'org.slf4j:slf4j-api:1.7.30'
|
|
// craftbukkit
|
|
installer 'org.fusesource.jansi:jansi:1.18'
|
|
installer 'jline:jline:2.14.6'
|
|
installer 'com.googlecode.json-simple:json-simple:1.1.1'
|
|
installer 'org.xerial:sqlite-jdbc:3.34.0'
|
|
installer 'mysql:mysql-connector-java:8.0.28'
|
|
installer 'org.apache.logging.log4j:log4j-iostreams:2.17.0'
|
|
installer 'net.md-5:SpecialSource:1.8.5'
|
|
installer 'javax.inject:javax.inject:1'
|
|
installer 'org.eclipse.sisu:org.eclipse.sisu.inject:0.3.4'
|
|
// spigot
|
|
installer 'net.md-5:bungeecord-chat:1.16-R0.4'
|
|
|
|
fmllauncherImplementation 'com.google.guava:guava:21.0'
|
|
fmllauncherImplementation 'com.google.code.gson:gson:2.8.0'
|
|
fmllauncherImplementation 'org.lwjgl:lwjgl:3.2.2'
|
|
fmllauncherImplementation 'org.lwjgl:lwjgl-glfw:3.2.2'
|
|
fmllauncherImplementation 'org.lwjgl:lwjgl-opengl:3.2.2'
|
|
fmllauncherImplementation 'org.lwjgl:lwjgl-stb:3.2.2'
|
|
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
|
|
testImplementation 'org.junit.vintage:junit-vintage-engine:5.+'
|
|
testImplementation 'org.opentest4j:opentest4j:1.2.0' // needed for junit 5
|
|
testImplementation 'org.hamcrest:hamcrest-all:1.3' // needs advanced matching for list order
|
|
}
|
|
|
|
// We apply the bin patches we just created to make a jar that is JUST our changes
|
|
['Client', 'Server', 'Joined'].each { side ->
|
|
def gen = tasks.getByName("gen${side}BinPatches")
|
|
gen.tool = BINPATCH_TOOL
|
|
task "apply${side}BinPatches"(type: net.minecraftforge.gradle.common.tasks.ApplyBinPatches, dependsOn: gen) {
|
|
clean = gen.cleanJar
|
|
patch = gen.output
|
|
tool = BINPATCH_TOOL
|
|
}
|
|
def srgTask = tasks.getByName(patcher.notchObf ? 'createMcp2Obf' : 'createMcp2Srg')
|
|
// Create SRG named Vanilla jars, using the SpecialSource we have in the installer
|
|
task "create${side}SRG"(type: net.minecraftforge.gradle.userdev.tasks.RenameJar, dependsOn: srgTask) {
|
|
tool = SPECIAL_SOURCE_MCP + ':shaded'
|
|
args = ['--stable', '--in-jar', '{input}', '--out-jar', '{output}', '--srg-in', '{mappings}']
|
|
mappings = srgTask.output
|
|
input = gen.cleanJar
|
|
output = file("build/create${name}SRG/output.jar")
|
|
}
|
|
}
|
|
|
|
tasks.named('compileFmllauncherJava') {
|
|
javaCompiler = javaToolchains.compilerFor {
|
|
languageVersion = JavaLanguageVersion.of(8)
|
|
}
|
|
}
|
|
|
|
task downloadLibraries(type: DownloadLibraries, dependsOn: ':mcp:setupMCP') {
|
|
input = VERSION_JSON
|
|
output = rootProject.file('build/libraries/')
|
|
}
|
|
|
|
task extractInheritance(type: ExtractInheritance, dependsOn: [genJoinedBinPatches, downloadLibraries]) {
|
|
tool = INSTALLER_TOOLS + ':fatjar'
|
|
input = genJoinedBinPatches.cleanJar
|
|
libraries.addAll downloadLibraries.librariesOutput.map { rf -> Files.readAllLines(rf.asFile.toPath()).stream().map(File::new).collect(java.util.stream.Collectors.toList()) }
|
|
}
|
|
|
|
task findFieldInstanceChecks(type: FieldCompareFinder, dependsOn: ['createJoinedSRG']) {
|
|
jar = tasks.getByName('createJoinedSRG').output
|
|
output = rootProject.file('src/main/resources/coremods/field_to_instanceof.json')
|
|
fields {
|
|
bows {
|
|
cls = 'net/minecraft/item/Items'
|
|
name = 'field_151031_f'
|
|
replacement = 'net/minecraft/item/BowItem'
|
|
}
|
|
crossbows {
|
|
cls = 'net/minecraft/item/Items'
|
|
name = 'field_222114_py'
|
|
replacement = 'net/minecraft/item/CrossbowItem'
|
|
}
|
|
filled_map {
|
|
cls = 'net/minecraft/item/Items'
|
|
name = 'field_151098_aY'
|
|
replacement = 'net/minecraft/item/FilledMapItem'
|
|
blacklist 'net/minecraft/client/gui/screen/inventory/CartographyTableScreen', 'func_230450_a_', '(Lcom/mojang/blaze3d/matrix/MatrixStack;FII)V'
|
|
blacklist 'net/minecraft/client/renderer/entity/ItemFrameRenderer', 'func_225623_a_', '(Lnet/minecraft/entity/item/ItemFrameEntity;FFLcom/mojang/blaze3d/matrix/MatrixStack;Lnet/minecraft/client/renderer/IRenderTypeBuffer;I)V'
|
|
blacklist 'net/minecraft/item/crafting/MapCloningRecipe'
|
|
blacklist 'net/minecraft/item/crafting/MapExtendingRecipe'
|
|
}
|
|
fishing_rod {
|
|
cls = 'net/minecraft/item/Items'
|
|
name = 'field_151112_aM'
|
|
replacement = 'net/minecraft/item/FishingRodItem'
|
|
}
|
|
shears {
|
|
cls = 'net/minecraft/item/Items'
|
|
name = 'field_151097_aZ'
|
|
replacement = 'net/minecraft/item/ShearsItem'
|
|
}
|
|
}
|
|
}
|
|
|
|
task checkATs(type: CheckATs, dependsOn: [extractInheritance, createSrg2Mcp]) {
|
|
inheritance = extractInheritance.output
|
|
ats.from patcher.accessTransformers
|
|
mappings = createSrg2Mcp.output
|
|
}
|
|
|
|
task checkSAS(type: CheckSAS, dependsOn: extractInheritance) {
|
|
inheritance = extractInheritance.output
|
|
sass.from patcher.sideAnnotationStrippers
|
|
}
|
|
|
|
task checkExcs(type: CheckExcs, dependsOn: jar) {
|
|
binary = jar.archiveFile
|
|
excs.from patcher.excs
|
|
}
|
|
|
|
task checkAll(dependsOn: [checkATs, checkSAS, checkExcs, findFieldInstanceChecks]){}
|
|
|
|
genPatches {
|
|
autoHeader true
|
|
lineEnding = '\n'
|
|
}
|
|
|
|
universalJar {
|
|
duplicatesStrategy = 'exclude'
|
|
|
|
doFirst {
|
|
MANIFESTS.each{ pkg, values ->
|
|
if (pkg == '/') {
|
|
manifest.attributes(values += [
|
|
'Manifest-Version': gitVersion
|
|
])
|
|
} else {
|
|
manifest.attributes(values, pkg)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task launcherJar(type: Jar) {
|
|
baseName 'CatServer'
|
|
classifier 'launcher'
|
|
from sourceSets.fmllauncher.output
|
|
doFirst {
|
|
def classpath = new StringBuilder()
|
|
def artifacts = getArtifactsOffline(project, project.configurations.installer, false)
|
|
artifacts.each { key, lib ->
|
|
classpath += "libraries/${lib.downloads.artifact.path} "
|
|
}
|
|
classpath += "libraries/net/minecraft/server/${MC_VERSION}-${MCP_VERSION}/server-${MC_VERSION}-${MCP_VERSION}-extra.jar"
|
|
|
|
MANIFESTS.each{ pkg, values ->
|
|
if (pkg == '/') {
|
|
manifest.attributes(values += [
|
|
'Premain-Class': 'foxlaunch.legacy.JarLoader',
|
|
'Launcher-Agent-Class': 'foxlaunch.legacy.JarLoader',
|
|
'Main-Class': 'catserver.server.CatServerLaunch',
|
|
'Class-Path': classpath.toString(),
|
|
'ServerLaunchArgs': [
|
|
'--gameDir', '.',
|
|
'--launchTarget', 'fmlserver',
|
|
'--fml.forgeVersion', "${project.version.substring(MC_VERSION.length() + 1)}".toString(),
|
|
'--fml.mcpVersion', MCP_VERSION,
|
|
'--fml.mcVersion', MC_VERSION,
|
|
'--fml.forgeGroup', project.group
|
|
].join(' ')
|
|
])
|
|
} else {
|
|
manifest.attributes(values, pkg)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task buildCatServer(type: Jar, dependsOn: [genServerBinPatches]) {
|
|
archiveClassifier = 'server'
|
|
extension = 'jar'
|
|
baseName = 'CatServer'
|
|
version = "1.16.5-" + gitVersion
|
|
destinationDir = file('build/libs')
|
|
from sourceSets.fmllauncher.output
|
|
doFirst {
|
|
def classpath = new StringBuilder()
|
|
def artifacts = getArtifactsOffline(project, project.configurations.installer, false)
|
|
artifacts.each { key, lib ->
|
|
classpath += "libraries/${lib.downloads.artifact.path} "
|
|
}
|
|
|
|
MANIFESTS.each{ pkg, values ->
|
|
if (pkg == '/') {
|
|
manifest.attributes(values += [
|
|
'Premain-Class': 'foxlaunch.legacy.JarLoader',
|
|
'Launcher-Agent-Class': 'foxlaunch.legacy.JarLoader',
|
|
'Main-Class': 'catserver.server.CatServerLaunch',
|
|
'Class-Path': classpath.toString(),
|
|
'ServerLaunchArgs': [
|
|
'--gameDir', '.',
|
|
'--launchTarget', 'fmlserver',
|
|
'--fml.forgeVersion', "${project.version.substring(MC_VERSION.length() + 1)}".toString(),
|
|
'--fml.mcpVersion', MCP_VERSION,
|
|
'--fml.mcVersion', MC_VERSION,
|
|
'--fml.forgeGroup', project.group
|
|
].join(' ')
|
|
])
|
|
} else {
|
|
manifest.attributes(values, pkg)
|
|
}
|
|
}
|
|
}
|
|
from(genServerBinPatches.output) {
|
|
rename{'data/server.lzma'}
|
|
}
|
|
from(universalJar) {
|
|
into "/data/"
|
|
}
|
|
}
|
|
|
|
userdevConfig {
|
|
def artifacts = getArtifactsOffline(project, project.configurations.installer, true)
|
|
artifacts.each { key, lib ->
|
|
libraries.add(lib.name)
|
|
}
|
|
libraries.add("${project.group}:${project.name}:${project.version}:launcher")
|
|
runs {
|
|
client {
|
|
main 'net.minecraftforge.userdev.LaunchTesting'
|
|
|
|
// Support mod devs running on Java 8 and up, including 16
|
|
jvmArgs '-XX:+IgnoreUnrecognizedVMOptions'
|
|
jvmArgs '--add-exports=java.base/sun.security.util=ALL-UNNAMED'
|
|
jvmArgs '--add-exports=jdk.naming.dns/com.sun.jndi.dns=java.naming'
|
|
jvmArgs '--add-opens=java.base/java.util.jar=ALL-UNNAMED'
|
|
|
|
environment 'target', 'fmluserdevclient'
|
|
environment 'assetIndex', '{asset_index}'
|
|
environment 'assetDirectory', '{assets_root}'
|
|
environment 'nativesDirectory', '{natives}'
|
|
|
|
environment 'MC_VERSION', "${MC_VERSION}"
|
|
environment 'FORGE_GROUP', "${project.group}"
|
|
environment 'MCP_VERSION', "${MCP_VERSION}"
|
|
environment 'MOD_CLASSES', '{source_roots}'
|
|
environment 'MCP_MAPPINGS', '{mcp_mappings}'
|
|
environment 'FORGE_VERSION', "${project.version.substring(MC_VERSION.length() + 1)}"
|
|
}
|
|
|
|
server {
|
|
main 'net.minecraftforge.userdev.LaunchTesting'
|
|
|
|
// Support mod devs running on Java 8 and up, including 16
|
|
jvmArgs '-XX:+IgnoreUnrecognizedVMOptions'
|
|
jvmArgs '--add-exports=java.base/sun.security.util=ALL-UNNAMED'
|
|
jvmArgs '--add-exports=jdk.naming.dns/com.sun.jndi.dns=java.naming'
|
|
jvmArgs '--add-opens=java.base/java.util.jar=ALL-UNNAMED'
|
|
|
|
environment 'target', 'fmluserdevserver'
|
|
|
|
environment 'MC_VERSION', "${MC_VERSION}"
|
|
environment 'FORGE_GROUP', "${project.group}"
|
|
environment 'MCP_VERSION', "${MCP_VERSION}"
|
|
environment 'MOD_CLASSES', '{source_roots}'
|
|
environment 'MCP_MAPPINGS', '{mcp_mappings}'
|
|
environment 'FORGE_VERSION', "${project.version.substring(MC_VERSION.length() + 1)}"
|
|
}
|
|
|
|
data {
|
|
main 'net.minecraftforge.userdev.LaunchTesting'
|
|
|
|
// Support mod devs running on Java 8 and up, including 16
|
|
jvmArgs '-XX:+IgnoreUnrecognizedVMOptions'
|
|
jvmArgs '--add-exports=java.base/sun.security.util=ALL-UNNAMED'
|
|
jvmArgs '--add-exports=jdk.naming.dns/com.sun.jndi.dns=java.naming'
|
|
jvmArgs '--add-opens=java.base/java.util.jar=ALL-UNNAMED'
|
|
|
|
environment 'target', 'fmluserdevdata'
|
|
environment 'assetIndex', '{asset_index}'
|
|
environment 'assetDirectory', '{assets_root}'
|
|
|
|
environment 'MC_VERSION', "${MC_VERSION}"
|
|
environment 'FORGE_GROUP', "${project.group}"
|
|
environment 'MCP_VERSION', "${MCP_VERSION}"
|
|
environment 'MOD_CLASSES', '{source_roots}'
|
|
environment 'MCP_MAPPINGS', '{mcp_mappings}'
|
|
environment 'FORGE_VERSION', "${project.version.substring(MC_VERSION.length() + 1)}"
|
|
}
|
|
}
|
|
}
|
|
|
|
task userdevExtras(type:Jar) {
|
|
dependsOn classes
|
|
from sourceSets.userdev.output
|
|
classifier 'userdev-temp'
|
|
}
|
|
|
|
reobfJar {
|
|
tool = SPECIAL_SOURCE + ':shaded'
|
|
}
|
|
|
|
task userdevExtrasReobf(type: ReobfuscateJar) {
|
|
dependsOn userdevExtras, createMcp2Srg
|
|
input = tasks.userdevExtras.archiveFile
|
|
classpath.from project.configurations.userdevCompileClasspath
|
|
srg = tasks.createMcp2Srg.output
|
|
tool = SPECIAL_SOURCE + ':shaded'
|
|
}
|
|
|
|
userdevJar {
|
|
dependsOn tasks.userdevExtrasReobf
|
|
from (zipTree(tasks.userdevExtrasReobf.output)) {
|
|
into '/inject/'
|
|
}
|
|
from (sourceSets.userdev.output.resourcesDir) {
|
|
into '/inject/'
|
|
}
|
|
}
|
|
|
|
extractRangeMap {
|
|
dependencies.from jar.archiveFile
|
|
sources.from sourceSets.userdev.java.srcDirs
|
|
}
|
|
applyRangeMap {
|
|
sources.from sourceSets.userdev.java.srcDirs
|
|
}
|
|
|
|
tasks.eclipse.dependsOn('genEclipseRuns')
|
|
|
|
if (project.hasProperty('UPDATE_MAPPINGS')) {
|
|
extractRangeMap {
|
|
sources.from sourceSets.test.java.srcDirs
|
|
addDependencies compileTestJava.classpath
|
|
}
|
|
applyRangeMap {
|
|
sources.from sourceSets.test.java.srcDirs
|
|
}
|
|
sourceSets.test.java.srcDirs.each { extractMappedNew.addTarget it }
|
|
}
|
|
}
|
|
|
|
task setup() {
|
|
dependsOn ':clean:extractMapped'
|
|
dependsOn ':forge:extractMapped' //These must be strings so that we can do lazy resolution. Else we need evaluationDependsOnChildren above
|
|
}
|
|
|