Сборка client/server | Новая версия forge

Версия Minecraft
1.12.2
222
5
28
На данный момент плагин MinecraftDevelopment для IDEA предлагает для версии 1.12.2 последнюю версию forge:
net.minecraftforge:forge:1.12.2-14.23.5.2854

Ранее я использовать следующий код, для создания client/server jar, но на данный момент он устарел и более не хочет работать.

Java:
task clientJar(type: Jar, dependsOn: "jar") {
    from sourceSets.main.output
    classifier = "client"
    exclude "com/domain/modid/side/server/**"
}

task serverJar(type: Jar, dependsOn: "jar") {
    from sourceSets.main.output
    classifier = "server"
    exclude "com/domain/modid/side/client/**"
    exclude "assets/**"
}

reobf {
    clientJar { mappingType = "SEARGE" }
    serverJar { mappingType = "SEARGE" }
}

build.dependsOn clientJar, serverJar

Падает с ошибкой:

Java:
A problem occurred evaluating root project 'ProjectName'.
Could not set unknown property 'mappingType' for task ':reobfClientJar' of type net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace.

В официальной конференции Forge (discord) меня послали на три весёлых буквы с просьбой о помощи, аргументируя тем, что они поддерживают только 1.15+
Дело то конечно понятное, на на кой хер тогда они обновили Forge и ForgeGradle(для старого Forge) не понятно.
Если кто разбирается в gradle, то не могли бы Вы помочь?

p.s. Аннотация SideOnly не канает, а всем известной вырезалкой мне не хочется пользоваться в угоду порядка в более ранних проектах.
 
Решение
во первых какой еще порядок и как он может быть нарушен вырезалкой? мне кажется ты просто хейтер

но если ты реально такой бяка ты можешь написать два таска типа Jar. Сделать их зависимыми от build и сделать source zipTree из жарника который собирает build. Код не напишу пока не скажешь как вырезалка нарушит порядок😜
1,111
47
420
во первых какой еще порядок и как он может быть нарушен вырезалкой? мне кажется ты просто хейтер

но если ты реально такой бяка ты можешь написать два таска типа Jar. Сделать их зависимыми от build и сделать source zipTree из жарника который собирает build. Код не напишу пока не скажешь как вырезалка нарушит порядок😜
 
222
5
28
В любом случае, на данный момент я решил задачу следующим образом:
Java:
task clientJar(type: Jar) {
    classifier = "client"
    from zipTree("build/reobfJar/output.jar")
    exclude "com/domain/modid/side/server/**"
}

task serverJar(type: Jar) {
    classifier = "server"
    from zipTree("build/reobfJar/output.jar")
    exclude "com/domain/modid/side/client/**"
    exclude "assets/**"
}

build.finalizedBy('clientJar')
build.finalizedBy('serverJar')
И всё же я бы не отказался от правильного либо улучшенного решения с твоей стороны.
 
Последнее редактирование:
1,111
47
420
в целом это именно то что я предлагал сделать. улучшать тут нечего.

Я не очень понимаю, чему там надо учится, если все что требуется это поставить аннотацию на 2 пакета client и server и тыкать buildAll. Нуок ну ладно.
 
Сверху