diff --git a/core/AEConfig.java b/core/AEConfig.java index bfb89871b..6dbfa7294 100644 --- a/core/AEConfig.java +++ b/core/AEConfig.java @@ -148,6 +148,9 @@ public class AEConfig extends Configuration implements IConfigureableObject, ICo featureFlags.add( feature ); } + if ( featureFlags.contains( AEFeature.WebsiteRecipes ) ) + featureFlags.add( AEFeature.DuplicateItems ); + for (Enum e : settings.getSettings()) { String Category = e.getClass().getSimpleName(); diff --git a/core/features/registries/RecipeHandlerRegistry.java b/core/features/registries/RecipeHandlerRegistry.java index 61fe54764..99a1ebf14 100644 --- a/core/features/registries/RecipeHandlerRegistry.java +++ b/core/features/registries/RecipeHandlerRegistry.java @@ -59,7 +59,16 @@ public class RecipeHandlerRegistry implements IRecipeHandlerRegistry { for (ISubItemResolver sir : resolvers) { - ResolveResult rr = sir.resolveItemByName( nameSpace, itemName ); + ResolveResult rr = null; + + try + { + rr = sir.resolveItemByName( nameSpace, itemName ); + } + catch (Throwable t) + { + AELog.error( t ); + } if ( rr != null ) return rr; diff --git a/recipes/AEItemResolver.java b/recipes/AEItemResolver.java index 4b9086699..25387ce8e 100644 --- a/recipes/AEItemResolver.java +++ b/recipes/AEItemResolver.java @@ -25,6 +25,8 @@ public class AEItemResolver implements ISubItemResolver return new ResolveResult( "ItemCrystalSeed", ItemCrystalSeed.Nether ); if ( itemName.equalsIgnoreCase( "ItemCrystalSeed.Fluix" ) ) return new ResolveResult( "ItemCrystalSeed", ItemCrystalSeed.Fluix ); + + return null; } if ( itemName.startsWith( "ItemMaterial." ) ) diff --git a/recipes/RecipeHandler.java b/recipes/RecipeHandler.java index e55879559..2ad5f9a04 100644 --- a/recipes/RecipeHandler.java +++ b/recipes/RecipeHandler.java @@ -23,6 +23,7 @@ import appeng.api.recipes.IRecipeHandler; import appeng.api.recipes.IRecipeLoader; import appeng.core.AEConfig; import appeng.core.AELog; +import appeng.core.AppEng; import appeng.core.features.AEFeature; import appeng.items.materials.ItemMaterial; import appeng.items.parts.ItemPart; @@ -180,7 +181,15 @@ public class RecipeHandler implements IRecipeHandler try { for (ItemStack is : i.getItemStackSet()) - return getName( is ); + { + try + { + return getName( is ); + } + catch (RecipeError notappicable) + { + } + } } catch (Throwable t) { @@ -191,11 +200,14 @@ public class RecipeHandler implements IRecipeHandler return i.getNameSpace() + ":" + i.getItemName(); } - public String getName(ItemStack is) + public String getName(ItemStack is) throws RecipeError { UniqueIdentifier id = GameRegistry.findUniqueIdentifierFor( is.getItem() ); String realName = id.modId + ":" + id.name; + if ( !id.modId.equals( AppEng.modid ) && !id.modId.equals( "minecraft" ) ) + throw new RecipeError( "Not applicable for website" ); + if ( is.getItem() == AEApi.instance().blocks().blockSkyStone.item() ) { switch (is.getItemDamage())