Cleans up salvage code a bit
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
package net.knarcraft.blacksmith.util;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
@ -172,37 +173,26 @@ public final class SalvageHelper {
|
||||
}
|
||||
|
||||
for (Recipe recipe : server.getRecipesFor(new ItemStack(salvagedItem.getType(), salvagedItem.getAmount()))) {
|
||||
if (recipe instanceof ShapedRecipe || recipe instanceof ShapelessRecipe) {
|
||||
List<ItemStack> salvage = getRecipeSalvage(recipe, salvagedItem, trashSalvage);
|
||||
if (salvage != null && !salvage.isEmpty()) {
|
||||
return salvage;
|
||||
}
|
||||
// Only consider crafting table recipes
|
||||
if (!(recipe instanceof ShapedRecipe) && !(recipe instanceof ShapelessRecipe)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Make sure the player has enough items
|
||||
if (salvagedItem.getAmount() < getRequiredAmountForSalvage(Bukkit.getServer(), salvagedItem)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Get actual salvage, as long as any can be produced
|
||||
List<ItemStack> salvage = getRecipeSalvage(recipe, salvagedItem, trashSalvage);
|
||||
if (salvage != null && !salvage.isEmpty()) {
|
||||
return salvage;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the raw salvage of a recipe, assuming full salvage would be possible
|
||||
*
|
||||
* @param recipe <p>The recipe to get salvage for</p>
|
||||
* @return <p>The salvage resulting from the recipe</p>
|
||||
*/
|
||||
private static List<ItemStack> getRawRecipeSalvage(@NotNull Recipe recipe) {
|
||||
List<ItemStack> ingredients;
|
||||
if (recipe instanceof ShapedRecipe shapedRecipe) {
|
||||
ingredients = getIngredients(shapedRecipe);
|
||||
} else if (recipe instanceof ShapelessRecipe shapelessRecipe) {
|
||||
ingredients = shapelessRecipe.getIngredientList();
|
||||
} else {
|
||||
//Recipes other than crafting shouldn't be considered for salvaging
|
||||
return null;
|
||||
}
|
||||
//Make things easier by eliminating identical stacks
|
||||
return combineStacks(ingredients);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the salvage resulting from the given recipe and the given item
|
||||
*
|
||||
@ -252,7 +242,7 @@ public final class SalvageHelper {
|
||||
int maxDurability = ItemHelper.getMaxDurability(salvagedItem);
|
||||
|
||||
// Prevent divide by zero for items that don't have a set max durability
|
||||
if (maxDurability == 0) {
|
||||
if (maxDurability <= 0) {
|
||||
maxDurability = 1;
|
||||
durability = 1;
|
||||
}
|
||||
@ -348,6 +338,26 @@ public final class SalvageHelper {
|
||||
return combined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the raw salvage of a recipe, assuming full salvage would be possible
|
||||
*
|
||||
* @param recipe <p>The recipe to get salvage for</p>
|
||||
* @return <p>The salvage resulting from the recipe</p>
|
||||
*/
|
||||
private static List<ItemStack> getRawRecipeSalvage(@NotNull Recipe recipe) {
|
||||
List<ItemStack> ingredients;
|
||||
if (recipe instanceof ShapedRecipe shapedRecipe) {
|
||||
ingredients = getIngredients(shapedRecipe);
|
||||
} else if (recipe instanceof ShapelessRecipe shapelessRecipe) {
|
||||
ingredients = shapelessRecipe.getIngredientList();
|
||||
} else {
|
||||
//Recipes other than crafting shouldn't be considered for salvaging
|
||||
return null;
|
||||
}
|
||||
//Make things easier by eliminating identical stacks
|
||||
return combineStacks(ingredients);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all ingredients contained in the given shaped recipe
|
||||
*
|
||||
|
Reference in New Issue
Block a user