Major Tuvok Posted March 3, 2018 Share Posted March 3, 2018 So, first of all why I need this to be the case (perhaps this can be solved via solving my original Problem): I wanted to test my mod with an Minecraft server, so I've tried to start MC Server and Client both in my development enviorment (IntellJ). Unfortunatly this results in an invalid session id... My solution to that was to use an ordinary MC-Forge client and add my mod as a jar to its mod folder. So far I didn't have any Proplems, but as soon as I tried to connect, I got an Mod-rejection error: My versions apperntly aren't the same... So I looked at both logs and found these strange differences: Normal Forge Client, Mod linked as jar: version is ok (and as expected) [main/WARN] [spellcraft/]: Mod spellcraft is missing the required element 'version' and a version.properties file could not be found. Falling back to metadata version 0.2.1.109 Development Forge Server: somehow using unexpanded version ${version} [Server thread/WARN] [spellcraft]: Mod spellcraft is missing the required element 'version' and a version.properties file could not be found. Falling back to metadata version ${version} Apperently Using a Development Forge Client leads to the same unexpanded version. Here's the Server side Mod-rejection... [12:57:41] [User Authenticator #1/INFO]: UUID of player Major_Tuvok is ------------I don't want to show my UUID-------------- [12:57:41] [Netty Server IO #1/INFO] [FML]: Client protocol version 2 [12:57:41] [Netty Server IO #1/INFO] [FML]: Client attempting to join with 8 mods : [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected] [12:57:41] [Netty Server IO #1/INFO] [FML]: Rejecting connection CLIENT: [FMLMod:spellcraft{${version}}] [12:57:41] [Netty Server IO #1/ERROR] [FML]: Network Disconnect: Mod rejections [FMLMod:spellcraft{${version}}] [12:57:41] [Server thread/INFO]: Major_Tuvok lost connection: Mod rejections [FMLMod:spellcraft{${version}}] [12:57:41] [Server thread/INFO]: Major_Tuvok left the game And my Build.gradle (I already tried to force processrecources task by simply adding it right before it is declared, didn't help): buildscript { repositories { jcenter() maven { url = "http://files.minecraftforge.net/maven" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' } } apply plugin: 'net.minecraftforge.gradle.forge' apply plugin: 'java' //Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. if ( !project.hasProperty('mod_pgroup') || !project.hasProperty('mod_id') ) { throw new Exception("Missing Mod-Properties!"); } if ( !project.hasProperty('ver_forge') || !project.hasProperty('ver_mc')) { println "missing Minecraft Version!" } if ( !project.hasProperty('ver_mappings') ) { println "missing Mappings Version!" } if ( !project.hasProperty('ver_major_mod') || !project.hasProperty('ver_major_api') || !project.hasProperty('ver_minor_api') || (System.getenv('BUILD_NUMBER')==null && !project.hasProperty('ver_build'))) { println "missing Project Version!" } else if (System.getenv('BUILD_NUMBER')==null) { println "Cannot access Build Number!" } minecraft { version = "1.12.2-14.23.2.2611" if (project.hasProperty('ver_mc') && project.hasProperty('ver_forge')) { version = "${ver_mc}-${ver_forge}" } runDir = "run" // 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 = "snapshot_20180201" if (project.hasProperty('ver_mappings')) { mappings = "${ver_mappings}" } // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. } String getVersion() { if ( !project.hasProperty('ver_major_mod') || !project.hasProperty('ver_major_api') || !project.hasProperty('ver_minor_api') || (System.getenv('BUILD_NUMBER')==null && !project.hasProperty('ver_build'))) { return "CUSTOM_BUILD"; } String res = "${ver_major_mod}.${ver_major_api}.${ver_minor_api}." if (System.getenv('BUIlD_NUMBER')!=null) { ver_build = System.getenv('BUIlD_NUMBER') } else { ver_build = (ver_build.toInteger()+1).toString() } res+=ver_build ver_code = res; return res; } version = getVersion() group="${mod_pgroup}.${mod_id}" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "${mod_id}" sourceCompatibility = targetCompatibility = "1.8" // Need this here so eclipse task generates correctly. compileJava { sourceCompatibility = targetCompatibility = "1.8" } dependencies { // 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' //compile 'build/libs/Mekanism-1.11.2-9.3.4.313' // the deobf configurations: 'deobfCompile' and 'deobfProvided' are the same as the normal compile and provided, // except that these dependencies get remapped to your current MCP mappings //deobfCompile 'com.mod-buildcraft:buildcraft:6.0.8:dev' //deobfProvided '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 } processResources { // this will ensure that this task is redone when the versions change. inputs.property "version", project.version inputs.property "mcversion", project.minecraft.version // replace stuff in mcmod.info, nothing else from(sourceSets.main.resources.srcDirs) { include 'mcmod.info' // replace version and mcversion expand 'version':project.version, 'mcversion':project.minecraft.version } // copy everything else except the mcmod.info from(sourceSets.main.resources.srcDirs) { exclude 'mcmod.info' } } jar { classifier = '' from sourceSets.main.output from sourceSets.api.output manifest.mainAttributes( "Built-By": System.getProperty('user.name'), "Created-By": "${System.getProperty('java.vm.version')} + (${System.getProperty('java.vm.vendor')})", "Implementation-Title": project.name, "Implementation-Version": project.version, "Built-On": "${ver_mc}-${ver_forge}" ) } Before anyone asks: I know that the toInteger Method doesn't increment the version saved in gradle.properties... I'm going to change that after this issue has been solved. And my gradle.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=-Xmx6G #version ver_java=1.8 ver_code=1.12.2-0.2.1.109 ver_major_mod=0 ver_major_api=2 ver_minor_api=1 ver_build=108 ver_forge=14.23.2.2611 ver_mc=1.12.2 ver_mappings=snapshot_20180201 #mod mod_pgroup=mt.mcmods mod_id=spellcraft Any help would be greatly appreciated... Quote Link to comment Share on other sites More sharing options...
Major Tuvok Posted March 3, 2018 Author Share Posted March 3, 2018 I have to add: I don't know why this suddendly popped up: the last time I looked at my mod's ingame version (about one month ago) It was ok... The only thing I changed since than was changeing my forge and mappings version Quote Link to comment Share on other sites More sharing options...
LexManos Posted March 3, 2018 Share Posted March 3, 2018 Yes, this is how build scripts work. They don't replace things in the original source so that it doesn't pollute your code. To solve your original issue, either login to a valid account on the client. GradleStart supports --username and --password. Or just edit your dev server's settings.properites to turn offline mode on... Quote I do Forge for free, however the servers to run it arn't free, so anything is appreciated. Consider supporting the team on Patreon Link to comment Share on other sites More sharing options...
Major Tuvok Posted March 4, 2018 Author Share Posted March 4, 2018 thanke you, using an acceptable Username works. although I seem to be doing sth. wrong when setting online mode to false because I'm unable to connect if that's the case... (I didn't look into that yet-I'm not used to working with mc server configs...) I've created a very dirty workaround (it bypasses to some extend the standard processResources) which provides me with correct versions in dev enviorment. def modinfoFile = 'src/main/resources/mcmod.info' def tempDir = 'build/tmp/modifiedSources' def classesDir = 'classes/production/Spellcraft_-_MC_14.23.2.2611_main' def buildDir = 'build/resources/main' def versionFileName = 'mcmod.info' def tempFile = tempDir+'/'+versionFileName compileJava.doFirst { copy { from(modinfoFile) into(tempDir) } ant.replace(file: tempFile, token: '${version}', value: project.version) ant.replace(file: tempFile, token: '${mcversion}', value: project.minecraft.version) } compileJava.doLast { copy { from(tempFile) into(classesDir) } copy { from(tempFile) into(buildDir) } } Using my dirty workaround along with a correct username and online-mode=true in the server.properties file works as well as setting it to false (whilst using that workaround, I didn't try without it)... (It seems like it does... I apperntly have some kind of Packet registration Problem(I seem to accidentally try to load WorldClient on the Server?!?) which I simply workaround by disabling any serverside registration at the moment, so that I can't completly connect without the game crashing) Again: Thank you This topic can be closed now (If I find how to do that myself, I'll close it myself) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.