Mekanism-tilera-Edition/src/main/java/mekanism/common/IMCHandler.java
2015-03-17 08:43:41 -04:00

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();
}
}
}
}
}