62 lines
1.8 KiB
Java
62 lines
1.8 KiB
Java
package mekanism.common;
|
|
|
|
import java.util.List;
|
|
|
|
import mekanism.common.recipe.RecipeHandler;
|
|
import mekanism.common.recipe.RecipeHandler.Recipe;
|
|
import mekanism.common.recipe.inputs.MachineInput;
|
|
import mekanism.common.recipe.machines.MachineRecipe;
|
|
import cpw.mods.fml.common.Mod.EventHandler;
|
|
import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage;
|
|
|
|
public class IMCHandler
|
|
{
|
|
@EventHandler
|
|
public void onIMCEvent(List<IMCMessage> messages)
|
|
{
|
|
for(IMCMessage msg : messages)
|
|
{
|
|
if(msg.isNBTMessage())
|
|
{
|
|
try {
|
|
boolean found = false;
|
|
|
|
for(Recipe type : Recipe.values())
|
|
{
|
|
if(msg.key.equalsIgnoreCase(type.getRecipeName() + "Recipe"))
|
|
{
|
|
MachineInput input = type.createInput(msg.getNBTValue());
|
|
|
|
if(input != null && input.isValid())
|
|
{
|
|
MachineRecipe recipe = type.createRecipe(input, msg.getNBTValue());
|
|
|
|
if(recipe != null && recipe.recipeOutput != null)
|
|
{
|
|
RecipeHandler.addRecipe(type, recipe);
|
|
Mekanism.logger.info("[Mekanism] " + msg.getSender() + " added recipe of type " + type.getRecipeName() + " to the recipe list.");
|
|
}
|
|
else {
|
|
Mekanism.logger.error("[Mekanism] " + msg.getSender() + " attempted to add recipe of type " + type.getRecipeName() + " with an invalid output.");
|
|
}
|
|
}
|
|
else {
|
|
Mekanism.logger.error("[Mekanism] " + msg.getSender() + " attempted to add recipe of type " + type.getRecipeName() + " with an invalid input.");
|
|
}
|
|
|
|
found = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!found)
|
|
{
|
|
Mekanism.logger.error("[Mekanism] " + msg.getSender() + " sent unknown IMC message with key '" + msg.key + ".'");
|
|
}
|
|
} catch(Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|