2014-09-30 00:42:41 +02:00
|
|
|
var ItemType = Packages.net.canarymod.api.inventory.ItemType;
|
|
|
|
var Canary = Packages.net.canarymod.Canary;
|
|
|
|
var itemFactory = Canary.factory().itemFactory;
|
|
|
|
|
|
|
|
function items( material, amount ) {
|
|
|
|
material = material.toUpperCase();
|
|
|
|
var result = itemFactory["newItem(net.canarymod.api.inventory.ItemType)"](material);
|
|
|
|
result.amount = amount;
|
|
|
|
return result;
|
|
|
|
}
|
2014-10-19 16:41:06 +02:00
|
|
|
function getMaterialHandler( material ){
|
|
|
|
return function(amount){
|
|
|
|
if (typeof amount == 'undefined'){
|
|
|
|
return material;
|
|
|
|
}
|
|
|
|
if (typeof amount == 'number'){
|
|
|
|
var itemStack = itemFactory["newItem(net.canarymod.api.inventory.ItemType)"](material);
|
|
|
|
itemStack.amount = amount;
|
|
|
|
return itemStack;
|
|
|
|
} else {
|
|
|
|
var result = (amount == material);
|
|
|
|
if (!result){
|
|
|
|
if (amount.getId && amount.getData){
|
|
|
|
var m2 = ItemType.fromIdAndData(amount.id, amount.data);
|
|
|
|
result = (m2 == material);
|
2014-09-30 00:42:41 +02:00
|
|
|
}
|
|
|
|
}
|
2014-10-19 16:41:06 +02:00
|
|
|
return result;
|
|
|
|
}
|
|
|
|
};
|
2014-09-30 00:42:41 +02:00
|
|
|
}
|
2014-12-25 15:04:45 +01:00
|
|
|
if (nashorn){
|
2014-10-19 16:41:06 +02:00
|
|
|
/*
|
|
|
|
nashorn
|
|
|
|
*/
|
2014-12-25 15:04:45 +01:00
|
|
|
var itemTypeClass = require('nashorn-type')(ItemType);
|
2014-10-19 16:41:06 +02:00
|
|
|
var materials = itemTypeClass.getDeclaredFields();
|
|
|
|
for (var i = 0;i < materials.length; i++ ){
|
|
|
|
|
|
|
|
if (materials[i].type != itemTypeClass) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
var materialField = materials[i];
|
|
|
|
var name = (''+materialField.name);
|
|
|
|
name = name.replace(/^(.)/,function(a){
|
|
|
|
return a.toLowerCase();
|
|
|
|
});
|
|
|
|
|
|
|
|
items[name] = getMaterialHandler(materialField.get(ItemType));
|
|
|
|
}
|
2014-12-25 15:04:45 +01:00
|
|
|
} else {
|
2014-10-19 16:41:06 +02:00
|
|
|
// non-nashorn
|
|
|
|
for (var field in ItemType){
|
|
|
|
if (ItemType[field] === undefined){
|
|
|
|
continue;
|
|
|
|
}
|
2014-12-25 15:04:45 +01:00
|
|
|
if (!(ItemType[field] instanceof ItemType)){
|
2014-10-19 16:41:06 +02:00
|
|
|
continue;
|
|
|
|
}
|
|
|
|
var name = (''+field).replace(/^(.)/,function(a){
|
|
|
|
return a.toLowerCase();
|
|
|
|
});
|
|
|
|
items[name] = getMaterialHandler(ItemType[field]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-09-30 00:42:41 +02:00
|
|
|
|
|
|
|
module.exports = items;
|