下面列出了org.bukkit.Bukkit#recipeIterator ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static boolean isFurnaceBurnableItem(ItemStack item) {
Iterator<Recipe> recipeIt = Bukkit.recipeIterator();
while (recipeIt.hasNext()) {
Recipe recipe = recipeIt.next();
if (!(recipe instanceof FurnaceRecipe))
continue;
if(!((FurnaceRecipe) recipe).getInputChoice().test(item))
continue;
return true;
}
return false;
}
@Override
public void onEnable(){
Iterator<Recipe> iterator = Bukkit.recipeIterator();
List<ItemStack> results = new ArrayList<>();
Set<ShapedRecipe> removeRecipes = new HashSet<>();
Recipe recipe;
while (iterator.hasNext()){
recipe = iterator.next();
if (!(recipe instanceof ShapedRecipe)){
continue;
}
results.add(recipe.getResult());
removeRecipes.add((ShapedRecipe) recipe);
}
Collections.shuffle(results);
Iterator<ItemStack> resultIterator = results.iterator();
Set<ShapedRecipe> randomizedRecipes = new HashSet<>();
for (ShapedRecipe oldRecipe : removeRecipes){
ShapedRecipe newRecipe = cloneRecipeWithResult(oldRecipe, resultIterator.next());
randomizedRecipes.add(newRecipe);
VersionUtils.getVersionUtils().removeRecipeFor(newRecipe.getResult());
}
randomizedRecipes.forEach(r -> Bukkit.getServer().addRecipe(r));
}
public static void removeRecipe(Material type) {
Iterator<Recipe> recipes = Bukkit.recipeIterator();
Recipe recipe;
while (recipes.hasNext()) {
recipe = recipes.next();
if (recipe != null && recipe.getResult().getType() == type) {
recipes.remove();
}
}
}
public static void removeVanillaRecipe(Material type) {
Iterator<Recipe> recipes = Bukkit.recipeIterator();
Recipe recipe;
while (recipes.hasNext()) {
recipe = recipes.next();
if (recipe != null && recipe.getResult().isSimilar(new ItemStack(type))) {
recipes.remove();
}
}
}
public static void removeRecipe(Material type, short durability) {
Iterator<Recipe> recipes = Bukkit.recipeIterator();
Recipe recipe;
while (recipes.hasNext()) {
recipe = recipes.next();
if (recipe != null && recipe.getResult().getType() == type && recipe.getResult().getDurability() == durability) {
recipes.remove();
}
}
}
public static ItemStack getSmeltedOutput(Material type) {
ItemStack result = null;
Iterator<Recipe> iter = Bukkit.recipeIterator();
while (iter.hasNext()) {
Recipe recipe = iter.next();
if (!(recipe instanceof FurnaceRecipe)) continue;
if (((FurnaceRecipe) recipe).getInput().getType() != type) continue;
result = recipe.getResult();
break;
}
return result;
}