This repository has been archived on 2021-07-14. You can view files and clone it, but cannot push or open issues or pull requests.
scriptcraft/src/main/js/modules/canary/recipes.js
2015-06-07 10:09:53 +01:00

49 lines
1.3 KiB
JavaScript

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;