Jump to content

[1.8 and 1.9] Wanting to make a child mod


NovaViper

Recommended Posts

Hey, I'm in the middle of making my mod and I finally decided that it was a good idea to make a parent mod over my main ones for listing all of the registries and loading libraries. Is it possible and/or a good idea to create a parent API mod from where I'm now? If so, should I develop that mod WITHIN the same IntelliJ project where I am developing the main mod?

 

 

The Source for my mod is here

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

What's with ppl and APIs lately.

 

API is supposed to make at least ONE person's life easier. That one person can be you or other modder that requested API to your mod to work with.

 

There is no point in making API "because I want to".

Creating API is a DECLARATION that not a single method will be changed in nearest (best would be forever) future.

 

Making API because it "is cool" and then changing stuff around will not be anything more than pain in the ass.

 

Questions then:

1. Do you have ppl requesting API from you?

2. If not, do you at least have modders interested in working with your mod?

3. Do you plan on modulating your mod? Modulating = making base and child mods that each does different stuff and works fully ALONE.

Even if you plan on modulating - do you expect outcome to actually be used separately? If not - why would you want it?

 

And to answer questions:

* No it's not good idea to make APIs if they are not needed. API is a declaration of not-changing code, just that.

* Making parent and childs mods need to have good reason - modularity is one of them, do you need/want that?

* Yes, you can develop all mods in one workspace, just NEVER cross-reference them without making (@Mod) dependency.

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

I do plan on making more child mods off of this API in order to make loading in items and blocks (and many other stuff too) easier instead of copying the same methods about 7,000 times and then end up running into a problem where I have to edit everything or completely start over from scratch.

 

The case goes with my previous mod, Zero Quest; I had created a few classes specifically for using adding registries and texture libraries. Once I given up on the mod (I hadn't worked on it in nearly a year so I decided to start over with a new one), I had to copy over those exact same methods over into the new one (And make changes on it for the different minecraft versions).

 

I feel like making an API for my registry classes would make things alot easier for me for the mod I'm working on now and the ones I plan on making later over the years.

 

And I didn't know that many people make APIs, I thought I was the only one who thought about it ._.

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

API is supposed to make at least ONE person's life easier.

 

Well, yeah, that is a valid argument.

 

Make a base mod with registries and lib methods.

Make more mods dependent to it.

 

You might be interested in using Forge Registry API (1.9+), but it is not good for everything.

 

Yes, you can develop all mods in one workspace, just NEVER cross-reference them without making (@Mod) dependency.

 

Hint: Use different packages and exclude/include them from workspace to check if they cross-ref each other (parent should not touch child). There might be better ways, this is what I am doing.

 

Just a note:

What you are describing is a library.

API is a "visible part of library". Still - who cares which word one uses, we mean same thing (but I wanted to note difference).

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

I started making the packages for the API mod but I got a question about it. With the mcmod.info, how do I make one for the second mod since they are in the same project?

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

I don't think you can do that easily (I yet have to figure it out). Hard way would be altering Forge's mod-loading process.

 

I suggest adding mcmod.info to .jars after you build them. How hard is that.

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

I got another question.. do you use Github with IntelliJ? I am having some major issues with commiting. Also, I'm trying to make a reference of my log manager and I want to be able to interchange the name of the mod to display where it shows the log for so I don't have to write the name of the mod I want it to display whenever I send a message to the console

 

So far I did something like this:

package novaviper.cryolib.common.helper;

import net.minecraftforge.fml.relauncher.FMLRelaunchLog;
import novaviper.tetracraft.lib.ModReference;
import org.apache.logging.log4j.*;

/**
* Created by NovaViper on 5/10/2016.
* Class Purpose: Helper class for logs
*/

public class LogHelper {

public static FMLRelaunchLog instance = FMLRelaunchLog.log;
private static String name;

private static void log(String modName, Level level, String format, Object... data) {
	FMLRelaunchLog.log(modName, level, format, data);
}

public static void registerName(String modName){name = modName;}

public static void error(String format, Object... data) {
	log(name, Level.ERROR, format, data);
}

public static void fatal(String format, Object... data) {
	log(name, Level.FATAL, format, data);
}

public static void warn(String format, Object... data) {
	log(name, Level.WARN, format, data);
}

public static void info(String format, Object... data) {
	log(name, Level.INFO, format, data);
}

public static void debug(String format, Object... data) {
	log(name, Level.DEBUG, format, data);
}

public static void trace(String format, Object... data) {
	log(name, Level.TRACE, format, data);
}

public static void all(String format, Object... data) {
	log(name, Level.ALL, format, data);
}
}

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

FMLPreInitializationEvent#getModLog

gives you a logger for your ModID. Or you can use

LogManger.getLogger

(from package

org.apache.logging.log4j

) to obtain a logger with any name you like.

 

Thanks for that tip but what I'm trying to do is have the parent mod call logging information when the child one uses one of the registry methods and print something like this:

CryogenicLib::Tetracraft

. Now within TetraCraft, it will use what you said

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

Odd, it doesn't show that TetraCraft is calling it, it just shows that Cryogenic Library is

"C:\Program Files\Java\jdk1.8.0_77\bin\java" -Didea.launcher.port=7535 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_77\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_77\jre\lib\rt.jar;C:\Users\NovaPC\Dropbox\MinecraftMods\TetraCraft\1.9\classes\production\1.9_main;C:\Users\NovaPC\.gradle\caches\minecraft\deobfedDeps\compileDummy.jar;C:\Users\NovaPC\.gradle\caches\minecraft\deobfedDeps\providedDummy.jar;C:\Users\NovaPC\.gradle\caches\minecraft\net\minecraftforge\forge\1.9-12.16.1.1896\snapshot\20160508\forgeSrc-1.9-12.16.1.1896.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\oshi-project\oshi-core\1.1\9ddf7b048a8d701be231c0f4f95fd986198fd2d8\oshi-core-1.1.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna\3.4.0\803ff252fedbd395baffd43b37341dc4a150a554\jna-3.4.0.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\platform\3.4.0\e3f70017be8100d3d6923f50b3d2ee17714e9c13\platform-3.4.0.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.6\306816fb57cf94f108a43c95731b08934dcae15c\jopt-simple-4.6.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.23.Final\294104aaf1781d6a56a07d561e792c5d0c95f45\netty-all-4.0.23.Final.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.22\afaa8f6df976fcb5520e76ef1d5798c9e6b5c0b2\authlib-1.5.22.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.8.7\b624280016616bb56cc6c30282684322edc7e7eb\realms-1.8.7.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.12\111e7bea9c968cdb3d06ef4632bf7ff0824d0f36\launchwrapper-1.12.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\jline\jline\2.13\2d9530d0a25daffaffda7c35037b046b627bb171\jline-2.13.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.4-nightly-20150209\697517568c68e78ae0b4544145af031c81082dfe\lwjgl-2.9.4-nightly-20150209.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.4-nightly-20150209\d51a7c040a721d13efdfbd34f8b257b2df882ad0\lwjgl_util-2.9.4-nightly-20150209.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.5.2\79846ba34cbd89e2422d74d53752f993dcc2ccaf\vecmath-1.5.2.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.fusesource.jansi\jansi\1.11\655c643309c2f45a56a747fda70e3fadf57e9f11\jansi-1.11.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\2.0.1\516c03b21d50a644d538de0f0369c620989cd8f0\jsr305-2.0.1.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.4-nightly-20150209\b84d5102b9dbfabfeb5e43c7e2828d98a7fc80e0\lwjgl-platform-2.9.4-nightly-20150209-natives-windows.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.4-nightly-20150209\931074f46c795d2f7b30ed6395df5715cfd7675b\lwjgl-platform-2.9.4-nightly-20150209-natives-linux.jar;C:\Users\NovaPC\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.4-nightly-20150209\bcab850f8f487c3f4c4dbabde778bb82bd1a40ed\lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar;C:\Users\NovaPC\.gradle\caches\minecraft\net\minecraftforge\forge\1.9-12.16.1.1896\start;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.1\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain GradleStart
2016-05-10 10:01:48,514 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
2016-05-10 10:01:48,524 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
[10:01:48] [main/INFO] [GradleStart]: Extra: []
[10:01:49] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/NovaPC/.gradle/caches/minecraft/assets, --assetIndex, 1.9, --accessToken{REDACTED}, --version, 1.9, --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
[10:01:49] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[10:01:49] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[10:01:49] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
[10:01:49] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
[10:01:49] [main/INFO] [FML]: Forge Mod Loader version 12.16.1.1896 for Minecraft 1.9 loading
[10:01:49] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_77, running on Windows 10:amd64:10.0, installed at C:\Program Files\Java\jdk1.8.0_77\jre
[10:01:49] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
[10:01:50] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
[10:01:50] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.fml.relauncher.FMLCorePlugin
[10:01:50] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
[10:01:50] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[10:01:50] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[10:01:50] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
[10:01:50] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[10:01:50] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[10:01:50] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[10:01:52] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
[10:02:04] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
[10:02:04] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[10:02:04] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[10:02:06] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
[10:02:06] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker
[10:02:06] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker
[10:02:06] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
2016-05-10 10:02:09,168 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
2016-05-10 10:02:09,285 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
2016-05-10 10:02:09,289 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
[10:02:10] [Client thread/INFO]: Setting user: Player366
[10:02:24] [Client thread/INFO]: LWJGL Version: 2.9.4
[10:02:28] [Client thread/INFO] [sTDOUT]: [net.minecraftforge.fml.client.SplashProgress:start:200]: ---- Minecraft Crash Report ----
// Everything's going to plan. No, really, that was supposed to happen.

Time: 5/10/16 10:02 AM
Description: Loading screen debug info

This is just a prompt for computer specs to be printed. THIS IS NOT A ERROR


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

-- System Details --
Details:
Minecraft Version: 1.9
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_77, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 199009248 bytes (189 MB) / 450887680 bytes (430 MB) up to 1659371520 bytes (1582 MB)
JVM Flags: 0 total; 
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: 
Loaded coremods (and transformers): 
GL info: ' Vendor: 'ATI Technologies Inc.' Version: '4.5.13431 Compatibility Profile Context 16.150.2401.1002' Renderer: 'AMD Radeon(TM) R5 Graphics'
[10:02:28] [Client thread/INFO] [FML]: MinecraftForge v12.16.1.1896 Initialized
[10:02:28] [Client thread/INFO] [FML]: Replaced 231 ore recipes
[10:02:30] [Client thread/INFO] [FML]: Found 0 mods from the command line. Injecting into mod discoverer
[10:02:30] [Client thread/INFO] [FML]: Searching C:\Users\NovaPC\Dropbox\MinecraftMods\TetraCraft\1.9\run\mods for mods
[10:02:43] [Client thread/INFO] [FML]: Forge Mod Loader has identified 5 mods to load
[10:02:44] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, cryolib, tetracraft] at CLIENT
[10:02:44] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, cryolib, tetracraft] at SERVER
[10:02:46] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Cryogenic Library, FMLFileResourcePack:TetraCraft
[10:02:47] [Client thread/INFO] [FML]: Processing ObjectHolder annotations
[10:02:47] [Client thread/INFO] [FML]: Found 418 ObjectHolder annotations
[10:02:47] [Client thread/INFO] [FML]: Identifying ItemStackHolder annotations
[10:02:47] [Client thread/INFO] [FML]: Found 0 ItemStackHolder annotations
[10:02:47] [Client thread/INFO] [FML]: Configured a dormant chunk cache size of 0
[10:02:47] [Forge Version Check/INFO] [ForgeVersionCheck]: [cryolib] Starting version check at https://raw.githubusercontent.com/NovaViper/TetraCraft/master/update.json
[10:02:47] [Client thread/INFO] [Cryogenic Library::FMLMod:cryolib{0.0.1}]: Event [%s] has been registered
[10:02:48] [Client thread/INFO] [Cryogenic Library::FMLMod:cryolib{0.0.1}]: Item [%s] has been registered
[10:02:48] [Client thread/INFO] [Cryogenic Library::FMLMod:cryolib{0.0.1}]: Item [%s] has been registered
[10:02:48] [Client thread/INFO] [Cryogenic Library::FMLMod:cryolib{0.0.1}]: Item [%s] has been registered
[10:02:48] [Client thread/INFO] [Cryogenic Library::FMLMod:cryolib{0.0.1}]: Block [%s] has been registered
[10:02:48] [Client thread/INFO] [Cryogenic Library::FMLMod:cryolib{0.0.1}]: Entity Property [%s] has been registered
[10:02:48] [Client thread/INFO] [Cryogenic Library::FMLMod:cryolib{0.0.1}]: Event [%s] has been registered
[10:02:48] [Client thread/INFO] [Cryogenic Library::FMLMod:cryolib{0.0.1}]: Event [%s] has been registered
[10:02:48] [Client thread/INFO] [FML]: Applying holder lookups
[10:02:48] [Client thread/INFO] [FML]: Holder lookups applied
[10:02:48] [Client thread/INFO] [FML]: Injecting itemstacks
[10:02:48] [Client thread/INFO] [FML]: Itemstack injection complete
[10:02:51] [Forge Version Check/INFO] [ForgeVersionCheck]: [cryolib] Found status: OUTDATED Target: 1.0.0
[10:02:51] [Forge Version Check/INFO] [ForgeVersionCheck]: [tetracraft] Starting version check at https://raw.githubusercontent.com/NovaViper/TetraCraft/master/update.json
[10:02:51] [Forge Version Check/INFO] [ForgeVersionCheck]: [tetracraft] Found status: UP_TO_DATE Target: null
[10:02:51] [Forge Version Check/INFO] [ForgeVersionCheck]: [Forge] Starting version check at http://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json
[10:02:51] [Forge Version Check/INFO] [ForgeVersionCheck]: [Forge] Found status: OUTDATED Target: 12.16.1.1898
[10:03:09] [sound Library Loader/INFO]: Starting up SoundSystem...
[10:03:09] [Thread-7/INFO]: Initializing LWJGL OpenAL
[10:03:09] [Thread-7/INFO]: (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
[10:03:10] [Thread-7/INFO]: OpenAL initialized.
[10:03:10] [sound Library Loader/INFO]: Sound engine started
[10:03:35] [Client thread/INFO] [FML]: Max texture size: 16384
[10:03:35] [Client thread/INFO]: Created: 16x16 textures-atlas
[10:03:42] [Client thread/INFO] [FML]: Injecting itemstacks
[10:03:42] [Client thread/INFO] [FML]: Itemstack injection complete
[10:03:42] [Client thread/INFO] [FML]: Forge Mod Loader has successfully loaded 5 mods
[10:03:42] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Cryogenic Library, FMLFileResourcePack:TetraCraft
[10:03:54] [Client thread/INFO]: SoundSystem shutting down...
[10:03:54] [Client thread/WARN]: Author: Paul Lamb, www.paulscode.com
[10:03:54] [sound Library Loader/INFO]: Starting up SoundSystem...
[10:03:54] [Thread-9/INFO]: Initializing LWJGL OpenAL
[10:03:54] [Thread-9/INFO]: (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
[10:03:54] [Thread-9/INFO]: OpenAL initialized.
[10:03:55] [sound Library Loader/INFO]: Sound engine started
[10:04:16] [Client thread/INFO] [FML]: Max texture size: 16384
[10:04:17] [Client thread/INFO]: Created: 1024x512 textures-atlas
[10:04:23] [Realms Notification Availability checker #1/INFO]: Could not authorize you against Realms server: Invalid session id

 

--Update--

Another thing I notice, its show showing TetraCraft as a child mod to CryoGenic Library

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

But it doesn't make sense.

Either you want your Mod to be used by more than one other mod, then you need a separate workspace.

Or you want your Mod to be used only by one other mod, then it does not make sense to make 2 mods in the first place.

 

Probably first time I would disagree with d7.

 

At least for me - it is VERY convenient to have my 6 mods in one workspace.

>API (utils, registry, network, item/armour/NPC/skill/effect/attribs/etc. APIs)

>>>Engine (API implementation and RPG environment (like attributes) + config handlers)

>>>>>MedievalRP (name says it all)

>>>>>>>Spell Expansions (those are actually many @Mods, usually merged with each other after some time).

>>>>>FuturisticRP (totally different than Medieval one mod based off same common RP Engine)

>>>>>>>Vehicles Module (additional child mod)

 

Obviously all mods are in their own packages and I just compile them into different .jars and autogenerate mcmod infos.

Saves a lot of compiling and attaching libs from one workspace to another if I'd go with "many workspaces".

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

I do remember making a child mod within the same workspace with the parent one (not sure if I had compiled it or not) but I found it easier to do that, especially now since I'm trying to avoid making way too many workspaces and use up all of my cloud storage (Using Dropbox). Now you may wonder why I'm using a cloud service for my modding; that's because I want to be able to access the workspace on multiple computers without having to completely recreate the workspace, all I have to do is just download the source code and import it into the IDE on the second computer.

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

@Ernio: That's just because you aren't using maven :P

If you are using maven all you need to do to update the dependency mod (with different workspaces) is run gradlew publishToMavenLocal in the library mod.

 

Im not sure if Im using maven. ALso, I dont want to use up too much space in my dropbox

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

Ok guys, my next question is what do I do now? Should I just completely delete the code I made so far (I dont want to do that so..) and just start with a fresh project? Also.. what type of project is best recommended for someone like me, a solo developer, who has different Windows machines and still kinda new to this uploading source and creating APIs for Minecraft Forge? In fact, what kind of builds does the developers of Forge use?

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

If you want to develop on multiple machines the easiest way is to use Git.

When you make a change, push to github (or something similar) and pull on the other machines. Want to introduce a 3rd machine? Sure, just clone the repo, run setupDecompWorkspace and you're good to go.

 

Oh.. *facepalm* I didn't know I could do that with Github. Can I do the same thing with BitBucket?

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

Lol, that is the entire point of git! So multiple people (= multiple workspaces) can work on the same code at the same time. It is a property of Git (GitHub is just a service that hosts a git repo for you). Any git hosting service lets you do this, since it is what makes Git.

 

*Major facepalm* I feel kinda stupid for not realizing this.. No point in keeping the Dropbox now ;-;. Also another thing, I've been having some major issues with commit my source code through IntelliJ and Github Desktop, they both say that whatever i push is conflicting, I tried to merge it but they keep on rejecting my pushes.. that's why I'm triyng BitBucket to see if that works

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

That has nothing to do with Github. Github just hosts your repo for you.

This error means that the code on the remote has changes that are newer than your current version and your local changes conflict with them. You have to resolve these merge conflicts manually, IntelliJ has a very nice GUI for that.

Using BitBucket will not change this property of how git works.

 

Ah, thats why it kept giving me those errors, I thought I had corrupted something with the repository so I ended up starting a new repository

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

Do you have it set as a dependency using required-before?

 

I did required-after like this for TetraCraft:

public static final String dependencies = required-after:cryolib

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

IIRC, "require-after" isn't enough to "hide" the mod in the menu->installed mods listing.  It just declares the load order.

Making the child mod actually show up as a child meant using another tag, but I've forgotten what it is, as I've never used it.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

It's the parent tag but I have configurations that I want to be able to edit in TetraCraft, but since it is hidden under the API, I can't access the in-game configurations

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.