var cm = Packages.net.canarymod; var cmRecipe = cm.api.inventory.recipes.CraftingRecipe; var cmRecipeRow = cm.api.inventory.recipes.RecipeRow; function addRecipe( recipe ){ return server.addRecipe( createRecipe( recipe ) ); } function createRecipe( recipe ){ if (!recipe){ return null; } var result, rows, i,j, cells, rr; if (recipe.shape){ rows = []; for (i = 0; i < recipe.shape.length; i++){ cells = recipe.shape[i].split(''); rr = []; for ( j = 0; j < cells.length ; j++){ if (cells[j] != ' '){ rr.push(recipe.ingredients[cells[j]]); } } rows.push( new cmRecipeRow(recipe.shape[i], rr) ); } /* wph 20150607 short-term workaround for nashorn defect https://bugs.openjdk.java.net/browse/JDK-8072596 */ if ( typeof Java !== 'undefined' && typeof Java.type === 'function' ) { var RecipeRowArrayType = Java.type('net.canarymod.api.inventory.recipes.RecipeRow[]'); rows = Java.to( rows, RecipeRowArrayType ); } result = cmRecipe.createShapedRecipe( recipe.result, rows); } else { result = cmRecipe.createShapelessRecipe( recipe.result, recipe.ingredients ); } return result; } function removeRecipe( recipe ){ server.removeRecipe( recipe ); } exports.create = createRecipe; exports.add = addRecipe; exports.remove = removeRecipe;