I tried fixing this issue via a pull request, but it was denied, so figured I would at least make a post about the fix, so each of you could implement it locally.
In a nutshell, if you follow these instructions, it tells you to create a mcmod.info file into the /resources folder. However, when you run the Minecraft client from within the IDE, it will not pick up any changes that you do to the mcmod.info file, as it doesn't see the file at all at runtime.
If you modify your module's main build.gradle file, by adding the following lines to the end of the file (after the 'processResources' section), then you can run the client from within your IDE and it will see your changes to the mcmod.info file the next time you start the client up ...
task deleteMcmodInfoFile(type: Delete) {
doLast {
// We need to delete the duplicate mcmod.info file, which is
// created when the Gradle task 'copyMcmodInfoFile' (see below)
// executes, for when we run the client from inside of the
// IDE, before the jar file is created, or else Gradle will
// throw a ZipException ('duplicate entry: mcmod.info').
//
// delete "$buildDir/classes/main/mcmod.info" <-- DOES NOT WORK!
file("$buildDir/classes/main/mcmod.info").delete()
}
}
task copyMcmodInfoFile() {
doLast {
// Copy the in-memory/modified mcmod.info file (see above Gradle
// task 'processResources') into the root folder that the
// net.minecraftforge.fml.common.discovery.DirectoryDiscoverer
// class will search in, when running the client from the IDE.
copy { // A 'type: Copy' task will not run its 'doLast' block!
from("$buildDir/resources/main") {
include 'mcmod.info'
}
into "$buildDir/classes/main"
}
}
}
// Need to hook our before/after tasks up to the 'jar' task ...
jar.dependsOn deleteMcmodInfoFile
jar.finalizedBy copyMcmodInfoFile
I've only tested this with IntelliJ, but I use the Gradle $buildDir variable value, so it should work with Eclipse as well.
Happy New Year all!