Ok donc la méthode ItemStack#isSimilar est trop précise, créons donc une moins précise.
Code:
private static boolean isAlike(ItemStack a, ItemStack b) {
if(a == null || b == null) return false;
if(!a.hasItemMeta() || !b.hasItemMeta()) return a.isSimilar(b);
ItemMeta am = a.getItemMeta();
am.setDisplayName(null);
am.setLore(null);
ItemMeta bm = b.getItemMeta();
bm.setDisplayName(null);
bm.setLore(null);
ItemStack ac = a.clone();
ac.setItemMeta(am);
ItemStack bc = b.clone();
bc.setItemMeta(bm);
return ac.isSimilar(bc);
}
Cette fonction ne prend pas en compte le nom et le lore de l'objet, tu remplaces les item.isSimilar(taget) par isAlike(item, target)
Après tu peux aussi changer
Code:
player.sendMessage("Vous avez vendu " + taken + "*" + target);
en
Code:
player.sendMessage("Vous avez vendu " + taken + "*" + target.getItemMeta().getDisplayName());
Pour avoir un truc plus esthétique.