Implemented Recipe Groups.
Added ISubItemResolvers. ItemSeeds now use Constants instead of raw integers.
This commit is contained in:
@@ -113,6 +113,7 @@ import appeng.me.cache.SecurityCache;
|
||||
import appeng.me.cache.SpatialPylonCache;
|
||||
import appeng.me.cache.TickManagerCache;
|
||||
import appeng.me.storage.AEExternalHandler;
|
||||
import appeng.recipes.AEItemResolver;
|
||||
import appeng.recipes.RecipeHandler;
|
||||
import appeng.recipes.Recipes.ShapedRecipe;
|
||||
import appeng.recipes.Recipes.ShapelessRecipe;
|
||||
@@ -153,6 +154,7 @@ public class Registration
|
||||
public void PreInit(FMLPreInitializationEvent event)
|
||||
{
|
||||
IRecipeHandlerRegistry recipeRegistery = AEApi.instance().registries().recipes();
|
||||
recipeRegistery.addNewSubItemResolver( new AEItemResolver() );
|
||||
|
||||
recipeRegistery.addNewCraftHandler( "grind", Grind.class );
|
||||
recipeRegistery.addNewCraftHandler( "pulverizer", Pulverizer.class );
|
||||
@@ -338,7 +340,6 @@ public class Registration
|
||||
addFeature( ToolReplicatorCard.class );
|
||||
addFeature( BlockItemGen.class );
|
||||
addFeature( BlockChunkloader.class );
|
||||
|
||||
}
|
||||
|
||||
private AEItemDefinition addFeature(Class c, Object... Args)
|
||||
|
||||
@@ -1,39 +1,71 @@
|
||||
package appeng.core.features.registries;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
|
||||
import appeng.api.features.IRecipeHandlerRegistry;
|
||||
import appeng.api.recipes.ICraftHandler;
|
||||
import appeng.api.recipes.IRecipeHandler;
|
||||
import appeng.api.recipes.ISubItemResolver;
|
||||
import appeng.api.recipes.ResolveResult;
|
||||
import appeng.core.AELog;
|
||||
import appeng.recipes.RecipeHandler;
|
||||
|
||||
public class RecipeHandlerRegistry implements IRecipeHandlerRegistry{
|
||||
|
||||
HashMap<String,Class<? extends ICraftHandler>> handlers = new HashMap<String, Class<? extends ICraftHandler >>();
|
||||
public class RecipeHandlerRegistry implements IRecipeHandlerRegistry
|
||||
{
|
||||
|
||||
HashMap<String, Class<? extends ICraftHandler>> handlers = new HashMap<String, Class<? extends ICraftHandler>>();
|
||||
LinkedList<ISubItemResolver> resolvers = new LinkedList<ISubItemResolver>();
|
||||
|
||||
@Override
|
||||
public void addNewCraftHandler(String name, Class<? extends ICraftHandler> handler) {
|
||||
handlers.put(name.toLowerCase(), handler);
|
||||
public void addNewCraftHandler(String name, Class<? extends ICraftHandler> handler)
|
||||
{
|
||||
handlers.put( name.toLowerCase(), handler );
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICraftHandler getCraftHandlerFor(String name) {
|
||||
Class<? extends ICraftHandler> clz= handlers.get(name);
|
||||
if ( clz == null ) return null;
|
||||
try {
|
||||
public ICraftHandler getCraftHandlerFor(String name)
|
||||
{
|
||||
Class<? extends ICraftHandler> clz = handlers.get( name );
|
||||
if ( clz == null )
|
||||
return null;
|
||||
try
|
||||
{
|
||||
return clz.newInstance();
|
||||
} catch (Throwable e) {
|
||||
AELog.severe("Error Caused when trying to construct "+clz.getName());
|
||||
AELog.error(e);
|
||||
handlers.put(name, null); // clear it..
|
||||
}
|
||||
catch (Throwable e)
|
||||
{
|
||||
AELog.severe( "Error Caused when trying to construct " + clz.getName() );
|
||||
AELog.error( e );
|
||||
handlers.put( name, null ); // clear it..
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IRecipeHandler createNewRecipehandler() {
|
||||
public IRecipeHandler createNewRecipehandler()
|
||||
{
|
||||
return new RecipeHandler();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addNewSubItemResolver(ISubItemResolver sir)
|
||||
{
|
||||
resolvers.add( sir );
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResolveResult resolveItem(String nameSpace, String itemName)
|
||||
{
|
||||
for (ISubItemResolver sir : resolvers)
|
||||
{
|
||||
ResolveResult rr = sir.resolveItemByName( nameSpace, itemName );
|
||||
|
||||
if ( rr != null )
|
||||
return rr;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user