Краш миксинов с idea и фордж, непарсящий mcmod.info

Версия Minecraft
1.12.2
API
Forge
Всем привет. На днях вкатился в кубики, бодаюсь преимущественно с граблями пока, уже можно сказать третий день. Возникла проблема.
При запуске кубиков через runClient идеи, все ломается:
Подключил миксины - оно пишет что не может загрузить конфиг и падает.
Удаляю класствикер и запускаю без миксинов все грузится, но не видит mcmod.info. Мол попросите автора...
Если делаю финальный билд и кидаю на рабочий инстанс ( обфус клиент итд ) - все работает. и миксины и метаинфу о моде видит итд.
Полагаю есть где то различия между билдом и полубилдом, и в случае со вторым где то что то не копируется.

Что можно сделать?

Мой build.gradle
build.gradle:
buildscript {
    repositories {
        jcenter()
        maven {
            url = "http://files.minecraftforge.net/maven"
        }
        maven {
            url = 'http://repo.spongepowered.org/maven'
        }
    }

    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:3.+'
        classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4'
        classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT'
    }
}

plugins {
    id 'org.spongepowered.plugin' version '0.8.1'
}

idea {
    module {
        inheritOutputDirs = true
    }
}

apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'org.spongepowered.mixin'
apply plugin: 'idea'

// todo def modid
version = "1.0"
group = "org.rutex.novaws"
archivesBaseName = "ws-connector"

minecraft {
    mappings channel: 'snapshot', version: '20171003-1.12'

    runs {
        client {
            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
            property 'forge.logging.console.level', 'debug'
        }

        server {
            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
            property 'forge.logging.console.level', 'debug'
        }
    }
}

sourceSets {
    main {
        ext.refMap = "mixins.novaws.refmap.json"
    }
}

repositories {
    jcenter()
    mavenCentral()
    maven { url = "https://repo.spongepowered.org/maven/" }
    maven { url = "http://maven.shadowfacts.net/" }
}

dependencies {
    minecraft 'net.minecraftforge:forge:1.12.2-14.23.5.2854'

    compile "org.java-websocket:Java-WebSocket:1.5.1"
    shadow "org.java-websocket:Java-WebSocket:1.5.1"

    compile 'org.spongepowered:mixin:0.8.1-SNAPSHOT'
    shadow 'org.spongepowered:mixin:0.8.1-SNAPSHOT'
}

shadowJar {
    classifier ''
    configurations = [project.configurations.shadow]

    relocate 'org.slf4j', 'org.rutex.org.slf4j'

    manifest.attributes(
            'TweakClass': 'org.spongepowered.asm.launch.MixinTweaker',
            'MixinConfigs': 'mixins.novaws.json',
            'FMLCorePluginContainsFMLMod': 'true',
            'ForceLoadAsMod': 'true',
    )

}

processResources {
    // todo do it less hardcoded
    inputs.property "version", "1.0.0"
    inputs.property "mcversion", "1.12.2"

    from(sourceSets.main.resources.srcDirs) {
        include "mcmod.info"
        expand "version": "1.0.0", "mcversion": "1.12.2"
    }

    from(sourceSets.main.resources.srcDirs) {
        exclude "mcmod.info"
    }
}

reobf {shadowJar {}}

artifacts {
    archives shadowJar
}
 

will0376

Токсичная личность
2,058
55
572
можно, но у тебя нет старого конфига для граблей. Ставь для идеи плагин майн-дева(гугли) и он сам сделает что надо.
Если коротко - тебе нужен фг2, ибо на 1.12(последние версии форджи, начиная с 51) фг3 какой-то странный...(я хз с чем это связано, но на нём много чего не пашет, ну либо я рукожоп)
 
Плагин стоит, создавал в ручную. Прописал его в билд - разницы 0. Не вижу никаких кнопок для настроек версий. Поменял мдк в ручную на 51ый, проблема не убралась. Ниже не берет. Лажа на лаже в общем...
з.ы. 55тый тоже не грузит ничего.
Это точно не проблема кривой настройки градла?
 

