Вылет вместе с JEI в проекте

Версия Minecraft
1.12.2
API
Forge
12
1
0
Всем доброго времени суток! Решил добавить JEI в проект, делал по примеру разработчика ботании (посмотрел build.gradle на github), но про запуске майна происходит вылет. Бьюсь с этой проблемой уже третий день. Прошу помочь, заранее спасибо!

Краш-лог:
Краш-лог:
[19:37:47] [Client thread/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:553]: ---- Minecraft Crash Report ----
// Who set us up the TNT?

Time: 12/23/20 7:37 PM
Description: There was a severe problem during mod loading that has caused the game to fail

net.minecraftforge.fml.common.LoaderExceptionModCrash: Caught exception from Just Enough Items (jei)
Caused by: net.minecraft.util.ReportedException: Registering texture
    at net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:95)
    at net.minecraft.client.renderer.texture.TextureManager.loadTickableTexture(TextureManager.java:52)
    at mezz.jei.startup.ProxyCommonClient.init(ProxyCommonClient.java:114)
    at mezz.jei.JustEnoughItems.init(JustEnoughItems.java:50)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:639)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)
    at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)
    at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)
    at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)
    at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)
    at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)
    at com.google.common.eventbus.EventBus.post(EventBus.java:217)
    at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:219)
    at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:197)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)
    at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)
    at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)
    at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)
    at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)
    at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)
    at com.google.common.eventbus.EventBus.post(EventBus.java:217)
    at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:136)
    at net.minecraftforge.fml.common.Loader.initializeMods(Loader.java:749)
    at net.minecraftforge.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:336)
    at net.minecraft.client.Minecraft.init(Minecraft.java:535)
    at net.minecraft.client.Minecraft.run(Minecraft.java:378)
    at net.minecraft.client.main.Main.main(Main.java:118)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.minecraftforge.legacydev.Main.start(Main.java:86)
    at net.minecraftforge.legacydev.MainClient.main(MainClient.java:29)
Caused by: java.lang.IllegalAccessError: tried to access method net.minecraft.client.renderer.texture.TextureMap.initMissingImage()V from class mezz.jei.gui.textures.JeiTextureMap
    at mezz.jei.gui.textures.JeiTextureMap.loadTexture(JeiTextureMap.java:43)
    at net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:69)
    ... 50 more


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
    Minecraft Version: 1.12.2
    Operating System: Windows 10 (amd64) version 10.0
    Java Version: 1.8.0_231, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 124985472 bytes (119 MB) / 799539200 bytes (762 MB) up to 1886912512 bytes (1799 MB)
    JVM Flags: 0 total;
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP 9.42 Powered by Forge 14.23.5.2854 6 mods loaded, 6 mods active
    States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored

    | State | ID         | Version      | Source                                                             | Signature |
    |:----- |:---------- |:------------ |:------------------------------------------------------------------ |:--------- |
    | LCHI  | minecraft  | 1.12.2       | minecraft.jar                                                      | None      |
    | LCHI  | mcp        | 9.42         | minecraft.jar                                                      | None      |
    | LCHI  | FML        | 8.0.99.99    | forge-1.12.2-14.23.5.2854_mapped_snapshot_20171003-1.12-recomp.jar | None      |
    | LCHI  | forge      | 14.23.5.2854 | forge-1.12.2-14.23.5.2854_mapped_snapshot_20171003-1.12-recomp.jar | None      |
    | LCHI  | compassmod | 1.0.0.0      | main                                                               | None      |
    | LCHE  | jei        | 4.16.1.302   | jei_1.12.2-4.16.1.302_mapped_snapshot_20171003-1.12.jar            | None      |

    Loaded coremods (and transformers):
    GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 457.51' Renderer: 'GeForce GTX 960/PCIe/SSE2'
[19:37:47] [Client thread/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:553]: #@!@# Game crashed! Crash report saved to: #@!@# C:\Users\Danil\Desktop\CompassMod\run\.\crash-reports\crash-2020-12-23_19.37.47-client.txt
AL lib: (EE) alc_cleanup: 1 device not closed

Process finished with exit code -1
build.gradle:
build.gradle:
buildscript {
    repositories {
        maven { url = 'https://files.minecraftforge.net/maven' }
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:3.+'
    }
}
       
apply plugin: 'net.minecraftforge.gradle'
// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
apply plugin: 'eclipse'
apply plugin: 'maven-publish'

version = '1.0'
group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = 'modid'

sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.

minecraft {
    // The mappings can be changed at any time, and must be in the following format.
    // snapshot_YYYYMMDD   Snapshot are built nightly.
    // stable_#            Stables are built at the discretion of the MCP team.
    // Use non-default mappings at your own risk. they may not always work.
    // Simply re-run your setup task after changing the mappings to update your workspace.
    //mappings channel: 'snapshot', version: '20171003-1.12'
    mappings channel: 'snapshot', version: '20171003-1.12'
    // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
   
    accessTransformer = file('src/main/resources/META-INF/compassmod_at.cfg')

    // Default run configurations.
    // These can be tweaked, removed, or duplicated as needed.
    runs {
        client {
            workingDirectory project.file('run')

            // Recommended logging data for a userdev environment
            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'

            // Recommended logging level for the console
            property 'forge.logging.console.level', 'debug'
        }

        server {

            // Recommended logging data for a userdev environment
            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'

            // Recommended logging level for the console
            property 'forge.logging.console.level', 'debug'
        }
    }
}

