MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Compiler un mod avec des libs

    Planifier Épinglé Verrouillé Déplacé Résolu 1.12.x
    1.12.2
    17 Messages 2 Publieurs 1.4k Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • FeedBackF Hors-ligne
      FeedBack @FeedBack
      dernière édition par FeedBack

      @robin4002
      J’ai fait un fatJar

      build.gradle

      buildscript {
          repositories {
              jcenter()
              maven { url = "https://files.minecraftforge.net/maven" }
          }
          dependencies {
              classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
      		classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.1'        
      	}
      }
      
      apply plugin: 'net.minecraftforge.gradle.forge'
      apply plugin: 'com.github.johnrengelman.shadow'
      
      version = "1.0"
      group = "com.drastic.twitchmod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
      archivesBaseName = "TwitchMod"
      
      sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
      compileJava {
          sourceCompatibility = targetCompatibility = '1.8'
      }
      
      minecraft {
          version = "1.12.2-14.23.5.2847"
          runDir = "run"
      
          mappings = "snapshot_20171003"
      }
      
      dependencies {
      	shadow fileTree(dir: 'libs', includes: ['*.jar']) 
      }
      
      reobf {
          shadowJar {}
      }
      
      processResources {
          inputs.property "version", project.version
          inputs.property "mcversion", project.minecraft.version
      
          from(sourceSets.main.resources.srcDirs) {
              include 'mcmod.info'
                      
              expand 'version':project.version, 'mcversion':project.minecraft.version
          }
              
          from(sourceSets.main.resources.srcDirs) {
              exclude 'mcmod.info'
          }
      }
      

      4576a1fa-0ba5-4c03-aaa4-b7eb40208596-image.png

      Ca m’exporte bien mon mod mais j’ai une erreur quand je lance le jeu

      net.minecraftforge.fml.common.LoaderExceptionModCrash: Caught exception from Twitch Mod (twitchmod)
      Caused by: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
      
      1 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par robin4002

        Probablement car tu embarque dans ton jar une lib qui est déjà utilisé par Minecraft mais dans une autre version, d’où la nécessité de relocate.

        EDIT: quoi que; slf4j ne semble pas être utilisé par Minecraft. As-tu bien installé le fichier -all.jar ?

        FeedBackF 1 réponse Dernière réponse Répondre Citer 0
        • FeedBackF Hors-ligne
          FeedBack @robin4002
          dernière édition par

          @robin4002 oui, bien sûr

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002R Hors-ligne
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
            dernière édition par

            Donc essaies de relocate la bibliothèque slf4j

            FeedBackF 1 réponse Dernière réponse Répondre Citer 0
            • FeedBackF Hors-ligne
              FeedBack @robin4002
              dernière édition par FeedBack

              @robin4002 comment je suis censé faire ?
              (je me doute qu’il faut utiliser relocate dans build.gradle mais aucune idée de comment)

              Edit : je tiens à préciser que mes libs sont des .jar dans /libs ^^

              1 réponse Dernière réponse Répondre Citer 0
              • robin4002R Hors-ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                https://imperceptiblethoughts.com/shadow/configuration/relocation/#filtering-relocation

                Ce n’est pas vraiment une bonne pratique d’avoir les libs dans le dossier libs. Utilises plutôt les dépendances via maven.

                FeedBackF 1 réponse Dernière réponse Répondre Citer 0
                • FeedBackF Hors-ligne
                  FeedBack @robin4002
                  dernière édition par

                  @robin4002 merci !
                  J’ai réussi à exporter et le jeu ne crash plus mais j’ai 2 problèmes :

                  J’ai ce magnifique icône sur eclipse ba5c9b22-a2a3-45d0-9465-724eccafbdf2-image.png
                  (ça n’a pas l’air d’influer sur le jeu)

                  Et sur minecraft (hors eclipse), le jeu n’a pas l’air de vouloir charger mes resources 😕

                  Je n’ai pas non plus mettre mes libs via maven car j’ai un crash au lancement si je fais comme ça car gradle ne connait pas la fonction api() nécessaire à ma dépendance

                  buildscript {
                      repositories {
                          jcenter()
                          maven { url = "https://files.minecraftforge.net/maven" }
                  		
                  		maven {
                  			url "https://plugins.gradle.org/m2/"
                  		}
                  		
                  		mavenCentral()
                      }
                      dependencies {
                          classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
                  		classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.3'   
                  	}
                  }
                  
                  apply plugin: 'net.minecraftforge.gradle.forge'
                  apply plugin: 'com.github.johnrengelman.shadow'
                  apply plugin: 'com.github.johnrengelman.plugin-shadow'
                  
                  version = "1.0"
                  group = "com.drastic.twitchmod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
                  archivesBaseName = "TwitchMod"
                  
                  sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
                  compileJava {
                      sourceCompatibility = targetCompatibility = '1.8'
                  }
                  
                  minecraft {
                      version = "1.12.2-14.23.5.2847"
                      runDir = "run"
                  
                      mappings = "snapshot_20171003"
                  }
                  
                  dependencies {
                  	implementation fileTree(dir: 'libs', includes: ['*.jar']) 
                  }
                  
                  import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation
                  
                  task relocateShadowJar(type: ConfigureShadowRelocation) {
                      target = tasks.shadowJar
                      prefix = "twitchmod" // Default value is "shadow"
                  
                  }
                  
                  tasks.shadowJar.dependsOn tasks.relocateShadowJar
                  
                  reobf {
                      shadowJar {}
                  }
                  
                  processResources {
                      inputs.property "version", project.version
                      inputs.property "mcversion", project.minecraft.version
                  
                      from(sourceSets.main.resources.srcDirs) {
                          include 'mcmod.info'
                                  
                          expand 'version':project.version, 'mcversion':project.minecraft.version
                      }
                          
                      from(sourceSets.main.resources.srcDirs) {
                          exclude 'mcmod.info'
                      }
                  }
                  
                  #Mon Sep 14 12:28:28 PDT 2015
                  distributionBase=GRADLE_USER_HOME
                  distributionPath=wrapper/dists
                  zipStoreBase=GRADLE_USER_HOME
                  zipStorePath=wrapper/dists
                  distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip
                  
                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002R Hors-ligne
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                    dernière édition par

                    Ah probablement que le fat jar n’inclut pas les ressources. As-tu déjà vérifié si le dossier assets est présent ou non dans le fat jar ?

                    api c’est pour les versions récentes de gradle, utilises compile à la place.

                    FeedBackF 1 réponse Dernière réponse Répondre Citer 0
                    • FeedBackF Hors-ligne
                      FeedBack @robin4002
                      dernière édition par

                      @robin4002 bonjour,
                      j’ai bien vérifié et mes assets / mcmod.info sont bien dans mon jar

                      Je pense que le problème vient de ForgeGradle car il est déprécié quand on met à jour gradle (ce que j’ai fait pour pouvoir utiliser shadow)

                      Malheureusement, je n’ai aucune idée de comment utiliser ForgeGradle 3.+

                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002R Hors-ligne
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                        dernière édition par

                        C’est presque pareil, base toi sur le mdk de forge 14.23.5.2855

                        FeedBackF 1 réponse Dernière réponse Répondre Citer 0
                        • FeedBackF Hors-ligne
                          FeedBack @robin4002
                          dernière édition par FeedBack

                          @robin4002 d’acc

                          j’ai réussi mais j’ai une erreur quand je fais un gradlew setupDecompWorkspace
                          0788b7fa-655a-43bc-ac7f-4e7493f125de-image.png

                          edit: j’ai trouvé le pourquoi mais pas la solution : le bon lien pour le userdev est : https://maven.minecraftforge.net/net/minecraftforge/forge/1.12.2-14.23.5.2847/forge-1.12.2-14.23.5.2847-userdev.jar
                          mais forge cherche
                          https://maven.minecraftforge.net/net/minecraftforge/forge/1.12.2-14.23.5.2847/forge-1.12.2-14.23.5.2847/userdev3.jar

                          buildscript {
                              repositories {
                                  maven { url = 'https://files.minecraftforge.net/maven' }
                                  maven { url "https://plugins.gradle.org/m2/" }
                                  jcenter()
                                  mavenCentral()
                              }
                              dependencies {
                                  classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true	
                          		classpath 'com.github.jengelman.gradle.plugins:shadow:5.2.0'   
                          	}
                          }
                          
                          plugins{
                              id 'com.github.johnrengelman.shadow' version '5.2.0'
                          }
                          
                          apply plugin: 'net.minecraftforge.gradle'
                          apply plugin: 'eclipse'
                          apply plugin: 'maven-publish'
                          
                          version = "1.0.1"
                          group = "com.drastic.twitchmod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
                          archivesBaseName = "TwitchMod"
                          
                          sourceCompatibility = targetCompatibility = '1.8'
                          
                          compileJava {
                              sourceCompatibility = targetCompatibility = '1.8'
                          }
                          
                          println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))
                          
                          minecraft {
                              mappings channel: 'snapshot', version: '20171003'
                          	
                          	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'
                          
                                      mods {
                                          examplemod {
                                              source sourceSets.main
                                          }
                                      }
                                  }
                          
                                  server {
                                      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'
                          
                                      mods {
                                          examplemod {
                                              source sourceSets.main
                                          }
                                      }
                                  }
                          
                                  data {
                                      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'
                          
                                      args '--mod', 'examplemod', '--all', '--output', file('src/generated/resources/')
                          
                                      mods {
                                          examplemod {
                                              source sourceSets.main
                                          }
                                      }
                                  }
                              }
                          }
                          
                          dependencies {
                          	minecraft 'net.minecraftforge:forge:1.12.2-14.23.5.2847'
                          
                              shadow fileTree(dir: 'libs', include: ['*.jar'])
                          
                          	compile group: 'com.github.twitch4j', name: 'twitch4j', version: '1.3.1'
                          	shadow group: 'com.github.twitch4j', name: 'twitch4j', version: '1.3.1'
                          	shadow group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
                          }
                          
                          import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation
                          
                          task relocateShadowJar(type: ConfigureShadowRelocation) {
                              target = tasks.shadowJar
                              prefix = "twitchmod"
                          
                          }
                          
                          tasks.shadowJar.dependsOn tasks.relocateShadowJar
                          
                          reobf {
                              shadowJar {}
                          }
                          
                          processResources {
                              inputs.property "version", project.version
                              inputs.property "mcversion", project.minecraft.version
                          
                              from(sourceSets.main.resources.srcDirs) {
                                  include 'mcmod.info'
                                          
                                  expand 'version':project.version, 'mcversion':project.minecraft.version
                              }
                                  
                              from(sourceSets.main.resources.srcDirs) {
                                  exclude 'mcmod.info'
                              }
                          }
                          
                          1 réponse Dernière réponse Répondre Citer 0
                          • robin4002R Hors-ligne
                            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                            dernière édition par

                            Ah mince, donc le setup forge gradle 3 pour la 1.12 est cassé 😕

                            La je n’ai pas de solution

                            FeedBackF 1 réponse Dernière réponse Répondre Citer 0
                            • FeedBackF Hors-ligne
                              FeedBack @robin4002
                              dernière édition par

                              @robin4002 on peut fork au pire nn ?

                              FeedBackF 1 réponse Dernière réponse Répondre Citer 0
                              • FeedBackF Hors-ligne
                                FeedBack @FeedBack
                                dernière édition par

                                Bon j’ai trouvé !
                                J’ai réussi avec cette config :

                                buildscript {
                                    repositories {
                                        maven { url = 'https://files.minecraftforge.net/maven' }
                                        maven { url "https://plugins.gradle.org/m2/" }
                                        jcenter()
                                        mavenCentral()
                                		maven { url 'https://jitpack.io' }
                                        gradlePluginPortal()		
                                    }
                                    dependencies {
                                        classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
                                		classpath 'com.github.jengelman.gradle.plugins:shadow:4.0.2'
                                	}
                                }
                                
                                plugins{
                                	id 'java'
                                }
                                
                                apply plugin: 'net.minecraftforge.gradle.forge'
                                apply plugin: 'eclipse'
                                apply plugin: 'com.github.johnrengelman.shadow'
                                
                                version = "1.0.0"
                                group = "com.drastic.twitchmod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
                                archivesBaseName = "TwitchMod-RedSkyll"
                                
                                sourceCompatibility = targetCompatibility = '1.8'
                                
                                compileJava {
                                    sourceCompatibility = targetCompatibility = '1.8'
                                }
                                
                                println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))
                                
                                minecraft {
                                    version = "1.12.2-14.23.5.2847"
                                    runDir = "run"
                                
                                    mappings 'snapshot_20171003'
                                }
                                
                                
                                dependencies {
                                   shadow fileTree(dir: 'libs', include: ['*.jar'])
                                }
                                
                                import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation
                                
                                task relocateShadowJar(type: ConfigureShadowRelocation) {
                                    target = tasks.shadowJar
                                	prefix = "twitchmod"
                                }
                                
                                tasks.shadowJar.dependsOn tasks.relocateShadowJar
                                
                                reobf {
                                	shadowJar {}
                                }
                                
                                processResources {
                                    inputs.property "version", project.version
                                    inputs.property "mcversion", project.minecraft.version
                                
                                    from(sourceSets.main.resources.srcDirs) {
                                        include 'mcmod.info'
                                                
                                        expand 'version':project.version, 'mcversion':project.minecraft.version
                                    }
                                        
                                    from(sourceSets.main.resources.srcDirs) {
                                        exclude 'mcmod.info'
                                    }
                                }
                                
                                #Mon Sep 14 12:28:28 PDT 2015
                                distributionBase=GRADLE_USER_HOME
                                distributionPath=wrapper/dists
                                zipStoreBase=GRADLE_USER_HOME
                                zipStorePath=wrapper/dists
                                distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip
                                
                                1 réponse Dernière réponse Répondre Citer 0
                                • robin4002R robin4002 marked this topic as a question on
                                • robin4002R robin4002 has marked this topic as solved on
                                • robin4002R robin4002 a déplacé ce sujet de Support pour les moddeurs sur
                                • 1 / 1
                                • Premier message
                                  Dernier message
                                Design by Woryk
                                ContactMentions Légales

                                MINECRAFT FORGE FRANCE © 2024

                                Powered by NodeBB