will0376

Токсичная личность
2,058
55
572
так нет кнопки смены версии ._. ставь 48 с плагина и переноси сурсы
Это точно не проблема кривой настройки градла?
возможно и грабли. но куда быстрее поставить ФГ2 чем мучаться с ФГ3
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Ты говоришь игре про то что у тебя оказывается есть миксины только в атрибутах джарника, а когда запускаешь из IDE никакого джарника нету.
Надо добавить это в minecraft.runs.client|server|шотамещё:
Код:
args += [
        '--mixin', "${project.name}.mixins.json".toString(),
        '--tweakClass', 'org.spongepowered.asm.launch.MixinTweaker'
]
По крайней мере это у меня так в 1.12.2, в более поздних версиях миксин-плагин должен сам это делать по идее

Ещё можно и вот это по желанию:
Код:
properties 'mixin.hotSwap': 'true', 'mixin.debug': 'true'

Убедись что в сгенерированых раннерах в идее эти аргументы не сдублированы, а то была у меня одна бессонная ночь попыток починить наинепонятнейшую ошибку которая была в результате тупо от того, что оно какого-то хрена записало эти агрументы по два раза.

В 1.12 у фг3 всё ещё сломаны ресурсы (потому не видит mcmod.info и не увидит текстурки/локализации), а в след версиях вроде наконец-то починили.
Вообще по идее ты добавляешь вот такое в раннеры и оно знает что из этих сурссетов надо брать и ресурсы тоже но в 1.12.2 оно не работает крч:
Код:
mods {
    mymodname {
        source sourceSets.main
        // и ещё к примеру source sourceSets.api
    }
}

Я решил так (просто где-то на дно build.gradle дописываешь):
Код:
afterEvaluate {
    tasks.findByName('prepareRuns')?.doLast {
        copy {
            from 'build/resources/main'
            into 'build/classes/java/main'
        }
    }
}

В dependencies у тебя нету annotationProcessor "org.spongepowered:mixin:${mixinVersion}:processor", я не уверен конечно насколько оно обязательно, учитывая что у тебя финальный джарник рабочий.

Других отличий от моего вроде-бы рабочего build.gradle на 1.12.2 с фг3 и миксинами я на глазок не нашёл.

ps Советую убрать нафиг "forge.logging.markers" а то лишний бесполезный спам консоли влёгкую забивающий буфер интеллиджи

ps2 кстати я в раннерах ещё так делаю:
Код:
args += [
        '--username', 'necauqua',
        '--uuid', 'f98e9365-2c52-48c5-8647-6662f70b7e3d',
]
 
Самое смешное, что - нет.
Запуск твикеров у меня прописан не в аргументах билда а отдельной конфигурации запуска.
Миксины грузятся автоматом в classpath при запуске с runClient. Оно падает именно при попытке распарсить конфиг и не может ( прямо как фордж ) притом что он есть и на продакшене оно не то что бы работает а летает как родное. И это единственное с чем не могу разобраться. Все остальное в полном порядке.
Вот кусок краша который это подтверждает:

Java:
[13:22:31] [main/INFO] [LaunchWrapper]: Calling tweak class org.spongepowered.asm.launch.MixinTweaker
[13:22:31] [main/DEBUG] [mixin]: Processing prepare() for PlatformAgent[MixinPlatformAgentDefault:ContainerHandleURI(file:/C:/Users/noname/.gradle/caches/modules-2/files-2.1/org.spongepowered/mixin/0.8.1-SNAPSHOT/4c3f34c63a02e41c66ff6d97f0ed10f76a7ea9b0/mixin-0.8.1-SNAPSHOT.jar)]
[13:22:31] [main/DEBUG] [mixin]: Registering mixin config: novaws.refmap.json
Exception in thread "main" [13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]: java.lang.reflect.InvocationTargetException
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]:     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]:     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]:     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]:     at java.lang.reflect.Method.invoke(Method.java:498)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]:     at net.minecraftforge.legacydev.Main.start(Main.java:86)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]:     at net.minecraftforge.legacydev.MainClient.main(MainClient.java:29)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1061]: Caused by: org.spongepowered.asm.launch.MixinInitialisationError: Error initialising mixin config novaws.refmap.json
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1061]:     at org.spongepowered.asm.mixin.transformer.Config.create(Config.java:153)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1061]:     at org.spongepowered.asm.mixin.Mixins.createConfiguration(Mixins.java:100)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1061]:     at org.spongepowered.asm.mixin.Mixins.addConfiguration(Mixins.java:87)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1061]:     at org.spongepowered.asm.launch.platform.MixinPlatformManager.addConfig(MixinPlatformManager.java:263)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1061]:     at org.spongepowered.asm.launch.platform.MixinPlatformManager.prepare(MixinPlatformManager.java:170)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1061]:     at org.spongepowered.asm.launch.MixinBootstrap.doInit(MixinBootstrap.java:184)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1061]:     at org.spongepowered.asm.launch.MixinTweaker.acceptOptions(MixinTweaker.java:55)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1061]:     at net.minecraft.launchwrapper.Launch.launch(Launch.java:114)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1061]:     at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
[13:22:31] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1061]:     ... 6 more
[13:22:31] [main/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:643]: Caused by: java.lang.IllegalArgumentException: The specified resource 'novaws.refmap.json' was invalid or could not be read
[13:22:31] [main/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:643]:     at org.spongepowered.asm.mixin.transformer.MixinConfig.create(MixinConfig.java:1082)
[13:22:31] [main/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:643]:     at org.spongepowered.asm.mixin.transformer.Config.create(Config.java:148)
[13:22:31] [main/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:643]:     ... 14 more

Process finished with exit code 1

После добавления в раннеры и afterEvaluate грузит мсмод.инфо, но миксины все так же не хочет.
Хрень в общем все, буду работать на проде)))
Спасибо за подсказки.
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Ну в том build.gradle что ты показал у тебя в конфигурации запуск твикеров не прописан, откуда мне знать что ты там вручную где-то прописал 🤷
Всё-таки скорее не может найти рефмап, стоп а annotationProcessor ты тоже добавил? Это он по идее этот файл генерирует
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Эм, да я собственно тоже без наезда?
или там ответа на наезд
я давно вообще текстом на русском не общался, а person_shrugging вообще у меня на бинде.

Жаль что не работает в таком случае, у меня (почти, не могу hotswap починить) всё работает (классика), жду когда всё доделаю на 1.12 чтобы переехать повыше.

прописан не в аргументах билда а отдельной конфигурации запуска
Ну в этих раннерах в фг3 в том то и прикол что можно прямо в build.gradle прописывать аргументы, JVM аргументы и env-проперти для сгенерированных в genIntellijRuns конфигураций, и даже добавлять новые конфигурации, к примеру у меня есть client2 с другим юзернеймом чтобы тестить в два акка на сервере
 
попробуй в конец build.gradle дописать


apply plugin: 'idea'
idea {
module {
inheritOutputDirs = true
}
}
subprojects {
apply plugin: 'idea'
}

task prepareAssets(type: Copy) {
group = 'build'
from project.file('src/main/resources')
into project.file('build/classes/java/main')
}

classes.dependsOn(prepareAssets)
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Чувак, ты как-бы опоздал слегка

Конкретно то что ты предложил до тебя уже предложили, и оно даже частично помогло, но полностью проблему автора не решило
 
7,099
324
1,509
from project.file('src/main/resources')
into project.file('build/classes/java/main')
Это крайне плохая идея. Из-за этого могут возникать ошибки дубликации ресурсов при сборке. И в логе не будет указано ни малейшего намека на проблемную строчку в билд-скрипте
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
В 1.12 и фг3 без этого никак, у меня кстати проблем (больше нормы) не возникало.
Поддержку того, каким образом ресурсы указываются в фг3 в фордж завезли только в 1.13, технически фг3 не поддерживает 1.12 так-то
 
Сверху