dependencies {
    // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed
    // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied.
    // The userdev artifact is a special name and will get all sorts of transformations applied to it.
    minecraft 'net.minecraftforge:forge:1.12.2-14.23.5.2854'

    // You may put jars on which you depend on in ./libs or you may define them like so..
    // compile "some.group:artifact:version:classifier"
    // compile "some.group:artifact:version"

    // Real examples
    //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev'  // adds buildcraft to the dev env
    // compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env

    // The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime.
    // provided 'com.mod-buildcraft:buildcraft:6.0.8:dev'

    // These dependencies get remapped to your current MCP mappings
    // deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev'

    // For more info...
    // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
    // http://www.gradle.org/docs/current/userguide/dependency_management.html

}
repositories {
    maven {
        url "https://maven.blamejared.com"
    }
    maven {
        url "https://dvs1.progwml6.com/files/maven"
    }
    maven { url = "http://chickenbones.net/maven" }
}
// Example for how to get properties into the manifest for reading by the runtime..
jar {
    manifest {
        attributes([
            "Specification-Title": "examplemod",
            "Specification-Vendor": "examplemodsareus",
            "Specification-Version": "1", // We are version 1 of ourselves
            "Implementation-Title": project.name,
            "Implementation-Version": "${version}",
            "Implementation-Vendor" :"examplemodsareus",
            "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
        ])
    }
}

// Example configuration to allow publishing using the maven-publish task
// This is the preferred method to reobfuscate your jar file
jar.finalizedBy('reobfJar')
// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing
//publish.dependsOn('reobfJar')

publishing {
    publications {
        mavenJava(MavenPublication) {
            artifact jar
        }
    }
    repositories {
        maven {
            url "file:///${project.projectDir}/mcmodsrepo"
        }
    }
}
dependencies{
    compile "codechicken:CodeChickenLib:${mc_version}-${ccl_version}:deobf"
    compile fg.deobf("mezz.jei:jei_1.12.2:4.16.1.302:api")
    runtime fg.deobf("mezz.jei:jei_1.12.2:4.16.1.302")
}
sourceSets {
    main { output.resourcesDir = output.classesDir }
}
build.properties
build.properties:
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
# This is required to provide enough memory for the Minecraft decompilation process.
org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false
mc_version=1.12.2
ccl_mc_version=1.12.2
ccl_version=3.1.7.+
jei_mc_version=1.12.2
jei_version=4.16.+
 
Последнее редактирование:
Решение
Почему build.properties когда нужно gradle.properties?
Я не могу быть уверенным в своем ответе, но скорее всего тебе нужно сделать access transformer на класс из ошибки java.lang.IllegalAccessError: tried to access method net.minecraft.client.renderer.texture.TextureMap.initMissingImage() Или через рефлексию setAccessible(true)
Почему build.properties когда нужно gradle.properties?
Я не могу быть уверенным в своем ответе, но скорее всего тебе нужно сделать access transformer на класс из ошибки java.lang.IllegalAccessError: tried to access method net.minecraft.client.renderer.texture.TextureMap.initMissingImage() Или через рефлексию setAccessible(true)
 
Пример интеграции с jei можно найти тут
Для добавления jei лучше поместить jar в папку libs.
При этом убедись ,что версия jei совместима с версией forge, которую юзаешь.
 
Трансформер уже был, но ошибка оставалась. Изменил одну строчку, пересобрал проект и всё заработало.
Было:
compassmod_at.cfg:
#rendering
public net.minecraft.client.renderer.RenderItem func_191965_a(Lnet/minecraft/client/renderer/block/model/IBakedModel;I)V # renderModel
public net.minecraft.client.renderer.RenderItem func_191961_a(Lnet/minecraft/client/renderer/block/model/IBakedModel;Lnet/minecraft/item/ItemStack;)V # renderModel

#TextureMap
protected net.minecraft.client.renderer.texture.TextureMap field_94252_e # mapUploadedSprites
protected net.minecraft.client.renderer.texture.TextureMap field_94258_i # listAnimatedSprites
protected net.minecraft.client.renderer.texture.TextureMap field_94249_f # missingImage
protected net.minecraft.client.renderer.texture.TextureMap field_94254_c # basePath
protected net.minecraft.client.renderer.texture.TextureMap field_110574_e # mapRegisteredSprites
protected net.minecraft.client.renderer.texture.TextureMap func_110569_e()V # initMissingImage

#GuiRecipeBook
public net.minecraft.client.gui.recipebook.GuiRecipeBook field_191904_o # width
public net.minecraft.client.gui.recipebook.GuiRecipeBook field_191905_p # height
public net.minecraft.client.gui.recipebook.GuiRecipeBook field_191903_n # xOffset
public net.minecraft.client.gui.recipebook.GuiRecipeBook field_193018_j # recipeTabs

#Ingredient
public net.minecraft.item.crafting.Ingredient field_193371_b # matchingStacks

11 строчка: изменил protected на public

@CKATEPTb , @hohserg спасибо за помощь!
 
Назад
Сверху