mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2025-02-11 20:00:46 +00:00
Fix /condense
functionality after 1.12. (#1298)
Prior to this commit `/condense` would return the first best item to condense an ItemStack into, with no consideration of better forms of condensation. This commit adds a local variable `bestRecipes` which stores all the valid recipes and sorts through them for the best, then picks out the best. The best recipe is defined by a compare(o2, o1) where o1 and o2 are integers of the SimpleRecipe's input ItemStack amount.
This commit is contained in:
parent
2fe05b4ff4
commit
3831464665
1 changed files with 19 additions and 3 deletions
|
@ -106,6 +106,7 @@ public class Commandcondense extends EssentialsCommand {
|
|||
}
|
||||
|
||||
final Iterator<Recipe> intr = ess.getServer().recipeIterator();
|
||||
List<SimpleRecipe> bestRecipes = new ArrayList<>();
|
||||
while (intr.hasNext()) {
|
||||
final Recipe recipe = intr.next();
|
||||
final Collection<ItemStack> recipeItems = getStackOnRecipeMatch(recipe, stack);
|
||||
|
@ -114,11 +115,17 @@ public class Commandcondense extends EssentialsCommand {
|
|||
final ItemStack input = stack.clone();
|
||||
input.setAmount(recipeItems.size());
|
||||
final SimpleRecipe newRecipe = new SimpleRecipe(recipe.getResult(), input);
|
||||
condenseList.put(stack, newRecipe);
|
||||
return newRecipe;
|
||||
bestRecipes.add(newRecipe);
|
||||
}
|
||||
}
|
||||
|
||||
if (!bestRecipes.isEmpty()) {
|
||||
if (bestRecipes.size() > 1) {
|
||||
Collections.sort(bestRecipes, SimpleRecipeComparator.INSTANCE);
|
||||
}
|
||||
SimpleRecipe recipe = bestRecipes.get(0);
|
||||
condenseList.put(stack, recipe);
|
||||
return recipe;
|
||||
}
|
||||
condenseList.put(stack, null);
|
||||
return null;
|
||||
}
|
||||
|
@ -187,4 +194,13 @@ public class Commandcondense extends EssentialsCommand {
|
|||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
private static class SimpleRecipeComparator implements Comparator<SimpleRecipe> {
|
||||
|
||||
private static final SimpleRecipeComparator INSTANCE = new SimpleRecipeComparator();
|
||||
@Override
|
||||
public int compare(SimpleRecipe o1, SimpleRecipe o2) {
|
||||
return Integer.compare(o2.getInput().getAmount(), o1.getInput().getAmount());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue