This library adds a couple of classes to facilitate communication between fabric mods. These classes are the FabricCommunicator and the FabricCommunication. Both are found in the com.azuredrake.fabriccom package.
for your build.gradle
Maven Repo: https://raw.github.com/curin/fabriccom/maven/
Dependency Line: modImplementation "com.azuredrake:fabriccom:{Version}"
FabricCommunication is simply a data structure to contain messages sent between mods.
FabricCommunicator is what does the real work.
It has a total of 3 Functions:
- RegisterReciever(modID:String, reciever:Function<FabricCommunication, Integer>)
- Send(modID:string, recipient:String, message:String, data:Object)
- SendGlobal(modID:string, message:String, data:Object)
Send and SendGlobal send to one and all receivers respectively. FabricComs registers one reciever under the id test which will simply output the FabricCommunication to the console. This is useful if you want to test to make sure your Send is working properly. It will also output your Communication if you use sendglobal. If the receiver for your message does not exist, the mod will simply output a warning and the message will be lost. It is important to note that you should always be prepared in your receiver to be sent messages which may not be specifically targeted at you and handle them properly.
Both of the send methods have two overrides one without data, and one without data, message, or modID, but a FabricCommunication instead.
RegisterReceiver is important as it is the method that allows you to receive communications. It is suggested to run this in your modInitializer's constructor (all mods construct prior to initialize running)
My hope is that this will make it easier for mods to communicate in ways which are more stable even if the mod they are looking for is not present.